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
161 character(len=LINELENGTH) :: errmsg
162 class(
bndtype),
pointer :: packobj
163 integer(I4B) :: ip, icount
164 integer(I4B) :: nbudterm
174 if (this%fmi%flows_from_file)
then
175 call this%fmi%set_aptbudobj_pointer(this%flowpackagename, this%flowbudptr)
176 if (
associated(this%flowbudptr)) found = .true.
179 if (
associated(this%fmi%gwfbndlist))
then
182 do ip = 1, this%fmi%gwfbndlist%Count()
184 if (packobj%packName == this%flowpackagename)
then
189 this%flowpackagebnd => packobj
190 select type (packobj)
192 this%flowbudptr => packobj%budobj
201 if (.not. found)
then
202 write (errmsg,
'(a)')
'Could not find flow package with name '&
203 &//trim(adjustl(this%flowpackagename))//
'.'
205 call this%parser%StoreErrorUnit()
210 nbudterm = this%flowbudptr%nbudterm
211 call mem_allocate(this%idxbudssm, nbudterm,
'IDXBUDSSM', this%memoryPath)
214 write (this%iout,
'(/, a, a)') &
215 'PROCESSING '//
ftype//
' INFORMATION FOR ', this%packName
216 write (this%iout,
'(a)')
' IDENTIFYING FLOW TERMS IN '//
flowtype//
' PACKAGE'
217 write (this%iout,
'(a, i0)') &
218 ' NUMBER OF '//
flowtype//
' = ', this%flowbudptr%ncv
220 do ip = 1, this%flowbudptr%nbudterm
221 select case (trim(adjustl(this%flowbudptr%budterm(ip)%flowtype)))
222 case (
'FLOW-JA-FACE')
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
257 this%idxbudssm(ip) = 0
262 this%idxbudssm(ip) = icount
265 write (this%iout,
'(a, i0, " = ", a,/, a, i0)') &
266 ' TERM ', ip, trim(adjustl(this%flowbudptr%budterm(ip)%flowtype)), &
267 ' MAX NO. OF ENTRIES = ', this%flowbudptr%budterm(ip)%maxlist
269 write (this%iout,
'(a, //)')
'DONE PROCESSING '//
ftype//
' INFORMATION'
284 real(DP),
dimension(:),
intent(inout) :: rhs
285 integer(I4B),
dimension(:),
intent(in) :: ia
286 integer(I4B),
dimension(:),
intent(in) :: idxglo
289 integer(I4B) :: j, n1, n2
291 integer(I4B) :: iposd
297 if (this%idxbudrain /= 0)
then
298 do j = 1, this%flowbudptr%budterm(this%idxbudrain)%nlist
299 call this%lkt_rain_term(j, n1, n2, rrate, rhsval, hcofval)
300 iloc = this%idxlocnode(n1)
301 iposd = this%idxpakdiag(n1)
302 call matrix_sln%add_value_pos(iposd, hcofval)
303 rhs(iloc) = rhs(iloc) + rhsval
308 if (this%idxbudevap /= 0)
then
309 do j = 1, this%flowbudptr%budterm(this%idxbudevap)%nlist
310 call this%lkt_evap_term(j, n1, n2, rrate, rhsval, hcofval)
311 iloc = this%idxlocnode(n1)
312 iposd = this%idxpakdiag(n1)
313 call matrix_sln%add_value_pos(iposd, hcofval)
314 rhs(iloc) = rhs(iloc) + rhsval
319 if (this%idxbudroff /= 0)
then
320 do j = 1, this%flowbudptr%budterm(this%idxbudroff)%nlist
321 call this%lkt_roff_term(j, n1, n2, rrate, rhsval, hcofval)
322 iloc = this%idxlocnode(n1)
323 iposd = this%idxpakdiag(n1)
324 call matrix_sln%add_value_pos(iposd, hcofval)
325 rhs(iloc) = rhs(iloc) + rhsval
330 if (this%idxbudiflw /= 0)
then
331 do j = 1, this%flowbudptr%budterm(this%idxbudiflw)%nlist
332 call this%lkt_iflw_term(j, n1, n2, rrate, rhsval, hcofval)
333 iloc = this%idxlocnode(n1)
334 iposd = this%idxpakdiag(n1)
335 call matrix_sln%add_value_pos(iposd, hcofval)
336 rhs(iloc) = rhs(iloc) + rhsval
341 if (this%idxbudwdrl /= 0)
then
342 do j = 1, this%flowbudptr%budterm(this%idxbudwdrl)%nlist
343 call this%lkt_wdrl_term(j, n1, n2, rrate, rhsval, hcofval)
344 iloc = this%idxlocnode(n1)
345 iposd = this%idxpakdiag(n1)
346 call matrix_sln%add_value_pos(iposd, hcofval)
347 rhs(iloc) = rhs(iloc) + rhsval
352 if (this%idxbudoutf /= 0)
then
353 do j = 1, this%flowbudptr%budterm(this%idxbudoutf)%nlist
354 call this%lkt_outf_term(j, n1, n2, rrate, rhsval, hcofval)
355 iloc = this%idxlocnode(n1)
356 iposd = this%idxpakdiag(n1)
357 call matrix_sln%add_value_pos(iposd, hcofval)
358 rhs(iloc) = rhs(iloc) + rhsval
373 integer(I4B) :: n1, n2
377 if (this%idxbudrain /= 0)
then
378 do j = 1, this%flowbudptr%budterm(this%idxbudrain)%nlist
379 call this%lkt_rain_term(j, n1, n2, rrate)
380 this%dbuff(n1) = this%dbuff(n1) + rrate
385 if (this%idxbudevap /= 0)
then
386 do j = 1, this%flowbudptr%budterm(this%idxbudevap)%nlist
387 call this%lkt_evap_term(j, n1, n2, rrate)
388 this%dbuff(n1) = this%dbuff(n1) + rrate
393 if (this%idxbudroff /= 0)
then
394 do j = 1, this%flowbudptr%budterm(this%idxbudroff)%nlist
395 call this%lkt_roff_term(j, n1, n2, rrate)
396 this%dbuff(n1) = this%dbuff(n1) + rrate
401 if (this%idxbudiflw /= 0)
then
402 do j = 1, this%flowbudptr%budterm(this%idxbudiflw)%nlist
403 call this%lkt_iflw_term(j, n1, n2, rrate)
404 this%dbuff(n1) = this%dbuff(n1) + rrate
409 if (this%idxbudwdrl /= 0)
then
410 do j = 1, this%flowbudptr%budterm(this%idxbudwdrl)%nlist
411 call this%lkt_wdrl_term(j, n1, n2, rrate)
412 this%dbuff(n1) = this%dbuff(n1) + rrate
417 if (this%idxbudoutf /= 0)
then
418 do j = 1, this%flowbudptr%budterm(this%idxbudoutf)%nlist
419 call this%lkt_outf_term(j, n1, n2, rrate)
420 this%dbuff(n1) = this%dbuff(n1) + rrate
437 integer(I4B) :: nbudterms
454 integer(I4B),
intent(inout) :: idx
456 integer(I4B) :: maxlist, naux
457 character(len=LENBUDTXT) :: text
462 maxlist = this%flowbudptr%budterm(this%idxbudrain)%maxlist
464 call this%budobj%budterm(idx)%initialize(text, &
469 maxlist, .false., .false., &
474 text =
' EVAPORATION'
476 maxlist = this%flowbudptr%budterm(this%idxbudevap)%maxlist
478 call this%budobj%budterm(idx)%initialize(text, &
483 maxlist, .false., .false., &
489 maxlist = this%flowbudptr%budterm(this%idxbudroff)%maxlist
491 call this%budobj%budterm(idx)%initialize(text, &
496 maxlist, .false., .false., &
502 maxlist = this%flowbudptr%budterm(this%idxbudiflw)%maxlist
504 call this%budobj%budterm(idx)%initialize(text, &
509 maxlist, .false., .false., &
515 maxlist = this%flowbudptr%budterm(this%idxbudwdrl)%maxlist
517 call this%budobj%budterm(idx)%initialize(text, &
522 maxlist, .false., .false., &
527 text =
' EXT-OUTFLOW'
529 maxlist = this%flowbudptr%budterm(this%idxbudoutf)%maxlist
531 call this%budobj%budterm(idx)%initialize(text, &
536 maxlist, .false., .false., &
549 integer(I4B),
intent(inout) :: idx
550 real(DP),
dimension(:),
intent(in) :: x
551 real(DP),
dimension(:),
contiguous,
intent(inout) :: flowja
552 real(DP),
intent(inout) :: ccratin
553 real(DP),
intent(inout) :: ccratout
555 integer(I4B) :: j, n1, n2
556 integer(I4B) :: nlist
562 nlist = this%flowbudptr%budterm(this%idxbudrain)%nlist
563 call this%budobj%budterm(idx)%reset(nlist)
565 call this%lkt_rain_term(j, n1, n2, q)
566 call this%budobj%budterm(idx)%update_term(n1, n2, q)
567 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
572 nlist = this%flowbudptr%budterm(this%idxbudevap)%nlist
573 call this%budobj%budterm(idx)%reset(nlist)
575 call this%lkt_evap_term(j, n1, n2, q)
576 call this%budobj%budterm(idx)%update_term(n1, n2, q)
577 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
582 nlist = this%flowbudptr%budterm(this%idxbudroff)%nlist
583 call this%budobj%budterm(idx)%reset(nlist)
585 call this%lkt_roff_term(j, n1, n2, q)
586 call this%budobj%budterm(idx)%update_term(n1, n2, q)
587 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
592 nlist = this%flowbudptr%budterm(this%idxbudiflw)%nlist
593 call this%budobj%budterm(idx)%reset(nlist)
595 call this%lkt_iflw_term(j, n1, n2, q)
596 call this%budobj%budterm(idx)%update_term(n1, n2, q)
597 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
602 nlist = this%flowbudptr%budterm(this%idxbudwdrl)%nlist
603 call this%budobj%budterm(idx)%reset(nlist)
605 call this%lkt_wdrl_term(j, n1, n2, q)
606 call this%budobj%budterm(idx)%update_term(n1, n2, q)
607 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
612 nlist = this%flowbudptr%budterm(this%idxbudoutf)%nlist
613 call this%budobj%budterm(idx)%reset(nlist)
615 call this%lkt_outf_term(j, n1, n2, q)
616 call this%budobj%budterm(idx)%update_term(n1, n2, q)
617 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
635 call this%TspAptType%allocate_scalars()
638 call mem_allocate(this%idxbudrain,
'IDXBUDRAIN', this%memoryPath)
639 call mem_allocate(this%idxbudevap,
'IDXBUDEVAP', this%memoryPath)
640 call mem_allocate(this%idxbudroff,
'IDXBUDROFF', this%memoryPath)
641 call mem_allocate(this%idxbudiflw,
'IDXBUDIFLW', this%memoryPath)
642 call mem_allocate(this%idxbudwdrl,
'IDXBUDWDRL', this%memoryPath)
643 call mem_allocate(this%idxbudoutf,
'IDXBUDOUTF', this%memoryPath)
669 call mem_allocate(this%concrain, this%ncv,
'CONCRAIN', this%memoryPath)
670 call mem_allocate(this%concevap, this%ncv,
'CONCEVAP', this%memoryPath)
671 call mem_allocate(this%concroff, this%ncv,
'CONCROFF', this%memoryPath)
672 call mem_allocate(this%conciflw, this%ncv,
'CONCIFLW', this%memoryPath)
675 call this%TspAptType%apt_allocate_arrays()
679 this%concrain(n) =
dzero
680 this%concevap(n) =
dzero
681 this%concroff(n) =
dzero
682 this%conciflw(n) =
dzero
714 call this%TspAptType%bnd_da()
726 integer(I4B),
intent(in) :: ientry
727 integer(I4B),
intent(inout) :: n1
728 integer(I4B),
intent(inout) :: n2
729 real(DP),
intent(inout),
optional :: rrate
730 real(DP),
intent(inout),
optional :: rhsval
731 real(DP),
intent(inout),
optional :: hcofval
736 n1 = this%flowbudptr%budterm(this%idxbudrain)%id1(ientry)
737 n2 = this%flowbudptr%budterm(this%idxbudrain)%id2(ientry)
738 qbnd = this%flowbudptr%budterm(this%idxbudrain)%flow(ientry)
739 ctmp = this%concrain(n1)
740 if (
present(rrate)) rrate = ctmp * qbnd
741 if (
present(rhsval)) rhsval = -rrate
742 if (
present(hcofval)) hcofval =
dzero
754 integer(I4B),
intent(in) :: ientry
755 integer(I4B),
intent(inout) :: n1
756 integer(I4B),
intent(inout) :: n2
757 real(DP),
intent(inout),
optional :: rrate
758 real(DP),
intent(inout),
optional :: rhsval
759 real(DP),
intent(inout),
optional :: hcofval
765 n1 = this%flowbudptr%budterm(this%idxbudevap)%id1(ientry)
766 n2 = this%flowbudptr%budterm(this%idxbudevap)%id2(ientry)
768 qbnd = this%flowbudptr%budterm(this%idxbudevap)%flow(ientry)
769 ctmp = this%concevap(n1)
770 if (this%xnewpak(n1) < ctmp)
then
775 if (
present(rrate)) &
776 rrate = omega * qbnd * this%xnewpak(n1) + &
777 (
done - omega) * qbnd * ctmp
778 if (
present(rhsval)) rhsval = -(
done - omega) * qbnd * ctmp
779 if (
present(hcofval)) hcofval = omega * qbnd
791 integer(I4B),
intent(in) :: ientry
792 integer(I4B),
intent(inout) :: n1
793 integer(I4B),
intent(inout) :: n2
794 real(DP),
intent(inout),
optional :: rrate
795 real(DP),
intent(inout),
optional :: rhsval
796 real(DP),
intent(inout),
optional :: hcofval
801 n1 = this%flowbudptr%budterm(this%idxbudroff)%id1(ientry)
802 n2 = this%flowbudptr%budterm(this%idxbudroff)%id2(ientry)
803 qbnd = this%flowbudptr%budterm(this%idxbudroff)%flow(ientry)
804 ctmp = this%concroff(n1)
805 if (
present(rrate)) rrate = ctmp * qbnd
806 if (
present(rhsval)) rhsval = -rrate
807 if (
present(hcofval)) hcofval =
dzero
822 integer(I4B),
intent(in) :: ientry
823 integer(I4B),
intent(inout) :: n1
824 integer(I4B),
intent(inout) :: n2
825 real(DP),
intent(inout),
optional :: rrate
826 real(DP),
intent(inout),
optional :: rhsval
827 real(DP),
intent(inout),
optional :: hcofval
832 n1 = this%flowbudptr%budterm(this%idxbudiflw)%id1(ientry)
833 n2 = this%flowbudptr%budterm(this%idxbudiflw)%id2(ientry)
834 qbnd = this%flowbudptr%budterm(this%idxbudiflw)%flow(ientry)
835 ctmp = this%conciflw(n1)
836 if (
present(rrate)) rrate = ctmp * qbnd
837 if (
present(rhsval)) rhsval = -rrate
838 if (
present(hcofval)) hcofval =
dzero
853 integer(I4B),
intent(in) :: ientry
854 integer(I4B),
intent(inout) :: n1
855 integer(I4B),
intent(inout) :: n2
856 real(DP),
intent(inout),
optional :: rrate
857 real(DP),
intent(inout),
optional :: rhsval
858 real(DP),
intent(inout),
optional :: hcofval
863 n1 = this%flowbudptr%budterm(this%idxbudwdrl)%id1(ientry)
864 n2 = this%flowbudptr%budterm(this%idxbudwdrl)%id2(ientry)
865 qbnd = this%flowbudptr%budterm(this%idxbudwdrl)%flow(ientry)
866 ctmp = this%xnewpak(n1)
867 if (
present(rrate)) rrate = ctmp * qbnd
868 if (
present(rhsval)) rhsval =
dzero
869 if (
present(hcofval)) hcofval = qbnd
884 integer(I4B),
intent(in) :: ientry
885 integer(I4B),
intent(inout) :: n1
886 integer(I4B),
intent(inout) :: n2
887 real(DP),
intent(inout),
optional :: rrate
888 real(DP),
intent(inout),
optional :: rhsval
889 real(DP),
intent(inout),
optional :: hcofval
894 n1 = this%flowbudptr%budterm(this%idxbudoutf)%id1(ientry)
895 n2 = this%flowbudptr%budterm(this%idxbudoutf)%id2(ientry)
896 qbnd = this%flowbudptr%budterm(this%idxbudoutf)%flow(ientry)
897 ctmp = this%xnewpak(n1)
898 if (
present(rrate)) rrate = ctmp * qbnd
899 if (
present(rhsval)) rhsval =
dzero
900 if (
present(hcofval)) hcofval = qbnd
920 call this%obs%StoreObsType(
'concentration', .false., indx)
925 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
930 call this%obs%StoreObsType(
'from-mvr', .true., indx)
935 call this%obs%StoreObsType(
'to-mvr', .true., indx)
940 call this%obs%StoreObsType(
'storage', .true., indx)
945 call this%obs%StoreObsType(
'constant', .true., indx)
950 call this%obs%StoreObsType(
'lkt', .true., indx)
955 call this%obs%StoreObsType(
'rainfall', .true., indx)
960 call this%obs%StoreObsType(
'evaporation', .true., indx)
965 call this%obs%StoreObsType(
'runoff', .true., indx)
970 call this%obs%StoreObsType(
'ext-inflow', .true., indx)
975 call this%obs%StoreObsType(
'withdrawal', .true., indx)
980 call this%obs%StoreObsType(
'ext-outflow', .true., indx)
995 logical,
intent(inout) :: found
999 select case (obsrv%ObsTypeId)
1001 call this%rp_obs_byfeature(obsrv)
1002 case (
'EVAPORATION')
1003 call this%rp_obs_byfeature(obsrv)
1005 call this%rp_obs_byfeature(obsrv)
1007 call this%rp_obs_byfeature(obsrv)
1009 call this%rp_obs_byfeature(obsrv)
1010 case (
'EXT-OUTFLOW')
1011 call this%rp_obs_byfeature(obsrv)
1013 call this%rp_obs_budterm(obsrv, &
1014 this%flowbudptr%budterm(this%idxbudtmvr))
1028 character(len=*),
intent(in) :: obstypeid
1029 real(DP),
intent(inout) :: v
1030 integer(I4B),
intent(in) :: jj
1031 logical,
intent(inout) :: found
1033 integer(I4B) :: n1, n2
1036 select case (obstypeid)
1038 if (this%iboundpak(jj) /= 0)
then
1039 call this%lkt_rain_term(jj, n1, n2, v)
1041 case (
'EVAPORATION')
1042 if (this%iboundpak(jj) /= 0)
then
1043 call this%lkt_evap_term(jj, n1, n2, v)
1046 if (this%iboundpak(jj) /= 0)
then
1047 call this%lkt_roff_term(jj, n1, n2, v)
1050 if (this%iboundpak(jj) /= 0)
then
1051 call this%lkt_iflw_term(jj, n1, n2, v)
1054 if (this%iboundpak(jj) /= 0)
then
1055 call this%lkt_wdrl_term(jj, n1, n2, v)
1057 case (
'EXT-OUTFLOW')
1058 if (this%iboundpak(jj) /= 0)
then
1059 call this%lkt_outf_term(jj, n1, n2, v)
1075 integer(I4B),
intent(in) :: itemno
1076 character(len=*),
intent(in) :: keyword
1077 logical,
intent(inout) :: found
1079 character(len=LINELENGTH) :: text
1080 integer(I4B) :: ierr
1082 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%concrain(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%concevap(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%concroff(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%conciflw(itemno)
1135 this%packName,
'BND', this%tsManager, &
1136 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.