chombo-discharge
|
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity field. More...
#include <CD_TracerParticleSolver.H>
Public Member Functions | |
TracerParticleSolver () | |
Default constructor. | |
TracerParticleSolver (const TracerParticleSolver &a_other)=delete | |
Disallowed constructor. More... | |
TracerParticleSolver (const TracerParticleSolver &&a_other)=delete | |
Disallowed move constructor. More... | |
TracerParticleSolver (const RefCountedPtr< AmrMesh > &a_amr, const RefCountedPtr< ComputationalGeometry > a_compGeom) | |
Full contructor. More... | |
TracerParticleSolver & | operator= (const TracerParticleSolver &a_other)=delete |
Disallowed assignment operator. More... | |
TracerParticleSolver & | operator= (const TracerParticleSolver &&a_other)=delete |
Disallowed move assignment operator. More... | |
virtual | ~TracerParticleSolver () |
Destructor. | |
virtual void | allocate () |
Allocate storage for this solver. | |
virtual void | registerOperators () const |
Register operators needed for AMR core functionality. | |
virtual void | setAmr (const RefCountedPtr< AmrMesh > &a_amrMesh) |
Set AmrMesh. More... | |
virtual void | setComputationalGeometry (const RefCountedPtr< ComputationalGeometry > &a_compGeom) |
Set the computational geometry. More... | |
virtual void | setName (const std::string &a_name) noexcept |
Set the solver name. More... | |
virtual void | setVolumeScale (const bool a_scale) noexcept |
Turn on/off volume scaling. More... | |
virtual void | setRealm (const std::string &a_realm) |
Set the solver realm. More... | |
virtual void | setPhase (const phase::which_phase &a_phase) |
Set the solver phase. More... | |
virtual void | setTime (const int a_step, const Real a_time, const Real a_dt) |
Set the time for this solver. More... | |
virtual void | setVelocity (const EBAMRCellData &a_velocityField) |
Set the tracer particle velocity field. More... | |
virtual void | preRegrid (const int a_lbase, const int a_oldFinestLevel) |
Perform pre-regrid operations. More... | |
virtual void | regrid (const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) |
Regrid this solver. More... | |
virtual void | remap () |
Remap particles. | |
virtual void | setDeposition (const DepositionType a_deposition) noexcept |
Set deposition method. More... | |
virtual void | deposit (EBAMRCellData &a_phi) const noexcept |
Deposit particle weight on mesh. More... | |
virtual void | interpolateWeight (const EBAMRCellData &a_scalar) noexcept |
Interpolate a scalar field onto the particle weight. | |
virtual void | interpolateVelocities () |
Interpolate particles velocities. | |
virtual void | parseOptions () |
Parse solver options. | |
virtual void | parseRuntimeOptions () |
Parse solver run-time options. | |
virtual void | writePlotFile () |
Write plot file. More... | |
virtual int | getNumberOfPlotVariables () const |
Get the number of plot variables. More... | |
virtual Vector< std::string > | getPlotVariableNames () const |
Get plot variable names. More... | |
virtual void | writePlotData (LevelData< EBCellFAB > &a_output, int &a_comp, const std::string a_outputRealm, const int a_level) const noexcept |
Write plot data. More... | |
virtual Real | computeDt () const |
Write checkpoint data into HDF5 file. @paramo[out] a_handle HDF5 file. More... | |
virtual ParticleContainer< P > & | getParticles () |
Get all particles. More... | |
virtual const ParticleContainer< P > & | getParticles () const |
Get all particles. Const version. More... | |
const EBAMRCellData & | getVelocityField () const |
Return the velocity field. More... | |
Protected Member Functions | |
void | parseDeposition () |
Parse deposition method. | |
void | parsePlotVariables () |
Parse plot variables. | |
void | parseVerbosity () |
Parse solver verbosity. | |
template<typename T , const Real &(T::*)() const particleScalarFunction> | |
void | depositParticles (EBAMRCellData &a_phi, const ParticleContainer< T > &a_particles, const DepositionType a_baseDeposition, const CoarseFineDeposition a_coarseFineDeposition) const noexcept |
Generic particle deposition method for putting a scalar field onto the mesh. More... | |
virtual void | writeData (LevelData< EBCellFAB > &a_output, int &a_comp, const EBAMRCellData &a_data, const std::string a_outputRealm, const int a_level, const bool a_interpToCentroids, const bool a_interpGhost) const noexcept |
Write data to output. Convenience function. More... | |
Protected Attributes | |
RefCountedPtr< AmrMesh > | m_amr |
Handle to AMR mesh. | |
RefCountedPtr< ComputationalGeometry > | m_computationalGeometry |
Handle to computational geometry. | |
DepositionType | m_deposition |
Deposition type when depositing particles to grid. | |
DepositionType | m_interpolation |
Deposition type when interpolating to particles. | |
CoarseFineDeposition | m_coarseFineDeposition |
Coarse-fine deposition strategy. | |
std::string | m_realm |
Realm where this solver lives. | |
std::string | m_name |
Solver name. | |
std::string | m_className |
Class name. | |
phase::which_phase | m_phase |
Phase where this solver lives. | |
Real | m_dt |
Time step. | |
Real | m_time |
Time. | |
int | m_timeStep |
Time step. | |
int | m_verbosity |
Verbosity level. | |
int | m_haloBuffer |
Halo buffer for particle deposition. More... | |
bool | m_plotWeight |
Hook for adding weight to plot file. | |
bool | m_plotVelocity |
Hook for adding velocity field to plot file. | |
bool | m_volumeScale |
Do volumetric scaling when depositing (or not). | |
EBAMRCellData | m_velocityField |
Mesh-based velocity field. Must be set through setVelocity. | |
ParticleContainer< P > | m_particles |
Computational particles. | |
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity field.
The user can set the velocity field through public member functions. This class is templated so the user can switch tracer particle implementations.
This is a single-phase solver – i.e. the particles only live on one of the phases. Extensions to multiphase is certainly possible.
The template requirements on the particle type P are: 1) It must contain a function RealVect& position() (derived from BinItem) 2) It must contain a function const Real& weight() const. 3) It must contain a function RealVect& velocity().
|
delete |
Disallowed constructor.
[in] | a_other | Other solver. |
|
delete |
Disallowed move constructor.
[in] | a_other | Other solver. |
|
inline |
Full contructor.
[in] | a_amr | Handle to AmrMesh. |
[in] | a_compGeom | Computational geometry. |
|
virtual |
Write checkpoint data into HDF5 file. @paramo[out] a_handle HDF5 file.
[in] | a_level | Grid level |
Read checkpoint data from HDF5 file.
[in] | a_handle | HDF5 handle. |
[in] | const | int a_level Grid level |
Compute dt = dx/max(v_x,v_y, v_z) minimized over all particles
|
inlinevirtualnoexcept |
Deposit particle weight on mesh.
[out] | a_phi | Deposited weight. |
|
protectednoexcept |
Generic particle deposition method for putting a scalar field onto the mesh.
[out] | a_phi | Deposited quantity. |
[out] | a_particles | Particles to be deposited. |
[in] | a_baseDeposition | Base deposition method. |
[in] | a_coarseFineDeposition | Coarse-fine deposition strategy. |
|
inlinevirtual |
Get the number of plot variables.
|
inlinevirtual |
Get all particles.
|
inlinevirtual |
Get all particles. Const version.
|
inlinevirtual |
Get plot variable names.
|
inline |
Return the velocity field.
|
delete |
Disallowed move assignment operator.
[in] | a_other | Other solver. |
|
delete |
Disallowed assignment operator.
[in] | a_other | Other solver. |
|
inlinevirtual |
Perform pre-regrid operations.
[in] | a_lbase | Coarsest level that changed during regrid. |
[in] | a_oldFinestLevel | Finest grid level before the regrid operation. |
|
inlinevirtual |
Regrid this solver.
[in] | a_lmin | Coarsest level where grids did not change. |
[in] | a_oldFinestLevel | Finest AMR level before the regrid. |
[in] | a_newFinestLevel | Finest AMR level after the regrid. |
|
inlinevirtual |
|
inlinevirtual |
Set the computational geometry.
[in] | a_compGeom | Computational geometry |
|
inlinevirtualnoexcept |
Set deposition method.
[in] | a_deposition | Deposition method |
|
inlinevirtualnoexcept |
Set the solver name.
[in] | a_name | Solver name |
|
inlinevirtual |
Set the solver phase.
[in] | a_phase | Phase |
|
inlinevirtual |
Set the solver realm.
[in] | a_realm | Realm name. |
|
virtual |
Set the time for this solver.
[in] | a_step | Time step number |
[in] | a_time | Time (in seconds) |
[in] | a_dt | Time step increment |
|
inlinevirtual |
Set the tracer particle velocity field.
[in] | a_velocityField | Velocity field. |
|
inlinevirtualnoexcept |
Turn on/off volume scaling.
[in] | a_scale | Volume scale or not. |
|
protectedvirtualnoexcept |
Write data to output. Convenience function.
[in,out] | a_output | Output data holder. |
[in,out] | a_icomp | Starting component where this solver begins writing the output. |
[in] | a_data | Data to write. |
[in] | a_outputRealm | Realm where a_output belongs |
[in] | a_level | Grid level |
[in] | a_interpToCentroids | If true, a_data will be interpolated to cell centroids before writing to a_output. |
[in] | a_interpGhost | If true, interpolate ghost cells |
|
inlinevirtualnoexcept |
Write plot data.
[in,out] | a_output | Output data holder. |
[in,out] | a_icomp | Starting component where this solver begins writing the output. |
[in] | a_outputRealm | Realm where a_output belongs |
[in] | a_level | Grid level |
|
inlinevirtual |
Write plot file.
The name of the plot file is m_name.stepXXXXX.DIM.hdf5
|
protected |
Halo buffer for particle deposition.
Used when fetching particles around the refinement boundary.