Smith  0.1
Smith is an implicit thermal structural mechanics simulation code.
Public Member Functions | List of all members
smith::BlockTriangularPreconditioner Class Reference

Simple block triangular preconditioner for block systems. More...

#include <block_preconditioner.hpp>

Collaboration diagram for smith::BlockTriangularPreconditioner:
Collaboration graph
[legend]

Public Member Functions

 BlockTriangularPreconditioner (mfem::Array< int > &offsets, std::vector< std::unique_ptr< mfem::Solver >> solvers, BlockTriangularType type=BlockTriangularType::Lower, std::vector< BlockOverride > overrides={})
 Construct a new nxn block triangular preconditioner. More...
 
virtual void Mult (const mfem::Vector &in, mfem::Vector &out) const
 The action of the precondition on the block vector (b_1, ..., b_n) More...
 
virtual void SetOperator (const mfem::Operator &jacobian)
 Set the preconditioner to use the supplied linearized block Jacobian. More...
 

Detailed Description

Simple block triangular preconditioner for block systems.

Stores one solver per diagonal block and applies a block sweep using the supplied block Jacobian.

Call SetOperator() with an mfem::BlockOperator, then use Mult() to apply the preconditioner.

Definition at line 101 of file block_preconditioner.hpp.

Constructor & Destructor Documentation

◆ BlockTriangularPreconditioner()

smith::BlockTriangularPreconditioner::BlockTriangularPreconditioner ( mfem::Array< int > &  offsets,
std::vector< std::unique_ptr< mfem::Solver >>  solvers,
BlockTriangularType  type = BlockTriangularType::Lower,
std::vector< BlockOverride overrides = {} 
)

Construct a new nxn block triangular preconditioner.

Parameters
offsetsOffsets describing the block layout.
solversOne solver per diagonal block (size must match number of blocks).
typeSweep type (lower, upper, or symmetric).
overridesOptional list of (block index, operator) pairs used in place of the corresponding Jacobian diagonal block.

Definition at line 84 of file block_preconditioner.cpp.

Member Function Documentation

◆ Mult()

void smith::BlockTriangularPreconditioner::Mult ( const mfem::Vector &  in,
mfem::Vector &  out 
) const
virtual

The action of the precondition on the block vector (b_1, ..., b_n)

Parameters
inThe block input vector (b_1, ..., b_n)
outThe block output vector P^-1(b_1, ..., b_n)

Definition at line 167 of file block_preconditioner.cpp.

◆ SetOperator()

void smith::BlockTriangularPreconditioner::SetOperator ( const mfem::Operator &  jacobian)
virtual

Set the preconditioner to use the supplied linearized block Jacobian.

Parameters
jacobianThe supplied linearized Jacobian. Note that it is always a block operator

Definition at line 208 of file block_preconditioner.cpp.


The documentation for this class was generated from the following files: