12 #ifndef CD_ItoKMCTagger_H
13 #define CD_ItoKMCTagger_H
19 #include <CD_NamespaceHeader.H>
43 ItoKMCTagger(
const RefCountedPtr<ItoKMCPhysics>& a_physics,
44 const RefCountedPtr<S>& a_timeStepper,
45 const RefCountedPtr<AmrMesh>& a_amr) noexcept;
59 define(
const RefCountedPtr<ItoKMCPhysics>& a_physics,
60 const RefCountedPtr<S>& a_timeStepper,
61 const RefCountedPtr<AmrMesh>& a_amr) noexcept;
73 virtual Vector<std::string>
85 const std::string a_outputRealm,
86 const int a_level)
const noexcept
override;
110 regrid() noexcept override;
199 DenseIntVectSet& a_coarsenedCells,
200 const Vector<EBCellFAB*>& a_tagFields,
201 const Vector<EBCellFAB*>& a_gradTagFields,
203 const DataIndex a_dit,
205 const EBISBox& a_ebisbox,
208 const RealVect a_probLo) const noexcept;
224 const Vector<Real> a_tagFields,
225 const Vector<RealVect> a_gradTagFields) const noexcept = 0;
241 const Vector<Real> a_tagFields,
242 const Vector<RealVect> a_gradTagFields) const noexcept = 0;
247 #include <CD_NamespaceFooter.H>
Declaration of a base class for tagging cells across an AMR hierarchy.
Main file for describing Ito-based plasma physics.
Declaration of an abstract class for integrating the Ito-KMC-Poisson equations.
Implementation of CD_ItoKMCTagger.H.
Class for handling spatial operations.
Definition: CD_AmrMesh.H:44
Base class for tagging cells across an AMR hierarchy.
Definition: CD_CellTagger.H:31
Base class for interaction between Kinetic Monte Carlo and Ito-based plasma solvers.
Definition: CD_ItoKMCPhysics.H:77
Class for tagging grid cells using the Ito-KMC-Poisson module. Note that S is the time integrator typ...
Definition: CD_ItoKMCTagger.H:30
ItoKMCTagger()
Weak constructor. User MUST subsequently call the define function.
Definition: CD_ItoKMCTaggerImplem.H:26
virtual void parseOptions() override=0
Parse class options.
RefCountedPtr< S > m_timeStepper
Time stepper.
Definition: CD_ItoKMCTagger.H:161
virtual void setPhase(const phase::which_phase a_phase) noexcept
Set the phase where we do the tagging.
Definition: CD_ItoKMCTaggerImplem.H:97
virtual void computeTagFields() const noexcept=0
Compute tagging fields.
virtual bool tagCells(EBAMRTags &a_tags) noexcept override
Tag cells for refinement and coarsening.
Definition: CD_ItoKMCTaggerImplem.H:187
virtual Vector< EBAMRCellData > & getTagFields() noexcept
Get tag fields. This is data that live on the primal realm and specified input phase.
Definition: CD_ItoKMCTaggerImplem.H:141
virtual ~ItoKMCTagger() noexcept
Destructor.
Definition: CD_ItoKMCTaggerImplem.H:51
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.
Definition: CD_ItoKMCTaggerImplem.H:271
bool m_plotData
Plot data or not.
Definition: CD_ItoKMCTagger.H:141
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.
bool m_isDefined
Defined or not.
Definition: CD_ItoKMCTagger.H:136
Vector< EBAMRCellData > m_tagFields
Tagging fields.
Definition: CD_ItoKMCTagger.H:176
int m_numTagFields
Number of tagging fields.
Definition: CD_ItoKMCTagger.H:171
RefCountedPtr< ItoKMCPhysics > m_physics
Physics implementation.
Definition: CD_ItoKMCTagger.H:156
virtual int getNumberOfPlotVariables() const noexcept override
Get number of plot variables that will be written to file (by Driver).
Definition: CD_ItoKMCTaggerImplem.H:109
virtual void define(const RefCountedPtr< ItoKMCPhysics > &a_physics, const RefCountedPtr< S > &a_timeStepper, const RefCountedPtr< AmrMesh > &a_amr) noexcept
Define function.
Definition: CD_ItoKMCTaggerImplem.H:56
virtual Vector< std::string > getPlotVariableNames() const noexcept override
Get plot variable names.
Definition: CD_ItoKMCTaggerImplem.H:121
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.
RefCountedPtr< AmrMesh > m_amr
AmrMesh. Needed for allocating memory and things like that.
Definition: CD_ItoKMCTagger.H:166
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.
Definition: CD_ItoKMCTaggerImplem.H:74
phase::which_phase m_phase
Phase where data is allocated.
Definition: CD_ItoKMCTagger.H:151
std::string m_realm
Realm where data is allocated.
Definition: CD_ItoKMCTagger.H:146
Vector< EBAMRCellData > m_gradTagFields
Gradient of tagging fields.
Definition: CD_ItoKMCTagger.H:181
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.
Definition: CD_ItoKMCTaggerImplem.H:155
Name containing various physics models for running chombo-discharge code.
Definition: CD_AdvectionDiffusion.H:15
phase names
Definition: CD_MultiFluidIndexSpace.H:27