chombo-discharge
Loading...
Searching...
No Matches
CD_CdrPlasmaTagger.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
13#ifndef CD_CDRPLASMATAGGER_H
14#define CD_CDRPLASMATAGGER_H
15
16// Our includes
17#include <CD_CellTagger.H>
18#include <CD_CdrPlasmaStepper.H>
19#include <CD_NamespaceHeader.H>
20
21namespace Physics {
22 namespace CdrPlasma {
23
37 {
38 public:
43
51 CdrPlasmaTagger(const RefCountedPtr<CdrPlasmaPhysics>& a_physics,
52 const RefCountedPtr<CdrPlasmaStepper>& a_timeStepper,
53 const RefCountedPtr<AmrMesh>& a_amr,
54 const RefCountedPtr<ComputationalGeometry>& a_computationalGeometry);
55
59 virtual ~CdrPlasmaTagger();
60
68 void
69 define(const RefCountedPtr<CdrPlasmaPhysics>& a_physics,
70 const RefCountedPtr<CdrPlasmaStepper>& a_timeStepper,
71 const RefCountedPtr<AmrMesh>& a_amr,
72 const RefCountedPtr<ComputationalGeometry>& a_computationalGeometry);
73
78 virtual void
79 computeTracers() const = 0;
80
84 virtual void
85 parseOptions() override = 0;
86
90 virtual void
91 prePlot() const noexcept override;
92
96 virtual void
97 preRegrid() noexcept override;
98
102 virtual void
103 regrid() override final;
104
112 virtual bool
113 tagCells(EBAMRTags& a_tags) override final;
114
119 virtual int
120 getNumberOfPlotVariables() const override final;
121
126 virtual Vector<std::string>
127 getPlotVariableNames() const override final;
128
136 virtual void
137 writePlotData(LevelData<EBCellFAB>& a_output,
138 int& a_icomp,
139 const std::string& a_outputRealm,
140 const int a_level) const override final;
141
142 protected:
146 std::string m_realm;
147
151 phase::which_phase m_phase;
152
157
162
166 RefCountedPtr<AmrMesh> m_amr;
167
172
177
181 mutable Vector<EBAMRCellData> m_tracers;
182
186 mutable Vector<EBAMRCellData> m_gradTracers;
187
201 virtual void
202 refineCellsBox(DenseIntVectSet& a_refinedCells,
203 const Vector<EBCellFAB*>& a_tracers,
204 const Vector<EBCellFAB*>& a_gradTracers,
205 const int a_lvl,
206 const DataIndex& a_dit,
207 const Box& a_box,
208 const EBISBox& a_ebisbox,
209 const Real a_time,
210 const Real a_dx,
211 const RealVect& a_probLo);
212
226 virtual void
227 coarsenCellsBox(DenseIntVectSet& a_coarsenedCells,
228 const Vector<EBCellFAB*>& a_tracers,
229 const Vector<EBCellFAB*>& a_gradTracers,
230 const int a_lvl,
231 const DataIndex& a_dit,
232 const Box& a_box,
233 const EBISBox& a_ebisbox,
234 const Real a_time,
235 const Real a_dx,
236 const RealVect& a_probLo);
237
248 virtual bool
249 coarsenCell(const RealVect& a_pos,
250 const Real a_time,
251 const Real a_dx,
252 const int a_lvl,
253 const Vector<Real>& a_tracers,
254 const Vector<RealVect>& a_gradTracers) const = 0;
255
266 virtual bool
267 refineCell(const RealVect& a_pos,
268 const Real a_time,
269 const Real a_dx,
270 const int a_lvl,
271 const Vector<Real>& a_tracers,
272 const Vector<RealVect>& a_gradTracers) const = 0;
273 };
274 } // namespace CdrPlasma
275} // namespace Physics
276
277#include <CD_NamespaceFooter.H>
278
279#endif
Declaration of Physics::CdrPlasma::CdrPlasmaStepper, the abstract base class for CDR plasma time step...
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:24
Class for handling spatial operations.
Definition CD_AmrMesh.H:43
Base class for tagging cells across an AMR hierarchy.
Definition CD_CellTagger.H:32
Abstract base class for geometries.
Definition CD_ComputationalGeometry.H:37
Abstract interface for specifying plasma kinetics in the CdrPlasma physics module.
Definition CD_CdrPlasmaPhysics.H:52
Abstract base class for advancing the coupled CDR plasma equations in time.
Definition CD_CdrPlasmaStepper.H:46
Abstract CellTagger base class for the CDR plasma physics module.
Definition CD_CdrPlasmaTagger.H:37
virtual void regrid() override final
Regrid hook. Reallocates tracer field and gradient storage on the new mesh.
Definition CD_CdrPlasmaTagger.cpp:106
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 =0
Decide whether a single cell should be refined. Must be implemented by subclasses.
RefCountedPtr< CdrPlasmaPhysics > m_physics
Plasma kinetics interface.
Definition CD_CdrPlasmaTagger.H:156
RefCountedPtr< CdrPlasmaStepper > m_timeStepper
Time stepper providing access to solver data and electric field.
Definition CD_CdrPlasmaTagger.H:161
virtual void computeTracers() const =0
Compute tracer fields on the AMR hierarchy. Must be implemented by subclasses.
virtual Vector< std::string > getPlotVariableNames() const override final
Return the names of the tracer field plot variables.
Definition CD_CdrPlasmaTagger.cpp:139
Vector< EBAMRCellData > m_gradTracers
Gradients of the tracer fields on the AMR hierarchy.
Definition CD_CdrPlasmaTagger.H:186
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.
Definition CD_CdrPlasmaTagger.cpp:269
virtual bool tagCells(EBAMRTags &a_tags) override final
Flag cells for refinement and coarsening using the tracer-field approach.
Definition CD_CdrPlasmaTagger.cpp:186
Vector< EBAMRCellData > m_tracers
Tracer fields on the AMR hierarchy. Allocated and filled by computeTracers().
Definition CD_CdrPlasmaTagger.H:181
std::string m_realm
Realm on which tracer field storage is allocated.
Definition CD_CdrPlasmaTagger.H:146
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 =0
Decide whether a single cell should be coarsened. Must be implemented by subclasses.
RefCountedPtr< AmrMesh > m_amr
AMR mesh for grid iteration, gradient computation, and interpolation.
Definition CD_CdrPlasmaTagger.H:166
CdrPlasmaTagger()
Default constructor. Sets default realm and phase.
Definition CD_CdrPlasmaTagger.cpp:26
int m_numTracers
Number of scalar tracer fields used for tagging decisions.
Definition CD_CdrPlasmaTagger.H:176
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.
Definition CD_CdrPlasmaTagger.cpp:62
virtual int getNumberOfPlotVariables() const override final
Return the number of plot variables (one per tracer field).
Definition CD_CdrPlasmaTagger.cpp:128
virtual ~CdrPlasmaTagger()
Destructor.
Definition CD_CdrPlasmaTagger.cpp:53
RefCountedPtr< ComputationalGeometry > m_computationalGeometry
Computational geometry providing electrode and dielectric information.
Definition CD_CdrPlasmaTagger.H:171
virtual void parseOptions() override=0
Parse class options from ParmParse. Must be implemented by subclasses.
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.
Definition CD_CdrPlasmaTagger.cpp:353
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.
Definition CD_CdrPlasmaTagger.cpp:156
virtual void prePlot() const noexcept override
Pre-plot hook. Computes tracer fields so they appear in plot output.
Definition CD_CdrPlasmaTagger.cpp:81
phase::which_phase m_phase
Phase on which tracer field storage is allocated.
Definition CD_CdrPlasmaTagger.H:151
virtual void preRegrid() noexcept override
Pre-regrid hook. Clears tracer field storage before the grid changes.
Definition CD_CdrPlasmaTagger.cpp:92
Namespace containing physics models for use with chombo-discharge.
Definition CD_AdvectionDiffusion.H:16
Phase names namespace.
Definition CD_MultiFluidIndexSpace.H:28