53 character(len=*),
parameter ::
ftype =
'LKT'
54 character(len=*),
parameter ::
flowtype =
'LAK'
55 character(len=16) ::
text =
' LKT'
59 integer(I4B),
pointer :: idxbudrain => null()
60 integer(I4B),
pointer :: idxbudevap => null()
61 integer(I4B),
pointer :: idxbudroff => null()
62 integer(I4B),
pointer :: idxbudiflw => null()
63 integer(I4B),
pointer :: idxbudwdrl => null()
64 integer(I4B),
pointer :: idxbudoutf => null()
66 real(dp),
dimension(:),
pointer,
contiguous :: concrain => null()
67 real(dp),
dimension(:),
pointer,
contiguous :: concevap => null()
68 real(dp),
dimension(:),
pointer,
contiguous :: concroff => null()
69 real(dp),
dimension(:),
pointer,
contiguous :: conciflw => null()
100 subroutine lkt_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, &
101 mempath, fmi, eqnsclfac, 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
110 character(len=*),
intent(in) :: mempath
112 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, mempath)
128 call lktobj%allocate_scalars()
131 call packobj%pack_initialize()
133 packobj%inunit = inunit
136 packobj%ibcnum = ibcnum
147 lktobj%eqnsclfac => eqnsclfac
150 lktobj%depvartype = dvt
151 lktobj%depvarunit = dvu
152 lktobj%depvarunitabbrev = dvua
163 character(len=LINELENGTH) :: errmsg
164 class(
bndtype),
pointer :: packobj
165 integer(I4B) :: ip, icount
166 integer(I4B) :: nbudterm
176 if (this%fmi%flows_from_file)
then
177 call this%fmi%set_aptbudobj_pointer(this%flowpackagename, this%flowbudptr)
178 if (
associated(this%flowbudptr)) found = .true.
181 if (
associated(this%fmi%gwfbndlist))
then
184 do ip = 1, this%fmi%gwfbndlist%Count()
186 if (packobj%packName == this%flowpackagename)
then
191 this%flowpackagebnd => packobj
192 select type (packobj)
194 this%flowbudptr => packobj%budobj
203 if (.not. found)
then
204 write (errmsg,
'(a)')
'Could not find flow package with name '&
205 &//trim(adjustl(this%flowpackagename))//
'.'
212 nbudterm = this%flowbudptr%nbudterm
213 call mem_allocate(this%idxbudssm, nbudterm,
'IDXBUDSSM', this%memoryPath)
216 write (this%iout,
'(/, a, a)') &
217 'PROCESSING '//
ftype//
' INFORMATION FOR ', this%packName
218 write (this%iout,
'(a)')
' IDENTIFYING FLOW TERMS IN '//
flowtype//
' PACKAGE'
219 write (this%iout,
'(a, i0)') &
220 ' NUMBER OF '//
flowtype//
' = ', this%flowbudptr%ncv
222 do ip = 1, this%flowbudptr%nbudterm
223 select case (trim(adjustl(this%flowbudptr%budterm(ip)%flowtype)))
224 case (
'FLOW-JA-FACE')
226 this%idxbudssm(ip) = 0
229 this%idxbudssm(ip) = 0
232 this%idxbudssm(ip) = 0
235 this%idxbudssm(ip) = 0
238 this%idxbudssm(ip) = 0
241 this%idxbudssm(ip) = 0
244 this%idxbudssm(ip) = 0
247 this%idxbudssm(ip) = 0
250 this%idxbudssm(ip) = 0
253 this%idxbudssm(ip) = 0
256 this%idxbudssm(ip) = 0
259 this%idxbudssm(ip) = 0
264 this%idxbudssm(ip) = icount
267 write (this%iout,
'(a, i0, " = ", a,/, a, i0)') &
268 ' TERM ', ip, trim(adjustl(this%flowbudptr%budterm(ip)%flowtype)), &
269 ' MAX NO. OF ENTRIES = ', this%flowbudptr%budterm(ip)%maxlist
271 write (this%iout,
'(a, //)')
'DONE PROCESSING '//
ftype//
' INFORMATION'
282 integer(I4B),
intent(in) :: itemno
283 character(len=*),
intent(in) :: key
287 select case (trim(key))
289 val = this%concrain(itemno)
291 val = this%concevap(itemno)
293 val = this%concroff(itemno)
295 val = this%conciflw(itemno)
308 real(DP),
dimension(:),
intent(inout) :: rhs
309 integer(I4B),
dimension(:),
intent(in) :: ia
310 integer(I4B),
dimension(:),
intent(in) :: idxglo
313 integer(I4B) :: j, n1, n2
315 integer(I4B) :: iposd
321 if (this%idxbudrain /= 0)
then
322 do j = 1, this%flowbudptr%budterm(this%idxbudrain)%nlist
323 call this%lkt_rain_term(j, n1, n2, rrate, rhsval, hcofval)
324 iloc = this%idxlocnode(n1)
325 iposd = this%idxpakdiag(n1)
326 call matrix_sln%add_value_pos(iposd, hcofval)
327 rhs(iloc) = rhs(iloc) + rhsval
332 if (this%idxbudevap /= 0)
then
333 do j = 1, this%flowbudptr%budterm(this%idxbudevap)%nlist
334 call this%lkt_evap_term(j, n1, n2, rrate, rhsval, hcofval)
335 iloc = this%idxlocnode(n1)
336 iposd = this%idxpakdiag(n1)
337 call matrix_sln%add_value_pos(iposd, hcofval)
338 rhs(iloc) = rhs(iloc) + rhsval
343 if (this%idxbudroff /= 0)
then
344 do j = 1, this%flowbudptr%budterm(this%idxbudroff)%nlist
345 call this%lkt_roff_term(j, n1, n2, rrate, rhsval, hcofval)
346 iloc = this%idxlocnode(n1)
347 iposd = this%idxpakdiag(n1)
348 call matrix_sln%add_value_pos(iposd, hcofval)
349 rhs(iloc) = rhs(iloc) + rhsval
354 if (this%idxbudiflw /= 0)
then
355 do j = 1, this%flowbudptr%budterm(this%idxbudiflw)%nlist
356 call this%lkt_iflw_term(j, n1, n2, rrate, rhsval, hcofval)
357 iloc = this%idxlocnode(n1)
358 iposd = this%idxpakdiag(n1)
359 call matrix_sln%add_value_pos(iposd, hcofval)
360 rhs(iloc) = rhs(iloc) + rhsval
365 if (this%idxbudwdrl /= 0)
then
366 do j = 1, this%flowbudptr%budterm(this%idxbudwdrl)%nlist
367 call this%lkt_wdrl_term(j, n1, n2, rrate, rhsval, hcofval)
368 iloc = this%idxlocnode(n1)
369 iposd = this%idxpakdiag(n1)
370 call matrix_sln%add_value_pos(iposd, hcofval)
371 rhs(iloc) = rhs(iloc) + rhsval
376 if (this%idxbudoutf /= 0)
then
377 do j = 1, this%flowbudptr%budterm(this%idxbudoutf)%nlist
378 call this%lkt_outf_term(j, n1, n2, rrate, rhsval, hcofval)
379 iloc = this%idxlocnode(n1)
380 iposd = this%idxpakdiag(n1)
381 call matrix_sln%add_value_pos(iposd, hcofval)
382 rhs(iloc) = rhs(iloc) + rhsval
394 integer(I4B) :: n1, n2
398 if (this%idxbudrain /= 0)
then
399 do j = 1, this%flowbudptr%budterm(this%idxbudrain)%nlist
400 call this%lkt_rain_term(j, n1, n2, rrate)
401 this%dbuff(n1) = this%dbuff(n1) + rrate
406 if (this%idxbudevap /= 0)
then
407 do j = 1, this%flowbudptr%budterm(this%idxbudevap)%nlist
408 call this%lkt_evap_term(j, n1, n2, rrate)
409 this%dbuff(n1) = this%dbuff(n1) + rrate
414 if (this%idxbudroff /= 0)
then
415 do j = 1, this%flowbudptr%budterm(this%idxbudroff)%nlist
416 call this%lkt_roff_term(j, n1, n2, rrate)
417 this%dbuff(n1) = this%dbuff(n1) + rrate
422 if (this%idxbudiflw /= 0)
then
423 do j = 1, this%flowbudptr%budterm(this%idxbudiflw)%nlist
424 call this%lkt_iflw_term(j, n1, n2, rrate)
425 this%dbuff(n1) = this%dbuff(n1) + rrate
430 if (this%idxbudwdrl /= 0)
then
431 do j = 1, this%flowbudptr%budterm(this%idxbudwdrl)%nlist
432 call this%lkt_wdrl_term(j, n1, n2, rrate)
433 this%dbuff(n1) = this%dbuff(n1) + rrate
438 if (this%idxbudoutf /= 0)
then
439 do j = 1, this%flowbudptr%budterm(this%idxbudoutf)%nlist
440 call this%lkt_outf_term(j, n1, n2, rrate)
441 this%dbuff(n1) = this%dbuff(n1) + rrate
455 integer(I4B) :: nbudterms
469 integer(I4B),
intent(inout) :: idx
471 integer(I4B) :: maxlist, naux
472 character(len=LENBUDTXT) :: text
477 maxlist = this%flowbudptr%budterm(this%idxbudrain)%maxlist
479 call this%budobj%budterm(idx)%initialize(text, &
484 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., &
530 maxlist = this%flowbudptr%budterm(this%idxbudwdrl)%maxlist
532 call this%budobj%budterm(idx)%initialize(text, &
537 maxlist, .false., .false., &
542 text =
' EXT-OUTFLOW'
544 maxlist = this%flowbudptr%budterm(this%idxbudoutf)%maxlist
546 call this%budobj%budterm(idx)%initialize(text, &
551 maxlist, .false., .false., &
561 integer(I4B),
intent(inout) :: idx
562 real(DP),
dimension(:),
intent(in) :: x
563 real(DP),
dimension(:),
contiguous,
intent(inout) :: flowja
564 real(DP),
intent(inout) :: ccratin
565 real(DP),
intent(inout) :: ccratout
567 integer(I4B) :: j, n1, n2
568 integer(I4B) :: nlist
574 nlist = this%flowbudptr%budterm(this%idxbudrain)%nlist
575 call this%budobj%budterm(idx)%reset(nlist)
577 call this%lkt_rain_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%idxbudevap)%nlist
585 call this%budobj%budterm(idx)%reset(nlist)
587 call this%lkt_evap_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%idxbudroff)%nlist
595 call this%budobj%budterm(idx)%reset(nlist)
597 call this%lkt_roff_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)
604 nlist = this%flowbudptr%budterm(this%idxbudiflw)%nlist
605 call this%budobj%budterm(idx)%reset(nlist)
607 call this%lkt_iflw_term(j, n1, n2, q)
608 call this%budobj%budterm(idx)%update_term(n1, n2, q)
609 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
614 nlist = this%flowbudptr%budterm(this%idxbudwdrl)%nlist
615 call this%budobj%budterm(idx)%reset(nlist)
617 call this%lkt_wdrl_term(j, n1, n2, q)
618 call this%budobj%budterm(idx)%update_term(n1, n2, q)
619 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
624 nlist = this%flowbudptr%budterm(this%idxbudoutf)%nlist
625 call this%budobj%budterm(idx)%reset(nlist)
627 call this%lkt_outf_term(j, n1, n2, q)
628 call this%budobj%budterm(idx)%update_term(n1, n2, q)
629 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
644 call this%TspAptType%allocate_scalars()
647 call mem_allocate(this%idxbudrain,
'IDXBUDRAIN', this%memoryPath)
648 call mem_allocate(this%idxbudevap,
'IDXBUDEVAP', this%memoryPath)
649 call mem_allocate(this%idxbudroff,
'IDXBUDROFF', this%memoryPath)
650 call mem_allocate(this%idxbudiflw,
'IDXBUDIFLW', this%memoryPath)
651 call mem_allocate(this%idxbudwdrl,
'IDXBUDWDRL', this%memoryPath)
652 call mem_allocate(this%idxbudoutf,
'IDXBUDOUTF', this%memoryPath)
674 call mem_setptr(this%concrain,
'RAINFALL', this%input_mempath)
675 call mem_setptr(this%concevap,
'EVAPORATION', this%input_mempath)
676 call mem_setptr(this%concroff,
'RUNOFF', this%input_mempath)
677 call mem_setptr(this%conciflw,
'EXT_INFLOW', this%input_mempath)
680 call this%TspAptType%apt_allocate_arrays()
694 call this%TspAptType%apt_checkin_deprecated_names()
697 'RAINFALL', this%input_mempath,
'6.8.2')
699 'EVAPORATION', this%input_mempath,
'6.8.2')
701 'RUNOFF', this%input_mempath,
'6.8.2')
703 'EXT_INFLOW', this%input_mempath,
'6.8.2')
724 nullify (this%concrain)
725 nullify (this%concevap)
726 nullify (this%concroff)
727 nullify (this%conciflw)
730 call this%TspAptType%bnd_da()
739 integer(I4B),
intent(in) :: ientry
740 integer(I4B),
intent(inout) :: n1
741 integer(I4B),
intent(inout) :: n2
742 real(DP),
intent(inout),
optional :: rrate
743 real(DP),
intent(inout),
optional :: rhsval
744 real(DP),
intent(inout),
optional :: hcofval
749 n1 = this%flowbudptr%budterm(this%idxbudrain)%id1(ientry)
750 n2 = this%flowbudptr%budterm(this%idxbudrain)%id2(ientry)
751 qbnd = this%flowbudptr%budterm(this%idxbudrain)%flow(ientry)
752 ctmp = this%concrain(n1)
753 if (
present(rrate)) rrate = ctmp * qbnd
754 if (
present(rhsval)) rhsval = -rrate
755 if (
present(hcofval)) hcofval =
dzero
764 integer(I4B),
intent(in) :: ientry
765 integer(I4B),
intent(inout) :: n1
766 integer(I4B),
intent(inout) :: n2
767 real(DP),
intent(inout),
optional :: rrate
768 real(DP),
intent(inout),
optional :: rhsval
769 real(DP),
intent(inout),
optional :: hcofval
775 n1 = this%flowbudptr%budterm(this%idxbudevap)%id1(ientry)
776 n2 = this%flowbudptr%budterm(this%idxbudevap)%id2(ientry)
778 qbnd = this%flowbudptr%budterm(this%idxbudevap)%flow(ientry)
779 ctmp = this%concevap(n1)
780 if (this%xnewpak(n1) < ctmp)
then
785 if (
present(rrate)) &
786 rrate = omega * qbnd * this%xnewpak(n1) + &
787 (
done - omega) * qbnd * ctmp
788 if (
present(rhsval)) rhsval = -(
done - omega) * qbnd * ctmp
789 if (
present(hcofval)) hcofval = omega * qbnd
798 integer(I4B),
intent(in) :: ientry
799 integer(I4B),
intent(inout) :: n1
800 integer(I4B),
intent(inout) :: n2
801 real(DP),
intent(inout),
optional :: rrate
802 real(DP),
intent(inout),
optional :: rhsval
803 real(DP),
intent(inout),
optional :: hcofval
808 n1 = this%flowbudptr%budterm(this%idxbudroff)%id1(ientry)
809 n2 = this%flowbudptr%budterm(this%idxbudroff)%id2(ientry)
810 qbnd = this%flowbudptr%budterm(this%idxbudroff)%flow(ientry)
811 ctmp = this%concroff(n1)
812 if (
present(rrate)) rrate = ctmp * qbnd
813 if (
present(rhsval)) rhsval = -rrate
814 if (
present(hcofval)) hcofval =
dzero
826 integer(I4B),
intent(in) :: ientry
827 integer(I4B),
intent(inout) :: n1
828 integer(I4B),
intent(inout) :: n2
829 real(DP),
intent(inout),
optional :: rrate
830 real(DP),
intent(inout),
optional :: rhsval
831 real(DP),
intent(inout),
optional :: hcofval
836 n1 = this%flowbudptr%budterm(this%idxbudiflw)%id1(ientry)
837 n2 = this%flowbudptr%budterm(this%idxbudiflw)%id2(ientry)
838 qbnd = this%flowbudptr%budterm(this%idxbudiflw)%flow(ientry)
839 ctmp = this%conciflw(n1)
840 if (
present(rrate)) rrate = ctmp * qbnd
841 if (
present(rhsval)) rhsval = -rrate
842 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%idxbudwdrl)%id1(ientry)
865 n2 = this%flowbudptr%budterm(this%idxbudwdrl)%id2(ientry)
866 qbnd = this%flowbudptr%budterm(this%idxbudwdrl)%flow(ientry)
867 ctmp = this%xnewpak(n1)
868 if (
present(rrate)) rrate = ctmp * qbnd
869 if (
present(rhsval)) rhsval =
dzero
870 if (
present(hcofval)) hcofval = qbnd
882 integer(I4B),
intent(in) :: ientry
883 integer(I4B),
intent(inout) :: n1
884 integer(I4B),
intent(inout) :: n2
885 real(DP),
intent(inout),
optional :: rrate
886 real(DP),
intent(inout),
optional :: rhsval
887 real(DP),
intent(inout),
optional :: hcofval
892 n1 = this%flowbudptr%budterm(this%idxbudoutf)%id1(ientry)
893 n2 = this%flowbudptr%budterm(this%idxbudoutf)%id2(ientry)
894 qbnd = this%flowbudptr%budterm(this%idxbudoutf)%flow(ientry)
895 ctmp = this%xnewpak(n1)
896 if (
present(rrate)) rrate = ctmp * qbnd
897 if (
present(rhsval)) rhsval =
dzero
898 if (
present(hcofval)) hcofval = qbnd
915 call this%obs%StoreObsType(
'concentration', .false., indx)
920 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
925 call this%obs%StoreObsType(
'from-mvr', .true., indx)
930 call this%obs%StoreObsType(
'to-mvr', .true., indx)
935 call this%obs%StoreObsType(
'storage', .true., indx)
940 call this%obs%StoreObsType(
'constant', .true., indx)
945 call this%obs%StoreObsType(
'lkt', .true., indx)
950 call this%obs%StoreObsType(
'rainfall', .true., indx)
955 call this%obs%StoreObsType(
'evaporation', .true., indx)
960 call this%obs%StoreObsType(
'runoff', .true., indx)
965 call this%obs%StoreObsType(
'ext-inflow', .true., indx)
970 call this%obs%StoreObsType(
'withdrawal', .true., indx)
975 call this%obs%StoreObsType(
'ext-outflow', .true., indx)
987 logical,
intent(inout) :: found
991 select case (obsrv%ObsTypeId)
993 call this%rp_obs_byfeature(obsrv)
995 call this%rp_obs_byfeature(obsrv)
997 call this%rp_obs_byfeature(obsrv)
999 call this%rp_obs_byfeature(obsrv)
1001 call this%rp_obs_byfeature(obsrv)
1002 case (
'EXT-OUTFLOW')
1003 call this%rp_obs_byfeature(obsrv)
1005 call this%rp_obs_budterm(obsrv, &
1006 this%flowbudptr%budterm(this%idxbudtmvr))
1017 character(len=*),
intent(in) :: obstypeid
1018 real(DP),
intent(inout) :: v
1019 integer(I4B),
intent(in) :: jj
1020 logical,
intent(inout) :: found
1022 integer(I4B) :: n1, n2
1025 select case (obstypeid)
1027 if (this%iboundpak(jj) /= 0)
then
1028 call this%lkt_rain_term(jj, n1, n2, v)
1030 case (
'EVAPORATION')
1031 if (this%iboundpak(jj) /= 0)
then
1032 call this%lkt_evap_term(jj, n1, n2, v)
1035 if (this%iboundpak(jj) /= 0)
then
1036 call this%lkt_roff_term(jj, n1, n2, v)
1039 if (this%iboundpak(jj) /= 0)
then
1040 call this%lkt_iflw_term(jj, n1, n2, v)
1043 if (this%iboundpak(jj) /= 0)
then
1044 call this%lkt_wdrl_term(jj, n1, n2, v)
1046 case (
'EXT-OUTFLOW')
1047 if (this%iboundpak(jj) /= 0)
then
1048 call this%lkt_outf_term(jj, n1, n2, v)
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 dnodata
real no data constant
integer(i4b), parameter lenvarname
maximum length of a variable name
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, public lkt_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, mempath, fmi, eqnsclfac, dvt, dvu, dvua)
Create a new lkt package.
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 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_checkin_deprecated_names(this)
Alias deprecated LKT variable names to their current storage.
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.
real(dp) function lkt_setting_value(this, itemno, key)
Value for a package-specific PERIOD setting.
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.
Previous variable names checked in as deprecated aliases.
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 store_error_filename(filename, terminate)
Store the erroring file name.
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.
This class is used to store a single deferred-length character string. It was designed to work in an ...