Line data Source code
1 : !-------------------------------------------------------------------------
2 : ! NASA/GFSC, SIVO, Code 610.3
3 : !-------------------------------------------------------------------------
4 : !BOP
5 : !
6 : ! !MODULE: HCO_m_netcdf_io_read
7 : !
8 : ! !INTERFACE:
9 : !
10 : MODULE HCO_m_netcdf_io_read
11 : !
12 : ! !USES:
13 : !
14 : IMPLICIT NONE
15 : PRIVATE
16 : !
17 : ! !PUBLIC MEMBER FUNCTIONS:
18 : !
19 : ! Public interface
20 : PUBLIC :: NcRd
21 :
22 : ! Private methods overloaded by public interface
23 : ! (see below for info about these routines & the arguments they take)
24 : INTERFACE NcRd
25 : MODULE PROCEDURE Ncrd_Scal
26 : MODULE PROCEDURE Ncrd_Scal_Int
27 : MODULE PROCEDURE Ncrd_1d_R8
28 : MODULE PROCEDURE Ncrd_1d_R4
29 : MODULE PROCEDURE Ncrd_1d_Int
30 : MODULE PROCEDURE Ncrd_1d_Char
31 : MODULE PROCEDURE Ncrd_2d_R8
32 : MODULE PROCEDURE Ncrd_2d_R4
33 : MODULE PROCEDURE Ncrd_2d_Int
34 : MODULE PROCEDURE Ncrd_2d_Char
35 : MODULE PROCEDURE Ncrd_3d_R8
36 : MODULE PROCEDURE Ncrd_3d_R4
37 : MODULE PROCEDURE Ncrd_3d_Int
38 : MODULE PROCEDURE Ncrd_4d_R8
39 : MODULE PROCEDURE Ncrd_4d_R4
40 : MODULE PROCEDURE Ncrd_4d_Int
41 : MODULE PROCEDURE Ncrd_5d_R8
42 : MODULE PROCEDURE Ncrd_5d_R4
43 : MODULE PROCEDURE Ncrd_6d_R8
44 : MODULE PROCEDURE Ncrd_6d_R4
45 : MODULE PROCEDURE Ncrd_7d_R8
46 : MODULE PROCEDURE Ncrd_7d_R4
47 : END INTERFACE NcRd
48 : !
49 : ! !DESCRIPTION: Routines for reading variables in a netCDF file.
50 : !\\
51 : !\\
52 : ! !AUTHOR:
53 : ! Jules Kouatchou
54 : !
55 : ! !REVISION HISTORY:
56 : ! See https://github.com/geoschem/hemco for complete history
57 : !EOP
58 : !-------------------------------------------------------------------------
59 : !BOC
60 : CONTAINS
61 : !EOC
62 : !-------------------------------------------------------------------------
63 : !BOP
64 : !
65 : ! !IROUTINE: Ncrd_Scal
66 : !
67 : ! !INTERFACE:
68 : !
69 0 : subroutine Ncrd_Scal(varrd_scal, ncid, varname)
70 : !
71 : ! !USES:
72 : !
73 : use netCDF
74 : use m_do_err_out
75 : !
76 : ! !INPUT PARAMETERS:
77 : !! ncid : netCDF file id to read variable from
78 : !! varname : netCDF variable name
79 : integer , intent(in) :: ncid
80 : character (len=*), intent(in) :: varname
81 : !
82 : ! !OUTPUT PARAMETERS:
83 : !! varrd_scal : variable to fill
84 : real*8 , intent(out) :: varrd_scal
85 : !
86 : ! !DESCRIPTION: Reads in a netCDF scalar variable.
87 : !\\
88 : !\\
89 : ! !AUTHOR:
90 : ! John Tannahill (LLNL) and Jules Kouatchou
91 : !
92 : ! !REVISION HISTORY:
93 : ! See https://github.com/geoschem/hemco for complete history
94 : !EOP
95 : !-------------------------------------------------------------------------
96 : !BOC
97 : !
98 : ! !LOCAL VARIABLES:
99 : character (len=512) :: err_msg
100 : integer :: ierr
101 : integer :: varid
102 : real*4 :: varrd_scal_tmp
103 : !
104 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
105 :
106 0 : if (ierr /= NF90_NOERR) then
107 : err_msg = 'In Ncrd_Scal #1: ' // Trim (varname) // &
108 0 : ', ' // NF90_Strerror(ierr)
109 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
110 : end if
111 :
112 0 : ierr = NF90_Get_Var(ncid, varid, varrd_scal_tmp)
113 :
114 0 : if (ierr /= NF90_NOERR) then
115 0 : err_msg = 'In Ncrd_Scal #2: ' // NF90_Strerror(ierr)
116 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
117 : end if
118 :
119 0 : varrd_scal = varrd_scal_tmp
120 :
121 0 : return
122 :
123 : end subroutine Ncrd_Scal
124 : !EOC
125 : !-------------------------------------------------------------------------
126 : !BOP
127 : !
128 : ! !IROUTINE: Ncrd_Scal_Int
129 : !
130 : ! !INTERFACE:
131 : !
132 0 : subroutine Ncrd_Scal_Int(varrd_scali, ncid, varname)
133 : !
134 : ! !USES:
135 : !
136 : use netCDF
137 : use m_do_err_out
138 : !
139 : ! !INPUT PARAMETERS:
140 : !! ncid : netCDF file id to read variable from
141 : !! varname : netCDF variable name
142 : integer , intent(in) :: ncid
143 : character (len=*), intent(in) :: varname
144 : !
145 : ! !OUTPUT PARAMETERS:
146 : !! varrd_scali : integer variable to fill
147 : integer , intent(out) :: varrd_scali
148 : !
149 : ! !DESCRIPTION: Reads in a netCDF integer scalar variable.
150 : !\\
151 : !\\
152 : ! !AUTHOR:
153 : ! John Tannahill (LLNL) and Jules Kouatchou
154 : !
155 : ! !REVISION HISTORY:
156 : ! See https://github.com/geoschem/hemco for complete history
157 : !EOP
158 : !-------------------------------------------------------------------------
159 : !BOC
160 : !
161 : ! !LOCAL VARIABLES:
162 : character (len=512) :: err_msg
163 : integer :: ierr
164 : integer :: varid
165 : !
166 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
167 :
168 0 : if (ierr /= NF90_NOERR) then
169 : err_msg = 'In Ncrd_Scal_Int #1: ' // Trim (varname) // &
170 0 : ', ' // NF90_Strerror(ierr)
171 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
172 : end if
173 :
174 0 : ierr = NF90_Get_Var(ncid, varid, varrd_scali)
175 :
176 0 : if (ierr /= NF90_NOERR) then
177 0 : err_msg = 'In Ncrd_Scal_Int #2: ' // NF90_Strerror(ierr)
178 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
179 : end if
180 :
181 0 : return
182 :
183 : end subroutine Ncrd_Scal_Int
184 : !EOC
185 : !-------------------------------------------------------------------------
186 : !BOP
187 : !
188 : ! !IROUTINE: Ncrd_1d_R8
189 : !
190 : ! !INTERFACE:
191 : !
192 0 : subroutine Ncrd_1d_R8(varrd_1d, ncid, varname, strt1d, cnt1d, err_stop, stat)
193 : !
194 : ! !USES:
195 : !
196 : use netCDF
197 : use m_do_err_out
198 : !
199 : ! !INPUT PARAMETERS:
200 : !! ncid : netCDF file id to read array input data from
201 : !! varname : netCDF variable name for array
202 : !! strt1d : vector specifying the index in varrd_1d where
203 : !! the first of the data values will be read
204 : !! cnt1d : varrd_1d dimension
205 : integer , intent(in) :: ncid
206 : character (len=*), intent(in) :: varname
207 : integer , intent(in) :: strt1d(1)
208 : integer , intent(in) :: cnt1d (1)
209 : logical, optional, intent(in) :: err_stop
210 : !
211 : ! !OUTPUT PARAMETERS:
212 : !! varrd_1d : array to fill
213 : real*8 , intent(out) :: varrd_1d(cnt1d(1))
214 : integer, optional, intent(out) :: stat
215 : !
216 : ! !DESCRIPTION: Reads in a 1D netCDF real array and does some error checking.
217 : !\\
218 : !\\
219 : ! !AUTHOR:
220 : ! John Tannahill (LLNL) and Jules Kouatchou
221 : !
222 : ! !REVISION HISTORY:
223 : ! See https://github.com/geoschem/hemco for complete history
224 : !EOP
225 : !-------------------------------------------------------------------------
226 : !BOC
227 : !
228 : ! !LOCAL VARIABLES:
229 : !
230 : character (len=512) :: err_msg
231 : integer :: ierr
232 : integer :: varid
233 : logical :: dostop
234 :
235 : ! set dostop flag
236 0 : dostop = .true.
237 0 : if ( present ( err_stop ) ) dostop = err_stop
238 :
239 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
240 :
241 0 : if (ierr /= NF90_NOERR) then
242 0 : if ( dostop ) then
243 : err_msg = 'In Ncrd_1d_R8 #1: ' // Trim (varname) // &
244 0 : ', ' // NF90_Strerror(ierr)
245 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
246 : else
247 0 : varrd_1d(:) = -999d0
248 0 : if ( present ( stat ) ) stat = 1
249 0 : return
250 : end if
251 : end if
252 :
253 0 : ierr = NF90_Get_Var(ncid, varid, varrd_1d, start=strt1d, count=cnt1d)
254 :
255 0 : if (ierr /= NF90_NOERR) then
256 0 : if ( dostop ) then
257 0 : err_msg = 'In Ncrd_1d_R8 #2: ' // NF90_Strerror(ierr)
258 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
259 : else
260 0 : varrd_1d(:) = -999d0
261 0 : if ( present ( stat ) ) stat = 2
262 0 : return
263 : endif
264 : end if
265 :
266 : ! set stat to 0 (= success)
267 0 : if ( present ( stat ) ) stat = 0
268 :
269 : end subroutine Ncrd_1d_R8
270 : !EOC
271 : !-------------------------------------------------------------------------
272 : !BOP
273 : !
274 : ! !IROUTINE: Ncrd_1d_R4
275 : !
276 : ! !INTERFACE:
277 : !
278 0 : subroutine Ncrd_1d_R4(varrd_1d, ncid, varname, strt1d, cnt1d, err_stop, stat)
279 : !
280 : ! !USES:
281 : !
282 : use netCDF
283 : use m_do_err_out
284 : !
285 : ! !INPUT PARAMETERS:
286 : !! ncid : netCDF file id to read array input data from
287 : !! varname : netCDF variable name for array
288 : !! strt1d : vector specifying the index in varrd_1d where
289 : !! the first of the data values will be read
290 : !! cnt1d : varrd_1d dimension
291 : integer , intent(in) :: ncid
292 : character (len=*), intent(in) :: varname
293 : integer , intent(in) :: strt1d(1)
294 : integer , intent(in) :: cnt1d (1)
295 : logical, optional, intent(in) :: err_stop
296 : !
297 : ! !OUTPUT PARAMETERS:
298 : !! varrd_1d : array to fill
299 : real*4 , intent(out) :: varrd_1d(cnt1d(1))
300 : integer, optional, intent(out) :: stat
301 : !
302 : ! !DESCRIPTION: Reads in a 1D netCDF real array and does some error checking.
303 : !\\
304 : !\\
305 : ! !AUTHOR:
306 : ! John Tannahill (LLNL) and Jules Kouatchou
307 : !
308 : ! !REVISION HISTORY:
309 : ! See https://github.com/geoschem/hemco for complete history
310 : !EOP
311 : !-------------------------------------------------------------------------
312 : !BOC
313 : !
314 : ! !LOCAL VARIABLES:
315 : !
316 : character (len=512) :: err_msg
317 : integer :: ierr
318 : integer :: varid
319 : logical :: dostop
320 :
321 : ! set dostop flag
322 0 : dostop = .true.
323 0 : if ( present ( err_stop ) ) dostop = err_stop
324 :
325 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
326 :
327 0 : if (ierr /= NF90_NOERR) then
328 0 : if ( dostop ) then
329 : err_msg = 'In Ncrd_1d_R4 #1: ' // Trim (varname) // &
330 0 : ', ' // NF90_Strerror(ierr)
331 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
332 : else
333 0 : varrd_1d(:) = -999.0
334 0 : if ( present ( stat ) ) stat = 1
335 0 : return
336 : end if
337 : end if
338 :
339 0 : ierr = NF90_Get_Var(ncid, varid, varrd_1d, start=strt1d, count=cnt1d)
340 :
341 0 : if (ierr /= NF90_NOERR) then
342 0 : if ( dostop ) then
343 0 : err_msg = 'In Ncrd_1d_R4 #2: ' // NF90_Strerror(ierr)
344 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
345 : else
346 0 : varrd_1d(:) = -999.0
347 0 : if ( present ( stat ) ) stat = 2
348 0 : return
349 : endif
350 : end if
351 :
352 : ! set stat to 0 (= success)
353 0 : if ( present ( stat ) ) stat = 0
354 : return
355 :
356 : end subroutine Ncrd_1d_R4
357 : !EOC
358 : !-------------------------------------------------------------------------
359 : !BOP
360 : !
361 : ! !IROUTINE: Ncrd_1d_Int
362 : !
363 : ! !INTERFACE:
364 : !
365 0 : subroutine Ncrd_1d_Int(varrd_1di, ncid, varname, strt1d, &
366 : cnt1d, err_stop, stat)
367 : !
368 : ! !USES:
369 : !
370 : use netCDF
371 : use m_do_err_out
372 : !
373 : ! !INPUT PARAMETERS:
374 : !
375 : !! ncid : netCDF file id to read array input data from
376 : !! varname : netCDF variable name for array
377 : !! strt1d : vector specifying the index in varrd_1di where
378 : !! the first of the data values will be read
379 : !! cnt1d : varrd_1di dimension
380 : integer , intent(in) :: ncid
381 : character (len=*), intent(in) :: varname
382 : integer , intent(in) :: strt1d(1)
383 : integer , intent(in) :: cnt1d (1)
384 : logical, optional, intent(in) :: err_stop
385 : !
386 : ! !OUTPUT PARAMETERS:
387 : !! varrd_1di : intger array to fill
388 : integer , intent(out) :: varrd_1di(cnt1d(1))
389 : integer, optional, intent(out) :: stat
390 : !
391 : ! !DESCRIPTION: Reads in a 1D netCDF integer array and does some error
392 : ! checking.
393 : !\\
394 : !\\
395 : ! !AUTHOR:
396 : ! John Tannahill (LLNL) and Jules Kouatchou
397 : !
398 : ! !REVISION HISTORY:
399 : ! See https://github.com/geoschem/hemco for complete history
400 : !EOP
401 : !-------------------------------------------------------------------------
402 : !BOC
403 : !
404 : ! !LOCAL VARIABLES:
405 : !
406 : character (len=512) :: err_msg
407 : integer :: ierr
408 : integer :: varid
409 : logical :: dostop
410 :
411 : ! set dostop flag
412 0 : dostop = .true.
413 0 : if ( present ( err_stop ) ) dostop = err_stop
414 :
415 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
416 :
417 0 : if (ierr /= NF90_NOERR) then
418 0 : if ( dostop ) then
419 : err_msg = 'In Ncrd_1d_Int #1: ' // Trim (varname) // &
420 0 : ', ' // NF90_Strerror(ierr)
421 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
422 : else
423 0 : varrd_1di(:) = -999
424 0 : if ( present ( stat ) ) stat = 1
425 0 : return
426 : end if
427 : end if
428 :
429 0 : ierr = NF90_Get_Var(ncid, varid, varrd_1di, start=strt1d, count=cnt1d)
430 :
431 0 : if (ierr /= NF90_NOERR) then
432 0 : if ( dostop ) then
433 0 : err_msg = 'In Ncrd_1d_Int #2: ' // NF90_Strerror(ierr)
434 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
435 : else
436 0 : varrd_1di(:) = -999
437 0 : if ( present ( stat ) ) stat = 2
438 0 : return
439 : endif
440 : end if
441 :
442 : ! set stat to 0 (= success)
443 0 : if ( present ( stat ) ) stat = 0
444 :
445 : return
446 :
447 : end subroutine Ncrd_1d_Int
448 : !EOC
449 : !-------------------------------------------------------------------------
450 : !BOP
451 : !
452 : ! !IROUTINE: Ncrd_2d_R8
453 : !
454 : ! !INTERFACE:
455 : !
456 0 : subroutine Ncrd_2d_R8(varrd_2d, ncid, varname, strt2d, cnt2d)
457 : !
458 : ! !USES:
459 : !
460 : use netCDF
461 : use m_do_err_out
462 :
463 : !! ncid : netCDF file id to read array input data from
464 : !! varname : netCDF variable name for array
465 : !! strt2d : vector specifying the index in varrd_2d where
466 : !! the first of the data values will be read
467 : !! cnt2d : varrd_2d dimensions
468 : integer , intent(in) :: ncid
469 : character (len=*), intent(in) :: varname
470 : integer , intent(in) :: strt2d(2)
471 : integer , intent(in) :: cnt2d (2)
472 : !
473 : ! !OUTPUT PARAMETERS:
474 : !! varrd_2d : array to fill
475 : real*8 , intent(out) :: varrd_2d(cnt2d(1), cnt2d(2))
476 : !
477 : ! !DESCRIPTION: Reads in a 2D netCDF real array and does some error checking.
478 : !\\
479 : !\\
480 : ! !AUTHOR:
481 : ! John Tannahill (LLNL) and Jules Kouatchou
482 : !
483 : ! !REVISION HISTORY:
484 : ! See https://github.com/geoschem/hemco for complete history
485 : !EOP
486 : !-------------------------------------------------------------------------
487 : !BOC
488 : !
489 : ! !LOCAL VARIABLES:
490 : character (len=512) :: err_msg
491 : integer :: ierr
492 : integer :: varid
493 : !
494 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
495 :
496 0 : if (ierr /= NF90_NOERR) then
497 : err_msg = 'In Ncrd_2d_R8 #1: ' // Trim (varname) // &
498 0 : ', ' // NF90_Strerror(ierr)
499 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
500 : end if
501 :
502 0 : ierr = NF90_Get_Var(ncid, varid, varrd_2d, start=strt2d, count=cnt2d)
503 :
504 0 : if (ierr /= NF90_NOERR) then
505 0 : err_msg = 'In Ncrd_2d_R8 #2: ' // NF90_Strerror(ierr)
506 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
507 : end if
508 :
509 0 : end subroutine Ncrd_2d_R8
510 : !EOC
511 : !-------------------------------------------------------------------------
512 : !BOP
513 : !
514 : ! !IROUTINE: Ncrd_2d_R4
515 : !
516 : ! !INTERFACE:
517 : !
518 0 : subroutine Ncrd_2d_R4(varrd_2d, ncid, varname, strt2d, cnt2d)
519 : !
520 : ! !USES:
521 : !
522 : use netCDF
523 : use m_do_err_out
524 : !
525 : ! !INPUT PARAMETERS:
526 : !! ncid : netCDF file id to read array input data from
527 : !! varname : netCDF variable name for array
528 : !! strt2d : vector specifying the index in varrd_2d where
529 : !! the first of the data values will be read
530 : !! cnt2d : varrd_2d dimensions
531 : integer , intent(in) :: ncid
532 : character (len=*), intent(in) :: varname
533 : integer , intent(in) :: strt2d(2)
534 : integer , intent(in) :: cnt2d (2)
535 : !
536 : ! !OUTPUT PARAMETERS:
537 : !! varrd_2d : array to fill
538 : real*4 , intent(out) :: varrd_2d(cnt2d(1), cnt2d(2))
539 : !
540 : ! !DESCRIPTION: Reads in a 2D netCDF real array and does some error checking.
541 : !\\
542 : !\\
543 : ! !AUTHOR:
544 : ! John Tannahill (LLNL) and Jules Kouatchou
545 : !
546 : ! !REVISION HISTORY:
547 : ! See https://github.com/geoschem/hemco for complete history
548 : !EOP
549 : !-------------------------------------------------------------------------
550 : !BOC
551 : !
552 : ! !LOCAL VARIABLES:
553 : character (len=512) :: err_msg
554 : integer :: ierr
555 : integer :: varid
556 : !
557 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
558 :
559 0 : if (ierr /= NF90_NOERR) then
560 : err_msg = 'In Ncrd_2d_R4 #1: ' // Trim (varname) // &
561 0 : ', ' // NF90_Strerror(ierr)
562 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
563 : end if
564 :
565 0 : ierr = NF90_Get_Var(ncid, varid, varrd_2d, start=strt2d, count=cnt2d)
566 :
567 0 : if (ierr /= NF90_NOERR) then
568 0 : err_msg = 'In Ncrd_2d_R4 #2: ' // NF90_Strerror(ierr)
569 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
570 : end if
571 :
572 0 : end subroutine Ncrd_2d_R4
573 : !EOC
574 : !-------------------------------------------------------------------------
575 : !BOP
576 : !
577 : ! !IROUTINE: Ncrd_2d_Int
578 : !
579 : ! !INTERFACE:
580 : !
581 0 : subroutine Ncrd_2d_Int(varrd_2di, ncid, varname, strt2d, cnt2d)
582 : !
583 : ! !USES:
584 : !
585 : use netCDF
586 : use m_do_err_out
587 : !
588 : ! !INPUT PARAMETERS:
589 : !! ncid : netCDF file id to read array input data from
590 : !! varname : netCDF variable name for array
591 : !! strt2d : vector specifying the index in varrd_2d where
592 : !! the first of the data values will be read
593 : !! cnt2d : varrd_2di dimensions
594 : integer , intent(in) :: ncid
595 : character (len=*), intent(in) :: varname
596 : integer , intent(in) :: strt2d(2)
597 : integer , intent(in) :: cnt2d (2)
598 : !
599 : ! !OUTPUT PARAMETERS:
600 : !! varrd_2di : intger array to fill
601 : integer , intent(out) :: varrd_2di(cnt2d(1), cnt2d(2))
602 : !
603 : ! !DESCRIPTION: Reads in a 2D netCDF integer array and does some error
604 : ! checking.
605 : !\\
606 : !\\
607 : ! !AUTHOR:
608 : ! John Tannahill (LLNL) and Jules Kouatchou
609 : !
610 : ! !REVISION HISTORY:
611 : ! See https://github.com/geoschem/hemco for complete history
612 : !EOP
613 : !-------------------------------------------------------------------------
614 : !BOC
615 : !
616 : ! !LOCAL VARIABLES:
617 : character (len=512) :: err_msg
618 : integer :: ierr
619 : integer :: varid
620 : !
621 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
622 :
623 0 : if (ierr /= NF90_NOERR) then
624 : err_msg = 'In Ncrd_2d_Int #1: ' // Trim (varname) // &
625 0 : ', ' // NF90_Strerror(ierr)
626 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
627 : end if
628 :
629 0 : ierr = NF90_Get_Var(ncid, varid, varrd_2di, start=strt2d, count=cnt2d)
630 :
631 0 : if (ierr /= NF90_NOERR) then
632 0 : err_msg = 'In Ncrd_2d_Int #2: ' // NF90_Strerror(ierr)
633 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
634 : end if
635 :
636 0 : end subroutine Ncrd_2d_Int
637 : !EOC
638 : !-------------------------------------------------------------------------
639 : !BOP
640 : !
641 : ! !IROUTINE: Ncrd_3d_R8
642 : !
643 : ! !INTERFACE:
644 : !
645 0 : subroutine Ncrd_3d_R8(varrd_3d, ncid, varname, strt3d, cnt3d)
646 : !
647 : ! !USES:
648 : !
649 : use netCDF
650 : use m_do_err_out
651 : !
652 : ! !INPUT PARAMETERS:
653 : !! ncid : netCDF file id to read array input data from
654 : !! varname : netCDF variable name for array
655 : !! strt3d : vector specifying the index in varrd_3d where
656 : !! the first of the data values will be read
657 : !! cnt3d : varrd_3d dimensions
658 : integer , intent(in) :: ncid
659 : character (len=*), intent(in) :: varname
660 : integer , intent(in) :: strt3d(3)
661 : integer , intent(in) :: cnt3d (3)
662 : !
663 : ! !OUTPUT PARAMETERS:
664 : !! varrd_3d : array to fill
665 : real*8 , intent(out) :: varrd_3d(cnt3d(1), cnt3d(2), &
666 : cnt3d(3))
667 : !
668 : ! !DESCRIPTION: Reads in a 3D netCDF real array and does some error checking.
669 : !\\
670 : !\\
671 : ! !AUTHOR:
672 : ! John Tannahill (LLNL) and Jules Kouatchou
673 : !
674 : ! !REVISION HISTORY:
675 : ! See https://github.com/geoschem/hemco for complete history
676 : !EOP
677 : !-------------------------------------------------------------------------
678 : !BOC
679 : !
680 : ! !LOCAL VARIABLES:
681 : character (len=512) :: err_msg
682 : integer :: ierr
683 : integer :: varid
684 : !
685 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
686 :
687 0 : if (ierr /= NF90_NOERR) then
688 : err_msg = 'In Ncrd_3d_R8 #1: ' // Trim (varname) // &
689 0 : ', ' // NF90_Strerror(ierr)
690 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
691 : end if
692 :
693 0 : ierr = NF90_Get_Var(ncid, varid, varrd_3d, start=strt3d, count=cnt3d)
694 :
695 0 : if (ierr /= NF90_NOERR) then
696 0 : err_msg = 'In Ncrd_3d_R8 #2: ' // NF90_Strerror(ierr)
697 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
698 : end if
699 :
700 0 : end subroutine Ncrd_3d_R8
701 : !EOC
702 : !-------------------------------------------------------------------------
703 : !BOP
704 : !
705 : ! !IROUTINE: Ncrd_3d_R4
706 : !
707 : ! !INTERFACE:
708 : !
709 0 : subroutine Ncrd_3d_R4(varrd_3d, ncid, varname, strt3d, cnt3d)
710 : !
711 : ! !USES:
712 : !
713 : use netCDF
714 : use m_do_err_out
715 : !
716 : ! !INPUT PARAMETERS:
717 : !! ncid : netCDF file id to read array input data from
718 : !! varname : netCDF variable name for array
719 : !! strt3d : vector specifying the index in varrd_3d where
720 : !! the first of the data values will be read
721 : !! cnt3d : varrd_3d dimensions
722 : integer , intent(in) :: ncid
723 : character (len=*), intent(in) :: varname
724 : integer , intent(in) :: strt3d(3)
725 : integer , intent(in) :: cnt3d (3)
726 : !
727 : ! !OUTPUT PARAMETERS:
728 : !! varrd_3d : array to fill
729 : real*4 , intent(out) :: varrd_3d(cnt3d(1), cnt3d(2), &
730 : cnt3d(3))
731 : !
732 : ! !DESCRIPTION: Reads in a 3D netCDF real array and does some error checking.
733 : !\\
734 : !\\
735 : ! !AUTHOR:
736 : ! John Tannahill (LLNL) and Jules Kouatchou
737 : !
738 : ! !REVISION HISTORY:
739 : ! See https://github.com/geoschem/hemco for complete history
740 : !EOP
741 : !-------------------------------------------------------------------------
742 : !BOC
743 : !
744 : ! !LOCAL VARIABLES:
745 : character (len=512) :: err_msg
746 : integer :: ierr
747 : integer :: varid
748 : !
749 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
750 :
751 0 : if (ierr /= NF90_NOERR) then
752 : err_msg = 'In Ncrd_3d_R4 #1: ' // Trim (varname) // &
753 0 : ', ' // NF90_Strerror(ierr)
754 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
755 : end if
756 :
757 0 : ierr = NF90_Get_Var(ncid, varid, varrd_3d, start=strt3d, count=cnt3d)
758 :
759 0 : if (ierr /= NF90_NOERR) then
760 0 : err_msg = 'In Ncrd_3d_R4 #2: ' // NF90_Strerror(ierr)
761 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
762 : end if
763 :
764 0 : end subroutine Ncrd_3d_R4
765 : !EOC
766 : !-------------------------------------------------------------------------
767 : !BOP
768 : !
769 : ! !IROUTINE: Ncrd_3d_Int
770 : !
771 : ! !INTERFACE:
772 : !
773 0 : subroutine Ncrd_3d_Int(varrd_3di, ncid, varname, strt3d, cnt3d)
774 : !
775 : ! !USES:
776 : !
777 : use netCDF
778 : use m_do_err_out
779 : !
780 : ! !INPUT PARAMETERS:
781 : !! ncid : netCDF file id to read array input data from
782 : !! varname : netCDF variable name for array
783 : !! strt3d : vector specifying the index in varrd_3d where
784 : !! the first of the data values will be read
785 : !! cnt3d : varrd_3di dimensions
786 : integer , intent(in) :: ncid
787 : character (len=*), intent(in) :: varname
788 : integer , intent(in) :: strt3d(3)
789 : integer , intent(in) :: cnt3d (3)
790 : !
791 : ! !OUTPUT PARAMETERS:
792 : !! varrd_3di : intger array to fill
793 : integer , intent(out) :: varrd_3di(cnt3d(1), cnt3d(2), &
794 : cnt3d(3))
795 : !
796 : ! !DESCRIPTION: Reads in a 3D netCDF integer array and does some error
797 : ! checking.
798 : !\\
799 : !\\
800 : ! !AUTHOR:
801 : ! John Tannahill (LLNL) and Jules Kouatchou
802 : !
803 : ! !REVISION HISTORY:
804 : ! See https://github.com/geoschem/hemco for complete history
805 : !EOP
806 : !-------------------------------------------------------------------------
807 : !BOC
808 : !
809 : ! !LOCAL VARIABLES:
810 : character (len=512) :: err_msg
811 : integer :: ierr
812 : integer :: varid
813 : !
814 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
815 :
816 0 : if (ierr /= NF90_NOERR) then
817 : err_msg = 'In Ncrd_3d_Int #1: ' // Trim (varname) // &
818 0 : ', ' // NF90_Strerror(ierr)
819 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
820 : end if
821 :
822 0 : ierr = NF90_Get_Var(ncid, varid, varrd_3di, start=strt3d, count=cnt3d)
823 :
824 0 : if (ierr /= NF90_NOERR) then
825 0 : err_msg = 'In Ncrd_3d_Int #2: ' // NF90_Strerror(ierr)
826 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
827 : end if
828 :
829 0 : end subroutine Ncrd_3d_Int
830 : !EOC
831 : !-------------------------------------------------------------------------
832 : !BOP
833 : !
834 : ! !IROUTINE: Ncrd_4d_R8
835 : !
836 : ! !INTERFACE:
837 : !
838 0 : subroutine Ncrd_4d_R8(varrd_4d, ncid, varname, strt4d, cnt4d)
839 : !
840 : ! !USES:
841 : !
842 : use netCDF
843 : use m_do_err_out
844 : !
845 : implicit none
846 : !
847 : ! !INPUT PARAMETERS:
848 : !! ncid : netCDF file id to read array input data from
849 : !! varname : netCDF variable name for array
850 : !! strt4d : vector specifying the index in varrd_4d where
851 : !! the first of the data values will be read
852 : !! cnt4d : varrd_4d dimensions
853 : integer , intent(in) :: ncid
854 : character (len=*), intent(in) :: varname
855 : integer , intent(in) :: strt4d(4)
856 : integer , intent(in) :: cnt4d (4)
857 : !
858 : ! !OUTPUT PARAMETERS:
859 : !! varrd_4d : array to fill
860 : real*8 , intent(out) :: varrd_4d(cnt4d(1), cnt4d(2), &
861 : cnt4d(3), cnt4d(4))
862 : !
863 : ! !DESCRIPTION: Reads in a 4D netCDF real array and does some error checking.
864 : !\\
865 : !\\
866 : ! !AUTHOR:
867 : ! John Tannahill (LLNL) and Jules Kouatchou
868 : !
869 : ! !REVISION HISTORY:
870 : ! See https://github.com/geoschem/hemco for complete history
871 : !EOP
872 : !-------------------------------------------------------------------------
873 : !BOC
874 : !
875 : ! !LOCAL VARIABLES:
876 : character (len=512) :: err_msg
877 : integer :: ierr
878 : integer :: varid
879 : !
880 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
881 :
882 0 : if (ierr /= NF90_NOERR) then
883 : err_msg = 'In Ncrd_4d_R8 #1: ' // Trim (varname) // &
884 0 : ', ' // NF90_Strerror(ierr)
885 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
886 : end if
887 :
888 0 : ierr = NF90_Get_Var(ncid, varid, varrd_4d, start=strt4d, count=cnt4d)
889 :
890 0 : if (ierr /= NF90_NOERR) then
891 0 : err_msg = 'In Ncrd_4d_R8 #2: ' // NF90_Strerror(ierr)
892 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
893 : end if
894 :
895 0 : end subroutine Ncrd_4d_R8
896 : !EOC
897 : !-------------------------------------------------------------------------
898 : !BOP
899 : !
900 : ! !IROUTINE: Ncrd_4d_R4
901 : !
902 : ! !INTERFACE:
903 : !
904 0 : subroutine Ncrd_4d_R4(varrd_4d, ncid, varname, strt4d, cnt4d)
905 : !
906 : ! !USES:
907 : !
908 : use netCDF
909 : use m_do_err_out
910 : !
911 : ! !INPUT PARAMETERS:
912 : !! ncid : netCDF file id to read array input data from
913 : !! varname : netCDF variable name for array
914 : !! strt4d : vector specifying the index in varrd_4d where
915 : !! the first of the data values will be read
916 : !! cnt4d : varrd_4d dimensions
917 : integer , intent(in) :: ncid
918 : character (len=*), intent(in) :: varname
919 : integer , intent(in) :: strt4d(4)
920 : integer , intent(in) :: cnt4d (4)
921 : !
922 : ! !OUTPUT PARAMETERS:
923 : !! varrd_4d : array to fill
924 : real*4 , intent(out) :: varrd_4d(cnt4d(1), cnt4d(2), &
925 : cnt4d(3), cnt4d(4))
926 : !
927 : ! !DESCRIPTION: Reads in a 4D netCDF real array and does some error checking.
928 : !\\
929 : !\\
930 : ! !AUTHOR:
931 : ! John Tannahill (LLNL) and Jules Kouatchou
932 : !
933 : ! !REVISION HISTORY:
934 : ! See https://github.com/geoschem/hemco for complete history
935 : !EOP
936 : !-------------------------------------------------------------------------
937 : !BOC
938 : !
939 : ! !LOCAL VARIABLES:
940 : character (len=512) :: err_msg
941 : integer :: ierr
942 : integer :: varid
943 : !
944 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
945 :
946 0 : if (ierr /= NF90_NOERR) then
947 : err_msg = 'In Ncrd_4d_R4 #1: ' // Trim (varname) // &
948 0 : ', ' // NF90_Strerror(ierr)
949 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
950 : end if
951 :
952 0 : ierr = NF90_Get_Var(ncid, varid, varrd_4d, start=strt4d, count=cnt4d)
953 :
954 0 : if (ierr /= NF90_NOERR) then
955 0 : err_msg = 'In Ncrd_4d_R4 #2: ' // NF90_Strerror(ierr)
956 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
957 : end if
958 :
959 0 : end subroutine Ncrd_4d_R4
960 : !EOC
961 : !-------------------------------------------------------------------------
962 : !BOP
963 : !
964 : ! !IROUTINE: Ncrd_4d_Int
965 : !
966 : ! !INTERFACE:
967 : !
968 0 : subroutine Ncrd_4d_Int(varrd_4di, ncid, varname, strt4d, cnt4d)
969 : !
970 : ! !USES:
971 : !
972 : use netCDF
973 : use m_do_err_out
974 : !
975 : ! !INPUT PARAMETERS:
976 : !! ncid : netCDF file id to read array input data from
977 : !! varname : netCDF variable name for array
978 : !! strt3d : vector specifying the index in varrd_3d where
979 : !! the first of the data values will be read
980 : !! cnt3d : varrd_3di dimensions
981 : integer , intent(in) :: ncid
982 : character (len=*), intent(in) :: varname
983 : integer , intent(in) :: strt4d(4)
984 : integer , intent(in) :: cnt4d (4)
985 : !
986 : ! !OUTPUT PARAMETERS:
987 : !! varrd_3di : intger array to fill
988 : integer , intent(out) :: varrd_4di(cnt4d(1), cnt4d(2), &
989 : cnt4d(3), cnt4d(4))
990 : !
991 : ! !DESCRIPTION: Reads in a 3D netCDF integer array and does some error
992 : ! checking.
993 : !\\
994 : !\\
995 : ! !AUTHOR:
996 : ! John Tannahill (LLNL) and Jules Kouatchou
997 : !
998 : ! !REVISION HISTORY:
999 : ! See https://github.com/geoschem/hemco for complete history
1000 : !EOP
1001 : !-------------------------------------------------------------------------
1002 : !BOC
1003 : !
1004 : ! !LOCAL VARIABLES:
1005 : character (len=512) :: err_msg
1006 : integer :: ierr
1007 : integer :: varid
1008 : !
1009 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
1010 :
1011 0 : if (ierr /= NF90_NOERR) then
1012 : err_msg = 'In Ncrd_3d_Int #1: ' // Trim (varname) // &
1013 0 : ', ' // NF90_Strerror(ierr)
1014 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
1015 : end if
1016 :
1017 0 : ierr = NF90_Get_Var(ncid, varid, varrd_4di, start=strt4d, count=cnt4d)
1018 :
1019 0 : if (ierr /= NF90_NOERR) then
1020 0 : err_msg = 'In Ncrd_3d_Int #2: ' // NF90_Strerror(ierr)
1021 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
1022 : end if
1023 :
1024 0 : end subroutine Ncrd_4d_Int
1025 : !EOC
1026 : !-------------------------------------------------------------------------
1027 : !BOP
1028 : !
1029 : ! !IROUTINE: Ncrd_5d_R8
1030 : !
1031 : ! !INTERFACE:
1032 : !
1033 0 : subroutine Ncrd_5d_R8 (varrd_5d, ncid, varname, strt5d, cnt5d)
1034 : !
1035 : ! !USES:
1036 : !
1037 : use netCDF
1038 : use m_do_err_out
1039 : !
1040 : ! !INPUT PARAMETERS:
1041 : !! ncid : netCDF file id to read array input data from
1042 : !! varname : netCDF variable name for array
1043 : !! strt5d : vector specifying the index in varrd_5d where
1044 : !! the first of the data values will be read
1045 : !! cnt5d : varrd_5d dimensions
1046 : integer , intent(in) :: ncid
1047 : character (len=*), intent(in) :: varname
1048 : integer , intent(in) :: strt5d(5)
1049 : integer , intent(in) :: cnt5d (5)
1050 : !
1051 : ! !OUTPUT PARAMETERS:
1052 : !! varrd_5d : array to fill
1053 : real*8 , intent(out) :: varrd_5d(cnt5d(1), cnt5d(2), &
1054 : cnt5d(3), cnt5d(4), &
1055 : cnt5d(5))
1056 : !
1057 : ! !DESCRIPTION: Reads in a 5D netCDF real array and does some error checking.
1058 : !\\
1059 : !\\
1060 : ! !AUTHOR:
1061 : ! John Tannahill (LLNL) and Jules Kouatchou
1062 : !
1063 : ! !REVISION HISTORY:
1064 : ! See https://github.com/geoschem/hemco for complete history
1065 : !EOP
1066 : !-------------------------------------------------------------------------
1067 : !BOC
1068 : !
1069 : ! !LOCAL VARIABLES:
1070 : character (len=512) :: err_msg
1071 : integer :: ierr
1072 : integer :: varid
1073 : !
1074 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
1075 :
1076 0 : if (ierr /= NF90_NOERR) then
1077 : err_msg = 'In Ncrd_5d_R8 #1: ' // Trim (varname) // &
1078 0 : ', ' // NF90_Strerror(ierr)
1079 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
1080 : end if
1081 :
1082 0 : ierr = NF90_Get_Var(ncid, varid, varrd_5d, start=strt5d, count=cnt5d)
1083 :
1084 0 : if (ierr /= NF90_NOERR) then
1085 0 : err_msg = 'In Ncrd_5d_R8 #2: ' // NF90_Strerror(ierr)
1086 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
1087 : end if
1088 :
1089 0 : end subroutine Ncrd_5d_R8
1090 : !EOC
1091 : !-------------------------------------------------------------------------
1092 : !BOP
1093 : !
1094 : ! !IROUTINE: Ncrd_5d_R4
1095 : !
1096 : ! !INTERFACE:
1097 : !
1098 0 : subroutine Ncrd_5d_R4(varrd_5d, ncid, varname, strt5d, cnt5d)
1099 : !
1100 : ! !USES:
1101 : !
1102 : use netCDF
1103 : use m_do_err_out
1104 : !
1105 : ! !INPUT PARAMETERS:
1106 : !! ncid : netCDF file id to read array input data from
1107 : !! varname : netCDF variable name for array
1108 : !! strt5d : vector specifying the index in varrd_5d where
1109 : !! the first of the data values will be read
1110 : !! cnt5d : varrd_5d dimensions
1111 : integer , intent(in) :: ncid
1112 : character (len=*), intent(in) :: varname
1113 : integer , intent(in) :: strt5d(5)
1114 : integer , intent(in) :: cnt5d (5)
1115 : !
1116 : ! !OUTPUT PARAMETERS:
1117 : !! varrd_5d : array to fill
1118 : real*4 , intent(out) :: varrd_5d(cnt5d(1), cnt5d(2), &
1119 : cnt5d(3), cnt5d(4), &
1120 : cnt5d(5))
1121 : !
1122 : ! !DESCRIPTION: Reads in a 5D netCDF real array and does some error checking.
1123 : !\\
1124 : !\\
1125 : ! !AUTHOR:
1126 : ! John Tannahill (LLNL) and Jules Kouatchou
1127 : !
1128 : ! !REVISION HISTORY:
1129 : ! See https://github.com/geoschem/hemco for complete history
1130 : !EOP
1131 : !-------------------------------------------------------------------------
1132 : !BOC
1133 : !
1134 : ! !LOCAL VARIABLES:
1135 : character (len=512) :: err_msg
1136 : integer :: ierr
1137 : integer :: varid
1138 : !
1139 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
1140 :
1141 0 : if (ierr /= NF90_NOERR) then
1142 : err_msg = 'In Ncrd_5d_R4 #1: ' // Trim (varname) // &
1143 0 : ', ' // NF90_Strerror(ierr)
1144 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
1145 : end if
1146 :
1147 0 : ierr = NF90_Get_Var(ncid, varid, varrd_5d, start=strt5d, count=cnt5d)
1148 :
1149 0 : if (ierr /= NF90_NOERR) then
1150 0 : err_msg = 'In Ncrd_5d_R4 #2: ' // NF90_Strerror(ierr)
1151 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
1152 : end if
1153 :
1154 0 : end subroutine Ncrd_5d_R4
1155 : !EOC
1156 : !-------------------------------------------------------------------------
1157 : !BOP
1158 : !
1159 : ! !IROUTINE: Ncrd_6d_R8
1160 : !
1161 : ! !INTERFACE:
1162 : !
1163 0 : subroutine Ncrd_6d_R8(varrd_6d, ncid, varname, strt6d, cnt6d)
1164 : !
1165 : ! !USES:
1166 : !
1167 : use netCDF
1168 : use m_do_err_out
1169 : !
1170 : ! !INPUT PARAMETERS:
1171 : !! ncid : netCDF file id to read array input data from
1172 : !! varname : netCDF variable name for array
1173 : !! strt5d : vector specifying the index in varrd_5d where
1174 : !! the first of the data values will be read
1175 : !! cnt5d : varrd_5d dimensions
1176 : integer , intent(in) :: ncid
1177 : character (len=*), intent(in) :: varname
1178 : integer , intent(in) :: strt6d(6)
1179 : integer , intent(in) :: cnt6d (6)
1180 : !
1181 : ! !OUTPUT PARAMETERS:
1182 : !! varrd_5d : array to fill
1183 : real*8 , intent(out) :: varrd_6d(cnt6d(1), cnt6d(2), &
1184 : cnt6d(3), cnt6d(4), &
1185 : cnt6d(5), cnt6d(6))
1186 : !
1187 : ! !DESCRIPTION: Reads in a 5D netCDF real array and does some error checking.
1188 : !\\
1189 : !\\
1190 : ! !AUTHOR:
1191 : ! John Tannahill (LLNL) and Jules Kouatchou
1192 : !
1193 : ! !REVISION HISTORY:
1194 : ! 20 Dec 2011 - R. Yantosca - Initial version
1195 : ! See https://github.com/geoschem/hemco for complete history
1196 : !EOP
1197 : !-------------------------------------------------------------------------
1198 : !BOC
1199 : !
1200 : ! !LOCAL VARIABLES:
1201 : character (len=512) :: err_msg
1202 : integer :: ierr
1203 : integer :: varid
1204 : !
1205 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
1206 :
1207 0 : if (ierr /= NF90_NOERR) then
1208 : err_msg = 'In Ncrd_6d_R8 #1: ' // Trim (varname) // &
1209 0 : ', ' // NF90_Strerror(ierr)
1210 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
1211 : end if
1212 :
1213 0 : ierr = NF90_Get_Var(ncid, varid, varrd_6d, start=strt6d, count=cnt6d)
1214 :
1215 0 : if (ierr /= NF90_NOERR) then
1216 0 : err_msg = 'In Ncrd_6d_R8 #2: ' // NF90_Strerror(ierr)
1217 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
1218 : end if
1219 :
1220 0 : end subroutine Ncrd_6d_R8
1221 : !EOC
1222 : !-------------------------------------------------------------------------
1223 : !BOP
1224 : !
1225 : ! !IROUTINE: Ncrd_6d_R4
1226 : !
1227 : ! !INTERFACE:
1228 : !
1229 0 : subroutine Ncrd_6d_R4(varrd_6d, ncid, varname, strt6d, cnt6d)
1230 : !
1231 : ! !USES:
1232 : !
1233 : use netCDF
1234 : use m_do_err_out
1235 : !
1236 : ! !INPUT PARAMETERS:
1237 : !! ncid : netCDF file id to read array input data from
1238 : !! varname : netCDF variable name for array
1239 : !! strt5d : vector specifying the index in varrd_5d where
1240 : !! the first of the data values will be read
1241 : !! cnt5d : varrd_5d dimensions
1242 : integer , intent(in) :: ncid
1243 : character (len=*), intent(in) :: varname
1244 : integer , intent(in) :: strt6d(6)
1245 : integer , intent(in) :: cnt6d (6)
1246 : !
1247 : ! !OUTPUT PARAMETERS:
1248 : !! varrd_5d : array to fill
1249 : real*4 , intent(out) :: varrd_6d(cnt6d(1), cnt6d(2), &
1250 : cnt6d(3), cnt6d(4), &
1251 : cnt6d(5), cnt6d(6))
1252 : !
1253 : ! !DESCRIPTION: Reads in a 5D netCDF real array and does some error checking.
1254 : !\\
1255 : !\\
1256 : ! !AUTHOR:
1257 : ! John Tannahill (LLNL) and Jules Kouatchou
1258 : !
1259 : ! !REVISION HISTORY:
1260 : ! See https://github.com/geoschem/hemco for complete history
1261 : !EOP
1262 : !-------------------------------------------------------------------------
1263 : !BOC
1264 : !
1265 : ! !LOCAL VARIABLES:
1266 : character (len=512) :: err_msg
1267 : integer :: ierr
1268 : integer :: varid
1269 : !
1270 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
1271 :
1272 0 : if ( ierr /= NF90_NOERR) then
1273 : err_msg = 'In Ncrd_6d_R4 #1: ' // Trim (varname) // &
1274 0 : ', ' // NF90_Strerror(ierr)
1275 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
1276 : end if
1277 :
1278 0 : ierr = NF90_Get_Var(ncid, varid, varrd_6d, start=strt6d, count=cnt6d)
1279 :
1280 0 : if (ierr /= NF90_NOERR) then
1281 0 : err_msg = 'In Ncrd_6d_R4 #2: ' // NF90_Strerror(ierr)
1282 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
1283 : end if
1284 :
1285 0 : end subroutine Ncrd_6d_R4
1286 : !EOC
1287 : !-------------------------------------------------------------------------
1288 : !BOP
1289 : !
1290 : ! !IROUTINE: Ncrd_7d_R8
1291 : !
1292 : ! !INTERFACE:
1293 : !
1294 0 : subroutine Ncrd_7d_R8(varrd_7d, ncid, varname, strt7d, cnt7d)
1295 : !
1296 : ! !USES:
1297 : !
1298 : use netCDF
1299 : use m_do_err_out
1300 : !
1301 : ! !INPUT PARAMETERS:
1302 : !! ncid : netCDF file id to read array input data from
1303 : !! varname : netCDF variable name for array
1304 : !! strt7d : vector specifying the index in varrd_7d where
1305 : !! the first of the data values will be read
1306 : !! cnt7d : varrd_7d dimensions
1307 : integer , intent(in) :: ncid
1308 : character (len=*), intent(in) :: varname
1309 : integer , intent(in) :: strt7d(7)
1310 : integer , intent(in) :: cnt7d (7)
1311 : !
1312 : ! !OUTPUT PARAMETERS:
1313 : !! varrd_5d : array to fill
1314 : real*8 , intent(out) :: varrd_7d(cnt7d(1), cnt7d(2), &
1315 : cnt7d(3), cnt7d(4), &
1316 : cnt7d(5), cnt7d(6), &
1317 : cnt7d(7))
1318 : !
1319 : ! !DESCRIPTION: Reads in a 7D netCDF real array and does some error checking.
1320 : !\\
1321 : !\\
1322 : ! !AUTHOR:
1323 : ! John Tannahill (LLNL) and Jules Kouatchou
1324 : !
1325 : ! !REVISION HISTORY:
1326 : ! 20 Dec 2011 - R. Yantosca - Initial version
1327 : ! See https://github.com/geoschem/hemco for complete history
1328 : !EOP
1329 : !-------------------------------------------------------------------------
1330 : !BOC
1331 : !
1332 : ! !LOCAL VARIABLES:
1333 : character (len=512) :: err_msg
1334 : integer :: ierr
1335 : integer :: varid
1336 : !
1337 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
1338 :
1339 0 : if (ierr /= NF90_NOERR) then
1340 : err_msg = 'In Ncrd_7d_R8 #1: ' // Trim (varname) // &
1341 0 : ', ' // NF90_Strerror(ierr)
1342 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
1343 : end if
1344 :
1345 0 : ierr = NF90_Get_Var(ncid, varid, varrd_7d, start=strt7d, count=cnt7d)
1346 :
1347 0 : if (ierr /= NF90_NOERR) then
1348 0 : err_msg = 'In Ncrd_7d_R8 #2: ' // NF90_Strerror(ierr)
1349 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
1350 : end if
1351 :
1352 0 : end subroutine Ncrd_7d_R8
1353 : !EOC
1354 : !-------------------------------------------------------------------------
1355 : !BOP
1356 : !
1357 : ! !IROUTINE: Ncrd_7d_R4
1358 : !
1359 : ! !INTERFACE:
1360 : !
1361 0 : subroutine Ncrd_7d_R4(varrd_7d, ncid, varname, strt7d, cnt7d)
1362 : !
1363 : ! !USES:
1364 : !
1365 : use netCDF
1366 : use m_do_err_out
1367 : !
1368 : ! !INPUT PARAMETERS:
1369 : !! ncid : netCDF file id to read array input data from
1370 : !! varname : netCDF variable name for array
1371 : !! strt7d : vector specifying the index in varrd_7d where
1372 : !! the first of the data values will be read
1373 : !! cnt7d : varrd_7d dimensions
1374 : integer , intent(in) :: ncid
1375 : character (len=*), intent(in) :: varname
1376 : integer , intent(in) :: strt7d(7)
1377 : integer , intent(in) :: cnt7d (7)
1378 : !
1379 : ! !OUTPUT PARAMETERS:
1380 : !! varrd_7d : array to fill
1381 : real*4 , intent(out) :: varrd_7d(cnt7d(1), cnt7d(2), &
1382 : cnt7d(3), cnt7d(4), &
1383 : cnt7d(5), cnt7d(6), &
1384 : cnt7d(7))
1385 : !
1386 : ! !DESCRIPTION: Reads in a 7D netCDF real array and does some error checking.
1387 : !\\
1388 : !\\
1389 : ! !AUTHOR:
1390 : ! John Tannahill (LLNL) and Jules Kouatchou
1391 : !
1392 : ! !REVISION HISTORY:
1393 : ! 20 Dec 2011 - R. Yantosca - Initial version
1394 : ! See https://github.com/geoschem/hemco for complete history
1395 : !EOP
1396 : !-------------------------------------------------------------------------
1397 : !BOC
1398 : !
1399 : ! !LOCAL VARIABLES:
1400 : character (len=512) :: err_msg
1401 : integer :: ierr
1402 : integer :: varid
1403 : !
1404 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
1405 :
1406 0 : if (ierr /= NF90_NOERR) then
1407 : err_msg = 'In Ncrd_7d_R4 #1: ' // Trim (varname) // &
1408 0 : ', ' // NF90_Strerror(ierr)
1409 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
1410 : end if
1411 :
1412 0 : ierr = NF90_Get_Var(ncid, varid, varrd_7d, start=strt7d, count=cnt7d)
1413 :
1414 0 : if (ierr /= NF90_NOERR) then
1415 0 : err_msg = 'In Ncrd_7d_R4 #2: ' // NF90_Strerror(ierr)
1416 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
1417 : end if
1418 :
1419 0 : end subroutine Ncrd_7d_R4
1420 : !EOC
1421 : !-------------------------------------------------------------------------
1422 : !BOP
1423 : !
1424 : ! !IROUTINE: Ncrd_1d_Char
1425 : !
1426 : ! !INTERFACE:
1427 : !
1428 0 : subroutine Ncrd_1d_Char(varrd_1dc, ncid, varname, strt1d, cnt1d)
1429 : !
1430 : ! !USES:
1431 : !
1432 : use netCDF
1433 : use m_do_err_out
1434 : !
1435 : ! !INPUT PARAMETERS:
1436 : !
1437 : !! ncid : netCDF file id to read array input data from
1438 : !! varname : netCDF variable name for array
1439 : !! strt1d : vector specifying the index in varrd_1dc where
1440 : !! the first of the data values will be read
1441 : !! cnt1d : varrd_1dc dimension
1442 : integer , intent(in) :: ncid
1443 : character (len=*), intent(in) :: varname
1444 : integer , intent(in) :: strt1d(1)
1445 : integer , intent(in) :: cnt1d (1)
1446 : !
1447 : ! !OUTPUT PARAMETERS:
1448 : !! varrd_1dc : intger array to fill
1449 : character (len=1), intent(out) :: varrd_1dc(cnt1d(1))
1450 : !
1451 : ! !DESCRIPTION: Reads in a 1D netCDF character array and does some error
1452 : ! checking.
1453 : !\\
1454 : !\\ !AUTHOR:
1455 : ! Jules Kouatchou
1456 : !
1457 : ! !REVISION HISTORY:
1458 : ! See https://github.com/geoschem/hemco for complete history
1459 : !EOP
1460 : !-------------------------------------------------------------------------
1461 : !BOC
1462 : !
1463 : ! !LOCAL VARIABLES:
1464 : character (len=512) :: err_msg
1465 : integer :: ierr
1466 : integer :: varid
1467 : !
1468 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
1469 :
1470 0 : if (ierr /= NF90_NOERR) then
1471 : err_msg = 'In Ncrd_1d_Char #1: ' // Trim (varname) // &
1472 0 : ', ' // NF90_Strerror(ierr)
1473 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
1474 : end if
1475 :
1476 0 : ierr = NF90_Get_Var(ncid, varid, varrd_1dc, start=strt1d, count=cnt1d)
1477 :
1478 0 : if (ierr /= NF90_NOERR) then
1479 0 : err_msg = 'In Ncrd_1d_Char #2: ' // NF90_Strerror(ierr)
1480 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
1481 : end if
1482 :
1483 0 : end subroutine Ncrd_1d_Char
1484 : !EOC
1485 : !-------------------------------------------------------------------------
1486 : !BOP
1487 : !
1488 : ! !IROUTINE: Ncrd_2d_Char
1489 : !
1490 : ! !INTERFACE:
1491 : !
1492 0 : subroutine Ncrd_2d_Char(varrd_2dc, ncid, varname, strt2d, cnt2d)
1493 : !
1494 : ! !USES:
1495 : !
1496 : use netCDF
1497 : use m_do_err_out
1498 : !
1499 : ! !INPUT PARAMETERS:
1500 : !! ncid : netCDF file id to read array input data from
1501 : !! varname : netCDF variable name for array
1502 : !! strt2d : vector specifying the index in varrd_2dc where
1503 : !! the first of the data values will be read
1504 : !! cnt2d : varrd_2dc dimensions
1505 : integer , intent(in) :: ncid
1506 : character (len=*), intent(in) :: varname
1507 : integer , intent(in) :: strt2d(2)
1508 : integer , intent(in) :: cnt2d (2)
1509 : !
1510 : ! !OUTPUT PARAMETERS:
1511 : !! varrd_2dc : charcter array to fill
1512 : character , intent(out) :: varrd_2dc(cnt2d(1), cnt2d(2))
1513 : !
1514 : ! !DESCRIPTION: Reads in a 2D netCDF character array and does some error
1515 : ! checking.
1516 : !\\
1517 : !\\
1518 : ! !AUTHOR:
1519 : ! Jules Kouatchou
1520 : !
1521 : ! !REVISION HISTORY:
1522 : ! See https://github.com/geoschem/hemco for complete history
1523 : !EOP
1524 : !-------------------------------------------------------------------------
1525 : !BOC
1526 : !
1527 : ! !LOCAL VARIABLES:
1528 : character (len=512) :: err_msg
1529 : integer :: ierr
1530 : integer :: varid
1531 : !
1532 0 : ierr = NF90_Inq_VarId(ncid, varname, varid)
1533 :
1534 0 : if (ierr /= NF90_NOERR) then
1535 : err_msg = 'In Ncrd_2d_Char #1: ' // Trim (varname) // &
1536 0 : ', ' // NF90_Strerror(ierr)
1537 0 : call Do_Err_Out (err_msg, .true., 1, ncid, 0, 0, 0.0d0, 0.0d0)
1538 : end if
1539 :
1540 0 : ierr = NF90_Get_Var(ncid, varid, varrd_2dc, start=strt2d, count=cnt2d)
1541 :
1542 0 : if (ierr /= NF90_NOERR) then
1543 0 : err_msg = 'In Ncrd_2d_Char #2: ' // NF90_Strerror(ierr)
1544 0 : call Do_Err_Out (err_msg, .true., 2, ncid, varid, 0, 0.0d0, 0.0d0)
1545 : end if
1546 :
1547 0 : end subroutine Ncrd_2d_Char
1548 : !EOC
1549 : !------------------------------------------------------------------------
1550 : end module HCO_m_netcdf_io_read
1551 :
|