51 character(len=*),
parameter ::
ftype =
'LKT'
52 character(len=*),
parameter ::
flowtype =
'LAK'
53 character(len=16) ::
text =
' LKT'
57 integer(I4B),
pointer :: idxbudrain => null()
58 integer(I4B),
pointer :: idxbudevap => null()
59 integer(I4B),
pointer :: idxbudroff => null()
60 integer(I4B),
pointer :: idxbudiflw => null()
61 integer(I4B),
pointer :: idxbudwdrl => null()
62 integer(I4B),
pointer :: idxbudoutf => null()
64 real(dp),
dimension(:),
pointer,
contiguous :: concrain => null()
65 real(dp),
dimension(:),
pointer,
contiguous :: concevap => null()
66 real(dp),
dimension(:),
pointer,
contiguous :: concroff => null()
67 real(dp),
dimension(:),
pointer,
contiguous :: conciflw => null()
97 subroutine lkt_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, &
98 fmi, eqnsclfac, dvt, dvu, dvua)
100 class(
bndtype),
pointer :: packobj
101 integer(I4B),
intent(in) :: id
102 integer(I4B),
intent(in) :: ibcnum
103 integer(I4B),
intent(in) :: inunit
104 integer(I4B),
intent(in) :: iout
105 character(len=*),
intent(in) :: namemodel
106 character(len=*),
intent(in) :: pakname
108 real(dp),
intent(in),
pointer :: eqnsclfac
109 character(len=*),
intent(in) :: dvt
110 character(len=*),
intent(in) :: dvu
111 character(len=*),
intent(in) :: dvua
120 call packobj%set_names(ibcnum, namemodel, pakname,
ftype)
124 call lktobj%allocate_scalars()
127 call packobj%pack_initialize()
129 packobj%inunit = inunit
132 packobj%ibcnum = ibcnum
142 lktobj%eqnsclfac => eqnsclfac
145 lktobj%depvartype = dvt
146 lktobj%depvarunit = dvu
147 lktobj%depvarunitabbrev = dvua
158 character(len=LINELENGTH) :: errmsg
159 class(
bndtype),
pointer :: packobj
160 integer(I4B) :: ip, icount
161 integer(I4B) :: nbudterm
171 if (this%fmi%flows_from_file)
then
172 call this%fmi%set_aptbudobj_pointer(this%flowpackagename, this%flowbudptr)
173 if (
associated(this%flowbudptr)) found = .true.
176 if (
associated(this%fmi%gwfbndlist))
then
179 do ip = 1, this%fmi%gwfbndlist%Count()
181 if (packobj%packName == this%flowpackagename)
then
186 this%flowpackagebnd => packobj
187 select type (packobj)
189 this%flowbudptr => packobj%budobj
198 if (.not. found)
then
199 write (errmsg,
'(a)')
'Could not find flow package with name '&
200 &//trim(adjustl(this%flowpackagename))//
'.'
202 call this%parser%StoreErrorUnit()
207 nbudterm = this%flowbudptr%nbudterm
208 call mem_allocate(this%idxbudssm, nbudterm,
'IDXBUDSSM', this%memoryPath)
211 write (this%iout,
'(/, a, a)') &
212 'PROCESSING '//
ftype//
' INFORMATION FOR ', this%packName
213 write (this%iout,
'(a)')
' IDENTIFYING FLOW TERMS IN '//
flowtype//
' PACKAGE'
214 write (this%iout,
'(a, i0)') &
215 ' NUMBER OF '//
flowtype//
' = ', this%flowbudptr%ncv
217 do ip = 1, this%flowbudptr%nbudterm
218 select case (trim(adjustl(this%flowbudptr%budterm(ip)%flowtype)))
219 case (
'FLOW-JA-FACE')
221 this%idxbudssm(ip) = 0
224 this%idxbudssm(ip) = 0
227 this%idxbudssm(ip) = 0
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
259 this%idxbudssm(ip) = icount
262 write (this%iout,
'(a, i0, " = ", a,/, a, i0)') &
263 ' TERM ', ip, trim(adjustl(this%flowbudptr%budterm(ip)%flowtype)), &
264 ' MAX NO. OF ENTRIES = ', this%flowbudptr%budterm(ip)%maxlist
266 write (this%iout,
'(a, //)')
'DONE PROCESSING '//
ftype//
' INFORMATION'
278 real(DP),
dimension(:),
intent(inout) :: rhs
279 integer(I4B),
dimension(:),
intent(in) :: ia
280 integer(I4B),
dimension(:),
intent(in) :: idxglo
283 integer(I4B) :: j, n1, n2
285 integer(I4B) :: iposd
291 if (this%idxbudrain /= 0)
then
292 do j = 1, this%flowbudptr%budterm(this%idxbudrain)%nlist
293 call this%lkt_rain_term(j, n1, n2, rrate, rhsval, hcofval)
294 iloc = this%idxlocnode(n1)
295 iposd = this%idxpakdiag(n1)
296 call matrix_sln%add_value_pos(iposd, hcofval)
297 rhs(iloc) = rhs(iloc) + rhsval
302 if (this%idxbudevap /= 0)
then
303 do j = 1, this%flowbudptr%budterm(this%idxbudevap)%nlist
304 call this%lkt_evap_term(j, n1, n2, rrate, rhsval, hcofval)
305 iloc = this%idxlocnode(n1)
306 iposd = this%idxpakdiag(n1)
307 call matrix_sln%add_value_pos(iposd, hcofval)
308 rhs(iloc) = rhs(iloc) + rhsval
313 if (this%idxbudroff /= 0)
then
314 do j = 1, this%flowbudptr%budterm(this%idxbudroff)%nlist
315 call this%lkt_roff_term(j, n1, n2, rrate, rhsval, hcofval)
316 iloc = this%idxlocnode(n1)
317 iposd = this%idxpakdiag(n1)
318 call matrix_sln%add_value_pos(iposd, hcofval)
319 rhs(iloc) = rhs(iloc) + rhsval
324 if (this%idxbudiflw /= 0)
then
325 do j = 1, this%flowbudptr%budterm(this%idxbudiflw)%nlist
326 call this%lkt_iflw_term(j, n1, n2, rrate, rhsval, hcofval)
327 iloc = this%idxlocnode(n1)
328 iposd = this%idxpakdiag(n1)
329 call matrix_sln%add_value_pos(iposd, hcofval)
330 rhs(iloc) = rhs(iloc) + rhsval
335 if (this%idxbudwdrl /= 0)
then
336 do j = 1, this%flowbudptr%budterm(this%idxbudwdrl)%nlist
337 call this%lkt_wdrl_term(j, n1, n2, rrate, rhsval, hcofval)
338 iloc = this%idxlocnode(n1)
339 iposd = this%idxpakdiag(n1)
340 call matrix_sln%add_value_pos(iposd, hcofval)
341 rhs(iloc) = rhs(iloc) + rhsval
346 if (this%idxbudoutf /= 0)
then
347 do j = 1, this%flowbudptr%budterm(this%idxbudoutf)%nlist
348 call this%lkt_outf_term(j, n1, n2, rrate, rhsval, hcofval)
349 iloc = this%idxlocnode(n1)
350 iposd = this%idxpakdiag(n1)
351 call matrix_sln%add_value_pos(iposd, hcofval)
352 rhs(iloc) = rhs(iloc) + rhsval
364 integer(I4B) :: n1, n2
368 if (this%idxbudrain /= 0)
then
369 do j = 1, this%flowbudptr%budterm(this%idxbudrain)%nlist
370 call this%lkt_rain_term(j, n1, n2, rrate)
371 this%dbuff(n1) = this%dbuff(n1) + rrate
376 if (this%idxbudevap /= 0)
then
377 do j = 1, this%flowbudptr%budterm(this%idxbudevap)%nlist
378 call this%lkt_evap_term(j, n1, n2, rrate)
379 this%dbuff(n1) = this%dbuff(n1) + rrate
384 if (this%idxbudroff /= 0)
then
385 do j = 1, this%flowbudptr%budterm(this%idxbudroff)%nlist
386 call this%lkt_roff_term(j, n1, n2, rrate)
387 this%dbuff(n1) = this%dbuff(n1) + rrate
392 if (this%idxbudiflw /= 0)
then
393 do j = 1, this%flowbudptr%budterm(this%idxbudiflw)%nlist
394 call this%lkt_iflw_term(j, n1, n2, rrate)
395 this%dbuff(n1) = this%dbuff(n1) + rrate
400 if (this%idxbudwdrl /= 0)
then
401 do j = 1, this%flowbudptr%budterm(this%idxbudwdrl)%nlist
402 call this%lkt_wdrl_term(j, n1, n2, rrate)
403 this%dbuff(n1) = this%dbuff(n1) + rrate
408 if (this%idxbudoutf /= 0)
then
409 do j = 1, this%flowbudptr%budterm(this%idxbudoutf)%nlist
410 call this%lkt_outf_term(j, n1, n2, rrate)
411 this%dbuff(n1) = this%dbuff(n1) + rrate
425 integer(I4B) :: nbudterms
439 integer(I4B),
intent(inout) :: idx
441 integer(I4B) :: maxlist, naux
442 character(len=LENBUDTXT) :: text
447 maxlist = this%flowbudptr%budterm(this%idxbudrain)%maxlist
449 call this%budobj%budterm(idx)%initialize(text, &
454 maxlist, .false., .false., &
459 text =
' EVAPORATION'
461 maxlist = this%flowbudptr%budterm(this%idxbudevap)%maxlist
463 call this%budobj%budterm(idx)%initialize(text, &
468 maxlist, .false., .false., &
474 maxlist = this%flowbudptr%budterm(this%idxbudroff)%maxlist
476 call this%budobj%budterm(idx)%initialize(text, &
481 maxlist, .false., .false., &
487 maxlist = this%flowbudptr%budterm(this%idxbudiflw)%maxlist
489 call this%budobj%budterm(idx)%initialize(text, &
494 maxlist, .false., .false., &
500 maxlist = this%flowbudptr%budterm(this%idxbudwdrl)%maxlist
502 call this%budobj%budterm(idx)%initialize(text, &
507 maxlist, .false., .false., &
512 text =
' EXT-OUTFLOW'
514 maxlist = this%flowbudptr%budterm(this%idxbudoutf)%maxlist
516 call this%budobj%budterm(idx)%initialize(text, &
521 maxlist, .false., .false., &
531 integer(I4B),
intent(inout) :: idx
532 real(DP),
dimension(:),
intent(in) :: x
533 real(DP),
dimension(:),
contiguous,
intent(inout) :: flowja
534 real(DP),
intent(inout) :: ccratin
535 real(DP),
intent(inout) :: ccratout
537 integer(I4B) :: j, n1, n2
538 integer(I4B) :: nlist
544 nlist = this%flowbudptr%budterm(this%idxbudrain)%nlist
545 call this%budobj%budterm(idx)%reset(nlist)
547 call this%lkt_rain_term(j, n1, n2, q)
548 call this%budobj%budterm(idx)%update_term(n1, n2, q)
549 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
554 nlist = this%flowbudptr%budterm(this%idxbudevap)%nlist
555 call this%budobj%budterm(idx)%reset(nlist)
557 call this%lkt_evap_term(j, n1, n2, q)
558 call this%budobj%budterm(idx)%update_term(n1, n2, q)
559 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
564 nlist = this%flowbudptr%budterm(this%idxbudroff)%nlist
565 call this%budobj%budterm(idx)%reset(nlist)
567 call this%lkt_roff_term(j, n1, n2, q)
568 call this%budobj%budterm(idx)%update_term(n1, n2, q)
569 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
574 nlist = this%flowbudptr%budterm(this%idxbudiflw)%nlist
575 call this%budobj%budterm(idx)%reset(nlist)
577 call this%lkt_iflw_term(j, n1, n2, q)
578 call this%budobj%budterm(idx)%update_term(n1, n2, q)
579 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
584 nlist = this%flowbudptr%budterm(this%idxbudwdrl)%nlist
585 call this%budobj%budterm(idx)%reset(nlist)
587 call this%lkt_wdrl_term(j, n1, n2, q)
588 call this%budobj%budterm(idx)%update_term(n1, n2, q)
589 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
594 nlist = this%flowbudptr%budterm(this%idxbudoutf)%nlist
595 call this%budobj%budterm(idx)%reset(nlist)
597 call this%lkt_outf_term(j, n1, n2, q)
598 call this%budobj%budterm(idx)%update_term(n1, n2, q)
599 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
614 call this%TspAptType%allocate_scalars()
617 call mem_allocate(this%idxbudrain,
'IDXBUDRAIN', this%memoryPath)
618 call mem_allocate(this%idxbudevap,
'IDXBUDEVAP', this%memoryPath)
619 call mem_allocate(this%idxbudroff,
'IDXBUDROFF', this%memoryPath)
620 call mem_allocate(this%idxbudiflw,
'IDXBUDIFLW', this%memoryPath)
621 call mem_allocate(this%idxbudwdrl,
'IDXBUDWDRL', this%memoryPath)
622 call mem_allocate(this%idxbudoutf,
'IDXBUDOUTF', this%memoryPath)
645 call mem_allocate(this%concrain, this%ncv,
'CONCRAIN', this%memoryPath)
646 call mem_allocate(this%concevap, this%ncv,
'CONCEVAP', this%memoryPath)
647 call mem_allocate(this%concroff, this%ncv,
'CONCROFF', this%memoryPath)
648 call mem_allocate(this%conciflw, this%ncv,
'CONCIFLW', this%memoryPath)
651 call this%TspAptType%apt_allocate_arrays()
655 this%concrain(n) =
dzero
656 this%concevap(n) =
dzero
657 this%concroff(n) =
dzero
658 this%conciflw(n) =
dzero
687 call this%TspAptType%bnd_da()
696 integer(I4B),
intent(in) :: ientry
697 integer(I4B),
intent(inout) :: n1
698 integer(I4B),
intent(inout) :: n2
699 real(DP),
intent(inout),
optional :: rrate
700 real(DP),
intent(inout),
optional :: rhsval
701 real(DP),
intent(inout),
optional :: hcofval
706 n1 = this%flowbudptr%budterm(this%idxbudrain)%id1(ientry)
707 n2 = this%flowbudptr%budterm(this%idxbudrain)%id2(ientry)
708 qbnd = this%flowbudptr%budterm(this%idxbudrain)%flow(ientry)
709 ctmp = this%concrain(n1)
710 if (
present(rrate)) rrate = ctmp * qbnd
711 if (
present(rhsval)) rhsval = -rrate
712 if (
present(hcofval)) hcofval =
dzero
721 integer(I4B),
intent(in) :: ientry
722 integer(I4B),
intent(inout) :: n1
723 integer(I4B),
intent(inout) :: n2
724 real(DP),
intent(inout),
optional :: rrate
725 real(DP),
intent(inout),
optional :: rhsval
726 real(DP),
intent(inout),
optional :: hcofval
732 n1 = this%flowbudptr%budterm(this%idxbudevap)%id1(ientry)
733 n2 = this%flowbudptr%budterm(this%idxbudevap)%id2(ientry)
735 qbnd = this%flowbudptr%budterm(this%idxbudevap)%flow(ientry)
736 ctmp = this%concevap(n1)
737 if (this%xnewpak(n1) < ctmp)
then
742 if (
present(rrate)) &
743 rrate = omega * qbnd * this%xnewpak(n1) + &
744 (
done - omega) * qbnd * ctmp
745 if (
present(rhsval)) rhsval = -(
done - omega) * qbnd * ctmp
746 if (
present(hcofval)) hcofval = omega * qbnd
755 integer(I4B),
intent(in) :: ientry
756 integer(I4B),
intent(inout) :: n1
757 integer(I4B),
intent(inout) :: n2
758 real(DP),
intent(inout),
optional :: rrate
759 real(DP),
intent(inout),
optional :: rhsval
760 real(DP),
intent(inout),
optional :: hcofval
765 n1 = this%flowbudptr%budterm(this%idxbudroff)%id1(ientry)
766 n2 = this%flowbudptr%budterm(this%idxbudroff)%id2(ientry)
767 qbnd = this%flowbudptr%budterm(this%idxbudroff)%flow(ientry)
768 ctmp = this%concroff(n1)
769 if (
present(rrate)) rrate = ctmp * qbnd
770 if (
present(rhsval)) rhsval = -rrate
771 if (
present(hcofval)) hcofval =
dzero
783 integer(I4B),
intent(in) :: ientry
784 integer(I4B),
intent(inout) :: n1
785 integer(I4B),
intent(inout) :: n2
786 real(DP),
intent(inout),
optional :: rrate
787 real(DP),
intent(inout),
optional :: rhsval
788 real(DP),
intent(inout),
optional :: hcofval
793 n1 = this%flowbudptr%budterm(this%idxbudiflw)%id1(ientry)
794 n2 = this%flowbudptr%budterm(this%idxbudiflw)%id2(ientry)
795 qbnd = this%flowbudptr%budterm(this%idxbudiflw)%flow(ientry)
796 ctmp = this%conciflw(n1)
797 if (
present(rrate)) rrate = ctmp * qbnd
798 if (
present(rhsval)) rhsval = -rrate
799 if (
present(hcofval)) hcofval =
dzero
811 integer(I4B),
intent(in) :: ientry
812 integer(I4B),
intent(inout) :: n1
813 integer(I4B),
intent(inout) :: n2
814 real(DP),
intent(inout),
optional :: rrate
815 real(DP),
intent(inout),
optional :: rhsval
816 real(DP),
intent(inout),
optional :: hcofval
821 n1 = this%flowbudptr%budterm(this%idxbudwdrl)%id1(ientry)
822 n2 = this%flowbudptr%budterm(this%idxbudwdrl)%id2(ientry)
823 qbnd = this%flowbudptr%budterm(this%idxbudwdrl)%flow(ientry)
824 ctmp = this%xnewpak(n1)
825 if (
present(rrate)) rrate = ctmp * qbnd
826 if (
present(rhsval)) rhsval =
dzero
827 if (
present(hcofval)) hcofval = qbnd
839 integer(I4B),
intent(in) :: ientry
840 integer(I4B),
intent(inout) :: n1
841 integer(I4B),
intent(inout) :: n2
842 real(DP),
intent(inout),
optional :: rrate
843 real(DP),
intent(inout),
optional :: rhsval
844 real(DP),
intent(inout),
optional :: hcofval
849 n1 = this%flowbudptr%budterm(this%idxbudoutf)%id1(ientry)
850 n2 = this%flowbudptr%budterm(this%idxbudoutf)%id2(ientry)
851 qbnd = this%flowbudptr%budterm(this%idxbudoutf)%flow(ientry)
852 ctmp = this%xnewpak(n1)
853 if (
present(rrate)) rrate = ctmp * qbnd
854 if (
present(rhsval)) rhsval =
dzero
855 if (
present(hcofval)) hcofval = qbnd
872 call this%obs%StoreObsType(
'concentration', .false., indx)
877 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
882 call this%obs%StoreObsType(
'from-mvr', .true., indx)
887 call this%obs%StoreObsType(
'to-mvr', .true., indx)
892 call this%obs%StoreObsType(
'storage', .true., indx)
897 call this%obs%StoreObsType(
'constant', .true., indx)
902 call this%obs%StoreObsType(
'lkt', .true., indx)
907 call this%obs%StoreObsType(
'rainfall', .true., indx)
912 call this%obs%StoreObsType(
'evaporation', .true., indx)
917 call this%obs%StoreObsType(
'runoff', .true., indx)
922 call this%obs%StoreObsType(
'ext-inflow', .true., indx)
927 call this%obs%StoreObsType(
'withdrawal', .true., indx)
932 call this%obs%StoreObsType(
'ext-outflow', .true., indx)
944 logical,
intent(inout) :: found
948 select case (obsrv%ObsTypeId)
950 call this%rp_obs_byfeature(obsrv)
952 call this%rp_obs_byfeature(obsrv)
954 call this%rp_obs_byfeature(obsrv)
956 call this%rp_obs_byfeature(obsrv)
958 call this%rp_obs_byfeature(obsrv)
960 call this%rp_obs_byfeature(obsrv)
962 call this%rp_obs_budterm(obsrv, &
963 this%flowbudptr%budterm(this%idxbudtmvr))
974 character(len=*),
intent(in) :: obstypeid
975 real(DP),
intent(inout) :: v
976 integer(I4B),
intent(in) :: jj
977 logical,
intent(inout) :: found
979 integer(I4B) :: n1, n2
982 select case (obstypeid)
984 if (this%iboundpak(jj) /= 0)
then
985 call this%lkt_rain_term(jj, n1, n2, v)
988 if (this%iboundpak(jj) /= 0)
then
989 call this%lkt_evap_term(jj, n1, n2, v)
992 if (this%iboundpak(jj) /= 0)
then
993 call this%lkt_roff_term(jj, n1, n2, v)
996 if (this%iboundpak(jj) /= 0)
then
997 call this%lkt_iflw_term(jj, n1, n2, v)
1000 if (this%iboundpak(jj) /= 0)
then
1001 call this%lkt_wdrl_term(jj, n1, n2, v)
1003 case (
'EXT-OUTFLOW')
1004 if (this%iboundpak(jj) /= 0)
then
1005 call this%lkt_outf_term(jj, n1, n2, v)
1018 integer(I4B),
intent(in) :: itemno
1019 character(len=*),
intent(in) :: keyword
1020 logical,
intent(inout) :: found
1022 character(len=LINELENGTH) :: text
1023 integer(I4B) :: ierr
1025 real(DP),
pointer :: bndElem => null()
1035 select case (keyword)
1037 ierr = this%apt_check_valid(itemno)
1041 call this%parser%GetString(text)
1043 bndelem => this%concrain(itemno)
1045 this%packName,
'BND', this%tsManager, &
1046 this%iprpak,
'RAINFALL')
1047 case (
'EVAPORATION')
1048 ierr = this%apt_check_valid(itemno)
1052 call this%parser%GetString(text)
1054 bndelem => this%concevap(itemno)
1056 this%packName,
'BND', this%tsManager, &
1057 this%iprpak,
'EVAPORATION')
1059 ierr = this%apt_check_valid(itemno)
1063 call this%parser%GetString(text)
1065 bndelem => this%concroff(itemno)
1067 this%packName,
'BND', this%tsManager, &
1068 this%iprpak,
'RUNOFF')
1070 ierr = this%apt_check_valid(itemno)
1074 call this%parser%GetString(text)
1076 bndelem => this%conciflw(itemno)
1078 this%packName,
'BND', this%tsManager, &
1079 this%iprpak,
'EXT-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
character(len= *), parameter flowtype
subroutine lkt_allocate_arrays(this)
Allocate arrays specific to the lake mass transport (LKT) package.
subroutine lkt_da(this)
Deallocate memory.
subroutine lkt_roff_term(this, ientry, n1, n2, rrate, rhsval, hcofval)
Runoff term.
subroutine lkt_bd_obs(this, obstypeid, jj, v, found)
Calculate observation value and pass it back to APT.
subroutine lkt_outf_term(this, ientry, n1, n2, rrate, rhsval, hcofval)
Outflow term.
subroutine lkt_rp_obs(this, obsrv, found)
Process package specific obs.
subroutine find_lkt_package(this)
Find corresponding lkt package.
character(len= *), parameter ftype
subroutine lkt_iflw_term(this, ientry, n1, n2, rrate, rhsval, hcofval)
Inflow Term.
subroutine, public lkt_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, fmi, eqnsclfac, dvt, dvu, dvua)
Create a new lkt package.
subroutine lkt_solve(this)
Add terms specific to lakes to the explicit lake solve.
subroutine lkt_evap_term(this, ientry, n1, n2, rrate, rhsval, hcofval)
Evaporative term.
subroutine allocate_scalars(this)
Allocate scalars specific to the lake mass transport (LKT) package.
subroutine lkt_rain_term(this, ientry, n1, n2, rrate, rhsval, hcofval)
Rain term.
integer(i4b) function lkt_get_nbudterms(this)
Function to return the number of budget terms just for this package.
subroutine lkt_setup_budobj(this, idx)
Set up the budget object that stores all the lake flows.
subroutine lkt_fill_budobj(this, idx, x, flowja, ccratin, ccratout)
Copy flow terms into thisbudobj.
subroutine lkt_fc_expanded(this, rhs, ia, idxglo, matrix_sln)
Add matrix terms related to LKT.
subroutine lkt_set_stressperiod(this, itemno, keyword, found)
Sets the stress period attributes for keyword use.
subroutine lkt_wdrl_term(this, ientry, n1, n2, rrate, rhsval, hcofval)
Specified withdrawal term.
subroutine lkt_df_obs(this)
Defined observation types.
This module defines variable data types.
This module contains the derived types ObserveType and ObsDataType.
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.