chombo-discharge
CD_ItoPlasmaTagger.H
Go to the documentation of this file.
1 /* chombo-discharge
2  * Copyright © 2021 SINTEF Energy Research.
3  * Please refer to Copyright.txt and LICENSE in the chombo-discharge root directory.
4  */
5 
12 #ifndef CD_ItoPlasmaTagger_H
13 #define CD_ItoPlasmaTagger_H
14 
15 // Our includes
16 #include <CD_CellTagger.H>
17 #include <CD_ItoPlasmaStepper.H>
18 #include <CD_ItoPlasmaPhysics.H>
19 #include <CD_NamespaceHeader.H>
20 
21 namespace Physics {
22  namespace ItoPlasma {
23 
27  class ItoPlasmaTagger : public CellTagger
28  {
29  public:
34 
38  ItoPlasmaTagger(const RefCountedPtr<ItoPlasmaPhysics>& a_physics,
39  const RefCountedPtr<ItoPlasmaStepper>& a_timeStepper,
40  const RefCountedPtr<AmrMesh>& a_amr,
41  const RefCountedPtr<ComputationalGeometry>& a_computationalGeometry);
42 
46  virtual ~ItoPlasmaTagger();
47 
55  virtual void
56  define(const RefCountedPtr<ItoPlasmaPhysics>& a_physics,
57  const RefCountedPtr<ItoPlasmaStepper>& a_timeStepper,
58  const RefCountedPtr<AmrMesh>& a_amr,
59  const RefCountedPtr<ComputationalGeometry>& a_computationalGeometry);
60 
64  virtual void
66 
70  virtual void
71  parseOptions() = 0;
72 
76  virtual void
78 
82  virtual int
83  getNumberOfPlotVariables();
84 
88  virtual void
89  regrid();
90 
94  virtual bool
95  tagCells(EBAMRTags& a_tags);
96 
100  virtual void
101  setPhase(const phase::which_phase a_phase);
102 
106  virtual Vector<EBAMRCellData>&
107  getTracerFields();
108 
112  virtual void
113  writePlotData(EBAMRCellData& a_output, Vector<std::string>& a_plotVariableNames, int& a_icomp);
114 
115  protected:
119  std::string m_realm;
120 
124  phase::which_phase m_phase;
125 
129  RefCountedPtr<ItoPlasmaPhysics> m_physics;
130 
134  RefCountedPtr<ItoPlasmaStepper> m_timeStepper;
135 
139  RefCountedPtr<AmrMesh> m_amr;
140 
144  RefCountedPtr<ComputationalGeometry> m_computationalGeometry;
145 
150 
154  Vector<EBAMRCellData> m_tracer;
155 
159  Vector<EBAMRCellData> m_grad_tracer;
160 
164  virtual void
165  refineCellsBox(DenseIntVectSet& a_refined_tags,
166  const Vector<EBCellFAB*>& a_tracers,
167  const Vector<EBCellFAB*>& a_grad_tracers,
168  const int a_lvl,
169  const Box a_box,
170  const EBISBox& a_ebisbox,
171  const Real a_time,
172  const Real a_dx,
173  const RealVect a_origin);
174 
178  virtual void
179  coarsenCellsBox(DenseIntVectSet& a_refined_tags,
180  const Vector<EBCellFAB*>& a_tracers,
181  const Vector<EBCellFAB*>& a_grad_tracers,
182  const int a_lvl,
183  const Box a_box,
184  const EBISBox& a_ebisbox,
185  const Real a_time,
186  const Real a_dx,
187  const RealVect a_origin);
188 
192  virtual bool
193  coarsenCell(const RealVect a_pos,
194  const Real a_time,
195  const Real a_dx,
196  const int a_lvl,
197  const Vector<Real> a_tracer,
198  const Vector<RealVect> a_grad_tracer) = 0;
199 
203  virtual bool
204  refineCell(const RealVect a_pos,
205  const Real a_time,
206  const Real a_dx,
207  const int a_lvl,
208  const Vector<Real> a_tracer,
209  const Vector<RealVect> a_grad_tracer) = 0;
210  };
211  } // namespace ItoPlasma
212 } // namespace Physics
213 
214 #include <CD_NamespaceFooter.H>
215 
216 #endif
Declaration of a base class for tagging cells across an AMR hierarchy.
Vector< RefCountedPtr< LayoutData< DenseIntVectSet > >> EBAMRTags
Declaration of cell tags.
Definition: CD_EBAMRTags.H:22
Main file for describing Ito-based plasma physics.
Abstract class for integrating the Ito plasma equations.
Base class for tagging cells across an AMR hierarchy.
Definition: CD_CellTagger.H:31
Abstract class for tagging cells across an AMR hierarchy.
Definition: CD_ItoPlasmaTagger.H:28
virtual void setPhase(const phase::which_phase a_phase)
Set phase.
Definition: CD_ItoPlasmaTagger.cpp:85
RefCountedPtr< ItoPlasmaPhysics > m_physics
Plasma kinetics.
Definition: CD_ItoPlasmaTagger.H:129
Vector< EBAMRCellData > m_grad_tracer
Gradient of tracer fields.
Definition: CD_ItoPlasmaTagger.H:159
virtual bool coarsenCell(const RealVect a_pos, const Real a_time, const Real a_dx, const int a_lvl, const Vector< Real > a_tracer, const Vector< RealVect > a_grad_tracer)=0
Coarsen a cell based on a tracer field.
virtual Vector< EBAMRCellData > & getTracerFields()
Tracer fields.
Definition: CD_ItoPlasmaTagger.cpp:107
virtual bool refineCell(const RealVect a_pos, const Real a_time, const Real a_dx, const int a_lvl, const Vector< Real > a_tracer, const Vector< RealVect > a_grad_tracer)=0
Refine a cell based on a tracer field.
ItoPlasmaTagger()
Weak constructor, must subsequently call define.
Definition: CD_ItoPlasmaTagger.cpp:25
RefCountedPtr< ItoPlasmaStepper > m_timeStepper
Time stepper.
Definition: CD_ItoPlasmaTagger.H:134
virtual void define(const RefCountedPtr< ItoPlasmaPhysics > &a_physics, const RefCountedPtr< ItoPlasmaStepper > &a_timeStepper, const RefCountedPtr< AmrMesh > &a_amr, const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry)
Define function.
Definition: CD_ItoPlasmaTagger.cpp:50
virtual void parseRuntimeOptions()=0
Parse class options.
std::string m_realm
Realm.
Definition: CD_ItoPlasmaTagger.H:119
virtual void refineCellsBox(DenseIntVectSet &a_refined_tags, const Vector< EBCellFAB * > &a_tracers, const Vector< EBCellFAB * > &a_grad_tracers, const int a_lvl, const Box a_box, const EBISBox &a_ebisbox, const Real a_time, const Real a_dx, const RealVect a_origin)
Per-box refinement tags.
Definition: CD_ItoPlasmaTagger.cpp:223
RefCountedPtr< ComputationalGeometry > m_computationalGeometry
Computational geometry. Needed for what exactly?
Definition: CD_ItoPlasmaTagger.H:144
virtual ~ItoPlasmaTagger()
Destructor.
Definition: CD_ItoPlasmaTagger.cpp:47
virtual void writePlotData(EBAMRCellData &a_output, Vector< std::string > &a_plotVariableNames, int &a_icomp)
Write plot data.
Definition: CD_ItoPlasmaTagger.cpp:113
int m_num_tracers
Number of tracer fields.
Definition: CD_ItoPlasmaTagger.H:149
virtual void parseOptions()=0
Parse class options.
RefCountedPtr< AmrMesh > m_amr
AmrMesh. Needed for computing tracer stuff.
Definition: CD_ItoPlasmaTagger.H:139
virtual void coarsenCellsBox(DenseIntVectSet &a_refined_tags, const Vector< EBCellFAB * > &a_tracers, const Vector< EBCellFAB * > &a_grad_tracers, const int a_lvl, const Box a_box, const EBISBox &a_ebisbox, const Real a_time, const Real a_dx, const RealVect a_origin)
Per-box coarsen.
Definition: CD_ItoPlasmaTagger.cpp:298
virtual bool tagCells(EBAMRTags &a_tags)
Tag cells.
Definition: CD_ItoPlasmaTagger.cpp:141
virtual void regrid()
Regrid storage for tracer field.
Definition: CD_ItoPlasmaTagger.cpp:67
virtual void computeTracers()=0
Compute tracer fields.
phase::which_phase m_phase
Phase.
Definition: CD_ItoPlasmaTagger.H:124
Vector< EBAMRCellData > m_tracer
Tracer fields.
Definition: CD_ItoPlasmaTagger.H:154
Name containing various physics models for running chombo-discharge code.
Definition: CD_AdvectionDiffusion.H:15