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 86 of file gdncvargetnum.f90.

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

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)
145 999 continue
integer function, public vtable_lookup(var, entry)
integer, parameter, public dp
倍精度実数型変数
Definition: dc_types.f90:83
種別型パラメタを提供します。
Definition: dc_types.f90:49
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 149 of file gdncvargetnum.f90.

References gtdata_netcdf_internal::vtable_lookup().

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)
207 999 continue
integer function, public vtable_lookup(var, entry)
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 23 of file gdncvargetnum.f90.

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

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)
82 999 continue
integer function, public vtable_lookup(var, entry)
種別型パラメタを提供します。
Definition: dc_types.f90:49
integer, parameter, public sp
単精度実数型変数
Definition: dc_types.f90:73
Here is the call graph for this function: