53 character(len=*),
parameter ::
ftype =
'SFE'
54 character(len=*),
parameter ::
flowtype =
'SFR'
55 character(len=16) ::
text =
' SFE'
61 integer(I4B),
pointer :: idxbudrain => null()
62 integer(I4B),
pointer :: idxbudevap => null()
63 integer(I4B),
pointer :: idxbudroff => null()
64 integer(I4B),
pointer :: idxbudiflw => null()
65 integer(I4B),
pointer :: idxbudoutf => null()
66 integer(I4B),
pointer :: idxbudsbcd => null()
68 real(dp),
dimension(:),
pointer,
contiguous :: temprain => null()
69 real(dp),
dimension(:),
pointer,
contiguous :: tempevap => null()
70 real(dp),
dimension(:),
pointer,
contiguous :: temproff => null()
71 real(dp),
dimension(:),
pointer,
contiguous :: tempiflw => null()
100 subroutine sfe_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, &
101 fmi, eqnsclfac, gwecommon, dvt, dvu, dvua)
103 class(
bndtype),
pointer :: packobj
104 integer(I4B),
intent(in) :: id
105 integer(I4B),
intent(in) :: ibcnum
106 integer(I4B),
intent(in) :: inunit
107 integer(I4B),
intent(in) :: iout
108 character(len=*),
intent(in) :: namemodel
109 character(len=*),
intent(in) :: pakname
111 real(dp),
intent(in),
pointer :: eqnsclfac
113 character(len=*),
intent(in) :: dvt
114 character(len=*),
intent(in) :: dvu
115 character(len=*),
intent(in) :: dvua
124 call packobj%set_names(ibcnum, namemodel, pakname,
ftype)
128 call sfeobj%allocate_scalars()
131 call packobj%pack_initialize()
133 packobj%inunit = inunit
136 packobj%ibcnum = ibcnum
146 sfeobj%eqnsclfac => eqnsclfac
151 sfeobj%gwecommon => gwecommon
154 sfeobj%depvartype = dvt
155 sfeobj%depvarunit = dvu
156 sfeobj%depvarunitabbrev = dvua
170 character(len=LINELENGTH) :: errmsg
171 class(
bndtype),
pointer :: packobj
172 integer(I4B) :: ip, icount
173 integer(I4B) :: nbudterm
183 if (this%fmi%flows_from_file)
then
184 call this%fmi%set_aptbudobj_pointer(this%flowpackagename, this%flowbudptr)
185 if (
associated(this%flowbudptr)) found = .true.
188 if (
associated(this%fmi%gwfbndlist))
then
191 do ip = 1, this%fmi%gwfbndlist%Count()
193 if (packobj%packName == this%flowpackagename)
then
198 this%flowpackagebnd => packobj
199 select type (packobj)
201 this%flowbudptr => packobj%budobj
210 if (.not. found)
then
211 write (errmsg,
'(a)')
'COULD NOT FIND FLOW PACKAGE WITH NAME '&
212 &//trim(adjustl(this%flowpackagename))//
'.'
214 call this%parser%StoreErrorUnit()
219 nbudterm = this%flowbudptr%nbudterm
220 call mem_allocate(this%idxbudssm, nbudterm,
'IDXBUDSSM', this%memoryPath)
223 write (this%iout,
'(/, a, a)') &
224 'PROCESSING '//
ftype//
' INFORMATION FOR ', this%packName
225 write (this%iout,
'(a)')
' IDENTIFYING FLOW TERMS IN '//
flowtype//
' PACKAGE'
226 write (this%iout,
'(a, i0)') &
227 ' NUMBER OF '//
flowtype//
' = ', this%flowbudptr%ncv
229 do ip = 1, this%flowbudptr%nbudterm
230 select case (trim(adjustl(this%flowbudptr%budterm(ip)%flowtype)))
231 case (
'FLOW-JA-FACE')
233 this%idxbudssm(ip) = 0
236 this%idxbudssm(ip) = 0
239 this%idxbudssm(ip) = 0
242 this%idxbudssm(ip) = 0
245 this%idxbudssm(ip) = 0
248 this%idxbudssm(ip) = 0
251 this%idxbudssm(ip) = 0
254 this%idxbudssm(ip) = 0
257 this%idxbudssm(ip) = 0
260 this%idxbudssm(ip) = 0
263 this%idxbudssm(ip) = 0
268 this%idxbudssm(ip) = icount
271 write (this%iout,
'(a, i0, " = ", a,/, a, i0)') &
272 ' TERM ', ip, trim(adjustl(this%flowbudptr%budterm(ip)%flowtype)), &
273 ' MAX NO. OF ENTRIES = ', this%flowbudptr%budterm(ip)%maxlist
275 write (this%iout,
'(a, //)')
'DONE PROCESSING '//
ftype//
' INFORMATION'
278 this%idxbudsbcd = this%idxbudgwf
292 real(DP),
dimension(:),
intent(inout) :: rhs
293 integer(I4B),
dimension(:),
intent(in) :: ia
294 integer(I4B),
dimension(:),
intent(in) :: idxglo
297 integer(I4B) :: j, n, n1, n2
299 integer(I4B) :: iposd, iposoffd
300 integer(I4B) :: ipossymd, ipossymoffd
301 integer(I4B) :: auxpos
311 if (this%idxbudrain /= 0)
then
312 do j = 1, this%flowbudptr%budterm(this%idxbudrain)%nlist
313 call this%sfe_rain_term(j, n1, n2, rrate, rhsval, hcofval)
314 iloc = this%idxlocnode(n1)
315 iposd = this%idxpakdiag(n1)
316 call matrix_sln%add_value_pos(iposd, hcofval)
317 rhs(iloc) = rhs(iloc) + rhsval
322 if (this%idxbudevap /= 0)
then
323 do j = 1, this%flowbudptr%budterm(this%idxbudevap)%nlist
324 call this%sfe_evap_term(j, n1, n2, rrate, rhsval, hcofval)
325 iloc = this%idxlocnode(n1)
326 iposd = this%idxpakdiag(n1)
327 call matrix_sln%add_value_pos(iposd, hcofval)
328 rhs(iloc) = rhs(iloc) + rhsval
333 if (this%idxbudroff /= 0)
then
334 do j = 1, this%flowbudptr%budterm(this%idxbudroff)%nlist
335 call this%sfe_roff_term(j, n1, n2, rrate, rhsval, hcofval)
336 iloc = this%idxlocnode(n1)
337 iposd = this%idxpakdiag(n1)
338 call matrix_sln%add_value_pos(iposd, hcofval)
339 rhs(iloc) = rhs(iloc) + rhsval
344 if (this%idxbudiflw /= 0)
then
345 do j = 1, this%flowbudptr%budterm(this%idxbudiflw)%nlist
346 call this%sfe_iflw_term(j, n1, n2, rrate, rhsval, hcofval)
347 iloc = this%idxlocnode(n1)
348 iposd = this%idxpakdiag(n1)
349 call matrix_sln%add_value_pos(iposd, hcofval)
350 rhs(iloc) = rhs(iloc) + rhsval
355 if (this%idxbudoutf /= 0)
then
356 do j = 1, this%flowbudptr%budterm(this%idxbudoutf)%nlist
357 call this%sfe_outf_term(j, n1, n2, rrate, rhsval, hcofval)
358 iloc = this%idxlocnode(n1)
359 iposd = this%idxpakdiag(n1)
360 call matrix_sln%add_value_pos(iposd, hcofval)
361 rhs(iloc) = rhs(iloc) + rhsval
366 do j = 1, this%flowbudptr%budterm(this%idxbudgwf)%nlist
369 n = this%flowbudptr%budterm(this%idxbudgwf)%id1(j)
370 if (this%iboundpak(n) /= 0)
then
373 auxpos = this%flowbudptr%budterm(this%idxbudgwf)%naux
374 wa = this%flowbudptr%budterm(this%idxbudgwf)%auxvar(auxpos, j)
377 ctherm = ktf * wa / s
380 iposd = this%idxdglo(j)
381 iposoffd = this%idxoffdglo(j)
382 call matrix_sln%add_value_pos(iposd, -ctherm)
383 call matrix_sln%add_value_pos(iposoffd, ctherm)
386 ipossymd = this%idxsymdglo(j)
387 ipossymoffd = this%idxsymoffdglo(j)
388 call matrix_sln%add_value_pos(ipossymd, -ctherm)
389 call matrix_sln%add_value_pos(ipossymoffd, ctherm)
404 integer(I4B) :: n1, n2
408 if (this%idxbudrain /= 0)
then
409 do j = 1, this%flowbudptr%budterm(this%idxbudrain)%nlist
410 call this%sfe_rain_term(j, n1, n2, rrate)
411 this%dbuff(n1) = this%dbuff(n1) + rrate
416 if (this%idxbudevap /= 0)
then
417 do j = 1, this%flowbudptr%budterm(this%idxbudevap)%nlist
418 call this%sfe_evap_term(j, n1, n2, rrate)
419 this%dbuff(n1) = this%dbuff(n1) + rrate
424 if (this%idxbudroff /= 0)
then
425 do j = 1, this%flowbudptr%budterm(this%idxbudroff)%nlist
426 call this%sfe_roff_term(j, n1, n2, rrate)
427 this%dbuff(n1) = this%dbuff(n1) + rrate
432 if (this%idxbudiflw /= 0)
then
433 do j = 1, this%flowbudptr%budterm(this%idxbudiflw)%nlist
434 call this%sfe_iflw_term(j, n1, n2, rrate)
435 this%dbuff(n1) = this%dbuff(n1) + rrate
440 if (this%idxbudoutf /= 0)
then
441 do j = 1, this%flowbudptr%budterm(this%idxbudoutf)%nlist
442 call this%sfe_outf_term(j, n1, n2, rrate)
443 this%dbuff(n1) = this%dbuff(n1) + rrate
461 integer(I4B) :: nbudterms
483 integer(I4B),
intent(inout) :: idx
485 integer(I4B) :: n, n1, n2
486 integer(I4B) :: maxlist, naux
488 character(len=LENBUDTXT) :: text
493 maxlist = this%flowbudptr%budterm(this%idxbudrain)%maxlist
495 call this%budobj%budterm(idx)%initialize(text, &
500 maxlist, .false., .false., &
504 text =
' EVAPORATION'
506 maxlist = this%flowbudptr%budterm(this%idxbudevap)%maxlist
508 call this%budobj%budterm(idx)%initialize(text, &
513 maxlist, .false., .false., &
519 maxlist = this%flowbudptr%budterm(this%idxbudroff)%maxlist
521 call this%budobj%budterm(idx)%initialize(text, &
526 maxlist, .false., .false., &
532 maxlist = this%flowbudptr%budterm(this%idxbudiflw)%maxlist
534 call this%budobj%budterm(idx)%initialize(text, &
539 maxlist, .false., .false., &
543 text =
' EXT-OUTFLOW'
545 maxlist = this%flowbudptr%budterm(this%idxbudoutf)%maxlist
547 call this%budobj%budterm(idx)%initialize(text, &
552 maxlist, .false., .false., &
556 text =
' STREAMBED-COND'
558 maxlist = this%flowbudptr%budterm(this%idxbudsbcd)%maxlist
560 call this%budobj%budterm(idx)%initialize(text, &
565 maxlist, .false., .false., &
567 call this%budobj%budterm(idx)%reset(maxlist)
570 n1 = this%flowbudptr%budterm(this%idxbudgwf)%id1(n)
571 n2 = this%flowbudptr%budterm(this%idxbudgwf)%id2(n)
572 call this%budobj%budterm(idx)%update_term(n1, n2, q)
584 integer(I4B),
intent(inout) :: idx
585 real(DP),
dimension(:),
intent(in) :: x
586 real(DP),
dimension(:),
contiguous,
intent(inout) :: flowja
587 real(DP),
intent(inout) :: ccratin
588 real(DP),
intent(inout) :: ccratout
590 integer(I4B) :: j, n1, n2
591 integer(I4B) :: nlist
592 integer(I4B) :: igwfnode
593 integer(I4B) :: idiag
594 integer(I4B) :: auxpos
603 nlist = this%flowbudptr%budterm(this%idxbudrain)%nlist
604 call this%budobj%budterm(idx)%reset(nlist)
606 call this%sfe_rain_term(j, n1, n2, q)
607 call this%budobj%budterm(idx)%update_term(n1, n2, q)
608 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
613 nlist = this%flowbudptr%budterm(this%idxbudevap)%nlist
614 call this%budobj%budterm(idx)%reset(nlist)
616 call this%sfe_evap_term(j, n1, n2, q)
617 call this%budobj%budterm(idx)%update_term(n1, n2, q)
618 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
623 nlist = this%flowbudptr%budterm(this%idxbudroff)%nlist
624 call this%budobj%budterm(idx)%reset(nlist)
626 call this%sfe_roff_term(j, n1, n2, q)
627 call this%budobj%budterm(idx)%update_term(n1, n2, q)
628 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
633 nlist = this%flowbudptr%budterm(this%idxbudiflw)%nlist
634 call this%budobj%budterm(idx)%reset(nlist)
636 call this%sfe_iflw_term(j, n1, n2, q)
637 call this%budobj%budterm(idx)%update_term(n1, n2, q)
638 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
643 nlist = this%flowbudptr%budterm(this%idxbudoutf)%nlist
644 call this%budobj%budterm(idx)%reset(nlist)
646 call this%sfe_outf_term(j, n1, n2, q)
647 call this%budobj%budterm(idx)%update_term(n1, n2, q)
648 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
653 call this%budobj%budterm(idx)%reset(this%maxbound)
654 do j = 1, this%flowbudptr%budterm(this%idxbudsbcd)%nlist
656 n1 = this%flowbudptr%budterm(this%idxbudsbcd)%id1(j)
657 if (this%iboundpak(n1) /= 0)
then
658 igwfnode = this%flowbudptr%budterm(this%idxbudsbcd)%id2(j)
660 auxpos = this%flowbudptr%budterm(this%idxbudgwf)%naux
661 wa = this%flowbudptr%budterm(this%idxbudgwf)%auxvar(auxpos, j)
663 s = this%rfeatthk(n1)
664 ctherm = ktf * wa / s
665 q = ctherm * (x(igwfnode) - this%xnewpak(n1))
667 call this%budobj%budterm(idx)%update_term(n1, igwfnode, q)
668 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
669 if (this%iboundpak(n1) /= 0)
then
671 this%simvals(n1) = this%simvals(n1) - q
672 idiag = this%dis%con%ia(igwfnode)
673 flowja(idiag) = flowja(idiag) - q
691 call this%TspAptType%allocate_scalars()
694 call mem_allocate(this%idxbudrain,
'IDXBUDRAIN', this%memoryPath)
695 call mem_allocate(this%idxbudevap,
'IDXBUDEVAP', this%memoryPath)
696 call mem_allocate(this%idxbudroff,
'IDXBUDROFF', this%memoryPath)
697 call mem_allocate(this%idxbudiflw,
'IDXBUDIFLW', this%memoryPath)
698 call mem_allocate(this%idxbudoutf,
'IDXBUDOUTF', this%memoryPath)
699 call mem_allocate(this%idxbudsbcd,
'IDXBUDSBCD', this%memoryPath)
725 call mem_allocate(this%temprain, this%ncv,
'TEMPRAIN', this%memoryPath)
726 call mem_allocate(this%tempevap, this%ncv,
'TEMPEVAP', this%memoryPath)
727 call mem_allocate(this%temproff, this%ncv,
'TEMPROFF', this%memoryPath)
728 call mem_allocate(this%tempiflw, this%ncv,
'TEMPIFLW', this%memoryPath)
731 call this%TspAptType%apt_allocate_arrays()
735 this%temprain(n) =
dzero
736 this%tempevap(n) =
dzero
737 this%temproff(n) =
dzero
738 this%tempiflw(n) =
dzero
768 call this%TspAptType%bnd_da()
779 integer(I4B),
intent(in) :: ientry
780 integer(I4B),
intent(inout) :: n1
781 integer(I4B),
intent(inout) :: n2
782 real(DP),
intent(inout),
optional :: rrate
783 real(DP),
intent(inout),
optional :: rhsval
784 real(DP),
intent(inout),
optional :: hcofval
789 n1 = this%flowbudptr%budterm(this%idxbudrain)%id1(ientry)
790 n2 = this%flowbudptr%budterm(this%idxbudrain)%id2(ientry)
791 qbnd = this%flowbudptr%budterm(this%idxbudrain)%flow(ientry)
792 ctmp = this%temprain(n1)
793 if (
present(rrate)) rrate = ctmp * qbnd * this%eqnsclfac
794 if (
present(rhsval)) rhsval = -rrate
795 if (
present(hcofval)) hcofval =
dzero
806 integer(I4B),
intent(in) :: ientry
807 integer(I4B),
intent(inout) :: n1
808 integer(I4B),
intent(inout) :: n2
809 real(DP),
intent(inout),
optional :: rrate
810 real(DP),
intent(inout),
optional :: rhsval
811 real(DP),
intent(inout),
optional :: hcofval
816 n1 = this%flowbudptr%budterm(this%idxbudevap)%id1(ientry)
817 n2 = this%flowbudptr%budterm(this%idxbudevap)%id2(ientry)
819 qbnd = this%flowbudptr%budterm(this%idxbudevap)%flow(ientry)
820 heatlat = this%gwecommon%gwerhow * this%gwecommon%gwelatheatvap
821 if (
present(rrate)) rrate = qbnd * heatlat
823 if (
present(rhsval)) rhsval = -rrate
824 if (
present(hcofval)) hcofval =
dzero
835 integer(I4B),
intent(in) :: ientry
836 integer(I4B),
intent(inout) :: n1
837 integer(I4B),
intent(inout) :: n2
838 real(DP),
intent(inout),
optional :: rrate
839 real(DP),
intent(inout),
optional :: rhsval
840 real(DP),
intent(inout),
optional :: hcofval
845 n1 = this%flowbudptr%budterm(this%idxbudroff)%id1(ientry)
846 n2 = this%flowbudptr%budterm(this%idxbudroff)%id2(ientry)
847 qbnd = this%flowbudptr%budterm(this%idxbudroff)%flow(ientry)
848 ctmp = this%temproff(n1)
849 if (
present(rrate)) rrate = ctmp * qbnd * this%eqnsclfac
850 if (
present(rhsval)) rhsval = -rrate
851 if (
present(hcofval)) hcofval =
dzero
866 integer(I4B),
intent(in) :: ientry
867 integer(I4B),
intent(inout) :: n1
868 integer(I4B),
intent(inout) :: n2
869 real(DP),
intent(inout),
optional :: rrate
870 real(DP),
intent(inout),
optional :: rhsval
871 real(DP),
intent(inout),
optional :: hcofval
876 n1 = this%flowbudptr%budterm(this%idxbudiflw)%id1(ientry)
877 n2 = this%flowbudptr%budterm(this%idxbudiflw)%id2(ientry)
878 qbnd = this%flowbudptr%budterm(this%idxbudiflw)%flow(ientry)
879 ctmp = this%tempiflw(n1)
880 if (
present(rrate)) rrate = ctmp * qbnd * this%eqnsclfac
881 if (
present(rhsval)) rhsval = -rrate
882 if (
present(hcofval)) hcofval =
dzero
896 integer(I4B),
intent(in) :: ientry
897 integer(I4B),
intent(inout) :: n1
898 integer(I4B),
intent(inout) :: n2
899 real(DP),
intent(inout),
optional :: rrate
900 real(DP),
intent(inout),
optional :: rhsval
901 real(DP),
intent(inout),
optional :: hcofval
906 n1 = this%flowbudptr%budterm(this%idxbudoutf)%id1(ientry)
907 n2 = this%flowbudptr%budterm(this%idxbudoutf)%id2(ientry)
908 qbnd = this%flowbudptr%budterm(this%idxbudoutf)%flow(ientry)
909 ctmp = this%xnewpak(n1)
910 if (
present(rrate)) rrate = ctmp * qbnd * this%eqnsclfac
911 if (
present(rhsval)) rhsval =
dzero
912 if (
present(hcofval)) hcofval = qbnd * this%eqnsclfac
932 call this%obs%StoreObsType(
'temperature', .false., indx)
937 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
942 call this%obs%StoreObsType(
'from-mvr', .true., indx)
947 call this%obs%StoreObsType(
'to-mvr', .true., indx)
952 call this%obs%StoreObsType(
'storage', .true., indx)
957 call this%obs%StoreObsType(
'constant', .true., indx)
962 call this%obs%StoreObsType(
'sfe', .true., indx)
967 call this%obs%StoreObsType(
'rainfall', .true., indx)
972 call this%obs%StoreObsType(
'evaporation', .true., indx)
977 call this%obs%StoreObsType(
'runoff', .true., indx)
982 call this%obs%StoreObsType(
'ext-inflow', .true., indx)
987 call this%obs%StoreObsType(
'ext-outflow', .true., indx)
1002 logical,
intent(inout) :: found
1006 select case (obsrv%ObsTypeId)
1008 call this%rp_obs_byfeature(obsrv)
1009 case (
'EVAPORATION')
1010 call this%rp_obs_byfeature(obsrv)
1012 call this%rp_obs_byfeature(obsrv)
1014 call this%rp_obs_byfeature(obsrv)
1015 case (
'EXT-OUTFLOW')
1016 call this%rp_obs_byfeature(obsrv)
1018 call this%rp_obs_byfeature(obsrv)
1032 character(len=*),
intent(in) :: obstypeid
1033 real(DP),
intent(inout) :: v
1034 integer(I4B),
intent(in) :: jj
1035 logical,
intent(inout) :: found
1037 integer(I4B) :: n1, n2
1040 select case (obstypeid)
1042 if (this%iboundpak(jj) /= 0)
then
1043 call this%sfe_rain_term(jj, n1, n2, v)
1045 case (
'EVAPORATION')
1046 if (this%iboundpak(jj) /= 0)
then
1047 call this%sfe_evap_term(jj, n1, n2, v)
1050 if (this%iboundpak(jj) /= 0)
then
1051 call this%sfe_roff_term(jj, n1, n2, v)
1054 if (this%iboundpak(jj) /= 0)
then
1055 call this%sfe_iflw_term(jj, n1, n2, v)
1057 case (
'EXT-OUTFLOW')
1058 if (this%iboundpak(jj) /= 0)
then
1059 call this%sfe_outf_term(jj, n1, n2, v)
1076 integer(I4B),
intent(in) :: itemno
1077 character(len=*),
intent(in) :: keyword
1078 logical,
intent(inout) :: found
1080 character(len=LINELENGTH) :: text
1081 integer(I4B) :: ierr
1083 real(DP),
pointer :: bndElem => null()
1092 select case (keyword)
1094 ierr = this%apt_check_valid(itemno)
1098 call this%parser%GetString(text)
1100 bndelem => this%temprain(itemno)
1102 this%packName,
'BND', this%tsManager, &
1103 this%iprpak,
'RAINFALL')
1104 case (
'EVAPORATION')
1105 ierr = this%apt_check_valid(itemno)
1109 call this%parser%GetString(text)
1111 bndelem => this%tempevap(itemno)
1113 this%packName,
'BND', this%tsManager, &
1114 this%iprpak,
'EVAPORATION')
1116 ierr = this%apt_check_valid(itemno)
1120 call this%parser%GetString(text)
1122 bndelem => this%temproff(itemno)
1124 this%packName,
'BND', this%tsManager, &
1125 this%iprpak,
'RUNOFF')
1127 ierr = this%apt_check_valid(itemno)
1131 call this%parser%GetString(text)
1133 bndelem => this%tempiflw(itemno)
1135 this%packName,
'BND', this%tsManager, &
1136 this%iprpak,
'INFLOW')
This module contains the base boundary package.
class(bndtype) function, pointer, public getbndfromlist(list, idx)
Get boundary from package list.
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
real(dp), parameter dzero
real constant zero
integer(i4b), parameter lenbudtxt
maximum length of a budget component names
real(dp), parameter done
real constant 1
subroutine sfe_bd_obs(this, obstypeid, jj, v, found)
Calculate observation value and pass it back to APT.
character(len= *), parameter flowtype
subroutine sfe_df_obs(this)
Observations.
subroutine allocate_scalars(this)
Allocate scalars specific to the streamflow energy transport (SFE) package.
subroutine sfe_setup_budobj(this, idx)
Set up the budget object that stores all the sfe flows.
integer(i4b) function sfe_get_nbudterms(this)
Function to return the number of budget terms just for this package.
subroutine sfe_outf_term(this, ientry, n1, n2, rrate, rhsval, hcofval)
Outflow term.
subroutine sfe_iflw_term(this, ientry, n1, n2, rrate, rhsval, hcofval)
Inflow Term.
subroutine sfe_set_stressperiod(this, itemno, keyword, found)
Sets the stress period attributes for keyword use.
subroutine sfe_rp_obs(this, obsrv, found)
Process package specific obs.
subroutine sfe_fill_budobj(this, idx, x, flowja, ccratin, ccratout)
Copy flow terms into thisbudobj.
subroutine, public sfe_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, fmi, eqnsclfac, gwecommon, dvt, dvu, dvua)
Create a new sfe package.
subroutine sfe_rain_term(this, ientry, n1, n2, rrate, rhsval, hcofval)
Rain term.
subroutine sfe_evap_term(this, ientry, n1, n2, rrate, rhsval, hcofval)
Evaporative term.
character(len= *), parameter ftype
subroutine sfe_solve(this)
@ brief Add terms specific to sfr to the explicit sfe solve
subroutine sfe_allocate_arrays(this)
Allocate arrays specific to the streamflow energy transport (SFE) package.
subroutine sfe_roff_term(this, ientry, n1, n2, rrate, rhsval, hcofval)
Runoff term.
subroutine sfe_fc_expanded(this, rhs, ia, idxglo, matrix_sln)
Add matrix terms related to SFE.
subroutine sfe_da(this)
Deallocate memory.
subroutine find_sfe_package(this)
Find corresponding sfe package.
This module defines variable data types.
This module contains the derived types ObserveType and ObsDataType.
This module contains the SFR package methods.
This module contains simulation methods.
subroutine, public store_error(msg, terminate)
Store an error message.
subroutine, public read_value_or_time_series_adv(textInput, ii, jj, bndElem, pkgName, auxOrBnd, tsManager, iprpak, varName)
Call this subroutine from advanced packages to define timeseries link for a variable (varName).
subroutine, public apt_process_obsid(obsrv, dis, inunitobs, iout)
Process observation IDs for an advanced package.
subroutine, public apt_process_obsid12(obsrv, dis, inunitobs, iout)
Process observation IDs for a package.