Struct Rosenbrock::Tableau
Defined in File Rosenbrock.hpp
Nested Relationships
This struct is a nested type of Template Class Rosenbrock.
Struct Documentation
-
struct Tableau
A list of the coefficients needed to complete Rosenbrock integration in an accurate way. Each tableau can be considered a different method or scheme, and will have different properties, advantages, and disadvantages.
Public Functions
-
inline constexpr bool hasEmbedded() const
Whether or not this tableau contains an embedded error estimator method.
-
inline constexpr bool hasDenseOutput() const
Whether or not this tableau contains coefficients which can be used to construct dense output.
-
inline constexpr RealT getA(size_t row, size_t col) const
Helper function for accessing elements of
A
Public Members
-
size_t num_stages_
The number of stages used by the method. Each stage requires one model residual evaluation.
-
RealT gamma_
The coefficient along the diagonal of the Gamma matrix.
-
std::unique_ptr<RealT[]> alpha_sum_
A vector of sums of rows of the alpha matrix. These are the classic Runge-Kutta ‘c’ coefficients, or abscissae. The size of this vector should be equal to
num_stages.
-
std::unique_ptr<RealT[]> gamma_sum_
A vector of sums of rows of the Gamma matrix. The size of this vector should be equal to
num_stages.
-
std::unique_ptr<RealT[]> m_
A vector of weights for constructing the final solution from the stages. The size of this vector should be equal to
num_stages.
-
std::unique_ptr<RealT[]> e_
OPTIONAL vector of coefficients for the embedded error method. If it exists, the size of this vector should be equal to
num_stages.
-
std::unique_ptr<RealT[]> A_
The transformed A coefficient matrix. Strictly lower triangular and stored in dense row-major form. Upper triangular terms are not accessed. Should be
num_stagesbynum_stageslarge.
-
std::unique_ptr<RealT[]> C_
The transformed C coefficient matrix. Strictly lower triangular and stored in dense row-major form. Upper triangular terms are not accessed. Should be
num_stagesbynum_stageslarge.
-
std::unique_ptr<RealT[]> H_
OPTIONAL matrix of dense coefficients. Defines how the stages should be transformed into interpolant nodes for computing dense output. The interpolating polynomial has an order one less than the order of the method, and two interpolant nodes are already pre-computed, so if this matrix exists it should be
order- 2 bynum_stageslarge.
-
uint8_t order_
What ODE order these coefficients satisfy. If
is_daeis true, then the coefficients must additionally satisfy DAE conditions up to this order. Ifis_wis true, then the coefficients must additionally satisfy ROW conditions up to this order. Ifis_krylovis true, then the coefficients must additionally satisfy ROK condition up to this order.
-
bool is_krylov_
Whether or not these coefficients are appropriate to use in a Rosenbrock-Krylov (ROK) solver.
-
bool is_w_
Whether or not these coefficients satisfy Rosenbrock-W (ROW) order conditions up to
order. The integrator may take advantage of this fact by e.g. using time-delay Jacobians to speed up computation.
-
bool is_dae_
Whether or not these coefficients satisfy DAE order conditions up to
order. If this is not true, these coefficients should not be used to solve models with algebraic conditions (indicated by aModel::Evaluator::tag_value of 0).
-
inline constexpr bool hasEmbedded() const