Template Class ExecutionComposition¶
Defined in File execution_composition.h
Nested Relationships¶
Nested Types¶
Class Documentation¶
-
template<typename FieldVectorType, typename GlobalVectorType>
class ExecutionComposition¶ Private shared execution composition used by steady and IDA adapters.
Applications only interact with the adapters and semantic FieldIds.
Public Types
-
using Model = SemiDiscreteModel<FieldVectorType>¶
-
using Builder = SemidiscreteBuilder<FieldVectorType>¶
-
using Operator = dealii::LinearOperator<GlobalVectorType>¶
-
using BlockMatrixType = ImmersXLA::MPI::BlockSparseMatrix¶
Public Functions
-
inline explicit ExecutionComposition(const MPI_Comm communicator)¶
-
template<typename Problem, typename ...Arguments>
inline auto add(const Problem &problem, const std::string &prefix, const Arguments&... arguments)¶
-
inline GlobalVectorType make_state() const¶
-
inline void reinit(GlobalVectorType &state) const¶
-
inline FieldVectorType &field(GlobalVectorType &state, const FieldId id) const¶
-
inline const FieldVectorType &field(const GlobalVectorType &state, const FieldId id) const¶
-
inline void evaluate_residual(const double time, const GlobalVectorType &state, const GlobalVectorType *state_dot, GlobalVectorType &residual, const TermSelection &terms = {}) const¶
-
inline Operator jacobian(const double time, const GlobalVectorType &state, const GlobalVectorType *state_dot, const double alpha, const TermSelection &terms = {}) const¶
-
inline std::shared_ptr<Snapshot> make_snapshot(const double time, const GlobalVectorType &state, const GlobalVectorType &state_dot) const¶
-
inline std::shared_ptr<StateSnapshot> make_snapshot(const double time, const GlobalVectorType &state) const¶
-
inline Operator jacobian(const EvaluationContext<FieldVectorType> &context, const double alpha) const¶
-
inline dealii::IndexSet differential_components() const¶
-
inline dealii::IndexSet differential_components(const GlobalVectorType &state) const¶
-
inline unsigned int n_fields() const¶
-
inline std::optional<typename Model::MatrixOperator> state_matrix_operator(const GlobalVectorType &state, const FieldId row, const FieldId column, const double time = 0.) const¶
-
inline const StateLayout &state_layout() const¶
-
inline MPI_Comm communicator() const¶
-
inline bool can_materialize_matrix(const GlobalVectorType &state, const GlobalVectorType *state_dot = nullptr, const double alpha = 0.) const¶
-
inline BlockMatrixType block_matrix(const GlobalVectorType &state, const GlobalVectorType *state_dot = nullptr, const double alpha = 0.) const¶
Materialize the current linearization as a true block sparse matrix.
-
inline void monolithic_matrix(const BlockMatrixType &block_matrix, MatrixType &result) const¶
Convert a block matrix to its concatenated monolithic sparse matrix.
-
inline MatrixType monolithic_matrix(const BlockMatrixType &block_matrix) const¶
-
inline MatrixType monolithic_matrix(const GlobalVectorType &state, const GlobalVectorType *state_dot = nullptr, const double alpha = 0.) const¶
-
inline void monolithic_matrix(const GlobalVectorType &state, MatrixType &result, const GlobalVectorType *state_dot = nullptr, const double alpha = 0.) const¶
-
inline bool has_complete_local_preconditioners() const¶
-
inline const std::vector<SaddlePointMetadata> &saddle_points() const¶
-
inline LocalOperator schur_operator(const FieldId multiplier, const GlobalVectorType &state, const GlobalVectorType *state_dot = nullptr, const double alpha = 0.) const¶
Build S ~= sum_i B_i P_i^-1 B_i^T on a semantic multiplier field.
-
inline Operator schur_preconditioner(const FieldId multiplier, const GlobalVectorType &state, const GlobalVectorType *state_dot = nullptr, const double alpha = 0., const unsigned int maximum_iterations = 1000, const double tolerance = 1.e-10) const¶
Build a global block-factorization preconditioner using a Schur solve.
-
inline Operator augmented_lagrangian_operator(const GlobalVectorType &state, const double gamma = 1.e1, const GlobalVectorType *state_dot = nullptr, const double alpha = 0.) const¶
Apply A_gamma = A + gamma B^T W^-1 B on the coupled state.
-
inline BlockMatrixType augmented_lagrangian_matrix(const GlobalVectorType &state, const double gamma = 1.e1, const GlobalVectorType *state_dot = nullptr, const double alpha = 0.) const¶
Materialize the matrix A + gamma B^T diag(W^{-1}) B.
The multiplier metric is intentionally reduced to its diagonal here: this is the matrix-based counterpart of the lumped metric used by the first AL implementation. Each participant pair is assembled, so augmentation cross terms are retained when a relation has multiple primal fields.
-
inline Operator augmented_lagrangian_preconditioner(const GlobalVectorType &state, const double gamma = 1.e1, const GlobalVectorType *state_dot = nullptr, const double alpha = 0.) const¶
Apply an augmented-Lagrangian block factorization.
-
inline std::optional<LocalOperator> local_preconditioner(const FieldId field, const GlobalVectorType &state) const¶
-
inline std::optional<LocalOperator> local_preconditioner(const FieldId field, const GlobalVectorType &state, const EvaluationContext<FieldVectorType> &context, const double alpha) const¶
-
inline LocalOperator multiplier_preconditioner(const FieldId multiplier, const GlobalVectorType &state, const EvaluationContext<FieldVectorType> &context) const¶
Build the metric preconditioner used by a multiplier Schur solve.
-
inline Operator block_diagonal_preconditioner(const GlobalVectorType &state, const GlobalVectorType *state_dot = nullptr, const double alpha = 0.) const¶
Assemble registered local inverses into a global block diagonal map.
-
inline Operator block_triangular_preconditioner(const GlobalVectorType &state, const bool lower = true, const GlobalVectorType *state_dot = nullptr, const double alpha = 0.) const¶
Apply a lower or upper approximate block substitution.
-
inline FieldVectorType pack(const GlobalVectorType &global) const¶
Pack execution blocks into the concatenated field ordering.
-
inline void unpack(const FieldVectorType &flat, GlobalVectorType &global) const¶
Unpack a concatenated vector into execution blocks.
-
struct Snapshot¶
Public Functions
-
inline Snapshot(const ExecutionComposition &composition, const double time, const GlobalVectorType &state, const GlobalVectorType &state_dot)¶
Public Members
-
GlobalVectorType state_storage¶
-
GlobalVectorType derivative_storage¶
-
StateView<FieldVectorType> state_view¶
-
StateView<FieldVectorType> derivative_view¶
-
EvaluationContext<FieldVectorType> context¶
-
inline Snapshot(const ExecutionComposition &composition, const double time, const GlobalVectorType &state, const GlobalVectorType &state_dot)¶
-
struct StateSnapshot¶
Public Functions
-
inline StateSnapshot(const ExecutionComposition &composition, const double time, const GlobalVectorType &state)¶
Public Members
-
GlobalVectorType state_storage¶
-
StateView<FieldVectorType> state_view¶
-
EvaluationContext<FieldVectorType> context¶
-
inline StateSnapshot(const ExecutionComposition &composition, const double time, const GlobalVectorType &state)¶
-
using Model = SemiDiscreteModel<FieldVectorType>¶