36 character(len=LENBUDTXT),
dimension(NBDITEMS) ::
budtxt
47 integer(I4B),
pointer :: infmi => null()
48 integer(I4B),
pointer :: inmip => null()
49 integer(I4B),
pointer :: inmvt => null()
50 integer(I4B),
pointer :: inmst => null()
51 integer(I4B),
pointer :: inadv => null()
52 integer(I4B),
pointer :: indsp => null()
53 integer(I4B),
pointer :: inssm => null()
54 integer(I4B),
pointer :: inoc => null()
55 integer(I4B),
pointer :: nprp => null()
56 real(dp),
dimension(:),
pointer,
contiguous :: masssto => null()
57 real(dp),
dimension(:),
pointer,
contiguous :: massstoold => null()
58 real(dp),
dimension(:),
pointer,
contiguous :: ratesto => null()
94 character(len=LENPACKAGETYPE),
dimension(PRT_NBASEPKG) ::
prt_basepkg
95 data prt_basepkg/
'DIS6 ',
'DISV6',
'DISU6',
'IC6 ',
'MST6 ', &
96 &
'ADV6 ',
'DSP6 ',
'SSM6 ',
'MIP6 ',
'CNC6 ', &
97 &
'OC6 ',
' ',
'FMI6 ',
' ',
'IST6 ', &
98 &
'LKT6 ',
'SFT6 ',
'MWT6 ',
'UZT6 ',
'MVT6 ', &
99 &
'API6 ',
' ',
' ',
' ',
' ', &
108 character(len=LENPACKAGETYPE),
dimension(PRT_NMULTIPKG) ::
prt_multipkg
118 subroutine prt_cr(filename, id, modelname)
129 character(len=*),
intent(in) :: filename
130 integer(I4B),
intent(in) :: id
131 character(len=*),
intent(in) :: modelname
135 character(len=LENMEMPATH) :: input_mempath
136 character(len=LINELENGTH) :: lst_fname
146 allocate (this%trackfilectl)
149 call this%allocate_scalars(modelname)
154 this%filename = filename
155 this%name = modelname
156 this%macronym =
'PRT'
163 call mem_set_value(this%iprpak,
'PRINT_INPUT', input_mempath, &
165 call mem_set_value(this%iprflow,
'PRINT_FLOWS', input_mempath, &
167 call mem_set_value(this%ipakcb,
'SAVE_FLOWS', input_mempath, &
171 call this%create_lstfile(lst_fname, filename, found%list, &
172 'PARTICLE TRACKING MODEL (PRT)')
175 if (found%save_flows)
then
180 if (this%iout > 0)
then
181 call this%log_namfile_options(found)
185 call this%create_packages()
200 class(
bndtype),
pointer :: packobj
203 call this%dis%dis_df()
204 call this%fmi%fmi_df(this%dis, 1)
206 call this%budget%budget_df(
niunit_prt,
'MASS',
'M')
209 do ip = 1, this%bndlist%Count()
211 call packobj%bnd_df(this%dis%nodes, this%dis)
212 packobj%TsManager%iout = this%iout
213 packobj%TasManager%iout = this%iout
217 call this%allocate_arrays()
236 class(
bndtype),
pointer :: packobj
239 call this%fmi%fmi_ar(this%ibound)
240 if (this%inmip > 0)
call this%mip%mip_ar()
243 call this%oc%oc_ar(this%dis,
dhnoflo)
244 call this%budget%set_ibudcsv(this%oc%ibudcsv)
247 do ip = 1, this%bndlist%Count()
249 select type (packobj)
251 call packobj%prp_set_pointers(this%ibound, this%mip%izone, &
255 call packobj%bnd_ar()
259 select type (dis => this%dis)
263 trackfilectl=this%trackfilectl, &
264 izone=this%mip%izone, &
265 flowja=this%flowja, &
266 porosity=this%mip%porosity, &
267 retfactor=this%mip%retfactor, &
268 tracktimes=this%oc%tracktimes)
273 trackfilectl=this%trackfilectl, &
274 izone=this%mip%izone, &
275 flowja=this%flowja, &
276 porosity=this%mip%porosity, &
277 retfactor=this%mip%retfactor, &
278 tracktimes=this%oc%tracktimes)
283 if (this%oc%itrkout > 0) &
284 call this%trackfilectl%init_track_file(this%oc%itrkout)
285 if (this%oc%itrkcsv > 0) &
286 call this%trackfilectl%init_track_file(this%oc%itrkcsv, csv=.true.)
287 call this%trackfilectl%set_track_events( &
288 this%oc%trackrelease, &
290 this%oc%tracktimestep, &
291 this%oc%trackterminate, &
292 this%oc%trackweaksink, &
293 this%oc%trackusertime)
302 class(
bndtype),
pointer :: packobj
309 if (this%inoc > 0)
call this%oc%oc_rp()
310 do ip = 1, this%bndlist%Count()
312 call packobj%bnd_rp()
322 class(
bndtype),
pointer :: packobj
324 integer(I4B) :: irestore
325 integer(I4B) :: ip, n, i
332 do n = 1, this%dis%nodes
333 this%massstoold(n) = this%masssto(n)
337 call this%fmi%fmi_ad()
340 do ip = 1, this%bndlist%Count()
342 call packobj%bnd_ad()
344 call packobj%bnd_ck()
354 do i = 1, this%dis%nja
355 this%flowja(i) =
dzero
360 subroutine prt_cq(this, icnvg, isuppress_output)
367 integer(I4B),
intent(in) :: icnvg
368 integer(I4B),
intent(in) :: isuppress_output
372 class(
bndtype),
pointer :: packobj
386 do i = 1, this%dis%nja
387 this%flowja(i) = this%flowja(i) * tled
391 call this%prt_cq_sto()
394 do ip = 1, this%bndlist%Count()
396 call packobj%bnd_cq(this%masssto, this%flowja)
414 class(
bndtype),
pointer :: packobj
417 integer(I4B) :: idiag
418 integer(I4B) :: istatus
426 do n = 1, this%dis%nodes
427 this%masssto(n) =
dzero
428 this%ratesto(n) =
dzero
430 do ip = 1, this%bndlist%Count()
432 select type (packobj)
434 do np = 1, packobj%nparticles
435 istatus = packobj%particles%istatus(np)
437 if ((istatus > 0) .and. (istatus /= 8))
then
438 n = packobj%particles%idomain(np, 2)
440 this%masssto(n) = this%masssto(n) +
done
445 do n = 1, this%dis%nodes
446 rate = -(this%masssto(n) - this%massstoold(n)) * tled
447 this%ratesto(n) = rate
448 idiag = this%dis%con%ia(n)
449 this%flowja(idiag) = this%flowja(idiag) + rate
459 subroutine prt_bd(this, icnvg, isuppress_output)
465 integer(I4B),
intent(in) :: icnvg
466 integer(I4B),
intent(in) :: isuppress_output
469 class(
bndtype),
pointer :: packobj
477 call this%budget%reset()
479 call this%budget%addentry(rin, rout,
delt,
budtxt(1), &
480 isuppress_output,
' PRT')
481 do ip = 1, this%bndlist%Count()
483 call packobj%bnd_bd(this%budget)
493 integer(I4B) :: idvsave
494 integer(I4B) :: idvprint
495 integer(I4B) :: icbcfl
496 integer(I4B) :: icbcun
497 integer(I4B) :: ibudfl
498 integer(I4B) :: ipflag
507 if (this%oc%oc_save(
'CONCENTRATION')) idvsave = 1
508 if (this%oc%oc_print(
'CONCENTRATION')) idvprint = 1
509 if (this%oc%oc_save(
'BUDGET')) icbcfl = 1
510 if (this%oc%oc_print(
'BUDGET')) ibudfl = 1
511 icbcun = this%oc%oc_save_unit(
'BUDGET')
515 ibudfl = this%oc%set_print_flag(
'BUDGET', 1,
endofperiod)
516 idvprint = this%oc%set_print_flag(
'CONCENTRATION', 1,
endofperiod)
519 call this%prt_ot_flow(icbcfl, ibudfl, icbcun)
522 call this%prt_ot_dv(idvsave, idvprint, ipflag)
525 call this%prt_ot_bdsummary(ibudfl, ipflag)
529 if (ipflag == 1)
call tdis_ot(this%iout)
536 integer(I4B),
intent(in) :: icbcfl
537 integer(I4B),
intent(in) :: ibudfl
538 integer(I4B),
intent(in) :: icbcun
539 class(
bndtype),
pointer :: packobj
543 call this%prt_ot_saveflow(this%dis%nja, this%flowja, icbcfl, icbcun)
544 do ip = 1, this%bndlist%Count()
546 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=0, icbcun=icbcun)
550 do ip = 1, this%bndlist%Count()
552 call packobj%bnd_ot_package_flows(icbcfl=icbcfl, ibudfl=0)
556 call this%prt_ot_printflow(ibudfl, this%flowja)
557 do ip = 1, this%bndlist%Count()
559 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=ibudfl, icbcun=0)
563 do ip = 1, this%bndlist%Count()
565 call packobj%bnd_ot_package_flows(icbcfl=0, ibudfl=ibudfl)
573 integer(I4B),
intent(in) :: nja
574 real(DP),
dimension(nja),
intent(in) :: flowja
575 integer(I4B),
intent(in) :: icbcfl
576 integer(I4B),
intent(in) :: icbcun
578 integer(I4B) :: ibinun
581 if (this%ipakcb < 0)
then
583 elseif (this%ipakcb == 0)
then
588 if (icbcfl == 0) ibinun = 0
591 if (ibinun /= 0)
then
592 call this%dis%record_connection_array(flowja, ibinun, this%iout)
603 integer(I4B),
intent(in) :: ibudfl
604 real(DP),
intent(inout),
dimension(:) :: flowja
606 character(len=LENBIGLINE) :: line
607 character(len=30) :: tempstr
608 integer(I4B) :: n, ipos, m
611 character(len=*),
parameter :: fmtiprflow = &
612 "(/,4x,'CALCULATED INTERCELL FLOW &
613 &FOR PERIOD ', i0, ' STEP ', i0)"
616 if (ibudfl /= 0 .and. this%iprflow > 0)
then
617 write (this%iout, fmtiprflow)
kper,
kstp
618 do n = 1, this%dis%nodes
620 call this%dis%noder_to_string(n, tempstr)
621 line = trim(tempstr)//
':'
622 do ipos = this%dis%con%ia(n) + 1, this%dis%con%ia(n + 1) - 1
623 m = this%dis%con%ja(ipos)
624 call this%dis%noder_to_string(m, tempstr)
625 line = trim(line)//
' '//trim(tempstr)
627 write (tempstr,
'(1pg15.6)') qnm
628 line = trim(line)//
' '//trim(adjustl(tempstr))
630 write (this%iout,
'(a)') trim(line)
639 integer(I4B),
intent(in) :: idvsave
640 integer(I4B),
intent(in) :: idvprint
641 integer(I4B),
intent(inout) :: ipflag
643 class(
bndtype),
pointer :: packobj
647 do ip = 1, this%bndlist%Count()
649 call packobj%bnd_ot_dv(idvsave, idvprint)
653 call this%oc%oc_ot(ipflag)
662 integer(I4B),
intent(in) :: ibudfl
663 integer(I4B),
intent(inout) :: ipflag
665 class(
bndtype),
pointer :: packobj
669 do ip = 1, this%bndlist%Count()
671 call packobj%bnd_ot_bdsummary(
kstp,
kper, this%iout, ibudfl)
675 call this%budget%finalize_step(
delt)
676 if (ibudfl /= 0)
then
679 call this%budget%budget_ot(
kstp,
kper, this%iout)
683 call this%budget%writecsv(
totim)
699 class(
bndtype),
pointer :: packobj
706 call this%dis%dis_da()
707 call this%fmi%fmi_da()
708 call this%mip%mip_da()
709 call this%budget%budget_da()
711 deallocate (this%dis)
712 deallocate (this%fmi)
713 deallocate (this%mip)
714 deallocate (this%budget)
723 do ip = 1, this%bndlist%Count()
725 call packobj%bnd_da()
745 deallocate (this%trackfilectl)
748 call this%NumericalModelType%model_da()
755 character(len=*),
intent(in) :: modelname
758 call this%NumericalModelType%allocate_scalars(modelname)
787 this%nja = this%dis%nja
788 call this%NumericalModelType%allocate_arrays()
792 'MASSSTO', this%memoryPath)
794 'MASSSTOOLD', this%memoryPath)
796 'RATESTO', this%memoryPath)
798 call mem_allocate(this%x, this%dis%nodes,
'X', this%memoryPath)
799 call mem_allocate(this%rhs, this%dis%nodes,
'RHS', this%memoryPath)
800 call mem_allocate(this%ibound, this%dis%nodes,
'IBOUND', this%memoryPath)
801 do n = 1, this%dis%nodes
802 this%masssto(n) =
dzero
803 this%massstoold(n) =
dzero
804 this%ratesto(n) =
dzero
820 character(len=*),
intent(in) :: filtyp
821 character(len=LINELENGTH) :: errmsg
822 integer(I4B),
intent(in) :: ipakid
823 integer(I4B),
intent(in) :: ipaknum
824 character(len=*),
intent(in) :: pakname
825 character(len=*),
intent(in) :: mempath
826 integer(I4B),
intent(in) :: inunit
827 integer(I4B),
intent(in) :: iout
829 class(
bndtype),
pointer :: packobj
830 class(
bndtype),
pointer :: packobj2
836 call prp_create(packobj, ipakid, ipaknum, inunit, iout, &
837 this%name, pakname, this%fmi)
839 call api_create(packobj, ipakid, ipaknum, inunit, iout, &
842 write (errmsg, *)
'Invalid package type: ', filtyp
849 do ip = 1, this%bndlist%Count()
851 if (packobj2%packName == pakname)
then
852 write (errmsg,
'(a,a)')
'Cannot create package. Package name '// &
853 'already exists: ', trim(pakname)
864 integer(I4B),
intent(in) :: indis
866 character(len=LINELENGTH) :: errmsg
870 write (errmsg,
'(1x,a)') &
871 'Discretization (DIS6, DISV6, or DISU6) package not specified.'
874 if (this%inmip == 0)
then
875 write (errmsg,
'(1x,a)') &
876 'Model input (MIP6) package not specified.'
881 write (errmsg,
'(1x,a)')
'One or more required package(s) not specified.'
895 integer(I4B) :: np, ip
896 class(
bndtype),
pointer :: packobj
906 do ip = 1, this%bndlist%Count()
908 select type (packobj)
914 if (packobj%itrkout > 0)
then
915 call this%trackfilectl%init_track_file( &
919 if (packobj%itrkcsv > 0)
then
920 call this%trackfilectl%init_track_file( &
927 do np = 1, packobj%nparticles
929 call particle%load_particle(packobj%particles, &
933 if (particle%istatus == 8) &
934 call this%method%save(particle, reason=3)
937 if (particle%istatus > 1) cycle
941 if (particle%trelease >=
totimc) &
942 call this%method%save(particle, reason=0)
950 particle%iextend > 0)
then
951 tmax = particle%tstop
957 call this%method%apply(particle, tmax)
960 call packobj%particles%save_particle(particle, np)
966 deallocate (particle)
977 integer(I4B),
dimension(:),
allocatable,
intent(inout) :: bndpkgs
979 pointer,
intent(inout) :: pkgtypes
981 pointer,
intent(inout) :: pkgnames
983 pointer,
intent(inout) :: mempaths
984 integer(I4B),
dimension(:),
contiguous, &
985 pointer,
intent(inout) :: inunits
987 integer(I4B) :: ipakid, ipaknum
988 character(len=LENFTYPE) :: pkgtype, bndptype
989 character(len=LENPACKAGENAME) :: pkgname
990 character(len=LENMEMPATH) :: mempath
991 integer(I4B),
pointer :: inunit
994 if (
allocated(bndpkgs))
then
999 do n = 1,
size(bndpkgs)
1001 pkgtype = pkgtypes(bndpkgs(n))
1002 pkgname = pkgnames(bndpkgs(n))
1003 mempath = mempaths(bndpkgs(n))
1004 inunit => inunits(bndpkgs(n))
1006 if (bndptype /= pkgtype)
then
1011 call this%package_create(pkgtype, ipakid, ipaknum, pkgname, mempath, &
1014 ipaknum = ipaknum + 1
1018 deallocate (bndpkgs)
1043 pointer :: pkgtypes => null()
1045 pointer :: pkgnames => null()
1047 pointer :: mempaths => null()
1048 integer(I4B),
dimension(:),
contiguous, &
1049 pointer :: inunits => null()
1050 character(len=LENMEMPATH) :: model_mempath
1051 character(len=LENFTYPE) :: pkgtype
1052 character(len=LENPACKAGENAME) :: pkgname
1053 character(len=LENMEMPATH) :: mempath
1054 integer(I4B),
pointer :: inunit
1055 integer(I4B),
dimension(:),
allocatable :: bndpkgs
1057 integer(I4B) :: indis = 0
1058 character(len=LENMEMPATH) :: mempathmip =
''
1064 call mem_setptr(pkgtypes,
'PKGTYPES', model_mempath)
1065 call mem_setptr(pkgnames,
'PKGNAMES', model_mempath)
1066 call mem_setptr(mempaths,
'MEMPATHS', model_mempath)
1067 call mem_setptr(inunits,
'INUNITS', model_mempath)
1069 do n = 1,
size(pkgtypes)
1071 pkgtype = pkgtypes(n)
1072 pkgname = pkgnames(n)
1073 mempath = mempaths(n)
1074 inunit => inunits(n)
1077 select case (pkgtype)
1080 call dis_cr(this%dis, this%name, mempath, indis, this%iout)
1083 call disv_cr(this%dis, this%name, mempath, indis, this%iout)
1086 call disu_cr(this%dis, this%name, mempath, indis, this%iout)
1089 mempathmip = mempath
1096 bndpkgs(
size(bndpkgs)) = n
1098 call pstop(1,
"Unrecognized package type: "//pkgtype)
1111 call mip_cr(this%mip, this%name, mempathmip, this%inmip, this%iout, this%dis)
1112 call fmi_cr(this%fmi, this%name, this%infmi, this%iout)
1113 call oc_cr(this%oc, this%name, this%inoc, this%iout)
1116 call this%ftype_check(indis)
1119 call this%create_bndpkgs(bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
1128 write (this%iout,
'(1x,a)')
'NAMEFILE OPTIONS:'
1130 if (found%newton)
then
1131 write (this%iout,
'(4x,a)') &
1132 'NEWTON-RAPHSON method enabled for the model.'
1133 if (found%under_relaxation)
then
1134 write (this%iout,
'(4x,a,a)') &
1135 'NEWTON-RAPHSON UNDER-RELAXATION based on the bottom ', &
1136 'elevation of the model will be applied to the model.'
1140 if (found%print_input)
then
1141 write (this%iout,
'(4x,a)')
'STRESS PACKAGE INPUT WILL BE PRINTED '// &
1142 'FOR ALL MODEL STRESS PACKAGES'
1145 if (found%print_flows)
then
1146 write (this%iout,
'(4x,a)')
'PACKAGE FLOWS WILL BE PRINTED '// &
1147 'FOR ALL MODEL PACKAGES'
1150 if (found%save_flows)
then
1151 write (this%iout,
'(4x,a)') &
1152 'FLOWS WILL BE SAVED TO BUDGET FILE SPECIFIED IN OUTPUT CONTROL'
1155 write (this%iout,
'(1x,a)')
'END NAMEFILE OPTIONS:'
This module contains the API package methods.
subroutine, public api_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname)
@ brief Create a new package object
subroutine, public addbasemodeltolist(list, model)
This module contains the base boundary package.
subroutine, public addbndtolist(list, bnd)
Add boundary to package list.
class(bndtype) function, pointer, public getbndfromlist(list, idx)
Get boundary from package list.
This module contains the BudgetModule.
subroutine, public budget_cr(this, name_model)
@ brief Create a new budget object
subroutine, public rate_accumulator(flow, rin, rout)
@ brief Rate accumulator subroutine
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
@ mnormal
normal output mode
integer(i4b), parameter lenpackagename
maximum length of the package name
integer(i4b), parameter lenpackagetype
maximum length of a package type (DIS6, SFR6, CSUB6, etc.)
integer(i4b), parameter lenbigline
maximum length of a big line
real(dp), parameter dhnoflo
real no flow constant
integer(i4b), parameter lenpakloc
maximum length of a package location
integer(i4b), parameter lenftype
maximum length of a package type (DIS, WEL, OC, etc.)
real(dp), parameter dzero
real constant zero
integer(i4b), parameter lenbudtxt
maximum length of a budget component names
integer(i4b), parameter lenmempath
maximum length of the memory path
real(dp), parameter done
real constant 1
subroutine, public dis_cr(dis, name_model, input_mempath, inunit, iout)
Create a new structured discretization object.
subroutine, public disu_cr(dis, name_model, input_mempath, inunit, iout)
Create a new unstructured discretization object.
subroutine, public disv_cr(dis, name_model, input_mempath, inunit, iout)
Create a new discretization by vertices object.
subroutine pstop(status, message)
Stop the program, optionally specifying an error status code.
This module defines variable data types.
type(listtype), public basemodellist
character(len=lenmempath) function create_mem_path(component, subcomponent, context)
returns the path to the memory object
subroutine, public memorystore_remove(component, subcomponent, context)
Cell-level tracking methods.
subroutine, public create_method_cell_pool()
Create the cell method pool.
subroutine, public destroy_method_cell_pool()
Destroy the cell method pool.
Particle tracking strategies.
Model-level tracking methods.
type(methoddisvtype), pointer, public method_disv
type(methoddistype), pointer, public method_dis
subroutine, public create_method_pool()
Create the method pool.
subroutine, public destroy_method_pool()
Destroy the method pool.
Subcell-level tracking methods.
subroutine, public create_method_subcell_pool()
Create the subcell method pool.
subroutine, public destroy_method_subcell_pool()
Destroy the subcell method pool.
subroutine, public create_particle(particle)
Create a new particle.
subroutine, public fmi_cr(fmiobj, name_model, inunit, iout)
Create a new PrtFmi object.
subroutine, public mip_cr(mip, name_model, input_mempath, inunit, iout, dis)
Create a model input object.
integer(i4b), parameter niunit_prt
subroutine prt_ot(this)
Print and/or save model output.
subroutine prt_rp(this)
Read and prepare (calls package read and prepare routines)
subroutine create_bndpkgs(this, bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
Source package info and begin to process.
subroutine prt_ar(this)
Allocate and read.
subroutine ftype_check(this, indis)
Check to make sure required input files have been specified.
subroutine prt_ot_saveflow(this, nja, flowja, icbcfl, icbcun)
Save intercell flows.
subroutine prt_ad(this)
Time step advance (calls package advance subroutines)
subroutine prt_cq(this, icnvg, isuppress_output)
Calculate intercell flow (flowja)
subroutine package_create(this, filtyp, ipakid, ipaknum, pakname, mempath, inunit, iout)
Create boundary condition packages for this model.
subroutine prt_ot_flow(this, icbcfl, ibudfl, icbcun)
Save flows.
subroutine allocate_scalars(this, modelname)
Allocate memory for non-allocatable members.
subroutine prt_ot_bdsummary(this, ibudfl, ipflag)
Print budget summary.
character(len=lenpackagetype), dimension(prt_nmultipkg), public prt_multipkg
subroutine create_packages(this)
Source package info and begin to process.
character(len=lenpackagetype), dimension(prt_nbasepkg), public prt_basepkg
integer(i4b), parameter, public prt_nmultipkg
PRT multi package array descriptors.
character(len=lenbudtxt), dimension(nbditems) budtxt
subroutine prt_da(this)
Deallocate.
subroutine prt_cq_sto(this)
Calculate particle mass storage.
subroutine, public prt_cr(filename, id, modelname)
Create a new particle tracking model object.
subroutine prt_ot_printflow(this, ibudfl, flowja)
Print intercell flows.
subroutine prt_bd(this, icnvg, isuppress_output)
Calculate flows and budget.
subroutine prt_df(this)
Define packages.
integer(i4b), parameter, public prt_nbasepkg
PRT base package array descriptors.
integer(i4b), parameter nbditems
subroutine allocate_arrays(this)
Allocate arrays.
subroutine log_namfile_options(this, found)
Write model namfile options to list file.
subroutine prt_ot_dv(this, idvsave, idvprint, ipflag)
Print dependent variables.
subroutine prt_solve(this)
Solve the model.
subroutine, public oc_cr(ocobj, name_model, inunit, iout)
@ brief Create an output control object
subroutine, public prp_create(packobj, id, ibcnum, inunit, iout, namemodel, pakname, fmi)
Create a new particle release point package.
This module contains simulation methods.
subroutine, public store_error(msg, terminate)
Store an error message.
integer(i4b) function, public count_errors()
Return number of errors.
subroutine, public store_error_filename(filename, terminate)
Store the erroring file name.
This module contains simulation variables.
character(len=linelength) idm_context
integer(i4b) isimcheck
simulation input check flag (1) to check input, (0) to ignore checks
integer(i4b) ifailedstepretry
current retry for this time step
subroutine csr_diagsum(ia, flowja)
logical(lgp), pointer, public endofperiod
flag indicating end of stress period
subroutine, public tdis_ot(iout)
Print simulation time.
integer(i4b), dimension(:), pointer, public, contiguous nstp
number of time steps in each stress period
real(dp), pointer, public totim
time relative to start of simulation
logical(lgp), pointer, public readnewdata
flag indicating time to read new data
real(dp), pointer, public totimc
simulation time at start of time step
integer(i4b), pointer, public kstp
current time step number
integer(i4b), pointer, public kper
current stress period number
real(dp), pointer, public delt
length of the current time step
integer(i4b), pointer, public nper
number of stress period
This module contains version information.
subroutine write_listfile_header(iout, cmodel_type, write_sys_command, write_kind_info)
@ brief Write program header
Highest level model type. All models extend this parent type.
Derived type for the Budget object.
This class is used to store a single deferred-length character string. It was designed to work in an ...
Structured grid discretization.
Unstructured grid discretization.
Vertex grid discretization.
A generic heterogeneous doubly-linked list.
Base type for particle tracking methods.
Particle tracked by the PRT model.
Particle tracking (PRT) model.
@ brief Output control for particle tracking models
Particle release point (PRP) package.
Manages particle track (i.e. pathline) files.
Output file containing all or some particle pathlines.