TimeStepperSUNDIALS_IDA_BoostABM< VectorType, SparseMatrixType, dim, LinearSolver > Class Template Reference#

DiFfRG: DiFfRG::TimeStepperSUNDIALS_IDA_BoostABM< VectorType, SparseMatrixType, dim, LinearSolver > Class Template Reference
DiFfRG
Discretization Framework for functional Renormalization Group flows
DiFfRG::TimeStepperSUNDIALS_IDA_BoostABM< VectorType, SparseMatrixType, dim, LinearSolver > Class Template Reference

A class to perform time stepping using the Boost Adams-Bashforth-Moulton method for the explicit part and SUNDIALS IDA for the implicit part. This stepper uses fixed time steps in the explicit part and adaptive time steps in the implicit part. IDA acts as the controller and the ABM stepper solves the explicit part of the problem on-demand. More...

#include <sundials_ida_boost_abm.hh>

Inheritance diagram for DiFfRG::TimeStepperSUNDIALS_IDA_BoostABM< VectorType, SparseMatrixType, dim, LinearSolver >:
DiFfRG::AbstractTimestepper< VectorType, SparseMatrixType, dim >

Public Types

using NumberType = typename Base::NumberType
 
using InverseSparseMatrixType = typename Base::InverseSparseMatrixType
 
using BlockVectorType = typename Base::BlockVectorType
 

Public Member Functions

virtual void run (AbstractFlowingVariables< NumberType > *initial_condition, const double t_start, const double t_stop) override
 Any derived class must implement this method to run the timestepping algorithm.
 
- Public Member Functions inherited from DiFfRG::AbstractTimestepper< VectorType, SparseMatrixType, dim >
 AbstractTimestepper (const JSONValue &json, AbstractAssembler< VectorType, SparseMatrixType, dim > *assembler, DataOutput< dim, VectorType > *data_out=nullptr, AbstractAdaptor< VectorType > *adaptor=nullptr)
 Construct a new Abstract Timestepper object.
 
DataOutput< dim, VectorType > * get_data_out ()
 Utility function to obtain a DataOutput object. If no DataOutput object is provided, a default one is created.
 
AbstractAdaptor< VectorType > * get_adaptor ()
 Utility function to obtain an Adaptor object. If no Adaptor object is provided, a default one is created, which is the NoAdaptivity object, i.e. no mesh adaptivity is used.
 

Private Types

using Base = AbstractTimestepper< VectorType, SparseMatrixType, dim >
 

Private Member Functions

void run (BlockVectorType &initial_data, const double t_start, const double t_stop)
 
void update_variables (VectorType &variable_y, const VectorType &spatial_y, const double t)
 

Additional Inherited Members

- Protected Types inherited from DiFfRG::AbstractTimestepper< VectorType, SparseMatrixType, dim >
using VectorType = VectorType
 
using NumberType = typename get_type::NumberType< VectorType >
 
using SparseMatrixType = SparseMatrixType
 
using InverseSparseMatrixType = typename get_type::InverseSparseMatrixType< SparseMatrixType >
 
using BlockVectorType = dealii::BlockVector< NumberType >
 
- Protected Member Functions inherited from DiFfRG::AbstractTimestepper< VectorType, SparseMatrixType, dim >
void print_console_out (const std::string &name, const double t, const size_t milliseconds, const std::optional< std::string > calc_dt=std::nullopt, const size_t calls=0) const
 
void console_out (const double t, const std::string name, const int verbosity_level, const double calc_dt_ms=-1.0) const
 Pretty-print the status of the timestepping algorithm to the console.
 
- Static Protected Member Functions inherited from DiFfRG::AbstractTimestepper< VectorType, SparseMatrixType, dim >
static std::string console_out_category (const std::string &name)
 
static std::string format_uncertain_ms (const double mean_ms, const double uncertainty_ms)
 
- Protected Attributes inherited from DiFfRG::AbstractTimestepper< VectorType, SparseMatrixType, dim >
const JSONValue json
 
AbstractAssembler< VectorType, SparseMatrixType, dim > * assembler
 
DataOutput< dim, VectorType > * data_out
 
AbstractAdaptor< VectorType > * adaptor
 
const std::chrono::time_point< std::chrono::high_resolution_clock > start_time
 
std::shared_ptr< NoAdaptivity< VectorType > > adaptor_default
 
std::shared_ptr< DataOutput< dim, VectorType > > data_out_default
 
double Lambda
 
int verbosity
 
double output_dt
 
struct DiFfRG::AbstractTimestepper::ImplicitParameters impl
 
struct DiFfRG::AbstractTimestepper::ExplicitParameters expl
 
std::unordered_map< std::string, ConsoleOutStats > console_out_stats_by_category
 
- Static Protected Attributes inherited from DiFfRG::AbstractTimestepper< VectorType, SparseMatrixType, dim >
static constexpr uint dim
 
static constexpr size_t console_name_width
 

Detailed Description

template<typename VectorType, typename SparseMatrixType, uint dim, template< typename, typename > typename LinearSolver>
class DiFfRG::TimeStepperSUNDIALS_IDA_BoostABM< VectorType, SparseMatrixType, dim, LinearSolver >

A class to perform time stepping using the Boost Adams-Bashforth-Moulton method for the explicit part and SUNDIALS IDA for the implicit part. This stepper uses fixed time steps in the explicit part and adaptive time steps in the implicit part. IDA acts as the controller and the ABM stepper solves the explicit part of the problem on-demand.

Template Parameters
VectorTypeType of the vector
dimDimension of the problem

Member Typedef Documentation

◆ Base

◆ BlockVectorType

◆ InverseSparseMatrixType

◆ NumberType

Member Function Documentation

◆ run() [1/2]

Any derived class must implement this method to run the timestepping algorithm.

Parameters
initial_conditionA pointer to a flowing variables object that contains the initial condition.
t_startThe start time of the simulation.
t_stopThe run method will evolve the system from t_start to t_stop.

Implements DiFfRG::AbstractTimestepper< VectorType, SparseMatrixType, dim >.

◆ run() [2/2]

◆ update_variables()


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