12 #ifndef CD_MeshODESolver_H
13 #define CD_MeshODESolver_H
20 #include <CD_NamespaceHeader.H>
26 template <
size_t N = 1>
33 using RHSFunction = std::function<std::array<Real, N>(
const std::array<Real, N>&,
const Real)>;
78 setAmr(
const RefCountedPtr<AmrMesh>& a_amrMesh) noexcept;
104 setPhi(const std::function<Real(const RealVect& a_pos)>& a_phiFunc, const
size_t a_comp) noexcept;
111 setPhi(const std::function<std::array<Real, N>(const RealVect& a_pos)>& a_phiFunc) noexcept;
119 setRHS(const std::function<Real(const RealVect& a_pos)>& a_srcFunc, const
size_t a_comp) noexcept;
167 preRegrid(const
int a_lbase, const
int a_oldFinestLevel) noexcept;
177 regrid(const
int a_lmin, const
int a_oldFinestLevel, const
int a_newFinestLevel) noexcept;
198 setName(const std::
string& a_name) noexcept;
212 setRealm(const std::
string a_realm) noexcept;
236 setTime(const
int a_step, const Real a_time, const Real a_dt) noexcept;
257 virtual Vector<std::
string>
270 const std::
string a_outputRealm,
271 const
int a_level) const noexcept;
280 writeCheckpointLevel(HDF5Handle& a_handle,
const int a_level)
const noexcept;
290 readCheckpointLevel(HDF5Handle& a_handle,
const int a_level) noexcept;
381 writeData(LevelData<EBCellFAB>& a_output,
384 const std::string a_outputRealm,
386 const bool a_interpToCentroids,
387 const bool a_interpGhost)
const noexcept;
396 #include <CD_NamespaceFooter.H>
Declaration of core class for handling AMR-related operations (with embedded boundaries)
Implementation of CD_MeshODESolver.H.
Class for solving dy/dt = f on an AMR hierarchy.
Definition: CD_MeshODESolver.H:28
MeshODESolver & operator=(const MeshODESolver &)=delete
Disallowed assignment operator.
MeshODESolver(const MeshODESolver &&)=delete
Disallowed move constructor.
virtual std::string getRealm() const noexcept
Get the realm where this solver is registered.
Definition: CD_MeshODESolverImplem.H:429
int m_verbosity
Chattiness.
Definition: CD_MeshODESolver.H:302
virtual void writePlotData(LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string a_outputRealm, const int a_level) const noexcept
Write plot data to output holder.
Definition: CD_MeshODESolverImplem.H:628
virtual Vector< std::string > getPlotVariableNames() const noexcept
Get output plot names.
Definition: CD_MeshODESolverImplem.H:602
virtual void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) noexcept
Regrid this solver.
Definition: CD_MeshODESolverImplem.H:407
virtual void writePlotFile() const noexcept
Write plot file.
Definition: CD_MeshODESolverImplem.H:531
bool m_regridSlopes
Use slopes when regridding.
Definition: CD_MeshODESolver.H:332
std::function< std::array< Real, N >(const std::array< Real, N > &, const Real)> RHSFunction
Alias for right-hand side.
Definition: CD_MeshODESolver.H:33
bool m_plotPhi
Plot solution vector or not.
Definition: CD_MeshODESolver.H:322
virtual void setName(const std::string &a_name) noexcept
Set solver name.
Definition: CD_MeshODESolverImplem.H:453
MeshODESolver(const MeshODESolver &)=delete
Disallowed copy constructor.
virtual void preRegrid(const int a_lbase, const int a_oldFinestLevel) noexcept
Perform pre-regrid operations.
Definition: CD_MeshODESolverImplem.H:392
bool m_plotRHS
Plot source term or not.
Definition: CD_MeshODESolver.H:327
virtual void setPhi(const std::function< Real(const RealVect &a_pos)> &a_phiFunc, const size_t a_comp) noexcept
Set phi for a specific component.
Definition: CD_MeshODESolverImplem.H:182
virtual void parseRuntimeOptions() noexcept
Parse run-time configurable class options.
Definition: CD_MeshODESolverImplem.H:87
MeshODESolver()
Default constructor. Must subsequently set everything through public member functions.
Definition: CD_MeshODESolverImplem.H:27
EBAMRCellData m_cache
Cache storage when doing regrids.
Definition: CD_MeshODESolver.H:368
virtual void registerOperators() const noexcept
Register operators for AMR operations.
Definition: CD_MeshODESolverImplem.H:465
virtual void setVerbosity(const int a_verbosity) noexcept
Set verbosity.
Definition: CD_MeshODESolverImplem.H:505
std::string m_name
Solver name.
Definition: CD_MeshODESolver.H:337
virtual void setRHS(const std::function< Real(const RealVect &a_pos)> &a_srcFunc, const size_t a_comp) noexcept
Set right-hand side for specified component.
Definition: CD_MeshODESolverImplem.H:267
std::string m_className
Class name.
Definition: CD_MeshODESolver.H:343
Real m_dt
Last time step increment.
Definition: CD_MeshODESolver.H:317
RefCountedPtr< AmrMesh > m_amr
Write checkpoint data into HDF5 file. @paramo[out] a_handle HDF5 file.
Definition: CD_MeshODESolver.H:297
virtual void setRealm(const std::string a_realm) noexcept
Set the realm for this solver.
Definition: CD_MeshODESolverImplem.H:481
EBAMRCellData & getPhi() noexcept
Get the solution vector (left-hand side of equation).
Definition: CD_MeshODESolverImplem.H:134
EBAMRCellData m_rhs
Source term (right-hand side of equation).
Definition: CD_MeshODESolver.H:363
virtual ~MeshODESolver()
Destructor.
Definition: CD_MeshODESolverImplem.H:50
std::string m_realm
Realm where solver is registered.
Definition: CD_MeshODESolver.H:348
virtual int getNumberOfPlotVariables() const noexcept
Get number of output fields.
Definition: CD_MeshODESolverImplem.H:580
virtual void parseOptions() noexcept
Parse class options.
Definition: CD_MeshODESolverImplem.H:69
Real m_time
Current time.
Definition: CD_MeshODESolver.H:312
int m_timeStep
Time step.
Definition: CD_MeshODESolver.H:307
virtual void parsePlotVariables() noexcept
Parse plot variables.
Definition: CD_MeshODESolverImplem.H:104
EBAMRCellData & getRHS() noexcept
Get the solution vector (left-hand side of equation).
Definition: CD_MeshODESolverImplem.H:158
virtual void setAmr(const RefCountedPtr< AmrMesh > &a_amrMesh) noexcept
Set AmrMesh.
Definition: CD_MeshODESolverImplem.H:57
EBAMRCellData m_phi
Solution vector (left hand side of equation).
Definition: CD_MeshODESolver.H:358
virtual void setPhase(phase::which_phase a_phase) noexcept
Set phase.
Definition: CD_MeshODESolverImplem.H:493
virtual void allocate() noexcept
Allocate internal storage.
Definition: CD_MeshODESolverImplem.H:379
virtual void setTime(const int a_step, const Real a_time, const Real a_dt) noexcept
Set the time for this solver.
Definition: CD_MeshODESolverImplem.H:517
phase::which_phase m_phase
Phase where solver data lives.
Definition: CD_MeshODESolver.H:353
virtual std::string getName() const noexcept
Get solver name.
Definition: CD_MeshODESolverImplem.H:441
MeshODESolver & operator=(const MeshODESolver &&)=delete
Disallowed move assignement operator.
virtual void computeRHS(const RHSFunction &a_rhsFunction) noexcept
Compute right-hand side from left-hand side. I.e. compute f = f(y,t).
Definition: CD_MeshODESolverImplem.H:279
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_MeshODESolverImplem.H:649
phase names
Definition: CD_MultiFluidIndexSpace.H:27