TrilinosWrappers::PreconditionStokes Class Reference
[TrilinosWrappersPreconditioners]

Inheritance diagram for TrilinosWrappers::PreconditionStokes:
Inheritance graph
[legend]

List of all members.

Classes

struct  AdditionalData
class  ExcNonMatchingMaps

Public Member Functions

void initialize (const BlockSparseMatrix &system_matrix, const SparseMatrix &Mp_matrix, const AdditionalData &additional_data, const SparseMatrix &Av_matrix=SparseMatrix(), const SparseMatrix &Lp_matrix=SparseMatrix(), const SparseMatrix &Fp_matrix=SparseMatrix())
void initialize (const BlockSparseMatrix &system_matrix, const SparseMatrix &Mp_matrix, const AdditionalData &additional_data, const PreconditionBase &Mp_preconditioner=PreconditionBase(), const PreconditionBase &Av_preconditioner=PreconditionBase(), const SparseMatrix &Lp_matrix=SparseMatrix(), const PreconditionBase &Lp_preconditioner=PreconditionBase(), const SparseMatrix &Fp_matrix=SparseMatrix())
void reinit_lazy ()

Private Attributes

Teuchos::RCP< PreconditionSSORMp_precondition_ssor
Teuchos::RCP< PreconditionICMp_precondition_ic
Teuchos::RCP< PreconditionAMGAv_precondition
Teuchos::RCP< PreconditionAMGLp_precondition

Detailed Description

This class implements a black box preconditioner for saddle points systems arising from the Stokes or Navier–Stokes equations as specified by the papers D. Silvester, A. Wathen, Fast iterative solution of stabilised Stokes systems part II. Using general block preconditioners, SIAM J. Numer. Anal. 31:1352–1367 (1994) and D. Kay, D. Loghin, A. Wathen, A preconditioner for the steady-state Navier–Stokes equations, SIAM J. Sci. Comput. 24(1):237–256 (2002), respectively.

The preconditioner is based an approximation to the Schur complement of the block matrix. The Schur complement $S=B A_{\mathbf u}^{-1} B^T$ is approximated by a mass matrix $M_p$ on the pressure space in the case of the Stokes equations, and as a product $S^{-1} = L_p^{-1} F_p M_p^{-1}$ with pressure Laplace matrix $L_p$, pressure convection-diffusion operator $F_p$ (corresponding to the sum of time derivative, convection and diffusion), and pressure mass matrix $M_p$ in the case of the Navier–Stokes equations.

Author:
Martin Kronbichler, 2008

Member Function Documentation

void TrilinosWrappers::PreconditionStokes::initialize ( const BlockSparseMatrix system_matrix,
const SparseMatrix Mp_matrix,
const AdditionalData additional_data,
const SparseMatrix Av_matrix = SparseMatrix(),
const SparseMatrix Lp_matrix = SparseMatrix(),
const SparseMatrix Fp_matrix = SparseMatrix() 
)

Lazy setup of the block preconditioner for the (Navier-) Stokes system. This function takes the matrices given here and firs calculates good preconditioners, i.e., algebraic multigrid preconditioners for the velocity-velocity matrix Av, that can be specified to be different from the (0,0) block in the system matrix, IC/SSOR on the pressure mass matrix Mp_matrix, and AMG on the pressure Laplace matrix Lp_matrix. Next, these preconditioners are used to generate a block operator.

void TrilinosWrappers::PreconditionStokes::initialize ( const BlockSparseMatrix system_matrix,
const SparseMatrix Mp_matrix,
const AdditionalData additional_data,
const PreconditionBase Mp_preconditioner = PreconditionBase(),
const PreconditionBase Av_preconditioner = PreconditionBase(),
const SparseMatrix Lp_matrix = SparseMatrix(),
const PreconditionBase Lp_preconditioner = PreconditionBase(),
const SparseMatrix Fp_matrix = SparseMatrix() 
)

Set up the block preconditioner for the (Navier-) Stokes system. In contrast to the other initialize function, this one expects the user to specify preconditioner objects for the individual matrices, that will then be used for the inner inversion of the matrices when building the Schur complement preconditioner. If no preconditioner is specified, the inner solvers will use an identity preconditioner object.

void TrilinosWrappers::PreconditionStokes::reinit_lazy (  ) 

This function can be used for a faster recalculation of the preconditioner construction when the system matrix entries underlying the preconditioner have changed but not the sparsity pattern (this means that the grid has remained the same and the matrix structure has not been reinitialized). Moreover, it is assumed that the PDE parameters have not changed drastically. This function is only needed for the lazy variant of the preconditioner. In the other case, the preconditioner can be modified outside this function, which will be recongnized in this preconditioner as well when doing a solve, without the need to restructure anything here.


Member Data Documentation

Pointer to preconditioner for the mass matrix.

Pointer to preconditioner for the mass matrix.

Pointer to preconditioner for the velocity-velocity matrix.

Pointer to preconditioner for the pressure Laplace matrix.


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

deal.II documentation generated on Mon Nov 23 22:58:38 2009 by doxygen 1.6.1