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()
99 subroutine lkt_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, &
100 mempath, fmi, eqnsclfac, dvt, dvu, dvua)
102 class(
bndtype),
pointer :: packobj
103 integer(I4B),
intent(in) :: id
104 integer(I4B),
intent(in) :: ibcnum
105 integer(I4B),
intent(in) :: inunit
106 integer(I4B),
intent(in) :: iout
107 character(len=*),
intent(in) :: namemodel
108 character(len=*),
intent(in) :: pakname
109 character(len=*),
intent(in) :: mempath
111 real(dp),
intent(in),
pointer :: eqnsclfac
112 character(len=*),
intent(in) :: dvt
113 character(len=*),
intent(in) :: dvu
114 character(len=*),
intent(in) :: dvua
123 call packobj%set_names(ibcnum, namemodel, pakname,
ftype, mempath)
127 call lktobj%allocate_scalars()
130 call packobj%pack_initialize()
132 packobj%inunit = inunit
135 packobj%ibcnum = ibcnum
146 lktobj%eqnsclfac => eqnsclfac
149 lktobj%depvartype = dvt
150 lktobj%depvarunit = dvu
151 lktobj%depvarunitabbrev = dvua
162 character(len=LINELENGTH) :: errmsg
163 class(
bndtype),
pointer :: packobj
164 integer(I4B) :: ip, icount
165 integer(I4B) :: nbudterm
175 if (this%fmi%flows_from_file)
then
176 call this%fmi%set_aptbudobj_pointer(this%flowpackagename, this%flowbudptr)
177 if (
associated(this%flowbudptr)) found = .true.
180 if (
associated(this%fmi%gwfbndlist))
then
183 do ip = 1, this%fmi%gwfbndlist%Count()
185 if (packobj%packName == this%flowpackagename)
then
190 this%flowpackagebnd => packobj
191 select type (packobj)
193 this%flowbudptr => packobj%budobj
202 if (.not. found)
then
203 write (errmsg,
'(a)')
'Could not find flow package with name '&
204 &//trim(adjustl(this%flowpackagename))//
'.'
211 nbudterm = this%flowbudptr%nbudterm
212 call mem_allocate(this%idxbudssm, nbudterm,
'IDXBUDSSM', this%memoryPath)
215 write (this%iout,
'(/, a, a)') &
216 'PROCESSING '//
ftype//
' INFORMATION FOR ', this%packName
217 write (this%iout,
'(a)')
' IDENTIFYING FLOW TERMS IN '//
flowtype//
' PACKAGE'
218 write (this%iout,
'(a, i0)') &
219 ' NUMBER OF '//
flowtype//
' = ', this%flowbudptr%ncv
221 do ip = 1, this%flowbudptr%nbudterm
222 select case (trim(adjustl(this%flowbudptr%budterm(ip)%flowtype)))
223 case (
'FLOW-JA-FACE')
225 this%idxbudssm(ip) = 0
228 this%idxbudssm(ip) = 0
231 this%idxbudssm(ip) = 0
234 this%idxbudssm(ip) = 0
237 this%idxbudssm(ip) = 0
240 this%idxbudssm(ip) = 0
243 this%idxbudssm(ip) = 0
246 this%idxbudssm(ip) = 0
249 this%idxbudssm(ip) = 0
252 this%idxbudssm(ip) = 0
255 this%idxbudssm(ip) = 0
258 this%idxbudssm(ip) = 0
263 this%idxbudssm(ip) = icount
266 write (this%iout,
'(a, i0, " = ", a,/, a, i0)') &
267 ' TERM ', ip, trim(adjustl(this%flowbudptr%budterm(ip)%flowtype)), &
268 ' MAX NO. OF ENTRIES = ', this%flowbudptr%budterm(ip)%maxlist
270 write (this%iout,
'(a, //)')
'DONE PROCESSING '//
ftype//
' INFORMATION'
281 integer(I4B),
intent(in) :: itemno
282 character(len=*),
intent(in) :: key
286 select case (trim(key))
288 val = this%concrain(itemno)
290 val = this%concevap(itemno)
292 val = this%concroff(itemno)
294 val = this%conciflw(itemno)
307 real(DP),
dimension(:),
intent(inout) :: rhs
308 integer(I4B),
dimension(:),
intent(in) :: ia
309 integer(I4B),
dimension(:),
intent(in) :: idxglo
312 integer(I4B) :: j, n1, n2
314 integer(I4B) :: iposd
320 if (this%idxbudrain /= 0)
then
321 do j = 1, this%flowbudptr%budterm(this%idxbudrain)%nlist
322 call this%lkt_rain_term(j, n1, n2, rrate, rhsval, hcofval)
323 iloc = this%idxlocnode(n1)
324 iposd = this%idxpakdiag(n1)
325 call matrix_sln%add_value_pos(iposd, hcofval)
326 rhs(iloc) = rhs(iloc) + rhsval
331 if (this%idxbudevap /= 0)
then
332 do j = 1, this%flowbudptr%budterm(this%idxbudevap)%nlist
333 call this%lkt_evap_term(j, n1, n2, rrate, rhsval, hcofval)
334 iloc = this%idxlocnode(n1)
335 iposd = this%idxpakdiag(n1)
336 call matrix_sln%add_value_pos(iposd, hcofval)
337 rhs(iloc) = rhs(iloc) + rhsval
342 if (this%idxbudroff /= 0)
then
343 do j = 1, this%flowbudptr%budterm(this%idxbudroff)%nlist
344 call this%lkt_roff_term(j, n1, n2, rrate, rhsval, hcofval)
345 iloc = this%idxlocnode(n1)
346 iposd = this%idxpakdiag(n1)
347 call matrix_sln%add_value_pos(iposd, hcofval)
348 rhs(iloc) = rhs(iloc) + rhsval
353 if (this%idxbudiflw /= 0)
then
354 do j = 1, this%flowbudptr%budterm(this%idxbudiflw)%nlist
355 call this%lkt_iflw_term(j, n1, n2, rrate, rhsval, hcofval)
356 iloc = this%idxlocnode(n1)
357 iposd = this%idxpakdiag(n1)
358 call matrix_sln%add_value_pos(iposd, hcofval)
359 rhs(iloc) = rhs(iloc) + rhsval
364 if (this%idxbudwdrl /= 0)
then
365 do j = 1, this%flowbudptr%budterm(this%idxbudwdrl)%nlist
366 call this%lkt_wdrl_term(j, n1, n2, rrate, rhsval, hcofval)
367 iloc = this%idxlocnode(n1)
368 iposd = this%idxpakdiag(n1)
369 call matrix_sln%add_value_pos(iposd, hcofval)
370 rhs(iloc) = rhs(iloc) + rhsval
375 if (this%idxbudoutf /= 0)
then
376 do j = 1, this%flowbudptr%budterm(this%idxbudoutf)%nlist
377 call this%lkt_outf_term(j, n1, n2, rrate, rhsval, hcofval)
378 iloc = this%idxlocnode(n1)
379 iposd = this%idxpakdiag(n1)
380 call matrix_sln%add_value_pos(iposd, hcofval)
381 rhs(iloc) = rhs(iloc) + rhsval
393 integer(I4B) :: n1, n2
397 if (this%idxbudrain /= 0)
then
398 do j = 1, this%flowbudptr%budterm(this%idxbudrain)%nlist
399 call this%lkt_rain_term(j, n1, n2, rrate)
400 this%dbuff(n1) = this%dbuff(n1) + rrate
405 if (this%idxbudevap /= 0)
then
406 do j = 1, this%flowbudptr%budterm(this%idxbudevap)%nlist
407 call this%lkt_evap_term(j, n1, n2, rrate)
408 this%dbuff(n1) = this%dbuff(n1) + rrate
413 if (this%idxbudroff /= 0)
then
414 do j = 1, this%flowbudptr%budterm(this%idxbudroff)%nlist
415 call this%lkt_roff_term(j, n1, n2, rrate)
416 this%dbuff(n1) = this%dbuff(n1) + rrate
421 if (this%idxbudiflw /= 0)
then
422 do j = 1, this%flowbudptr%budterm(this%idxbudiflw)%nlist
423 call this%lkt_iflw_term(j, n1, n2, rrate)
424 this%dbuff(n1) = this%dbuff(n1) + rrate
429 if (this%idxbudwdrl /= 0)
then
430 do j = 1, this%flowbudptr%budterm(this%idxbudwdrl)%nlist
431 call this%lkt_wdrl_term(j, n1, n2, rrate)
432 this%dbuff(n1) = this%dbuff(n1) + rrate
437 if (this%idxbudoutf /= 0)
then
438 do j = 1, this%flowbudptr%budterm(this%idxbudoutf)%nlist
439 call this%lkt_outf_term(j, n1, n2, rrate)
440 this%dbuff(n1) = this%dbuff(n1) + rrate
454 integer(I4B) :: nbudterms
468 integer(I4B),
intent(inout) :: idx
470 integer(I4B) :: maxlist, naux
471 character(len=LENBUDTXT) :: text
476 maxlist = this%flowbudptr%budterm(this%idxbudrain)%maxlist
478 call this%budobj%budterm(idx)%initialize(text, &
483 maxlist, .false., .false., &
488 text =
' EVAPORATION'
490 maxlist = this%flowbudptr%budterm(this%idxbudevap)%maxlist
492 call this%budobj%budterm(idx)%initialize(text, &
497 maxlist, .false., .false., &
503 maxlist = this%flowbudptr%budterm(this%idxbudroff)%maxlist
505 call this%budobj%budterm(idx)%initialize(text, &
510 maxlist, .false., .false., &
516 maxlist = this%flowbudptr%budterm(this%idxbudiflw)%maxlist
518 call this%budobj%budterm(idx)%initialize(text, &
523 maxlist, .false., .false., &
529 maxlist = this%flowbudptr%budterm(this%idxbudwdrl)%maxlist
531 call this%budobj%budterm(idx)%initialize(text, &
536 maxlist, .false., .false., &
541 text =
' EXT-OUTFLOW'
543 maxlist = this%flowbudptr%budterm(this%idxbudoutf)%maxlist
545 call this%budobj%budterm(idx)%initialize(text, &
550 maxlist, .false., .false., &
560 integer(I4B),
intent(inout) :: idx
561 real(DP),
dimension(:),
intent(in) :: x
562 real(DP),
dimension(:),
contiguous,
intent(inout) :: flowja
563 real(DP),
intent(inout) :: ccratin
564 real(DP),
intent(inout) :: ccratout
566 integer(I4B) :: j, n1, n2
567 integer(I4B) :: nlist
573 nlist = this%flowbudptr%budterm(this%idxbudrain)%nlist
574 call this%budobj%budterm(idx)%reset(nlist)
576 call this%lkt_rain_term(j, n1, n2, q)
577 call this%budobj%budterm(idx)%update_term(n1, n2, q)
578 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
583 nlist = this%flowbudptr%budterm(this%idxbudevap)%nlist
584 call this%budobj%budterm(idx)%reset(nlist)
586 call this%lkt_evap_term(j, n1, n2, q)
587 call this%budobj%budterm(idx)%update_term(n1, n2, q)
588 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
593 nlist = this%flowbudptr%budterm(this%idxbudroff)%nlist
594 call this%budobj%budterm(idx)%reset(nlist)
596 call this%lkt_roff_term(j, n1, n2, q)
597 call this%budobj%budterm(idx)%update_term(n1, n2, q)
598 call this%apt_accumulate_ccterm(n1, q, ccratin, ccratout)
603 nlist = this%flowbudptr%budterm(this%idxbudiflw)%nlist
604 call this%budobj%budterm(idx)%reset(nlist)
606 call this%lkt_iflw_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%idxbudwdrl)%nlist
614 call this%budobj%budterm(idx)%reset(nlist)
616 call this%lkt_wdrl_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%idxbudoutf)%nlist
624 call this%budobj%budterm(idx)%reset(nlist)
626 call this%lkt_outf_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)
643 call this%TspAptType%allocate_scalars()
646 call mem_allocate(this%idxbudrain,
'IDXBUDRAIN', this%memoryPath)
647 call mem_allocate(this%idxbudevap,
'IDXBUDEVAP', this%memoryPath)
648 call mem_allocate(this%idxbudroff,
'IDXBUDROFF', this%memoryPath)
649 call mem_allocate(this%idxbudiflw,
'IDXBUDIFLW', this%memoryPath)
650 call mem_allocate(this%idxbudwdrl,
'IDXBUDWDRL', this%memoryPath)
651 call mem_allocate(this%idxbudoutf,
'IDXBUDOUTF', this%memoryPath)
673 call mem_setptr(this%concrain,
'RAINFALL', this%input_mempath)
674 call mem_setptr(this%concevap,
'EVAPORATION', this%input_mempath)
675 call mem_setptr(this%concroff,
'RUNOFF', this%input_mempath)
676 call mem_setptr(this%conciflw,
'EXT_INFLOW', this%input_mempath)
679 call this%TspAptType%apt_allocate_arrays()
701 nullify (this%concrain)
702 nullify (this%concevap)
703 nullify (this%concroff)
704 nullify (this%conciflw)
707 call this%TspAptType%bnd_da()
716 integer(I4B),
intent(in) :: ientry
717 integer(I4B),
intent(inout) :: n1
718 integer(I4B),
intent(inout) :: n2
719 real(DP),
intent(inout),
optional :: rrate
720 real(DP),
intent(inout),
optional :: rhsval
721 real(DP),
intent(inout),
optional :: hcofval
726 n1 = this%flowbudptr%budterm(this%idxbudrain)%id1(ientry)
727 n2 = this%flowbudptr%budterm(this%idxbudrain)%id2(ientry)
728 qbnd = this%flowbudptr%budterm(this%idxbudrain)%flow(ientry)
729 ctmp = this%concrain(n1)
730 if (
present(rrate)) rrate = ctmp * qbnd
731 if (
present(rhsval)) rhsval = -rrate
732 if (
present(hcofval)) hcofval =
dzero
741 integer(I4B),
intent(in) :: ientry
742 integer(I4B),
intent(inout) :: n1
743 integer(I4B),
intent(inout) :: n2
744 real(DP),
intent(inout),
optional :: rrate
745 real(DP),
intent(inout),
optional :: rhsval
746 real(DP),
intent(inout),
optional :: hcofval
752 n1 = this%flowbudptr%budterm(this%idxbudevap)%id1(ientry)
753 n2 = this%flowbudptr%budterm(this%idxbudevap)%id2(ientry)
755 qbnd = this%flowbudptr%budterm(this%idxbudevap)%flow(ientry)
756 ctmp = this%concevap(n1)
757 if (this%xnewpak(n1) < ctmp)
then
762 if (
present(rrate)) &
763 rrate = omega * qbnd * this%xnewpak(n1) + &
764 (
done - omega) * qbnd * ctmp
765 if (
present(rhsval)) rhsval = -(
done - omega) * qbnd * ctmp
766 if (
present(hcofval)) hcofval = omega * qbnd
775 integer(I4B),
intent(in) :: ientry
776 integer(I4B),
intent(inout) :: n1
777 integer(I4B),
intent(inout) :: n2
778 real(DP),
intent(inout),
optional :: rrate
779 real(DP),
intent(inout),
optional :: rhsval
780 real(DP),
intent(inout),
optional :: hcofval
785 n1 = this%flowbudptr%budterm(this%idxbudroff)%id1(ientry)
786 n2 = this%flowbudptr%budterm(this%idxbudroff)%id2(ientry)
787 qbnd = this%flowbudptr%budterm(this%idxbudroff)%flow(ientry)
788 ctmp = this%concroff(n1)
789 if (
present(rrate)) rrate = ctmp * qbnd
790 if (
present(rhsval)) rhsval = -rrate
791 if (
present(hcofval)) hcofval =
dzero
803 integer(I4B),
intent(in) :: ientry
804 integer(I4B),
intent(inout) :: n1
805 integer(I4B),
intent(inout) :: n2
806 real(DP),
intent(inout),
optional :: rrate
807 real(DP),
intent(inout),
optional :: rhsval
808 real(DP),
intent(inout),
optional :: hcofval
813 n1 = this%flowbudptr%budterm(this%idxbudiflw)%id1(ientry)
814 n2 = this%flowbudptr%budterm(this%idxbudiflw)%id2(ientry)
815 qbnd = this%flowbudptr%budterm(this%idxbudiflw)%flow(ientry)
816 ctmp = this%conciflw(n1)
817 if (
present(rrate)) rrate = ctmp * qbnd
818 if (
present(rhsval)) rhsval = -rrate
819 if (
present(hcofval)) hcofval =
dzero
831 integer(I4B),
intent(in) :: ientry
832 integer(I4B),
intent(inout) :: n1
833 integer(I4B),
intent(inout) :: n2
834 real(DP),
intent(inout),
optional :: rrate
835 real(DP),
intent(inout),
optional :: rhsval
836 real(DP),
intent(inout),
optional :: hcofval
841 n1 = this%flowbudptr%budterm(this%idxbudwdrl)%id1(ientry)
842 n2 = this%flowbudptr%budterm(this%idxbudwdrl)%id2(ientry)
843 qbnd = this%flowbudptr%budterm(this%idxbudwdrl)%flow(ientry)
844 ctmp = this%xnewpak(n1)
845 if (
present(rrate)) rrate = ctmp * qbnd
846 if (
present(rhsval)) rhsval =
dzero
847 if (
present(hcofval)) hcofval = qbnd
859 integer(I4B),
intent(in) :: ientry
860 integer(I4B),
intent(inout) :: n1
861 integer(I4B),
intent(inout) :: n2
862 real(DP),
intent(inout),
optional :: rrate
863 real(DP),
intent(inout),
optional :: rhsval
864 real(DP),
intent(inout),
optional :: hcofval
869 n1 = this%flowbudptr%budterm(this%idxbudoutf)%id1(ientry)
870 n2 = this%flowbudptr%budterm(this%idxbudoutf)%id2(ientry)
871 qbnd = this%flowbudptr%budterm(this%idxbudoutf)%flow(ientry)
872 ctmp = this%xnewpak(n1)
873 if (
present(rrate)) rrate = ctmp * qbnd
874 if (
present(rhsval)) rhsval =
dzero
875 if (
present(hcofval)) hcofval = qbnd
892 call this%obs%StoreObsType(
'concentration', .false., indx)
897 call this%obs%StoreObsType(
'flow-ja-face', .true., indx)
902 call this%obs%StoreObsType(
'from-mvr', .true., indx)
907 call this%obs%StoreObsType(
'to-mvr', .true., indx)
912 call this%obs%StoreObsType(
'storage', .true., indx)
917 call this%obs%StoreObsType(
'constant', .true., indx)
922 call this%obs%StoreObsType(
'lkt', .true., indx)
927 call this%obs%StoreObsType(
'rainfall', .true., indx)
932 call this%obs%StoreObsType(
'evaporation', .true., indx)
937 call this%obs%StoreObsType(
'runoff', .true., indx)
942 call this%obs%StoreObsType(
'ext-inflow', .true., indx)
947 call this%obs%StoreObsType(
'withdrawal', .true., indx)
952 call this%obs%StoreObsType(
'ext-outflow', .true., indx)
964 logical,
intent(inout) :: found
968 select case (obsrv%ObsTypeId)
970 call this%rp_obs_byfeature(obsrv)
972 call this%rp_obs_byfeature(obsrv)
974 call this%rp_obs_byfeature(obsrv)
976 call this%rp_obs_byfeature(obsrv)
978 call this%rp_obs_byfeature(obsrv)
980 call this%rp_obs_byfeature(obsrv)
982 call this%rp_obs_budterm(obsrv, &
983 this%flowbudptr%budterm(this%idxbudtmvr))
994 character(len=*),
intent(in) :: obstypeid
995 real(DP),
intent(inout) :: v
996 integer(I4B),
intent(in) :: jj
997 logical,
intent(inout) :: found
999 integer(I4B) :: n1, n2
1002 select case (obstypeid)
1004 if (this%iboundpak(jj) /= 0)
then
1005 call this%lkt_rain_term(jj, n1, n2, v)
1007 case (
'EVAPORATION')
1008 if (this%iboundpak(jj) /= 0)
then
1009 call this%lkt_evap_term(jj, n1, n2, v)
1012 if (this%iboundpak(jj) /= 0)
then
1013 call this%lkt_roff_term(jj, n1, n2, v)
1016 if (this%iboundpak(jj) /= 0)
then
1017 call this%lkt_iflw_term(jj, n1, n2, v)
1020 if (this%iboundpak(jj) /= 0)
then
1021 call this%lkt_wdrl_term(jj, n1, n2, v)
1023 case (
'EXT-OUTFLOW')
1024 if (this%iboundpak(jj) /= 0)
then
1025 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_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.
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 ...