Template Class LagrangeMultiplierConstraintSolver

Nested Relationships

Nested Types

Class Documentation

template<typename MatrixType, typename VectorType, typename PreconditionerType>
class LagrangeMultiplierConstraintSolver

Algebraic solver for a single PDE with a prescribed multiplier constraint.

For a background operator A and a coupling matrix C with background rows and multiplier columns, this class solves

[ A  C ] [u     ] = [f    ],
[ C^T 0 ] [lambda]   [g_Q  ].

The solver is independent of Problem and FE-field layers. Its Schur complement is applied matrix-free and the only preconditioner it needs is the one for the PDE block A.

Public Functions

inline LagrangeMultiplierConstraintSolver(const MatrixType &background_matrix, const MatrixType &coupling_matrix, const dealii::IndexSet &background_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 &background_solution, VectorType &multiplier, const VectorType &background_rhs, const VectorType &constraint_rhs) const

Solve for the PDE state and multiplier.