24 class(fmsnetcdffile_t),
intent(in) :: fileobj
25 integer,
intent(in) :: varid
26 character(len=*),
intent(in) :: varname
27 class(*),
intent(inout) :: var_data
30 character(len=128) :: msg
31 real(kind=r4_kind) :: buf_r4_kind
32 real(kind=r8_kind) :: buf_r8_kind
35 msg =
"Check your read_data call for the variable:"//trim(varname)//&
36 " in file:"//trim(fileobj%path)
38 if (attribute_exists(fileobj%ncid, varid,
"scale_factor") .or. &
39 attribute_exists(fileobj%ncid, varid,
"add_offset"))
then
42 type is (real(kind=r4_kind))
43 err = nf90_get_att(fileobj%ncid, varid,
"scale_factor", buf_r4_kind )
44 call check_netcdf_code(err, msg)
45 var_data = var_data * buf_r4_kind
47 err = nf90_get_att(fileobj%ncid, varid,
"add_offset", buf_r4_kind )
48 call check_netcdf_code(err, msg)
49 var_data = var_data + buf_r4_kind
51 type is (real(kind=r8_kind))
52 err = nf90_get_att(fileobj%ncid, varid,
"scale_factor", buf_r8_kind )
53 call check_netcdf_code(err, msg)
54 var_data = var_data * buf_r8_kind
56 err = nf90_get_att(fileobj%ncid, varid,
"add_offset", buf_r8_kind )
57 call check_netcdf_code(err, msg)
58 var_data = var_data + buf_r8_kind
61 call error(
"If using the scale_factor and add_offset variable, the buffer reading the data to needs to be &
62 &r4_kind or r8_kind."//trim(msg))
68 class(fmsnetcdffile_t),
intent(in) :: fileobj
69 integer,
intent(in) :: varid
70 character(len=*),
intent(in) :: varname
71 class(*),
intent(inout) :: var_data(:)
74 character(len=128) :: msg
75 real(kind=r4_kind) :: buf_r4_kind
76 real(kind=r8_kind) :: buf_r8_kind
79 msg =
"Check your read_data call for the variable:"//trim(varname)//&
80 " in file:"//trim(fileobj%path)
82 if (attribute_exists(fileobj%ncid, varid,
"scale_factor") .or. &
83 attribute_exists(fileobj%ncid, varid,
"add_offset"))
then
86 type is (real(kind=r4_kind))
87 err = nf90_get_att(fileobj%ncid, varid,
"scale_factor", buf_r4_kind )
88 call check_netcdf_code(err, msg)
89 var_data = var_data * buf_r4_kind
91 err = nf90_get_att(fileobj%ncid, varid,
"add_offset", buf_r4_kind )
92 call check_netcdf_code(err, msg)
93 var_data = var_data + buf_r4_kind
95 type is (real(kind=r8_kind))
96 err = nf90_get_att(fileobj%ncid, varid,
"scale_factor", buf_r8_kind )
97 call check_netcdf_code(err, msg)
98 var_data = var_data * buf_r8_kind
100 err = nf90_get_att(fileobj%ncid, varid,
"add_offset", buf_r8_kind )
101 call check_netcdf_code(err, msg)
102 var_data = var_data + buf_r8_kind
105 call error(
"If using the scale_factor and add_offset variable, the buffer reading the data to needs to be &
106 &r4_kind or r8_kind."//trim(msg))
112 class(fmsnetcdffile_t),
intent(in) :: fileobj
113 integer,
intent(in) :: varid
114 character(len=*),
intent(in) :: varname
115 class(*),
intent(inout) :: var_data(:,:)
118 character(len=128) :: msg
119 real(kind=r4_kind) :: buf_r4_kind
120 real(kind=r8_kind) :: buf_r8_kind
123 msg =
"Check your read_data call for the variable:"//trim(varname)//&
124 " in file:"//trim(fileobj%path)
126 if (attribute_exists(fileobj%ncid, varid,
"scale_factor") .or. &
127 attribute_exists(fileobj%ncid, varid,
"add_offset"))
then
129 select type(var_data)
130 type is (real(kind=r4_kind))
131 err = nf90_get_att(fileobj%ncid, varid,
"scale_factor", buf_r4_kind )
132 call check_netcdf_code(err, msg)
133 var_data = var_data * buf_r4_kind
135 err = nf90_get_att(fileobj%ncid, varid,
"add_offset", buf_r4_kind )
136 call check_netcdf_code(err, msg)
137 var_data = var_data + buf_r4_kind
139 type is (real(kind=r8_kind))
140 err = nf90_get_att(fileobj%ncid, varid,
"scale_factor", buf_r8_kind )
141 call check_netcdf_code(err, msg)
142 var_data = var_data * buf_r8_kind
144 err = nf90_get_att(fileobj%ncid, varid,
"add_offset", buf_r8_kind )
145 call check_netcdf_code(err, msg)
146 var_data = var_data + buf_r8_kind
149 call error(
"If using the scale_factor and add_offset variable, the buffer reading the data to needs to be &
150 &r4_kind or r8_kind."//trim(msg))
156 class(fmsnetcdffile_t),
intent(in) :: fileobj
157 integer,
intent(in) :: varid
158 character(len=*),
intent(in) :: varname
159 class(*),
intent(inout) :: var_data(:,:,:)
162 character(len=128) :: msg
163 real(kind=r4_kind) :: buf_r4_kind
164 real(kind=r8_kind) :: buf_r8_kind
167 msg =
"Check your read_data call for the variable:"//trim(varname)//&
168 " in file:"//trim(fileobj%path)
170 if (attribute_exists(fileobj%ncid, varid,
"scale_factor") .or. &
171 attribute_exists(fileobj%ncid, varid,
"add_offset"))
then
173 select type(var_data)
174 type is (real(kind=r4_kind))
175 err = nf90_get_att(fileobj%ncid, varid,
"scale_factor", buf_r4_kind )
176 call check_netcdf_code(err, msg)
177 var_data = var_data * buf_r4_kind
179 err = nf90_get_att(fileobj%ncid, varid,
"add_offset", buf_r4_kind )
180 call check_netcdf_code(err, msg)
181 var_data = var_data + buf_r4_kind
183 type is (real(kind=r8_kind))
184 err = nf90_get_att(fileobj%ncid, varid,
"scale_factor", buf_r8_kind )
185 call check_netcdf_code(err, msg)
186 var_data = var_data * buf_r8_kind
188 err = nf90_get_att(fileobj%ncid, varid,
"add_offset", buf_r8_kind )
189 call check_netcdf_code(err, msg)
190 var_data = var_data + buf_r8_kind
193 call error(
"If using the scale_factor and add_offset variable, the buffer reading the data to needs to be &
194 &r4_kind or r8_kind."//trim(msg))
200 class(fmsnetcdffile_t),
intent(in) :: fileobj
201 integer,
intent(in) :: varid
202 character(len=*),
intent(in) :: varname
203 class(*),
intent(inout) :: var_data(:,:,:,:)
206 character(len=128) :: msg
207 real(kind=r4_kind) :: buf_r4_kind
208 real(kind=r8_kind) :: buf_r8_kind
211 msg =
"Check your read_data call for the variable:"//trim(varname)//&
212 " in file:"//trim(fileobj%path)
214 if (attribute_exists(fileobj%ncid, varid,
"scale_factor") .or. &
215 attribute_exists(fileobj%ncid, varid,
"add_offset"))
then
217 select type(var_data)
218 type is (real(kind=r4_kind))
219 err = nf90_get_att(fileobj%ncid, varid,
"scale_factor", buf_r4_kind )
220 call check_netcdf_code(err, msg)
221 var_data = var_data * buf_r4_kind
223 err = nf90_get_att(fileobj%ncid, varid,
"add_offset", buf_r4_kind )
224 call check_netcdf_code(err, msg)
225 var_data = var_data + buf_r4_kind
227 type is (real(kind=r8_kind))
228 err = nf90_get_att(fileobj%ncid, varid,
"scale_factor", buf_r8_kind )
229 call check_netcdf_code(err, msg)
230 var_data = var_data * buf_r8_kind
232 err = nf90_get_att(fileobj%ncid, varid,
"add_offset", buf_r8_kind )
233 call check_netcdf_code(err, msg)
234 var_data = var_data + buf_r8_kind
237 call error(
"If using the scale_factor and add_offset variable, the buffer reading the data to needs to be &
238 &r4_kind or r8_kind."//trim(msg))
244 class(fmsnetcdffile_t),
intent(in) :: fileobj
245 integer,
intent(in) :: varid
246 character(len=*),
intent(in) :: varname
247 class(*),
intent(inout) :: var_data(:,:,:,:,:)
250 character(len=128) :: msg
251 real(kind=r4_kind) :: buf_r4_kind
252 real(kind=r8_kind) :: buf_r8_kind
255 msg =
"Check your read_data call for the variable:"//trim(varname)//&
256 " in file:"//trim(fileobj%path)
258 if (attribute_exists(fileobj%ncid, varid,
"scale_factor") .or. &
259 attribute_exists(fileobj%ncid, varid,
"add_offset"))
then
261 select type(var_data)
262 type is (real(kind=r4_kind))
263 err = nf90_get_att(fileobj%ncid, varid,
"scale_factor", buf_r4_kind )
264 call check_netcdf_code(err, msg)
265 var_data = var_data * buf_r4_kind
267 err = nf90_get_att(fileobj%ncid, varid,
"add_offset", buf_r4_kind )
268 call check_netcdf_code(err, msg)
269 var_data = var_data + buf_r4_kind
271 type is (real(kind=r8_kind))
272 err = nf90_get_att(fileobj%ncid, varid,
"scale_factor", buf_r8_kind )
273 call check_netcdf_code(err, msg)
274 var_data = var_data * buf_r8_kind
276 err = nf90_get_att(fileobj%ncid, varid,
"add_offset", buf_r8_kind )
277 call check_netcdf_code(err, msg)
278 var_data = var_data + buf_r8_kind
281 call error(
"If using the scale_factor and add_offset variable, the buffer reading the data to needs to be &
282 &r4_kind or r8_kind."//trim(msg))
subroutine unpack_data_2d(fileobj, varid, varname, var_data)
subroutine unpack_data_1d(fileobj, varid, varname, var_data)
subroutine unpack_data_5d(fileobj, varid, varname, var_data)
subroutine unpack_data_0d(fileobj, varid, varname, var_data)
subroutine unpack_data_3d(fileobj, varid, varname, var_data)
subroutine unpack_data_4d(fileobj, varid, varname, var_data)