numerical-collection-cpp 0.10.0
A collection of algorithms in numerical analysis implemented in C++
Loading...
Searching...
No Matches
num_collect::ode::embedded_solver< Formula, StepSizeController > Class Template Reference

Class of solvers of ODEs using embedded formulas. More...

#include <num_collect/ode/embedded_solver.h>

+ Inheritance diagram for num_collect::ode::embedded_solver< Formula, StepSizeController >:
+ Collaboration diagram for num_collect::ode::embedded_solver< Formula, StepSizeController >:

Public Types

using base_type
 Type of base class.
 
using formula_type
 Type of formula.
 
using problem_type
 Type of problem.
 
using scalar_type
 Type of scalars.
 
using step_size_controller_type = StepSizeController
 Type of the controller of step sizes.
 
using this_type = embedded_solver<Formula, StepSizeController>
 This type.
 
using variable_type
 Type of variables.
 
- Public Types inherited from num_collect::ode::solver_base< Derived, Formula >
using formula_type = Formula
 Type of formula.
 
using problem_type = typename formula_type::problem_type
 Type of problem.
 
using scalar_type = typename problem_type::scalar_type
 Type of scalars.
 
using variable_type = typename problem_type::variable_type
 Type of variables.
 

Public Member Functions

void configure_iteration_logger (logging::iterations::iteration_logger< this_type > &iteration_logger) const
 Configure an iteration logger.
 
auto error_norm () const -> scalar_type
 Get the estimate of error in the current variable.
 
auto formula () -> formula_type &
 Get the formula.
 
auto formula () const -> const formula_type &
 Get the formula.
 
void init (scalar_type time, const variable_type &variable)
 Initialize.
 
auto last_step_size () const -> scalar_type
 Get the step size used in the last step.
 
auto problem () -> problem_type &
 Get the problem.
 
auto problem () const -> const problem_type &
 Get the problem.
 
void step ()
 Compute the variable of the next step.
 
auto step_size () const -> scalar_type
 Get the step size.
 
auto step_size (scalar_type val) -> this_type &
 Set the step size.
 
auto step_size_controller () -> step_size_controller_type &
 Access the controller of step sizes.
 
auto step_size_controller () const -> const step_size_controller_type &
 Access the controller of step sizes.
 
auto steps () const -> index_type
 Get the number of steps.
 
auto time () const -> scalar_type
 Get the current time.
 
auto tolerances (const error_tolerances< variable_type > &val) -> embedded_solver &
 Set the error tolerances.
 
auto variable () const -> const variable_type &
 Get the current variable.
 
- Public Member Functions inherited from num_collect::ode::solver_base< Derived, Formula >
 solver_base (const problem_type &problem)
 Constructor.
 
auto formula () -> formula_type &
 Get the formula.
 
auto formula () const -> const formula_type &
 Get the formula.
 
void init (scalar_type time, const variable_type &variable)
 Initialize.
 
auto problem () -> problem_type &
 Get the problem.
 
auto problem () const -> const problem_type &
 Get the problem.
 
void solve_till (scalar_type end_time)
 Compute the variable at the given time.
 
void step ()
 Compute the variable of the next step.
 
auto step_size () const -> scalar_type
 Get the step size.
 
auto step_size (scalar_type val) -> Derived &
 Set the step size.
 
auto steps () const -> index_type
 Get the number of steps.
 
auto time () const -> scalar_type
 Get the current time.
 
auto variable () const -> const variable_type &
 Get the current variable.
 
- Public Member Functions inherited from num_collect::logging::logging_mixin
 logging_mixin (log_tag_view tag)
 Constructor.
 
template<typename Child>
void configure_child_algorithm_logger_if_exists (Child &child)
 Configure a logger of a child algorithm if exists.
 
auto logger () const noexcept -> const num_collect::logging::logger &
 Access to the logger.
 
auto logger () noexcept -> num_collect::logging::logger &
 Access to the logger.
 
- Public Member Functions inherited from num_collect::logging::iterations::iteration_logger_mixin< Derived >
 iteration_logger_mixin ()=default
 Constructor.
 
void configure_iteration_logger (num_collect::logging::iterations::iteration_logger< Derived > &iteration_logger) const
 Configure an iteration logger.
 
auto initialize_iteration_logger () -> num_collect::logging::iterations::iteration_logger< Derived > &
 Get the iteration logger.
 

Static Public Attributes

static constexpr index_type lesser_order = formula_type::lesser_order
 Order of lesser coefficients of this formula.
 
- Static Public Attributes inherited from num_collect::ode::solver_base< Derived, Formula >
static constexpr index_type order = formula_type::order
 Order of the formula.
 
static constexpr index_type stages = formula_type::stages
 Number of stages of the formula.
 

Static Private Member Functions

