35 integer,
intent(in):: start(:)
36 integer,
intent(in):: cnt(:)
37 integer,
intent(in):: stride(:)
38 integer,
intent(in):: imap(:)
43 integer,
intent(in):: siz
44 real(SP),
intent(out):: val(siz)
45 integer,
intent(out):: iostat
49 integer,
allocatable:: istart(:), istride(:), iimap(:)
50 character(*),
parameter:: subname =
'GDNcVarGetReal'
53 if (iostat /= nf90_noerr)
goto 999
56 if (
associated(ent%dimids)) nd =
size(ent%dimids)
57 if (min(
size(start),
size(cnt),
size(stride),
size(imap)) < nd)
then
62 iostat = nf90_get_var(ent%fileid, ent%varid, val(1), start)
66 allocate(istart(nd), istride(nd), iimap(nd))
67 istart(1:nd) = start(1:nd)
68 istride(1:nd) = stride(1:nd)
69 iimap(1:nd) = imap(1:nd)
72 iostat = nf90_get_var(ent%fileid, ent%varid, val, istart, cnt, istride, iimap)
73 if (iostat == nf90_eindefine)
then
74 iostat = nf90_enddef(ent%fileid)
75 if (iostat /= nf90_noerr)
return
76 iostat = nf90_get_var(ent%fileid, ent%varid, val, istart, cnt, istride, iimap)
77 if (iostat /= nf90_noerr)
return
78 iostat = nf90_redef(ent%fileid)
79 if (iostat /= nf90_noerr)
return
81 deallocate(istart, istride, iimap)
98 integer,
intent(in):: start(:)
99 integer,
intent(in):: cnt(:)
100 integer,
intent(in):: stride(:)
101 integer,
intent(in):: imap(:)
106 integer,
intent(in):: siz
107 real(DP),
intent(out):: val(siz)
108 integer,
intent(out):: iostat
112 integer,
allocatable:: istart(:), istride(:), iimap(:)
113 character(*),
parameter:: subname =
'GDNcVarGetDouble'
116 if (iostat /= nf90_noerr)
goto 999
119 if (
associated(ent%dimids)) nd =
size(ent%dimids)
120 if (min(
size(start),
size(cnt),
size(stride),
size(imap)) < nd)
then
125 iostat = nf90_get_var(ent%fileid, ent%varid, val(1), start)
129 allocate(istart(nd), istride(nd), iimap(nd))
130 istart(1:nd) = start(1:nd)
131 istride(1:nd) = stride(1:nd)
132 iimap(1:nd) = imap(1:nd)
135 iostat = nf90_get_var(ent%fileid, ent%varid, val, istart, cnt, istride, iimap)
136 if (iostat == nf90_eindefine)
then
137 iostat = nf90_enddef(ent%fileid)
138 if (iostat /= nf90_noerr)
return
139 iostat = nf90_get_var(ent%fileid, ent%varid, val, istart, cnt, istride, iimap)
140 if (iostat /= nf90_noerr)
return
141 iostat = nf90_redef(ent%fileid)
142 if (iostat /= nf90_noerr)
return
144 deallocate(istart, istride, iimap)
160 integer,
intent(in):: start(:)
161 integer,
intent(in):: cnt(:)
162 integer,
intent(in):: stride(:)
163 integer,
intent(in):: imap(:)
168 integer,
intent(in):: siz
169 integer,
intent(out):: val(siz)
170 integer,
intent(out):: iostat
174 integer,
allocatable:: istart(:), istride(:), iimap(:)
175 character(*),
parameter:: subname =
'GDNcVarGetInt'
178 if (iostat /= nf90_noerr)
goto 999
181 if (
associated(ent%dimids)) nd =
size(ent%dimids)
182 if (min(
size(start),
size(cnt),
size(stride),
size(imap)) < nd)
then
187 iostat = nf90_get_var(ent%fileid, ent%varid, val(1), start)
191 allocate(istart(nd), istride(nd), iimap(nd))
192 istart(1:nd) = start(1:nd)
193 istride(1:nd) = stride(1:nd)
194 iimap(1:nd) = imap(1:nd)
197 iostat = nf90_get_var(ent%fileid, ent%varid, val, istart, cnt, istride, iimap)
198 if (iostat == nf90_eindefine)
then
199 iostat = nf90_enddef(ent%fileid)
200 if (iostat /= nf90_noerr)
return
201 iostat = nf90_get_var(ent%fileid, ent%varid, val, istart, cnt, istride, iimap)
202 if (iostat /= nf90_noerr)
return
203 iostat = nf90_redef(ent%fileid)
204 if (iostat /= nf90_noerr)
return
206 deallocate(istart, istride, iimap)
subroutine gdncvargetreal(var, start, cnt, stride, imap, siz, val, iostat)
subroutine gdncvargetint(var, start, cnt, stride, imap, siz, val, iostat)
subroutine gdncvargetdouble(var, start, cnt, stride, imap, siz, val, iostat)