chombo-discharge
Loading...
Searching...
No Matches
CD_CdrLayout.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_CDRLAYOUT_H
14#define CD_CDRLAYOUT_H
15
16// Our includes
17#include <CD_CdrSolver.H>
18#include <CD_NamespaceHeader.H>
19
24template <class T>
25class CdrIterator;
26
38template <class T>
40{
41public:
45 CdrLayout() = delete;
46
51 CdrLayout(const Vector<RefCountedPtr<CdrSpecies>>& a_species);
52
56 virtual ~CdrLayout();
57
62 virtual phase::which_phase
63 getPhase() const;
64
69 virtual CdrIterator<T>
70 iterator();
71
76 virtual std::string
77 getRealm() const;
78
83 virtual void
84 setRealm(const std::string& a_realm);
85
89 virtual void
91
95 virtual void
97
102 virtual void
103 addSolver(RefCountedPtr<T>& a_solver);
104
108 virtual void
109 allocate();
110
114 virtual void
115 deallocate();
116
122 virtual void
123 preRegrid(const int a_lbase, const int a_oldFinestLevel);
124
128 virtual void
129 initialData();
130
137 virtual void
138 regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel);
139
143 virtual void
145
150 virtual void
151 setAmr(const RefCountedPtr<AmrMesh>& a_amrMesh);
152
157 virtual void
158 setComputationalGeometry(const RefCountedPtr<ComputationalGeometry>& a_computationalGeometry);
159
164 virtual void
165 setPhase(const phase::which_phase a_phase = phase::gas);
166
171 virtual void
172 setVerbosity(const int a_verbosity);
173
180 virtual void
181 setTime(const int a_step, const Real a_time, const Real a_dt);
182
186 virtual void
188
193 virtual Real
195
200 virtual Real
202
207 virtual Real
209
214 virtual Vector<RefCountedPtr<T>>&
215 getSolvers();
216
221 virtual Vector<RefCountedPtr<CdrSpecies>>&
222 getSpecies();
223
228 virtual Vector<EBAMRCellData*>
229 getSources();
230
235 virtual Vector<EBAMRCellData*>
236 getPhis();
237
242 virtual Vector<EBAMRCellData*>
244
249 virtual Vector<EBAMRCellData*>
251
256 virtual Vector<EBAMRFluxData*>
258
263 virtual Vector<EBAMRIVData*>
265
270 virtual Vector<EBAMRIVData*>
271 getEbFlux();
272
277 virtual Vector<EBAMRIFData*>
279
280protected:
284 std::string m_realm;
285
290
295
299 Vector<RefCountedPtr<CdrSolver>> m_solvers;
300
304 Vector<RefCountedPtr<CdrSpecies>> m_species;
305};
306
314template <class T, class S>
316{
317public:
321 CdrFactory();
322
326 ~CdrFactory();
327
335 RefCountedPtr<CdrLayout<T>>
336 newLayout(const Vector<RefCountedPtr<CdrSpecies>>& a_species) const;
337};
338
339#include <CD_NamespaceFooter.H>
340
341#include <CD_CdrLayoutImplem.H>
342
343#endif
Implementation of CD_CdrLayout.H.
Declaration of an abstract class for solving scalar convection-diffusion-reaction problems.
Factory class for CdrLayout. T is (usually) CdrSolver and S is the implementation class (e....
Definition CD_CdrLayout.H:316
CdrFactory()
Default constructor (does nothing)
Definition CD_CdrLayoutImplem.H:534
~CdrFactory()
Default constructor (does nothing)
Definition CD_CdrLayoutImplem.H:540
RefCountedPtr< CdrLayout< T > > newLayout(const Vector< RefCountedPtr< CdrSpecies > > &a_species) const
Factory method, create a new CdrLayout.
Definition CD_CdrLayoutImplem.H:547
Iterator class for CdrLayout. This allows iteration through solvers (or subsets of solvers).
Definition CD_CdrIterator.H:29
Class for holding a set of CdrSolvers.
Definition CD_CdrLayout.H:40
virtual void setPhase(const phase::which_phase a_phase=phase::gas)
Set phase for all CdrSolvers.
Definition CD_CdrLayoutImplem.H:248
virtual std::string getRealm() const
Get the realm where the Cdr solvers live.
Definition CD_CdrLayoutImplem.H:68
virtual void parseOptions()
Parse class options.
Definition CD_CdrLayoutImplem.H:108
virtual void parseRuntimeOptions()
Parse runtime options.
Definition CD_CdrLayoutImplem.H:122
virtual Vector< EBAMRCellData * > getPhis()
Get all cell-centered states.
Definition CD_CdrLayoutImplem.H:391
virtual Vector< EBAMRIVData * > getEbFlux()
Get all EB flux data holders.
Definition CD_CdrLayoutImplem.H:499
virtual Vector< EBAMRCellData * > getSources()
Get all source terms.
Definition CD_CdrLayoutImplem.H:409
virtual phase::which_phase getPhase() const
Get phase.
Definition CD_CdrLayoutImplem.H:44
virtual void preRegrid(const int a_lbase, const int a_oldFinestLevel)
Call preRegrid(...) method for all the CdrSolvers.
Definition CD_CdrLayoutImplem.H:164
virtual Vector< EBAMRIFData * > getDomainFlux()
Get domain flux data holders.
Definition CD_CdrLayoutImplem.H:517
virtual Vector< EBAMRCellData * > getVelocities()
Get all cell-centered velocities.
Definition CD_CdrLayoutImplem.H:427
virtual void writePlotFile()
Convenience function. All solvers write plot files (for debugging purposes)
Definition CD_CdrLayoutImplem.H:293
virtual void setComputationalGeometry(const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry)
Set the computational geometry for all CdrSolvers.
Definition CD_CdrLayoutImplem.H:234
virtual void setAmr(const RefCountedPtr< AmrMesh > &a_amrMesh)
Set AmrMesh for all CdrSolvers.
Definition CD_CdrLayoutImplem.H:220
virtual Real computeDiffusionDt()
Get time step for explicit diffusion.
Definition CD_CdrLayoutImplem.H:327
virtual ~CdrLayout()
Destructor.
Definition CD_CdrLayoutImplem.H:37
virtual void addSolver(RefCountedPtr< T > &a_solver)
Add solver. This appends a_solver to m_solvers.
Definition CD_CdrLayoutImplem.H:96
virtual Vector< EBAMRIVData * > getEbCenteredDiffusionCoefficient()
Get all EB-centered diffusion coefficients.
Definition CD_CdrLayoutImplem.H:481
phase::which_phase m_phase
Phase where solvers live.
Definition CD_CdrLayout.H:289
virtual void setTime(const int a_step, const Real a_time, const Real a_dt)
Set time.
Definition CD_CdrLayoutImplem.H:279
virtual Real computeAdvectionDiffusionDt()
Get the time step for explicit advection-diffusion.
Definition CD_CdrLayoutImplem.H:347
virtual Vector< EBAMRFluxData * > getFaceCenteredDiffusionCoefficient()
Get all face-centered diffusion coefficients.
Definition CD_CdrLayoutImplem.H:463
virtual void setVerbosity(const int a_verbosity)
Set verbosity for all CdrSolvers.
Definition CD_CdrLayoutImplem.H:264
virtual void registerOperators()
Register operators.
Definition CD_CdrLayoutImplem.H:206
CdrLayout()=delete
Disallowed weak constructor. Use the full constructor.
virtual Vector< RefCountedPtr< T > > & getSolvers()
Get solvers.
Definition CD_CdrLayoutImplem.H:367
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel)
Regrid method. Calls regrid(...) for every CdrSolver.
Definition CD_CdrLayoutImplem.H:192
virtual Vector< EBAMRCellData * > getCellCenteredDiffusionCoefficients()
Get all cell-centered diffusion coefficients.
Definition CD_CdrLayoutImplem.H:445
virtual void allocate()
Allocate internal storage for solvers.
Definition CD_CdrLayoutImplem.H:136
virtual void initialData()
Initial data. Fill all solvers with initial data.
Definition CD_CdrLayoutImplem.H:178
int m_verbosity
Verbosity.
Definition CD_CdrLayout.H:294
virtual Vector< RefCountedPtr< CdrSpecies > > & getSpecies()
Get species.
Definition CD_CdrLayoutImplem.H:379
std::string m_realm
Realm where solvers live.
Definition CD_CdrLayout.H:284
virtual void setRealm(const std::string &a_realm)
Set realm for all CdrSolvers.
Definition CD_CdrLayoutImplem.H:80
virtual CdrIterator< T > iterator()
Get an iterator which can iterate through the various Cdr solvers.
Definition CD_CdrLayoutImplem.H:56
Vector< RefCountedPtr< CdrSolver > > m_solvers
Solver instantiations.
Definition CD_CdrLayout.H:299
virtual Real computeAdvectionDt()
Get CFL time for advection.
Definition CD_CdrLayoutImplem.H:307
Vector< RefCountedPtr< CdrSpecies > > m_species
Cdr species.
Definition CD_CdrLayout.H:304
virtual void deallocate()
Deallocate solver internals.
Definition CD_CdrLayoutImplem.H:150
which_phase
Enumeration of supported phases.
Definition CD_MultiFluidIndexSpace.H:38
@ gas
Gas phase.
Definition CD_MultiFluidIndexSpace.H:39