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 =
''
85 subroutine fmi_df(this, dis, idryinactive)
90 integer(I4B),
intent(in) :: idryinactive
92 character(len=*),
parameter :: fmtfmi = &
93 "(1x,/1x,'FMI -- FLOW MODEL INTERFACE, VERSION 2, 8/17/2023', &
94 &' INPUT READ FROM MEMPATH: ', A, //)"
95 character(len=*),
parameter :: fmtfmi0 = &
96 "(1x,/1x,'FMI -- FLOW MODEL INTERFACE,'&
97 &' VERSION 2, 8/17/2023')"
100 if (this%iout > 0)
then
101 if (this%inunit /= 0)
then
102 write (this%iout, fmtfmi) this%input_mempath
104 write (this%iout, fmtfmi0)
105 if (this%flows_from_file)
then
106 write (this%iout,
'(a)')
' FLOWS ARE ASSUMED TO BE ZERO.'
108 write (this%iout,
'(a)')
' FLOWS PROVIDED BY A GWF MODEL IN THIS &
118 if (this%inunit /= 0)
then
119 call this%source_options()
123 if (this%inunit /= 0 .and. this%flows_from_file)
then
124 call this%source_packagedata()
125 call this%initialize_gwfterms_from_bfr()
129 if (.not. this%flows_from_file)
then
130 call this%initialize_gwfterms_from_gwfbndlist()
136 this%idryinactive = idryinactive
145 integer(I4B),
dimension(:),
pointer,
contiguous :: ibound
148 this%ibound => ibound
151 call this%allocate_arrays(this%dis%nodes)
164 call this%deallocate_gwfpackages()
167 deallocate (this%gwfpackages)
168 deallocate (this%flowpacknamearray)
172 if (this%flows_from_file)
then
199 call this%NumericalPackageType%da()
213 call this%NumericalPackageType%allocate_scalars()
216 call mem_allocate(this%flows_from_file,
'FLOWS_FROM_FILE', this%memoryPath)
217 call mem_allocate(this%iflowsupdated,
'IFLOWSUPDATED', this%memoryPath)
218 call mem_allocate(this%igwfspdis,
'IGWFSPDIS', this%memoryPath)
219 call mem_allocate(this%igwfstrgss,
'IGWFSTRGSS', this%memoryPath)
220 call mem_allocate(this%igwfstrgsy,
'IGWFSTRGSY', this%memoryPath)
221 call mem_allocate(this%igwfceltyp,
'IGWFCELTYP', this%memoryPath)
226 call mem_allocate(this%nflowpack,
'NFLOWPACK', this%memoryPath)
227 call mem_allocate(this%idryinactive,
"IDRYINACTIVE", this%memoryPath)
231 this%flows_from_file = .true.
232 this%iflowsupdated = 1
242 this%idryinactive = 1
253 integer(I4B),
intent(in) :: nodes
259 call mem_allocate(this%ibdgwfsat0, nodes,
'IBDGWFSAT0', this%memoryPath)
261 this%ibdgwfsat0(n) = 1
266 if (this%flows_from_file)
then
268 'GWFFLOWJA', this%memoryPath)
269 call mem_allocate(this%gwfsat, nodes,
'GWFSAT', this%memoryPath)
270 call mem_allocate(this%gwfhead, nodes,
'GWFHEAD', this%memoryPath)
271 call mem_allocate(this%gwfspdis, 3, nodes,
'GWFSPDIS', this%memoryPath)
273 this%gwfsat(n) = done
274 this%gwfhead(n) =
dzero
275 this%gwfspdis(:, n) =
dzero
277 do n = 1,
size(this%gwfflowja)
278 this%gwfflowja(n) =
dzero
282 if (this%igwfstrgss == 0)
then
283 call mem_allocate(this%gwfstrgss, 1,
'GWFSTRGSS', this%memoryPath)
285 call mem_allocate(this%gwfstrgss, nodes,
'GWFSTRGSS', this%memoryPath)
287 if (this%igwfstrgsy == 0)
then
288 call mem_allocate(this%gwfstrgsy, 1,
'GWFSTRGSY', this%memoryPath)
290 call mem_allocate(this%gwfstrgsy, nodes,
'GWFSTRGSY', this%memoryPath)
292 do n = 1,
size(this%gwfstrgss)
293 this%gwfstrgss(n) =
dzero
295 do n = 1,
size(this%gwfstrgsy)
296 this%gwfstrgsy(n) =
dzero
303 if (this%igwfceltyp == 0) &
304 call mem_allocate(this%gwfceltyp, nodes,
'GWFCELTYP', this%memoryPath)
308 if (this%inunit == 0)
call this%allocate_gwfpackages(this%nflowpack)
320 logical(LGP) :: found_ipakcb
321 character(len=*),
parameter :: fmtisvflow = &
322 "(4x,'CELL-BY-CELL FLOW INFORMATION WILL BE SAVED TO BINARY FILE &
323 &WHENEVER ICBCFL IS NOT ZERO AND FLOW IMBALANCE CORRECTION ACTIVE.')"
326 call mem_set_value(this%ipakcb,
'SAVE_FLOWS', this%input_mempath, &
329 write (this%iout,
'(1x,a)')
'PROCESSING FMI OPTIONS'
331 if (found_ipakcb)
then
333 write (this%iout, fmtisvflow)
336 write (this%iout,
'(1x,a)')
'END OF FMI OPTIONS'
358 character(len=LINELENGTH) :: flowtype, fileop, fname
359 integer(I4B) :: inunit, n
360 logical(LGP) :: exist
362 call mem_setptr(flowtypes,
'FLOWTYPE', this%input_mempath)
363 call mem_setptr(fileops,
'FILEIN', this%input_mempath)
364 call mem_setptr(fnames,
'FNAME', this%input_mempath)
366 write (this%iout,
'(1x,a)')
'PROCESSING FMI PACKAGEDATA'
368 do n = 1,
size(flowtypes)
369 flowtype = flowtypes(n)
373 inquire (file=trim(fname), exist=exist)
374 if (.not. exist)
then
375 call store_error(
'Could not find file '//trim(fname))
379 if (fileop /=
'FILEIN')
then
380 call store_error(
'Unexpected packagedata input keyword read: "' &
381 //trim(fileop)//
'".')
385 select case (flowtype)
388 call openfile(inunit, this%iout, fname,
'DATA(BINARY)',
form, &
391 call this%initialize_bfr()
394 call openfile(inunit, this%iout, fname,
'DATA(BINARY)',
form, &
397 call this%initialize_hfr()
400 call openfile(inunit, this%iout, fname,
'DATA(BINARY)',
form, &
405 call this%mvrbudobj%fill_from_bfr(this%dis, this%iout)
408 call openfile(inunit, this%iout, fname,
'DATA(BINARY)', &
411 call this%read_grid()
413 write (
errmsg,
'(a,3(1x,a))') &
414 'UNKNOWN', trim(adjustl(this%text)),
'PACKAGEDATA:', trim(flowtype)
419 write (this%iout,
'(1x,a)')
'END OF FMI PACKAGEDATA'
443 integer(I4B) :: user_nodes
444 integer(I4B),
allocatable :: idomain1d(:), idomain2d(:, :), idomain3d(:, :, :)
446 character(len=*),
parameter :: fmtdiserr = &
447 "('Error in ',a,': Models do not have the same discretization. &
448 &GWF model has ', i0, ' user nodes, this model has ', i0, '. &
449 &Ensure discretization packages, including IDOMAIN, are identical.')"
450 character(len=*),
parameter :: fmtidomerr = &
451 "('Error in ',a,': models do not have the same discretization. &
452 &Models have different IDOMAIN arrays. &
453 &Ensure discretization packages, including IDOMAIN, are identical.')"
455 call this%gfr%initialize(this%iugrb)
458 if (this%gfr%has_variable(
"ICELLTYPE"))
then
461 'GWFCELTYP', this%memoryPath)
462 call this%gfr%read_int_1d_into(
"ICELLTYPE", this%gwfceltyp)
466 select case (this%gfr%grid_type)
468 select type (dis => this%dis)
470 user_nodes = this%gfr%read_int(
"NCELLS")
471 if (user_nodes /= this%dis%nodesuser)
then
472 write (
errmsg, fmtdiserr) &
473 trim(this%text), user_nodes, this%dis%nodesuser
476 idomain1d = this%gfr%read_int_1d(
"IDOMAIN")
477 idomain3d = reshape(idomain1d, [ &
478 this%gfr%read_int(
"NCOL"), &
479 this%gfr%read_int(
"NROW"), &
480 this%gfr%read_int(
"NLAY") &
482 if (.not. all(dis%idomain == idomain3d))
then
483 write (
errmsg, fmtidomerr) trim(this%text)
488 select type (dis => this%dis)
490 user_nodes = this%gfr%read_int(
"NCELLS")
491 if (user_nodes /= this%dis%nodesuser)
then
492 write (
errmsg, fmtdiserr) &
493 trim(this%text), user_nodes, this%dis%nodesuser
496 idomain1d = this%gfr%read_int_1d(
"IDOMAIN")
497 idomain2d = reshape(idomain1d, [ &
498 this%gfr%read_int(
"NCPL"), &
499 this%gfr%read_int(
"NLAY") &
501 if (.not. all(dis%idomain == idomain2d))
then
502 write (
errmsg, fmtidomerr) trim(this%text)
507 select type (dis => this%dis)
509 user_nodes = this%gfr%read_int(
"NODES")
510 if (user_nodes /= this%dis%nodesuser)
then
511 write (
errmsg, fmtdiserr) &
512 trim(this%text), user_nodes, this%dis%nodesuser
515 idomain1d = this%gfr%read_int_1d(
"IDOMAIN")
516 if (.not. all(dis%idomain == idomain1d))
then
517 write (
errmsg, fmtidomerr) trim(this%text)
522 select type (dis => this%dis)
524 user_nodes = this%gfr%read_int(
"NCELLS")
525 if (user_nodes /= this%dis%nodesuser)
then
526 write (
errmsg, fmtdiserr) &
527 trim(this%text), user_nodes, this%dis%nodesuser
530 idomain1d = this%gfr%read_int_1d(
"IDOMAIN")
531 idomain2d = reshape(idomain1d, [ &
532 this%gfr%read_int(
"NCOL"), &
533 this%gfr%read_int(
"NROW") &
535 if (.not. all(dis%idomain == idomain2d))
then
536 write (
errmsg, fmtidomerr) trim(this%text)
541 select type (dis => this%dis)
543 user_nodes = this%gfr%read_int(
"NODES")
544 if (user_nodes /= this%dis%nodesuser)
then
545 write (
errmsg, fmtdiserr) &
546 trim(this%text), user_nodes, this%dis%nodesuser
549 idomain1d = this%gfr%read_int_1d(
"IDOMAIN")
550 if (.not. all(dis%idomain == idomain1d))
then
551 write (
errmsg, fmtidomerr) trim(this%text)
556 select type (dis => this%dis)
558 user_nodes = this%gfr%read_int(
"NCELLS")
559 if (user_nodes /= this%dis%nodesuser)
then
560 write (
errmsg, fmtdiserr) &
561 trim(this%text), user_nodes, this%dis%nodesuser
564 idomain1d = this%gfr%read_int_1d(
"IDOMAIN")
565 if (.not. all(dis%idomain == idomain1d))
then
566 write (
errmsg, fmtidomerr) trim(this%text)
572 if (
allocated(idomain3d))
deallocate (idomain3d)
573 if (
allocated(idomain2d))
deallocate (idomain2d)
574 if (
allocated(idomain1d))
deallocate (idomain1d)
576 call this%gfr%finalize()
582 integer(I4B) :: ncrbud
583 call this%bfr%initialize(this%iubud, this%iout, ncrbud)
602 integer(I4B) :: nu, nr
603 integer(I4B) :: ip, i
606 character(len=*),
parameter :: fmtkstpkper = &
607 "(1x,/1x,'FMI READING BUDGET TERMS &
608 &FOR KSTP ', i0, ' KPER ', i0)"
609 character(len=*),
parameter :: fmtbudkstpkper = &
610 "(1x,/1x, 'FMI SETTING BUDGET TERMS &
611 &FOR KSTP ', i0, ' AND KPER ', &
612 &i0, ' TO BUDGET FILE TERMS FROM &
613 &KSTP ', i0, ' AND KPER ', i0)"
614 character(len=*),
parameter :: fmtbadtdis = &
615 "(4x, 'TIME DISCRETIZATION IN BUDGET FILE &
616 &IS INCOMPATIBLE WITH TIME DISCRETIZATION IN COUPLED MODEL. &
617 &IF THERE IS MORE THAN ONE TIME STEP IN THE BUDGET FILE FOR A &
618 &GIVEN STRESS PERIOD, BUDGET FILE TIME STEPS MUST MATCH THE &
619 &COUPLED MODEL TIME STEPS ONE-FOR-ONE IN THAT STRESS PERIOD.')"
627 if (this%bfr%header%kstp == 1)
then
628 if (this%bfr%endoffile)
then
630 else if (this%bfr%headernext%kper ==
kper + 1)
then
633 else if (this%bfr%endoffile)
then
634 write (
errmsg,
'(4x,a)')
'REACHED END OF GWF BUDGET &
635 &FILE BEFORE READING SUFFICIENT BUDGET INFORMATION FOR THIS &
646 write (this%iout, fmtkstpkper)
kstp,
kper
651 do n = 1, this%bfr%nbudterms
652 call this%bfr%read_record(success, this%iout)
653 if (.not. success)
then
654 write (
errmsg,
'(4x,a)')
'GWF BUDGET READ NOT SUCCESSFUL'
660 if (
kper /= this%bfr%header%kper)
then
661 write (
errmsg, fmtbadtdis)
667 if (this%bfr%header%kstp > 1 .and. (
kstp /= this%bfr%header%kstp))
then
668 write (
errmsg, fmtbadtdis)
675 select type (h => this%bfr%header)
677 select case (trim(adjustl(h%budtxt)))
678 case (
'FLOW-JA-FACE')
682 do ipos = 1,
size(this%bfr%flowja)
683 this%gwfflowja(ipos) = this%bfr%flowja(ipos)
687 nu = this%bfr%nodesrc(i)
688 nr = this%dis%get_nodenumber(nu, 0)
690 this%gwfspdis(1, nr) = this%bfr%auxvar(1, i)
691 this%gwfspdis(2, nr) = this%bfr%auxvar(2, i)
692 this%gwfspdis(3, nr) = this%bfr%auxvar(3, i)
696 nu = this%bfr%nodesrc(i)
697 nr = this%dis%get_nodenumber(nu, 0)
699 this%gwfsat(nr) = this%bfr%auxvar(1, i)
702 do nu = 1, this%dis%nodesuser
703 nr = this%dis%get_nodenumber(nu, 0)
705 this%gwfstrgss(nr) = this%bfr%flow(nu)
708 do nu = 1, this%dis%nodesuser
709 nr = this%dis%get_nodenumber(nu, 0)
711 this%gwfstrgsy(nr) = this%bfr%flow(nu)
714 call this%gwfpackages(ip)%copy_values( &
719 do i = 1, this%gwfpackages(ip)%nbound
720 nu = this%gwfpackages(ip)%nodelist(i)
721 nr = this%dis%get_nodenumber(nu, 0)
722 this%gwfpackages(ip)%nodelist(i) = nr
732 if (this%bfr%headernext%kper ==
kper)
then
733 write (
errmsg, fmtbadtdis)
741 write (this%iout, fmtbudkstpkper)
kstp,
kper, &
742 this%bfr%header%kstp, this%bfr%header%kper
745 this%iflowsupdated = 0
752 call this%bfr%finalize()
758 call this%hfr%initialize(this%iuhds, this%iout)
768 integer(I4B) :: nu, nr, i, ilay
773 character(len=*),
parameter :: fmtkstpkper = &
774 "(1x,/1x,'FMI READING HEAD FOR &
775 &KSTP ', i0, ' KPER ', i0)"
776 character(len=*),
parameter :: fmthdskstpkper = &
777 "(1x,/1x, 'FMI SETTING HEAD FOR KSTP ', i0, ' AND KPER ', &
778 &i0, ' TO BINARY FILE HEADS FROM KSTP ', i0, ' AND KPER ', i0)"
786 if (this%hfr%header%kstp == 1)
then
787 if (this%hfr%endoffile)
then
789 else if (this%hfr%headernext%kper ==
kper + 1)
then
792 else if (this%hfr%endoffile)
then
793 write (
errmsg,
'(4x,a)')
'REACHED END OF GWF HEAD &
794 &FILE BEFORE READING SUFFICIENT HEAD INFORMATION FOR THIS &
805 write (this%iout, fmtkstpkper)
kstp,
kper
808 do ilay = 1, this%hfr%nlay
811 call this%hfr%read_record(success, this%iout)
812 if (.not. success)
then
813 write (
errmsg,
'(4x,a)')
'GWF HEAD READ NOT SUCCESSFUL'
819 if (
kper /= this%hfr%header%kper)
then
820 write (
errmsg,
'(4x,a)')
'PERIOD NUMBER IN HEAD FILE &
821 &DOES NOT MATCH PERIOD NUMBER IN TRANSPORT MODEL. IF THERE &
822 &IS MORE THAN ONE TIME STEP IN THE HEAD FILE FOR A GIVEN STRESS &
823 &PERIOD, HEAD FILE TIME STEPS MUST MATCH GWT MODEL TIME STEPS &
824 &ONE-FOR-ONE IN THAT STRESS PERIOD.'
830 if (this%hfr%header%kstp > 1 .and. (
kstp /= this%hfr%header%kstp))
then
831 write (
errmsg,
'(4x,a)')
'TIME STEP NUMBER IN HEAD FILE &
832 &DOES NOT MATCH TIME STEP NUMBER IN TRANSPORT MODEL. IF THERE &
833 &IS MORE THAN ONE TIME STEP IN THE HEAD FILE FOR A GIVEN STRESS &
834 &PERIOD, HEAD FILE TIME STEPS MUST MATCH GWT MODEL TIME STEPS &
835 &ONE-FOR-ONE IN THAT STRESS PERIOD.'
842 ncpl =
size(this%hfr%head)
844 nu = (ilay - 1) * ncpl + i
845 nr = this%dis%get_nodenumber(nu, 0)
846 val = this%hfr%head(i)
847 if (nr > 0) this%gwfhead(nr) = val
851 write (this%iout, fmthdskstpkper)
kstp,
kper, &
852 this%hfr%header%kstp, this%hfr%header%kper
871 integer(I4B) :: nflowpack
872 integer(I4B) :: i, ip
874 logical :: found_flowja
875 logical :: found_dataspdis
876 logical :: found_datasat
877 logical :: found_stoss
878 logical :: found_stosy
879 integer(I4B),
dimension(:),
allocatable :: imap
882 allocate (imap(this%bfr%nbudterms))
885 found_flowja = .false.
886 found_dataspdis = .false.
887 found_datasat = .false.
888 found_stoss = .false.
889 found_stosy = .false.
890 do i = 1, this%bfr%nbudterms
891 select case (trim(adjustl(this%bfr%budtxtarray(i))))
892 case (
'FLOW-JA-FACE')
893 found_flowja = .true.
895 found_dataspdis = .true.
898 found_datasat = .true.
906 nflowpack = nflowpack + 1
912 call this%allocate_gwfpackages(nflowpack)
917 do i = 1, this%bfr%nbudterms
918 if (imap(i) == 0) cycle
919 call this%gwfpackages(ip)%set_name(this%bfr%dstpackagenamearray(i), &
920 this%bfr%budtxtarray(i))
921 naux = this%bfr%nauxarray(i)
922 call this%gwfpackages(ip)%set_auxname(naux, this%bfr%auxtxtarray(1:naux, i))
930 if (imap(i) == 1)
then
931 this%flowpacknamearray(ip) = this%bfr%dstpackagenamearray(i)
937 if (.not. found_dataspdis)
then
938 write (
errmsg,
'(4x,a)')
'SPECIFIC DISCHARGE NOT FOUND IN &
939 &BUDGET FILE. SAVE_SPECIFIC_DISCHARGE AND &
940 &SAVE_FLOWS MUST BE ACTIVATED IN THE NPF PACKAGE.'
943 if (.not. found_datasat)
then
944 write (
errmsg,
'(4x,a)')
'SATURATION NOT FOUND IN &
945 &BUDGET FILE. SAVE_SATURATION AND &
946 &SAVE_FLOWS MUST BE ACTIVATED IN THE NPF PACKAGE.'
949 if (.not. found_flowja)
then
950 write (
errmsg,
'(4x,a)')
'FLOWJA NOT FOUND IN &
951 &BUDGET FILE. SAVE_FLOWS MUST &
952 &BE ACTIVATED IN THE NPF PACKAGE.'
967 integer(I4B) :: ngwfpack
968 integer(I4B) :: ngwfterms
970 integer(I4B) :: imover
971 integer(I4B) :: ntomvr
972 integer(I4B) :: iterm
973 character(len=LENPACKAGENAME) :: budtxt
974 class(
bndtype),
pointer :: packobj => null()
977 ngwfpack = this%gwfbndlist%Count()
985 imover = packobj%imover
986 if (packobj%isadvpak /= 0) imover = 0
987 if (imover /= 0)
then
994 ngwfterms = ngwfpack + ntomvr
995 call this%allocate_gwfpackages(ngwfterms)
1003 budtxt = adjustl(packobj%text)
1004 call this%gwfpackages(iterm)%set_name(packobj%packName, budtxt)
1005 this%flowpacknamearray(iterm) = packobj%packName
1010 imover = packobj%imover
1011 if (packobj%isadvpak /= 0) imover = 0
1012 if (imover /= 0)
then
1013 budtxt = trim(adjustl(packobj%text))//
'-TO-MVR'
1014 call this%gwfpackages(iterm)%set_name(packobj%packName, budtxt)
1015 this%flowpacknamearray(iterm) = packobj%packName
1016 this%igwfmvrterm(iterm) = 1
1034 integer(I4B),
intent(in) :: ngwfterms
1037 character(len=LENMEMPATH) :: memPath
1040 allocate (this%gwfpackages(ngwfterms))
1041 allocate (this%flowpacknamearray(ngwfterms))
1044 call mem_allocate(this%igwfmvrterm, ngwfterms,
'IGWFMVRTERM', this%memoryPath)
1047 this%nflowpack = ngwfterms
1048 do n = 1, this%nflowpack
1049 this%igwfmvrterm(n) = 0
1050 this%flowpacknamearray(n) =
''
1054 write (mempath,
'(a, i0)') trim(this%memoryPath)//
'-FT', n
1055 call this%gwfpackages(n)%initialize(mempath)
1064 do n = 1, this%nflowpack
1065 call this%gwfpackages(n)%da()
1073 character(len=*),
intent(in) :: name
1074 integer(I4B),
intent(inout) :: idx
1080 do ip = 1,
size(this%flowpacknamearray)
1081 if (this%flowpacknamearray(ip) == name)
then
1087 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 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.