chombo-discharge
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Physics::MeshODE::MeshODEStepper< N > Class Template Reference

Implementation of TimeStepper for solving an ODE on a mesh. N is the number of variables. More...

#include <CD_MeshODEStepper.H>

Inheritance diagram for Physics::MeshODE::MeshODEStepper< N >:
Inheritance graph
[legend]
Collaboration diagram for Physics::MeshODE::MeshODEStepper< N >:
Collaboration graph
[legend]

Public Member Functions

 MeshODEStepper ()
 Constructor. Does nothing.
 
 MeshODEStepper (const MeshODEStepper< N > &)=delete
 Copy constructor. Disallowed.
 
 MeshODEStepper (const MeshODEStepper< N > &&)=delete
 Move constructor. Disallowed.
 
virtual ~MeshODEStepper ()
 Destructor.
 
MeshODEStepperoperator= (const MeshODEStepper< N > &)=delete
 Copy assignment operator. Disallowed.
 
MeshODEStepperoperator= (const MeshODEStepper< N > &&)=delete
 Move assignment operator. Disallowed.
 
void setupSolvers () override
 Instantiate the ODE solver.
 
void allocate () override
 Allocate storage for solvers and time stepper.
 
void initialData () override
 Fill problem with initial data.
 
void postInitialize () override
 Perform any post-initialization steps.
 
void postCheckpointSetup () override
 Post checkpoint operations.
 
void registerRealms () override
 Register realms. Primal is the only realm we need.
 
void registerOperators () override
 Register operators. More...
 
void parseOptions ()
 Parse options.
 
void parseRuntimeOptions () override
 Parse runtime options.
 
virtual int getNumberOfPlotVariables () const override
 Get the number of plot variables for this time stepper. More...
 
virtual Vector< std::string > getPlotVariableNames () const override
 Get plot variable names.
 
virtual void writePlotData (LevelData< EBCellFAB > &a_output, int &a_icomp, const std::string a_outputRealm, const int a_level) const override
 Write plot data to output holder. More...
 
virtual Real computeDt () override
 Compute a time step to be used by Driver.
 
virtual Real advance (const Real a_dt) override
 Advancement method. Swaps between various kernels. More...
 
virtual void synchronizeSolverTimes (const int a_step, const Real a_time, const Real a_dt) override
 Synchronize solver times and time steps. More...
 
virtual void printStepReport () override
 Print a step report. More...
 
virtual void preRegrid (const int a_lmin, const int a_oldFinestLevel) override
 Perform pre-regrid operations. More...
 
virtual void regrid (const int a_lmin, const int a_oldFinestLevel, const int a_newFinestLevel) override
 Time stepper regrid method. More...
 
virtual void postRegrid () override
 Perform post-regrid operations. More...
 
- Public Member Functions inherited from TimeStepper
 TimeStepper ()
 Default constructor (does nothing)
 
virtual ~TimeStepper ()
 Default destructor (does nothing)
 
void setAmr (const RefCountedPtr< AmrMesh > &a_amr)
 Set AmrMesh. More...
 
void setComputationalGeometry (const RefCountedPtr< ComputationalGeometry > &a_computationalGeometry)
 Set the computational geometry. More...
 
virtual void prePlot ()
 An option for calling special functions prior to plotting data. Called by Driver in the IMMEDIATELY before writing the plot file.
 
virtual void postPlot ()
 An option for calling special functions prior to plotting data. Called by Driver in the IMMEDIATELY after writing the plot file.
 
virtual Vector< long int > getCheckpointLoads (const std::string a_realm, const int a_level) const
 Get computational loads to be checkpointed. More...
 
virtual bool needToRegrid ()
 Fuction which can have Driver do regrids at arbitrary points in the simulation. More...
 
virtual bool loadBalanceThisRealm (const std::string a_realm) const
 Load balancing query for a specified realm. If this returns true for a_realm, load balancing routines will be called during regrids. More...
 
virtual void loadBalanceBoxes (Vector< Vector< int >> &a_procs, Vector< Vector< Box >> &a_boxes, const std::string a_realm, const Vector< DisjointBoxLayout > &a_grids, const int a_lmin, const int a_finestLevel)
 Load balance grid boxes for a specified realm. More...
 

Protected Member Functions

virtual void parseIntegrator ()
 Parse integrator.
 
virtual void parseVerbosity ()
 Parse chattiness.
 
virtual void parseProblem ()
 Parse the problem type.
 
virtual void advanceEuler (const Real a_dt)
 Advance using the explicit Euler rule. More...
 
virtual void advanceRK2 (const Real a_dt)
 Advance using a second-order Runge-Kutta method. More...
 
virtual void advanceRK4 (const Real a_dt)
 Advance using a fourth order Runge-Kutta method. More...
 

Protected Attributes

IntegrationAlgorithm m_algorithm
 Integration algorithm.
 
Real m_dt
 Time step to use.
 
