39 character(len=LENBUDTXT),
dimension(NBDITEMS) ::
budtxt
51 integer(I4B),
pointer :: infmi => null()
52 integer(I4B),
pointer :: inmip => null()
53 integer(I4B),
pointer :: inmvt => null()
54 integer(I4B),
pointer :: inmst => null()
55 integer(I4B),
pointer :: inadv => null()
56 integer(I4B),
pointer :: indsp => null()
57 integer(I4B),
pointer :: inssm => null()
58 integer(I4B),
pointer :: inoc => null()
59 integer(I4B),
pointer :: nprp => null()
60 real(dp),
dimension(:),
pointer,
contiguous :: masssto => null()
61 real(dp),
dimension(:),
pointer,
contiguous :: massstoold => null()
62 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 ',
' ',
'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%events)
151 allocate (this%tracks)
154 call this%allocate_scalars(modelname)
159 this%filename = filename
160 this%name = modelname
161 this%macronym =
'PRT'
168 call mem_set_value(this%iprpak,
'PRINT_INPUT', input_mempath, &
170 call mem_set_value(this%iprflow,
'PRINT_FLOWS', input_mempath, &
172 call mem_set_value(this%ipakcb,
'SAVE_FLOWS', input_mempath, &
176 call this%create_lstfile(lst_fname, filename, found%list, &
177 'PARTICLE TRACKING MODEL (PRT)')
180 if (found%save_flows)
then
185 call this%create_packages()
188 if (this%iout > 0)
then
189 call this%log_namfile_options(found)
206 class(
bndtype),
pointer :: packobj
209 call this%dis%dis_df()
210 call this%fmi%fmi_df(this%dis, 1)
212 call this%budget%budget_df(
niunit_prt,
'MASS',
'M')
215 do ip = 1, this%bndlist%Count()
217 call packobj%bnd_df(this%dis%nodes, this%dis)
218 packobj%TsManager%iout = this%iout
219 packobj%TasManager%iout = this%iout
223 call this%allocate_arrays()
241 integer(I4B) :: ip, nprp
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%dis,
dhnoflo)
250 call this%budget%set_ibudcsv(this%oc%ibudcsv)
253 call this%tracks%select_events( &
254 this%oc%trackrelease, &
255 this%oc%trackfeatexit, &
256 this%oc%tracktimestep, &
257 this%oc%trackterminate, &
258 this%oc%trackweaksink, &
259 this%oc%trackusertime, &
260 this%oc%tracksubfexit, &
261 this%oc%trackdropped)
265 do ip = 1, this%bndlist%Count()
267 select type (packobj)
270 call packobj%prp_set_pointers(this%ibound, this%mip%izone)
271 call packobj%bnd_ar()
272 call packobj%bnd_ar()
273 if (packobj%itrkout > 0)
then
274 call this%tracks%init_file( &
278 if (packobj%itrkcsv > 0)
then
279 call this%tracks%init_file( &
285 call packobj%bnd_ar()
290 if (this%oc%itrkout > 0) &
291 call this%tracks%init_file(this%oc%itrkout)
292 if (this%oc%itrkcsv > 0) &
293 call this%tracks%init_file(this%oc%itrkcsv, csv=.true.)
296 select type (dis => this%dis)
300 events=this%events, &
301 izone=this%mip%izone, &
302 flowja=this%flowja, &
303 porosity=this%mip%porosity, &
304 retfactor=this%mip%retfactor, &
305 tracktimes=this%oc%tracktimes)
310 events=this%events, &
311 izone=this%mip%izone, &
312 flowja=this%flowja, &
313 porosity=this%mip%porosity, &
314 retfactor=this%mip%retfactor, &
315 tracktimes=this%oc%tracktimes)
320 call this%events%subscribe(this%tracks)
323 if (this%oc%dump_event_trace) this%tracks%iout = 0
332 class(
bndtype),
pointer :: packobj
339 if (this%inoc > 0)
call this%oc%oc_rp()
340 do ip = 1, this%bndlist%Count()
342 call packobj%bnd_rp()
352 class(
bndtype),
pointer :: packobj
354 integer(I4B) :: irestore
355 integer(I4B) :: ip, n, i
362 do n = 1, this%dis%nodes
363 this%massstoold(n) = this%masssto(n)
367 call this%fmi%fmi_ad()
370 do ip = 1, this%bndlist%Count()
372 call packobj%bnd_ad()
374 call packobj%bnd_ck()
384 do i = 1, this%dis%nja
385 this%flowja(i) =
dzero
390 subroutine prt_cq(this, icnvg, isuppress_output)
397 integer(I4B),
intent(in) :: icnvg
398 integer(I4B),
intent(in) :: isuppress_output
402 class(
bndtype),
pointer :: packobj
416 do i = 1, this%dis%nja
417 this%flowja(i) = this%flowja(i) * tled
421 call this%prt_cq_sto()
424 do ip = 1, this%bndlist%Count()
426 call packobj%bnd_cq(this%masssto, this%flowja)
444 class(
bndtype),
pointer :: packobj
447 integer(I4B) :: idiag
448 integer(I4B) :: istatus
456 do n = 1, this%dis%nodes
457 this%masssto(n) =
dzero
458 this%ratesto(n) =
dzero
460 do ip = 1, this%bndlist%Count()
462 select type (packobj)
464 do np = 1, packobj%nparticles
465 istatus = packobj%particles%istatus(np)
470 this%masssto(n) = this%masssto(n) +
done
475 do n = 1, this%dis%nodes
476 rate = -(this%masssto(n) - this%massstoold(n)) * tled
477 this%ratesto(n) = rate
478 idiag = this%dis%con%ia(n)
479 this%flowja(idiag) = this%flowja(idiag) + rate
489 subroutine prt_bd(this, icnvg, isuppress_output)
495 integer(I4B),
intent(in) :: icnvg
496 integer(I4B),
intent(in) :: isuppress_output
499 class(
bndtype),
pointer :: packobj
507 call this%budget%reset()
509 call this%budget%addentry(rin, rout,
delt,
budtxt(1), &
510 isuppress_output,
' PRT')
511 do ip = 1, this%bndlist%Count()
513 call packobj%bnd_bd(this%budget)
523 integer(I4B) :: idvsave
524 integer(I4B) :: idvprint
525 integer(I4B) :: icbcfl
526 integer(I4B) :: icbcun
527 integer(I4B) :: ibudfl
528 integer(I4B) :: ipflag
537 if (this%oc%oc_save(
'CONCENTRATION')) idvsave = 1
538 if (this%oc%oc_print(
'CONCENTRATION')) idvprint = 1
539 if (this%oc%oc_save(
'BUDGET')) icbcfl = 1
540 if (this%oc%oc_print(
'BUDGET')) ibudfl = 1
541 icbcun = this%oc%oc_save_unit(
'BUDGET')
545 ibudfl = this%oc%set_print_flag(
'BUDGET', 1,
endofperiod)
546 idvprint = this%oc%set_print_flag(
'CONCENTRATION', 1,
endofperiod)
549 call this%prt_ot_flow(icbcfl, ibudfl, icbcun)
552 call this%prt_ot_dv(idvsave, idvprint, ipflag)
555 call this%prt_ot_bdsummary(ibudfl, ipflag)
559 if (ipflag == 1)
call tdis_ot(this%iout)
566 integer(I4B),
intent(in) :: icbcfl
567 integer(I4B),
intent(in) :: ibudfl
568 integer(I4B),
intent(in) :: icbcun
569 class(
bndtype),
pointer :: packobj
573 call this%prt_ot_saveflow(this%dis%nja, this%flowja, icbcfl, icbcun)
574 do ip = 1, this%bndlist%Count()
576 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=0, icbcun=icbcun)
580 do ip = 1, this%bndlist%Count()
582 call packobj%bnd_ot_package_flows(icbcfl=icbcfl, ibudfl=0)
586 call this%prt_ot_printflow(ibudfl, this%flowja)
587 do ip = 1, this%bndlist%Count()
589 call packobj%bnd_ot_model_flows(icbcfl=icbcfl, ibudfl=ibudfl, icbcun=0)
593 do ip = 1, this%bndlist%Count()
595 call packobj%bnd_ot_package_flows(icbcfl=0, ibudfl=ibudfl)
603 integer(I4B),
intent(in) :: nja
604 real(DP),
dimension(nja),
intent(in) :: flowja
605 integer(I4B),
intent(in) :: icbcfl
606 integer(I4B),
intent(in) :: icbcun
608 integer(I4B) :: ibinun
611 if (this%ipakcb < 0)
then
613 elseif (this%ipakcb == 0)
then
618 if (icbcfl == 0) ibinun = 0
621 if (ibinun /= 0)
then
622 call this%dis%record_connection_array(flowja, ibinun, this%iout)
633 integer(I4B),
intent(in) :: ibudfl
634 real(DP),
intent(inout),
dimension(:) :: flowja
636 character(len=LENBIGLINE) :: line
637 character(len=30) :: tempstr
638 integer(I4B) :: n, ipos, m
641 character(len=*),
parameter :: fmtiprflow = &
642 "(/,4x,'CALCULATED INTERCELL FLOW &
643 &FOR PERIOD ', i0, ' STEP ', i0)"
646 if (ibudfl /= 0 .and. this%iprflow > 0)
then
647 write (this%iout, fmtiprflow)
kper,
kstp
648 do n = 1, this%dis%nodes
650 call this%dis%noder_to_string(n, tempstr)
651 line = trim(tempstr)//
':'
652 do ipos = this%dis%con%ia(n) + 1, this%dis%con%ia(n + 1) - 1
653 m = this%dis%con%ja(ipos)
654 call this%dis%noder_to_string(m, tempstr)
655 line = trim(line)//
' '//trim(tempstr)
657 write (tempstr,
'(1pg15.6)') qnm
658 line = trim(line)//
' '//trim(adjustl(tempstr))
660 write (this%iout,
'(a)') trim(line)
669 integer(I4B),
intent(in) :: idvsave
670 integer(I4B),
intent(in) :: idvprint
671 integer(I4B),
intent(inout) :: ipflag
673 class(
bndtype),
pointer :: packobj
677 do ip = 1, this%bndlist%Count()
679 call packobj%bnd_ot_dv(idvsave, idvprint)
683 call this%oc%oc_ot(ipflag)
692 integer(I4B),
intent(in) :: ibudfl
693 integer(I4B),
intent(inout) :: ipflag
695 class(
bndtype),
pointer :: packobj
699 do ip = 1, this%bndlist%Count()
701 call packobj%bnd_ot_bdsummary(
kstp,
kper, this%iout, ibudfl)
705 call this%budget%finalize_step(
delt)
706 if (ibudfl /= 0)
then
709 call this%budget%budget_ot(
kstp,
kper, this%iout)
713 call this%budget%writecsv(
totim)
729 class(
bndtype),
pointer :: packobj
736 call this%dis%dis_da()
737 call this%fmi%fmi_da()
738 call this%mip%mip_da()
739 call this%budget%budget_da()
741 deallocate (this%dis)
742 deallocate (this%fmi)
743 deallocate (this%mip)
744 deallocate (this%budget)
753 do ip = 1, this%bndlist%Count()
755 call packobj%bnd_da()
774 call this%tracks%destroy()
775 deallocate (this%events)
776 deallocate (this%tracks)
778 call this%NumericalModelType%model_da()
785 character(len=*),
intent(in) :: modelname
788 call this%NumericalModelType%allocate_scalars(modelname)
817 this%nja = this%dis%nja
818 call this%NumericalModelType%allocate_arrays()
822 'MASSSTO', this%memoryPath)
824 'MASSSTOOLD', this%memoryPath)
826 'RATESTO', this%memoryPath)
828 call mem_allocate(this%x, this%dis%nodes,
'X', this%memoryPath)
829 call mem_allocate(this%rhs, this%dis%nodes,
'RHS', this%memoryPath)
830 call mem_allocate(this%ibound, this%dis%nodes,
'IBOUND', this%memoryPath)
831 do n = 1, this%dis%nodes
832 this%masssto(n) =
dzero
833 this%massstoold(n) =
dzero
834 this%ratesto(n) =
dzero
850 character(len=*),
intent(in) :: filtyp
851 character(len=LINELENGTH) :: errmsg
852 integer(I4B),
intent(in) :: ipakid
853 integer(I4B),
intent(in) :: ipaknum
854 character(len=*),
intent(in) :: pakname
855 character(len=*),
intent(in) :: mempath
856 integer(I4B),
intent(in) :: inunit
857 integer(I4B),
intent(in) :: iout
859 class(
bndtype),
pointer :: packobj
860 class(
bndtype),
pointer :: packobj2
866 call prp_create(packobj, ipakid, ipaknum, inunit, iout, &
867 this%name, pakname, mempath, this%fmi)
869 call api_create(packobj, ipakid, ipaknum, inunit, iout, &
870 this%name, pakname, mempath)
872 write (errmsg, *)
'Invalid package type: ', filtyp
879 do ip = 1, this%bndlist%Count()
881 if (packobj2%packName == pakname)
then
882 write (errmsg,
'(a,a)')
'Cannot create package. Package name '// &
883 'already exists: ', trim(pakname)
894 integer(I4B),
intent(in) :: indis
896 character(len=LINELENGTH) :: errmsg
900 write (errmsg,
'(1x,a)') &
901 'Discretization (DIS6, DISV6, or DISU6) package not specified.'
904 if (this%inmip == 0)
then
905 write (errmsg,
'(1x,a)') &
906 'Model input (MIP6) package not specified.'
911 write (errmsg,
'(1x,a)')
'One or more required package(s) not specified.'
926 integer(I4B) :: np, ip
927 class(
bndtype),
pointer :: packobj
935 call create_particle(particle)
938 do ip = 1, this%bndlist%Count()
940 select type (packobj)
943 do np = 1, packobj%nparticles
945 call packobj%particles%get(particle, this%id, iprp, np)
955 call packobj%particles%put(particle, np)
957 if (particle%istatus >
active) cycle
960 if (particle%trelease >=
totimc)
call this%method%release(particle)
966 tmax = particle%tstop
971 call this%method%apply(particle, tmax)
980 if (particle%istatus <=
active .and. &
981 (particle%ttrack == particle%tstop .or. &
983 call this%method%terminate(particle, status=
term_timeout)
985 call packobj%particles%put(particle, np)
989 call particle%destroy()
990 deallocate (particle)
1001 integer(I4B),
dimension(:),
allocatable,
intent(inout) :: bndpkgs
1003 pointer,
intent(inout) :: pkgtypes
1005 pointer,
intent(inout) :: pkgnames
1007 pointer,
intent(inout) :: mempaths
1008 integer(I4B),
dimension(:),
contiguous, &
1009 pointer,
intent(inout) :: inunits
1011 integer(I4B) :: ipakid, ipaknum
1012 character(len=LENFTYPE) :: pkgtype, bndptype
1013 character(len=LENPACKAGENAME) :: pkgname
1014 character(len=LENMEMPATH) :: mempath
1015 integer(I4B),
pointer :: inunit
1018 if (
allocated(bndpkgs))
then
1022 do n = 1,
size(bndpkgs)
1023 pkgtype = pkgtypes(bndpkgs(n))
1024 pkgname = pkgnames(bndpkgs(n))
1025 mempath = mempaths(bndpkgs(n))
1026 inunit => inunits(bndpkgs(n))
1028 if (bndptype /= pkgtype)
then
1033 call this%package_create(pkgtype, ipakid, ipaknum, pkgname, mempath, &
1036 ipaknum = ipaknum + 1
1040 deallocate (bndpkgs)
1065 pointer :: pkgtypes => null()
1067 pointer :: pkgnames => null()
1069 pointer :: mempaths => null()
1070 integer(I4B),
dimension(:),
contiguous, &
1071 pointer :: inunits => null()
1072 character(len=LENMEMPATH) :: model_mempath
1073 character(len=LENFTYPE) :: pkgtype
1074 character(len=LENPACKAGENAME) :: pkgname
1075 character(len=LENMEMPATH) :: mempath
1076 integer(I4B),
pointer :: inunit
1077 integer(I4B),
dimension(:),
allocatable :: bndpkgs
1079 integer(I4B) :: indis = 0
1080 character(len=LENMEMPATH) :: mempathmip =
''
1081 character(len=LENMEMPATH) :: mempathfmi =
''
1087 call mem_setptr(pkgtypes,
'PKGTYPES', model_mempath)
1088 call mem_setptr(pkgnames,
'PKGNAMES', model_mempath)
1089 call mem_setptr(mempaths,
'MEMPATHS', model_mempath)
1090 call mem_setptr(inunits,
'INUNITS', model_mempath)
1092 do n = 1,
size(pkgtypes)
1094 pkgtype = pkgtypes(n)
1095 pkgname = pkgnames(n)
1096 mempath = mempaths(n)
1097 inunit => inunits(n)
1100 select case (pkgtype)
1103 call dis_cr(this%dis, this%name, mempath, indis, this%iout)
1106 call disv_cr(this%dis, this%name, mempath, indis, this%iout)
1109 call disu_cr(this%dis, this%name, mempath, indis, this%iout)
1112 mempathmip = mempath
1115 mempathfmi = mempath
1120 bndpkgs(
size(bndpkgs)) = n
1122 call pstop(1,
"Unrecognized package type: "//pkgtype)
1135 call mip_cr(this%mip, this%name, mempathmip, this%inmip, this%iout, this%dis)
1136 call fmi_cr(this%fmi, this%name, mempathfmi, this%infmi, this%iout)
1137 call oc_cr(this%oc, this%name, this%inoc, this%iout)
1140 call this%ftype_check(indis)
1143 call this%create_bndpkgs(bndpkgs, pkgtypes, pkgnames, mempaths, inunits)
1152 write (this%iout,
'(1x,a)')
'NAMEFILE OPTIONS:'
1154 if (found%print_input)
then
1155 write (this%iout,
'(4x,a)')
'STRESS PACKAGE INPUT WILL BE PRINTED '// &
1156 'FOR ALL MODEL STRESS PACKAGES'
1159 if (found%print_flows)
then
1160 write (this%iout,
'(4x,a)')
'PACKAGE FLOWS WILL BE PRINTED '// &
1161 'FOR ALL MODEL PACKAGES'
1164 if (found%save_flows)
then
1165 write (this%iout,
'(4x,a)') &
1166 'FLOWS WILL BE SAVED TO BUDGET FILE SPECIFIED IN OUTPUT CONTROL'
1169 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, mempath)
@ 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.
@, public release
particle was released
@, public terminate
particle terminated
@ term_timeout
terminated at stop time or end of simulation
@ term_unreleased
terminated permanently unreleased
subroutine create_particle(particle)
Create a new particle.
Particle track output module.
subroutine, public fmi_cr(fmiobj, name_model, input_mempath, 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 scalars.
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, input_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
logical(lgp), pointer, public endofsimulation
flag indicating end of simulation
subroutine, public tdis_ot(iout)
Print simulation time.
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
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.
Output file containing all or some particle pathlines.
Manages particle track output (logging/writing).
Particle tracking (PRT) model.
@ brief Output control for particle tracking models
Particle release point (PRP) package.