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)
915 if (packobj%itrkout > 0)
then
916 call this%trackctl%init_track_file( &
920 if (packobj%itrkcsv > 0)
then
921 call this%trackctl%init_track_file( &
928 do np = 1, packobj%nparticles
930 call particle%load_particle(packobj%particles, &
934 if (particle%istatus == 8) &
935 call this%method%save(particle, reason=3)
938 if (particle%istatus > 1) cycle
942 if (particle%trelease >=
totimc) &
943 call this%method%save(particle, reason=0)
951 particle%iextend > 0)
then
952 tmax = particle%tstop
958 call this%method%apply(particle, tmax)
965 call packobj%particles%save_particle(particle, np)
971 deallocate (particle)
982 integer(I4B),
dimension(:),
allocatable,
intent(inout) :: bndpkgs
984 pointer,
intent(inout) :: pkgtypes
986 pointer,
intent(inout) :: pkgnames
988 pointer,
intent(inout) :: mempaths
989 integer(I4B),
dimension(:),
contiguous, &
990 pointer,
intent(inout) :: inunits
992 integer(I4B) :: ipakid, ipaknum
993 character(len=LENFTYPE) :: pkgtype, bndptype
994 character(len=LENPACKAGENAME) :: pkgname
995 character(len=LENMEMPATH) :: mempath
996 integer(I4B),
pointer :: inunit
999 if (
allocated(bndpkgs))
then
1004 do n = 1,
size(bndpkgs)
1006 pkgtype = pkgtypes(bndpkgs(n))
1007 pkgname = pkgnames(bndpkgs(n))
1008 mempath = mempaths(bndpkgs(n))
1009 inunit => inunits(bndpkgs(n))
1011 if (bndptype /= pkgtype)
then
1016 call this%package_create(pkgtype, ipakid, ipaknum, pkgname, mempath, &
1019 ipaknum = ipaknum + 1
1023 deallocate (bndpkgs)
1048 pointer :: pkgtypes => null()
1050 pointer :: pkgnames => null()
1052 pointer :: mempaths => null()
1053 integer(I4B),
dimension(:),
contiguous, &
1054 pointer :: inunits => null()
1055 character(len=LENMEMPATH) :: model_mempath
1056 character(len=LENFTYPE) :: pkgtype
1057 character(len=LENPACKAGENAME) :: pkgname
1058 character(len=LENMEMPATH) :: mempath
1059 integer(I4B),
pointer :: inunit
1060 integer(I4B),
dimension(:),
allocatable :: bndpkgs
1062 integer(I4B) :: indis = 0
1063 character(len=LENMEMPATH) :: mempathmip =
''
1069 call mem_setptr(pkgtypes,
'PKGTYPES', model_mempath)
1070 call mem_setptr(pkgnames,
'PKGNAMES', model_mempath)
1071 call mem_setptr(mempaths,
'MEMPATHS', model_mempath)
1072 call mem_setptr(inunits,
'INUNITS', model_mempath)
1074 do n = 1,
size(pkgtypes)
1076 pkgtype = pkgtypes(n)
1077 pkgname = pkgnames(n)
1078 mempath = mempaths(n)
1079 inunit => inunits(n)
1082 select case (pkgtype)
1085 call dis_cr(this%dis, this%name, mempath, indis, this%iout)
1088 call disv_cr(this%dis, this%name, mempath, indis, this%iout)
1091 call disu_cr(this%dis, this%name, mempath, indis, this%iout)
1094 mempathmip = mempath
1101 bndpkgs(
size(bndpkgs)) = n
1103 call pstop(1,
"Unrecognized package type: "//pkgtype)
1116 call mip_cr(this%mip, this%name, mempathmip, this%inmip, this%iout, this%dis)
1117 call fmi_cr(this%fmi, this%name, this%infmi, this%iout)
1118 call oc_cr(this%oc, this%name, this%inoc, this%iout)
1121 call this%ftype_check(indis)
1124 call this%create_bndpkgs(bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
1133 write (this%iout,
'(1x,a)')
'NAMEFILE OPTIONS:'
1135 if (found%newton)
then
1136 write (this%iout,
'(4x,a)') &
1137 'NEWTON-RAPHSON method enabled for the model.'
1138 if (found%under_relaxation)
then
1139 write (this%iout,
'(4x,a,a)') &
1140 'NEWTON-RAPHSON UNDER-RELAXATION based on the bottom ', &
1141 'elevation of the model will be applied to the model.'
1145 if (found%print_input)
then
1146 write (this%iout,
'(4x,a)')
'STRESS PACKAGE INPUT WILL BE PRINTED '// &
1147 'FOR ALL MODEL STRESS PACKAGES'
1150 if (found%print_flows)
then
1151 write (this%iout,
'(4x,a)')
'PACKAGE FLOWS WILL BE PRINTED '// &
1152 'FOR ALL MODEL PACKAGES'
1155 if (found%save_flows)
then
1156 write (this%iout,
'(4x,a)') &
1157 'FLOWS WILL BE SAVED TO BUDGET FILE SPECIFIED IN OUTPUT CONTROL'
1160 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.