std::string m_realm
 Realm where solver and m_velocity lives.
 
phase::which_phase m_phase
 Phase (gas/solid) where the solver lives.
 
RefCountedPtr< MeshODESolver< N > > m_solver
 Tracer particle solvers.
 
std::function< std::array< Real, N >const std::array< Real, N > y, Real t)> m_rhsFunction
 Encapsulation of f = f(y,t)
 
std::function< std::array< Real, N >const RealVect &a_position)> m_initialData
 Initial data function.
 
- Protected Attributes inherited from TimeStepper
int m_verbosity
 Class verbosity.
 
int m_timeStep
 Time step.
 
Real m_time
 TIme.
 
Real m_dt
 Previous time step size.
 
RefCountedPtr< AmrMeshm_amr
 AmrMesh.
 
RefCountedPtr< ComputationalGeometrym_computationalGeometry
 Computational geometry.
 

Detailed Description

template<size_t N>
class Physics::MeshODE::MeshODEStepper< N >

Implementation of TimeStepper for solving an ODE on a mesh. N is the number of variables.

Member Function Documentation

◆ advance()

template<size_t N>
Real MeshODEStepper::advance ( const Real  a_dt)
overridevirtual

Advancement method. Swaps between various kernels.

Parameters
[in]a_dtTime step to be used for advancement
Returns
Returns the time step that was used (equal to a_dt in this case).

Implements TimeStepper.

◆ advanceEuler()

template<size_t N>
void MeshODEStepper::advanceEuler ( const Real  a_dt)
protectedvirtual

Advance using the explicit Euler rule.

Parameters
[in]a_dtAdvanced time step

◆ advanceRK2()

template<size_t N>
void MeshODEStepper::advanceRK2 ( const Real  a_dt)
protectedvirtual

Advance using a second-order Runge-Kutta method.

Parameters
[in]a_dtAdvanced time step

◆ advanceRK4()

template<size_t N>
void MeshODEStepper::advanceRK4 ( const Real  a_dt)
protectedvirtual

Advance using a fourth order Runge-Kutta method.

Parameters
[in]a_dtAdvanced time step

◆ getNumberOfPlotVariables()

template<size_t N>
int MeshODEStepper::getNumberOfPlotVariables
overridevirtual

Get the number of plot variables for this time stepper.

This is necessary because Driver, not TimeStepper, is responsible for allocating the necessary memory.

Returns
Returns number of plot variables that will be written during writePlotData

Implements TimeStepper.

◆ postRegrid()

template<size_t N>
void MeshODEStepper::postRegrid
overridevirtual

Perform post-regrid operations.

This includes all operations to be done AFTER interpolating data to new grids.

Implements TimeStepper.

◆ preRegrid()

template<size_t N>
void MeshODEStepper::preRegrid ( const int  a_lmin,
const int  a_oldFinestLevel 
)
overridevirtual

Perform pre-regrid operations.

Parameters
[in]a_lminThe coarsest level that changes
[in]a_oldFinestLevelThe finest level before the regrid.

Implements TimeStepper.

◆ printStepReport()

template<size_t N>
virtual void Physics::MeshODE::MeshODEStepper< N >::printStepReport ( )
inlineoverridevirtual

Print a step report.

This is called by Driver after time step. The routine can be used to display use information about the simulation progress. Not used by this class.

Implements TimeStepper.

◆ registerOperators()

template<size_t N>
void MeshODEStepper::registerOperators
overridevirtual

Register operators.

Only need the solver's operators.

Implements TimeStepper.

◆ regrid()

template<size_t N>
void MeshODEStepper::regrid ( const int  a_lmin,
const int  a_oldFinestLevel,
const int  a_newFinestLevel 
)
overridevirtual

Time stepper regrid method.

Parameters
[in]a_lminThe coarsest level that changed.
[in]a_oldFinestLevelThe finest level before the regrid.
[in]a_newFinestLevelThe finest level after the regrid.

Implements TimeStepper.

◆ synchronizeSolverTimes()

template<size_t N>
void MeshODEStepper::synchronizeSolverTimes ( const int  a_step,
const Real  a_time,
const Real  a_dt 
)
overridevirtual

Synchronize solver times and time steps.

Parameters
[in]a_stepTime step
[in]a_timeTime (in seconds)
[in]a_dtTime step that was used.

Implements TimeStepper.

◆ writePlotData()

template<size_t N>
void MeshODEStepper::writePlotData ( LevelData< EBCellFAB > &  a_output,
int &  a_icomp,
const std::string  a_outputRealm,
const int  a_level 
) const
overridevirtual

Write plot data to output holder.

Parameters
[in,out]a_outputOutput data holder.
[in,out]a_icompStarting component in a_output to begin at. @Ď€param[in] a_outputRealm Realm where a_output belongs
[in]a_levelGrid level

Implements TimeStepper.


The documentation for this class was generated from the following files: