![]() |
MODFLOW 6
version 6.8.0.dev0
USGS Modular Hydrologic Model
|
Particle track output module. More...
Data Types | |
| type | particletrackeventselectiontype |
| Selection of particle events. More... | |
| type | particletrackstype |
| Particle track output manager. Handles printing as well as writing to files. One output unit can be configured for printing. Multiple files can be configured for writing, with each file optionally associated with a PRP package or with the full model. Events can be filtered by type, so that only certain event types are printed or written to files. Particle events are buffered in memory or in a scratch file, flushed to disk only when the time step is successfully solved for the last time (there may be multiple solves per time step, depending on ATS and Picard options). More... | |
Functions/Subroutines | |
| subroutine | init_file (this, iun, csv, iprp) |
| Initialize a binary or CSV output file. More... | |
| subroutine | init_buffer (this, scratch) |
| Initialize the event buffer strategy. More... | |
| subroutine | destroy (this) |
| Destroy the particle track manager. More... | |
| subroutine | expand_files (this, increment) |
| Grow the array of track files. More... | |
| subroutine | select_events (this, release, featexit, timestep, terminate, weaksink, usertime, subfexit, dropped) |
| Pick events to track. More... | |
| logical function | is_selected (this, event) |
| Check if a given event code is selected for tracking. More... | |
| subroutine | buffer_event (this, particle, event) |
| Buffer an event for deferred write. More... | |
| subroutine | flush_buffer (this) |
| Flush the event buffer to disk. More... | |
| subroutine | discard_buffer (this) |
| Discard buffered events without writing. More... | |
| logical(lgp) function, public | add_particle_event (context, particle, event) |
| Add a particle event to be written to eligible files and printed to an output file unit if requested. This function should be subscribed as an event handler to particle event dispatchers. Events are buffered to be written to output files upon successful completion of a time step when the framework OT hook is executed. More... | |
Variables | |
| character(len= *), parameter, public | trackheader = 'kper,kstp,imdl,iprp,irpt,ilay,icell,izone,istatus,ireason,trelease,t,x,y,z,name' |
| character(len= *), parameter, public | trackdtypes = '<i4,<i4,<i4,<i4,<i4,<i4,<i4,<i4,<i4,<i4,<f8,<f8,<f8,<f8,<f8,|S40' |
Each particle's track consists of events reported as the particle is advected through the model domain. Events are snapshots of particle state, along with optional metadata, at a particular moment in time.
Particles have no ID property. A particle can be uniquely identified by the unique combination of its release attributes (model, package, position, and time). This is possible because only one particle may be released from a given point at a given time.
This module consumes particle events and is responsible for writing them to one or more track files, binary or CSV, and for logging the events if requested. Each track file is associated with either a PRP package or with the full PRT model (there may only be 1 such latter).
Events can be buffered in memory or in a scratch file, and in either case are flushed to disk only when a time step successfully finishes.
| logical(lgp) function, public particletracksmodule::add_particle_event | ( | class(*), pointer | context, |
| type(particletype), intent(inout), pointer | particle, | ||
| class(particleeventtype), intent(in), pointer | event | ||
| ) |
| subroutine particletracksmodule::buffer_event | ( | class(particletrackstype) | this, |
| type(particletype), intent(in), pointer | particle, | ||
| class(particleeventtype), intent(in), pointer | event | ||
| ) |
Definition at line 216 of file ParticleTracks.f90.
| subroutine particletracksmodule::destroy | ( | class(particletrackstype) | this | ) |
Definition at line 128 of file ParticleTracks.f90.
| subroutine particletracksmodule::discard_buffer | ( | class(particletrackstype) | this | ) |
Definition at line 241 of file ParticleTracks.f90.
| subroutine particletracksmodule::expand_files | ( | class(particletrackstype) | this, |
| integer(i4b), intent(in), optional | increment | ||
| ) |
Definition at line 134 of file ParticleTracks.f90.
| subroutine particletracksmodule::flush_buffer | ( | class(particletrackstype) | this | ) |
Definition at line 235 of file ParticleTracks.f90.
| subroutine particletracksmodule::init_buffer | ( | class(particletrackstype) | this, |
| logical(lgp), intent(in) | scratch | ||
| ) |
Definition at line 115 of file ParticleTracks.f90.
| subroutine particletracksmodule::init_file | ( | class(particletrackstype) | this, |
| integer(i4b), intent(in) | iun, | ||
| logical(lgp), intent(in), optional | csv, | ||
| integer(i4b), intent(in), optional | iprp | ||
| ) |
Definition at line 97 of file ParticleTracks.f90.
| logical function particletracksmodule::is_selected | ( | class(particletrackstype), intent(inout) | this, |
| class(particleeventtype), intent(in) | event | ||
| ) |
| subroutine particletracksmodule::select_events | ( | class(particletrackstype) | this, |
| logical(lgp), intent(in) | release, | ||
| logical(lgp), intent(in) | featexit, | ||
| logical(lgp), intent(in) | timestep, | ||
| logical(lgp), intent(in) | terminate, | ||
| logical(lgp), intent(in) | weaksink, | ||
| logical(lgp), intent(in) | usertime, | ||
| logical(lgp), intent(in) | subfexit, | ||
| logical(lgp), intent(in) | dropped | ||
| ) |
Definition at line 159 of file ParticleTracks.f90.
| character(len=*), parameter, public particletracksmodule::trackdtypes = '<i4,<i4,<i4,<i4,<i4,<i4,<i4,<i4,<i4,<i4,<f8,<f8,<f8,<f8,<f8,|S40' |
Definition at line 50 of file ParticleTracks.f90.
| character(len=*), parameter, public particletracksmodule::trackheader = 'kper,kstp,imdl,iprp,irpt,ilay,icell,izone,istatus,ireason,trelease,t,x,y,z,name' |
Definition at line 46 of file ParticleTracks.f90.