Loading...
Searching...
No Matches
Functions/Subroutines
gdncvargetnum.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine gdncvargetreal (var, start, cnt, stride, imap, siz, val, iostat)
 
subroutine gdncvargetdouble (var, start, cnt, stride, imap, siz, val, iostat)
 
subroutine gdncvargetint (var, start, cnt, stride, imap, siz, val, iostat)
 

Function/Subroutine Documentation

◆ gdncvargetdouble()

subroutine gdncvargetdouble ( type(gd_nc_variable), intent(in)  var,
integer, dimension(:), intent(in)  start,
integer, dimension(:), intent(in)  cnt,
integer, dimension(:), intent(in)  stride,
integer, dimension(:), intent(in)  imap,
integer, intent(in)  siz,
real(dp), dimension(siz), intent(out)  val,
integer, intent(out)  iostat 
)

Definition at line 85 of file gdncvargetnum.f90.

88 use netcdf, only: &
89 & nf90_noerr, &
90 & nf90_einval, &
91 & nf90_eindefine, &
92 & nf90_get_var, &
93 & nf90_redef, &
94 & nf90_enddef
95 use dc_types, only: dp
96 implicit none
97 type(GD_NC_VARIABLE), intent(in):: var
98 integer, intent(in):: start(:)
99 integer, intent(in):: cnt(:)
100 integer, intent(in):: stride(:)
101 integer, intent(in):: imap(:)
102 ! NetCDF変数と内部データ配列のメモリ内構
103 ! 造間のマッピングを指定する整数ベクトル.
104 ! 詳しくは NetCDF マニュアル
105 ! (NF_PUT_VARM_type 等 を参照のこと)
106 integer, intent(in):: siz
107 real(DP), intent(out):: val(siz)
108 integer, intent(out):: iostat
109 integer:: nd ! var が保持する変数が依存する次元変数の数
110 integer:: ipos, i
111 type(GD_NC_VARIABLE_ENTRY):: ent
112 integer, allocatable:: istart(:), istride(:), iimap(:)
113 character(*), parameter:: subname = 'GDNcVarGetDouble'
114 continue
115 iostat = vtable_lookup(var, ent)
116 if (iostat /= nf90_noerr) goto 999
117 ! --- nd check ---
118 nd = 0
119 if (associated(ent%dimids)) nd = size(ent%dimids)
120 if (min(size(start), size(cnt), size(stride), size(imap)) < nd) then
121 iostat = nf90_einval
122 goto 999
123 endif
124 if (nd == 0) then
125 iostat = nf90_get_var(ent%fileid, ent%varid, val(1), start)
126 goto 999
127 endif
128 ! --- stride ovarwrite buffer ---
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)
133 ipos = 1
134 ! --- do read ---
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
143 end if
144 deallocate(istart, istride, iimap)
145999 continue
種別型パラメタを提供します。
Definition dc_types.f90:49
integer, parameter, public dp
倍精度実数型変数
Definition dc_types.f90:83
integer function, public vtable_lookup(var, entry)

References dc_types::dp, and gtdata_netcdf_internal::vtable_lookup().

Here is the call graph for this function:

◆ gdncvargetint()

subroutine gdncvargetint ( type(gd_nc_variable), intent(in)  var,
integer, dimension(:), intent(in)  start,
integer, dimension(:), intent(in)  cnt,
integer, dimension(:), intent(in)  stride,
integer, dimension(:), intent(in)  imap,
integer, intent(in)  siz,
integer, dimension(siz), intent(out)  val,
integer, intent(out)  iostat 
)

Definition at line 148 of file gdncvargetnum.f90.