static auto norm (const variable_type &var) -> scalar_type
 Get the norm of a variable.
 

Private Attributes

variable_type error_ {}
 Estimate of error.
 
scalar_type last_step_size_ {std::numeric_limits<scalar_type>::quiet_NaN()}
 Step size used in the last step.
 
variable_type prev_variable_ {}
 Previous variable.
 
std::optional< scalar_typestep_size_ {}
 Step size used in the next step.
 
step_size_controller_type step_size_controller_ {}
 Controller of step sizes.
 
index_type steps_ {}
 Number of steps.
 
scalar_type time_ {}
 Time.
 
variable_type variable_ {}
 Variable.
 

Additional Inherited Members

- Protected Member Functions inherited from num_collect::ode::solver_base< Derived, Formula >
auto derived () const noexcept -> const Derived &
 Access derived object.
 
auto derived () noexcept -> Derived &
 Access derived object.
 

Detailed Description

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
class num_collect::ode::embedded_solver< Formula, StepSizeController >

Class of solvers of ODEs using embedded formulas.

Template Parameters
FormulaType of formula.
StepSizeControllerType of the controller of step sizes.

Definition at line 53 of file embedded_solver.h.

Member Typedef Documentation

◆ base_type

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
using num_collect::ode::embedded_solver< Formula, StepSizeController >::base_type
Initial value:
solver_base(const problem_type &problem)
Constructor.
Definition solver_base.h:63

Type of base class.

Definition at line 61 of file embedded_solver.h.

◆ formula_type

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
using num_collect::ode::solver_base< embedded_solver< Formula, StepSizeController >, Formula >::formula_type

Type of formula.

Definition at line 41 of file solver_base.h.

◆ problem_type

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
using num_collect::ode::solver_base< embedded_solver< Formula, StepSizeController >, Formula >::problem_type

Type of problem.

Definition at line 44 of file solver_base.h.

◆ scalar_type

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
using num_collect::ode::solver_base< embedded_solver< Formula, StepSizeController >, Formula >::scalar_type

Type of scalars.

Definition at line 50 of file solver_base.h.

◆ step_size_controller_type

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
using num_collect::ode::embedded_solver< Formula, StepSizeController >::step_size_controller_type = StepSizeController

Type of the controller of step sizes.

Definition at line 70 of file embedded_solver.h.

◆ this_type

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
using num_collect::ode::embedded_solver< Formula, StepSizeController >::this_type = embedded_solver<Formula, StepSizeController>

This type.

Definition at line 58 of file embedded_solver.h.

◆ variable_type

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
using num_collect::ode::solver_base< embedded_solver< Formula, StepSizeController >, Formula >::variable_type

Type of variables.

Definition at line 47 of file solver_base.h.

Member Function Documentation

◆ configure_iteration_logger()

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
void num_collect::ode::embedded_solver< Formula, StepSizeController >::configure_iteration_logger ( logging::iterations::iteration_logger< this_type > & iteration_logger) const
inline

Configure an iteration logger.

Parameters
[in]iteration_loggerIteration logger.

Definition at line 131 of file embedded_solver.h.

◆ error_norm()

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::embedded_solver< Formula, StepSizeController >::error_norm ( ) const -> scalar_type
inlinenodiscard

Get the estimate of error in the current variable.

Returns
Estimate of error.

Definition at line 173 of file embedded_solver.h.

◆ formula() [1/2]

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::solver_base< embedded_solver< Formula, StepSizeController >, Formula >::formula ( ) -> formula_type&
inlinenodiscard

Get the formula.

Returns
Formula.

Definition at line 119 of file solver_base.h.

◆ formula() [2/2]

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::solver_base< embedded_solver< Formula, StepSizeController >, Formula >::formula ( ) const -> const formula_type&
inlinenodiscard

Get the formula.

Returns
Formula.

Definition at line 126 of file solver_base.h.

◆ init()

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
void num_collect::ode::embedded_solver< Formula, StepSizeController >::init ( scalar_type time,
const variable_type & variable )
inline

Initialize.

Parameters
[in]timeInitial time.
[in]variableInitial variable.

Definition at line 83 of file embedded_solver.h.

◆ last_step_size()

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::embedded_solver< Formula, StepSizeController >::last_step_size ( ) const -> scalar_type
inlinenodiscard

Get the step size used in the last step.

Returns
Step size used in the last step.

Definition at line 164 of file embedded_solver.h.

◆ norm()

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
static auto num_collect::ode::embedded_solver< Formula, StepSizeController >::norm ( const variable_type & var) -> scalar_type
inlinestaticnodiscardprivate

Get the norm of a variable.

Parameters
[in]varVariable.
Returns
Norm.

Definition at line 232 of file embedded_solver.h.

◆ problem() [1/2]

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::solver_base< embedded_solver< Formula, StepSizeController >, Formula >::problem ( ) -> problem_type&
inlinenodiscard

