chombo-discharge
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Physics::ItoKMC::ItoKMCTagger< S > Class Template Referenceabstract

Abstract CellTagger for the Ito-KMC-Poisson physics module. More...

#include <CD_ItoKMCTagger.H>

Inheritance diagram for Physics::ItoKMC::ItoKMCTagger< S >:
Inheritance graph
[legend]
Collaboration diagram for Physics::ItoKMC::ItoKMCTagger< S >:
Collaboration graph
[legend]

Public Member Functions

 ItoKMCTagger ()
 Weak constructor. User MUST subsequently call the define function.
 
 ItoKMCTagger (const RefCountedPtr< ItoKMCPhysics > &a_physics, const RefCountedPtr< S > &a_timeStepper, const RefCountedPtr< AmrMesh > &a_amr) noexcept
 Full constructor.
 
virtual ~ItoKMCTagger () noexcept
 Destructor.
 
virtual void define (const RefCountedPtr< ItoKMCPhysics > &a_physics, const RefCountedPtr< S > &a_timeStepper, const RefCountedPtr< AmrMesh > &a_amr) noexcept
 Define function.
 
virtual int getNumberOfPlotVariables () const noexcept override
 Get number of plot variables that will be written to file (by Driver).
 
virtual Vector< std::stringgetPlotVariableNames () const noexcept override
 Get plot variable names.
 
virtual void writePlotData (LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string &a_outputRealm, const int a_level) const noexcept override
 Write plot data.
 
virtual void computeTagFields () const noexcept=0
 Compute tagging fields.
 
virtual void parseOptions () override=0
 Parse class options.
 
virtual void parseRuntimeOptions () override=0
 Parse run-time configurable class options.
 
virtual void regrid () noexcept override
 Regrid this class. Note that there is no preRegrid method.
 
virtual bool tagCells (EBAMRTags &a_tags) noexcept override
 Tag cells for refinement and coarsening.
 
virtual void setPhase (const phase::which_phase a_phase) noexcept
 Set the phase where we do the tagging.
 
virtual Vector< EBAMRCellData > & getTagFields () noexcept
 Get the tagging fields (mutable reference).
 
- Public Member Functions inherited from CellTagger
 CellTagger ()
 Weak constructor (does nothing)
 
virtual ~CellTagger ()
 Destructor (does nothing).
 
virtual void preRegrid () noexcept
 Pre-regrid function for cell-tagger.
 
virtual void prePlot () const noexcept
 Perform pre-plotting operations (if necessary)
 
virtual int getBuffer () const
 Get tag buffer.
 

Protected Member Functions

virtual void tagCellsBox (DenseIntVectSet &a_refinedCells, DenseIntVectSet &a_coarsenedCells, const Vector< EBCellFAB * > &a_tagFields, const Vector< EBCellFAB * > &a_gradTagFields, const int a_lvl, const DataIndex a_dit, const Box a_box, const EBISBox &a_ebisbox, const Real a_time, const Real a_dx, const RealVect a_probLo) const noexcept
 Per-box refinement tagging routine.
 
virtual bool coarsenCell (const RealVect &a_pos, const Real a_time, const Real a_dx, const int a_lvl, const Vector< Real > &a_tagFields, const Vector< RealVect > &a_gradTagFields) const noexcept=0
 Determine if a particular cell should be coarsened or not.
 
virtual bool refineCell (const RealVect &a_pos, const Real a_time, const Real a_dx, const int a_lvl, const Vector< Real > &a_tagFields, const Vector< RealVect > &a_gradTagFields) const noexcept=0
 Determine if a particular cell should be refined or not.
 
- Protected Member Functions inherited from CellTagger
bool insideTagBox (const RealVect &a_pos) const
 Check if a point is inside a tagging box.
 
int getManualRefinementLevel (const RealVect &a_pos) const
 Get the specified level for this position when doing manual refinement.
 
virtual void parseTagBoxes ()
 Parse boxes.
 
virtual void parseRefinementBoxes ()
 Parse refinement boxes.
 
virtual void parseBuffer ()
 Parse refinement buffer.
 
virtual void parseVerbosity ()
 Parse the verbosity from the input file or command line.
 

