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)
451 integer(I4B),
intent(in) :: iblk
453 character(len=LINELENGTH) :: dev_msg
456 if (idt%prerelease)
then
457 dev_msg =
'Input tag "'//trim(idt%tagname)// &
458 &
'" read from file "'//trim(this%filename)// &
459 &
'" is still under development. Install the &
460 &nightly build or compile from source with IDEVELOPMODE = 1.'
465 select case (idt%datatype)
469 if (idt%tagname(1:4) ==
'DEV_' .and. &
470 this%mf6_input%block_dfns(iblk)%blockname ==
'OPTIONS')
then
471 call this%parser%DevOpt()
474 if (idt%shape ==
'NAUX')
then
484 this%export, this%nc_vars, this%filename, &
488 this%export, this%nc_vars, this%filename, &
492 this%export, this%nc_vars, this%filename, &
498 this%export, this%nc_vars, this%filename, this%iout)
501 this%export, this%nc_vars, this%filename, this%iout)
504 this%export, this%nc_vars, this%filename, this%iout)
506 write (
errmsg,
'(a,a)')
'Failure reading data for tag: ', trim(idt%tagname)
508 call this%parser%StoreErrorUnit()
512 this%block_tags(
size(this%block_tags)) = trim(idt%tagname)
517 integer(I4B),
intent(in) :: iblk
519 character(len=LENVARNAME) :: varname
521 character(len=3) :: block_suffix =
'NUM'
524 ilen = len_trim(this%mf6_input%block_dfns(iblk)%blockname)
526 if (ilen > (
lenvarname - len(block_suffix)))
then
528 this%mf6_input%block_dfns(iblk)% &
529 blockname(1:(
lenvarname - len(block_suffix)))//block_suffix
531 varname = trim(this%mf6_input%block_dfns(iblk)%blockname)//block_suffix
534 idt%component_type = trim(this%mf6_input%component_type)
535 idt%subcomponent_type = trim(this%mf6_input%subcomponent_type)
536 idt%blockname = trim(this%mf6_input%block_dfns(iblk)%blockname)
537 idt%tagname = varname
538 idt%mf6varname = varname
539 idt%datatype =
'INTEGER'
554 integer(I4B),
intent(in) :: iblk
556 character(len=LINELENGTH),
dimension(:),
allocatable :: param_names
559 integer(I4B) :: blocknum
560 integer(I4B),
pointer :: nrow
561 integer(I4B) :: nrows, nrowsread
562 integer(I4B) :: ibinary, oc_inunit
563 integer(I4B) :: icol, iparam
564 integer(I4B) :: ncol, nparam
567 call ctx%init(this%mf6_input, blockname= &
568 this%mf6_input%block_dfns(iblk)%blockname)
570 call ctx%tags(param_names, nparam, this%filename)
574 this%mf6_input%component_type, &
575 this%mf6_input%subcomponent_type, &
576 this%mf6_input%block_dfns(iblk)%blockname)
578 if (this%mf6_input%block_dfns(iblk)%block_variable)
then
579 blocknum = this%parser%GetInteger()
587 if (blocknum > 0) ncol = ncol + 1
589 if (idt%shape /=
'')
then
590 call mem_setptr(nrow, idt%shape, this%mf6_input%mempath)
598 blocknum, this%mf6_input%mempath, &
599 this%mf6_input%component_mempath)
603 if (blocknum > 0)
then
605 blockvar_idt = this%block_index_dfn(iblk)
607 call this%structarray%mem_create_vector(icol, idt)
620 this%mf6_input%component_type, &
621 this%mf6_input%subcomponent_type, &
622 this%mf6_input%block_dfns(iblk)%blockname, &
623 param_names(iparam), this%filename)
625 call this%structarray%mem_create_vector(icol, idt)
629 call ctx%allocate_arrays()
634 if (ibinary == 1)
then
636 nrowsread = this%structarray%read_from_binary(oc_inunit, this%iout)
637 call this%parser%terminateblock()
641 nrowsread = this%structarray%read_from_parser(this%parser, this%ts_active, &
654 character(len=*),
intent(in) :: memoryPath
655 integer(I4B),
intent(in) :: iout
656 integer(I4B),
pointer :: intvar
659 call idm_log_var(intvar, idt%tagname, memorypath, idt%datatype, iout)
668 character(len=*),
intent(in) :: memoryPath
669 integer(I4B),
intent(in) :: iout
670 character(len=LINELENGTH),
pointer :: cstr
671 character(len=LENBIGLINE),
pointer :: bigcstr
673 select case (idt%shape)
676 call mem_allocate(bigcstr, ilen, idt%mf6varname, memorypath)
677 call parser%GetString(bigcstr, (.not. idt%preserve_case))
678 call idm_log_var(bigcstr, idt%tagname, memorypath, iout)
681 call mem_allocate(cstr, ilen, idt%mf6varname, memorypath)
682 call parser%GetString(cstr, (.not. idt%preserve_case))
683 call idm_log_var(cstr, idt%tagname, memorypath, iout)
695 character(len=*),
intent(in) :: memoryPath
696 character(len=*),
intent(in) :: which
697 integer(I4B),
intent(in) :: iout
698 character(len=LINELENGTH) :: cstr
700 integer(I4B) :: ilen, isize, idx
702 if (which ==
'FILEIN')
then
703 call get_isize(idt%mf6varname, memorypath, isize)
705 call mem_allocate(charstr1d, ilen, 1, idt%mf6varname, memorypath)
708 call mem_setptr(charstr1d, idt%mf6varname, memorypath)
713 call parser%GetString(cstr, (.not. idt%preserve_case))
714 charstr1d(idx) = cstr
715 else if (which ==
'FILEOUT')
then
729 character(len=*),
intent(in) :: memoryPath
730 integer(I4B),
intent(in) :: iout
731 character(len=:),
allocatable :: line
732 character(len=LENAUXNAME),
dimension(:),
allocatable :: caux
734 integer(I4B) :: istart
735 integer(I4B) :: istop
737 character(len=LENPACKAGENAME) :: text =
''
738 integer(I4B),
pointer :: intvar
740 pointer,
contiguous :: acharstr1d
743 call parser%GetRemainingLine(line)
745 call urdaux(intvar, parser%iuactive, iout, lloc, &
746 istart, istop, caux, line, text)
749 acharstr1d(i) = caux(i)
760 character(len=*),
intent(in) :: memoryPath
761 integer(I4B),
intent(in) :: iout
762 integer(I4B),
pointer :: intvar
764 intvar = parser%GetInteger()
765 call idm_log_var(intvar, idt%tagname, memorypath, idt%datatype, iout)
771 nc_vars, input_fname, iout)
777 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
778 logical(LGP),
intent(in) :: export
780 character(len=*),
intent(in) :: input_fname
781 integer(I4B),
intent(in) :: iout
782 integer(I4B),
dimension(:),
pointer,
contiguous :: int1d
784 integer(I4B) :: nvals
785 integer(I4B),
dimension(:),
allocatable :: array_shape
786 integer(I4B),
dimension(:),
allocatable :: layer_shape
787 character(len=LINELENGTH) :: keyword
791 if (idt%shape ==
'NODES')
then
792 nvals = product(mshape)
795 nvals = array_shape(1)
799 call mem_allocate(int1d, nvals, idt%mf6varname, mf6_input%mempath)
803 call parser%GetStringCaps(keyword)
806 if (keyword ==
'NETCDF')
then
809 else if (keyword ==
'LAYERED' .and. idt%layered)
then
813 call read_int1d(parser, int1d, idt%mf6varname)
817 call idm_log_var(int1d, idt%tagname, mf6_input%mempath, iout)
821 if (idt%blockname ==
'GRIDDATA')
then
822 call idm_export(int1d, idt%tagname, mf6_input%mempath, idt%shape, iout)
830 nc_vars, input_fname, iout)
836 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
837 logical(LGP),
intent(in) :: export
839 character(len=*),
intent(in) :: input_fname
840 integer(I4B),
intent(in) :: iout
841 integer(I4B),
dimension(:, :),
pointer,
contiguous :: int2d
843 integer(I4B) :: nsize1, nsize2
844 integer(I4B),
dimension(:),
allocatable :: array_shape
845 integer(I4B),
dimension(:),
allocatable :: layer_shape
846 character(len=LINELENGTH) :: keyword
851 nsize1 = array_shape(1)
852 nsize2 = array_shape(2)
855 call mem_allocate(int2d, nsize1, nsize2, idt%mf6varname, mf6_input%mempath)
859 call parser%GetStringCaps(keyword)
862 if (keyword ==
'NETCDF')
then
865 else if (keyword ==
'LAYERED' .and. idt%layered)
then
869 call read_int2d(parser, int2d, idt%mf6varname)
873 call idm_log_var(int2d, idt%tagname, mf6_input%mempath, iout)
877 if (idt%blockname ==
'GRIDDATA')
then
878 call idm_export(int2d, idt%tagname, mf6_input%mempath, idt%shape, iout)
886 nc_vars, input_fname, iout)
892 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
893 logical(LGP),
intent(in) :: export
895 character(len=*),
intent(in) :: input_fname
896 integer(I4B),
intent(in) :: iout
897 integer(I4B),
dimension(:, :, :),
pointer,
contiguous :: int3d
899 integer(I4B) :: nsize1, nsize2, nsize3
900 integer(I4B),
dimension(:),
allocatable :: array_shape
901 integer(I4B),
dimension(:),
allocatable :: layer_shape
902 integer(I4B),
dimension(:),
pointer,
contiguous :: int1d_ptr
903 character(len=LINELENGTH) :: keyword
908 nsize1 = array_shape(1)
909 nsize2 = array_shape(2)
910 nsize3 = array_shape(3)
913 call mem_allocate(int3d, nsize1, nsize2, nsize3, idt%mf6varname, &
918 call parser%GetStringCaps(keyword)
921 if (keyword ==
'NETCDF')
then
924 else if (keyword ==
'LAYERED' .and. idt%layered)
then
929 int1d_ptr(1:nsize1 * nsize2 * nsize3) => int3d(:, :, :)
930 call read_int1d(parser, int1d_ptr, idt%mf6varname)
934 call idm_log_var(int3d, idt%tagname, mf6_input%mempath, iout)
938 if (idt%blockname ==
'GRIDDATA')
then
939 call idm_export(int3d, idt%tagname, mf6_input%mempath, idt%shape, iout)
949 character(len=*),
intent(in) :: memoryPath
950 integer(I4B),
intent(in) :: iout
951 real(DP),
pointer :: dblvar
953 dblvar = parser%GetDouble()
954 call idm_log_var(dblvar, idt%tagname, memorypath, iout)
960 nc_vars, input_fname, iout)
966 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
967 logical(LGP),
intent(in) :: export
969 character(len=*),
intent(in) :: input_fname
970 integer(I4B),
intent(in) :: iout
971 real(DP),
dimension(:),
pointer,
contiguous :: dbl1d
973 integer(I4B) :: nvals
974 integer(I4B),
dimension(:),
allocatable :: array_shape
975 integer(I4B),
dimension(:),
allocatable :: layer_shape
976 character(len=LINELENGTH) :: keyword
979 if (idt%shape ==
'NODES')
then
980 nvals = product(mshape)
983 nvals = array_shape(1)
987 call mem_allocate(dbl1d, nvals, idt%mf6varname, mf6_input%mempath)
991 call parser%GetStringCaps(keyword)
994 if (keyword ==
'NETCDF')
then
997 else if (keyword ==
'LAYERED' .and. idt%layered)
then
1001 call read_dbl1d(parser, dbl1d, idt%mf6varname)
1005 call idm_log_var(dbl1d, idt%tagname, mf6_input%mempath, iout)
1009 if (idt%blockname ==
'GRIDDATA')
then
1010 call idm_export(dbl1d, idt%tagname, mf6_input%mempath, idt%shape, iout)
1018 nc_vars, input_fname, iout)
1024 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
1025 logical(LGP),
intent(in) :: export
1027 character(len=*),
intent(in) :: input_fname
1028 integer(I4B),
intent(in) :: iout
1029 real(DP),
dimension(:, :),
pointer,
contiguous :: dbl2d
1030 integer(I4B) :: nlay
1031 integer(I4B) :: nsize1, nsize2
1032 integer(I4B),
dimension(:),
allocatable :: array_shape
1033 integer(I4B),
dimension(:),
allocatable :: layer_shape
1034 character(len=LINELENGTH) :: keyword
1039 nsize1 = array_shape(1)
1040 nsize2 = array_shape(2)
1043 call mem_allocate(dbl2d, nsize1, nsize2, idt%mf6varname, mf6_input%mempath)
1047 call parser%GetStringCaps(keyword)
1050 if (keyword ==
'NETCDF')
then
1053 else if (keyword ==
'LAYERED' .and. idt%layered)
then
1057 call read_dbl2d(parser, dbl2d, idt%mf6varname)
1061 call idm_log_var(dbl2d, idt%tagname, mf6_input%mempath, iout)
1065 if (idt%blockname ==
'GRIDDATA')
then
1066 call idm_export(dbl2d, idt%tagname, mf6_input%mempath, idt%shape, iout)
1074 nc_vars, input_fname, iout)
1080 integer(I4B),
dimension(:),
contiguous,
pointer,
intent(in) :: mshape
1081 logical(LGP),
intent(in) :: export
1083 character(len=*),
intent(in) :: input_fname
1084 integer(I4B),
intent(in) :: iout
1085 real(DP),
dimension(:, :, :),
pointer,
contiguous :: dbl3d
1086 integer(I4B) :: nlay
1087 integer(I4B) :: nsize1, nsize2, nsize3
1088 integer(I4B),
dimension(:),
allocatable :: array_shape
1089 integer(I4B),
dimension(:),
allocatable :: layer_shape
1090 real(DP),
dimension(:),
pointer,
contiguous :: dbl1d_ptr
1091 character(len=LINELENGTH) :: keyword
1096 nsize1 = array_shape(1)
1097 nsize2 = array_shape(2)
1098 nsize3 = array_shape(3)
1101 call mem_allocate(dbl3d, nsize1, nsize2, nsize3, idt%mf6varname, &
1106 call parser%GetStringCaps(keyword)
1109 if (keyword ==
'NETCDF')
then
1112 else if (keyword ==
'LAYERED' .and. idt%layered)
then
1117 dbl1d_ptr(1:nsize1 * nsize2 * nsize3) => dbl3d(:, :, :)
1118 call read_dbl1d(parser, dbl1d_ptr, idt%mf6varname)
1122 call idm_log_var(dbl3d, idt%tagname, mf6_input%mempath, iout)
1126 if (idt%blockname ==
'GRIDDATA')
then
1127 call idm_export(dbl3d, idt%tagname, mf6_input%mempath, idt%shape, iout)
1140 integer(I4B),
intent(inout) :: oc_inunit
1141 integer(I4B),
intent(in) :: iout
1142 integer(I4B) :: ibinary
1143 integer(I4B) :: lloc, istart, istop, idum, inunit, itmp, ierr
1144 integer(I4B) :: nunopn = 99
1145 character(len=:),
allocatable :: line
1146 character(len=LINELENGTH) :: fname
1147 logical(LGP) :: exists
1149 character(len=*),
parameter :: fmtocne = &
1150 &
"('Specified OPEN/CLOSE file ',(A),' does not exist')"
1151 character(len=*),
parameter :: fmtobf = &
1152 &
"(1X,/1X,'OPENING BINARY FILE ON UNIT ',I0,':',/1X,A)"
1157 inunit = parser%getunit()
1161 call parser%line_reader%rdcom(inunit, iout, line, ierr)
1162 call urword(line, lloc, istart, istop, 1, idum, r, iout, inunit)
1164 if (line(istart:istop) ==
'OPEN/CLOSE')
then
1166 call urword(line, lloc, istart, istop, 0, idum, r, &
1168 fname = line(istart:istop)
1170 inquire (file=fname, exist=exists)
1171 if (.not. exists)
then
1172 write (
errmsg, fmtocne) line(istart:istop)
1174 call store_error(
'Specified OPEN/CLOSE file does not exist')
1179 call urword(line, lloc, istart, istop, 1, idum, r, &
1182 if (line(istart:istop) ==
'(BINARY)') ibinary = 1
1184 if (ibinary == 1)
then
1189 write (iout, fmtobf) oc_inunit, trim(adjustl(fname))
1191 call openfile(oc_inunit, itmp, fname,
'OPEN/CLOSE', &
1196 if (ibinary == 0)
then
1197 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
Disable development features in release mode.
subroutine, public dev_feature(errmsg, iunit)
Terminate if in release mode (guard development features)
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