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
167 character(len=LINELENGTH) :: errmsg
168 class(
bndtype),
pointer :: packobj
169 integer(I4B) :: ip, icount
170 integer(I4B) :: nbudterm
180 if (this%fmi%flows_from_file)
then
181 call this%fmi%set_aptbudobj_pointer(this%flowpackagename, this%flowbudptr)
182 if (
associated(this%flowbudptr)) found = .true.
185 if (
associated(this%fmi%gwfbndlist))
then
188 do ip = 1, this%fmi%gwfbndlist%Count()
190 if (packobj%packName == this%flowpackagename)
then
195 this%flowpackagebnd => packobj
196 select type (packobj)
198 this%flowbudptr => packobj%budobj
207 if (.not. found)
then
208 write (errmsg,
'(a)')
'Could not find flow package with name '&
209 &//trim(adjustl(this%flowpackagename))//
'.'
211 call this%parser%StoreErrorUnit()
216 nbudterm = this%flowbudptr%nbudterm
217 call mem_allocate(this%idxbudssm, nbudterm,
'IDXBUDSSM', this%memoryPath)
220 write (this%iout,
'(/, a, a)') &
221 'PROCESSING '//
ftype//
' INFORMATION FOR ', this%packName
222 write (this%iout,
'(a)')
' IDENTIFYING FLOW TERMS IN '//
flowtype//
' PACKAGE'
223 write (this%iout,
'(a, i0)') &
224 ' NUMBER OF '//
flowtype//
' = ', this%flowbudptr%ncv
226 do ip = 1, this%flowbudptr%nbudterm
227 select case (trim(adjustl(this%flowbudptr%budterm(ip)%flowtype)))
228 case (
'FLOW-JA-FACE')
230 this%idxbudssm(ip) = 0
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
265 this%idxbudssm(ip) = icount
268 write (this%iout,
'(a, i0, " = ", a,/, a, i0)') &
269 ' TERM ', ip, trim(adjustl(this%flowbudptr%budterm(ip)%flowtype)), &
270 ' MAX NO. OF ENTRIES = ', this%flowbudptr%budterm(ip)%maxlist
272 write (this%iout,
'(a, //)')
'DONE PROCESSING '//
ftype//
' INFORMATION'
275 this%idxbudsbcd = this%idxbudgwf
286 real(DP),
dimension(:),
intent(inout) :: rhs
287 integer(I4B),
dimension(:),
intent(in) :: ia
288 integer(I4B),
dimension(:),
intent(in) :: idxglo
291 integer(I4B) :: j, n, n1, n2
293 integer(I4B) :: iposd, iposoffd
294 integer(I4B) :: ipossymd, ipossymoffd
295 integer(I4B) :: auxpos
305 if (this%idxbudrain /= 0)
then
306 do j = 1, this%flowbudptr%budterm(this%idxbudrain)%nlist
307 call this%sfe_rain_term(j, n1, n2, rrate, rhsval, hcofval)
308 iloc = this%idxlocnode(n1)
309 iposd = this%idxpakdiag(n1)
310 call matrix_sln%add_value_pos(iposd, hcofval)
311 rhs(iloc) = rhs(iloc) + rhsval
316 if (this%idxbudevap /= 0)
then
317 do j = 1, this%flowbudptr%budterm(this%idxbudevap)%nlist
318 call this%sfe_evap_term(j, n1, n2, rrate, rhsval, hcofval)
319 iloc = this%idxlocnode(n1)
320 iposd = this%idxpakdiag(n1)
321 call matrix_sln%add_value_pos(iposd, hcofval)
322 rhs(iloc) = rhs(iloc) + rhsval
327 if (this%idxbudroff /= 0)
then
328 do j = 1, this%flowbudptr%budterm(this%idxbudroff)%nlist
329 call this%sfe_roff_term(j, n1, n2, rrate, rhsval, hcofval)
330 iloc = this%idxlocnode(n1)
331 iposd = this%idxpakdiag(n1)
332 call matrix_sln%add_value_pos(iposd, hcofval)
333 rhs(iloc) = rhs(iloc) + rhsval
338 if (this%idxbudiflw /= 0)
then
339 do j = 1, this%flowbudptr%budterm(this%idxbudiflw)%nlist
340 call this%sfe_iflw_term(j, n1, n2, rrate, rhsval, hcofval)
341 iloc = this%idxlocnode(n1)
342 iposd = this%idxpakdiag(n1)
343 call matrix_sln%add_value_pos(iposd, hcofval)
344 rhs(iloc) = rhs(iloc) + rhsval
349 if (this%idxbudoutf /= 0)
then
350 do j = 1, this%flowbudptr%budterm(this%idxbudoutf)%nlist
351 call this%sfe_outf_term(j, n1, n2, rrate, rhsval, hcofval)
352 iloc = this%idxlocnode(n1)
353 iposd = this%idxpakdiag(n1)
354 call matrix_sln%add_value_pos(iposd, hcofval)
355 rhs(iloc) = rhs(iloc) + rhsval
360 do j = 1, this%flowbudptr%budterm(this%idxbudgwf)%nlist
363 n = this%flowbudptr%budterm(this%idxbudgwf)%id1(j)
364 if (this%iboundpak(n) /= 0)
then
367 auxpos = this%flowbudptr%budterm(this%idxbudgwf)%naux
368 wa = this%flowbudptr%budterm(this%idxbudgwf)%auxvar(auxpos, j)
371 ctherm = ktf * wa / s
374 iposd = this%idxdglo(j)
375 iposoffd = this%idxoffdglo(j)
376 call matrix_sln%add_value_pos(iposd, -ctherm)
377 call matrix_sln%add_value_pos(iposoffd, ctherm)
380 ipossymd = this%idxsymdglo(j)
381 ipossymoffd = this%idxsymoffdglo(j)
382 call matrix_sln%add_value_pos(ipossymd, -ctherm)
383 call matrix_sln%add_value_pos(ipossymoffd, ctherm)
395 integer(I4B) :: n1, n2
399 if (this%idxbudrain /= 0)
then
400 do j = 1, this%flowbudptr%budterm(this%idxbudrain)%nlist
401 call this%sfe_rain_term(j, n1, n2, rrate)
402 this%dbuff(n1) = this%dbuff(n1) + rrate
407 if (this%idxbudevap /= 0)
then
408 do j = 1, this%flowbudptr%budterm(this%idxbudevap)%nlist
409 call this%sfe_evap_term(j, n1, n2, rrate)
410 this%dbuff(n1) = this%dbuff(n1) + rrate
415 if (this%idxbudroff /= 0)
then
416 do j = 1, this%flowbudptr%budterm(this%idxbudroff)%nlist
417 call this%sfe_roff_term(j, n1, n2, rrate)
418 this%dbuff(n1) = this%dbuff(n1) + rrate
423 if (this%idxbudiflw /= 0)
then
424 do j = 1, this%flowbudptr%budterm(this%idxbudiflw)%nlist
425 call this%sfe_iflw_term(j, n1, n2, rrate)
426 this%dbuff(n1) = this%dbuff(n1) + rrate
431 if (this%idxbudoutf /= 0)
then
432 do j = 1, this%flowbudptr%budterm(this%idxbudoutf)%nlist
433 call this%sfe_outf_term(j, n1, n2, rrate)
434 this%dbuff(n1) = this%dbuff(n1) + rrate
449 integer(I4B) :: nbudterms
468 integer(I4B),
intent(inout) :: idx
470 integer(I4B) :: n, n1, n2
471 integer(I4B) :: maxlist, naux
473 character(len=LENBUDTXT) :: text
478 maxlist = this%flowbudptr%budterm(this%idxbudrain)%maxlist
480 call this%budobj%budterm(idx)%initialize(text, &
485 maxlist, .false., .false., &
489 text =
' EVAPORATION'
491 maxlist = this%flowbudptr%budterm(this%idxbudevap)%maxlist
493 call this%budobj%budterm(idx)%initialize(text, &
498 maxlist, .false., .false., &
504 maxlist = this%flowbudptr%budterm(this%idxbudroff)%maxlist
506 call this%budobj%budterm(idx)%initialize(text, &
511 maxlist, .false., .false., &
517 maxlist = this%flowbudptr%budterm(this%idxbudiflw)%maxlist
519 call this%budobj%budterm(idx)%initialize(text, &
524 maxlist, .false., .false., &
528 text =
' EXT-OUTFLOW'
530 maxlist = this%flowbudptr%budterm(this%idxbudoutf)%maxlist
532 call this%budobj%budterm(idx)%initialize(text, &
537 maxlist, .false., .false., &
541 text =
' STREAMBED-COND'
543 maxlist = this%flowbudptr%budterm(this%idxbudsbcd)%maxlist
545 call this%budobj%budterm(idx)%initialize(text, &
550 maxlist, .false., .false., &
552 call this%budobj%budterm(idx)%reset(maxlist)
555 n1 = this%flowbudptr%budterm(this%idxbudgwf)%id1(n)
556 n2 = this%flowbudptr%budterm(this%idxbudgwf)%id2(n)
557 call this%budobj%budterm(idx)%update_term(n1, n2, q)
566 integer(I4B),
intent(inout) :: idx
567 real(DP),
dimension(:),
intent(in) :: x
568 real(DP),
dimension(:),
contiguous,
intent(inout) :: flowja
569 real(DP),
intent(inout) :: ccratin
570 real(DP),
intent(inout) :: ccratout
572 integer(I4B) :: j, n1, n2
573 integer(I4B) :: nlist
574 integer(I4B) :: igwfnode
575 integer(I4B) :: idiag
576 integer(I4B) :: auxpos
585 nlist = this%flowbudptr%budterm(this%idxbudrain)%nlist
586 call this%budobj%budterm(idx)%reset(nlist)
588 call this%sfe_rain_term(j, n1, n2, q)
589 call this%budobj%budterm(idx)%update_term(n1, n2, q)
590 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
595 nlist = this%flowbudptr%budterm(this%idxbudevap)%nlist
596 call this%budobj%budterm(idx)%reset(nlist)
598 call this%sfe_evap_term(j, n1, n2, q)
599 call this%budobj%budterm(idx)%update_term(n1, n2, q)
600 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
605 nlist = this%flowbudptr%budterm(this%idxbudroff)%nlist
606 call this%budobj%budterm(idx)%reset(nlist)
608 call this%sfe_roff_term(j, n1, n2, q)
609 call this%budobj%budterm(idx)%update_term(n1, n2, q)
610 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
615 nlist = this%flowbudptr%budterm(this%idxbudiflw)%nlist
616 call this%budobj%budterm(idx)%reset(nlist)
618 call this%sfe_iflw_term(j, n1, n2, q)
619 call this%budobj%budterm(idx)%update_term(n1, n2, q)
620 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
625 nlist = this%flowbudptr%budterm(this%idxbudoutf)%nlist
626 call this%budobj%budterm(idx)%reset(nlist)
628 call this%sfe_outf_term(j, n1, n2, q)
629 call this%budobj%budterm(idx)%update_term(n1, n2, q)
630 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
635 call this%budobj%budterm(idx)%reset(this%maxbound)
636 do j = 1, this%flowbudptr%budterm(this%idxbudsbcd)%nlist
638 n1 = this%flowbudptr%budterm(this%idxbudsbcd)%id1(j)
639 if (this%iboundpak(n1) /= 0)
then
640 igwfnode = this%flowbudptr%budterm(this%idxbudsbcd)%id2(j)
642 auxpos = this%flowbudptr%budterm(this%idxbudgwf)%naux
643 wa = this%flowbudptr%budterm(this%idxbudgwf)%auxvar(auxpos, j)
645 s = this%rfeatthk(n1)
646 ctherm = ktf * wa / s
647 q = ctherm * (x(igwfnode) - this%xnewpak(n1))
649 call this%budobj%budterm(idx)%update_term(n1, igwfnode, q)
650 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
651 if (this%iboundpak(n1) /= 0)
then
653 this%simvals(n1) = this%simvals(n1) - q
654 idiag = this%dis%con%ia(igwfnode)
655 flowja(idiag) = flowja(idiag) - q
670 call this%TspAptType%allocate_scalars()
673 call mem_allocate(this%idxbudrain,
'IDXBUDRAIN', this%memoryPath)
674 call mem_allocate(this%idxbudevap,
'IDXBUDEVAP', this%memoryPath)
675 call mem_allocate(this%idxbudroff,
'IDXBUDROFF', this%memoryPath)
676 call mem_allocate(this%idxbudiflw,
'IDXBUDIFLW', this%memoryPath)
677 call mem_allocate(this%idxbudoutf,
'IDXBUDOUTF', this%memoryPath)
678 call mem_allocate(this%idxbudsbcd,
'IDXBUDSBCD', this%memoryPath)
701 call mem_allocate(this%temprain, this%ncv,
'TEMPRAIN', this%memoryPath)
702 call mem_allocate(this%tempevap, this%ncv,
'TEMPEVAP', this%memoryPath)
703 call mem_allocate(this%temproff, this%ncv,
'TEMPROFF', this%memoryPath)
704 call mem_allocate(this%tempiflw, this%ncv,
'TEMPIFLW', this%memoryPath)
707 call this%TspAptType%apt_allocate_arrays()
711 this%temprain(n) =
dzero
712 this%tempevap(n) =
dzero
713 this%temproff(n) =
dzero
714 this%tempiflw(n) =
dzero
741 call this%TspAptType%bnd_da()
749 integer(I4B),
intent(in) :: ientry
750 integer(I4B),
intent(inout) :: n1
751 integer(I4B),
intent(inout) :: n2
752 real(DP),
intent(inout),
optional :: rrate
753 real(DP),
intent(inout),
optional :: rhsval
754 real(DP),
intent(inout),
optional :: hcofval
759 n1 = this%flowbudptr%budterm(this%idxbudrain)%id1(ientry)
760 n2 = this%flowbudptr%budterm(this%idxbudrain)%id2(ientry)
761 qbnd = this%flowbudptr%budterm(this%idxbudrain)%flow(ientry)
762 ctmp = this%temprain(n1)
763 if (
present(rrate)) rrate = ctmp * qbnd * this%eqnsclfac
764 if (
present(rhsval)) rhsval = -rrate
765 if (
present(hcofval)) hcofval =
dzero
773 integer(I4B),
intent(in) :: ientry
774 integer(I4B),
intent(inout) :: n1
775 integer(I4B),
intent(inout) :: n2
776 real(DP),
intent(inout),
optional :: rrate
777 real(DP),
intent(inout),
optional :: rhsval
778 real(DP),
intent(inout),
optional :: hcofval
783 n1 = this%flowbudptr%budterm(this%idxbudevap)%id1(ientry)
784 n2 = this%flowbudptr%budterm(this%idxbudevap)%id2(ientry)
786 qbnd = this%flowbudptr%budterm(this%idxbudevap)%flow(ientry)
787 heatlat = this%gwecommon%gwerhow * this%gwecommon%gwelatheatvap
788 if (
present(rrate)) rrate = qbnd * heatlat
790 if (
present(rhsval)) rhsval = -rrate
791 if (
present(hcofval)) hcofval =
dzero
799 integer(I4B),
intent(in) :: ientry
800 integer(I4B),
intent(inout) :: n1
801 integer(I4B),
intent(inout) :: n2
802 real(DP),
intent(inout),
optional :: rrate
803 real(DP),
intent(inout),
optional :: rhsval
804 real(DP),
intent(inout),
optional :: hcofval
809 n1 = this%flowbudptr%budterm(this%idxbudroff)%id1(ientry)
810 n2 = this%flowbudptr%budterm(this%idxbudroff)%id2(ientry)
811 qbnd = this%flowbudptr%budterm(this%idxbudroff)%flow(ientry)
812 ctmp = this%temproff(n1)
813 if (
present(rrate)) rrate = ctmp * qbnd * this%eqnsclfac
814 if (
present(rhsval)) rhsval = -rrate
815 if (
present(hcofval)) hcofval =
dzero
827 integer(I4B),
intent(in) :: ientry
828 integer(I4B),
intent(inout) :: n1
829 integer(I4B),
intent(inout) :: n2
830 real(DP),
intent(inout),
optional :: rrate
831 real(DP),
intent(inout),
optional :: rhsval
832 real(DP),
intent(inout),
optional :: hcofval
837 n1 = this%flowbudptr%budterm(this%idxbudiflw)%id1(ientry)
838 n2 = this%flowbudptr%budterm(this%idxbudiflw)%id2(ientry)
839 qbnd = this%flowbudptr%budterm(this%idxbudiflw)%flow(ientry)
840 ctmp = this%tempiflw(n1)
841 if (
present(rrate)) rrate = ctmp * qbnd * this%eqnsclfac
842 if (
present(rhsval)) rhsval = -rrate
843 if (
present(hcofval)) hcofval =
dzero
854 integer(I4B),
intent(in) :: ientry
855 integer(I4B),
intent(inout) :: n1
856 integer(I4B),
intent(inout) :: n2
857 real(DP),
intent(inout),
optional :: rrate
858 real(DP),
intent(inout),
optional :: rhsval
859 real(DP),
intent(inout),
optional :: hcofval
864 n1 = this%flowbudptr%budterm(this%idxbudoutf)%id1(ientry)
865 n2 = this%flowbudptr%budterm(this%idxbudoutf)%id2(ientry)
866 qbnd = this%flowbudptr%budterm(this%idxbudoutf)%flow(ientry)
867 ctmp = this%xnewpak(n1)
868 if (
present(rrate)) rrate = ctmp * qbnd * this%eqnsclfac
869 if (
present(rhsval)) rhsval =
dzero
870 if (
present(hcofval)) hcofval = qbnd * this%eqnsclfac
887 call this%obs%StoreObsType(
'temperature', .false., indx)
892 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
897 call this%obs%StoreObsType(
'from-mvr', .true., indx)
902 call this%obs%StoreObsType(
'to-mvr', .true., indx)
907 call this%obs%StoreObsType(
'storage', .true., indx)
912 call this%obs%StoreObsType(
'constant', .true., indx)
917 call this%obs%StoreObsType(
'sfe', .true., indx)
922 call this%obs%StoreObsType(
'rainfall', .true., indx)
927 call this%obs%StoreObsType(
'evaporation', .true., indx)
932 call this%obs%StoreObsType(
'runoff', .true., indx)
937 call this%obs%StoreObsType(
'ext-inflow', .true., indx)
942 call this%obs%StoreObsType(
'ext-outflow', .true., indx)
954 logical,
intent(inout) :: found
958 select case (obsrv%ObsTypeId)
960 call this%rp_obs_byfeature(obsrv)
962 call this%rp_obs_byfeature(obsrv)
964 call this%rp_obs_byfeature(obsrv)
966 call this%rp_obs_byfeature(obsrv)
968 call this%rp_obs_byfeature(obsrv)
970 call this%rp_obs_byfeature(obsrv)
981 character(len=*),
intent(in) :: obstypeid
982 real(DP),
intent(inout) :: v
983 integer(I4B),
intent(in) :: jj
984 logical,
intent(inout) :: found
986 integer(I4B) :: n1, n2
989 select case (obstypeid)
991 if (this%iboundpak(jj) /= 0)
then
992 call this%sfe_rain_term(jj, n1, n2, v)
995 if (this%iboundpak(jj) /= 0)
then
996 call this%sfe_evap_term(jj, n1, n2, v)
999 if (this%iboundpak(jj) /= 0)
then
1000 call this%sfe_roff_term(jj, n1, n2, v)
1003 if (this%iboundpak(jj) /= 0)
then
1004 call this%sfe_iflw_term(jj, n1, n2, v)
1006 case (
'EXT-OUTFLOW')
1007 if (this%iboundpak(jj) /= 0)
then
1008 call this%sfe_outf_term(jj, n1, n2, v)
1022 integer(I4B),
intent(in) :: itemno
1023 character(len=*),
intent(in) :: keyword
1024 logical,
intent(inout) :: found
1026 character(len=LINELENGTH) :: text
1027 integer(I4B) :: ierr
1029 real(DP),
pointer :: bndElem => null()
1038 select case (keyword)
1040 ierr = this%apt_check_valid(itemno)
1044 call this%parser%GetString(text)
1046 bndelem => this%temprain(itemno)
1048 this%packName,
'BND', this%tsManager, &
1049 this%iprpak,
'RAINFALL')
1050 case (
'EVAPORATION')
1051 ierr = this%apt_check_valid(itemno)
1055 call this%parser%GetString(text)
1057 bndelem => this%tempevap(itemno)
1059 this%packName,
'BND', this%tsManager, &
1060 this%iprpak,
'EVAPORATION')
1062 ierr = this%apt_check_valid(itemno)
1066 call this%parser%GetString(text)
1068 bndelem => this%temproff(itemno)
1070 this%packName,
'BND', this%tsManager, &
1071 this%iprpak,
'RUNOFF')
1073 ierr = this%apt_check_valid(itemno)
1077 call this%parser%GetString(text)
1079 bndelem => this%tempiflw(itemno)
1081 this%packName,
'BND', this%tsManager, &
1082 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.