SABER
tools_netcdf.F90
Go to the documentation of this file.
1 # 1 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2 # 1 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/../generics.fypp" 1
3 !----------------------------------------------------------------------
4 ! Header: generics
5 !> Generic ranks, dimensions and types
6 ! Author: Benjamin Menetrier
7 ! Licensing: this code is distributed under the CeCILL-C license
8 ! Copyright 2015-... UCAR, CERFACS, METEO-FRANCE and IRIT
9 !----------------------------------------------------------------------
10 
11 # 57 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/../generics.fypp"
12 # 2 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp" 2
13 # 1 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/../instrumentation.fypp" 1
14 # 1 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/../subr_list.fypp" 1
15 !----------------------------------------------------------------------
16 ! Header: subr_list
17 !> Subroutines/functions list
18 ! Author: Benjamin Menetrier
19 ! Licensing: this code is distributed under the CeCILL-C license
20 ! Copyright 2015-... UCAR, CERFACS, METEO-FRANCE and IRIT
21 !----------------------------------------------------------------------
22 
23 # 926 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/../subr_list.fypp"
24 # 2 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/../instrumentation.fypp" 2
25 !----------------------------------------------------------------------
26 ! Header: instrumentation
27 !> Instrumentation functions
28 ! Author: Benjamin Menetrier
29 ! Licensing: this code is distributed under the CeCILL-C license
30 ! Copyright 2015-... UCAR, CERFACS, METEO-FRANCE and IRIT
31 !----------------------------------------------------------------------
32 
33 # 112 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/../instrumentation.fypp"
34 # 3 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp" 2
35 !----------------------------------------------------------------------
36 ! Module: tools_netcdf
37 !> NetCDF wrappers
38 ! Author: Benjamin Menetrier
39 ! Licensing: this code is distributed under the CeCILL-C license
40 ! Copyright 2015-... UCAR, CERFACS, METEO-FRANCE and IRIT
41 !----------------------------------------------------------------------
43 
44 use iso_fortran_env, only: output_unit
45 use netcdf, only: nf90_clobber,nf90_create,nf90_close,nf90_def_dim,nf90_def_grp,nf90_def_var,nf90_ebaddim,nf90_get_att, &
46  & nf90_get_var,nf90_global,nf90_inq_dimid,nf90_inq_grp_ncid,nf90_inquire_dimension,nf90_inquire_variable,nf90_inq_varid, &
47  & nf90_mpiio,nf90_netcdf4,nf90_noerr,nf90_nowrite,nf90_open,nf90_put_att,nf90_put_var,nf90_strerror,nf90_write
50 use type_mpl, only: mpl_type
51 
52 
53 implicit none
54 
55 integer,parameter :: nidmax = 1000 !< Maximum number of simultaneous file and group ids
56 integer,parameter :: ncharmax = 1024 !< Maximum number of characters to store file and group names
57 
59  ! Current activity
60  integer :: id(nidmax,2) = -1 !< Parent/child registry
61  character(len=ncharmax) :: name(nidmax) !< Child names
62 
63  ! Archive
64  integer :: nopened = 0 !< Number of opened files
65  integer :: nclosed = 0 !< Number of closed files
66 contains
67  procedure :: report => registry_report
68  procedure :: save => registry_save
69  procedure :: get_root_id => registry_get_root_id
70  procedure :: free => registry_free
71  procedure :: recursive_cleaning => registry_recursive_cleaning
72 end type registry_type
73 
75 
76 interface create_file
77  module procedure netcdf_create_file
78 end interface
79 interface open_file
80  module procedure netcdf_open_file
81 end interface
82 interface define_grp
83  module procedure netcdf_define_grp
84 end interface
85 interface inquire_grp
86  module procedure netcdf_inquire_grp
87 end interface
88 interface put_att
89 # 58 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
90  module procedure netcdf_put_att_int
91 # 58 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
92  module procedure netcdf_put_att_real
93 # 58 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
94  module procedure netcdf_put_att_logical
95 # 58 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
96  module procedure netcdf_put_att_string
97 # 60 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
98 end interface
99 interface get_att
100 # 63 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
101  module procedure netcdf_get_att_int
102 # 63 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
103  module procedure netcdf_get_att_real
104 # 63 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
105  module procedure netcdf_get_att_logical
106 # 63 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
107  module procedure netcdf_get_att_string
108 # 65 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
109 end interface
110 interface define_dim
111  module procedure netcdf_define_dim
112 end interface
113 interface inquire_dim
114  module procedure netcdf_inquire_dim
115 end interface
117  module procedure netcdf_inquire_dim_size
118 end interface
119 interface check_dim
120  module procedure netcdf_check_dim_size
121 end interface
122 interface define_var
123  module procedure netcdf_define_var
124 end interface
125 interface inquire_var
126  module procedure netcdf_inquire_var
127 end interface
129  module procedure netcdf_inquire_var_presence
130 end interface
132  module procedure netcdf_inquire_var_rank
133 end interface
135  module procedure netcdf_inquire_var_dim_size
136 end interface
137 interface put_var
138 # 95 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
139  module procedure netcdf_put_var_int_r0
140 # 95 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
141  module procedure netcdf_put_var_real_r0
142 # 95 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
143  module procedure netcdf_put_var_logical_r0
144 # 97 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
145 # 98 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
146 # 99 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
147  module procedure netcdf_put_var_int_r1
148 # 99 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
149  module procedure netcdf_put_var_real_r1
150 # 99 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
151  module procedure netcdf_put_var_logical_r1
152 # 101 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
153 # 98 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
154 # 99 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
155  module procedure netcdf_put_var_int_r2
156 # 99 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
157  module procedure netcdf_put_var_real_r2
158 # 99 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
159  module procedure netcdf_put_var_logical_r2
160 # 101 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
161 # 98 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
162 # 99 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
163  module procedure netcdf_put_var_int_r3
164 # 99 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
165  module procedure netcdf_put_var_real_r3
166 # 99 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
167  module procedure netcdf_put_var_logical_r3
168 # 101 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
169 # 98 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
170 # 99 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
171  module procedure netcdf_put_var_int_r4
172 # 99 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
173  module procedure netcdf_put_var_real_r4
174 # 99 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
175  module procedure netcdf_put_var_logical_r4
176 # 101 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
177 # 102 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
178 end interface
179 interface get_var
180 # 105 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
181  module procedure netcdf_get_var_byte_r0
182 # 105 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
183  module procedure netcdf_get_var_int_r0
184 # 105 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
185  module procedure netcdf_get_var_float_r0
186 # 105 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
187  module procedure netcdf_get_var_real_r0
188 # 105 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
189  module procedure netcdf_get_var_logical_r0
190 # 107 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
191 # 108 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
192 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
193  module procedure netcdf_get_var_byte_r1
194 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
195  module procedure netcdf_get_var_int_r1
196 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
197  module procedure netcdf_get_var_float_r1
198 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
199  module procedure netcdf_get_var_real_r1
200 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
201  module procedure netcdf_get_var_logical_r1
202 # 111 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
203 # 108 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
204 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
205  module procedure netcdf_get_var_byte_r2
206 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
207  module procedure netcdf_get_var_int_r2
208 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
209  module procedure netcdf_get_var_float_r2
210 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
211  module procedure netcdf_get_var_real_r2
212 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
213  module procedure netcdf_get_var_logical_r2
214 # 111 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
215 # 108 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
216 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
217  module procedure netcdf_get_var_byte_r3
218 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
219  module procedure netcdf_get_var_int_r3
220 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
221  module procedure netcdf_get_var_float_r3
222 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
223  module procedure netcdf_get_var_real_r3
224 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
225  module procedure netcdf_get_var_logical_r3
226 # 111 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
227 # 108 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
228 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
229  module procedure netcdf_get_var_byte_r4
230 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
231  module procedure netcdf_get_var_int_r4
232 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
233  module procedure netcdf_get_var_float_r4
234 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
235  module procedure netcdf_get_var_real_r4
236 # 109 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
237  module procedure netcdf_get_var_logical_r4
238 # 111 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
239 # 112 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
240 end interface
241 interface close_file
242  module procedure netcdf_close_file
243 end interface
244 interface strerror
245  module procedure netcdf_strerror
246 end interface
247 
248 private
249 public :: registry
252 
253 contains
254 
255 !----------------------------------------------------------------------
256 ! Subroutine: registry_report
257 !> Print registry report
258 !----------------------------------------------------------------------
259 subroutine registry_report(registry,mpl)
260 
261 implicit none
262 
263 ! Passed variable
264 class(registry_type),intent(inout) :: registry !< Registry
265 type(mpl_type),intent(inout) :: mpl !< MPI data
266 
267 ! Set name
268 
269 
270 ! Probe in
271 
272 
273 write(mpl%info,'(a7,a,i3)') '','Number of opened files: ',registry%nopened
274 call mpl%flush
275 write(mpl%info,'(a7,a,i3)') '','Number of closed files: ',registry%nclosed
276 call mpl%flush
277 write(mpl%info,'(a7,a,i3)') '','Registry status: ',count(registry%id(:,1)/=-1)
278 call mpl%flush
279 
280 ! Probe out
281 
282 
283 end subroutine registry_report
284 
285 !----------------------------------------------------------------------
286 ! Subroutine: registry_save
287 !> Save ID in registry
288 !----------------------------------------------------------------------
289 subroutine registry_save(registry,mpl,parent_id,child_id,child_name)
290 
291 implicit none
292 
293 ! Passed variable
294 class(registry_type),intent(inout) :: registry !< Registry
295 type(mpl_type),intent(inout) :: mpl !< MPI data
296 integer,intent(in) :: parent_id !< Parent ID
297 integer,intent(in) :: child_id !< Child ID
298 character(len=*),intent(in) :: child_name !< Child name
299 
300 ! Local variables
301 integer :: i,rid
302 
303 ! Set name
304 
305 
306 ! Probe in
307 
308 
309 ! Initialization
310 rid = mpl%msv%vali
311 
312 ! Get a free slot
313 do i=1,nidmax
314  if (registry%id(i,1)==-1) then
315  rid = i
316  exit
317  end if
318 end do
319 
320 ! Check slot index
321 if (mpl%msv%is(rid)) call mpl%abort('registry_save','no more free slots in the files registry')
322 
323 ! Save parent ID
324 registry%id(rid,1) = parent_id
325 
326 ! Save child ID
327 registry%id(rid,2) = child_id
328 
329 ! Save child name
330 registry%name(rid) = child_name(1:min(len(child_name),ncharmax))
331 
332 ! Update archive
333 if (parent_id==0) registry%nopened = registry%nopened+1
334 
335 ! Probe out
336 
337 
338 end subroutine registry_save
339 
340 !----------------------------------------------------------------------
341 ! Function: registry_get_root_id
342 !> Get root ID in registry from a given ID
343 !----------------------------------------------------------------------
344 function registry_get_root_id(registry,mpl,ncid) result(rid)
345 
346 implicit none
347 
348 ! Passed variable
349 class(registry_type),intent(inout) :: registry !< Registry
350 type(mpl_type),intent(inout) :: mpl !< MPI data
351 integer,intent(in) :: ncid !< Child ID
352 
353 ! Returned variable
354 integer :: rid
355 
356 ! Local variable
357 integer :: child_id,parent_id,i
358 logical :: found
359 
360 ! Set name
361 
362 
363 ! Probe in
364 
365 
366 if (mpl%msv%isnot(ncid)) then
367  ! Initialization
368  found = .false.
369  child_id = ncid
370 
371  ! Look for successive parents
372  do while (.not.found)
373  ! Initialization
374  rid = mpl%msv%vali
375 
376  ! Get corresponding slot
377  do i=1,nidmax
378  if (registry%id(i,2)==child_id) then
379  rid = i
380  exit
381  end if
382  end do
383 
384  ! Check slot index
385  if (mpl%msv%is(rid)) call mpl%abort('registry_get_root_id','cannot find this child ID in registry')
386 
387  ! Get parent_id
388  parent_id = registry%id(i,1)
389 
390  if (parent_id==0) then
391  ! Found root ID
392  found = .true.
393  else
394  ! Update child ID
395  child_id = parent_id
396  end if
397  end do
398 else
399  ! Missing value
400  rid = mpl%msv%vali
401 end if
402 
403 ! Probe out
404 
405 
406 end function registry_get_root_id
407 
408 !----------------------------------------------------------------------
409 ! Subroutine: registry_free
410 !> Free registry slot
411 !----------------------------------------------------------------------
412 subroutine registry_free(registry,mpl,ncid)
413 
414 implicit none
415 
416 ! Passed variable
417 class(registry_type),intent(inout) :: registry !< Registry
418 type(mpl_type),intent(inout) :: mpl !< MPI data
419 integer,intent(in) :: ncid !< Child ID
420 
421 ! Set name
422 
423 
424 ! Probe in
425 
426 
427 ! Run recursive cleaning
428 call registry%recursive_cleaning(mpl,ncid)
429 
430 ! Update archive
431 registry%nclosed = registry%nclosed+1
432 
433 ! Probe out
434 
435 
436 end subroutine registry_free
437 
438 !----------------------------------------------------------------------
439 ! Subroutine: registry_recursive_cleaning
440 !> Recursive registry cleaning
441 !----------------------------------------------------------------------
442 recursive subroutine registry_recursive_cleaning(registry,mpl,parent_id)
443 
444 implicit none
445 
446 ! Passed variable
447 class(registry_type),intent(inout) :: registry !< Registry
448 type(mpl_type),intent(inout) :: mpl !< MPI data
449 integer,intent(in) :: parent_id !< Parent ID
450 
451 ! Local variables
452 integer :: i,child_id
453 
454 ! Set name
455 
456 
457 ! Probe in
458 
459 
460 ! Call recursive cleaning for all the children
461 do i=1,nidmax
462  if (registry%id(i,1)==parent_id) then
463  child_id = registry%id(i,2)
464  call registry%recursive_cleaning(mpl,child_id)
465  end if
466 end do
467 
468 ! Clean parent slot
469 do i=1,nidmax
470  if (registry%id(i,2)==parent_id) then
471  registry%id(i,:) = -1
472  exit
473  end if
474 end do
475 
476 ! Probe out
477 
478 
479 end subroutine registry_recursive_cleaning
480 
481 !----------------------------------------------------------------------
482 ! Function: netcdf_create_file
483 !> Create file
484 !----------------------------------------------------------------------
485 function netcdf_create_file(mpl,filename,iproc) result(ncid)
486 
487 implicit none
488 
489 ! Passed variables
490 type(mpl_type),intent(inout) :: mpl !< MPI data
491 character(len=*),intent(in) :: filename !< File name
492 integer,intent(in),optional :: iproc !< Processor index
493 
494 ! Returned variable
495 integer :: ncid
496 
497 ! Local variables
498 character(len=1024) :: fullname
499 
500 ! Set name
501 
502 
503 ! Probe in
504 
505 
506 ! Initialization
507 ncid = mpl%msv%vali
508 
509 if (present(iproc)) then
510  ! Local I/O
511 
512  ! Full file name
513  if (iproc==0) then
514  fullname = trim(mpl%datadir)//'/'//trim(filename)//'.nc'
515  else
516  write(fullname,'(a,i6.6,a,i6.6,a)') trim(mpl%datadir)//'/'//trim(filename)//'_local_',mpl%nproc,'-',iproc,'.nc'
517  end if
518 
519  ! Create file
520  call strerror(mpl,'netcdf_create_file',ncid,nf90_create(fullname,ior(nf90_clobber,nf90_netcdf4),ncid),'file '//trim(fullname))
521 else
522  ! Global I/O
523  if (mpl%pioproc(mpl%myproc)) then
524  ! Full file name
525  fullname = trim(mpl%datadir)//'/'//trim(filename)//'.nc'
526 
527  ! Create file
528  if (mpl%parallel_io) then
529  call strerror(mpl,'netcdf_create_file',ncid,nf90_create(fullname,ior(nf90_clobber,ior(nf90_netcdf4,nf90_mpiio)),ncid, &
530  & comm=mpl%f_comm_io%communicator(),info=mpl%f_comm_io%info_null()),'file '//trim(fullname))
531  else
532  call strerror(mpl,'netcdf_create_file',ncid,nf90_create(fullname,ior(nf90_clobber,nf90_netcdf4),ncid),'file&
533 # 404 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
534  & '//trim(fullname))
535  end if
536  end if
537 end if
538 
539 ! Save ID in registry
540 if (mpl%msv%isnot(ncid)) call registry%save(mpl,0,ncid,filename)
541 
542 ! Probe out
543 
544 
545 end function netcdf_create_file
546 
547 !----------------------------------------------------------------------
548 ! Function: netcdf_open_file
549 !> Open file
550 !----------------------------------------------------------------------
551 function netcdf_open_file(mpl,filename,iproc) result(ncid)
552 
553 implicit none
554 
555 ! Passed variables
556 type(mpl_type),intent(inout) :: mpl !< MPI data
557 character(len=*),intent(in) :: filename !< File name
558 integer,intent(in),optional :: iproc !< Processor index
559 
560 ! Returned variable
561 integer :: ncid
562 
563 ! Local variables
564 character(len=1024) :: fullname
565 
566 ! Set name
567 
568 
569 ! Probe in
570 
571 
572 ! Initialization
573 ncid = mpl%msv%vali
574 
575 if (present(iproc)) then
576  ! Local I/O
577 
578  ! Full file name
579  if (iproc==0) then
580  fullname = trim(mpl%datadir)//'/'//trim(filename)//'.nc'
581  else
582  write(fullname,'(a,i6.6,a,i6.6,a)') trim(mpl%datadir)//'/'//trim(filename)//'_local_',mpl%nproc,'-',iproc,'.nc'
583  end if
584 
585  ! Open file
586  call strerror(mpl,'netcdf_open_file',ncid,nf90_open(fullname,nf90_nowrite,ncid),'file '//trim(fullname))
587 else
588  ! Global I/O
589  if (mpl%pioproc(mpl%myproc)) then
590  ! Full file name
591  fullname = trim(mpl%datadir)//'/'//trim(filename)//'.nc'
592 
593  ! Open file
594  if (mpl%parallel_io) then
595  call strerror(mpl,'netcdf_open_file',ncid,nf90_open(fullname,nf90_nowrite,ncid, &
596  & comm=mpl%f_comm_io%communicator(),info=mpl%f_comm_io%info_null()),'file '//trim(fullname))
597  else
598  call strerror(mpl,'netcdf_open_file',ncid,nf90_open(fullname,nf90_nowrite,ncid),'file '//trim(fullname))
599  end if
600  end if
601 end if
602 
603 ! Save ID in registry
604 if (mpl%msv%isnot(ncid)) call registry%save(mpl,0,ncid,filename)
605 
606 ! Probe out
607 
608 
609 end function netcdf_open_file
610 
611 !----------------------------------------------------------------------
612 ! Function: netcdf_define_grp
613 !> Define group
614 !----------------------------------------------------------------------
615 function netcdf_define_grp(mpl,ncid,grpname) result(grpid)
616 
617 implicit none
618 
619 ! Passed variables
620 type(mpl_type),intent(inout) :: mpl !< MPI data
621 integer,intent(in) :: ncid !< File ID
622 character(len=*),intent(in) :: grpname !< Group name
623 
624 ! Returned variable
625 integer :: grpid
626 
627 ! Local variable
628 integer :: rid
629 
630 ! Set name
631 
632 
633 ! Probe in
634 
635 
636 ! Initialization
637 grpid = mpl%msv%vali
638 
639 ! Get root ID in registry
640 rid = registry%get_root_id(mpl,ncid)
641 
642 if (mpl%msv%isnot(rid)) then
643  ! Define group
644  call strerror(mpl,'netcdf_define_grp',ncid,nf90_def_grp(ncid,grpname,grpid),'group '//trim(grpname))
645 
646  ! Save ID in registry
647  if (mpl%msv%isnot(grpid)) call registry%save(mpl,ncid,grpid,grpname)
648 end if
649 
650 ! Probe out
651 
652 
653 end function netcdf_define_grp
654 
655 !----------------------------------------------------------------------
656 ! Function: netcdf_inquire_grp
657 !> Inquire group ID
658 !----------------------------------------------------------------------
659 function netcdf_inquire_grp(mpl,ncid,grpname) result(grpid)
660 
661 implicit none
662 
663 ! Passed variables
664 type(mpl_type),intent(inout) :: mpl !< MPI data
665 integer,intent(in) :: ncid !< File ID
666 character(len=*),intent(in) :: grpname !< Group name
667 
668 ! Returned variable
669 integer :: grpid
670 
671 ! Local variable
672 integer :: rid
673 
674 ! Set name
675 
676 
677 ! Probe in
678 
679 
680 ! Initialization
681 grpid = mpl%msv%vali
682 
683 ! Get root ID in registry
684 rid = registry%get_root_id(mpl,ncid)
685 
686 if (mpl%msv%isnot(rid)) then
687  ! Define group
688  call strerror(mpl,'netcdf_inquire_grp',ncid,nf90_inq_grp_ncid(ncid,grpname,grpid),'group '//trim(grpname))
689 
690  ! Save ID in registry
691  if (mpl%msv%isnot(grpid)) call registry%save(mpl,ncid,grpid,grpname)
692 end if
693 
694 ! Probe out
695 
696 
697 end function netcdf_inquire_grp
698 
699 # 570 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
700 !----------------------------------------------------------------------
701 ! Subroutine: netcdf_put_att_int
702 !> Put attribute
703 !----------------------------------------------------------------------
704 subroutine netcdf_put_att_int(mpl,ncid,attname,att,varid)
705 
706 implicit none
707 
708 ! Passed variables
709 type(mpl_type),intent(inout) :: mpl !< MPI data
710 integer,intent(in) :: ncid !< File ID
711 character(len=*),intent(in) :: attname !< Attribute name
712 integer(kind_int),intent(in) :: att !< Attribute
713 integer,intent(in),optional :: varid !< Variable ID
714 
715 ! Local variable
716 integer :: rid,lvarid
717 
718 
719 ! Set name
720 
721 
722 ! Probe in
723 
724 
725 ! Get root ID in registry
726 rid = registry%get_root_id(mpl,ncid)
727 
728 if (mpl%msv%isnot(rid)) then
729  ! Local variable ID
730  lvarid = nf90_global
731  if (present(varid)) lvarid = varid
732 
733  ! Put attribute
734 # 608 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
735  call strerror(mpl,'netcdf_put_att_int',ncid,nf90_put_att(ncid,lvarid,attname,att),'attribute '//trim(attname))
736 # 610 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
737 end if
738 
739 ! Probe out
740 
741 
742 end subroutine netcdf_put_att_int
743 # 570 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
744 !----------------------------------------------------------------------
745 ! Subroutine: netcdf_put_att_real
746 !> Put attribute
747 !----------------------------------------------------------------------
748 subroutine netcdf_put_att_real(mpl,ncid,attname,att,varid)
749 
750 implicit none
751 
752 ! Passed variables
753 type(mpl_type),intent(inout) :: mpl !< MPI data
754 integer,intent(in) :: ncid !< File ID
755 character(len=*),intent(in) :: attname !< Attribute name
756 real(kind_real),intent(in) :: att !< Attribute
757 integer,intent(in),optional :: varid !< Variable ID
758 
759 ! Local variable
760 integer :: rid,lvarid
761 
762 
763 ! Set name
764 
765 
766 ! Probe in
767 
768 
769 ! Get root ID in registry
770 rid = registry%get_root_id(mpl,ncid)
771 
772 if (mpl%msv%isnot(rid)) then
773  ! Local variable ID
774  lvarid = nf90_global
775  if (present(varid)) lvarid = varid
776 
777  ! Put attribute
778 # 608 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
779  call strerror(mpl,'netcdf_put_att_real',ncid,nf90_put_att(ncid,lvarid,attname,att),'attribute '//trim(attname))
780 # 610 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
781 end if
782 
783 ! Probe out
784 
785 
786 end subroutine netcdf_put_att_real
787 # 570 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
788 !----------------------------------------------------------------------
789 ! Subroutine: netcdf_put_att_logical
790 !> Put attribute
791 !----------------------------------------------------------------------
792 subroutine netcdf_put_att_logical(mpl,ncid,attname,att,varid)
793 
794 implicit none
795 
796 ! Passed variables
797 type(mpl_type),intent(inout) :: mpl !< MPI data
798 integer,intent(in) :: ncid !< File ID
799 character(len=*),intent(in) :: attname !< Attribute name
800 logical,intent(in) :: att !< Attribute
801 integer,intent(in),optional :: varid !< Variable ID
802 
803 ! Local variable
804 integer :: rid,lvarid
805  integer :: attint
806 
807 ! Set name
808 
809 
810 ! Probe in
811 
812 
813 ! Get root ID in registry
814 rid = registry%get_root_id(mpl,ncid)
815 
816 if (mpl%msv%isnot(rid)) then
817  ! Local variable ID
818  lvarid = nf90_global
819  if (present(varid)) lvarid = varid
820 
821  ! Put attribute
822 # 605 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
823  call convert_l2i(att,attint)
824  call strerror(mpl,'netcdf_put_att_logical',ncid,nf90_put_att(ncid,lvarid,attname,attint),'attribute '//trim(attname))
825 # 610 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
826 end if
827 
828 ! Probe out
829 
830 
831 end subroutine netcdf_put_att_logical
832 # 570 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
833 !----------------------------------------------------------------------
834 ! Subroutine: netcdf_put_att_string
835 !> Put attribute
836 !----------------------------------------------------------------------
837 subroutine netcdf_put_att_string(mpl,ncid,attname,att,varid)
838 
839 implicit none
840 
841 ! Passed variables
842 type(mpl_type),intent(inout) :: mpl !< MPI data
843 integer,intent(in) :: ncid !< File ID
844 character(len=*),intent(in) :: attname !< Attribute name
845 character(len=*),intent(in) :: att !< Attribute
846 integer,intent(in),optional :: varid !< Variable ID
847 
848 ! Local variable
849 integer :: rid,lvarid
850 
851 
852 ! Set name
853 
854 
855 ! Probe in
856 
857 
858 ! Get root ID in registry
859 rid = registry%get_root_id(mpl,ncid)
860 
861 if (mpl%msv%isnot(rid)) then
862  ! Local variable ID
863  lvarid = nf90_global
864  if (present(varid)) lvarid = varid
865 
866  ! Put attribute
867 # 608 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
868  call strerror(mpl,'netcdf_put_att_string',ncid,nf90_put_att(ncid,lvarid,attname,att),'attribute '//trim(attname))
869 # 610 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
870 end if
871 
872 ! Probe out
873 
874 
875 end subroutine netcdf_put_att_string
876 # 617 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
877 
878 # 619 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
879 !----------------------------------------------------------------------
880 ! Subroutine: netcdf_get_att_int
881 !> Get attribute
882 !----------------------------------------------------------------------
883 subroutine netcdf_get_att_int(mpl,ncid,attname,att,varid)
884 
885 implicit none
886 
887 ! Passed variables
888 type(mpl_type),intent(inout) :: mpl !< MPI data
889 integer,intent(in) :: ncid !< File ID
890 character(len=*),intent(in) :: attname !< Attribute name
891 integer(kind_int),intent(out) :: att !< Attribute
892 integer,intent(in),optional :: varid !< Variable ID
893 
894 ! Local variable
895 integer :: rid,lvarid
896 
897 
898 ! Set name
899 
900 
901 ! Probe in
902 
903 
904 ! Get root ID in registry
905 rid = registry%get_root_id(mpl,ncid)
906 
907 if (mpl%msv%isnot(rid)) then
908  ! Local variable ID
909  lvarid = nf90_global
910  if (present(varid)) lvarid = varid
911 
912  ! Get attribute
913 # 657 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
914  call strerror(mpl,'netcdf_get_att_int',ncid,nf90_get_att(ncid,lvarid,attname,att),'attribute '//trim(attname))
915 # 659 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
916 end if
917 
918 ! Probe out
919 
920 
921 end subroutine netcdf_get_att_int
922 # 619 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
923 !----------------------------------------------------------------------
924 ! Subroutine: netcdf_get_att_real
925 !> Get attribute
926 !----------------------------------------------------------------------
927 subroutine netcdf_get_att_real(mpl,ncid,attname,att,varid)
928 
929 implicit none
930 
931 ! Passed variables
932 type(mpl_type),intent(inout) :: mpl !< MPI data
933 integer,intent(in) :: ncid !< File ID
934 character(len=*),intent(in) :: attname !< Attribute name
935 real(kind_real),intent(out) :: att !< Attribute
936 integer,intent(in),optional :: varid !< Variable ID
937 
938 ! Local variable
939 integer :: rid,lvarid
940 
941 
942 ! Set name
943 
944 
945 ! Probe in
946 
947 
948 ! Get root ID in registry
949 rid = registry%get_root_id(mpl,ncid)
950 
951 if (mpl%msv%isnot(rid)) then
952  ! Local variable ID
953  lvarid = nf90_global
954  if (present(varid)) lvarid = varid
955 
956  ! Get attribute
957 # 657 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
958  call strerror(mpl,'netcdf_get_att_real',ncid,nf90_get_att(ncid,lvarid,attname,att),'attribute '//trim(attname))
959 # 659 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
960 end if
961 
962 ! Probe out
963 
964 
965 end subroutine netcdf_get_att_real
966 # 619 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
967 !----------------------------------------------------------------------
968 ! Subroutine: netcdf_get_att_logical
969 !> Get attribute
970 !----------------------------------------------------------------------
971 subroutine netcdf_get_att_logical(mpl,ncid,attname,att,varid)
972 
973 implicit none
974 
975 ! Passed variables
976 type(mpl_type),intent(inout) :: mpl !< MPI data
977 integer,intent(in) :: ncid !< File ID
978 character(len=*),intent(in) :: attname !< Attribute name
979 logical,intent(out) :: att !< Attribute
980 integer,intent(in),optional :: varid !< Variable ID
981 
982 ! Local variable
983 integer :: rid,lvarid
984  integer :: attint
985 
986 ! Set name
987 
988 
989 ! Probe in
990 
991 
992 ! Get root ID in registry
993 rid = registry%get_root_id(mpl,ncid)
994 
995 if (mpl%msv%isnot(rid)) then
996  ! Local variable ID
997  lvarid = nf90_global
998  if (present(varid)) lvarid = varid
999 
1000  ! Get attribute
1001 # 654 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1002  call strerror(mpl,'netcdf_get_att_logical',ncid,nf90_get_att(ncid,lvarid,attname,attint),'attribute '//trim(attname))
1003  call convert_i2l(mpl,attint,att)
1004 # 659 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1005 end if
1006 
1007 ! Probe out
1008 
1009 
1010 end subroutine netcdf_get_att_logical
1011 # 619 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1012 !----------------------------------------------------------------------
1013 ! Subroutine: netcdf_get_att_string
1014 !> Get attribute
1015 !----------------------------------------------------------------------
1016 subroutine netcdf_get_att_string(mpl,ncid,attname,att,varid)
1017 
1018 implicit none
1019 
1020 ! Passed variables
1021 type(mpl_type),intent(inout) :: mpl !< MPI data
1022 integer,intent(in) :: ncid !< File ID
1023 character(len=*),intent(in) :: attname !< Attribute name
1024 character(len=*),intent(out) :: att !< Attribute
1025 integer,intent(in),optional :: varid !< Variable ID
1026 
1027 ! Local variable
1028 integer :: rid,lvarid
1029 
1030 
1031 ! Set name
1032 
1033 
1034 ! Probe in
1035 
1036 
1037 ! Get root ID in registry
1038 rid = registry%get_root_id(mpl,ncid)
1039 
1040 if (mpl%msv%isnot(rid)) then
1041  ! Local variable ID
1042  lvarid = nf90_global
1043  if (present(varid)) lvarid = varid
1044 
1045  ! Get attribute
1046 # 657 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1047  call strerror(mpl,'netcdf_get_att_string',ncid,nf90_get_att(ncid,lvarid,attname,att),'attribute '//trim(attname))
1048 # 659 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1049 end if
1050 
1051 ! Probe out
1052 
1053 
1054 end subroutine netcdf_get_att_string
1055 # 666 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1056 
1057 !----------------------------------------------------------------------
1058 ! Function: netcdf_define_dim
1059 !> Define dimension
1060 !----------------------------------------------------------------------
1061 function netcdf_define_dim(mpl,ncid,dimname,dimsize) result(dimid)
1062 
1063 implicit none
1064 
1065 ! Passed variables
1066 type(mpl_type),intent(inout) :: mpl !< MPI data
1067 integer,intent(in) :: ncid !< File ID
1068 character(len=*),intent(in) :: dimname !< Dimension name
1069 integer,intent(in) :: dimsize !< Dimension size
1070 
1071 ! Returned variable
1072 integer :: dimid
1073 
1074 ! Local variable
1075 integer :: rid
1076 
1077 ! Set name
1078 
1079 
1080 ! Probe in
1081 
1082 
1083 ! Get root ID in registry
1084 rid = registry%get_root_id(mpl,ncid)
1085 
1086 ! Initialization
1087 dimid = mpl%msv%vali
1088 
1089 ! Define dimension
1090 if (mpl%msv%isnot(rid)) call strerror(mpl,'netcdf_define_dim',ncid,nf90_def_dim(ncid,dimname,dimsize,dimid),'dimension&
1091 # 700 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1092  & '//trim(dimname))
1093 
1094 ! Probe out
1095 
1096 
1097 end function netcdf_define_dim
1098 
1099 !----------------------------------------------------------------------
1100 ! Function: netcdf_inquire_dim
1101 !> Inquire dimension ID
1102 !----------------------------------------------------------------------
1103 function netcdf_inquire_dim(mpl,ncid,dimname) result(dimid)
1104 
1105 implicit none
1106 
1107 ! Passed variables
1108 type(mpl_type),intent(inout) :: mpl !< MPI data
1109 integer,intent(in) :: ncid !< File ID
1110 character(len=*),intent(in) :: dimname !< Dimension name
1111 
1112 ! Returned variable
1113 integer :: dimid
1114 
1115 ! Local variable
1116 integer :: rid,info
1117 
1118 ! Set name
1119 
1120 
1121 ! Probe in
1122 
1123 
1124 ! Get root ID in registry
1125 rid = registry%get_root_id(mpl,ncid)
1126 
1127 ! Initialization
1128 dimid = mpl%msv%vali
1129 
1130 if (mpl%msv%isnot(rid)) then
1131  ! Define dimension
1132  info = nf90_inq_dimid(ncid,dimname,dimid)
1133 
1134  if (info==nf90_ebaddim) then
1135  dimid = mpl%msv%vali
1136  else
1137  call strerror(mpl,'netcdf_inquire_dim',ncid,info,'dimension '//trim(dimname))
1138  end if
1139 end if
1140 
1141 ! Probe out
1142 
1143 
1144 end function netcdf_inquire_dim
1145 
1146 !----------------------------------------------------------------------
1147 ! Function: netcdf_inquire_dim_size
1148 !> Inquire dimension size
1149 !----------------------------------------------------------------------
1150 function netcdf_inquire_dim_size(mpl,ncid,dimname,default) result(dimsize)
1151 
1152 implicit none
1153 
1154 ! Passed variables
1155 type(mpl_type),intent(inout) :: mpl !< MPI data
1156 integer,intent(in) :: ncid !< File ID
1157 character(len=*),intent(in) :: dimname !< Dimension name
1158 integer,intent(in),optional :: default !< Default value
1159 
1160 ! Returned variable
1161 integer :: dimsize
1162 
1163 ! Local variables
1164 integer :: rid,dimid
1165 
1166 ! Set name
1167 
1168 
1169 ! Probe in
1170 
1171 
1172 ! Get root ID in registry
1173 rid = registry%get_root_id(mpl,ncid)
1174 
1175 ! Initialization
1176 dimsize = mpl%msv%vali
1177 if (present(default)) dimsize = default
1178 
1179 if (mpl%msv%isnot(rid)) then
1180  ! Inquire dimension ID
1181  dimid = netcdf_inquire_dim(mpl,ncid,dimname)
1182 
1183  ! Inquire dimension size
1184  if (mpl%msv%isnot(dimid)) call strerror(mpl,'netcdf_inquire_dim_size',ncid,nf90_inquire_dimension(ncid,dimid,len=dimsize), &
1185  & 'dimension '//trim(dimname))
1186 end if
1187 
1188 ! Probe out
1189 
1190 
1191 end function netcdf_inquire_dim_size
1192 
1193 !----------------------------------------------------------------------
1194 ! Function: netcdf_check_dim_size
1195 !> Check dimension size
1196 !----------------------------------------------------------------------
1197 function netcdf_check_dim_size(mpl,ncid,dimname,dimsize) result(value)
1198 
1199 implicit none
1200 
1201 ! Passed variables
1202 type(mpl_type),intent(inout) :: mpl !< MPI data
1203 integer,intent(in) :: ncid !< File ID
1204 character(len=*),intent(in) :: dimname !< Dimension name
1205 integer,intent(in) :: dimsize !< Expected dimension size
1206 
1207 ! Returned value
1208 logical :: value
1209 
1210 ! Local variables
1211 integer :: rid,dimsize_test
1212 
1213 ! Set name
1214 
1215 
1216 ! Probe in
1217 
1218 
1219 ! Get root ID in registry
1220 rid = registry%get_root_id(mpl,ncid)
1221 
1222 ! Initialization
1223 value = .true.
1224 
1225 if (mpl%msv%isnot(rid)) then
1226  ! Inquire dimension size
1227  dimsize_test = netcdf_inquire_dim_size(mpl,ncid,dimname)
1228 
1229  ! Check dimension size
1230  value = (dimsize_test==dimsize)
1231 end if
1232 
1233 ! Probe out
1234 
1235 
1236 end function netcdf_check_dim_size
1237 
1238 !----------------------------------------------------------------------
1239 ! Function: netcdf_define_var
1240 !> Define variable
1241 !----------------------------------------------------------------------
1242 function netcdf_define_var(mpl,ncid,varname,varkind,varshape,unitname) result(varid)
1243 
1244 implicit none
1245 
1246 ! Passed variables
1247 type(mpl_type),intent(inout) :: mpl !< MPI data
1248 integer,intent(in) :: ncid !< File ID
1249 character(len=*),intent(in) :: varname !< Variable name
1250 character(len=*),intent(in) :: varkind !< Variable kind
1251 integer,intent(in) :: varshape(:) !< Variable shape
1252 character(len=*),intent(in),optional :: unitname !< Unit name
1253 
1254 ! Returned variable
1255 integer :: varid
1256 
1257 ! Local variable
1258 integer :: rid
1259 
1260 ! Set name
1261 
1262 
1263 ! Probe in
1264 
1265 
1266 ! Get root ID in registry
1267 rid = registry%get_root_id(mpl,ncid)
1268 
1269 ! Initialization
1270 varid = mpl%msv%vali
1271 
1272 if (mpl%msv%isnot(rid)) then
1273  if ((trim(varkind)=='int').or.(trim(varkind)=='logical')) then
1274  ! Define variable
1275  call strerror(mpl,'netcdf_define_var',ncid,nf90_def_var(ncid,varname,nc_kind_int,varshape,varid),'variable '//trim(varname))
1276 
1277  ! Set missing value attribute
1278  call put_att(mpl,ncid,'_FillValue',mpl%msv%vali,varid)
1279  elseif (trim(varkind)=='real') then
1280  ! Define variable
1281  call strerror(mpl,'netcdf_define_var',ncid,nf90_def_var(ncid,varname,nc_kind_real,varshape,varid),'variable '//trim(varname))
1282 
1283  ! Set missing value attribute
1284  call put_att(mpl,ncid,'_FillValue',mpl%msv%valr,varid)
1285  else
1286  call mpl%abort('netcdf_define_var','wrong variable kind')
1287  end if
1288 
1289  ! Set unit
1290  if (present(unitname)) call put_att(mpl,ncid,'unit',unitname,varid)
1291 end if
1292 
1293 ! Probe out
1294 
1295 
1296 end function netcdf_define_var
1297 
1298 !----------------------------------------------------------------------
1299 ! Function: netcdf_inquire_var
1300 !> Inquire variable ID
1301 !----------------------------------------------------------------------
1302 function netcdf_inquire_var(mpl,ncid,varname) result(varid)
1303 
1304 implicit none
1305 
1306 ! Passed variables
1307 type(mpl_type),intent(inout) :: mpl !< MPI data
1308 integer,intent(in) :: ncid !< File ID
1309 character(len=*),intent(in) :: varname !< Variable name
1310 
1311 ! Returned variable
1312 integer :: varid
1313 
1314 ! Local variable
1315 integer :: rid
1316 
1317 ! Set name
1318 
1319 
1320 ! Probe in
1321 
1322 
1323 ! Get root ID in registry
1324 rid = registry%get_root_id(mpl,ncid)
1325 
1326 ! Initialization
1327 varid = mpl%msv%vali
1328 
1329 ! Inquire variable ID
1330 if (mpl%msv%isnot(rid)) call strerror(mpl,'netcdf_inquire_var',ncid,nf90_inq_varid(ncid,varname,varid),'variable '//trim(varname))
1331 
1332 ! Probe out
1333 
1334 
1335 end function netcdf_inquire_var
1336 
1337 !----------------------------------------------------------------------
1338 ! Function: netcdf_inquire_var_presence
1339 !> Inquire variable presence
1340 !----------------------------------------------------------------------
1341 function netcdf_inquire_var_presence(mpl,ncid,varname) result(ispresent)
1342 
1343 implicit none
1344 
1345 ! Passed variables
1346 type(mpl_type),intent(inout) :: mpl !< MPI data
1347 integer,intent(in) :: ncid !< File ID
1348 character(len=*),intent(in) :: varname !< Variable name
1349 
1350 ! Returned variable
1351 logical :: ispresent
1352 
1353 ! Local variable
1354 integer :: rid,varid,info
1355 
1356 ! Set name
1357 
1358 
1359 ! Probe in
1360 
1361 
1362 ! Get root ID in registry
1363 rid = registry%get_root_id(mpl,ncid)
1364 
1365 ! Initialization
1366 ispresent = .false.
1367 
1368 if (mpl%msv%isnot(rid)) then
1369  ! Inquire variable ID
1370  info = nf90_inq_varid(ncid,varname,varid)
1371 
1372  ! Set presence flag
1373  ispresent = (info==nf90_noerr)
1374 end if
1375 
1376 ! Probe out
1377 
1378 
1379 end function netcdf_inquire_var_presence
1380 
1381 !----------------------------------------------------------------------
1382 ! Function: netcdf_inquire_var_rank
1383 !> Inquire variable rank
1384 !----------------------------------------------------------------------
1385 function netcdf_inquire_var_rank(mpl,ncid,varname) result(rank)
1386 
1387 implicit none
1388 
1389 ! Passed variables
1390 type(mpl_type),intent(inout) :: mpl !< MPI data
1391 integer,intent(in) :: ncid !< File ID
1392 character(len=*),intent(in) :: varname !< Variable name
1393 
1394 ! Returned variable
1395 integer :: rank
1396 
1397 ! Local variables
1398 integer :: rid,varid
1399 
1400 ! Set name
1401 
1402 
1403 ! Probe in
1404 
1405 
1406 ! Get root ID in registry
1407 rid = registry%get_root_id(mpl,ncid)
1408 
1409 ! Initialization
1410 rank = mpl%msv%vali
1411 
1412 if (mpl%msv%isnot(rid)) then
1413  ! Inquire variable ID
1414  varid = inquire_var(mpl,ncid,varname)
1415 
1416  ! Inquire variable rank
1417  if (mpl%msv%isnot(varid)) call strerror(mpl,'netcdf_inquire_var_rank',ncid,nf90_inquire_variable(ncid,varid,ndims=rank), &
1418  & 'variable '//trim(varname))
1419 end if
1420 
1421 ! Probe out
1422 
1423 
1424 end function netcdf_inquire_var_rank
1425 
1426 !----------------------------------------------------------------------
1427 ! Function: netcdf_inquire_var_dim_size
1428 !> Inquire variable dimension size
1429 !----------------------------------------------------------------------
1430 function netcdf_inquire_var_dim_size(mpl,ncid,varname,dimindex) result(dimsize)
1431 
1432 implicit none
1433 
1434 ! Passed variables
1435 type(mpl_type),intent(inout) :: mpl !< MPI data
1436 integer,intent(in) :: ncid !< File ID
1437 character(len=*),intent(in) :: varname !< Variable name
1438 integer,intent(in) :: dimindex !< Dimension index
1439 
1440 ! Returned variable
1441 integer :: dimsize
1442 
1443 ! Local variables
1444 integer :: rid,rank,varid
1445 integer,allocatable :: dimids(:)
1446 
1447 ! Set name
1448 
1449 
1450 ! Probe in
1451 
1452 
1453 ! Get root ID in registry
1454 rid = registry%get_root_id(mpl,ncid)
1455 
1456 ! Initialization
1457 dimsize = mpl%msv%vali
1458 
1459 if (mpl%msv%isnot(rid)) then
1460  ! Inquire variable rank
1461  rank = inquire_var_rank(mpl,ncid,varname)
1462 
1463  if (mpl%msv%isnot(rank)) then
1464  ! Check required dimension index
1465  if ((dimindex<1).or.(dimindex>rank)) call mpl%abort('netcdf_inquire_var_dim_size','wrong dimension index')
1466 
1467  ! Allocation
1468  allocate(dimids(rank))
1469 
1470  ! Inquire variable ID
1471  varid = inquire_var(mpl,ncid,varname)
1472 
1473  ! Inquire variable dimensions IDs
1474  call strerror(mpl,'netcdf_inquire_var_dim_size',ncid,nf90_inquire_variable(ncid,varid,dimids=dimids),'variable&
1475 # 1082 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1476  & '//trim(varname))
1477 
1478  ! Inquire required dimension size
1479  call strerror(mpl,'netcdf_inquire_var_dim_size',ncid,nf90_inquire_dimension(ncid,dimids(dimindex),len=dimsize),'variable&
1480 # 1085 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1481  & '//trim(varname))
1482  end if
1483 end if
1484 
1485 ! Probe out
1486 
1487 
1488 end function netcdf_inquire_var_dim_size
1489 
1490 # 1095 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1491 !----------------------------------------------------------------------
1492 ! Subroutine: netcdf_put_var_int_r0
1493 !> Put variable
1494 !----------------------------------------------------------------------
1495 subroutine netcdf_put_var_int_r0(mpl,ncid,varid,var,varstart)
1496 
1497 implicit none
1498 
1499 ! Passed variables
1500 type(mpl_type),intent(inout) :: mpl !< MPI data
1501 integer,intent(in) :: ncid !< File ID
1502 integer,intent(in) :: varid !< Variable ID
1503 integer(kind_int),intent(in) :: var !< Variable
1504 integer,intent(in),optional :: varstart(:) !< Start
1505 
1506 ! Local variable
1507 integer :: rid
1508 
1509 
1510 ! Set name
1511 
1512 
1513 ! Probe in
1514 
1515 
1516 ! Get root ID in registry
1517 rid = registry%get_root_id(mpl,ncid)
1518 
1519 if (mpl%msv%isnot(rid)) then
1520  ! Put variable
1521 # 1133 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1522  if (present(varstart)) then
1523  call strerror(mpl,'netcdf_put_var_int_r0',ncid,nf90_put_var(ncid,varid,var,varstart),'variable',varid)
1524  else
1525  call strerror(mpl,'netcdf_put_var_int_r0',ncid,nf90_put_var(ncid,varid,var),'variable',varid)
1526  end if
1527 # 1139 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1528 end if
1529 
1530 ! Probe out
1531 
1532 
1533 end subroutine netcdf_put_var_int_r0
1534 # 1095 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1535 !----------------------------------------------------------------------
1536 ! Subroutine: netcdf_put_var_real_r0
1537 !> Put variable
1538 !----------------------------------------------------------------------
1539 subroutine netcdf_put_var_real_r0(mpl,ncid,varid,var,varstart)
1540 
1541 implicit none
1542 
1543 ! Passed variables
1544 type(mpl_type),intent(inout) :: mpl !< MPI data
1545 integer,intent(in) :: ncid !< File ID
1546 integer,intent(in) :: varid !< Variable ID
1547 real(kind_real),intent(in) :: var !< Variable
1548 integer,intent(in),optional :: varstart(:) !< Start
1549 
1550 ! Local variable
1551 integer :: rid
1552 
1553 
1554 ! Set name
1555 
1556 
1557 ! Probe in
1558 
1559 
1560 ! Get root ID in registry
1561 rid = registry%get_root_id(mpl,ncid)
1562 
1563 if (mpl%msv%isnot(rid)) then
1564  ! Put variable
1565 # 1133 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1566  if (present(varstart)) then
1567  call strerror(mpl,'netcdf_put_var_real_r0',ncid,nf90_put_var(ncid,varid,var,varstart),'variable',varid)
1568  else
1569  call strerror(mpl,'netcdf_put_var_real_r0',ncid,nf90_put_var(ncid,varid,var),'variable',varid)
1570  end if
1571 # 1139 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1572 end if
1573 
1574 ! Probe out
1575 
1576 
1577 end subroutine netcdf_put_var_real_r0
1578 # 1095 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1579 !----------------------------------------------------------------------
1580 ! Subroutine: netcdf_put_var_logical_r0
1581 !> Put variable
1582 !----------------------------------------------------------------------
1583 subroutine netcdf_put_var_logical_r0(mpl,ncid,varid,var,varstart)
1584 
1585 implicit none
1586 
1587 ! Passed variables
1588 type(mpl_type),intent(inout) :: mpl !< MPI data
1589 integer,intent(in) :: ncid !< File ID
1590 integer,intent(in) :: varid !< Variable ID
1591 logical,intent(in) :: var !< Variable
1592 integer,intent(in),optional :: varstart(:) !< Start
1593 
1594 ! Local variable
1595 integer :: rid
1596  integer :: varint
1597 
1598 ! Set name
1599 
1600 
1601 ! Probe in
1602 
1603 
1604 ! Get root ID in registry
1605 rid = registry%get_root_id(mpl,ncid)
1606 
1607 if (mpl%msv%isnot(rid)) then
1608  ! Put variable
1609 # 1126 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1610  call convert_l2i(var,varint)
1611  if (present(varstart)) then
1612  call strerror(mpl,'netcdf_put_var_logical_r0',ncid,nf90_put_var(ncid,varid,varint,varstart),'variable',varid)
1613  else
1614  call strerror(mpl,'netcdf_put_var_logical_r0',ncid,nf90_put_var(ncid,varid,varint),'variable',varid)
1615  end if
1616 # 1139 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1617 end if
1618 
1619 ! Probe out
1620 
1621 
1622 end subroutine netcdf_put_var_logical_r0
1623 # 1146 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1624 
1625 # 1148 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1626 # 1149 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1627 !----------------------------------------------------------------------
1628 ! Subroutine: netcdf_put_var_int_r1
1629 !> Put variable
1630 !----------------------------------------------------------------------
1631 subroutine netcdf_put_var_int_r1(mpl,ncid,varid,var,varstart,varcount)
1632 
1633 implicit none
1634 
1635 ! Passed variables
1636 type(mpl_type),intent(inout) :: mpl !< MPI data
1637 integer,intent(in) :: ncid !< File ID
1638 integer,intent(in) :: varid !< Variable ID
1639 integer(kind_int),intent(in) :: var(:) !< Variable
1640 integer,intent(in),optional :: varstart(:) !< Start
1641 integer,intent(in),optional :: varcount(:) !< Count
1642 
1643 ! Local variable
1644 integer :: rid
1645 # 1171 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1646 
1647 ! Set name
1648 
1649 
1650 ! Probe in
1651 
1652 
1653 ! Get root ID in registry
1654 rid = registry%get_root_id(mpl,ncid)
1655 
1656 if (mpl%msv%isnot(rid)) then
1657  ! Put variable
1658 # 1199 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1659  if (present(varstart).and.present(varcount)) then
1660  call strerror(mpl,'netcdf_put_var_int_r1',ncid,nf90_put_var(ncid,varid,var,varstart,varcount),'variable',varid)
1661  elseif (present(varstart)) then
1662  call strerror(mpl,'netcdf_put_var_int_r1',ncid,nf90_put_var(ncid,varid,var,varstart),'variable',varid)
1663  else
1664  call strerror(mpl,'netcdf_put_var_int_r1',ncid,nf90_put_var(ncid,varid,var),'variable',varid)
1665  end if
1666 # 1207 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1667 end if
1668 
1669 ! Probe out
1670 
1671 
1672 end subroutine netcdf_put_var_int_r1
1673 # 1149 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1674 !----------------------------------------------------------------------
1675 ! Subroutine: netcdf_put_var_real_r1
1676 !> Put variable
1677 !----------------------------------------------------------------------
1678 subroutine netcdf_put_var_real_r1(mpl,ncid,varid,var,varstart,varcount)
1679 
1680 implicit none
1681 
1682 ! Passed variables
1683 type(mpl_type),intent(inout) :: mpl !< MPI data
1684 integer,intent(in) :: ncid !< File ID
1685 integer,intent(in) :: varid !< Variable ID
1686 real(kind_real),intent(in) :: var(:) !< Variable
1687 integer,intent(in),optional :: varstart(:) !< Start
1688 integer,intent(in),optional :: varcount(:) !< Count
1689 
1690 ! Local variable
1691 integer :: rid
1692 # 1171 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1693 
1694 ! Set name
1695 
1696 
1697 ! Probe in
1698 
1699 
1700 ! Get root ID in registry
1701 rid = registry%get_root_id(mpl,ncid)
1702 
1703 if (mpl%msv%isnot(rid)) then
1704  ! Put variable
1705 # 1199 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1706  if (present(varstart).and.present(varcount)) then
1707  call strerror(mpl,'netcdf_put_var_real_r1',ncid,nf90_put_var(ncid,varid,var,varstart,varcount),'variable',varid)
1708  elseif (present(varstart)) then
1709  call strerror(mpl,'netcdf_put_var_real_r1',ncid,nf90_put_var(ncid,varid,var,varstart),'variable',varid)
1710  else
1711  call strerror(mpl,'netcdf_put_var_real_r1',ncid,nf90_put_var(ncid,varid,var),'variable',varid)
1712  end if
1713 # 1207 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1714 end if
1715 
1716 ! Probe out
1717 
1718 
1719 end subroutine netcdf_put_var_real_r1
1720 # 1149 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1721 !----------------------------------------------------------------------
1722 ! Subroutine: netcdf_put_var_logical_r1
1723 !> Put variable
1724 !----------------------------------------------------------------------
1725 subroutine netcdf_put_var_logical_r1(mpl,ncid,varid,var,varstart,varcount)
1726 
1727 implicit none
1728 
1729 ! Passed variables
1730 type(mpl_type),intent(inout) :: mpl !< MPI data
1731 integer,intent(in) :: ncid !< File ID
1732 integer,intent(in) :: varid !< Variable ID
1733 logical,intent(in) :: var(:) !< Variable
1734 integer,intent(in),optional :: varstart(:) !< Start
1735 integer,intent(in),optional :: varcount(:) !< Count
1736 
1737 ! Local variable
1738 integer :: rid
1739 # 1168 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1740  integer :: shp(1)
1741  integer,allocatable :: varint(:)
1742 # 1171 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1743 
1744 ! Set name
1745 
1746 
1747 ! Probe in
1748 
1749 
1750 ! Get root ID in registry
1751 rid = registry%get_root_id(mpl,ncid)
1752 
1753 if (mpl%msv%isnot(rid)) then
1754  ! Put variable
1755 # 1184 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1756  shp = shape(var)
1757  allocate(varint(shp(1)))
1758 
1759 
1760 
1761  call convert_l2i(var,varint)
1762  if (present(varstart).and.present(varcount)) then
1763  call strerror(mpl,'netcdf_put_var_logical_r1',ncid,nf90_put_var(ncid,varid,varint,varstart,varcount),'variable',varid)
1764  elseif (present(varstart)) then
1765  call strerror(mpl,'netcdf_put_var_logical_r1',ncid,nf90_put_var(ncid,varid,varint,varstart),'variable',varid)
1766  else
1767  call strerror(mpl,'netcdf_put_var_logical_r1',ncid,nf90_put_var(ncid,varid,varint),'variable',varid)
1768  end if
1769  deallocate(varint)
1770 # 1207 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1771 end if
1772 
1773 ! Probe out
1774 
1775 
1776 end subroutine netcdf_put_var_logical_r1
1777 # 1214 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1778 # 1148 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1779 # 1149 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1780 !----------------------------------------------------------------------
1781 ! Subroutine: netcdf_put_var_int_r2
1782 !> Put variable
1783 !----------------------------------------------------------------------
1784 subroutine netcdf_put_var_int_r2(mpl,ncid,varid,var,varstart,varcount)
1785 
1786 implicit none
1787 
1788 ! Passed variables
1789 type(mpl_type),intent(inout) :: mpl !< MPI data
1790 integer,intent(in) :: ncid !< File ID
1791 integer,intent(in) :: varid !< Variable ID
1792 integer(kind_int),intent(in) :: var(:,:) !< Variable
1793 integer,intent(in),optional :: varstart(:) !< Start
1794 integer,intent(in),optional :: varcount(:) !< Count
1795 
1796 ! Local variable
1797 integer :: rid
1798 # 1171 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1799 
1800 ! Set name
1801 
1802 
1803 ! Probe in
1804 
1805 
1806 ! Get root ID in registry
1807 rid = registry%get_root_id(mpl,ncid)
1808 
1809 if (mpl%msv%isnot(rid)) then
1810  ! Put variable
1811 # 1199 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1812  if (present(varstart).and.present(varcount)) then
1813  call strerror(mpl,'netcdf_put_var_int_r2',ncid,nf90_put_var(ncid,varid,var,varstart,varcount),'variable',varid)
1814  elseif (present(varstart)) then
1815  call strerror(mpl,'netcdf_put_var_int_r2',ncid,nf90_put_var(ncid,varid,var,varstart),'variable',varid)
1816  else
1817  call strerror(mpl,'netcdf_put_var_int_r2',ncid,nf90_put_var(ncid,varid,var),'variable',varid)
1818  end if
1819 # 1207 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1820 end if
1821 
1822 ! Probe out
1823 
1824 
1825 end subroutine netcdf_put_var_int_r2
1826 # 1149 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1827 !----------------------------------------------------------------------
1828 ! Subroutine: netcdf_put_var_real_r2
1829 !> Put variable
1830 !----------------------------------------------------------------------
1831 subroutine netcdf_put_var_real_r2(mpl,ncid,varid,var,varstart,varcount)
1832 
1833 implicit none
1834 
1835 ! Passed variables
1836 type(mpl_type),intent(inout) :: mpl !< MPI data
1837 integer,intent(in) :: ncid !< File ID
1838 integer,intent(in) :: varid !< Variable ID
1839 real(kind_real),intent(in) :: var(:,:) !< Variable
1840 integer,intent(in),optional :: varstart(:) !< Start
1841 integer,intent(in),optional :: varcount(:) !< Count
1842 
1843 ! Local variable
1844 integer :: rid
1845 # 1171 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1846 
1847 ! Set name
1848 
1849 
1850 ! Probe in
1851 
1852 
1853 ! Get root ID in registry
1854 rid = registry%get_root_id(mpl,ncid)
1855 
1856 if (mpl%msv%isnot(rid)) then
1857  ! Put variable
1858 # 1199 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1859  if (present(varstart).and.present(varcount)) then
1860  call strerror(mpl,'netcdf_put_var_real_r2',ncid,nf90_put_var(ncid,varid,var,varstart,varcount),'variable',varid)
1861  elseif (present(varstart)) then
1862  call strerror(mpl,'netcdf_put_var_real_r2',ncid,nf90_put_var(ncid,varid,var,varstart),'variable',varid)
1863  else
1864  call strerror(mpl,'netcdf_put_var_real_r2',ncid,nf90_put_var(ncid,varid,var),'variable',varid)
1865  end if
1866 # 1207 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1867 end if
1868 
1869 ! Probe out
1870 
1871 
1872 end subroutine netcdf_put_var_real_r2
1873 # 1149 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1874 !----------------------------------------------------------------------
1875 ! Subroutine: netcdf_put_var_logical_r2
1876 !> Put variable
1877 !----------------------------------------------------------------------
1878 subroutine netcdf_put_var_logical_r2(mpl,ncid,varid,var,varstart,varcount)
1879 
1880 implicit none
1881 
1882 ! Passed variables
1883 type(mpl_type),intent(inout) :: mpl !< MPI data
1884 integer,intent(in) :: ncid !< File ID
1885 integer,intent(in) :: varid !< Variable ID
1886 logical,intent(in) :: var(:,:) !< Variable
1887 integer,intent(in),optional :: varstart(:) !< Start
1888 integer,intent(in),optional :: varcount(:) !< Count
1889 
1890 ! Local variable
1891 integer :: rid
1892 # 1168 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1893  integer :: shp(2)
1894  integer,allocatable :: varint(:,:)
1895 # 1171 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1896 
1897 ! Set name
1898 
1899 
1900 ! Probe in
1901 
1902 
1903 ! Get root ID in registry
1904 rid = registry%get_root_id(mpl,ncid)
1905 
1906 if (mpl%msv%isnot(rid)) then
1907  ! Put variable
1908 # 1184 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1909  shp = shape(var)
1910 
1911  allocate(varint(shp(1),shp(2)))
1912 
1913 
1914  call convert_l2i(var,varint)
1915  if (present(varstart).and.present(varcount)) then
1916  call strerror(mpl,'netcdf_put_var_logical_r2',ncid,nf90_put_var(ncid,varid,varint,varstart,varcount),'variable',varid)
1917  elseif (present(varstart)) then
1918  call strerror(mpl,'netcdf_put_var_logical_r2',ncid,nf90_put_var(ncid,varid,varint,varstart),'variable',varid)
1919  else
1920  call strerror(mpl,'netcdf_put_var_logical_r2',ncid,nf90_put_var(ncid,varid,varint),'variable',varid)
1921  end if
1922  deallocate(varint)
1923 # 1207 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1924 end if
1925 
1926 ! Probe out
1927 
1928 
1929 end subroutine netcdf_put_var_logical_r2
1930 # 1214 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1931 # 1148 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1932 # 1149 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1933 !----------------------------------------------------------------------
1934 ! Subroutine: netcdf_put_var_int_r3
1935 !> Put variable
1936 !----------------------------------------------------------------------
1937 subroutine netcdf_put_var_int_r3(mpl,ncid,varid,var,varstart,varcount)
1938 
1939 implicit none
1940 
1941 ! Passed variables
1942 type(mpl_type),intent(inout) :: mpl !< MPI data
1943 integer,intent(in) :: ncid !< File ID
1944 integer,intent(in) :: varid !< Variable ID
1945 integer(kind_int),intent(in) :: var(:,:,:) !< Variable
1946 integer,intent(in),optional :: varstart(:) !< Start
1947 integer,intent(in),optional :: varcount(:) !< Count
1948 
1949 ! Local variable
1950 integer :: rid
1951 # 1171 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1952 
1953 ! Set name
1954 
1955 
1956 ! Probe in
1957 
1958 
1959 ! Get root ID in registry
1960 rid = registry%get_root_id(mpl,ncid)
1961 
1962 if (mpl%msv%isnot(rid)) then
1963  ! Put variable
1964 # 1199 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1965  if (present(varstart).and.present(varcount)) then
1966  call strerror(mpl,'netcdf_put_var_int_r3',ncid,nf90_put_var(ncid,varid,var,varstart,varcount),'variable',varid)
1967  elseif (present(varstart)) then
1968  call strerror(mpl,'netcdf_put_var_int_r3',ncid,nf90_put_var(ncid,varid,var,varstart),'variable',varid)
1969  else
1970  call strerror(mpl,'netcdf_put_var_int_r3',ncid,nf90_put_var(ncid,varid,var),'variable',varid)
1971  end if
1972 # 1207 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1973 end if
1974 
1975 ! Probe out
1976 
1977 
1978 end subroutine netcdf_put_var_int_r3
1979 # 1149 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1980 !----------------------------------------------------------------------
1981 ! Subroutine: netcdf_put_var_real_r3
1982 !> Put variable
1983 !----------------------------------------------------------------------
1984 subroutine netcdf_put_var_real_r3(mpl,ncid,varid,var,varstart,varcount)
1985 
1986 implicit none
1987 
1988 ! Passed variables
1989 type(mpl_type),intent(inout) :: mpl !< MPI data
1990 integer,intent(in) :: ncid !< File ID
1991 integer,intent(in) :: varid !< Variable ID
1992 real(kind_real),intent(in) :: var(:,:,:) !< Variable
1993 integer,intent(in),optional :: varstart(:) !< Start
1994 integer,intent(in),optional :: varcount(:) !< Count
1995 
1996 ! Local variable
1997 integer :: rid
1998 # 1171 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
1999 
2000 ! Set name
2001 
2002 
2003 ! Probe in
2004 
2005 
2006 ! Get root ID in registry
2007 rid = registry%get_root_id(mpl,ncid)
2008 
2009 if (mpl%msv%isnot(rid)) then
2010  ! Put variable
2011 # 1199 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2012  if (present(varstart).and.present(varcount)) then
2013  call strerror(mpl,'netcdf_put_var_real_r3',ncid,nf90_put_var(ncid,varid,var,varstart,varcount),'variable',varid)
2014  elseif (present(varstart)) then
2015  call strerror(mpl,'netcdf_put_var_real_r3',ncid,nf90_put_var(ncid,varid,var,varstart),'variable',varid)
2016  else
2017  call strerror(mpl,'netcdf_put_var_real_r3',ncid,nf90_put_var(ncid,varid,var),'variable',varid)
2018  end if
2019 # 1207 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2020 end if
2021 
2022 ! Probe out
2023 
2024 
2025 end subroutine netcdf_put_var_real_r3
2026 # 1149 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2027 !----------------------------------------------------------------------
2028 ! Subroutine: netcdf_put_var_logical_r3
2029 !> Put variable
2030 !----------------------------------------------------------------------
2031 subroutine netcdf_put_var_logical_r3(mpl,ncid,varid,var,varstart,varcount)
2032 
2033 implicit none
2034 
2035 ! Passed variables
2036 type(mpl_type),intent(inout) :: mpl !< MPI data
2037 integer,intent(in) :: ncid !< File ID
2038 integer,intent(in) :: varid !< Variable ID
2039 logical,intent(in) :: var(:,:,:) !< Variable
2040 integer,intent(in),optional :: varstart(:) !< Start
2041 integer,intent(in),optional :: varcount(:) !< Count
2042 
2043 ! Local variable
2044 integer :: rid
2045 # 1168 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2046  integer :: shp(3)
2047  integer,allocatable :: varint(:,:,:)
2048 # 1171 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2049 
2050 ! Set name
2051 
2052 
2053 ! Probe in
2054 
2055 
2056 ! Get root ID in registry
2057 rid = registry%get_root_id(mpl,ncid)
2058 
2059 if (mpl%msv%isnot(rid)) then
2060  ! Put variable
2061 # 1184 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2062  shp = shape(var)
2063 
2064 
2065  allocate(varint(shp(1),shp(2),shp(3)))
2066 
2067  call convert_l2i(var,varint)
2068  if (present(varstart).and.present(varcount)) then
2069  call strerror(mpl,'netcdf_put_var_logical_r3',ncid,nf90_put_var(ncid,varid,varint,varstart,varcount),'variable',varid)
2070  elseif (present(varstart)) then
2071  call strerror(mpl,'netcdf_put_var_logical_r3',ncid,nf90_put_var(ncid,varid,varint,varstart),'variable',varid)
2072  else
2073  call strerror(mpl,'netcdf_put_var_logical_r3',ncid,nf90_put_var(ncid,varid,varint),'variable',varid)
2074  end if
2075  deallocate(varint)
2076 # 1207 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2077 end if
2078 
2079 ! Probe out
2080 
2081 
2082 end subroutine netcdf_put_var_logical_r3
2083 # 1214 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2084 # 1148 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2085 # 1149 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2086 !----------------------------------------------------------------------
2087 ! Subroutine: netcdf_put_var_int_r4
2088 !> Put variable
2089 !----------------------------------------------------------------------
2090 subroutine netcdf_put_var_int_r4(mpl,ncid,varid,var,varstart,varcount)
2091 
2092 implicit none
2093 
2094 ! Passed variables
2095 type(mpl_type),intent(inout) :: mpl !< MPI data
2096 integer,intent(in) :: ncid !< File ID
2097 integer,intent(in) :: varid !< Variable ID
2098 integer(kind_int),intent(in) :: var(:,:,:,:) !< Variable
2099 integer,intent(in),optional :: varstart(:) !< Start
2100 integer,intent(in),optional :: varcount(:) !< Count
2101 
2102 ! Local variable
2103 integer :: rid
2104 # 1171 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2105 
2106 ! Set name
2107 
2108 
2109 ! Probe in
2110 
2111 
2112 ! Get root ID in registry
2113 rid = registry%get_root_id(mpl,ncid)
2114 
2115 if (mpl%msv%isnot(rid)) then
2116  ! Put variable
2117 # 1199 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2118  if (present(varstart).and.present(varcount)) then
2119  call strerror(mpl,'netcdf_put_var_int_r4',ncid,nf90_put_var(ncid,varid,var,varstart,varcount),'variable',varid)
2120  elseif (present(varstart)) then
2121  call strerror(mpl,'netcdf_put_var_int_r4',ncid,nf90_put_var(ncid,varid,var,varstart),'variable',varid)
2122  else
2123  call strerror(mpl,'netcdf_put_var_int_r4',ncid,nf90_put_var(ncid,varid,var),'variable',varid)
2124  end if
2125 # 1207 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2126 end if
2127 
2128 ! Probe out
2129 
2130 
2131 end subroutine netcdf_put_var_int_r4
2132 # 1149 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2133 !----------------------------------------------------------------------
2134 ! Subroutine: netcdf_put_var_real_r4
2135 !> Put variable
2136 !----------------------------------------------------------------------
2137 subroutine netcdf_put_var_real_r4(mpl,ncid,varid,var,varstart,varcount)
2138 
2139 implicit none
2140 
2141 ! Passed variables
2142 type(mpl_type),intent(inout) :: mpl !< MPI data
2143 integer,intent(in) :: ncid !< File ID
2144 integer,intent(in) :: varid !< Variable ID
2145 real(kind_real),intent(in) :: var(:,:,:,:) !< Variable
2146 integer,intent(in),optional :: varstart(:) !< Start
2147 integer,intent(in),optional :: varcount(:) !< Count
2148 
2149 ! Local variable
2150 integer :: rid
2151 # 1171 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2152 
2153 ! Set name
2154 
2155 
2156 ! Probe in
2157 
2158 
2159 ! Get root ID in registry
2160 rid = registry%get_root_id(mpl,ncid)
2161 
2162 if (mpl%msv%isnot(rid)) then
2163  ! Put variable
2164 # 1199 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2165  if (present(varstart).and.present(varcount)) then
2166  call strerror(mpl,'netcdf_put_var_real_r4',ncid,nf90_put_var(ncid,varid,var,varstart,varcount),'variable',varid)
2167  elseif (present(varstart)) then
2168  call strerror(mpl,'netcdf_put_var_real_r4',ncid,nf90_put_var(ncid,varid,var,varstart),'variable',varid)
2169  else
2170  call strerror(mpl,'netcdf_put_var_real_r4',ncid,nf90_put_var(ncid,varid,var),'variable',varid)
2171  end if
2172 # 1207 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2173 end if
2174 
2175 ! Probe out
2176 
2177 
2178 end subroutine netcdf_put_var_real_r4
2179 # 1149 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2180 !----------------------------------------------------------------------
2181 ! Subroutine: netcdf_put_var_logical_r4
2182 !> Put variable
2183 !----------------------------------------------------------------------
2184 subroutine netcdf_put_var_logical_r4(mpl,ncid,varid,var,varstart,varcount)
2185 
2186 implicit none
2187 
2188 ! Passed variables
2189 type(mpl_type),intent(inout) :: mpl !< MPI data
2190 integer,intent(in) :: ncid !< File ID
2191 integer,intent(in) :: varid !< Variable ID
2192 logical,intent(in) :: var(:,:,:,:) !< Variable
2193 integer,intent(in),optional :: varstart(:) !< Start
2194 integer,intent(in),optional :: varcount(:) !< Count
2195 
2196 ! Local variable
2197 integer :: rid
2198 # 1168 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2199  integer :: shp(4)
2200  integer,allocatable :: varint(:,:,:,:)
2201 # 1171 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2202 
2203 ! Set name
2204 
2205 
2206 ! Probe in
2207 
2208 
2209 ! Get root ID in registry
2210 rid = registry%get_root_id(mpl,ncid)
2211 
2212 if (mpl%msv%isnot(rid)) then
2213  ! Put variable
2214 # 1184 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2215  shp = shape(var)
2216 
2217 
2218 
2219  allocate(varint(shp(1),shp(2),shp(3),shp(4)))
2220  call convert_l2i(var,varint)
2221  if (present(varstart).and.present(varcount)) then
2222  call strerror(mpl,'netcdf_put_var_logical_r4',ncid,nf90_put_var(ncid,varid,varint,varstart,varcount),'variable',varid)
2223  elseif (present(varstart)) then
2224  call strerror(mpl,'netcdf_put_var_logical_r4',ncid,nf90_put_var(ncid,varid,varint,varstart),'variable',varid)
2225  else
2226  call strerror(mpl,'netcdf_put_var_logical_r4',ncid,nf90_put_var(ncid,varid,varint),'variable',varid)
2227  end if
2228  deallocate(varint)
2229 # 1207 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2230 end if
2231 
2232 ! Probe out
2233 
2234 
2235 end subroutine netcdf_put_var_logical_r4
2236 # 1214 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2237 # 1215 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2238 
2239 # 1217 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2240 !----------------------------------------------------------------------
2241 ! Subroutine: netcdf_get_var_byte_r0
2242 !> Get variable
2243 !----------------------------------------------------------------------
2244 subroutine netcdf_get_var_byte_r0(mpl,ncid,varid,var,varstart)
2245 
2246 implicit none
2247 
2248 ! Passed variables
2249 type(mpl_type),intent(inout) :: mpl !< MPI data
2250 integer,intent(in) :: ncid !< File ID
2251 integer,intent(in) :: varid !< Variable ID
2252 integer(kind_signed_char),intent(out) :: var !< Variable
2253 integer,intent(in),optional :: varstart(:) !< Start
2254 
2255 ! Local variable
2256 integer :: rid
2257 
2258 
2259 ! Set name
2260 
2261 
2262 ! Probe in
2263 
2264 
2265 ! Get root ID in registry
2266 rid = registry%get_root_id(mpl,ncid)
2267 
2268 if (mpl%msv%isnot(rid)) then
2269  ! Get variable
2270 # 1255 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2271  if (present(varstart)) then
2272  call strerror(mpl,'netcdf_get_var_byte_r0',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2273  else
2274  call strerror(mpl,'netcdf_get_var_byte_r0',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2275  end if
2276 # 1261 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2277 end if
2278 
2279 ! Probe out
2280 
2281 
2282 end subroutine netcdf_get_var_byte_r0
2283 # 1217 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2284 !----------------------------------------------------------------------
2285 ! Subroutine: netcdf_get_var_int_r0
2286 !> Get variable
2287 !----------------------------------------------------------------------
2288 subroutine netcdf_get_var_int_r0(mpl,ncid,varid,var,varstart)
2289 
2290 implicit none
2291 
2292 ! Passed variables
2293 type(mpl_type),intent(inout) :: mpl !< MPI data
2294 integer,intent(in) :: ncid !< File ID
2295 integer,intent(in) :: varid !< Variable ID
2296 integer(kind_int),intent(out) :: var !< Variable
2297 integer,intent(in),optional :: varstart(:) !< Start
2298 
2299 ! Local variable
2300 integer :: rid
2301 
2302 
2303 ! Set name
2304 
2305 
2306 ! Probe in
2307 
2308 
2309 ! Get root ID in registry
2310 rid = registry%get_root_id(mpl,ncid)
2311 
2312 if (mpl%msv%isnot(rid)) then
2313  ! Get variable
2314 # 1255 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2315  if (present(varstart)) then
2316  call strerror(mpl,'netcdf_get_var_int_r0',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2317  else
2318  call strerror(mpl,'netcdf_get_var_int_r0',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2319  end if
2320 # 1261 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2321 end if
2322 
2323 ! Probe out
2324 
2325 
2326 end subroutine netcdf_get_var_int_r0
2327 # 1217 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2328 !----------------------------------------------------------------------
2329 ! Subroutine: netcdf_get_var_float_r0
2330 !> Get variable
2331 !----------------------------------------------------------------------
2332 subroutine netcdf_get_var_float_r0(mpl,ncid,varid,var,varstart)
2333 
2334 implicit none
2335 
2336 ! Passed variables
2337 type(mpl_type),intent(inout) :: mpl !< MPI data
2338 integer,intent(in) :: ncid !< File ID
2339 integer,intent(in) :: varid !< Variable ID
2340 real(kind_float),intent(out) :: var !< Variable
2341 integer,intent(in),optional :: varstart(:) !< Start
2342 
2343 ! Local variable
2344 integer :: rid
2345 
2346 
2347 ! Set name
2348 
2349 
2350 ! Probe in
2351 
2352 
2353 ! Get root ID in registry
2354 rid = registry%get_root_id(mpl,ncid)
2355 
2356 if (mpl%msv%isnot(rid)) then
2357  ! Get variable
2358 # 1255 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2359  if (present(varstart)) then
2360  call strerror(mpl,'netcdf_get_var_float_r0',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2361  else
2362  call strerror(mpl,'netcdf_get_var_float_r0',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2363  end if
2364 # 1261 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2365 end if
2366 
2367 ! Probe out
2368 
2369 
2370 end subroutine netcdf_get_var_float_r0
2371 # 1217 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2372 !----------------------------------------------------------------------
2373 ! Subroutine: netcdf_get_var_real_r0
2374 !> Get variable
2375 !----------------------------------------------------------------------
2376 subroutine netcdf_get_var_real_r0(mpl,ncid,varid,var,varstart)
2377 
2378 implicit none
2379 
2380 ! Passed variables
2381 type(mpl_type),intent(inout) :: mpl !< MPI data
2382 integer,intent(in) :: ncid !< File ID
2383 integer,intent(in) :: varid !< Variable ID
2384 real(kind_real),intent(out) :: var !< Variable
2385 integer,intent(in),optional :: varstart(:) !< Start
2386 
2387 ! Local variable
2388 integer :: rid
2389 
2390 
2391 ! Set name
2392 
2393 
2394 ! Probe in
2395 
2396 
2397 ! Get root ID in registry
2398 rid = registry%get_root_id(mpl,ncid)
2399 
2400 if (mpl%msv%isnot(rid)) then
2401  ! Get variable
2402 # 1255 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2403  if (present(varstart)) then
2404  call strerror(mpl,'netcdf_get_var_real_r0',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2405  else
2406  call strerror(mpl,'netcdf_get_var_real_r0',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2407  end if
2408 # 1261 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2409 end if
2410 
2411 ! Probe out
2412 
2413 
2414 end subroutine netcdf_get_var_real_r0
2415 # 1217 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2416 !----------------------------------------------------------------------
2417 ! Subroutine: netcdf_get_var_logical_r0
2418 !> Get variable
2419 !----------------------------------------------------------------------
2420 subroutine netcdf_get_var_logical_r0(mpl,ncid,varid,var,varstart)
2421 
2422 implicit none
2423 
2424 ! Passed variables
2425 type(mpl_type),intent(inout) :: mpl !< MPI data
2426 integer,intent(in) :: ncid !< File ID
2427 integer,intent(in) :: varid !< Variable ID
2428 logical,intent(out) :: var !< Variable
2429 integer,intent(in),optional :: varstart(:) !< Start
2430 
2431 ! Local variable
2432 integer :: rid
2433  integer :: varint
2434 
2435 ! Set name
2436 
2437 
2438 ! Probe in
2439 
2440 
2441 ! Get root ID in registry
2442 rid = registry%get_root_id(mpl,ncid)
2443 
2444 if (mpl%msv%isnot(rid)) then
2445  ! Get variable
2446 # 1248 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2447  if (present(varstart)) then
2448  call strerror(mpl,'netcdf_get_var_logical_r0',ncid,nf90_get_var(ncid,varid,varint,varstart),'variable',varid)
2449  else
2450  call strerror(mpl,'netcdf_get_var_logical_r0',ncid,nf90_get_var(ncid,varid,varint),'variable',varid)
2451  end if
2452  call convert_i2l(mpl,varint,var)
2453 # 1261 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2454 end if
2455 
2456 ! Probe out
2457 
2458 
2459 end subroutine netcdf_get_var_logical_r0
2460 # 1268 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2461 
2462 # 1270 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2463 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2464 !----------------------------------------------------------------------
2465 ! Subroutine: netcdf_get_var_byte_r1
2466 !> Get variable
2467 !----------------------------------------------------------------------
2468 subroutine netcdf_get_var_byte_r1(mpl,ncid,varid,var,varstart,varcount)
2469 
2470 implicit none
2471 
2472 ! Passed variables
2473 type(mpl_type),intent(inout) :: mpl !< MPI data
2474 integer,intent(in) :: ncid !< File ID
2475 integer,intent(in) :: varid !< Variable ID
2476 integer(kind_signed_char),intent(out) :: var(:) !< Variable
2477 integer,intent(in),optional :: varstart(:) !< Start
2478 integer,intent(in),optional :: varcount(:) !< Count
2479 
2480 ! Local variable
2481 integer :: rid
2482 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2483 
2484 ! Set name
2485 
2486 
2487 ! Probe in
2488 
2489 
2490 ! Get root ID in registry
2491 rid = registry%get_root_id(mpl,ncid)
2492 
2493 if (mpl%msv%isnot(rid)) then
2494  ! Get variable
2495 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2496  if (present(varstart).and.present(varcount)) then
2497  call strerror(mpl,'netcdf_get_var_byte_r1',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
2498  elseif (present(varstart)) then
2499  call strerror(mpl,'netcdf_get_var_byte_r1',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2500  else
2501  call strerror(mpl,'netcdf_get_var_byte_r1',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2502  end if
2503 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2504 end if
2505 
2506 ! Probe out
2507 
2508 
2509 end subroutine netcdf_get_var_byte_r1
2510 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2511 !----------------------------------------------------------------------
2512 ! Subroutine: netcdf_get_var_int_r1
2513 !> Get variable
2514 !----------------------------------------------------------------------
2515 subroutine netcdf_get_var_int_r1(mpl,ncid,varid,var,varstart,varcount)
2516 
2517 implicit none
2518 
2519 ! Passed variables
2520 type(mpl_type),intent(inout) :: mpl !< MPI data
2521 integer,intent(in) :: ncid !< File ID
2522 integer,intent(in) :: varid !< Variable ID
2523 integer(kind_int),intent(out) :: var(:) !< Variable
2524 integer,intent(in),optional :: varstart(:) !< Start
2525 integer,intent(in),optional :: varcount(:) !< Count
2526 
2527 ! Local variable
2528 integer :: rid
2529 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2530 
2531 ! Set name
2532 
2533 
2534 ! Probe in
2535 
2536 
2537 ! Get root ID in registry
2538 rid = registry%get_root_id(mpl,ncid)
2539 
2540 if (mpl%msv%isnot(rid)) then
2541  ! Get variable
2542 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2543  if (present(varstart).and.present(varcount)) then
2544  call strerror(mpl,'netcdf_get_var_int_r1',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
2545  elseif (present(varstart)) then
2546  call strerror(mpl,'netcdf_get_var_int_r1',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2547  else
2548  call strerror(mpl,'netcdf_get_var_int_r1',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2549  end if
2550 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2551 end if
2552 
2553 ! Probe out
2554 
2555 
2556 end subroutine netcdf_get_var_int_r1
2557 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2558 !----------------------------------------------------------------------
2559 ! Subroutine: netcdf_get_var_float_r1
2560 !> Get variable
2561 !----------------------------------------------------------------------
2562 subroutine netcdf_get_var_float_r1(mpl,ncid,varid,var,varstart,varcount)
2563 
2564 implicit none
2565 
2566 ! Passed variables
2567 type(mpl_type),intent(inout) :: mpl !< MPI data
2568 integer,intent(in) :: ncid !< File ID
2569 integer,intent(in) :: varid !< Variable ID
2570 real(kind_float),intent(out) :: var(:) !< Variable
2571 integer,intent(in),optional :: varstart(:) !< Start
2572 integer,intent(in),optional :: varcount(:) !< Count
2573 
2574 ! Local variable
2575 integer :: rid
2576 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2577 
2578 ! Set name
2579 
2580 
2581 ! Probe in
2582 
2583 
2584 ! Get root ID in registry
2585 rid = registry%get_root_id(mpl,ncid)
2586 
2587 if (mpl%msv%isnot(rid)) then
2588  ! Get variable
2589 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2590  if (present(varstart).and.present(varcount)) then
2591  call strerror(mpl,'netcdf_get_var_float_r1',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
2592  elseif (present(varstart)) then
2593  call strerror(mpl,'netcdf_get_var_float_r1',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2594  else
2595  call strerror(mpl,'netcdf_get_var_float_r1',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2596  end if
2597 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2598 end if
2599 
2600 ! Probe out
2601 
2602 
2603 end subroutine netcdf_get_var_float_r1
2604 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2605 !----------------------------------------------------------------------
2606 ! Subroutine: netcdf_get_var_real_r1
2607 !> Get variable
2608 !----------------------------------------------------------------------
2609 subroutine netcdf_get_var_real_r1(mpl,ncid,varid,var,varstart,varcount)
2610 
2611 implicit none
2612 
2613 ! Passed variables
2614 type(mpl_type),intent(inout) :: mpl !< MPI data
2615 integer,intent(in) :: ncid !< File ID
2616 integer,intent(in) :: varid !< Variable ID
2617 real(kind_real),intent(out) :: var(:) !< Variable
2618 integer,intent(in),optional :: varstart(:) !< Start
2619 integer,intent(in),optional :: varcount(:) !< Count
2620 
2621 ! Local variable
2622 integer :: rid
2623 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2624 
2625 ! Set name
2626 
2627 
2628 ! Probe in
2629 
2630 
2631 ! Get root ID in registry
2632 rid = registry%get_root_id(mpl,ncid)
2633 
2634 if (mpl%msv%isnot(rid)) then
2635  ! Get variable
2636 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2637  if (present(varstart).and.present(varcount)) then
2638  call strerror(mpl,'netcdf_get_var_real_r1',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
2639  elseif (present(varstart)) then
2640  call strerror(mpl,'netcdf_get_var_real_r1',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2641  else
2642  call strerror(mpl,'netcdf_get_var_real_r1',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2643  end if
2644 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2645 end if
2646 
2647 ! Probe out
2648 
2649 
2650 end subroutine netcdf_get_var_real_r1
2651 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2652 !----------------------------------------------------------------------
2653 ! Subroutine: netcdf_get_var_logical_r1
2654 !> Get variable
2655 !----------------------------------------------------------------------
2656 subroutine netcdf_get_var_logical_r1(mpl,ncid,varid,var,varstart,varcount)
2657 
2658 implicit none
2659 
2660 ! Passed variables
2661 type(mpl_type),intent(inout) :: mpl !< MPI data
2662 integer,intent(in) :: ncid !< File ID
2663 integer,intent(in) :: varid !< Variable ID
2664 logical,intent(out) :: var(:) !< Variable
2665 integer,intent(in),optional :: varstart(:) !< Start
2666 integer,intent(in),optional :: varcount(:) !< Count
2667 
2668 ! Local variable
2669 integer :: rid
2670 # 1290 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2671  integer :: shp(1)
2672  integer,allocatable :: varint(:)
2673 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2674 
2675 ! Set name
2676 
2677 
2678 ! Probe in
2679 
2680 
2681 ! Get root ID in registry
2682 rid = registry%get_root_id(mpl,ncid)
2683 
2684 if (mpl%msv%isnot(rid)) then
2685  ! Get variable
2686 # 1306 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2687  shp = shape(var)
2688  allocate(varint(shp(1)))
2689 
2690 
2691 
2692  if (present(varstart).and.present(varcount)) then
2693  call strerror(mpl,'netcdf_get_var_logical_r1',ncid,nf90_get_var(ncid,varid,varint,varstart,varcount),'variable',varid)
2694  elseif (present(varstart)) then
2695  call strerror(mpl,'netcdf_get_var_logical_r1',ncid,nf90_get_var(ncid,varid,varint,varstart),'variable',varid)
2696  else
2697  call strerror(mpl,'netcdf_get_var_logical_r1',ncid,nf90_get_var(ncid,varid,varint),'variable',varid)
2698  end if
2699  call convert_i2l(mpl,varint,var)
2700  deallocate(varint)
2701 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2702 end if
2703 
2704 ! Probe out
2705 
2706 
2707 end subroutine netcdf_get_var_logical_r1
2708 # 1336 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2709 # 1270 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2710 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2711 !----------------------------------------------------------------------
2712 ! Subroutine: netcdf_get_var_byte_r2
2713 !> Get variable
2714 !----------------------------------------------------------------------
2715 subroutine netcdf_get_var_byte_r2(mpl,ncid,varid,var,varstart,varcount)
2716 
2717 implicit none
2718 
2719 ! Passed variables
2720 type(mpl_type),intent(inout) :: mpl !< MPI data
2721 integer,intent(in) :: ncid !< File ID
2722 integer,intent(in) :: varid !< Variable ID
2723 integer(kind_signed_char),intent(out) :: var(:,:) !< Variable
2724 integer,intent(in),optional :: varstart(:) !< Start
2725 integer,intent(in),optional :: varcount(:) !< Count
2726 
2727 ! Local variable
2728 integer :: rid
2729 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2730 
2731 ! Set name
2732 
2733 
2734 ! Probe in
2735 
2736 
2737 ! Get root ID in registry
2738 rid = registry%get_root_id(mpl,ncid)
2739 
2740 if (mpl%msv%isnot(rid)) then
2741  ! Get variable
2742 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2743  if (present(varstart).and.present(varcount)) then
2744  call strerror(mpl,'netcdf_get_var_byte_r2',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
2745  elseif (present(varstart)) then
2746  call strerror(mpl,'netcdf_get_var_byte_r2',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2747  else
2748  call strerror(mpl,'netcdf_get_var_byte_r2',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2749  end if
2750 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2751 end if
2752 
2753 ! Probe out
2754 
2755 
2756 end subroutine netcdf_get_var_byte_r2
2757 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2758 !----------------------------------------------------------------------
2759 ! Subroutine: netcdf_get_var_int_r2
2760 !> Get variable
2761 !----------------------------------------------------------------------
2762 subroutine netcdf_get_var_int_r2(mpl,ncid,varid,var,varstart,varcount)
2763 
2764 implicit none
2765 
2766 ! Passed variables
2767 type(mpl_type),intent(inout) :: mpl !< MPI data
2768 integer,intent(in) :: ncid !< File ID
2769 integer,intent(in) :: varid !< Variable ID
2770 integer(kind_int),intent(out) :: var(:,:) !< Variable
2771 integer,intent(in),optional :: varstart(:) !< Start
2772 integer,intent(in),optional :: varcount(:) !< Count
2773 
2774 ! Local variable
2775 integer :: rid
2776 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2777 
2778 ! Set name
2779 
2780 
2781 ! Probe in
2782 
2783 
2784 ! Get root ID in registry
2785 rid = registry%get_root_id(mpl,ncid)
2786 
2787 if (mpl%msv%isnot(rid)) then
2788  ! Get variable
2789 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2790  if (present(varstart).and.present(varcount)) then
2791  call strerror(mpl,'netcdf_get_var_int_r2',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
2792  elseif (present(varstart)) then
2793  call strerror(mpl,'netcdf_get_var_int_r2',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2794  else
2795  call strerror(mpl,'netcdf_get_var_int_r2',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2796  end if
2797 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2798 end if
2799 
2800 ! Probe out
2801 
2802 
2803 end subroutine netcdf_get_var_int_r2
2804 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2805 !----------------------------------------------------------------------
2806 ! Subroutine: netcdf_get_var_float_r2
2807 !> Get variable
2808 !----------------------------------------------------------------------
2809 subroutine netcdf_get_var_float_r2(mpl,ncid,varid,var,varstart,varcount)
2810 
2811 implicit none
2812 
2813 ! Passed variables
2814 type(mpl_type),intent(inout) :: mpl !< MPI data
2815 integer,intent(in) :: ncid !< File ID
2816 integer,intent(in) :: varid !< Variable ID
2817 real(kind_float),intent(out) :: var(:,:) !< Variable
2818 integer,intent(in),optional :: varstart(:) !< Start
2819 integer,intent(in),optional :: varcount(:) !< Count
2820 
2821 ! Local variable
2822 integer :: rid
2823 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2824 
2825 ! Set name
2826 
2827 
2828 ! Probe in
2829 
2830 
2831 ! Get root ID in registry
2832 rid = registry%get_root_id(mpl,ncid)
2833 
2834 if (mpl%msv%isnot(rid)) then
2835  ! Get variable
2836 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2837  if (present(varstart).and.present(varcount)) then
2838  call strerror(mpl,'netcdf_get_var_float_r2',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
2839  elseif (present(varstart)) then
2840  call strerror(mpl,'netcdf_get_var_float_r2',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2841  else
2842  call strerror(mpl,'netcdf_get_var_float_r2',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2843  end if
2844 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2845 end if
2846 
2847 ! Probe out
2848 
2849 
2850 end subroutine netcdf_get_var_float_r2
2851 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2852 !----------------------------------------------------------------------
2853 ! Subroutine: netcdf_get_var_real_r2
2854 !> Get variable
2855 !----------------------------------------------------------------------
2856 subroutine netcdf_get_var_real_r2(mpl,ncid,varid,var,varstart,varcount)
2857 
2858 implicit none
2859 
2860 ! Passed variables
2861 type(mpl_type),intent(inout) :: mpl !< MPI data
2862 integer,intent(in) :: ncid !< File ID
2863 integer,intent(in) :: varid !< Variable ID
2864 real(kind_real),intent(out) :: var(:,:) !< Variable
2865 integer,intent(in),optional :: varstart(:) !< Start
2866 integer,intent(in),optional :: varcount(:) !< Count
2867 
2868 ! Local variable
2869 integer :: rid
2870 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2871 
2872 ! Set name
2873 
2874 
2875 ! Probe in
2876 
2877 
2878 ! Get root ID in registry
2879 rid = registry%get_root_id(mpl,ncid)
2880 
2881 if (mpl%msv%isnot(rid)) then
2882  ! Get variable
2883 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2884  if (present(varstart).and.present(varcount)) then
2885  call strerror(mpl,'netcdf_get_var_real_r2',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
2886  elseif (present(varstart)) then
2887  call strerror(mpl,'netcdf_get_var_real_r2',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2888  else
2889  call strerror(mpl,'netcdf_get_var_real_r2',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2890  end if
2891 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2892 end if
2893 
2894 ! Probe out
2895 
2896 
2897 end subroutine netcdf_get_var_real_r2
2898 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2899 !----------------------------------------------------------------------
2900 ! Subroutine: netcdf_get_var_logical_r2
2901 !> Get variable
2902 !----------------------------------------------------------------------
2903 subroutine netcdf_get_var_logical_r2(mpl,ncid,varid,var,varstart,varcount)
2904 
2905 implicit none
2906 
2907 ! Passed variables
2908 type(mpl_type),intent(inout) :: mpl !< MPI data
2909 integer,intent(in) :: ncid !< File ID
2910 integer,intent(in) :: varid !< Variable ID
2911 logical,intent(out) :: var(:,:) !< Variable
2912 integer,intent(in),optional :: varstart(:) !< Start
2913 integer,intent(in),optional :: varcount(:) !< Count
2914 
2915 ! Local variable
2916 integer :: rid
2917 # 1290 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2918  integer :: shp(2)
2919  integer,allocatable :: varint(:,:)
2920 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2921 
2922 ! Set name
2923 
2924 
2925 ! Probe in
2926 
2927 
2928 ! Get root ID in registry
2929 rid = registry%get_root_id(mpl,ncid)
2930 
2931 if (mpl%msv%isnot(rid)) then
2932  ! Get variable
2933 # 1306 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2934  shp = shape(var)
2935 
2936  allocate(varint(shp(1),shp(2)))
2937 
2938 
2939  if (present(varstart).and.present(varcount)) then
2940  call strerror(mpl,'netcdf_get_var_logical_r2',ncid,nf90_get_var(ncid,varid,varint,varstart,varcount),'variable',varid)
2941  elseif (present(varstart)) then
2942  call strerror(mpl,'netcdf_get_var_logical_r2',ncid,nf90_get_var(ncid,varid,varint,varstart),'variable',varid)
2943  else
2944  call strerror(mpl,'netcdf_get_var_logical_r2',ncid,nf90_get_var(ncid,varid,varint),'variable',varid)
2945  end if
2946  call convert_i2l(mpl,varint,var)
2947  deallocate(varint)
2948 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2949 end if
2950 
2951 ! Probe out
2952 
2953 
2954 end subroutine netcdf_get_var_logical_r2
2955 # 1336 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2956 # 1270 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2957 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2958 !----------------------------------------------------------------------
2959 ! Subroutine: netcdf_get_var_byte_r3
2960 !> Get variable
2961 !----------------------------------------------------------------------
2962 subroutine netcdf_get_var_byte_r3(mpl,ncid,varid,var,varstart,varcount)
2963 
2964 implicit none
2965 
2966 ! Passed variables
2967 type(mpl_type),intent(inout) :: mpl !< MPI data
2968 integer,intent(in) :: ncid !< File ID
2969 integer,intent(in) :: varid !< Variable ID
2970 integer(kind_signed_char),intent(out) :: var(:,:,:) !< Variable
2971 integer,intent(in),optional :: varstart(:) !< Start
2972 integer,intent(in),optional :: varcount(:) !< Count
2973 
2974 ! Local variable
2975 integer :: rid
2976 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2977 
2978 ! Set name
2979 
2980 
2981 ! Probe in
2982 
2983 
2984 ! Get root ID in registry
2985 rid = registry%get_root_id(mpl,ncid)
2986 
2987 if (mpl%msv%isnot(rid)) then
2988  ! Get variable
2989 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2990  if (present(varstart).and.present(varcount)) then
2991  call strerror(mpl,'netcdf_get_var_byte_r3',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
2992  elseif (present(varstart)) then
2993  call strerror(mpl,'netcdf_get_var_byte_r3',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
2994  else
2995  call strerror(mpl,'netcdf_get_var_byte_r3',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
2996  end if
2997 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
2998 end if
2999 
3000 ! Probe out
3001 
3002 
3003 end subroutine netcdf_get_var_byte_r3
3004 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3005 !----------------------------------------------------------------------
3006 ! Subroutine: netcdf_get_var_int_r3
3007 !> Get variable
3008 !----------------------------------------------------------------------
3009 subroutine netcdf_get_var_int_r3(mpl,ncid,varid,var,varstart,varcount)
3010 
3011 implicit none
3012 
3013 ! Passed variables
3014 type(mpl_type),intent(inout) :: mpl !< MPI data
3015 integer,intent(in) :: ncid !< File ID
3016 integer,intent(in) :: varid !< Variable ID
3017 integer(kind_int),intent(out) :: var(:,:,:) !< Variable
3018 integer,intent(in),optional :: varstart(:) !< Start
3019 integer,intent(in),optional :: varcount(:) !< Count
3020 
3021 ! Local variable
3022 integer :: rid
3023 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3024 
3025 ! Set name
3026 
3027 
3028 ! Probe in
3029 
3030 
3031 ! Get root ID in registry
3032 rid = registry%get_root_id(mpl,ncid)
3033 
3034 if (mpl%msv%isnot(rid)) then
3035  ! Get variable
3036 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3037  if (present(varstart).and.present(varcount)) then
3038  call strerror(mpl,'netcdf_get_var_int_r3',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
3039  elseif (present(varstart)) then
3040  call strerror(mpl,'netcdf_get_var_int_r3',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
3041  else
3042  call strerror(mpl,'netcdf_get_var_int_r3',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
3043  end if
3044 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3045 end if
3046 
3047 ! Probe out
3048 
3049 
3050 end subroutine netcdf_get_var_int_r3
3051 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3052 !----------------------------------------------------------------------
3053 ! Subroutine: netcdf_get_var_float_r3
3054 !> Get variable
3055 !----------------------------------------------------------------------
3056 subroutine netcdf_get_var_float_r3(mpl,ncid,varid,var,varstart,varcount)
3057 
3058 implicit none
3059 
3060 ! Passed variables
3061 type(mpl_type),intent(inout) :: mpl !< MPI data
3062 integer,intent(in) :: ncid !< File ID
3063 integer,intent(in) :: varid !< Variable ID
3064 real(kind_float),intent(out) :: var(:,:,:) !< Variable
3065 integer,intent(in),optional :: varstart(:) !< Start
3066 integer,intent(in),optional :: varcount(:) !< Count
3067 
3068 ! Local variable
3069 integer :: rid
3070 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3071 
3072 ! Set name
3073 
3074 
3075 ! Probe in
3076 
3077 
3078 ! Get root ID in registry
3079 rid = registry%get_root_id(mpl,ncid)
3080 
3081 if (mpl%msv%isnot(rid)) then
3082  ! Get variable
3083 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3084  if (present(varstart).and.present(varcount)) then
3085  call strerror(mpl,'netcdf_get_var_float_r3',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
3086  elseif (present(varstart)) then
3087  call strerror(mpl,'netcdf_get_var_float_r3',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
3088  else
3089  call strerror(mpl,'netcdf_get_var_float_r3',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
3090  end if
3091 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3092 end if
3093 
3094 ! Probe out
3095 
3096 
3097 end subroutine netcdf_get_var_float_r3
3098 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3099 !----------------------------------------------------------------------
3100 ! Subroutine: netcdf_get_var_real_r3
3101 !> Get variable
3102 !----------------------------------------------------------------------
3103 subroutine netcdf_get_var_real_r3(mpl,ncid,varid,var,varstart,varcount)
3104 
3105 implicit none
3106 
3107 ! Passed variables
3108 type(mpl_type),intent(inout) :: mpl !< MPI data
3109 integer,intent(in) :: ncid !< File ID
3110 integer,intent(in) :: varid !< Variable ID
3111 real(kind_real),intent(out) :: var(:,:,:) !< Variable
3112 integer,intent(in),optional :: varstart(:) !< Start
3113 integer,intent(in),optional :: varcount(:) !< Count
3114 
3115 ! Local variable
3116 integer :: rid
3117 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3118 
3119 ! Set name
3120 
3121 
3122 ! Probe in
3123 
3124 
3125 ! Get root ID in registry
3126 rid = registry%get_root_id(mpl,ncid)
3127 
3128 if (mpl%msv%isnot(rid)) then
3129  ! Get variable
3130 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3131  if (present(varstart).and.present(varcount)) then
3132  call strerror(mpl,'netcdf_get_var_real_r3',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
3133  elseif (present(varstart)) then
3134  call strerror(mpl,'netcdf_get_var_real_r3',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
3135  else
3136  call strerror(mpl,'netcdf_get_var_real_r3',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
3137  end if
3138 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3139 end if
3140 
3141 ! Probe out
3142 
3143 
3144 end subroutine netcdf_get_var_real_r3
3145 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3146 !----------------------------------------------------------------------
3147 ! Subroutine: netcdf_get_var_logical_r3
3148 !> Get variable
3149 !----------------------------------------------------------------------
3150 subroutine netcdf_get_var_logical_r3(mpl,ncid,varid,var,varstart,varcount)
3151 
3152 implicit none
3153 
3154 ! Passed variables
3155 type(mpl_type),intent(inout) :: mpl !< MPI data
3156 integer,intent(in) :: ncid !< File ID
3157 integer,intent(in) :: varid !< Variable ID
3158 logical,intent(out) :: var(:,:,:) !< Variable
3159 integer,intent(in),optional :: varstart(:) !< Start
3160 integer,intent(in),optional :: varcount(:) !< Count
3161 
3162 ! Local variable
3163 integer :: rid
3164 # 1290 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3165  integer :: shp(3)
3166  integer,allocatable :: varint(:,:,:)
3167 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3168 
3169 ! Set name
3170 
3171 
3172 ! Probe in
3173 
3174 
3175 ! Get root ID in registry
3176 rid = registry%get_root_id(mpl,ncid)
3177 
3178 if (mpl%msv%isnot(rid)) then
3179  ! Get variable
3180 # 1306 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3181  shp = shape(var)
3182 
3183 
3184  allocate(varint(shp(1),shp(2),shp(3)))
3185 
3186  if (present(varstart).and.present(varcount)) then
3187  call strerror(mpl,'netcdf_get_var_logical_r3',ncid,nf90_get_var(ncid,varid,varint,varstart,varcount),'variable',varid)
3188  elseif (present(varstart)) then
3189  call strerror(mpl,'netcdf_get_var_logical_r3',ncid,nf90_get_var(ncid,varid,varint,varstart),'variable',varid)
3190  else
3191  call strerror(mpl,'netcdf_get_var_logical_r3',ncid,nf90_get_var(ncid,varid,varint),'variable',varid)
3192  end if
3193  call convert_i2l(mpl,varint,var)
3194  deallocate(varint)
3195 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3196 end if
3197 
3198 ! Probe out
3199 
3200 
3201 end subroutine netcdf_get_var_logical_r3
3202 # 1336 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3203 # 1270 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3204 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3205 !----------------------------------------------------------------------
3206 ! Subroutine: netcdf_get_var_byte_r4
3207 !> Get variable
3208 !----------------------------------------------------------------------
3209 subroutine netcdf_get_var_byte_r4(mpl,ncid,varid,var,varstart,varcount)
3210 
3211 implicit none
3212 
3213 ! Passed variables
3214 type(mpl_type),intent(inout) :: mpl !< MPI data
3215 integer,intent(in) :: ncid !< File ID
3216 integer,intent(in) :: varid !< Variable ID
3217 integer(kind_signed_char),intent(out) :: var(:,:,:,:) !< Variable
3218 integer,intent(in),optional :: varstart(:) !< Start
3219 integer,intent(in),optional :: varcount(:) !< Count
3220 
3221 ! Local variable
3222 integer :: rid
3223 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3224 
3225 ! Set name
3226 
3227 
3228 ! Probe in
3229 
3230 
3231 ! Get root ID in registry
3232 rid = registry%get_root_id(mpl,ncid)
3233 
3234 if (mpl%msv%isnot(rid)) then
3235  ! Get variable
3236 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3237  if (present(varstart).and.present(varcount)) then
3238  call strerror(mpl,'netcdf_get_var_byte_r4',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
3239  elseif (present(varstart)) then
3240  call strerror(mpl,'netcdf_get_var_byte_r4',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
3241  else
3242  call strerror(mpl,'netcdf_get_var_byte_r4',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
3243  end if
3244 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3245 end if
3246 
3247 ! Probe out
3248 
3249 
3250 end subroutine netcdf_get_var_byte_r4
3251 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3252 !----------------------------------------------------------------------
3253 ! Subroutine: netcdf_get_var_int_r4
3254 !> Get variable
3255 !----------------------------------------------------------------------
3256 subroutine netcdf_get_var_int_r4(mpl,ncid,varid,var,varstart,varcount)
3257 
3258 implicit none
3259 
3260 ! Passed variables
3261 type(mpl_type),intent(inout) :: mpl !< MPI data
3262 integer,intent(in) :: ncid !< File ID
3263 integer,intent(in) :: varid !< Variable ID
3264 integer(kind_int),intent(out) :: var(:,:,:,:) !< Variable
3265 integer,intent(in),optional :: varstart(:) !< Start
3266 integer,intent(in),optional :: varcount(:) !< Count
3267 
3268 ! Local variable
3269 integer :: rid
3270 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3271 
3272 ! Set name
3273 
3274 
3275 ! Probe in
3276 
3277 
3278 ! Get root ID in registry
3279 rid = registry%get_root_id(mpl,ncid)
3280 
3281 if (mpl%msv%isnot(rid)) then
3282  ! Get variable
3283 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3284  if (present(varstart).and.present(varcount)) then
3285  call strerror(mpl,'netcdf_get_var_int_r4',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
3286  elseif (present(varstart)) then
3287  call strerror(mpl,'netcdf_get_var_int_r4',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
3288  else
3289  call strerror(mpl,'netcdf_get_var_int_r4',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
3290  end if
3291 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3292 end if
3293 
3294 ! Probe out
3295 
3296 
3297 end subroutine netcdf_get_var_int_r4
3298 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3299 !----------------------------------------------------------------------
3300 ! Subroutine: netcdf_get_var_float_r4
3301 !> Get variable
3302 !----------------------------------------------------------------------
3303 subroutine netcdf_get_var_float_r4(mpl,ncid,varid,var,varstart,varcount)
3304 
3305 implicit none
3306 
3307 ! Passed variables
3308 type(mpl_type),intent(inout) :: mpl !< MPI data
3309 integer,intent(in) :: ncid !< File ID
3310 integer,intent(in) :: varid !< Variable ID
3311 real(kind_float),intent(out) :: var(:,:,:,:) !< Variable
3312 integer,intent(in),optional :: varstart(:) !< Start
3313 integer,intent(in),optional :: varcount(:) !< Count
3314 
3315 ! Local variable
3316 integer :: rid
3317 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3318 
3319 ! Set name
3320 
3321 
3322 ! Probe in
3323 
3324 
3325 ! Get root ID in registry
3326 rid = registry%get_root_id(mpl,ncid)
3327 
3328 if (mpl%msv%isnot(rid)) then
3329  ! Get variable
3330 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3331  if (present(varstart).and.present(varcount)) then
3332  call strerror(mpl,'netcdf_get_var_float_r4',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
3333  elseif (present(varstart)) then
3334  call strerror(mpl,'netcdf_get_var_float_r4',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
3335  else
3336  call strerror(mpl,'netcdf_get_var_float_r4',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
3337  end if
3338 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3339 end if
3340 
3341 ! Probe out
3342 
3343 
3344 end subroutine netcdf_get_var_float_r4
3345 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3346 !----------------------------------------------------------------------
3347 ! Subroutine: netcdf_get_var_real_r4
3348 !> Get variable
3349 !----------------------------------------------------------------------
3350 subroutine netcdf_get_var_real_r4(mpl,ncid,varid,var,varstart,varcount)
3351 
3352 implicit none
3353 
3354 ! Passed variables
3355 type(mpl_type),intent(inout) :: mpl !< MPI data
3356 integer,intent(in) :: ncid !< File ID
3357 integer,intent(in) :: varid !< Variable ID
3358 real(kind_real),intent(out) :: var(:,:,:,:) !< Variable
3359 integer,intent(in),optional :: varstart(:) !< Start
3360 integer,intent(in),optional :: varcount(:) !< Count
3361 
3362 ! Local variable
3363 integer :: rid
3364 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3365 
3366 ! Set name
3367 
3368 
3369 ! Probe in
3370 
3371 
3372 ! Get root ID in registry
3373 rid = registry%get_root_id(mpl,ncid)
3374 
3375 if (mpl%msv%isnot(rid)) then
3376  ! Get variable
3377 # 1321 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3378  if (present(varstart).and.present(varcount)) then
3379  call strerror(mpl,'netcdf_get_var_real_r4',ncid,nf90_get_var(ncid,varid,var,varstart,varcount),'variable',varid)
3380  elseif (present(varstart)) then
3381  call strerror(mpl,'netcdf_get_var_real_r4',ncid,nf90_get_var(ncid,varid,var,varstart),'variable',varid)
3382  else
3383  call strerror(mpl,'netcdf_get_var_real_r4',ncid,nf90_get_var(ncid,varid,var),'variable',varid)
3384  end if
3385 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3386 end if
3387 
3388 ! Probe out
3389 
3390 
3391 end subroutine netcdf_get_var_real_r4
3392 # 1271 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3393 !----------------------------------------------------------------------
3394 ! Subroutine: netcdf_get_var_logical_r4
3395 !> Get variable
3396 !----------------------------------------------------------------------
3397 subroutine netcdf_get_var_logical_r4(mpl,ncid,varid,var,varstart,varcount)
3398 
3399 implicit none
3400 
3401 ! Passed variables
3402 type(mpl_type),intent(inout) :: mpl !< MPI data
3403 integer,intent(in) :: ncid !< File ID
3404 integer,intent(in) :: varid !< Variable ID
3405 logical,intent(out) :: var(:,:,:,:) !< Variable
3406 integer,intent(in),optional :: varstart(:) !< Start
3407 integer,intent(in),optional :: varcount(:) !< Count
3408 
3409 ! Local variable
3410 integer :: rid
3411 # 1290 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3412  integer :: shp(4)
3413  integer,allocatable :: varint(:,:,:,:)
3414 # 1293 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3415 
3416 ! Set name
3417 
3418 
3419 ! Probe in
3420 
3421 
3422 ! Get root ID in registry
3423 rid = registry%get_root_id(mpl,ncid)
3424 
3425 if (mpl%msv%isnot(rid)) then
3426  ! Get variable
3427 # 1306 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3428  shp = shape(var)
3429 
3430 
3431 
3432  allocate(varint(shp(1),shp(2),shp(3),shp(4)))
3433  if (present(varstart).and.present(varcount)) then
3434  call strerror(mpl,'netcdf_get_var_logical_r4',ncid,nf90_get_var(ncid,varid,varint,varstart,varcount),'variable',varid)
3435  elseif (present(varstart)) then
3436  call strerror(mpl,'netcdf_get_var_logical_r4',ncid,nf90_get_var(ncid,varid,varint,varstart),'variable',varid)
3437  else
3438  call strerror(mpl,'netcdf_get_var_logical_r4',ncid,nf90_get_var(ncid,varid,varint),'variable',varid)
3439  end if
3440  call convert_i2l(mpl,varint,var)
3441  deallocate(varint)
3442 # 1329 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3443 end if
3444 
3445 ! Probe out
3446 
3447 
3448 end subroutine netcdf_get_var_logical_r4
3449 # 1336 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3450 # 1337 "/Users/miesch/JEDI/code/working_copy/internal/mpas-bundle/saber/src/saber/util/tools_netcdf.fypp"
3451 
3452 !----------------------------------------------------------------------
3453 ! Subroutine: netcdf_close_file
3454 !> Close file
3455 !----------------------------------------------------------------------
3456 subroutine netcdf_close_file(mpl,ncid)
3457 
3458 implicit none
3459 
3460 ! Passed variables
3461 type(mpl_type),intent(inout) :: mpl !< MPI data
3462 integer,intent(in) :: ncid !< File ID
3463 
3464 ! Local variables
3465 integer :: rid
3466 
3467 ! Set name
3468 
3469 
3470 ! Probe in
3471 
3472 
3473 ! Get root ID in registry
3474 rid = registry%get_root_id(mpl,ncid)
3475 
3476 if (mpl%msv%isnot(rid)) then
3477  ! Close file
3478  call strerror(mpl,'netcdf_close_file',ncid,nf90_close(ncid),'file',ncid)
3479 
3480  ! Free registry slot
3481  call registry%free(mpl,ncid)
3482 end if
3483 
3484 ! Probe out
3485 
3486 
3487 end subroutine netcdf_close_file
3488 
3489 !----------------------------------------------------------------------
3490 ! Subroutine: netcdf_strerror
3491 !> Handle error
3492 !----------------------------------------------------------------------
3493 subroutine netcdf_strerror(mpl,subr,ncid,info,hint,hint_id)
3494 
3495 implicit none
3496 
3497 ! Passed variables
3498 type(mpl_type),intent(inout) :: mpl !< MPI data
3499 character(len=*),intent(in) :: subr !< Calling subroutine
3500 integer,intent(in) :: ncid !< File ID
3501 integer,intent(in) :: info !< Info index
3502 character(len=*),intent(in),optional :: hint !< Hint
3503 integer,intent(in),optional :: hint_id !< Hint ID
3504 
3505 ! Local variables
3506 integer :: child_id,rid,i,parent_id,indent
3507 logical :: found
3508 character(len=3) :: cindent
3509 character(len=1024) :: message
3510 
3511 ! Set name
3512 
3513 
3514 ! Probe in
3515 
3516 
3517 ! Check status
3518 if (info/=nf90_noerr) then
3519  write(output_unit,'(a,i6.6,a)') '!!! NetCDF error in '//trim(subr)//' on task #',mpl%myproc,': '//trim(nf90_strerror(info))
3520  call flush(output_unit)
3521  if (present(hint)) then
3522  if (present(hint_id)) then
3523  write(message,'(a,i6)') trim(hint)//' ID ',hint_id
3524  else
3525  message = trim(hint)
3526  end if
3527  write(output_unit,'(a)') '!!! Hint: '//trim(message)
3528  call flush(output_unit)
3529  end if
3530 
3531  ! Initialization
3532  found = .false.
3533  child_id = ncid
3534  indent = 4
3535 
3536  ! Look for successive parents
3537  do while (.not.found)
3538  ! Initialization
3539  rid = mpl%msv%vali
3540 
3541  ! Get corresponding slot
3542  do i=1,nidmax
3543  if (registry%id(i,2)==child_id) then
3544  rid = i
3545  exit
3546  end if
3547  end do
3548 
3549  ! Check slot index
3550  if (mpl%msv%is(rid)) call mpl%abort('netcdf_strerror','cannot find this child ID in registry')
3551 
3552  ! Define indentation
3553  indent = indent+3
3554  if (indent<10) then
3555  write(cindent,'(a,i1)') 'a',indent
3556  elseif (indent<100) then
3557  write(cindent,'(a,i2)') 'a',indent
3558  end if
3559 
3560  ! Print traceback
3561  write(output_unit,'('//trim(cindent)//',a,a)') '','|-> ',trim(registry%name(rid))
3562  call flush(output_unit)
3563 
3564  ! Get parent_id
3565  parent_id = registry%id(i,1)
3566 
3567  if (parent_id==0) then
3568  ! Found root ID
3569  found = .true.
3570  else
3571  ! Update child ID
3572  child_id = parent_id
3573  end if
3574  end do
3575 
3576  ! Abort with proper MPI communicator
3577  call mpl%f_comm%abort(1)
3578 end if
3579 
3580 ! Probe out
3581 
3582 
3583 end subroutine netcdf_strerror
3584 
3585 end module tools_netcdf
Subroutines/functions list.
Definition: tools_func.F90:42
Kinds definition.
Definition: tools_kinds.F90:9
integer, parameter, public nc_kind_real
NetCDF real kind alias for the whole code.
Definition: tools_kinds.F90:32
integer, parameter, public nc_kind_int
NetCDF integer kind alias.
Definition: tools_kinds.F90:26
integer, parameter, public kind_signed_char
Signed char kind.
Definition: tools_kinds.F90:20
integer, parameter, public kind_int
Integer kind.
Definition: tools_kinds.F90:17
integer, parameter, public kind_float
Float kind.
Definition: tools_kinds.F90:21
integer, parameter, public kind_double
Double kind.
Definition: tools_kinds.F90:22
integer, parameter, public kind_real
Real kind alias for the whole code.
Definition: tools_kinds.F90:31
Generic ranks, dimensions and types.
integer function netcdf_define_dim(mpl, ncid, dimname, dimsize)
Define dimension.
subroutine netcdf_put_var_int_r1(mpl, ncid, varid, var, varstart, varcount)
Put variable.
subroutine netcdf_put_att_real(mpl, ncid, attname, att, varid)
Put attribute.
subroutine netcdf_put_var_int_r2(mpl, ncid, varid, var, varstart, varcount)
Put variable.
subroutine netcdf_get_var_real_r1(mpl, ncid, varid, var, varstart, varcount)
Get variable.
subroutine netcdf_get_var_real_r2(mpl, ncid, varid, var, varstart, varcount)
Get variable.
subroutine netcdf_get_var_byte_r0(mpl, ncid, varid, var, varstart)
Get variable.
subroutine netcdf_get_var_byte_r3(mpl, ncid, varid, var, varstart, varcount)
Get variable.
subroutine netcdf_get_var_real_r4(mpl, ncid, varid, var, varstart, varcount)
Get variable.
subroutine netcdf_get_var_float_r0(mpl, ncid, varid, var, varstart)
Get variable.
integer function netcdf_inquire_var_dim_size(mpl, ncid, varname, dimindex)
Inquire variable dimension size.
subroutine netcdf_get_var_logical_r1(mpl, ncid, varid, var, varstart, varcount)
Get variable.
subroutine netcdf_put_var_real_r2(mpl, ncid, varid, var, varstart, varcount)
Put variable.
integer function netcdf_inquire_grp(mpl, ncid, grpname)
Inquire group ID.
subroutine netcdf_put_att_logical(mpl, ncid, attname, att, varid)
Put attribute.
integer function netcdf_inquire_var(mpl, ncid, varname)
Inquire variable ID.
subroutine netcdf_strerror(mpl, subr, ncid, info, hint, hint_id)
Handle error.
subroutine netcdf_put_var_logical_r1(mpl, ncid, varid, var, varstart, varcount)
Put variable.
subroutine netcdf_put_var_real_r1(mpl, ncid, varid, var, varstart, varcount)
Put variable.
subroutine netcdf_get_var_logical_r2(mpl, ncid, varid, var, varstart, varcount)
Get variable.
subroutine netcdf_get_att_real(mpl, ncid, attname, att, varid)
Get attribute.
type(registry_type), public registry
subroutine netcdf_put_var_logical_r4(mpl, ncid, varid, var, varstart, varcount)
Put variable.
subroutine netcdf_put_var_real_r0(mpl, ncid, varid, var, varstart)
Put variable.
subroutine netcdf_put_var_int_r3(mpl, ncid, varid, var, varstart, varcount)
Put variable.
integer, parameter ncharmax
Maximum number of characters to store file and group names.
subroutine netcdf_get_var_logical_r0(mpl, ncid, varid, var, varstart)
Get variable.
integer, parameter nidmax
Maximum number of simultaneous file and group ids.
subroutine netcdf_get_var_int_r3(mpl, ncid, varid, var, varstart, varcount)
Get variable.
integer function netcdf_inquire_var_rank(mpl, ncid, varname)
Inquire variable rank.
subroutine netcdf_put_var_logical_r0(mpl, ncid, varid, var, varstart)
Put variable.
integer function netcdf_create_file(mpl, filename, iproc)
Create file.
subroutine netcdf_get_var_float_r4(mpl, ncid, varid, var, varstart, varcount)
Get variable.
subroutine netcdf_get_var_logical_r3(mpl, ncid, varid, var, varstart, varcount)
Get variable.
integer function netcdf_open_file(mpl, filename, iproc)
Open file.
subroutine netcdf_close_file(mpl, ncid)
Close file.
integer function netcdf_inquire_dim(mpl, ncid, dimname)
Inquire dimension ID.
subroutine netcdf_get_var_int_r4(mpl, ncid, varid, var, varstart, varcount)
Get variable.
subroutine netcdf_get_var_byte_r2(mpl, ncid, varid, var, varstart, varcount)
Get variable.
integer function netcdf_define_var(mpl, ncid, varname, varkind, varshape, unitname)
Define variable.
subroutine netcdf_get_att_string(mpl, ncid, attname, att, varid)
Get attribute.
subroutine netcdf_get_var_real_r0(mpl, ncid, varid, var, varstart)
Get variable.
subroutine netcdf_put_var_logical_r3(mpl, ncid, varid, var, varstart, varcount)
Put variable.
subroutine netcdf_put_var_logical_r2(mpl, ncid, varid, var, varstart, varcount)
Put variable.
logical function netcdf_check_dim_size(mpl, ncid, dimname, dimsize)
Check dimension size.
subroutine netcdf_get_var_real_r3(mpl, ncid, varid, var, varstart, varcount)
Get variable.
integer function registry_get_root_id(registry, mpl, ncid)
Get root ID in registry from a given ID.
subroutine netcdf_put_att_string(mpl, ncid, attname, att, varid)
Put attribute.
subroutine netcdf_get_att_logical(mpl, ncid, attname, att, varid)
Get attribute.
subroutine netcdf_get_var_float_r2(mpl, ncid, varid, var, varstart, varcount)
Get variable.
integer function netcdf_inquire_dim_size(mpl, ncid, dimname, default)
Inquire dimension size.
subroutine registry_free(registry, mpl, ncid)
Free registry slot.
subroutine netcdf_put_att_int(mpl, ncid, attname, att, varid)
Put attribute.
subroutine netcdf_get_var_float_r3(mpl, ncid, varid, var, varstart, varcount)
Get variable.
subroutine netcdf_put_var_real_r3(mpl, ncid, varid, var, varstart, varcount)
Put variable.
subroutine netcdf_put_var_real_r4(mpl, ncid, varid, var, varstart, varcount)
Put variable.
subroutine netcdf_get_var_byte_r1(mpl, ncid, varid, var, varstart, varcount)
Get variable.
subroutine netcdf_get_var_float_r1(mpl, ncid, varid, var, varstart, varcount)
Get variable.
subroutine netcdf_get_var_int_r0(mpl, ncid, varid, var, varstart)
Get variable.
subroutine registry_save(registry, mpl, parent_id, child_id, child_name)
Save ID in registry.
subroutine netcdf_get_att_int(mpl, ncid, attname, att, varid)
Get attribute.
subroutine netcdf_put_var_int_r4(mpl, ncid, varid, var, varstart, varcount)
Put variable.
subroutine registry_report(registry, mpl)
Print registry report.
integer function netcdf_define_grp(mpl, ncid, grpname)
Define group.
subroutine netcdf_get_var_int_r2(mpl, ncid, varid, var, varstart, varcount)
Get variable.
recursive subroutine registry_recursive_cleaning(registry, mpl, parent_id)
Recursive registry cleaning.
subroutine netcdf_get_var_logical_r4(mpl, ncid, varid, var, varstart, varcount)
Get variable.
subroutine netcdf_get_var_byte_r4(mpl, ncid, varid, var, varstart, varcount)
Get variable.
logical function netcdf_inquire_var_presence(mpl, ncid, varname)
Inquire variable presence.
subroutine netcdf_put_var_int_r0(mpl, ncid, varid, var, varstart)
Put variable.
subroutine netcdf_get_var_int_r1(mpl, ncid, varid, var, varstart, varcount)
Get variable.
Generic ranks, dimensions and types.
Definition: type_mpl.F90:42