Protected Attributes

bool m_isDefined
 Defined or not.
 
bool m_plotData
 Plot data or not.
 
std::string m_realm
 Realm where data is allocated.
 
phase::which_phase m_phase
 Phase where data is allocated.
 
RefCountedPtr< ItoKMCPhysicsm_physics
 Physics implementation.
 
RefCountedPtr< Sm_timeStepper
 Time stepper.
 
RefCountedPtr< AmrMeshm_amr
 AmrMesh. Needed for allocating memory and things like that.
 
int m_numTagFields
 Number of tagging fields.
 
Vector< EBAMRCellDatam_tagFields
 Tagging fields.
 
Vector< EBAMRCellDatam_gradTagFields
 Gradient of tagging fields.
 
- Protected Attributes inherited from CellTagger
std::string m_name
 Cell tagger class name (default is CellTagger).
 
int m_verbosity
 Class verbosity.
 
int m_buffer
 Tag buffer. Grow tags by this amount (finest level only)
 
Vector< RealBoxm_tagBoxes
 Boxes that can be used to restrict tagging.
 
std::vector< std::pair< RealBox, int > > m_refBoxes
 Refinement boxes for adding manual refinement.
 

Detailed Description

template<typename S>
class Physics::ItoKMC::ItoKMCTagger< S >

Abstract CellTagger for the Ito-KMC-Poisson physics module.

The template parameter S is the concrete ItoKMCStepper type. Subclasses implement computeTagFields(), refineCell(), and coarsenCell() to define the refinement criterion. Tag fields are computed on the Primal realm and live on the phase set by setPhase().

Constructor & Destructor Documentation

◆ ItoKMCTagger()

template<typename S >
ItoKMCTagger::ItoKMCTagger ( const RefCountedPtr< ItoKMCPhysics > &  a_physics,
const RefCountedPtr< S > &  a_timeStepper,
const RefCountedPtr< AmrMesh > &  a_amr 
)
noexcept

Full constructor.

Parameters
[in]a_physicsPhysics implementation.
[in]a_timeStepperTime integrator.
[in]a_amrReference to AmrMesh

Member Function Documentation

◆ coarsenCell()

template<typename S >
virtual bool Physics::ItoKMC::ItoKMCTagger< S >::coarsenCell ( const RealVect a_pos,
const Real  a_time,
const Real  a_dx,
const int  a_lvl,
const Vector< Real > &  a_tagFields,
const Vector< RealVect > &  a_gradTagFields 
) const
protectedpure virtualnoexcept

Determine if a particular cell should be coarsened or not.

Parameters
[in]a_posPhysical position.
[in]a_timeCurrent time
[in]a_dxGrid resolution
[in]a_lvlGrid level
[in]a_tagFieldsCell tagging fields
[in]a_gradTagFieldsGradient of cell tagging fields
Returns
Return value

Implemented in Physics::ItoKMC::ItoKMCStreamerTagger< S >, and Physics::ItoKMC::ItoKMCFieldTagger< S >.

◆ computeTagFields()

template<typename S >
virtual void Physics::ItoKMC::ItoKMCTagger< S >::computeTagFields ( ) const
pure virtualnoexcept

Compute tagging fields.

Implemented in Physics::ItoKMC::ItoKMCFieldTagger< S >.

◆ define()

template<typename S >
void ItoKMCTagger::define ( const RefCountedPtr< ItoKMCPhysics > &  a_physics,
const RefCountedPtr< S > &  a_timeStepper,
const RefCountedPtr< AmrMesh > &  a_amr 
)
virtualnoexcept

Define function.

Parameters
[in]a_physicsPhysics implementation.
[in]a_timeStepperTime integrator.
[in]a_amrReference to AmrMesh

◆ getNumberOfPlotVariables()

template<typename S >
int ItoKMCTagger::getNumberOfPlotVariables ( ) const
overridevirtualnoexcept

Get number of plot variables that will be written to file (by Driver).

Returns
Returns number of plot variables that Driver will write to plot files.

Reimplemented from CellTagger.

◆ getPlotVariableNames()

template<typename S >
Vector< std::string > ItoKMCTagger::getPlotVariableNames ( ) const
overridevirtualnoexcept

Get plot variable names.

Returns
Vector of variable name strings for the tag fields.

Reimplemented from CellTagger.

◆ getTagFields()

template<typename S >
Vector< EBAMRCellData > & ItoKMCTagger::getTagFields ( )
virtualnoexcept

Get the tagging fields (mutable reference).

Returns
Reference to the vector of cell-centred tagging fields on the Primal realm.

◆ parseOptions()

template<typename S >
virtual void Physics::ItoKMC::ItoKMCTagger< S >::parseOptions ( )
overridepure virtual

◆ parseRuntimeOptions()

template<typename S >
virtual void Physics::ItoKMC::ItoKMCTagger< S >::parseRuntimeOptions ( )
overridepure virtual

Parse run-time configurable class options.

Reimplemented from CellTagger.

Implemented in Physics::ItoKMC::ItoKMCStreamerTagger< S >, and Physics::ItoKMC::ItoKMCFieldTagger< S >.

◆ refineCell()

template<typename S >
virtual bool Physics::ItoKMC::ItoKMCTagger< S >::refineCell ( const RealVect a_pos,
const Real  a_time,
const Real  a_dx,
const int  a_lvl,
const Vector< Real > &  a_tagFields,
const Vector< RealVect > &  a_gradTagFields 
) const
protectedpure virtualnoexcept

Determine if a particular cell should be refined or not.

Parameters
[in]a_posPhysical position.
[in]a_timeCurrent time
[in]a_dxGrid resolution
[in]a_lvlGrid level
[in]a_tagFieldsCell tagging fields
[in]a_gradTagFieldsGradient of cell tagging fields
Returns
Return value

Implemented in Physics::ItoKMC::ItoKMCStreamerTagger< S >, and Physics::ItoKMC::ItoKMCFieldTagger< S >.

◆ regrid()

template<typename S >
void ItoKMCTagger::regrid ( )
overridevirtualnoexcept

Regrid this class. Note that there is no preRegrid method.

Implements CellTagger.

◆ setPhase()

template<typename S >
void ItoKMCTagger::setPhase ( const phase::which_phase  a_phase)
virtualnoexcept

Set the phase where we do the tagging.

Parameters
[in]a_phasePhase

◆ tagCells()

template<typename S >
bool ItoKMCTagger::tagCells ( EBAMRTags a_tags)
overridevirtualnoexcept

Tag cells for refinement and coarsening.

Parameters
[in,out]a_tagsCell tags that become the new grids.
Returns
Return value

Implements CellTagger.

◆ tagCellsBox()

template<typename S >
void ItoKMCTagger::tagCellsBox ( DenseIntVectSet a_refinedCells,
DenseIntVectSet a_coarsenedCells,
const Vector< EBCellFAB * > &  a_tagFields,
const Vector< EBCellFAB * > &  a_gradTagFields,
const int  a_lvl,
const DataIndex  a_dit,
const Box  a_box,
const EBISBox a_ebisbox,
const Real  a_time,
const Real  a_dx,
const RealVect  a_probLo 
) const
protectedvirtualnoexcept

Per-box refinement tagging routine.

Parameters
[out]a_refinedCellsCells to be refined
[out]a_coarsenedCellsCells to be coarsened
[in]a_tagFieldsTagging fields
[in]a_gradTagFieldsGradient of tagging fields
[in]a_lvlGrid level
[in]a_ditGrid index
[in]a_boxCell-centered box
[in]a_ebisboxEBIS box
[in]a_timeCurrent time
[in]a_dxGrid resolution
[in]a_probLoLower-left corner of physical domain

◆ writePlotData()

template<typename S >
void ItoKMCTagger::writePlotData ( LevelData< EBCellFAB > &  a_output,
int a_icomp,
const std::string a_outputRealm,
const int  a_level 
) const
overridevirtualnoexcept

Write plot data.

Parameters
[in,out]a_outputOutput data holder
[in,out]a_icompStarting variable in a_output where we begin appending data.
[in]a_levelGrid level
[in]a_outputRealmDescription

Reimplemented from CellTagger.


The documentation for this class was generated from the following files: