chombo-discharge
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Physics::CdrPlasma::CdrPlasmaFieldTagger Class Referenceabstract

Intermediate CdrPlasmaTagger subclass that computes tracer fields from the electric field only. More...

#include <CD_CdrPlasmaFieldTagger.H>

Inheritance diagram for Physics::CdrPlasma::CdrPlasmaFieldTagger:
Inheritance graph
[legend]
Collaboration diagram for Physics::CdrPlasma::CdrPlasmaFieldTagger:
Collaboration graph
[legend]

Public Member Functions

 CdrPlasmaFieldTagger ()
 Default constructor. Sets the tagger name.
 
virtual ~CdrPlasmaFieldTagger ()
 Destructor.
 
void computeTracers () const override final
 Compute tracer fields from the electric field on the AMR hierarchy.
 
virtual void parseOptions () override=0
 Parse user-defined options. Must be implemented by subclasses.
 
- Public Member Functions inherited from Physics::CdrPlasma::CdrPlasmaTagger
 CdrPlasmaTagger ()
 Default constructor. Sets default realm and phase.
 
 CdrPlasmaTagger (const RefCountedPtr< CdrPlasmaPhysics > &a_physics, const RefCountedPtr< CdrPlasmaStepper > &a_timeStepper, const RefCountedPtr< AmrMesh > &a_amr, const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry)
 Full constructor. Leaves the object in a usable state.
 
virtual ~CdrPlasmaTagger ()
 Destructor.
 
void define (const RefCountedPtr< CdrPlasmaPhysics > &a_physics, const RefCountedPtr< CdrPlasmaStepper > &a_timeStepper, const RefCountedPtr< AmrMesh > &a_amr, const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry)
 Define function. Leaves the object in a usable state.
 
virtual void prePlot () const noexcept override
 Pre-plot hook. Computes tracer fields so they appear in plot output.
 
virtual void preRegrid () noexcept override
 Pre-regrid hook. Clears tracer field storage before the grid changes.
 
virtual void regrid () override final
 Regrid hook. Reallocates tracer field and gradient storage on the new mesh.
 
virtual bool tagCells (EBAMRTags &a_tags) override final
 Flag cells for refinement and coarsening using the tracer-field approach.
 
virtual int getNumberOfPlotVariables () const override final
 Return the number of plot variables (one per tracer field).
 
virtual Vector< std::stringgetPlotVariableNames () const override final
 Return the names of the tracer field plot variables.
 
virtual void writePlotData (LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string &a_outputRealm, const int a_level) const override final
 Write tracer field data into the output holder.
 
- Public Member Functions inherited from CellTagger
 CellTagger ()
 Weak constructor (does nothing)
 
virtual ~CellTagger ()
 Destructor (does nothing).
 
virtual void parseRuntimeOptions ()
 Parse runtime class options.
 
virtual int getBuffer () const
 Get tag buffer.
 

Protected Member Functions

virtual void allocateStorage () const
 Allocate transient storage for the electric field, its gradient, and scratch.
 
virtual void deallocateStorage () const
 Release transient storage allocated by allocateStorage().
 
virtual void computeElectricField (EBAMRCellData &a_electricField, EBAMRCellData &a_gradElectricField) const
 Compute the centroid-centered electric field and its gradient magnitude.
 
virtual Vector< Realtracer (const RealVect &a_pos, const Real a_time, const Real a_dx, const RealVect &a_electricField, const Real a_minElectricField, const Real a_maxElectricField, const RealVect &a_gradElectricField, const Real a_minGradElectricField, const Real a_maxGradElectricField) const =0
 Per-cell tracer field evaluation. Must be implemented by subclasses.
 
virtual bool coarsenCell (const RealVect &a_pos, const Real a_time, const Real a_dx, const int a_lvl, const Vector< Real > &a_tracers, const Vector< RealVect > &a_gradTracers) const override=0
 Decide whether a cell should be coarsened based on tracer fields.
 
virtual bool refineCell (const RealVect &a_pos, const Real a_time, const Real a_dx, const int a_lvl, const Vector< Real > &a_tracers, const Vector< RealVect > &a_gradTracers) const override=0
 Decide whether a cell should be refined based on tracer fields.
 
- Protected Member Functions inherited from Physics::CdrPlasma::CdrPlasmaTagger
virtual void refineCellsBox (DenseIntVectSet &a_refinedCells, const Vector< EBCellFAB * > &a_tracers, const Vector< EBCellFAB * > &a_gradTracers, 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)
 Flag cells for refinement within a single grid patch.
 
virtual void coarsenCellsBox (DenseIntVectSet &a_coarsenedCells, const Vector< EBCellFAB * > &a_tracers, const Vector< EBCellFAB * > &a_gradTracers, 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)
 Flag cells for coarsening within a single grid patch.
 
- 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

EBAMRCellData m_scratch
 Scratch storage for scalar intermediate quantities.
 
EBAMRCellData m_electricField
 Cell-centered electric field vector (SpaceDim components).
 
EBAMRCellData m_gradElectricField
 Cell-centered gradient of the electric field magnitude, i.e., grad(|E|).
 
- Protected Attributes inherited from Physics::CdrPlasma::CdrPlasmaTagger
std::string m_realm
 Realm on which tracer field storage is allocated.
 
phase::which_phase m_phase
 Phase on which tracer field storage is allocated.
 
RefCountedPtr< CdrPlasmaPhysicsm_physics
 Plasma kinetics interface.
 