151 use netcdf, only: &
152 & nf90_noerr, &
153 & nf90_einval, &
154 & nf90_eindefine, &
155 & nf90_get_var, &
156 & nf90_redef, &
157 & nf90_enddef
158 implicit none
159 type(GD_NC_VARIABLE), intent(in):: var
160 integer, intent(in):: start(:)
161 integer, intent(in):: cnt(:)
162 integer, intent(in):: stride(:)
163 integer, intent(in):: imap(:)
164 ! NetCDF変数と内部データ配列のメモリ内構
165 ! 造間のマッピングを指定する整数ベクトル.
166 ! 詳しくは NetCDF マニュアル
167 ! (NF_PUT_VARM_type 等 を参照のこと)
168 integer, intent(in):: siz
169 integer, intent(out):: val(siz)
170 integer, intent(out):: iostat
171 integer:: nd ! var が保持する変数が依存する次元変数の数
172 integer:: ipos, i
173 type(GD_NC_VARIABLE_ENTRY):: ent
174 integer, allocatable:: istart(:), istride(:), iimap(:)
175 character(*), parameter:: subname = 'GDNcVarGetInt'
176 continue
177 iostat = vtable_lookup(var, ent)
178 if (iostat /= nf90_noerr) goto 999
179 ! --- nd check ---
180 nd = 0
181 if (associated(ent%dimids)) nd = size(ent%dimids)
182 if (min(size(start), size(cnt), size(stride), size(imap)) < nd) then
183 iostat = nf90_einval
184 goto 999
185 endif
186 if (nd == 0) then
187 iostat = nf90_get_var(ent%fileid, ent%varid, val(1), start)
188 goto 999
189 endif
190 ! --- stride ovarwrite buffer ---
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)
195 ipos = 1
196 ! --- do read ---
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
205 end if
206 deallocate(istart, istride, iimap)
207999 continue

References gtdata_netcdf_internal::vtable_lookup().

Here is the call graph for this function:

◆ gdncvargetreal()

subroutine gdncvargetreal ( type(gd_nc_variable), intent(in)  var,
integer, dimension(:), intent(in)  start,
integer, dimension(:), intent(in)  cnt,
integer, dimension(:), intent(in)  stride,
integer, dimension(:), intent(in)  imap,
integer, intent(in)  siz,
real(sp), dimension(siz), intent(out)  val,
integer, intent(out)  iostat 
)

Definition at line 22 of file gdncvargetnum.f90.

25 use netcdf, only: &
26 & nf90_noerr, &
27 & nf90_einval, &
28 & nf90_eindefine, &
29 & nf90_get_var, &
30 & nf90_redef, &
31 & nf90_enddef
32 use dc_types, only: sp
33 implicit none
34 type(GD_NC_VARIABLE), intent(in):: var
35 integer, intent(in):: start(:)
36 integer, intent(in):: cnt(:)
37 integer, intent(in):: stride(:)
38 integer, intent(in):: imap(:)
39 ! NetCDF変数と内部データ配列のメモリ内構
40 ! 造間のマッピングを指定する整数ベクトル.
41 ! 詳しくは NetCDF マニュアル
42 ! (NF_PUT_VARM_type 等 を参照のこと)
43 integer, intent(in):: siz
44 real(SP), intent(out):: val(siz)
45 integer, intent(out):: iostat
46 integer:: nd ! var が保持する変数が依存する次元変数の数
47 integer:: ipos, i
48 type(GD_NC_VARIABLE_ENTRY):: ent
49 integer, allocatable:: istart(:), istride(:), iimap(:)
50 character(*), parameter:: subname = 'GDNcVarGetReal'
51 continue
52 iostat = vtable_lookup(var, ent)
53 if (iostat /= nf90_noerr) goto 999
54 ! --- nd check ---
55 nd = 0
56 if (associated(ent%dimids)) nd = size(ent%dimids)
57 if (min(size(start), size(cnt), size(stride), size(imap)) < nd) then
58 iostat = nf90_einval
59 goto 999
60 endif
61 if (nd == 0) then
62 iostat = nf90_get_var(ent%fileid, ent%varid, val(1), start)
63 goto 999
64 endif
65 ! --- stride ovarwrite buffer ---
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)
70 ipos = 1
71 ! --- do read ---
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
80 end if
81 deallocate(istart, istride, iimap)
82999 continue
integer, parameter, public sp
単精度実数型変数
Definition dc_types.f90:73

References dc_types::sp, and gtdata_netcdf_internal::vtable_lookup().

Here is the call graph for this function: