Template Class SemiDiscreteModel

Nested Relationships

Nested Types

Class Documentation

template<typename VectorType, typename MatrixType = ImmersXLA::MPI::SparseMatrix>
class SemiDiscreteModel

A term-wise semi-discrete residual model for F(t,y,ydot)=0.

Public Types

using Context = EvaluationContext<VectorType>
using Operation = dealii::PackagedOperation<VectorType>
using Operator = dealii::LinearOperator<VectorType, VectorType>
using MatrixOperator = MaterializedOperator<VectorType, MatrixType>
using ResidualFactory = std::function<Operation(const Context&)>
using OperatorFactory = std::function<Operator(const Context&)>
using MatrixOperatorFactory = std::function<MatrixOperator(const Context&)>
using SaddlePointMetadata = ImmersX::SaddlePointMetadata<VectorType, MatrixType>
using VectorReinitializer = std::function<void(VectorType&, bool)>
using PreconditionerFactory = std::function<Operator(const MatrixType&, const VectorReinitializer&)>

Public Functions

inline void evaluate_row(const FieldId row, const Context &context, VectorType &destination) const
inline Operator state_operator(const FieldId row, const FieldId column, const Context &context) const
inline std::optional<MatrixOperator> state_matrix_operator(const FieldId row, const FieldId column, const Context &context) const

Return a matrix-backed block, if every active term has provenance.

inline Operator derivative_operator(const FieldId row, const FieldId column, const Context &context) const
inline std::optional<MatrixOperator> derivative_matrix_operator(const FieldId row, const FieldId column, const Context &context) const

Return a materializable dF/dydot block, when available.

inline bool has_derivative_terms() const
inline bool has_preconditioner(const FieldId field) const
inline const std::vector<SaddlePointMetadata> &saddle_points() const
inline void add_multiplier_metric(const FieldId multiplier, MatrixOperatorFactory factory)
inline bool has_multiplier_metric(const FieldId multiplier) const
inline std::optional<MatrixOperator> multiplier_metric(const FieldId multiplier, const Context &context) const
inline std::optional<Operator> preconditioner(const FieldId field, const MatrixType &matrix, const VectorReinitializer &reinitializer) const
inline bool has_state_operator(const FieldId row, const FieldId column) const
inline bool has_derivative_operator(const FieldId row, const FieldId column) const

Friends

friend class detail::ExecutionComposition