RefCountedPtr< CdrPlasmaStepperm_timeStepper
 Time stepper providing access to solver data and electric field.
 
RefCountedPtr< AmrMeshm_amr
 AMR mesh for grid iteration, gradient computation, and interpolation.
 
RefCountedPtr< ComputationalGeometrym_computationalGeometry
 Computational geometry providing electrode and dielectric information.
 
int m_numTracers
 Number of scalar tracer fields used for tagging decisions.
 
Vector< EBAMRCellDatam_tracers
 Tracer fields on the AMR hierarchy. Allocated and filled by computeTracers().
 
Vector< EBAMRCellDatam_gradTracers
 Gradients of the tracer fields on the AMR hierarchy.
 
- 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

Intermediate CdrPlasmaTagger subclass that computes tracer fields from the electric field only.

This class implements computeTracers() by fetching the electric field and its gradient magnitude from the time stepper and calling the pure virtual per-cell tracer() method on every grid cell. Users subclass this and implement tracer(), refineCell(), and coarsenCell() to define their specific tagging criteria based on the local electric field.

Member Function Documentation

◆ coarsenCell()

virtual bool Physics::CdrPlasma::CdrPlasmaFieldTagger::coarsenCell ( const RealVect a_pos,
const Real  a_time,
const Real  a_dx,
const int  a_lvl,
const Vector< Real > &  a_tracers,
const Vector< RealVect > &  a_gradTracers 
) const
overrideprotectedpure virtual

Decide whether a cell should be coarsened based on tracer fields.

Parameters
[in]a_posCell centroid position.
[in]a_timeCurrent simulation time.
[in]a_dxGrid cell spacing.
[in]a_lvlAMR level of this cell.
[in]a_tracersTracer field values at this cell.
[in]a_gradTracersGradient of tracer fields at this cell.
Returns
True if the cell should be coarsened.

Implements Physics::CdrPlasma::CdrPlasmaTagger.

Implemented in Physics::CdrPlasma::CdrPlasmaStreamerTagger.

◆ computeElectricField()

void CdrPlasmaFieldTagger::computeElectricField ( EBAMRCellData a_electricField,
EBAMRCellData a_gradElectricField 
) const
protectedvirtual

Compute the centroid-centered electric field and its gradient magnitude.

Parameters
[out]a_electricFieldCell-centered electric field vector.
[out]a_gradElectricFieldCell-centered gradient of |E|.

◆ computeTracers()

void CdrPlasmaFieldTagger::computeTracers ( ) const
finaloverridevirtual

Compute tracer fields from the electric field on the AMR hierarchy.

Fetches the cell-centered electric field and its gradient, then calls the per-cell tracer() method on every regular and irregular cell. Tracer fields and their gradients are stored in m_tracers and m_gradTracers.

Implements Physics::CdrPlasma::CdrPlasmaTagger.

◆ parseOptions()

virtual void Physics::CdrPlasma::CdrPlasmaFieldTagger::parseOptions ( )
overridepure virtual

Parse user-defined options. Must be implemented by subclasses.

Implements Physics::CdrPlasma::CdrPlasmaTagger.

Implemented in Physics::CdrPlasma::CdrPlasmaStreamerTagger.

◆ refineCell()

virtual bool Physics::CdrPlasma::CdrPlasmaFieldTagger::refineCell ( const RealVect a_pos,
const Real  a_time,
const Real  a_dx,
const int  a_lvl,
const Vector< Real > &  a_tracers,
const Vector< RealVect > &  a_gradTracers 
) const
overrideprotectedpure virtual

Decide whether a cell should be refined based on tracer fields.

Parameters
[in]a_posCell centroid position.
[in]a_timeCurrent simulation time.
[in]a_dxGrid cell spacing.
[in]a_lvlAMR level of this cell.
[in]a_tracersTracer field values at this cell.
[in]a_gradTracersGradient of tracer fields at this cell.
Returns
True if the cell should be refined.

Implements Physics::CdrPlasma::CdrPlasmaTagger.

Implemented in Physics::CdrPlasma::CdrPlasmaStreamerTagger.

◆ tracer()

virtual Vector< Real > Physics::CdrPlasma::CdrPlasmaFieldTagger::tracer ( const RealVect a_pos,
const Real  a_time,
const Real  a_dx,
const RealVect a_electricField,
const Real  a_minElectricField,
const Real  a_maxElectricField,
const RealVect a_gradElectricField,
const Real  a_minGradElectricField,
const Real  a_maxGradElectricField 
) const
protectedpure virtual

Per-cell tracer field evaluation. Must be implemented by subclasses.

Parameters
[in]a_posCell centroid position.
[in]a_timeCurrent simulation time.
[in]a_dxGrid cell spacing.
[in]a_electricFieldElectric field vector at this cell.
[in]a_minElectricFieldGlobal minimum of |E| over the AMR hierarchy.
[in]a_maxElectricFieldGlobal maximum of |E| over the AMR hierarchy.
[in]a_gradElectricFieldGradient of |E| at this cell.
[in]a_minGradElectricFieldGlobal minimum of |grad(|E|)| over the AMR hierarchy.
[in]a_maxGradElectricFieldGlobal maximum of |grad(|E|)| over the AMR hierarchy.
Returns
Vector of tracer field values at this cell. Length must equal m_numTracers.

Implemented in Physics::CdrPlasma::CdrPlasmaStreamerTagger.


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