Template Class BlockPreconditionerAugmentedLagrangian

Class Documentation

template<typename VectorType, typename BlockVectorType = TrilinosWrappers::MPI::BlockVector>
class BlockPreconditionerAugmentedLagrangian

Two-by-two block preconditioner for augmented Lagrangian systems.

Public Functions

inline BlockPreconditionerAugmentedLagrangian(const LinearOperator<VectorType> Aug_inv_, const LinearOperator<VectorType> C_, const LinearOperator<VectorType> Ct_, const LinearOperator<VectorType> invW_, const double gamma_ = 1e1)

Build the block preconditioner from linear-operator building blocks.

inline void vmult(BlockVectorType &v, const BlockVectorType &u) const

Apply the block preconditioner to a two-block vector.

Public Members

LinearOperator<VectorType> K

Unused placeholder linear operator kept for backward compatibility.

LinearOperator<VectorType> Aug_inv

Approximate inverse of the augmented displacement block.

LinearOperator<VectorType> C

Coupling operator from displacement to multipliers.

LinearOperator<VectorType> invW

Inverse scaling/mass operator on multiplier space.

LinearOperator<VectorType> Ct

Transpose coupling operator from multipliers to displacement.

double gamma

Augmentation/scaling parameter for the multiplier block.