Template Class LagrangeMultiplierSchurSolver¶
Defined in File lagrange_multiplier_schur_solver.h
Nested Relationships¶
Nested Types¶
Class Documentation¶
-
template<typename MatrixType, typename VectorType, typename PreconditionerType>
class LagrangeMultiplierSchurSolver¶ Algebraic Schur-complement solver for one two-field multiplier system.
Given matrices A_bulk, A_embedded, C, and M with orientations
C : bulk x multiplier, M : multiplier x embedded,
this class solves
A_bulk u + C lambda = f, A_embedded w - M^T lambda = g, C^T u - M w = 0.
It owns no PDE object and has no knowledge of how any of the four matrices were assembled. The two diagonal inverses use the supplied AMG preconditioner type; the multiplier Schur operator is applied matrix-free.
Public Functions
-
inline LagrangeMultiplierSchurSolver(const MatrixType &bulk_matrix, const MatrixType &embedded_matrix, const MatrixType &coupling_matrix, const MatrixType &mass_matrix, const dealii::IndexSet &bulk_owned_dofs, const dealii::IndexSet &embedded_owned_dofs, const dealii::IndexSet &multiplier_owned_dofs, const MPI_Comm mpi_communicator, const unsigned int max_steps = 200, const double tolerance = 1.e-10, const double block_tolerance = 1.e-12)¶
-
inline void solve(VectorType &bulk_solution, VectorType &embedded_solution, VectorType &multiplier, const VectorType &bulk_rhs, const VectorType &embedded_rhs) const¶
Solve for u, w, and lambda from the two independent right-hand sides.
-
inline LagrangeMultiplierSchurSolver(const MatrixType &bulk_matrix, const MatrixType &embedded_matrix, const MatrixType &coupling_matrix, const MatrixType &mass_matrix, const dealii::IndexSet &bulk_owned_dofs, const dealii::IndexSet &embedded_owned_dofs, const dealii::IndexSet &multiplier_owned_dofs, const MPI_Comm mpi_communicator, const unsigned int max_steps = 200, const double tolerance = 1.e-10, const double block_tolerance = 1.e-12)¶