Get the problem.

Returns
Problem.

Definition at line 135 of file solver_base.h.

◆ problem() [2/2]

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::solver_base< embedded_solver< Formula, StepSizeController >, Formula >::problem ( ) const -> const problem_type&
inlinenodiscard

Get the problem.

Returns
Problem.

Definition at line 142 of file solver_base.h.

◆ step()

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
void num_collect::ode::embedded_solver< Formula, StepSizeController >::step ( )
inline

Compute the variable of the next step.

Warning
init function is assumed to have been called before call to step function.

Definition at line 106 of file embedded_solver.h.

◆ step_size() [1/2]

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::embedded_solver< Formula, StepSizeController >::step_size ( ) const -> scalar_type
inlinenodiscard

Get the step size.

Returns
Step size.

Definition at line 152 of file embedded_solver.h.

◆ step_size() [2/2]

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::embedded_solver< Formula, StepSizeController >::step_size ( scalar_type val) -> this_type&
inline

Set the step size.

Parameters
[in]valValue.
Returns
This object.

Definition at line 181 of file embedded_solver.h.

◆ step_size_controller() [1/2]

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::embedded_solver< Formula, StepSizeController >::step_size_controller ( ) -> step_size_controller_type&
inlinenodiscard

Access the controller of step sizes.

Returns
Reference of the controller.

Definition at line 193 of file embedded_solver.h.

◆ step_size_controller() [2/2]

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::embedded_solver< Formula, StepSizeController >::step_size_controller ( ) const -> const step_size_controller_type&
inlinenodiscard

Access the controller of step sizes.

Returns
Reference of the controller.

Definition at line 202 of file embedded_solver.h.

◆ steps()

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::embedded_solver< Formula, StepSizeController >::steps ( ) const -> index_type
inlinenodiscard

Get the number of steps.

Returns
Number of steps.

Definition at line 178 of file embedded_solver.h.

◆ time()

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::embedded_solver< Formula, StepSizeController >::time ( ) const -> scalar_type
inlinenodiscard

Get the current time.

Returns
Current time.

Definition at line 144 of file embedded_solver.h.

◆ tolerances()

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::embedded_solver< Formula, StepSizeController >::tolerances ( const error_tolerances< variable_type > & val) -> embedded_solver&
inline

Set the error tolerances.

Parameters
[in]valValue.
Returns
This.

Definition at line 213 of file embedded_solver.h.

◆ variable()

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
auto num_collect::ode::embedded_solver< Formula, StepSizeController >::variable ( ) const -> const variable_type&
inlinenodiscard

Get the current variable.

Returns
Current variable.

Definition at line 147 of file embedded_solver.h.

Member Data Documentation

◆ error_

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
variable_type num_collect::ode::embedded_solver< Formula, StepSizeController >::error_ {}
private

Estimate of error.

Definition at line 254 of file embedded_solver.h.

◆ last_step_size_

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
scalar_type num_collect::ode::embedded_solver< Formula, StepSizeController >::last_step_size_ {std::numeric_limits<scalar_type>::quiet_NaN()}
private

Step size used in the last step.

Definition at line 251 of file embedded_solver.h.

◆ lesser_order

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
index_type num_collect::ode::embedded_solver< Formula, StepSizeController >::lesser_order = formula_type::lesser_order
staticconstexpr

Order of lesser coefficients of this formula.

Definition at line 76 of file embedded_solver.h.

◆ prev_variable_

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
variable_type num_collect::ode::embedded_solver< Formula, StepSizeController >::prev_variable_ {}
private

Previous variable.

Definition at line 242 of file embedded_solver.h.

◆ step_size_

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
std::optional<scalar_type> num_collect::ode::embedded_solver< Formula, StepSizeController >::step_size_ {}
private

Step size used in the next step.

Definition at line 248 of file embedded_solver.h.

◆ step_size_controller_

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
step_size_controller_type num_collect::ode::embedded_solver< Formula, StepSizeController >::step_size_controller_ {}
private

Controller of step sizes.

Definition at line 257 of file embedded_solver.h.

◆ steps_

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
index_type num_collect::ode::embedded_solver< Formula, StepSizeController >::steps_ {}
private

Number of steps.

Definition at line 263 of file embedded_solver.h.

◆ time_

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
scalar_type num_collect::ode::embedded_solver< Formula, StepSizeController >::time_ {}
private

Time.

Definition at line 260 of file embedded_solver.h.

◆ variable_

template<concepts::embedded_formula Formula, concepts::step_size_controller StepSizeController = pi_step_size_controller<Formula>>
variable_type num_collect::ode::embedded_solver< Formula, StepSizeController >::variable_ {}
private

Variable.

Definition at line 245 of file embedded_solver.h.


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