Struct Rosenbrock::Tableau

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_stages by num_stages large.

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_stages by num_stages large.

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 by num_stages large.

uint8_t order_

What ODE order these coefficients satisfy. If is_dae is true, then the coefficients must additionally satisfy DAE conditions up to this order. If is_w is true, then the coefficients must additionally satisfy ROW conditions up to this order. If is_krylov is 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 a Model::Evaluator::tag_ value of 0).