37 character(len=LENBUDTXT),
dimension(NBDITEMS) ::
budtxt
49 integer(I4B),
pointer :: infmi => null()
50 integer(I4B),
pointer :: inmip => null()
51 integer(I4B),
pointer :: inmvt => null()
52 integer(I4B),
pointer :: inmst => null()
53 integer(I4B),
pointer :: inadv => null()
54 integer(I4B),
pointer :: indsp => null()
55 integer(I4B),
pointer :: inssm => null()
56 integer(I4B),
pointer :: inoc => null()
57 integer(I4B),
pointer :: inobs => null()
58 integer(I4B),
pointer :: nprp => null()
59 real(dp),
dimension(:),
pointer,
contiguous :: masssto => null()
60 real(dp),
dimension(:),
pointer,
contiguous :: massstoold => null()
61 real(dp),
dimension(:),
pointer,
contiguous :: ratesto => null()
98 character(len=LENPACKAGETYPE),
dimension(PRT_NBASEPKG) ::
prt_basepkg
99 data prt_basepkg/
'DIS6 ',
'DISV6',
'DISU6',
'IC6 ',
'MST6 ', &
100 &
'ADV6 ',
'DSP6 ',
'SSM6 ',
'MIP6 ',
'CNC6 ', &
101 &
'OC6 ',
'OBS6 ',
'FMI6 ',
' ',
'IST6 ', &
102 &
'LKT6 ',
'SFT6 ',
'MWT6 ',
'UZT6 ',
'MVT6 ', &
103 &
'API6 ',
' ',
' ',
' ',
' ', &
112 character(len=LENPACKAGETYPE),
dimension(PRT_NMULTIPKG) ::
prt_multipkg
122 subroutine prt_cr(filename, id, modelname)
133 character(len=*),
intent(in) :: filename
134 integer(I4B),
intent(in) :: id
135 character(len=*),
intent(in) :: modelname
139 character(len=LENMEMPATH) :: input_mempath
140 character(len=LINELENGTH) :: lst_fname
150 allocate (this%trackfilectl)
153 call this%allocate_scalars(modelname)
158 this%filename = filename
159 this%name = modelname
160 this%macronym =
'PRT'
167 call mem_set_value(this%iprpak,
'PRINT_INPUT', input_mempath, &
169 call mem_set_value(this%iprflow,
'PRINT_FLOWS', input_mempath, &
171 call mem_set_value(this%ipakcb,
'SAVE_FLOWS', input_mempath, &
175 call this%create_lstfile(lst_fname, filename, found%list, &
176 'PARTICLE TRACKING MODEL (PRT)')
179 if (found%save_flows)
then
184 if (this%iout > 0)
then
185 call this%log_namfile_options(found)
189 call this%create_packages()
204 class(
bndtype),
pointer :: packobj
207 call this%dis%dis_df()
208 call this%fmi%fmi_df(this%dis, 1)
210 call this%budget%budget_df(
niunit_prt,
'MASS',
'M')
213 do ip = 1, this%bndlist%Count()
215 call packobj%bnd_df(this%dis%nodes, this%dis)
216 packobj%TsManager%iout = this%iout
217 packobj%TasManager%iout = this%iout
221 call this%allocate_arrays()
224 call this%obs%obs_df(this%iout, this%name,
'PRT', this%dis)
242 class(
bndtype),
pointer :: packobj
245 call this%fmi%fmi_ar(this%ibound)
246 if (this%inmip > 0)
call this%mip%mip_ar()
249 call this%oc%oc_ar(this%masssto, this%dis,
dhnoflo)
250 call this%budget%set_ibudcsv(this%oc%ibudcsv)
253 do ip = 1, this%bndlist%Count()
255 select type (packobj)
257 call packobj%prp_set_pointers(this%ibound, this%mip%izone, &
261 call packobj%bnd_ar()
265 select type (dis => this%dis)
269 trackfilectl=this%trackfilectl, &
270 izone=this%mip%izone, &
271 flowja=this%flowja, &
272 porosity=this%mip%porosity, &
273 retfactor=this%mip%retfactor, &
274 tracktimes=this%oc%tracktimes)
279 trackfilectl=this%trackfilectl, &
280 izone=this%mip%izone, &
281 flowja=this%flowja, &
282 porosity=this%mip%porosity, &
283 retfactor=this%mip%retfactor, &
284 tracktimes=this%oc%tracktimes)
290 if (this%oc%itrkout > 0) &
291 call this%trackfilectl%init_track_file(this%oc%itrkout)
292 if (this%oc%itrkcsv > 0) &
293 call this%trackfilectl%init_track_file(this%oc%itrkcsv, csv=.true.)
294 call this%trackfilectl%set_track_events( &
295 this%oc%trackrelease, &
296 this%oc%tracktransit, &
297 this%oc%tracktimestep, &
298 this%oc%trackterminate, &
299 this%oc%trackweaksink, &
300 this%oc%trackusertime)
309 class(
bndtype),
pointer :: packobj
316 if (this%inoc > 0)
call this%oc%oc_rp()
317 do ip = 1, this%bndlist%Count()
319 call packobj%bnd_rp()
320 call packobj%bnd_rp_obs()
330 class(
bndtype),
pointer :: packobj
332 integer(I4B) :: irestore
333 integer(I4B) :: ip, n, i
340 do n = 1, this%dis%nodes
341 this%massstoold(n) = this%masssto(n)
345 call this%fmi%fmi_ad()
348 do ip = 1, this%bndlist%Count()
350 call packobj%bnd_ad()
352 call packobj%bnd_ck()
357 call this%obs%obs_ad()
365 do i = 1, this%dis%nja
366 this%flowja(i) =
dzero
371 subroutine prt_cq(this, icnvg, isuppress_output)
378 integer(I4B),
intent(in) :: icnvg
379 integer(I4B),
intent(in) :: isuppress_output
383 class(
bndtype),
pointer :: packobj
397 do i = 1, this%dis%nja
398 this%flowja(i) = this%flowja(i) * tled
402 call this%prt_cq_sto()
405 do ip = 1, this%bndlist%Count()
407 call packobj%bnd_cq(this%masssto, this%flowja)
425 class(
bndtype),
pointer :: packobj
428 integer(I4B) :: idiag
429 integer(I4B) :: istatus
437 do n = 1, this%dis%nodes
438 this%masssto(n) =
dzero
439 this%ratesto(n) =
dzero
441 do ip = 1, this%bndlist%Count()
443 select type (packobj)
445 do np = 1, packobj%nparticles
446 istatus = packobj%particles%istatus(np)
449 if ((istatus > 0) .and. (istatus /= 8))
then
450 n = packobj%particles%idomain(np, 2)
452 this%masssto(n) = this%masssto(n) +
done
457 do n = 1, this%dis%nodes
458 rate = -(this%masssto(n) - this%massstoold(n)) * tled
459 this%ratesto(n) = rate
460 idiag = this%dis%con%ia(n)
461 this%flowja(idiag) = this%flowja(idiag) + rate
471 subroutine prt_bd(this, icnvg, isuppress_output)
477 integer(I4B),
intent(in) :: icnvg
478 integer(I4B),
intent(in) :: isuppress_output
481 class(
bndtype),
pointer :: packobj
489 call this%budget%reset()
491 call this%budget%addentry(rin, rout,
delt,
budtxt(1), &
492 isuppress_output,
' PRT')
493 do ip = 1, this%bndlist%Count()
495 call packobj%bnd_bd(this%budget)
505 integer(I4B) :: idvsave
506 integer(I4B) :: idvprint
507 integer(I4B) :: icbcfl
508 integer(I4B) :: icbcun
509 integer(I4B) :: ibudfl
510 integer(I4B) :: ipflag
519 if (this%oc%oc_save(
'CONCENTRATION')) idvsave = 1
520 if (this%oc%oc_print(
'CONCENTRATION')) idvprint = 1
521 if (this%oc%oc_save(
'BUDGET')) icbcfl = 1
522 if (this%oc%oc_print(
'BUDGET')) ibudfl = 1
523 icbcun = this%oc%oc_save_unit(
'BUDGET')
527 ibudfl = this%oc%set_print_flag(
'BUDGET', 1,
endofperiod)
528 idvprint = this%oc%set_print_flag(
'CONCENTRATION', 1,
endofperiod)
531 call this%prt_ot_obs()
534 call this%prt_ot_flow(icbcfl, ibudfl, icbcun)
537 call this%prt_ot_dv(idvsave, idvprint, ipflag)
540 call this%prt_ot_bdsummary(ibudfl, ipflag)
544 if (ipflag == 1)
call tdis_ot(this%iout)
550 class(
bndtype),
pointer :: packobj
554 call this%obs%obs_bd()
555 call this%obs%obs_ot()
558 do ip = 1, this%bndlist%Count()
560 call packobj%bnd_bd_obs()
561 call packobj%bnd_ot_obs()
569 integer(I4B),
intent(in) :: icbcfl
570 integer(I4B),
intent(in) :: ibudfl
571 integer(I4B),
intent(in) :: icbcun
572 class(
bndtype),
pointer :: packobj
576 call this%prt_ot_saveflow(this%dis%nja, this%flowja, icbcfl, icbcun)
577 do ip = 1, this%bndlist%Count()
579 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=0, icbcun=icbcun)
583 do ip = 1, this%bndlist%Count()
585 call packobj%bnd_ot_package_flows(icbcfl=icbcfl, ibudfl=0)
589 call this%prt_ot_printflow(ibudfl, this%flowja)
590 do ip = 1, this%bndlist%Count()
592 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=ibudfl, icbcun=0)
596 do ip = 1, this%bndlist%Count()
598 call packobj%bnd_ot_package_flows(icbcfl=0, ibudfl=ibudfl)
606 integer(I4B),
intent(in) :: nja
607 real(DP),
dimension(nja),
intent(in) :: flowja
608 integer(I4B),
intent(in) :: icbcfl
609 integer(I4B),
intent(in) :: icbcun
611 integer(I4B) :: ibinun
614 if (this%ipakcb < 0)
then
616 elseif (this%ipakcb == 0)
then
621 if (icbcfl == 0) ibinun = 0
624 if (ibinun /= 0)
then
625 call this%dis%record_connection_array(flowja, ibinun, this%iout)
636 integer(I4B),
intent(in) :: ibudfl
637 real(DP),
intent(inout),
dimension(:) :: flowja
639 character(len=LENBIGLINE) :: line
640 character(len=30) :: tempstr
641 integer(I4B) :: n, ipos, m
644 character(len=*),
parameter :: fmtiprflow = &
645 "(/,4x,'CALCULATED INTERCELL FLOW &
646 &FOR PERIOD ', i0, ' STEP ', i0)"
649 if (ibudfl /= 0 .and. this%iprflow > 0)
then
650 write (this%iout, fmtiprflow)
kper,
kstp
651 do n = 1, this%dis%nodes
653 call this%dis%noder_to_string(n, tempstr)
654 line = trim(tempstr)//
':'
655 do ipos = this%dis%con%ia(n) + 1, this%dis%con%ia(n + 1) - 1
656 m = this%dis%con%ja(ipos)
657 call this%dis%noder_to_string(m, tempstr)
658 line = trim(line)//
' '//trim(tempstr)
660 write (tempstr,
'(1pg15.6)') qnm
661 line = trim(line)//
' '//trim(adjustl(tempstr))
663 write (this%iout,
'(a)') trim(line)
672 integer(I4B),
intent(in) :: idvsave
673 integer(I4B),
intent(in) :: idvprint
674 integer(I4B),
intent(inout) :: ipflag
676 class(
bndtype),
pointer :: packobj
680 do ip = 1, this%bndlist%Count()
682 call packobj%bnd_ot_dv(idvsave, idvprint)
686 call this%oc%oc_ot(ipflag)
695 integer(I4B),
intent(in) :: ibudfl
696 integer(I4B),
intent(inout) :: ipflag
698 class(
bndtype),
pointer :: packobj
702 do ip = 1, this%bndlist%Count()
704 call packobj%bnd_ot_bdsummary(
kstp,
kper, this%iout, ibudfl)
708 call this%budget%finalize_step(
delt)
709 if (ibudfl /= 0)
then
712 call this%budget%budget_ot(
kstp,
kper, this%iout)
716 call this%budget%writecsv(
totim)
732 class(
bndtype),
pointer :: packobj
739 call this%dis%dis_da()
740 call this%fmi%fmi_da()
741 call this%mip%mip_da()
742 call this%budget%budget_da()
744 call this%obs%obs_da()
745 deallocate (this%dis)
746 deallocate (this%fmi)
747 deallocate (this%mip)
748 deallocate (this%budget)
750 deallocate (this%obs)
758 do ip = 1, this%bndlist%Count()
760 call packobj%bnd_da()
782 deallocate (this%trackfilectl)
785 call this%NumericalModelType%model_da()
792 character(len=*),
intent(in) :: modelname
795 call this%NumericalModelType%allocate_scalars(modelname)
828 this%nja = this%dis%nja
829 call this%NumericalModelType%allocate_arrays()
833 'MASSSTO', this%memoryPath)
835 'MASSSTOOLD', this%memoryPath)
837 'RATESTO', this%memoryPath)
839 call mem_allocate(this%x, this%dis%nodes,
'X', this%memoryPath)
840 call mem_allocate(this%rhs, this%dis%nodes,
'RHS', this%memoryPath)
841 call mem_allocate(this%ibound, this%dis%nodes,
'IBOUND', this%memoryPath)
842 do n = 1, this%dis%nodes
843 this%masssto(n) =
dzero
844 this%massstoold(n) =
dzero
845 this%ratesto(n) =
dzero
861 character(len=*),
intent(in) :: filtyp
862 character(len=LINELENGTH) :: errmsg
863 integer(I4B),
intent(in) :: ipakid
864 integer(I4B),
intent(in) :: ipaknum
865 character(len=*),
intent(in) :: pakname
866 character(len=*),
intent(in) :: mempath
867 integer(I4B),
intent(in) :: inunit
868 integer(I4B),
intent(in) :: iout
870 class(
bndtype),
pointer :: packobj
871 class(
bndtype),
pointer :: packobj2
877 this%nprp = this%nprp + 1
878 call prp_create(packobj, ipakid, ipaknum, inunit, iout, &
879 this%name, pakname, mempath, this%fmi)
881 call api_create(packobj, ipakid, ipaknum, inunit, iout, &
884 write (errmsg, *)
'Invalid package type: ', filtyp
891 do ip = 1, this%bndlist%Count()
893 if (packobj2%packName == pakname)
then
894 write (errmsg,
'(a,a)')
'Cannot create package. Package name '// &
895 'already exists: ', trim(pakname)
906 integer(I4B),
intent(in) :: indis
908 character(len=LINELENGTH) :: errmsg
912 write (errmsg,
'(1x,a)') &
913 'Discretization (DIS6, DISV6, or DISU6) package not specified.'
916 if (this%inmip == 0)
then
917 write (errmsg,
'(1x,a)') &
918 'Model input (MIP6) package not specified.'
923 write (errmsg,
'(1x,a)')
'One or more required package(s) not specified.'
937 integer(I4B) :: np, ip
938 class(
bndtype),
pointer :: packobj
948 do ip = 1, this%bndlist%Count()
950 select type (packobj)
956 if (packobj%itrkout > 0)
then
957 call this%trackfilectl%init_track_file( &
961 if (packobj%itrkcsv > 0)
then
962 call this%trackfilectl%init_track_file( &
969 do np = 1, packobj%nparticles
971 call particle%load_from_store(packobj%particles, &
975 if (particle%istatus == 8) &
976 call this%method%save(particle, reason=3)
979 if (particle%istatus > 1) cycle
983 if (particle%trelease >=
totimc) &
984 call this%method%save(particle, reason=0)
991 tmax = particle%tstop
994 call this%method%apply(particle, tmax)
997 call packobj%particles%load_from_particle(particle, np)
1003 deallocate (particle)
1014 integer(I4B),
dimension(:),
allocatable,
intent(inout) :: bndpkgs
1016 pointer,
intent(inout) :: pkgtypes
1018 pointer,
intent(inout) :: pkgnames
1020 pointer,
intent(inout) :: mempaths
1021 integer(I4B),
dimension(:),
contiguous, &
1022 pointer,
intent(inout) :: inunits
1024 integer(I4B) :: ipakid, ipaknum
1025 character(len=LENFTYPE) :: pkgtype, bndptype
1026 character(len=LENPACKAGENAME) :: pkgname
1027 character(len=LENMEMPATH) :: mempath
1028 integer(I4B),
pointer :: inunit
1031 if (
allocated(bndpkgs))
then
1036 do n = 1,
size(bndpkgs)
1038 pkgtype = pkgtypes(bndpkgs(n))
1039 pkgname = pkgnames(bndpkgs(n))
1040 mempath = mempaths(bndpkgs(n))
1041 inunit => inunits(bndpkgs(n))
1043 if (bndptype /= pkgtype)
then
1048 call this%package_create(pkgtype, ipakid, ipaknum, pkgname, mempath, &
1051 ipaknum = ipaknum + 1
1055 deallocate (bndpkgs)
1081 pointer :: pkgtypes => null()
1083 pointer :: pkgnames => null()
1085 pointer :: mempaths => null()
1086 integer(I4B),
dimension(:),
contiguous, &
1087 pointer :: inunits => null()
1088 character(len=LENMEMPATH) :: model_mempath
1089 character(len=LENFTYPE) :: pkgtype
1090 character(len=LENPACKAGENAME) :: pkgname
1091 character(len=LENMEMPATH) :: mempath
1092 integer(I4B),
pointer :: inunit
1093 integer(I4B),
dimension(:),
allocatable :: bndpkgs
1095 integer(I4B) :: indis = 0
1096 character(len=LENMEMPATH) :: mempathmip =
''
1102 call mem_setptr(pkgtypes,
'PKGTYPES', model_mempath)
1103 call mem_setptr(pkgnames,
'PKGNAMES', model_mempath)
1104 call mem_setptr(mempaths,
'MEMPATHS', model_mempath)
1105 call mem_setptr(inunits,
'INUNITS', model_mempath)
1107 do n = 1,
size(pkgtypes)
1109 pkgtype = pkgtypes(n)
1110 pkgname = pkgnames(n)
1111 mempath = mempaths(n)
1112 inunit => inunits(n)
1115 select case (pkgtype)
1118 call dis_cr(this%dis, this%name, mempath, indis, this%iout)
1121 call disv_cr(this%dis, this%name, mempath, indis, this%iout)
1124 call disu_cr(this%dis, this%name, mempath, indis, this%iout)
1127 mempathmip = mempath
1136 bndpkgs(
size(bndpkgs)) = n
1138 call pstop(1,
"Unrecognized package type: "//pkgtype)
1151 call mip_cr(this%mip, this%name, mempathmip, this%inmip, this%iout, this%dis)
1152 call fmi_cr(this%fmi, this%name, this%infmi, this%iout)
1153 call oc_cr(this%oc, this%name, this%inoc, this%iout)
1157 call this%ftype_check(indis)
1160 call this%create_bndpkgs(bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
1169 write (this%iout,
'(1x,a)')
'NAMEFILE OPTIONS:'
1171 if (found%newton)
then
1172 write (this%iout,
'(4x,a)') &
1173 'NEWTON-RAPHSON method enabled for the model.'
1174 if (found%under_relaxation)
then
1175 write (this%iout,
'(4x,a,a)') &
1176 'NEWTON-RAPHSON UNDER-RELAXATION based on the bottom ', &
1177 'elevation of the model will be applied to the model.'
1181 if (found%print_input)
then
1182 write (this%iout,
'(4x,a)')
'STRESS PACKAGE INPUT WILL BE PRINTED '// &
1183 'FOR ALL MODEL STRESS PACKAGES'
1186 if (found%print_flows)
then
1187 write (this%iout,
'(4x,a)')
'PACKAGE FLOWS WILL BE PRINTED '// &
1188 'FOR ALL MODEL PACKAGES'
1191 if (found%save_flows)
then
1192 write (this%iout,
'(4x,a)') &
1193 'FLOWS WILL BE SAVED TO BUDGET FILE SPECIFIED IN OUTPUT CONTROL'
1196 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 memorylist_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_obs(this)
Calculate and save observations.
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 prt_obs_cr(obs, inobs)
Create a new PrtObsType object.
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, mempath, 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.
A 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.