36 character(len=*),
intent(in) :: grid
37 logical(LGP) :: layered
51 input_fname, iout, kper)
52 integer(I4B),
dimension(:),
pointer,
contiguous,
intent(in) :: int1d
53 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
57 character(len=*),
intent(in) :: input_fname
58 integer(I4B),
intent(in) :: iout
59 integer(I4B),
optional,
intent(in) :: kper
60 integer(I4B) :: varid, iper
61 logical(LGP) :: layered
64 layered = (idt%layered .and.
is_layered(nc_vars%grid))
66 if (
present(kper))
then
83 varid = nc_vars%varid(idt%tagname)
94 integer(I4B),
dimension(:, :),
pointer,
contiguous,
intent(in) :: int2d
95 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
99 character(len=*),
intent(in) :: input_fname
100 integer(I4B),
intent(in) :: iout
101 integer(I4B) :: varid
102 logical(LGP) :: layered
104 layered = (idt%layered .and.
is_layered(nc_vars%grid))
110 varid = nc_vars%varid(idt%tagname)
120 integer(I4B),
dimension(:, :, :),
pointer,
contiguous,
intent(in) :: int3d
121 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
125 character(len=*),
intent(in) :: input_fname
126 integer(I4B),
intent(in) :: iout
127 integer(I4B) :: varid
128 logical(LGP) :: layered
130 layered = (idt%layered .and.
is_layered(nc_vars%grid))
136 varid = nc_vars%varid(idt%tagname)
145 input_fname, iout, kper, iaux)
146 real(DP),
dimension(:),
pointer,
contiguous,
intent(in) :: dbl1d
147 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
151 character(len=*),
intent(in) :: input_fname
152 integer(I4B),
intent(in) :: iout
153 integer(I4B),
optional,
intent(in) :: kper
154 integer(I4B),
optional,
intent(in) :: iaux
155 integer(I4B) :: varid, iper
156 logical(LGP) :: layered
159 layered = (idt%layered .and.
is_layered(nc_vars%grid))
161 if (
present(kper))
then
168 iper, input_fname, iaux)
176 iper, input_fname, iaux)
178 varid = nc_vars%varid(idt%tagname)
189 real(DP),
dimension(:, :),
pointer,
contiguous,
intent(in) :: dbl2d
190 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
194 character(len=*),
intent(in) :: input_fname
195 integer(I4B),
intent(in) :: iout
196 integer(I4B) :: varid
197 logical(LGP) :: layered
199 layered = (idt%layered .and.
is_layered(nc_vars%grid))
205 varid = nc_vars%varid(idt%tagname)
215 real(DP),
dimension(:, :, :),
pointer,
contiguous,
intent(in) :: dbl3d
216 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
220 character(len=*),
intent(in) :: input_fname
221 integer(I4B),
intent(in) :: iout
222 integer(I4B) :: varid
223 logical(LGP) :: layered
225 layered = (idt%layered .and.
is_layered(nc_vars%grid))
231 varid = nc_vars%varid(idt%tagname)
241 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: int1d
243 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
246 integer(I4B),
intent(in) :: varid
247 character(len=*),
intent(in) :: input_fname
248 integer(I4B),
dimension(:),
allocatable :: array_shape
249 integer(I4B),
dimension(:, :, :),
contiguous,
pointer :: int3d_ptr
250 integer(I4B),
dimension(:, :),
contiguous,
pointer :: int2d_ptr
251 integer(I4B) :: nvals
256 if (idt%shape ==
'NODES')
then
258 nvals = product(mshape)
259 if (
size(mshape) == 3)
then
260 int3d_ptr(1:mshape(3), 1:mshape(2), 1:mshape(1)) => int1d(1:nvals)
261 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int3d_ptr), &
263 else if (
size(mshape) == 2)
then
264 int2d_ptr(1:mshape(2), 1:mshape(1)) => int1d(1:nvals)
265 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int2d_ptr), &
267 else if (
size(mshape) == 1)
then
268 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int1d), nc_vars%nc_fname)
274 nvals = array_shape(1)
276 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int1d), nc_vars%nc_fname)
286 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: int1d
288 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
291 integer(I4B),
intent(in) :: iper
292 character(len=*),
intent(in) :: input_fname
293 integer(I4B),
dimension(:),
allocatable :: layer_shape
294 integer(I4B) :: varid, nlay, ncpl
297 varid = nc_vars%varid(idt%tagname)
300 ncpl = product(layer_shape)
302 select case (idt%shape)
303 case (
'NCPL',
'NAUX NCPL')
304 if (nc_vars%grid ==
'STRUCTURED')
then
305 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int1d, &
306 start=(/1, 1,
kper/), &
307 count=(/mshape(3), mshape(2), 1/)), &
309 else if (nc_vars%grid ==
'LAYERED MESH')
then
310 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int1d, &
311 start=(/1,
kper/), count=(/ncpl, 1/)), &
314 case (
'NODES',
'NAUX NODES')
315 write (
errmsg,
'(a,a,a)') &
316 'Timeseries netcdf input read not supported for full grid int1d &
317 &type ('//trim(idt%tagname)//
').'
328 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: int1d
330 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
333 character(len=*),
intent(in) :: input_fname
334 integer(I4B),
dimension(:),
allocatable :: layer_shape
335 integer(I4B) :: nlay, varid
336 integer(I4B) :: k, ncpl
337 integer(I4B) :: index_start, index_stop
338 integer(I4B),
dimension(:),
contiguous,
pointer :: int1d_ptr
344 ncpl = product(layer_shape)
347 varid = nc_vars%varid(idt%tagname, layer=k)
348 index_stop = index_start + ncpl - 1
349 int1d_ptr(1:ncpl) => int1d(index_start:index_stop)
350 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int1d_ptr), &
352 index_start = index_stop + 1
362 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: int1d
364 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
367 integer(I4B),
intent(in) :: iper
368 character(len=*),
intent(in) :: input_fname
369 integer(I4B),
dimension(:),
allocatable :: layer_shape
370 integer(I4B) :: nlay, varid
371 integer(I4B) :: ncpl, nvals
374 nvals = product(mshape)
375 ncpl = product(layer_shape)
377 varid = nc_vars%varid(idt%tagname)
378 select case (idt%shape)
379 case (
'NCPL',
'NAUX NCPL')
380 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int1d, &
381 start=(/1,
kper/), count=(/ncpl, 1/)), &
383 case (
'NODES',
'NAUX NODES')
384 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int1d, &
385 start=(/1,
kper/), count=(/nvals, 1/)), &
395 integer(I4B),
dimension(:, :),
contiguous,
pointer,
intent(in) :: int2d
397 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
400 integer(I4B),
intent(in) :: varid
401 character(len=*),
intent(in) :: input_fname
402 integer(I4B),
dimension(:),
contiguous,
pointer :: int1d_ptr
403 integer(I4B),
dimension(:),
allocatable :: array_shape
404 integer(I4B) :: ncpl, nlay
408 if (nc_vars%grid ==
'STRUCTURED')
then
409 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int2d), nc_vars%nc_fname)
410 else if (nc_vars%grid ==
'LAYERED MESH')
then
412 ncpl = product(array_shape)
413 int1d_ptr(1:ncpl) => int2d(:, :)
414 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int1d_ptr), &
423 integer(I4B),
dimension(:, :),
contiguous,
pointer,
intent(in) :: int2d
425 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
428 character(len=*),
intent(in) :: input_fname
429 integer(I4B),
dimension(:),
allocatable :: layer_shape
431 integer(I4B) :: ncpl, nlay, varid
432 integer(I4B),
dimension(:),
contiguous,
pointer :: int1d_ptr
436 if (
size(mshape) == 3)
then
437 write (
errmsg,
'(a,a,a)') &
438 'Layered netcdf read not supported for DIS int2d type ('// &
439 trim(idt%tagname)//
').'
442 else if (
size(mshape) == 2)
then
444 ncpl = layer_shape(1)
446 varid = nc_vars%varid(idt%tagname, layer=k)
447 int1d_ptr(1:ncpl) => int2d(1:ncpl, k)
448 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int1d_ptr), &
458 integer(I4B),
dimension(:, :, :),
contiguous,
pointer,
intent(in) :: int3d
460 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
463 integer(I4B),
intent(in) :: varid
464 character(len=*),
intent(in) :: input_fname
465 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int3d), nc_vars%nc_fname)
472 integer(I4B),
dimension(:, :, :),
contiguous,
pointer,
intent(in) :: int3d
474 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
477 character(len=*),
intent(in) :: input_fname
478 integer(I4B),
dimension(:),
allocatable :: layer_shape
480 integer(I4B) :: ncpl, nlay, varid
481 integer(I4B) :: index_start, index_stop
482 integer(I4B),
dimension(:),
contiguous,
pointer :: int1d_ptr
487 ncpl = product(layer_shape)
490 varid = nc_vars%varid(idt%tagname, layer=k)
491 index_stop = index_start + ncpl - 1
492 int1d_ptr(1:ncpl) => int3d(:, :, k:k)
493 call nf_verify(nf90_get_var(nc_vars%ncid, varid, int1d_ptr), &
495 index_start = index_stop + 1
503 real(DP),
dimension(:),
contiguous,
pointer,
intent(in) :: dbl1d
505 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
508 integer(I4B),
intent(in) :: varid
509 character(len=*),
intent(in) :: input_fname
510 integer(I4B),
dimension(:),
allocatable :: array_shape
511 real(DP),
dimension(:, :, :),
contiguous,
pointer :: dbl3d_ptr
512 real(DP),
dimension(:, :),
contiguous,
pointer :: dbl2d_ptr
513 integer(I4B) :: nvals
518 if (idt%shape ==
'NODES')
then
520 nvals = product(mshape)
521 if (
size(mshape) == 3)
then
522 dbl3d_ptr(1:mshape(3), 1:mshape(2), 1:mshape(1)) => dbl1d(1:nvals)
523 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl3d_ptr), &
525 else if (
size(mshape) == 2)
then
526 dbl2d_ptr(1:mshape(2), 1:mshape(1)) => dbl1d(1:nvals)
527 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl2d_ptr), &
529 else if (
size(mshape) == 1)
then
530 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl1d), nc_vars%nc_fname)
536 nvals = array_shape(1)
538 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl1d), nc_vars%nc_fname)
545 iper, input_fname, iaux)
548 real(DP),
dimension(:),
contiguous,
pointer,
intent(in) :: dbl1d
550 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
553 integer(I4B),
intent(in) :: iper
554 character(len=*),
intent(in) :: input_fname
555 integer(I4B),
optional,
intent(in) :: iaux
556 integer(I4B),
dimension(:),
allocatable :: layer_shape
557 real(DP),
dimension(:, :, :),
contiguous,
pointer :: dbl3d
558 integer(I4B) :: varid, nlay, ncpl, nvals
565 if (
present(iaux))
then
566 varid = nc_vars%varid(idt%tagname, iaux=iaux)
568 varid = nc_vars%varid(idt%tagname)
572 ncpl = product(layer_shape)
573 nvals = product(mshape)
575 select case (idt%shape)
576 case (
'NCPL',
'NAUX NCPL')
577 if (nc_vars%grid ==
'STRUCTURED')
then
578 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl1d, &
579 start=(/1, 1,
kper/), &
580 count=(/mshape(3), mshape(2), 1/)), &
582 else if (nc_vars%grid ==
'LAYERED MESH')
then
583 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl1d, &
584 start=(/1,
kper/), count=(/ncpl, 1/)), &
587 case (
'NODES',
'NAUX NODES')
588 if (nc_vars%grid ==
'STRUCTURED')
then
589 dbl3d(1:mshape(3), 1:mshape(2), 1:mshape(1)) => dbl1d(1:nvals)
590 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl3d, &
591 start=(/1, 1, 1,
kper/), &
592 count=(/mshape(3), mshape(2), mshape(1), &
593 1/)), nc_vars%nc_fname)
594 else if (nc_vars%grid ==
'LAYERED MESH')
then
595 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl1d, &
596 start=(/1,
kper/), count=(/nvals, 1/)), &
607 real(DP),
dimension(:),
contiguous,
pointer,
intent(in) :: dbl1d
609 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
612 character(len=*),
intent(in) :: input_fname
613 integer(I4B),
dimension(:),
allocatable :: layer_shape
614 integer(I4B) :: nlay, varid
615 integer(I4B) :: k, ncpl
616 integer(I4B) :: index_start, index_stop
617 real(DP),
dimension(:),
contiguous,
pointer :: dbl1d_ptr
622 ncpl = product(layer_shape)
625 varid = nc_vars%varid(idt%tagname, layer=k)
626 index_stop = index_start + ncpl - 1
627 dbl1d_ptr(1:ncpl) => dbl1d(index_start:index_stop)
628 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl1d_ptr), &
630 index_start = index_stop + 1
637 iper, input_fname, iaux)
640 real(DP),
dimension(:),
contiguous,
pointer,
intent(in) :: dbl1d
642 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
645 integer(I4B),
intent(in) :: iper
646 character(len=*),
intent(in) :: input_fname
647 integer(I4B),
optional,
intent(in) :: iaux
648 integer(I4B),
dimension(:),
allocatable :: layer_shape
649 integer(I4B) :: nlay, varid
650 integer(I4B) :: k, n, ncpl, idx
651 real(DP),
dimension(:),
contiguous,
pointer :: dbl1d_ptr
654 ncpl = product(layer_shape)
655 allocate (dbl1d_ptr(ncpl))
658 if (
present(iaux))
then
659 varid = nc_vars%varid(idt%tagname, layer=k, iaux=iaux)
661 varid = nc_vars%varid(idt%tagname, layer=k)
663 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl1d_ptr, &
664 start=(/1,
kper/), count=(/ncpl, 1/)), &
666 if (idt%shape ==
'NODES' .or. idt%shape ==
'NAUX NODES')
then
668 idx = (k - 1) * ncpl + n
669 dbl1d(idx) = dbl1d_ptr(n)
671 else if (idt%shape ==
'NCPL' .or. idt%shape ==
'NAUX NCPL')
then
673 dbl1d(n) = dbl1d_ptr(n)
679 deallocate (dbl1d_ptr)
686 real(DP),
dimension(:, :),
contiguous,
pointer,
intent(in) :: dbl2d
688 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
691 integer(I4B),
intent(in) :: varid
692 character(len=*),
intent(in) :: input_fname
693 real(DP),
dimension(:),
contiguous,
pointer :: dbl1d_ptr
694 integer(I4B),
dimension(:),
allocatable :: array_shape
695 integer(I4B) :: ncpl, nlay
699 if (nc_vars%grid ==
'STRUCTURED')
then
700 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl2d), nc_vars%nc_fname)
701 else if (nc_vars%grid ==
'LAYERED MESH')
then
703 ncpl = product(array_shape)
704 dbl1d_ptr(1:ncpl) => dbl2d(:, :)
705 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl1d_ptr), &
714 real(DP),
dimension(:, :),
contiguous,
pointer,
intent(in) :: dbl2d
716 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
719 character(len=*),
intent(in) :: input_fname
720 integer(I4B),
dimension(:),
allocatable :: layer_shape
722 integer(I4B) :: ncpl, nlay, varid
723 real(DP),
dimension(:),
contiguous,
pointer :: dbl1d_ptr
727 if (
size(mshape) == 3)
then
728 write (
errmsg,
'(a,a,a)') &
729 'Layered netcdf read not supported for DIS dbl2d type ('// &
730 trim(idt%tagname)//
').'
733 else if (
size(mshape) == 2)
then
735 ncpl = layer_shape(1)
737 varid = nc_vars%varid(idt%tagname, layer=k)
738 dbl1d_ptr(1:ncpl) => dbl2d(1:ncpl, k)
739 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl1d_ptr), &
749 real(DP),
dimension(:, :, :),
contiguous,
pointer,
intent(in) :: dbl3d
751 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
754 integer(I4B),
intent(in) :: varid
755 character(len=*),
intent(in) :: input_fname
757 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl3d), nc_vars%nc_fname)
764 real(DP),
dimension(:, :, :),
contiguous,
pointer,
intent(in) :: dbl3d
766 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
769 character(len=*),
intent(in) :: input_fname
770 integer(I4B),
dimension(:),
allocatable :: layer_shape
772 integer(I4B) :: ncpl, nlay, varid
773 integer(I4B) :: index_start, index_stop
774 real(DP),
dimension(:),
contiguous,
pointer :: dbl1d_ptr
780 ncpl = product(layer_shape)
783 varid = nc_vars%varid(idt%tagname, layer=k)
784 index_stop = index_start + ncpl - 1
785 dbl1d_ptr(1:ncpl) => dbl3d(:, :, k:k)
786 call nf_verify(nf90_get_var(nc_vars%ncid, varid, dbl1d_ptr), &
788 index_start = index_stop + 1
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
real(dp), parameter dnodata
real no data constant
This module defines variable data types.
This module contains the NCArrayReaderModule.
subroutine load_double1d_layered(dbl1d, mf6_input, mshape, idt, nc_vars, input_fname)
load type 1d double layered
subroutine nc_array_load_int2d(int2d, mshape, idt, mf6_input, nc_vars, input_fname, iout)
Load NetCDF integer 2D array.
subroutine load_integer1d_layered_spd(int1d, mf6_input, mshape, idt, nc_vars, iper, input_fname)
load type 1d integer layered
subroutine load_double3d_layered(dbl3d, mf6_input, mshape, idt, nc_vars, input_fname)
load type 3d double layered
subroutine nc_array_load_dbl2d(dbl2d, mshape, idt, mf6_input, nc_vars, input_fname, iout)
Load NetCDF double 2D array.
subroutine load_integer3d_layered(int3d, mf6_input, mshape, idt, nc_vars, input_fname)
load type 3d integer layered
subroutine load_integer1d_type(int1d, mf6_input, mshape, idt, nc_vars, varid, input_fname)
load type 1d integer
subroutine load_double3d_type(dbl3d, mf6_input, mshape, idt, nc_vars, varid, input_fname)
load type 3d double
logical(lgp) function is_layered(grid)
does the grid support per layer variables
subroutine nc_array_load_int3d(int3d, mshape, idt, mf6_input, nc_vars, input_fname, iout)
Load NetCDF integer 3D array.
subroutine load_double2d_type(dbl2d, mf6_input, mshape, idt, nc_vars, varid, input_fname)
load type 2d double
subroutine load_integer1d_spd(int1d, mf6_input, mshape, idt, nc_vars, iper, input_fname)
load type 1d double
subroutine load_integer3d_type(int3d, mf6_input, mshape, idt, nc_vars, varid, input_fname)
load type 3d integer
subroutine load_integer2d_layered(int2d, mf6_input, mshape, idt, nc_vars, input_fname)
load type 2d integer layered
subroutine load_integer2d_type(int2d, mf6_input, mshape, idt, nc_vars, varid, input_fname)
load type 2d integer
subroutine nc_array_load_int1d(int1d, mshape, idt, mf6_input, nc_vars, input_fname, iout, kper)
Load NetCDF integer 1D array.
subroutine load_double1d_layered_spd(dbl1d, mf6_input, mshape, idt, nc_vars, iper, input_fname, iaux)
load type 1d double layered
subroutine load_integer1d_layered(int1d, mf6_input, mshape, idt, nc_vars, input_fname)
load type 1d integer layered
subroutine load_double1d_type(dbl1d, mf6_input, mshape, idt, nc_vars, varid, input_fname)
load type 1d double
subroutine load_double2d_layered(dbl2d, mf6_input, mshape, idt, nc_vars, input_fname)
load type 2d double layered
subroutine nc_array_load_dbl3d(dbl3d, mshape, idt, mf6_input, nc_vars, input_fname, iout)
Load NetCDF double 3D array.
subroutine nc_array_load_dbl1d(dbl1d, mshape, idt, mf6_input, nc_vars, input_fname, iout, kper, iaux)
Load NetCDF double 1D array.
subroutine load_double1d_spd(dbl1d, mf6_input, mshape, idt, nc_vars, iper, input_fname, iaux)
load type 1d double
This module contains the NCFileVarsModule.
This module contains the NetCDFCommonModule.
subroutine, public nf_verify(res, nc_fname)
error check a netcdf-fortran interface call
This module contains simulation methods.
subroutine, public store_error(msg, terminate)
Store an error message.
subroutine, public store_error_filename(filename, terminate)
Store the erroring file name.
This module contains simulation variables.
character(len=maxcharlen) errmsg
error message string
This module contains the SourceCommonModule.
subroutine, public get_layered_shape(mshape, nlay, layer_shape)
subroutine, public get_shape_from_string(shape_string, array_shape, memoryPath)
integer(i4b), pointer, public kper
current stress period number
Type describing input variables for a package in NetCDF file.