13#ifndef CD_ADVECTIONDIFFUSIONSTEPPER_H
14#define CD_ADVECTIONDIFFUSIONSTEPPER_H
20#include <CD_NamespaceHeader.H>
23 namespace AdvectionDiffusion {
79 writeCheckpointData(HDF5Handle& a_handle,
const int a_lvl)
const override;
89 readCheckpointData(HDF5Handle& a_handle,
const int a_lvl)
override;
123 const std::string& a_outputRealm,
124 const int a_level)
const override;
176 preRegrid(
const int a_lbase,
const int a_oldFinestLevel)
override;
190 advance(
const Real a_dt)
override;
199 regrid(
const int a_lmin,
const int a_oldFinestLevel,
const int a_newFinestLevel)
override;
220 setInitialData(
const std::function<Real(
const RealVect& a_position)>& a_initData)
noexcept;
227 setVelocity(
const std::function<RealVect(
const RealVect& a_position)>& a_velocity)
noexcept;
269 std::function<RealVect(
const RealVect& a_position)>
m_velocity;
274 std::function<Real(
const RealVect& a_position)>
m_diffCo;
330#include <CD_NamespaceFooter.H>
Declaration of the Physics::AdvectionDiffusion::AdvectionDiffusionSpecies class.
Declaration of an abstract class for solving scalar convection-diffusion-reaction problems.
Declaration of main (abstract) time stepper class.
TimeStepper implementation for advancing a single advection-diffusion equation.
Definition CD_AdvectionDiffusionStepper.H:34
void registerOperators() override
Register the operators required by the solver.
Definition CD_AdvectionDiffusionStepper.cpp:176
RefCountedPtr< CdrSolver > m_solver
The CDR solver used for advancing the scalar field.
Definition CD_AdvectionDiffusionStepper.H:249
void printStepReport() override
Print a step report. No output is produced.
Definition CD_AdvectionDiffusionStepper.H:149
void synchronizeSolverTimes(const int a_step, const Real a_time, const Real a_dt) override
Update internal time/step counters and forward them to the solver.
Definition CD_AdvectionDiffusionStepper.cpp:457
void setupSolvers() override
Instantiate the species and configure the solver with realm, phase, and AMR data.
Definition CD_AdvectionDiffusionStepper.cpp:137
Integrator
Supported time integration methods.
Definition CD_AdvectionDiffusionStepper.H:241
@ Heun
Second-order explicit Heun (trapezoidal) method.
Definition CD_AdvectionDiffusionStepper.H:242
@ IMEX
IMEX: explicit advection, implicit (Crank-Nicholson) diffusion.
Definition CD_AdvectionDiffusionStepper.H:243
void postInitialize() override
Post-initialization hook. No operations are performed.
Definition CD_AdvectionDiffusionStepper.H:69
void writePlotData(LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string &a_outputRealm, const int a_level) const override
Write plot data into the output holder.
Definition CD_AdvectionDiffusionStepper.cpp:289
void regrid(const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
Regrid the solver and re-apply the flow fields on the new mesh.
Definition CD_AdvectionDiffusionStepper.cpp:483
void parseIntegrator()
Parse the integration method from ParmParse input.
Definition CD_AdvectionDiffusionStepper.cpp:112
virtual ~AdvectionDiffusionStepper()
Destructor.
Definition CD_AdvectionDiffusionStepper.cpp:86
void parseRuntimeOptions() override
Parse runtime options from ParmParse. Re-reads verbosity, CFL bounds, and integrator.
Definition CD_AdvectionDiffusionStepper.cpp:92
void postRegrid() override
Post-regrid hook. No operations are performed.
Definition CD_AdvectionDiffusionStepper.H:205
RefCountedPtr< AdvectionDiffusionSpecies > m_species
Species definition passed to the CDR solver.
Definition CD_AdvectionDiffusionStepper.H:254
int getNumberOfPlotVariables() const override
Return the number of output variables contributed by this stepper.
Definition CD_AdvectionDiffusionStepper.cpp:266
Real m_cfl
CFL number read from input.
Definition CD_AdvectionDiffusionStepper.H:294
void preRegrid(const int a_lbase, const int a_oldFinestLevel) override
Pre-regrid hook. Notifies the solver to store data before the mesh changes.
Definition CD_AdvectionDiffusionStepper.cpp:472
Integrator m_integrator
Selected time integration method.
Definition CD_AdvectionDiffusionStepper.H:319
Real m_minDt
Minimum permissible time step in seconds.
Definition CD_AdvectionDiffusionStepper.H:284
std::string m_realm
Name of the realm on which the solver operates.
Definition CD_AdvectionDiffusionStepper.H:259
bool m_debug
If true, print mass-conservation diagnostics to stdout after each step.
Definition CD_AdvectionDiffusionStepper.H:304
Vector< std::string > getPlotVariableNames() const override
Return the names of the output variables contributed by this stepper.
Definition CD_AdvectionDiffusionStepper.cpp:278
Real advance(const Real a_dt) override
Advance the solution by one time step using the selected integrator.
Definition CD_AdvectionDiffusionStepper.cpp:353
void initialData() override
Fill the solver with initial data and set velocity, diffusion coefficient, and source term.
Definition CD_AdvectionDiffusionStepper.cpp:199
Real m_maxDt
Maximum permissible time step in seconds.
Definition CD_AdvectionDiffusionStepper.H:289
void registerRealms() override
Register the Primal realm with the AMR mesh.
Definition CD_AdvectionDiffusionStepper.cpp:165
bool m_diffusive
If true, the scalar undergoes diffusion.
Definition CD_AdvectionDiffusionStepper.H:314
void setVelocity(const std::function< RealVect(const RealVect &a_position)> &a_velocity) noexcept
Override the velocity field functor.
Definition CD_AdvectionDiffusionStepper.cpp:526
std::function< Real(const RealVect &a_position)> m_diffCo
Functor providing the diffusion coefficient at a given position.
Definition CD_AdvectionDiffusionStepper.H:274
void setDiffusionCoefficient(const std::function< Real(const RealVect &a_position)> &a_diffusion) noexcept
Override the diffusion coefficient functor.
Definition CD_AdvectionDiffusionStepper.cpp:537
AdvectionDiffusionStepper()
Default constructor. Parses all options from ParmParse and sets default velocity, diffusion coefficie...
Definition CD_AdvectionDiffusionStepper.cpp:25
void setInitialData(const std::function< Real(const RealVect &a_position)> &a_initData) noexcept
Override the initial data functor.
Definition CD_AdvectionDiffusionStepper.cpp:515
std::function< RealVect(const RealVect &a_position)> m_velocity
Functor providing the advection velocity at a given position.
Definition CD_AdvectionDiffusionStepper.H:269
bool m_mobile
If true, the scalar is advected by the velocity field.
Definition CD_AdvectionDiffusionStepper.H:309
void setCFL(const Real a_cfl)
Force a specific CFL number, overriding the value read from input.
Definition CD_AdvectionDiffusionStepper.cpp:504
std::function< Real(const RealVect &a_initialData)> m_initialData
Functor providing the initial scalar concentration at a given position.
Definition CD_AdvectionDiffusionStepper.H:279
Real m_forceCFL
Programmatically forced CFL number. Overrides m_cfl when positive.
Definition CD_AdvectionDiffusionStepper.H:299
void allocate() override
Allocate internal storage in the solver.
Definition CD_AdvectionDiffusionStepper.cpp:188
void postCheckpointSetup() override
Post-checkpoint setup. Re-applies velocity, diffusion coefficient, source, and EB flux after a restar...
Definition CD_AdvectionDiffusionStepper.cpp:247
Real computeDt() override
Compute the next time step.
Definition CD_AdvectionDiffusionStepper.cpp:306
phase::which_phase m_phase
Computational phase (gas or solid) on which the solver operates.
Definition CD_AdvectionDiffusionStepper.H:264
Base class for advancing equations.
Definition CD_TimeStepper.H:31
Namespace containing physics models for use with chombo-discharge.
Definition CD_AdvectionDiffusion.H:16
which_phase
Enumeration of supported phases.
Definition CD_MultiFluidIndexSpace.H:38