chombo-discharge
Loading...
Searching...
No Matches
CD_RtSolver.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_RTSOLVER_H
14#define CD_RTSOLVER_H
15
16// Std includes
17#include <functional>
18
19// Our includes
21#include <CD_AmrMesh.H>
22#include <CD_RtSpecies.H>
23#include <CD_Location.H>
24#include <CD_NamespaceHeader.H>
25
31{
32public:
36 RtSolver();
37
41 virtual ~RtSolver();
42
47 virtual std::string
48 getName();
49
54 virtual std::string
55 getRealm() const;
56
60 virtual void
62
66 virtual void
68
75 virtual bool
76 advance(const Real a_dt, const bool a_zeroPhi = false);
77
85 virtual bool
86 advance(const Real a_dt, EBAMRCellData& a_phi, const bool a_zeroPhi = false);
87
96 virtual bool
97 advance(const Real a_dt, EBAMRCellData& a_phi, const EBAMRCellData& a_source, const bool a_zeroPhi = false) = 0;
98
103 virtual void
105
110 virtual void
112
117 virtual void
119
128 virtual void
129 computeLoads(Vector<long long>& a_loads, const DisjointBoxLayout& a_dbl, const int a_level) const noexcept;
130
135 virtual void
137
143 virtual void
145
150 virtual void
151 setVerbosity(const int a_verbosity);
152
160 virtual void
161 setTime(const int a_step, const Real a_time, const Real a_dt);
162
167 virtual void
168 setStationary(const bool a_stationary);
169
173 virtual void
174 sanityCheck();
175
180 virtual bool
181 isStationary();
182
188 virtual void
190
196 virtual void
198
206 virtual void
208
215 virtual void
217
221 virtual void
222 allocate() = 0;
223
227 virtual void
229
235 virtual void
236 preRegrid(const int a_lbase, const int a_oldFinestLevel) = 0;
237
244 virtual void
245 regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) = 0;
246
250 virtual void
252
257 virtual void
258 initialData();
259
264 virtual void
266
271 virtual void
272 setSource(const Real a_source);
273
278 virtual void
280
284 virtual void
286
291 virtual int
293
298 virtual Vector<std::string>
299 getPlotVariableNames() const;
300
309 virtual void
311 int& a_comp,
313 const int a_level) const noexcept;
314
315#ifdef CH_USE_HDF5
321 virtual void
322 writeCheckpointLevel(HDF5Handle& a_handle, const int a_level) const = 0;
323#endif
324
325#ifdef CH_USE_HDF5
331 virtual void
333#endif
334
339 virtual Real
340 getTime() const;
341
346 virtual phase::which_phase
347 getPhase();
348
353 virtual EBAMRCellData&
354 getPhi();
355
360 virtual EBAMRCellData&
361 getSource();
362
367 virtual EBAMRFluxData&
368 getKappa();
369
374 virtual EBAMRIVData&
375 getKappaEb();
376
382 getSpecies();
383
384protected:
388 static constexpr int m_comp = 0;
389
393 static constexpr int m_nComp = 1;
394
399
404
409
414
419
424
429
433 std::string m_name = "RtSolver";
434
439
444
451
458
463
468
473
478
483
488
493
498 int m_verbosity = -1;
499
504
509 void
511
515 void
517
528 virtual void
530 int& a_comp,
532 const std::string& a_outputRealm,
533 const int a_level,
536};
537
538#include <CD_NamespaceFooter.H>
539
540#endif
Declaration of core class for handling AMR-related operations (with embedded boundaries)
Declaration of base class for defining geometries.
Declaration of cell positions.
Declaration of a class which supplies a user interface to radiative transfer code.
Abstract RTE solver class for doing various kinds of radiative transfer equations....
Definition CD_RtSolver.H:31
virtual void setRealm(const std::string &a_realm)
Set realm where this solver lives.
Definition CD_RtSolver.cpp:80
virtual void setAmr(const RefCountedPtr< AmrMesh > &a_amr)
Set the amr object.
Definition CD_RtSolver.cpp:154
EBAMRFluxData m_kappa
Absorption coefficient.
Definition CD_RtSolver.H:462
void setEbIndexSpace(const RefCountedPtr< EBIndexSpace > &a_ebis)
Set ebis.
Definition CD_RtSolver.cpp:143
virtual void computeDensity(EBAMRCellData &a_isotropic, const EBAMRCellData &a_phi)=0
Get isotropic part.
virtual Real getTime() const
Get current time.
Definition CD_RtSolver.cpp:393
virtual phase::which_phase getPhase()
Get the RTE phase.
Definition CD_RtSolver.cpp:404
RtSolver()
Constructor.
Definition CD_RtSolver.cpp:25
virtual EBAMRCellData & getPhi()
Get solver state.
Definition CD_RtSolver.cpp:415
virtual std::string getRealm() const
Get the realm where the solver lives.
Definition CD_RtSolver.cpp:42
virtual void computeLoads(Vector< long long > &a_loads, const DisjointBoxLayout &a_dbl, const int a_level) const noexcept
Get computational loads for a specific grid level.
Definition CD_RtSolver.cpp:458
virtual void deallocate()=0
Deallocate internal storage.
static constexpr int m_nComp
Default number of components.
Definition CD_RtSolver.H:393
EBAMRCellData m_source
Source term.
Definition CD_RtSolver.H:457
std::string m_realm
Realm where this solver lives.
Definition CD_RtSolver.H:403
void parseVerbosity() noexcept
Parse verbosity.
Definition CD_RtSolver.cpp:445
virtual RefCountedPtr< RtSpecies > & getSpecies()
Get species.
Definition CD_RtSolver.cpp:439
virtual void computeDomainFlux(EBAMRIFData &a_domainflux, const EBAMRCellData &a_phi)=0
Compute the domain flux given a state (a_phi will be different for different RTE approximations)
RefCountedPtr< AmrMesh > m_amr
AMR; needed for grid stuff.
Definition CD_RtSolver.H:423
EBAMRIVData m_kappaEB
Absorption coefficient on EB faces.
Definition CD_RtSolver.H:467
virtual void setRtSpecies(const RefCountedPtr< RtSpecies > &a_RtSpecies)
Set the radiative transfer species (RtSpecies)
Definition CD_RtSolver.cpp:91
virtual bool advance(const Real a_dt, EBAMRCellData &a_phi, const EBAMRCellData &a_source, const bool a_zeroPhi=false)=0
Advance method. Advances one time step.
virtual void setPhase(phase::which_phase a_phase=phase::gas)
Set phase.
Definition CD_RtSolver.cpp:103
virtual void allocate()=0
Allocate internal storage.
virtual int getNumberOfPlotVariables() const
Get number of output fields.
Definition CD_RtSolver.cpp:257
virtual void setVerbosity(const int a_verbosity)
Set verbosity.
Definition CD_RtSolver.cpp:189
Real m_dt
Time increment.
Definition CD_RtSolver.H:477
virtual EBAMRIVData & getKappaEb()
Get the absorption coefficient on irregular EB faces.
Definition CD_RtSolver.cpp:433
virtual void computeFlux(EBAMRCellData &a_flux, const EBAMRCellData &a_phi)=0
Compute the flux.
virtual EBAMRFluxData & getKappa()
Get the absorption length.
Definition CD_RtSolver.cpp:427
bool m_plotSource
Output source term.
Definition CD_RtSolver.H:492
virtual void writeData(LevelData< EBCellFAB > &a_output, int &a_comp, const EBAMRCellData &a_data, const std::string &a_outputRealm, const int a_level, const bool a_interpToCentroids, const bool a_interpGhost) const noexcept
Write data to output. Convenience function.
Definition CD_RtSolver.cpp:319
virtual void sanityCheck()
Sanity check.
Definition CD_RtSolver.cpp:114
virtual void setTime(const int a_step, const Real a_time, const Real a_dt)
Set the time for this solver.
Definition CD_RtSolver.cpp:165
virtual void computeBoundaryFlux(EBAMRIVData &a_ebFlux, const EBAMRCellData &a_phi)=0
Compute the boundary flux given a state (a_phi will be different for different RTE approximations)
virtual void writePlotData(LevelData< EBCellFAB > &a_output, int &a_comp, const std::string &a_outputRealm, const int a_level) const noexcept
Write output data to a_output.
Definition CD_RtSolver.cpp:297
virtual void parseOptions()=0
Parse options.
virtual ~RtSolver()
Constructor (does nothing)
Definition CD_RtSolver.cpp:30
virtual Vector< std::string > getPlotVariableNames() const
Get output plot names.
Definition CD_RtSolver.cpp:277
EBAMRCellData m_phi
Internal state.
Definition CD_RtSolver.H:450
std::string m_name
Name for this solver.
Definition CD_RtSolver.H:433
RefCountedPtr< ComputationalGeometry > m_computationalGeometry
Computational geometry.
Definition CD_RtSolver.H:418
virtual void writePlotFile()=0
Write plot file.
phase::which_phase m_phase
Phase.
Definition CD_RtSolver.H:428
bool m_plotPhi
Output state.
Definition CD_RtSolver.H:487
virtual void initialData()
Fill solver with initial data. By default, this sets internal data to zero.
Definition CD_RtSolver.cpp:246
virtual void setComputationalGeometry(const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry)
Set computational geometry.
Definition CD_RtSolver.cpp:128
virtual void preRegrid(const int a_lbase, const int a_oldFinestLevel)=0
Perform pre-regrid operations.
virtual EBAMRCellData & getSource()
Get multifluid source.
Definition CD_RtSolver.cpp:421
EBAMRCellData m_cachePhi
Cached state used for regridding.
Definition CD_RtSolver.H:443
virtual bool isStationary()
Check if solver is stationary.
Definition CD_RtSolver.cpp:48
virtual void registerOperators()=0
Register operators.
std::string m_className
Class name – needed because inherited classes will be named different.
Definition CD_RtSolver.H:438
int m_verbosity
Verbosity.
Definition CD_RtSolver.H:498
virtual void setStationary(const bool a_stationary)
Set stationary solver or not.
Definition CD_RtSolver.cpp:178
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel)=0
Regrid this solver.
Real m_time
Time.
Definition CD_RtSolver.H:472
RefCountedPtr< EBIndexSpace > m_ebis
EBIndexSpace for this solver.
Definition CD_RtSolver.H:408
Location::Cell m_dataLocation
Data location.
Definition CD_RtSolver.H:398
virtual void setSource(const EBAMRCellData &a_source)
Set source term.
Definition CD_RtSolver.cpp:200
static constexpr int m_comp
Default component that we solve for.
Definition CD_RtSolver.H:388
virtual void parseRuntimeOptions()=0
Parse runtime options.
RefCountedPtr< RtSpecies > m_rtSpecies
Radiative transfer species (contains meta-information like initial conditions)
Definition CD_RtSolver.H:413
virtual std::string getName()
Get solver name.
Definition CD_RtSolver.cpp:36
int m_timeStep
Time step.
Definition CD_RtSolver.H:503
bool m_stationary
Stationary solver or not.
Definition CD_RtSolver.H:482
virtual bool advance(const Real a_dt, const bool a_zeroPhi=false)
Advance equation one time step.
Definition CD_RtSolver.cpp:54
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:26
Cell
Enum for distinguishing between cell locations.
Definition CD_Location.H:31
which_phase
Enumeration of supported phases.
Definition CD_MultiFluidIndexSpace.H:38
@ gas
Gas phase.
Definition CD_MultiFluidIndexSpace.H:39