49 integer(I4B),
dimension(:),
pointer,
contiguous :: mshape => null()
53 character(len=LINELENGTH) :: filename
54 character(len=LINELENGTH),
dimension(:),
allocatable :: block_tags
55 logical(LGP) :: ts_active
56 logical(LGP) :: export
57 logical(LGP) :: readasarrays
58 logical(LGP) :: readarraygrid
59 integer(I4B) :: inamedbound
60 integer(I4B) :: iauxiliary
84 subroutine load(this, parser, mf6_input, nc_vars, filename, iout)
90 character(len=*),
intent(in) :: filename
91 integer(I4B),
intent(in) :: iout
95 call this%init(parser, mf6_input, filename, iout)
98 this%nc_vars => nc_vars
101 do iblk = 1,
size(this%mf6_input%block_dfns)
103 if (this%mf6_input%block_dfns(iblk)%blockname ==
'PERIOD')
exit
105 call this%load_block(iblk)
117 subroutine init(this, parser, mf6_input, filename, iout)
122 character(len=*),
intent(in) :: filename
123 integer(I4B),
intent(in) :: iout
124 integer(I4B) :: isize
126 this%parser => parser
127 this%mf6_input = mf6_input
128 this%filename = filename
129 this%ts_active = .false.
130 this%export = .false.
131 this%readasarrays = .false.
132 this%readarraygrid = .false.
137 call get_isize(
'MODEL_SHAPE', mf6_input%component_mempath, isize)
139 call mem_setptr(this%mshape,
'MODEL_SHAPE', mf6_input%component_mempath)
144 this%mf6_input%subcomponent_name, this%iout)
158 integer(I4B),
intent(in) :: iblk
161 if (
associated(this%structarray))
then
166 allocate (this%block_tags(0))
168 call this%parse_block(iblk, .false.)
170 call this%block_post_process(iblk)
172 deallocate (this%block_tags)
184 if (
associated(this%structarray))
then
190 this%mf6_input%subcomponent_name, this%iout)
201 integer(I4B),
intent(in) :: iblk
203 integer(I4B) :: iparam
204 integer(I4B),
pointer :: intptr
207 do iparam = 1,
size(this%block_tags)
208 select case (this%mf6_input%block_dfns(iblk)%blockname)
210 if (this%block_tags(iparam) ==
'AUXILIARY')
then
212 else if (this%block_tags(iparam) ==
'BOUNDNAMES')
then
214 else if (this%block_tags(iparam) ==
'READASARRAYS')
then
215 this%readasarrays = .true.
216 else if (this%block_tags(iparam) ==
'READARRAYGRID')
then
217 this%readarraygrid = .true.
218 else if (this%block_tags(iparam) ==
'TS6')
then
219 this%ts_active = .true.
220 else if (this%block_tags(iparam) ==
'EXPORT_ARRAY_ASCII')
then
228 select case (this%mf6_input%block_dfns(iblk)%blockname)
231 do iparam = 1,
size(this%mf6_input%param_dfns)
232 idt => this%mf6_input%param_dfns(iparam)
233 if (idt%blockname ==
'OPTIONS' .and. &
234 idt%tagname ==
'AUXILIARY')
then
235 if (this%iauxiliary == 0)
then
236 call mem_allocate(intptr,
'NAUX', this%mf6_input%mempath)
244 if (this%mf6_input%pkgtype(1:3) ==
'DIS')
then
246 this%mf6_input%component_mempath, &
247 this%mf6_input%mempath, this%mshape)
260 integer(I4B),
intent(in) :: iblk
261 logical(LGP),
intent(in) :: recursive_call
262 logical(LGP) :: isblockfound
263 logical(LGP) :: endofblock
264 logical(LGP) :: supportopenclose
266 logical(LGP) :: found, required
268 character(len=LINELENGTH) :: tag
272 if (this%mf6_input%pkgtype ==
'DISU6' .or. &
273 this%mf6_input%pkgtype ==
'DISV1D6' .or. &
274 this%mf6_input%pkgtype ==
'DISV2D6')
then
275 if (this%mf6_input%block_dfns(iblk)%blockname ==
'VERTICES' .or. &
276 this%mf6_input%block_dfns(iblk)%blockname ==
'CELL2D')
then
279 if (.not. found)
return
280 if (mt%intsclr == 0)
return
285 supportopenclose = (this%mf6_input%block_dfns(iblk)%blockname /=
'GRIDDATA')
288 required = this%mf6_input%block_dfns(iblk)%required .and. .not. recursive_call
289 call this%parser%GetBlock(this%mf6_input%block_dfns(iblk)%blockname, &
290 isblockfound, ierr, &
291 supportopenclose=supportopenclose, &
292 blockrequired=required)
294 if (isblockfound)
then
295 if (this%mf6_input%block_dfns(iblk)%aggregate)
then
297 call this%parse_structarray_block(iblk)
301 call this%parser%GetNextLine(endofblock)
304 call this%parser%GetStringCaps(tag)
306 this%mf6_input%param_dfns, &
307 this%mf6_input%component_type, &
308 this%mf6_input%subcomponent_type, &
309 this%mf6_input%block_dfns(iblk)%blockname, &
311 if (idt%in_record)
then
312 call this%parse_record_tag(iblk, idt, .false.)
314 call this%load_tag(iblk, idt)
321 if (this%mf6_input%block_dfns(iblk)%block_variable)
then
322 if (isblockfound)
then
323 call this%parse_block(iblk, .true.)
330 integer(I4B),
intent(in) :: iblk
331 character(len=*),
intent(in) :: pkgtype
332 character(len=*),
intent(in) :: which
333 character(len=*),
intent(in) :: tag
338 this%mf6_input%component_type, &
339 this%mf6_input%subcomponent_type, &
340 this%mf6_input%block_dfns(iblk)%blockname, &
343 call load_io_tag(this%parser, idt, this%mf6_input%mempath, which, this%iout)
351 integer(I4B),
intent(in) :: iblk
353 logical(LGP),
intent(in) :: recursive_call
355 character(len=40),
dimension(:),
allocatable :: words
356 integer(I4B) :: n, istart, nwords
357 character(len=LINELENGTH) :: tag
362 if (recursive_call)
then
364 this%mf6_input%component_type, &
365 this%mf6_input%subcomponent_type, &
366 inidt%tagname, nwords, words)
367 call this%load_tag(iblk, inidt)
370 call this%parser%GetStringCaps(tag)
373 this%mf6_input%component_type, &
374 this%mf6_input%subcomponent_type, &
375 inidt%tagname, tag, nwords, words)
376 if (nwords == 4 .and. &
377 (tag ==
'FILEIN' .or. &
378 tag ==
'FILEOUT'))
then
379 call this%parse_io_tag(iblk, words(2), words(3), words(4))
382 idt => get_param_definition_type( &
383 this%mf6_input%param_dfns, &
384 this%mf6_input%component_type, &
385 this%mf6_input%subcomponent_type, &
386 this%mf6_input%block_dfns(iblk)%blockname, &
389 if (tag /=
'PRINT_FORMAT')
call this%load_tag(iblk, inidt)
390 call this%load_tag(iblk, idt)
394 call this%load_tag(iblk, inidt)
399 if (istart > 1 .and. nwords == 0)
then
401 '"', trim(this%mf6_input%block_dfns(iblk)%blockname), &
402 '" block input record that includes keyword "', trim(inidt%tagname), &
403 '" is not properly formed.'
405 call this%parser%StoreErrorUnit()
408 do n = istart, nwords
409 idt => get_param_definition_type( &
410 this%mf6_input%param_dfns, &
411 this%mf6_input%component_type, &
412 this%mf6_input%subcomponent_type, &
413 this%mf6_input%block_dfns(iblk)%blockname, &
414 words(n), this%filename)
416 call this%parser%GetStringCaps(tag)
417 idt => get_param_definition_type( &
418 this%mf6_input%param_dfns, &
419 this%mf6_input%component_type, &
420 this%mf6_input%subcomponent_type, &
421 this%mf6_input%block_dfns(iblk)%blockname, &
423 call this%parse_record_tag(iblk, idt, .true.)
426 if (idt%tagname /=
'FORMAT')
then
427 call this%parser%GetStringCaps(tag)
430 else if (idt%tagname /= tag)
then
431 write (
errmsg,
'(5a)')
'Expecting record input tag "', &
432 trim(idt%tagname),
'" but instead found "', trim(tag),
'".'
434 call this%parser%StoreErrorUnit()
437 call this%load_tag(iblk, idt)
441 if (
allocated(words))
deallocate (words)
450 integer(I4B),
intent(in) :: iblk
453 select case (idt%datatype)
457 if (idt%tagname(1:4) ==
'DEV_' .and. &
458 this%mf6_input%block_dfns(iblk)%blockname ==
'OPTIONS')
then
459 call this%parser%DevOpt()
462 if (idt%shape ==
'NAUX')
then
472 this%export, this%nc_vars, this%filename, &
476 this%export, this%nc_vars, this%filename, &
480 this%export, this%nc_vars, this%filename, &
486 this%export, this%nc_vars, this%filename, this%iout)
489 this%export, this%nc_vars, this%filename, this%iout)
492 this%export, this%nc_vars, this%filename, this%iout)
494 write (
errmsg,
'(a,a)')
'Failure reading data for tag: ', trim(idt%tagname)
496 call this%parser%StoreErrorUnit()
500 this%block_tags(
size(this%block_tags)) = trim(idt%tagname)
505 integer(I4B),
intent(in) :: iblk
507 character(len=LENVARNAME) :: varname
509 character(len=3) :: block_suffix =
'NUM'
512 ilen = len_trim(this%mf6_input%block_dfns(iblk)%blockname)
514 if (ilen > (
lenvarname - len(block_suffix)))
then
516 this%mf6_input%block_dfns(iblk)% &
517 blockname(1:(
lenvarname - len(block_suffix)))//block_suffix
519 varname = trim(this%mf6_input%block_dfns(iblk)%blockname)//block_suffix
522 idt%component_type = trim(this%mf6_input%component_type)
523 idt%subcomponent_type = trim(this%mf6_input%subcomponent_type)
524 idt%blockname = trim(this%mf6_input%block_dfns(iblk)%blockname)
525 idt%tagname = varname
526 idt%mf6varname = varname
527 idt%datatype =
'INTEGER'
542 integer(I4B),
intent(in) :: iblk
544 character(len=LINELENGTH),
dimension(:),
allocatable :: param_names
547 integer(I4B) :: blocknum
548 integer(I4B),
pointer :: nrow
549 integer(I4B) :: nrows, nrowsread
550 integer(I4B) :: ibinary, oc_inunit
551 integer(I4B) :: icol, iparam
552 integer(I4B) :: ncol, nparam
555 call ctx%init(this%mf6_input, blockname= &
556 this%mf6_input%block_dfns(iblk)%blockname)
558 call ctx%tags(param_names, nparam, this%filename)
562 this%mf6_input%component_type, &
563 this%mf6_input%subcomponent_type, &
564 this%mf6_input%block_dfns(iblk)%blockname)
566 if (this%mf6_input%block_dfns(iblk)%block_variable)
then
567 blocknum = this%parser%GetInteger()
575 if (blocknum > 0) ncol = ncol + 1
577 if (idt%shape /=
'')
then
578 call mem_setptr(nrow, idt%shape, this%mf6_input%mempath)
586 blocknum, this%mf6_input%mempath, &
587 this%mf6_input%component_mempath)
591 if (blocknum > 0)
then
593 blockvar_idt = this%block_index_dfn(iblk)
595 call this%structarray%mem_create_vector(icol, idt)
608 this%mf6_input%component_type, &
609 this%mf6_input%subcomponent_type, &
610 this%mf6_input%block_dfns(iblk)%blockname, &
611 param_names(iparam), this%filename)
613 call this%structarray%mem_create_vector(icol, idt)
617 call ctx%allocate_arrays()
622 if (ibinary == 1)
then
624 nrowsread = this%structarray%read_from_binary(oc_inunit, this%iout)
625 call this%parser%terminateblock()
629 nrowsread = this%structarray%read_from_parser(this%parser, this%ts_active, &
642 character(len=*),
intent(in) :: memoryPath
643 integer(I4B),
intent(in) :: iout
644 integer(I4B),
pointer :: intvar
647 call idm_log_var(intvar, idt%tagname, memorypath, idt%datatype, iout)
656 character(len=*),
intent(in) :: memoryPath
657 integer(I4B),
intent(in) :: iout
658 character(len=LINELENGTH),
pointer :: cstr
659 character(len=LENBIGLINE),
pointer :: bigcstr
661 select case (idt%shape)
664 call mem_allocate(bigcstr, ilen, idt%mf6varname, memorypath)
665 call parser%GetString(bigcstr, (.not. idt%preserve_case))
666 call idm_log_var(bigcstr, idt%tagname, memorypath, iout)
669 call mem_allocate(cstr, ilen, idt%mf6varname, memorypath)
670 call parser%GetString(cstr, (.not. idt%preserve_case))
671 call idm_log_var(cstr, idt%tagname, memorypath, iout)
683 character(len=*),
intent(in) :: memoryPath
684 character(len=*),
intent(in) :: which
685 integer(I4B),
intent(in) :: iout
686 character(len=LINELENGTH) :: cstr
688 integer(I4B) :: ilen, isize, idx
690 if (which ==
'FILEIN')
then
691 call get_isize(idt%mf6varname, memorypath, isize)
693 call mem_allocate(charstr1d, ilen, 1, idt%mf6varname, memorypath)
696 call mem_setptr(charstr1d, idt%mf6varname, memorypath)
701 call parser%GetString(cstr, (.not. idt%preserve_case))
702 charstr1d(idx) = cstr
703 else if (which ==
'FILEOUT')
then
717 character(len=*),
intent(in) :: memoryPath
718 integer(I4B),
intent(in) :: iout
719 character(len=:),
allocatable :: line
720 character(len=LENAUXNAME),
dimension(:),
allocatable :: caux
722 integer(I4B) :: istart
723 integer(I4B) :: istop
725 character(len=LENPACKAGENAME) :: text =
''
726 integer(I4B),
pointer :: intvar
728 pointer,
contiguous :: acharstr1d
731 call parser%GetRemainingLine(line)
733 call urdaux(intvar, parser%iuactive, iout, lloc, &
734 istart, istop, caux, line, text)
737 acharstr1d(i) = caux(i)
748 character(len=*),
intent(in) :: memoryPath
749 integer(I4B),
intent(in) :: iout
750 integer(I4B),
pointer :: intvar
752 intvar = parser%GetInteger()
753 call idm_log_var(intvar, idt%tagname, memorypath, idt%datatype, iout)
759 nc_vars, input_fname, iout)
765 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
766 logical(LGP),
intent(in) :: export
768 character(len=*),
intent(in) :: input_fname
769 integer(I4B),
intent(in) :: iout
770 integer(I4B),
dimension(:),
pointer,
contiguous :: int1d
772 integer(I4B) :: nvals
773 integer(I4B),
dimension(:),
allocatable :: array_shape
774 integer(I4B),
dimension(:),
allocatable :: layer_shape
775 character(len=LINELENGTH) :: keyword
779 if (idt%shape ==
'NODES')
then
780 nvals = product(mshape)
783 nvals = array_shape(1)
787 call mem_allocate(int1d, nvals, idt%mf6varname, mf6_input%mempath)
791 call parser%GetStringCaps(keyword)
794 if (keyword ==
'NETCDF')
then
797 else if (keyword ==
'LAYERED' .and. idt%layered)
then
801 call read_int1d(parser, int1d, idt%mf6varname)
805 call idm_log_var(int1d, idt%tagname, mf6_input%mempath, iout)
809 if (idt%blockname ==
'GRIDDATA')
then
810 call idm_export(int1d, idt%tagname, mf6_input%mempath, idt%shape, iout)
818 nc_vars, input_fname, iout)
824 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
825 logical(LGP),
intent(in) :: export
827 character(len=*),
intent(in) :: input_fname
828 integer(I4B),
intent(in) :: iout
829 integer(I4B),
dimension(:, :),
pointer,
contiguous :: int2d
831 integer(I4B) :: nsize1, nsize2
832 integer(I4B),
dimension(:),
allocatable :: array_shape
833 integer(I4B),
dimension(:),
allocatable :: layer_shape
834 character(len=LINELENGTH) :: keyword
839 nsize1 = array_shape(1)
840 nsize2 = array_shape(2)
843 call mem_allocate(int2d, nsize1, nsize2, idt%mf6varname, mf6_input%mempath)
847 call parser%GetStringCaps(keyword)
850 if (keyword ==
'NETCDF')
then
853 else if (keyword ==
'LAYERED' .and. idt%layered)
then
857 call read_int2d(parser, int2d, idt%mf6varname)
861 call idm_log_var(int2d, idt%tagname, mf6_input%mempath, iout)
865 if (idt%blockname ==
'GRIDDATA')
then
866 call idm_export(int2d, idt%tagname, mf6_input%mempath, idt%shape, iout)
874 nc_vars, input_fname, iout)
880 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
881 logical(LGP),
intent(in) :: export
883 character(len=*),
intent(in) :: input_fname
884 integer(I4B),
intent(in) :: iout
885 integer(I4B),
dimension(:, :, :),
pointer,
contiguous :: int3d
887 integer(I4B) :: nsize1, nsize2, nsize3
888 integer(I4B),
dimension(:),
allocatable :: array_shape
889 integer(I4B),
dimension(:),
allocatable :: layer_shape
890 integer(I4B),
dimension(:),
pointer,
contiguous :: int1d_ptr
891 character(len=LINELENGTH) :: keyword
896 nsize1 = array_shape(1)
897 nsize2 = array_shape(2)
898 nsize3 = array_shape(3)
901 call mem_allocate(int3d, nsize1, nsize2, nsize3, idt%mf6varname, &
906 call parser%GetStringCaps(keyword)
909 if (keyword ==
'NETCDF')
then
912 else if (keyword ==
'LAYERED' .and. idt%layered)
then
917 int1d_ptr(1:nsize1 * nsize2 * nsize3) => int3d(:, :, :)
918 call read_int1d(parser, int1d_ptr, idt%mf6varname)
922 call idm_log_var(int3d, idt%tagname, mf6_input%mempath, iout)
926 if (idt%blockname ==
'GRIDDATA')
then
927 call idm_export(int3d, idt%tagname, mf6_input%mempath, idt%shape, iout)
937 character(len=*),
intent(in) :: memoryPath
938 integer(I4B),
intent(in) :: iout
939 real(DP),
pointer :: dblvar
941 dblvar = parser%GetDouble()
942 call idm_log_var(dblvar, idt%tagname, memorypath, iout)
948 nc_vars, input_fname, iout)
954 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
955 logical(LGP),
intent(in) :: export
957 character(len=*),
intent(in) :: input_fname
958 integer(I4B),
intent(in) :: iout
959 real(DP),
dimension(:),
pointer,
contiguous :: dbl1d
961 integer(I4B) :: nvals
962 integer(I4B),
dimension(:),
allocatable :: array_shape
963 integer(I4B),
dimension(:),
allocatable :: layer_shape
964 character(len=LINELENGTH) :: keyword
967 if (idt%shape ==
'NODES')
then
968 nvals = product(mshape)
971 nvals = array_shape(1)
975 call mem_allocate(dbl1d, nvals, idt%mf6varname, mf6_input%mempath)
979 call parser%GetStringCaps(keyword)
982 if (keyword ==
'NETCDF')
then
985 else if (keyword ==
'LAYERED' .and. idt%layered)
then
989 call read_dbl1d(parser, dbl1d, idt%mf6varname)
993 call idm_log_var(dbl1d, idt%tagname, mf6_input%mempath, iout)
997 if (idt%blockname ==
'GRIDDATA')
then
998 call idm_export(dbl1d, idt%tagname, mf6_input%mempath, idt%shape, iout)
1006 nc_vars, input_fname, iout)
1012 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
1013 logical(LGP),
intent(in) :: export
1015 character(len=*),
intent(in) :: input_fname
1016 integer(I4B),
intent(in) :: iout
1017 real(DP),
dimension(:, :),
pointer,
contiguous :: dbl2d
1018 integer(I4B) :: nlay
1019 integer(I4B) :: nsize1, nsize2
1020 integer(I4B),
dimension(:),
allocatable :: array_shape
1021 integer(I4B),
dimension(:),
allocatable :: layer_shape
1022 character(len=LINELENGTH) :: keyword
1027 nsize1 = array_shape(1)
1028 nsize2 = array_shape(2)
1031 call mem_allocate(dbl2d, nsize1, nsize2, idt%mf6varname, mf6_input%mempath)
1035 call parser%GetStringCaps(keyword)
1038 if (keyword ==
'NETCDF')
then
1041 else if (keyword ==
'LAYERED' .and. idt%layered)
then
1045 call read_dbl2d(parser, dbl2d, idt%mf6varname)
1049 call idm_log_var(dbl2d, idt%tagname, mf6_input%mempath, iout)
1053 if (idt%blockname ==
'GRIDDATA')
then
1054 call idm_export(dbl2d, idt%tagname, mf6_input%mempath, idt%shape, iout)
1062 nc_vars, input_fname, iout)
1068 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
1069 logical(LGP),
intent(in) :: export
1071 character(len=*),
intent(in) :: input_fname
1072 integer(I4B),
intent(in) :: iout
1073 real(DP),
dimension(:, :, :),
pointer,
contiguous :: dbl3d
1074 integer(I4B) :: nlay
1075 integer(I4B) :: nsize1, nsize2, nsize3
1076 integer(I4B),
dimension(:),
allocatable :: array_shape
1077 integer(I4B),
dimension(:),
allocatable :: layer_shape
1078 real(DP),
dimension(:),
pointer,
contiguous :: dbl1d_ptr
1079 character(len=LINELENGTH) :: keyword
1084 nsize1 = array_shape(1)
1085 nsize2 = array_shape(2)
1086 nsize3 = array_shape(3)
1089 call mem_allocate(dbl3d, nsize1, nsize2, nsize3, idt%mf6varname, &
1094 call parser%GetStringCaps(keyword)
1097 if (keyword ==
'NETCDF')
then
1100 else if (keyword ==
'LAYERED' .and. idt%layered)
then
1105 dbl1d_ptr(1:nsize1 * nsize2 * nsize3) => dbl3d(:, :, :)
1106 call read_dbl1d(parser, dbl1d_ptr, idt%mf6varname)
1110 call idm_log_var(dbl3d, idt%tagname, mf6_input%mempath, iout)
1114 if (idt%blockname ==
'GRIDDATA')
then
1115 call idm_export(dbl3d, idt%tagname, mf6_input%mempath, idt%shape, iout)
1128 integer(I4B),
intent(inout) :: oc_inunit
1129 integer(I4B),
intent(in) :: iout
1130 integer(I4B) :: ibinary
1131 integer(I4B) :: lloc, istart, istop, idum, inunit, itmp, ierr
1132 integer(I4B) :: nunopn = 99
1133 character(len=:),
allocatable :: line
1134 character(len=LINELENGTH) :: fname
1135 logical(LGP) :: exists
1137 character(len=*),
parameter :: fmtocne = &
1138 &
"('Specified OPEN/CLOSE file ',(A),' does not exist')"
1139 character(len=*),
parameter :: fmtobf = &
1140 &
"(1X,/1X,'OPENING BINARY FILE ON UNIT ',I0,':',/1X,A)"
1145 inunit = parser%getunit()
1149 call parser%line_reader%rdcom(inunit, iout, line, ierr)
1150 call urword(line, lloc, istart, istop, 1, idum, r, iout, inunit)
1152 if (line(istart:istop) ==
'OPEN/CLOSE')
then
1154 call urword(line, lloc, istart, istop, 0, idum, r, &
1156 fname = line(istart:istop)
1158 inquire (file=fname, exist=exists)
1159 if (.not. exists)
then
1160 write (
errmsg, fmtocne) line(istart:istop)
1162 call store_error(
'Specified OPEN/CLOSE file does not exist')
1167 call urword(line, lloc, istart, istop, 1, idum, r, &
1170 if (line(istart:istop) ==
'(BINARY)') ibinary = 1
1172 if (ibinary == 1)
then
1177 write (iout, fmtobf) oc_inunit, trim(adjustl(fname))
1179 call openfile(oc_inunit, itmp, fname,
'OPEN/CLOSE', &
1184 if (ibinary == 0)
then
1185 call parser%line_reader%bkspc(parser%getunit())
This module contains block parser methods.
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
integer(i4b), parameter lenpackagename
maximum length of the package name
integer(i4b), parameter lenbigline
maximum length of a big line
integer(i4b), parameter lenvarname
maximum length of a variable name
integer(i4b), parameter lenauxname
maximum length of a aux variable
integer(i4b), parameter lenboundname
maximum length of a bound name
This module contains the DefinitionSelectModule.
type(inputparamdefinitiontype) function, pointer, public get_param_definition_type(input_definition_types, component_type, subcomponent_type, blockname, tagname, filename)
Return parameter definition.
subroutine, public split_record_dfn_tag1(input_definition_types, component_type, subcomponent_type, tagname, nwords, words)
Return aggregate definition.
type(inputparamdefinitiontype) function, pointer, public get_aggregate_definition_type(input_definition_types, component_type, subcomponent_type, blockname)
Return aggregate definition.
subroutine, public split_record_dfn_tag2(input_definition_types, component_type, subcomponent_type, tagname, tag2, nwords, words)
Return aggregate definition.
character(len=linelength) function, public idt_datatype(idt)
return input definition type datatype
subroutine, public read_dbl1d(parser, dbl1d, aname)
subroutine, public read_dbl2d(parser, dbl2d, aname)
This module contains the Input Data Model Logger Module.
subroutine, public idm_log_close(component, subcomponent, iout)
@ brief log the closing message
subroutine, public idm_log_header(component, subcomponent, iout)
@ brief log a header message
subroutine, public read_int1d(parser, int1d, aname)
subroutine, public read_int2d(parser, int2d, aname)
This module defines variable data types.
subroutine, public read_int1d_layered(parser, int1d, aname, nlay, layer_shape)
subroutine, public read_dbl1d_layered(parser, dbl1d, aname, nlay, layer_shape)
subroutine, public read_dbl2d_layered(parser, dbl2d, aname, nlay, layer_shape)
subroutine, public read_int3d_layered(parser, int3d, aname, nlay, layer_shape)
subroutine, public read_dbl3d_layered(parser, dbl3d, aname, nlay, layer_shape)
subroutine, public read_int2d_layered(parser, int2d, aname, nlay, layer_shape)
This module contains the LoadContextModule.
This module contains the LoadMf6FileModule.
type(inputparamdefinitiontype) function block_index_dfn(this, iblk)
subroutine load_integer1d_type(parser, idt, mf6_input, mshape, export, nc_vars, input_fname, iout)
load type 1d integer
subroutine load_io_tag(parser, idt, memoryPath, which, iout)
load io tag
subroutine load_double3d_type(parser, idt, mf6_input, mshape, export, nc_vars, input_fname, iout)
load type 3d double
subroutine load_string_type(parser, idt, memoryPath, iout)
load type string
subroutine load_keyword_type(parser, idt, memoryPath, iout)
load type keyword
subroutine load_auxvar_names(parser, idt, memoryPath, iout)
load aux variable names
subroutine load_double1d_type(parser, idt, mf6_input, mshape, export, nc_vars, input_fname, iout)
load type 1d double
subroutine load_block(this, iblk)
load a single block
subroutine parse_io_tag(this, iblk, pkgtype, which, tag)
subroutine load_double2d_type(parser, idt, mf6_input, mshape, export, nc_vars, input_fname, iout)
load type 2d double
subroutine load_integer_type(parser, idt, memoryPath, iout)
load type integer
recursive subroutine parse_block(this, iblk, recursive_call)
parse block
subroutine load_integer3d_type(parser, idt, mf6_input, mshape, export, nc_vars, input_fname, iout)
load type 3d integer
subroutine block_post_process(this, iblk)
Post parse block handling.
subroutine finalize(this)
finalize
subroutine load_tag(this, iblk, idt)
load input keyword Load input associated with tag key into the memory manager.
subroutine load_double_type(parser, idt, memoryPath, iout)
load type double
subroutine load_integer2d_type(parser, idt, mf6_input, mshape, export, nc_vars, input_fname, iout)
load type 2d integer
subroutine parse_structarray_block(this, iblk)
parse a structured array record into memory manager
subroutine load(this, parser, mf6_input, nc_vars, filename, iout)
load all static input blocks
integer(i4b) function, public read_control_record(parser, oc_inunit, iout)
recursive subroutine parse_record_tag(this, iblk, inidt, recursive_call)
subroutine, public get_from_memorystore(name, mem_path, mt, found, check)
@ brief Get a memory type entry from the memory list
subroutine, public get_isize(name, mem_path, isize)
@ brief Get the number of elements for this variable
This module contains the NCFileVarsModule.
This module contains simulation methods.
subroutine, public store_error(msg, terminate)
Store an error message.
subroutine, public store_error_unit(iunit, terminate)
Store the file unit number.
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)
subroutine, public set_model_shape(ftype, fname, model_mempath, dis_mempath, model_shape)
routine for setting the model shape
This module contains the StructArrayModule.
type(structarraytype) function, pointer, public constructstructarray(mf6_input, ncol, nrow, blocknum, mempath, component_mempath)
constructor for a struct_array
subroutine, public destructstructarray(struct_array)
destructor for a struct_array
This class is used to store a single deferred-length character string. It was designed to work in an ...
derived type for boundary package input context
Static parser based input loader.
Type describing input variables for a package in NetCDF file.
type for structured array