37 character(len=LENBUDTXT),
dimension(NBDITEMS) ::
budtxt
48 integer(I4B),
pointer :: infmi => null()
49 integer(I4B),
pointer :: inmip => null()
50 integer(I4B),
pointer :: inmvt => null()
51 integer(I4B),
pointer :: inmst => null()
52 integer(I4B),
pointer :: inadv => null()
53 integer(I4B),
pointer :: indsp => null()
54 integer(I4B),
pointer :: inssm => null()
55 integer(I4B),
pointer :: inoc => null()
56 integer(I4B),
pointer :: nprp => null()
57 real(dp),
dimension(:),
pointer,
contiguous :: masssto => null()
58 real(dp),
dimension(:),
pointer,
contiguous :: massstoold => null()
59 real(dp),
dimension(:),
pointer,
contiguous :: ratesto => null()
95 character(len=LENPACKAGETYPE),
dimension(PRT_NBASEPKG) ::
prt_basepkg
96 data prt_basepkg/
'DIS6 ',
'DISV6',
'DISU6',
'IC6 ',
'MST6 ', &
97 &
'ADV6 ',
'DSP6 ',
'SSM6 ',
'MIP6 ',
'CNC6 ', &
98 &
'OC6 ',
' ',
'FMI6 ',
' ',
'IST6 ', &
99 &
'LKT6 ',
'SFT6 ',
'MWT6 ',
'UZT6 ',
'MVT6 ', &
100 &
'API6 ',
' ',
' ',
' ',
' ', &
109 character(len=LENPACKAGETYPE),
dimension(PRT_NMULTIPKG) ::
prt_multipkg
119 subroutine prt_cr(filename, id, modelname)
130 character(len=*),
intent(in) :: filename
131 integer(I4B),
intent(in) :: id
132 character(len=*),
intent(in) :: modelname
136 character(len=LENMEMPATH) :: input_mempath
137 character(len=LINELENGTH) :: lst_fname
147 allocate (this%trackctl)
150 call this%allocate_scalars(modelname)
155 this%filename = filename
156 this%name = modelname
157 this%macronym =
'PRT'
164 call mem_set_value(this%iprpak,
'PRINT_INPUT', input_mempath, &
166 call mem_set_value(this%iprflow,
'PRINT_FLOWS', input_mempath, &
168 call mem_set_value(this%ipakcb,
'SAVE_FLOWS', input_mempath, &
172 call this%create_lstfile(lst_fname, filename, found%list, &
173 'PARTICLE TRACKING MODEL (PRT)')
176 if (found%save_flows)
then
181 if (this%iout > 0)
then
182 call this%log_namfile_options(found)
186 call this%create_packages()
201 class(
bndtype),
pointer :: packobj
204 call this%dis%dis_df()
205 call this%fmi%fmi_df(this%dis, 1)
207 call this%budget%budget_df(
niunit_prt,
'MASS',
'M')
210 do ip = 1, this%bndlist%Count()
212 call packobj%bnd_df(this%dis%nodes, this%dis)
213 packobj%TsManager%iout = this%iout
214 packobj%TasManager%iout = this%iout
218 call this%allocate_arrays()
237 class(
bndtype),
pointer :: packobj
240 call this%fmi%fmi_ar(this%ibound)
241 if (this%inmip > 0)
call this%mip%mip_ar()
244 call this%oc%oc_ar(this%dis,
dhnoflo)
245 call this%budget%set_ibudcsv(this%oc%ibudcsv)
248 do ip = 1, this%bndlist%Count()
250 select type (packobj)
252 call packobj%prp_set_pointers(this%ibound, this%mip%izone, &
256 call packobj%bnd_ar()
260 select type (dis => this%dis)
264 trackctl=this%trackctl, &
265 izone=this%mip%izone, &
266 flowja=this%flowja, &
267 porosity=this%mip%porosity, &
268 retfactor=this%mip%retfactor, &
269 tracktimes=this%oc%tracktimes)
274 trackctl=this%trackctl, &
275 izone=this%mip%izone, &
276 flowja=this%flowja, &
277 porosity=this%mip%porosity, &
278 retfactor=this%mip%retfactor, &
279 tracktimes=this%oc%tracktimes)
284 if (this%oc%itrkout > 0) &
285 call this%trackctl%init_track_file(this%oc%itrkout)
286 if (this%oc%itrkcsv > 0) &
287 call this%trackctl%init_track_file(this%oc%itrkcsv, csv=.true.)
288 call this%trackctl%set_track_events( &
289 this%oc%trackrelease, &
291 this%oc%tracktimestep, &
292 this%oc%trackterminate, &
293 this%oc%trackweaksink, &
294 this%oc%trackusertime)
303 class(
bndtype),
pointer :: packobj
310 if (this%inoc > 0)
call this%oc%oc_rp()
311 do ip = 1, this%bndlist%Count()
313 call packobj%bnd_rp()
323 class(
bndtype),
pointer :: packobj
325 integer(I4B) :: irestore
326 integer(I4B) :: ip, n, i
333 do n = 1, this%dis%nodes
334 this%massstoold(n) = this%masssto(n)
338 call this%fmi%fmi_ad()
341 do ip = 1, this%bndlist%Count()
343 call packobj%bnd_ad()
345 call packobj%bnd_ck()
355 do i = 1, this%dis%nja
356 this%flowja(i) =
dzero
361 subroutine prt_cq(this, icnvg, isuppress_output)
368 integer(I4B),
intent(in) :: icnvg
369 integer(I4B),
intent(in) :: isuppress_output
373 class(
bndtype),
pointer :: packobj
387 do i = 1, this%dis%nja
388 this%flowja(i) = this%flowja(i) * tled
392 call this%prt_cq_sto()
395 do ip = 1, this%bndlist%Count()
397 call packobj%bnd_cq(this%masssto, this%flowja)
415 class(
bndtype),
pointer :: packobj
418 integer(I4B) :: idiag
419 integer(I4B) :: istatus
427 do n = 1, this%dis%nodes
428 this%masssto(n) =
dzero
429 this%ratesto(n) =
dzero
431 do ip = 1, this%bndlist%Count()
433 select type (packobj)
435 do np = 1, packobj%nparticles
436 istatus = packobj%particles%istatus(np)
438 if ((istatus > 0) .and. (istatus /= 8))
then
439 n = packobj%particles%idomain(np, 2)
441 this%masssto(n) = this%masssto(n) +
done
446 do n = 1, this%dis%nodes
447 rate = -(this%masssto(n) - this%massstoold(n)) * tled
448 this%ratesto(n) = rate
449 idiag = this%dis%con%ia(n)
450 this%flowja(idiag) = this%flowja(idiag) + rate
460 subroutine prt_bd(this, icnvg, isuppress_output)
466 integer(I4B),
intent(in) :: icnvg
467 integer(I4B),
intent(in) :: isuppress_output
470 class(
bndtype),
pointer :: packobj
478 call this%budget%reset()
480 call this%budget%addentry(rin, rout,
delt,
budtxt(1), &
481 isuppress_output,
' PRT')
482 do ip = 1, this%bndlist%Count()
484 call packobj%bnd_bd(this%budget)
494 integer(I4B) :: idvsave
495 integer(I4B) :: idvprint
496 integer(I4B) :: icbcfl
497 integer(I4B) :: icbcun
498 integer(I4B) :: ibudfl
499 integer(I4B) :: ipflag
508 if (this%oc%oc_save(
'CONCENTRATION')) idvsave = 1
509 if (this%oc%oc_print(
'CONCENTRATION')) idvprint = 1
510 if (this%oc%oc_save(
'BUDGET')) icbcfl = 1
511 if (this%oc%oc_print(
'BUDGET')) ibudfl = 1
512 icbcun = this%oc%oc_save_unit(
'BUDGET')
516 ibudfl = this%oc%set_print_flag(
'BUDGET', 1,
endofperiod)
517 idvprint = this%oc%set_print_flag(
'CONCENTRATION', 1,
endofperiod)
520 call this%prt_ot_flow(icbcfl, ibudfl, icbcun)
523 call this%prt_ot_dv(idvsave, idvprint, ipflag)
526 call this%prt_ot_bdsummary(ibudfl, ipflag)
530 if (ipflag == 1)
call tdis_ot(this%iout)
537 integer(I4B),
intent(in) :: icbcfl
538 integer(I4B),
intent(in) :: ibudfl
539 integer(I4B),
intent(in) :: icbcun
540 class(
bndtype),
pointer :: packobj
544 call this%prt_ot_saveflow(this%dis%nja, this%flowja, icbcfl, icbcun)
545 do ip = 1, this%bndlist%Count()
547 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=0, icbcun=icbcun)
551 do ip = 1, this%bndlist%Count()
553 call packobj%bnd_ot_package_flows(icbcfl=icbcfl, ibudfl=0)
557 call this%prt_ot_printflow(ibudfl, this%flowja)
558 do ip = 1, this%bndlist%Count()
560 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=ibudfl, icbcun=0)
564 do ip = 1, this%bndlist%Count()
566 call packobj%bnd_ot_package_flows(icbcfl=0, ibudfl=ibudfl)
574 integer(I4B),
intent(in) :: nja
575 real(DP),
dimension(nja),
intent(in) :: flowja
576 integer(I4B),
intent(in) :: icbcfl
577 integer(I4B),
intent(in) :: icbcun
579 integer(I4B) :: ibinun
582 if (this%ipakcb < 0)
then
584 elseif (this%ipakcb == 0)
then
589 if (icbcfl == 0) ibinun = 0
592 if (ibinun /= 0)
then
593 call this%dis%record_connection_array(flowja, ibinun, this%iout)
604 integer(I4B),
intent(in) :: ibudfl
605 real(DP),
intent(inout),
dimension(:) :: flowja
607 character(len=LENBIGLINE) :: line
608 character(len=30) :: tempstr
609 integer(I4B) :: n, ipos, m
612 character(len=*),
parameter :: fmtiprflow = &
613 "(/,4x,'CALCULATED INTERCELL FLOW &
614 &FOR PERIOD ', i0, ' STEP ', i0)"
617 if (ibudfl /= 0 .and. this%iprflow > 0)
then
618 write (this%iout, fmtiprflow)
kper,
kstp
619 do n = 1, this%dis%nodes
621 call this%dis%noder_to_string(n, tempstr)
622 line = trim(tempstr)//
':'
623 do ipos = this%dis%con%ia(n) + 1, this%dis%con%ia(n + 1) - 1
624 m = this%dis%con%ja(ipos)
625 call this%dis%noder_to_string(m, tempstr)
626 line = trim(line)//
' '//trim(tempstr)
628 write (tempstr,
'(1pg15.6)') qnm
629 line = trim(line)//
' '//trim(adjustl(tempstr))
631 write (this%iout,
'(a)') trim(line)
640 integer(I4B),
intent(in) :: idvsave
641 integer(I4B),
intent(in) :: idvprint
642 integer(I4B),
intent(inout) :: ipflag
644 class(
bndtype),
pointer :: packobj
648 do ip = 1, this%bndlist%Count()
650 call packobj%bnd_ot_dv(idvsave, idvprint)
654 call this%oc%oc_ot(ipflag)
663 integer(I4B),
intent(in) :: ibudfl
664 integer(I4B),
intent(inout) :: ipflag
666 class(
bndtype),
pointer :: packobj
670 do ip = 1, this%bndlist%Count()
672 call packobj%bnd_ot_bdsummary(
kstp,
kper, this%iout, ibudfl)
676 call this%budget%finalize_step(
delt)
677 if (ibudfl /= 0)
then
680 call this%budget%budget_ot(
kstp,
kper, this%iout)
684 call this%budget%writecsv(
totim)
700 class(
bndtype),
pointer :: packobj
707 call this%dis%dis_da()
708 call this%fmi%fmi_da()
709 call this%mip%mip_da()
710 call this%budget%budget_da()
712 deallocate (this%dis)
713 deallocate (this%fmi)
714 deallocate (this%mip)
715 deallocate (this%budget)
724 do ip = 1, this%bndlist%Count()
726 call packobj%bnd_da()
746 deallocate (this%trackctl)
749 call this%NumericalModelType%model_da()
756 character(len=*),
intent(in) :: modelname
759 call this%NumericalModelType%allocate_scalars(modelname)
788 this%nja = this%dis%nja
789 call this%NumericalModelType%allocate_arrays()
793 'MASSSTO', this%memoryPath)
795 'MASSSTOOLD', this%memoryPath)
797 'RATESTO', this%memoryPath)
799 call mem_allocate(this%x, this%dis%nodes,
'X', this%memoryPath)
800 call mem_allocate(this%rhs, this%dis%nodes,
'RHS', this%memoryPath)
801 call mem_allocate(this%ibound, this%dis%nodes,
'IBOUND', this%memoryPath)
802 do n = 1, this%dis%nodes
803 this%masssto(n) =
dzero
804 this%massstoold(n) =
dzero
805 this%ratesto(n) =
dzero
821 character(len=*),
intent(in) :: filtyp
822 character(len=LINELENGTH) :: errmsg
823 integer(I4B),
intent(in) :: ipakid
824 integer(I4B),
intent(in) :: ipaknum
825 character(len=*),
intent(in) :: pakname
826 character(len=*),
intent(in) :: mempath
827 integer(I4B),
intent(in) :: inunit
828 integer(I4B),
intent(in) :: iout
830 class(
bndtype),
pointer :: packobj
831 class(
bndtype),
pointer :: packobj2
837 call prp_create(packobj, ipakid, ipaknum, inunit, iout, &
838 this%name, pakname, this%fmi)
840 call api_create(packobj, ipakid, ipaknum, inunit, iout, &
843 write (errmsg, *)
'Invalid package type: ', filtyp
850 do ip = 1, this%bndlist%Count()
852 if (packobj2%packName == pakname)
then
853 write (errmsg,
'(a,a)')
'Cannot create package. Package name '// &
854 'already exists: ', trim(pakname)
865 integer(I4B),
intent(in) :: indis
867 character(len=LINELENGTH) :: errmsg
871 write (errmsg,
'(1x,a)') &
872 'Discretization (DIS6, DISV6, or DISU6) package not specified.'
875 if (this%inmip == 0)
then
876 write (errmsg,
'(1x,a)') &
877 'Model input (MIP6) package not specified.'
882 write (errmsg,
'(1x,a)')
'One or more required package(s) not specified.'
896 integer(I4B) :: np, ip
897 class(
bndtype),
pointer :: packobj
907 do ip = 1, this%bndlist%Count()
909 select type (packobj)
916 if (packobj%itrkout > 0)
then
917 call this%trackctl%init_track_file( &
921 if (packobj%itrkcsv > 0)
then
922 call this%trackctl%init_track_file( &
930 do np = 1, packobj%nparticles
932 call particle%load_particle(packobj%particles, &
936 if (particle%istatus == 8) &
937 call this%method%save(particle, reason=3)
940 if (particle%istatus > 1) cycle
944 if (particle%trelease >=
totimc) &
945 call this%method%save(particle, reason=0)
953 particle%iextend > 0)
then
954 tmax = particle%tstop
960 call this%method%apply(particle, tmax)
967 call packobj%particles%save_particle(particle, np)
973 deallocate (particle)
984 integer(I4B),
dimension(:),
allocatable,
intent(inout) :: bndpkgs
986 pointer,
intent(inout) :: pkgtypes
988 pointer,
intent(inout) :: pkgnames
990 pointer,
intent(inout) :: mempaths
991 integer(I4B),
dimension(:),
contiguous, &
992 pointer,
intent(inout) :: inunits
994 integer(I4B) :: ipakid, ipaknum
995 character(len=LENFTYPE) :: pkgtype, bndptype
996 character(len=LENPACKAGENAME) :: pkgname
997 character(len=LENMEMPATH) :: mempath
998 integer(I4B),
pointer :: inunit
1001 if (
allocated(bndpkgs))
then
1006 do n = 1,
size(bndpkgs)
1008 pkgtype = pkgtypes(bndpkgs(n))
1009 pkgname = pkgnames(bndpkgs(n))
1010 mempath = mempaths(bndpkgs(n))
1011 inunit => inunits(bndpkgs(n))
1013 if (bndptype /= pkgtype)
then
1018 call this%package_create(pkgtype, ipakid, ipaknum, pkgname, mempath, &
1021 ipaknum = ipaknum + 1
1025 deallocate (bndpkgs)
1050 pointer :: pkgtypes => null()
1052 pointer :: pkgnames => null()
1054 pointer :: mempaths => null()
1055 integer(I4B),
dimension(:),
contiguous, &
1056 pointer :: inunits => null()
1057 character(len=LENMEMPATH) :: model_mempath
1058 character(len=LENFTYPE) :: pkgtype
1059 character(len=LENPACKAGENAME) :: pkgname
1060 character(len=LENMEMPATH) :: mempath
1061 integer(I4B),
pointer :: inunit
1062 integer(I4B),
dimension(:),
allocatable :: bndpkgs
1064 integer(I4B) :: indis = 0
1065 character(len=LENMEMPATH) :: mempathmip =
''
1071 call mem_setptr(pkgtypes,
'PKGTYPES', model_mempath)
1072 call mem_setptr(pkgnames,
'PKGNAMES', model_mempath)
1073 call mem_setptr(mempaths,
'MEMPATHS', model_mempath)
1074 call mem_setptr(inunits,
'INUNITS', model_mempath)
1076 do n = 1,
size(pkgtypes)
1078 pkgtype = pkgtypes(n)
1079 pkgname = pkgnames(n)
1080 mempath = mempaths(n)
1081 inunit => inunits(n)
1084 select case (pkgtype)
1087 call dis_cr(this%dis, this%name, mempath, indis, this%iout)
1090 call disv_cr(this%dis, this%name, mempath, indis, this%iout)
1093 call disu_cr(this%dis, this%name, mempath, indis, this%iout)
1096 mempathmip = mempath
1103 bndpkgs(
size(bndpkgs)) = n
1105 call pstop(1,
"Unrecognized package type: "//pkgtype)
1118 call mip_cr(this%mip, this%name, mempathmip, this%inmip, this%iout, this%dis)
1119 call fmi_cr(this%fmi, this%name, this%infmi, this%iout)
1120 call oc_cr(this%oc, this%name, this%inoc, this%iout)
1123 call this%ftype_check(indis)
1126 call this%create_bndpkgs(bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
1135 write (this%iout,
'(1x,a)')
'NAMEFILE OPTIONS:'
1137 if (found%newton)
then
1138 write (this%iout,
'(4x,a)') &
1139 'NEWTON-RAPHSON method enabled for the model.'
1140 if (found%under_relaxation)
then
1141 write (this%iout,
'(4x,a,a)') &
1142 'NEWTON-RAPHSON UNDER-RELAXATION based on the bottom ', &
1143 'elevation of the model will be applied to the model.'
1147 if (found%print_input)
then
1148 write (this%iout,
'(4x,a)')
'STRESS PACKAGE INPUT WILL BE PRINTED '// &
1149 'FOR ALL MODEL STRESS PACKAGES'
1152 if (found%print_flows)
then
1153 write (this%iout,
'(4x,a)')
'PACKAGE FLOWS WILL BE PRINTED '// &
1154 'FOR ALL MODEL PACKAGES'
1157 if (found%save_flows)
then
1158 write (this%iout,
'(4x,a)') &
1159 'FLOWS WILL BE SAVED TO BUDGET FILE SPECIFIED IN OUTPUT CONTROL'
1162 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.