/home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/timestepping/explicit_euler.hh Source File#

DiFfRG: /home/runner/work/DiFfRG_current/DiFfRG_current/DiFfRG/include/DiFfRG/timestepping/explicit_euler.hh Source File
DiFfRG
Discretization Framework for functional Renormalization Group flows
explicit_euler.hh
Go to the documentation of this file.
1#pragma once
2
3// DiFfRG
11
12namespace DiFfRG
13{
14 template <typename VectorType, typename SparseMatrixType = dealii::SparseMatrix<get_type::NumberType<VectorType>>,
15 uint dim = 0>
16 class TimeStepperExplicitEuler_impl : public AbstractTimestepper<VectorType, SparseMatrixType, dim>
17 {
19
20 public:
21 using NumberType = typename Base::NumberType;
24
31 : Base(config, assembler, data_out, /*implicit=*/false, /*explicit=*/true)
32 {
33 }
36 : Base(config, assembler, data_out, adaptor, /*implicit=*/false, /*explicit=*/true)
37 {
38 }
40
41 virtual void run(AbstractFlowingVariables<NumberType, VectorType> &initial_condition, const double t_start,
42 const double t_stop) override;
43 };
44
45 // ##############################################################################
46 // Application-facing spelling
47 // ##############################################################################
48 //
49 // The class above takes the linear algebra spelled out because it is compiled out of line: the
50 // set of valid arguments is closed by the explicit instantiations in src/, and keying it on the
51 // assembler would explode that set into one instantiation per model. Applications name the
52 // assembler instead and let these aliases project it onto that fixed parameter list.
53 //
54 // The argument is anything exposing VectorType, SparseMatrixType and dim -- an Assembler, or a
55 // Discretization where the assembler type is not a single type (e.g. a test that runs one
56 // discretization against several models).
57 template <typename Assembler>
58 using TimeStepperExplicitEuler = TimeStepperExplicitEuler_impl<typename Assembler::VectorType,
59 typename Assembler::SparseMatrixType, Assembler::dim>;
60} // namespace DiFfRG
Implement a simple interface to do all adaptivity tasks, i.e. solution transfer, reinit of dofHandler...
Definition abstract_adaptor.hh:11
This is the general assembler interface for any kind of discretization. An assembler is responsible f...
Definition abstract_assembler.hh:54
A class to set up initial data for whatever discretization we have chosen. Also used to switch/manage...
Definition abstract_data.hh:21
The abstract base class for all timestepping algorithms. It provides a standard constructor which pop...
Definition abstract_timestepper.hh:155
struct DiFfRG::AbstractTimestepper::ExplicitParameters expl
typename get_type::BlockVectorType< VectorType > BlockVectorType
Definition abstract_timestepper.hh:169
AbstractAssembler< VectorType, SparseMatrixType, dim > & assembler
Definition abstract_timestepper.hh:309
OutputSession_impl< dim, VectorType > & data_out
Definition abstract_timestepper.hh:310
AbstractAdaptor< VectorType > & adaptor
Definition abstract_timestepper.hh:311
typename get_type::NumberType< VectorType > NumberType
Definition abstract_timestepper.hh:159
const ConfigTree config
Definition abstract_timestepper.hh:307
struct DiFfRG::AbstractTimestepper::ImplicitParameters impl
double output_dt
Definition abstract_timestepper.hh:318
A hierarchical configuration tree, readable from JSON and TOML files.
Definition config_tree.hh:32
Definition output_session.hh:176
Definition explicit_euler.hh:17
typename Base::BlockVectorType BlockVectorType
Definition explicit_euler.hh:23
typename get_type::InverseSparseMatrixType< SparseMatrixType > InverseSparseMatrixType
Definition explicit_euler.hh:22
virtual void run(AbstractFlowingVariables< NumberType, VectorType > &initial_condition, const double t_start, const double t_stop) override
TimeStepperExplicitEuler_impl(const ConfigTree &config, AbstractAssembler< VectorType, SparseMatrixType, dim > &assembler, OutputSession_impl< dim, VectorType > &data_out)
Definition explicit_euler.hh:29
TimeStepperExplicitEuler_impl(const ConfigTree &config, AbstractAssembler< VectorType, SparseMatrixType, dim > &assembler, OutputSession_impl< dim, VectorType > &data_out, AbstractAdaptor< VectorType > &adaptor)
Definition explicit_euler.hh:34
typename Base::NumberType NumberType
Definition explicit_euler.hh:21
All compile-time knowledge about which linear algebra types DiFfRG uses.
typename internal::_InverseSparseMatrixType< SparseMatrixType >::value InverseSparseMatrixType
Definition linear_algebra.hh:158
Definition complex_math.hh:10
@ config
/discretization/threads.