25 character(len=LENPACKAGENAME) :: text =
''
26 logical,
pointer :: flows_from_file => null()
27 type(
listtype),
pointer :: gwfbndlist => null()
28 integer(I4B),
pointer :: iflowsupdated => null()
29 integer(I4B),
dimension(:),
pointer,
contiguous :: ibound => null()
30 real(dp),
dimension(:),
pointer,
contiguous :: gwfflowja => null()
31 real(dp),
dimension(:, :),
pointer,
contiguous :: gwfspdis => null()
32 real(dp),
dimension(:),
pointer,
contiguous :: gwfhead => null()
33 real(dp),
dimension(:),
pointer,
contiguous :: gwfsat => null()
34 integer(I4B),
dimension(:),
pointer,
contiguous :: ibdgwfsat0 => null()
35 integer(I4B),
pointer :: idryinactive => null()
36 real(dp),
dimension(:),
pointer,
contiguous :: gwfstrgss => null()
37 real(dp),
dimension(:),
pointer,
contiguous :: gwfstrgsy => null()
38 integer(I4B),
dimension(:),
pointer,
contiguous :: gwfceltyp => null()
39 integer(I4B),
pointer :: igwfspdis => null()
40 integer(I4B),
pointer :: igwfstrgss => null()
41 integer(I4B),
pointer :: igwfstrgsy => null()
42 integer(I4B),
pointer :: igwfceltyp => null()
43 integer(I4B),
pointer :: iubud => null()
44 integer(I4B),
pointer :: iuhds => null()
45 integer(I4B),
pointer :: iumvr => null()
46 integer(I4B),
pointer :: iugrb => null()
47 integer(I4B),
pointer :: nflowpack => null()
48 integer(I4B),
dimension(:),
pointer,
contiguous :: igwfmvrterm => null()
54 character(len=16),
dimension(:),
allocatable :: flowpacknamearray
55 character(len=LENVARNAME) :: depvartype =
''
86 subroutine fmi_df(this, dis, idryinactive)
91 integer(I4B),
intent(in) :: idryinactive
93 character(len=*),
parameter :: fmtfmi = &
94 "(1x,/1x,'FMI -- FLOW MODEL INTERFACE, VERSION 2, 8/17/2023', &
95 &' INPUT READ FROM MEMPATH: ', A, //)"
96 character(len=*),
parameter :: fmtfmi0 = &
97 "(1x,/1x,'FMI -- FLOW MODEL INTERFACE,'&
98 &' VERSION 2, 8/17/2023')"
101 if (this%iout > 0)
then
102 if (this%inunit /= 0)
then
103 write (this%iout, fmtfmi) this%input_mempath
105 write (this%iout, fmtfmi0)
106 if (this%flows_from_file)
then
107 write (this%iout,
'(a)')
' FLOWS ARE ASSUMED TO BE ZERO.'
109 write (this%iout,
'(a)')
' FLOWS PROVIDED BY A GWF MODEL IN THIS &
119 if (this%inunit /= 0)
then
120 call this%source_options()
124 if (this%inunit /= 0 .and. this%flows_from_file)
then
125 call this%source_packagedata()
126 call this%initialize_gwfterms_from_bfr()
130 if (.not. this%flows_from_file)
then
131 call this%initialize_gwfterms_from_gwfbndlist()
137 this%idryinactive = idryinactive
146 integer(I4B),
dimension(:),
pointer,
contiguous :: ibound
149 this%ibound => ibound
152 call this%allocate_arrays(this%dis%nodes)
165 call this%deallocate_gwfpackages()
168 if (
allocated(this%gwfpackages))
then
169 deallocate (this%gwfpackages)
170 deallocate (this%flowpacknamearray)
175 if (this%flows_from_file)
then
202 call this%NumericalPackageType%da()
216 call this%NumericalPackageType%allocate_scalars()
219 call mem_allocate(this%flows_from_file,
'FLOWS_FROM_FILE', this%memoryPath)
220 call mem_allocate(this%iflowsupdated,
'IFLOWSUPDATED', this%memoryPath)
221 call mem_allocate(this%igwfspdis,
'IGWFSPDIS', this%memoryPath)
222 call mem_allocate(this%igwfstrgss,
'IGWFSTRGSS', this%memoryPath)
223 call mem_allocate(this%igwfstrgsy,
'IGWFSTRGSY', this%memoryPath)
224 call mem_allocate(this%igwfceltyp,
'IGWFCELTYP', this%memoryPath)
229 call mem_allocate(this%nflowpack,
'NFLOWPACK', this%memoryPath)
230 call mem_allocate(this%idryinactive,
"IDRYINACTIVE", this%memoryPath)
234 this%flows_from_file = .true.
235 this%iflowsupdated = 1
245 this%idryinactive = 1
256 integer(I4B),
intent(in) :: nodes
262 call mem_allocate(this%ibdgwfsat0, nodes,
'IBDGWFSAT0', this%memoryPath)
264 this%ibdgwfsat0(n) = 1
269 if (this%flows_from_file)
then
271 'GWFFLOWJA', this%memoryPath)
272 call mem_allocate(this%gwfsat, nodes,
'GWFSAT', this%memoryPath)
273 call mem_allocate(this%gwfhead, nodes,
'GWFHEAD', this%memoryPath)
274 call mem_allocate(this%gwfspdis, 3, nodes,
'GWFSPDIS', this%memoryPath)
276 this%gwfsat(n) = done
277 this%gwfhead(n) =
dzero
278 this%gwfspdis(:, n) =
dzero
280 do n = 1,
size(this%gwfflowja)
281 this%gwfflowja(n) =
dzero
285 if (this%igwfstrgss == 0)
then
286 call mem_allocate(this%gwfstrgss, 1,
'GWFSTRGSS', this%memoryPath)
288 call mem_allocate(this%gwfstrgss, nodes,
'GWFSTRGSS', this%memoryPath)
290 if (this%igwfstrgsy == 0)
then
291 call mem_allocate(this%gwfstrgsy, 1,
'GWFSTRGSY', this%memoryPath)
293 call mem_allocate(this%gwfstrgsy, nodes,
'GWFSTRGSY', this%memoryPath)
295 do n = 1,
size(this%gwfstrgss)
296 this%gwfstrgss(n) =
dzero
298 do n = 1,
size(this%gwfstrgsy)
299 this%gwfstrgsy(n) =
dzero
306 if (this%igwfceltyp == 0) &
307 call mem_allocate(this%gwfceltyp, nodes,
'GWFCELTYP', this%memoryPath)
311 if (this%inunit == 0)
call this%allocate_gwfpackages(this%nflowpack)
323 logical(LGP) :: found_ipakcb
324 character(len=*),
parameter :: fmtisvflow = &
325 "(4x,'CELL-BY-CELL FLOW INFORMATION WILL BE SAVED TO BINARY FILE &
326 &WHENEVER ICBCFL IS NOT ZERO AND FLOW IMBALANCE CORRECTION ACTIVE.')"
329 call mem_set_value(this%ipakcb,
'SAVE_FLOWS', this%input_mempath, &
332 write (this%iout,
'(1x,a)')
'PROCESSING FMI OPTIONS'
334 if (found_ipakcb)
then
336 write (this%iout, fmtisvflow)
339 write (this%iout,
'(1x,a)')
'END OF FMI OPTIONS'
361 character(len=LINELENGTH) :: flowtype, fileop, fname
362 integer(I4B) :: inunit, n
363 logical(LGP) :: exist
365 call mem_setptr(flowtypes,
'FLOWTYPE', this%input_mempath)
366 call mem_setptr(fileops,
'FILEIN', this%input_mempath)
367 call mem_setptr(fnames,
'FNAME', this%input_mempath)
369 write (this%iout,
'(1x,a)')
'PROCESSING FMI PACKAGEDATA'
371 do n = 1,
size(flowtypes)
372 flowtype = flowtypes(n)
376 inquire (file=trim(fname), exist=exist)
377 if (.not. exist)
then
378 call store_error(
'Could not find file '//trim(fname))
382 if (fileop /=
'FILEIN')
then
383 call store_error(
'Unexpected packagedata input keyword read: "' &
384 //trim(fileop)//
'".')
388 select case (flowtype)
391 call openfile(inunit, this%iout, fname,
'DATA(BINARY)',
form, &
394 call this%initialize_bfr()
397 call openfile(inunit, this%iout, fname,
'DATA(BINARY)',
form, &
400 call this%initialize_hfr()
403 call openfile(inunit, this%iout, fname,
'DATA(BINARY)',
form, &
408 call this%mvrbudobj%fill_from_bfr(this%dis, this%iout)
411 call openfile(inunit, this%iout, fname,
'DATA(BINARY)', &
414 call this%read_grid()
416 call this%source_packagedata_other(flowtype, fname)
420 write (this%iout,
'(1x,a)')
'END OF FMI PACKAGEDATA'
434 character(len=*),
intent(in) :: flowtype
435 character(len=*),
intent(in) :: fname
437 write (
errmsg,
'(a,3(1x,a))') &
438 'UNKNOWN', trim(adjustl(this%text)),
'PACKAGEDATA:', trim(flowtype)
455 integer(I4B) :: user_nodes
456 integer(I4B),
allocatable :: idomain1d(:), idomain2d(:, :), idomain3d(:, :, :)
458 character(len=*),
parameter :: fmtdiserr = &
459 "('Error in ',a,': Models do not have the same discretization. &
460 &GWF model has ', i0, ' user nodes, this model has ', i0, '. &
461 &Ensure discretization packages, including IDOMAIN, are identical.')"
462 character(len=*),
parameter :: fmtidomerr = &
463 "('Error in ',a,': models do not have the same discretization. &
464 &Models have different IDOMAIN arrays. &
465 &Ensure discretization packages, including IDOMAIN, are identical.')"
467 call this%gfr%initialize(this%iugrb)
470 if (this%gfr%has_variable(
"ICELLTYPE"))
then
473 'GWFCELTYP', this%memoryPath)
474 call this%gfr%read_int_1d_into(
"ICELLTYPE", this%gwfceltyp)
478 select case (this%gfr%grid_type)
480 select type (dis => this%dis)
482 user_nodes = this%gfr%read_int(
"NCELLS")
483 if (user_nodes /= this%dis%nodesuser)
then
484 write (
errmsg, fmtdiserr) &
485 trim(this%text), user_nodes, this%dis%nodesuser
488 idomain1d = this%gfr%read_int_1d(
"IDOMAIN")
489 idomain3d = reshape(idomain1d, [ &
490 this%gfr%read_int(
"NCOL"), &
491 this%gfr%read_int(
"NROW"), &
492 this%gfr%read_int(
"NLAY") &
494 if (.not. all(dis%idomain == idomain3d))
then
495 write (
errmsg, fmtidomerr) trim(this%text)
500 select type (dis => this%dis)
502 user_nodes = this%gfr%read_int(
"NCELLS")
503 if (user_nodes /= this%dis%nodesuser)
then
504 write (
errmsg, fmtdiserr) &
505 trim(this%text), user_nodes, this%dis%nodesuser
508 idomain1d = this%gfr%read_int_1d(
"IDOMAIN")
509 idomain2d = reshape(idomain1d, [ &
510 this%gfr%read_int(
"NCPL"), &
511 this%gfr%read_int(
"NLAY") &
513 if (.not. all(dis%idomain == idomain2d))
then
514 write (
errmsg, fmtidomerr) trim(this%text)
519 select type (dis => this%dis)
521 user_nodes = this%gfr%read_int(
"NODES")
522 if (user_nodes /= this%dis%nodesuser)
then
523 write (
errmsg, fmtdiserr) &
524 trim(this%text), user_nodes, this%dis%nodesuser
527 idomain1d = this%gfr%read_int_1d(
"IDOMAIN")
528 if (.not. all(dis%idomain == idomain1d))
then
529 write (
errmsg, fmtidomerr) trim(this%text)
534 select type (dis => this%dis)
536 user_nodes = this%gfr%read_int(
"NCELLS")
537 if (user_nodes /= this%dis%nodesuser)
then
538 write (
errmsg, fmtdiserr) &
539 trim(this%text), user_nodes, this%dis%nodesuser
542 idomain1d = this%gfr%read_int_1d(
"IDOMAIN")
543 idomain2d = reshape(idomain1d, [ &
544 this%gfr%read_int(
"NCOL"), &
545 this%gfr%read_int(
"NROW") &
547 if (.not. all(dis%idomain == idomain2d))
then
548 write (
errmsg, fmtidomerr) trim(this%text)
553 select type (dis => this%dis)
555 user_nodes = this%gfr%read_int(
"NODES")
556 if (user_nodes /= this%dis%nodesuser)
then
557 write (
errmsg, fmtdiserr) &
558 trim(this%text), user_nodes, this%dis%nodesuser
561 idomain1d = this%gfr%read_int_1d(
"IDOMAIN")
562 if (.not. all(dis%idomain == idomain1d))
then
563 write (
errmsg, fmtidomerr) trim(this%text)
568 select type (dis => this%dis)
570 user_nodes = this%gfr%read_int(
"NCELLS")
571 if (user_nodes /= this%dis%nodesuser)
then
572 write (
errmsg, fmtdiserr) &
573 trim(this%text), user_nodes, this%dis%nodesuser
576 idomain1d = this%gfr%read_int_1d(
"IDOMAIN")
577 if (.not. all(dis%idomain == idomain1d))
then
578 write (
errmsg, fmtidomerr) trim(this%text)
584 if (
allocated(idomain3d))
deallocate (idomain3d)
585 if (
allocated(idomain2d))
deallocate (idomain2d)
586 if (
allocated(idomain1d))
deallocate (idomain1d)
588 call this%gfr%finalize()
594 integer(I4B) :: ncrbud
595 call this%bfr%initialize(this%iubud, this%iout, ncrbud)
614 integer(I4B) :: nu, nr
615 integer(I4B) :: ip, i
618 character(len=*),
parameter :: fmtkstpkper = &
619 "(1x,/1x,'FMI READING BUDGET TERMS &
620 &FOR KSTP ', i0, ' KPER ', i0)"
621 character(len=*),
parameter :: fmtbudkstpkper = &
622 "(1x,/1x, 'FMI SETTING BUDGET TERMS &
623 &FOR KSTP ', i0, ' AND KPER ', &
624 &i0, ' TO BUDGET FILE TERMS FROM &
625 &KSTP ', i0, ' AND KPER ', i0)"
626 character(len=*),
parameter :: fmtbadtdis = &
627 "(4x, 'TIME DISCRETIZATION IN BUDGET FILE &
628 &IS INCOMPATIBLE WITH TIME DISCRETIZATION IN COUPLED MODEL. &
629 &IF THERE IS MORE THAN ONE TIME STEP IN THE BUDGET FILE FOR A &
630 &GIVEN STRESS PERIOD, BUDGET FILE TIME STEPS MUST MATCH THE &
631 &COUPLED MODEL TIME STEPS ONE-FOR-ONE IN THAT STRESS PERIOD.')"
639 if (this%bfr%header%kstp == 1)
then
640 if (this%bfr%endoffile)
then
642 else if (this%bfr%headernext%kper ==
kper + 1)
then
645 else if (this%bfr%endoffile)
then
646 write (
errmsg,
'(4x,a)')
'REACHED END OF GWF BUDGET &
647 &FILE BEFORE READING SUFFICIENT BUDGET INFORMATION FOR THIS &
658 write (this%iout, fmtkstpkper)
kstp,
kper
663 do n = 1, this%bfr%nbudterms
664 call this%bfr%read_record(success, this%iout)
665 if (.not. success)
then
666 write (
errmsg,
'(4x,a)')
'GWF BUDGET READ NOT SUCCESSFUL'
672 if (
kper /= this%bfr%header%kper)
then
673 write (
errmsg, fmtbadtdis)
679 if (this%bfr%header%kstp > 1 .and. (
kstp /= this%bfr%header%kstp))
then
680 write (
errmsg, fmtbadtdis)
687 select type (h => this%bfr%header)
689 select case (trim(adjustl(h%budtxt)))
690 case (
'FLOW-JA-FACE')
694 do ipos = 1,
size(this%bfr%flowja)
695 this%gwfflowja(ipos) = this%bfr%flowja(ipos)
699 nu = this%bfr%nodesrc(i)
700 nr = this%dis%get_nodenumber(nu, 0)
702 this%gwfspdis(1, nr) = this%bfr%auxvar(1, i)
703 this%gwfspdis(2, nr) = this%bfr%auxvar(2, i)
704 this%gwfspdis(3, nr) = this%bfr%auxvar(3, i)
708 nu = this%bfr%nodesrc(i)
709 nr = this%dis%get_nodenumber(nu, 0)
711 this%gwfsat(nr) = this%bfr%auxvar(1, i)
714 do nu = 1, this%dis%nodesuser
715 nr = this%dis%get_nodenumber(nu, 0)
717 this%gwfstrgss(nr) = this%bfr%flow(nu)
720 do nu = 1, this%dis%nodesuser
721 nr = this%dis%get_nodenumber(nu, 0)
723 this%gwfstrgsy(nr) = this%bfr%flow(nu)
726 call this%gwfpackages(ip)%copy_values( &
731 do i = 1, this%gwfpackages(ip)%nbound
732 nu = this%gwfpackages(ip)%nodelist(i)
733 nr = this%dis%get_nodenumber(nu, 0)
734 this%gwfpackages(ip)%nodelist(i) = nr
744 if (this%bfr%headernext%kper ==
kper)
then
745 write (
errmsg, fmtbadtdis)
753 write (this%iout, fmtbudkstpkper)
kstp,
kper, &
754 this%bfr%header%kstp, this%bfr%header%kper
757 this%iflowsupdated = 0
764 call this%bfr%finalize()
770 call this%hfr%initialize(this%iuhds, this%iout)
780 integer(I4B) :: nu, nr, i, ilay
785 character(len=*),
parameter :: fmtkstpkper = &
786 "(1x,/1x,'FMI READING HEAD FOR &
787 &KSTP ', i0, ' KPER ', i0)"
788 character(len=*),
parameter :: fmthdskstpkper = &
789 "(1x,/1x, 'FMI SETTING HEAD FOR KSTP ', i0, ' AND KPER ', &
790 &i0, ' TO BINARY FILE HEADS FROM KSTP ', i0, ' AND KPER ', i0)"
798 if (this%hfr%header%kstp == 1)
then
799 if (this%hfr%endoffile)
then
801 else if (this%hfr%headernext%kper ==
kper + 1)
then
804 else if (this%hfr%endoffile)
then
805 write (
errmsg,
'(4x,a)')
'REACHED END OF GWF HEAD &
806 &FILE BEFORE READING SUFFICIENT HEAD INFORMATION FOR THIS &
817 write (this%iout, fmtkstpkper)
kstp,
kper
820 do ilay = 1, this%hfr%nlay
823 call this%hfr%read_record(success, this%iout)
824 if (.not. success)
then
825 write (
errmsg,
'(4x,a)')
'GWF HEAD READ NOT SUCCESSFUL'
831 if (
kper /= this%hfr%header%kper)
then
832 write (
errmsg,
'(4x,a)')
'PERIOD NUMBER IN HEAD FILE &
833 &DOES NOT MATCH PERIOD NUMBER IN TRANSPORT MODEL. IF THERE &
834 &IS MORE THAN ONE TIME STEP IN THE HEAD FILE FOR A GIVEN STRESS &
835 &PERIOD, HEAD FILE TIME STEPS MUST MATCH GWT MODEL TIME STEPS &
836 &ONE-FOR-ONE IN THAT STRESS PERIOD.'
842 if (this%hfr%header%kstp > 1 .and. (
kstp /= this%hfr%header%kstp))
then
843 write (
errmsg,
'(4x,a)')
'TIME STEP NUMBER IN HEAD FILE &
844 &DOES NOT MATCH TIME STEP NUMBER IN TRANSPORT MODEL. IF THERE &
845 &IS MORE THAN ONE TIME STEP IN THE HEAD FILE FOR A GIVEN STRESS &
846 &PERIOD, HEAD FILE TIME STEPS MUST MATCH GWT MODEL TIME STEPS &
847 &ONE-FOR-ONE IN THAT STRESS PERIOD.'
854 ncpl =
size(this%hfr%head)
856 nu = (ilay - 1) * ncpl + i
857 nr = this%dis%get_nodenumber(nu, 0)
858 val = this%hfr%head(i)
859 if (nr > 0) this%gwfhead(nr) = val
863 write (this%iout, fmthdskstpkper)
kstp,
kper, &
864 this%hfr%header%kstp, this%hfr%header%kper
883 integer(I4B) :: nflowpack
884 integer(I4B) :: i, ip
886 logical :: found_flowja
887 logical :: found_dataspdis
888 logical :: found_datasat
889 logical :: found_stoss
890 logical :: found_stosy
891 integer(I4B),
dimension(:),
allocatable :: imap
894 allocate (imap(this%bfr%nbudterms))
897 found_flowja = .false.
898 found_dataspdis = .false.
899 found_datasat = .false.
900 found_stoss = .false.
901 found_stosy = .false.
902 do i = 1, this%bfr%nbudterms
903 select case (trim(adjustl(this%bfr%budtxtarray(i))))
904 case (
'FLOW-JA-FACE')
905 found_flowja = .true.
907 found_dataspdis = .true.
910 found_datasat = .true.
918 nflowpack = nflowpack + 1
924 call this%allocate_gwfpackages(nflowpack)
929 do i = 1, this%bfr%nbudterms
930 if (imap(i) == 0) cycle
931 call this%gwfpackages(ip)%set_name(this%bfr%dstpackagenamearray(i), &
932 this%bfr%budtxtarray(i))
933 naux = this%bfr%nauxarray(i)
934 call this%gwfpackages(ip)%set_auxname(naux, this%bfr%auxtxtarray(1:naux, i))
942 if (imap(i) == 1)
then
943 this%flowpacknamearray(ip) = this%bfr%dstpackagenamearray(i)
949 if (.not. found_dataspdis)
then
950 write (
errmsg,
'(4x,a)')
'SPECIFIC DISCHARGE NOT FOUND IN &
951 &BUDGET FILE. SAVE_SPECIFIC_DISCHARGE AND &
952 &SAVE_FLOWS MUST BE ACTIVATED IN THE NPF PACKAGE.'
955 if (.not. found_datasat)
then
956 write (
errmsg,
'(4x,a)')
'SATURATION NOT FOUND IN &
957 &BUDGET FILE. SAVE_SATURATION AND &
958 &SAVE_FLOWS MUST BE ACTIVATED IN THE NPF PACKAGE.'
961 if (.not. found_flowja)
then
962 write (
errmsg,
'(4x,a)')
'FLOWJA NOT FOUND IN &
963 &BUDGET FILE. SAVE_FLOWS MUST &
964 &BE ACTIVATED IN THE NPF PACKAGE.'
979 integer(I4B) :: ngwfpack
980 integer(I4B) :: ngwfterms
982 integer(I4B) :: imover
983 integer(I4B) :: ntomvr
984 integer(I4B) :: iterm
985 character(len=LENPACKAGENAME) :: budtxt
986 class(
bndtype),
pointer :: packobj => null()
989 ngwfpack = this%gwfbndlist%Count()
997 imover = packobj%imover
998 if (packobj%isadvpak /= 0) imover = 0
999 if (imover /= 0)
then
1006 ngwfterms = ngwfpack + ntomvr
1007 call this%allocate_gwfpackages(ngwfterms)
1015 budtxt = adjustl(packobj%text)
1016 call this%gwfpackages(iterm)%set_name(packobj%packName, budtxt)
1017 this%flowpacknamearray(iterm) = packobj%packName
1022 imover = packobj%imover
1023 if (packobj%isadvpak /= 0) imover = 0
1024 if (imover /= 0)
then
1025 budtxt = trim(adjustl(packobj%text))//
'-TO-MVR'
1026 call this%gwfpackages(iterm)%set_name(packobj%packName, budtxt)
1027 this%flowpacknamearray(iterm) = packobj%packName
1028 this%igwfmvrterm(iterm) = 1
1046 integer(I4B),
intent(in) :: ngwfterms
1049 character(len=LENMEMPATH) :: memPath
1052 allocate (this%gwfpackages(ngwfterms))
1053 allocate (this%flowpacknamearray(ngwfterms))
1056 call mem_allocate(this%igwfmvrterm, ngwfterms,
'IGWFMVRTERM', this%memoryPath)
1059 this%nflowpack = ngwfterms
1060 do n = 1, this%nflowpack
1061 this%igwfmvrterm(n) = 0
1062 this%flowpacknamearray(n) =
''
1066 write (mempath,
'(a, i0)') trim(this%memoryPath)//
'-FT', n
1067 call this%gwfpackages(n)%initialize(mempath)
1076 do n = 1, this%nflowpack
1077 call this%gwfpackages(n)%da()
1085 character(len=*),
intent(in) :: name
1086 integer(I4B),
intent(inout) :: idx
1092 do ip = 1,
size(this%flowpacknamearray)
1093 if (this%flowpacknamearray(ip) == name)
then
1099 call store_error(
'Error in get_package_index. Could not find '//name, &
This module contains the base boundary package.
class(bndtype) function, pointer, public getbndfromlist(list, idx)
Get boundary from package list.
subroutine, public budgetobject_cr_bfr(this, name, ibinun, iout, colconv1, colconv2)
Create a new budget object from a binary flow file.
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 lenvarname
maximum length of a variable name
real(dp), parameter dhalf
real constant 1/2
real(dp), parameter dem6
real constant 1e-6
real(dp), parameter dzero
real constant zero
integer(i4b), parameter lenbudtxt
maximum length of a budget component names
integer(i4b), parameter lenmempath
maximum length of the memory path
real(dp), parameter done
real constant 1
subroutine allocate_scalars(this)
Allocate scalars.
subroutine fmi_ar(this, ibound)
Allocate the package.
subroutine allocate_gwfpackages(this, ngwfterms)
Allocate budget packages.
subroutine source_packagedata_other(this, flowtype, fname)
Source a packagedata entry with a model-specific flow type.
subroutine read_grid(this)
Read/validate flow model grid.
subroutine deallocate_gwfpackages(this)
Deallocate memory in the gwfpackages array.
subroutine finalize_hfr(this)
Finalize the head file reader.
subroutine fmi_df(this, dis, idryinactive)
Define the flow model interface.
subroutine get_package_index(this, name, idx)
Find the package index for the package with the given name.
subroutine advance_bfr(this)
Advance the budget file reader.
subroutine initialize_gwfterms_from_gwfbndlist(this)
Initialize gwf terms from a GWF exchange.
subroutine initialize_hfr(this)
Initialize the head file reader.
subroutine source_options(this)
@ brief Source input options for package
subroutine fmi_da(this)
Deallocate variables.
subroutine source_packagedata(this)
@ brief Source input options for package
subroutine advance_hfr(this)
Advance the head file reader.
subroutine initialize_gwfterms_from_bfr(this)
Initialize gwf terms from budget file.
subroutine finalize_bfr(this)
Finalize the budget file reader.
subroutine allocate_arrays(this, nodes)
Allocate arrays.
subroutine initialize_bfr(this)
Initialize the budget file reader.
This module defines variable data types.
subroutine, public memorystore_release(varname, memory_path)
Release a single variable from the memory store.
This module contains the base numerical package type.
This module contains the PackageBudgetModule Module.
This module contains simulation methods.
subroutine, public store_error(msg, terminate)
Store an error message.
integer(i4b) function, public count_errors()
Return number of errors.
subroutine, public store_error_filename(filename, terminate)
Store the erroring file name.
subroutine, public store_error_unit(iunit, terminate)
Store the file unit number.
This module contains simulation variables.
character(len=maxcharlen) errmsg
error message string
logical(lgp), pointer, public endofsimulation
flag indicating end of simulation
integer(i4b), pointer, public kstp
current time step number
integer(i4b), pointer, public kper
current stress period number
This class is used to store a single deferred-length character string. It was designed to work in an ...
Structured grid discretization.
Structured grid discretization.
Unstructured grid discretization.
Vertex grid discretization.
Vertex grid discretization.
A generic heterogeneous doubly-linked list.
Derived type for storing flows.