StokesFlowPreconditionerAssembler< DIM > Class Template Reference

#include <StokesFlowPreconditionerAssembler.hpp>

Inherits StokesFlowAssembler< DIM >.

Collaboration diagram for StokesFlowPreconditionerAssembler< DIM >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 StokesFlowPreconditionerAssembler (AbstractTetrahedralMesh< DIM, DIM > *pMesh, StokesFlowProblemDefinition< DIM > *pProblemDefinition)

Private Member Functions

c_matrix< double,
PRESSURE_BLOCK_SIZE_ELEMENTAL,
PRESSURE_BLOCK_SIZE_ELEMENTAL
ComputePressurePressureMatrixTerm (c_vector< double, NUM_VERTICES_PER_ELEMENT > &rLinearPhi, c_matrix< double, DIM, NUM_VERTICES_PER_ELEMENT > &rGradLinearPhi, c_vector< double, DIM > &rX, Element< DIM, DIM > *pElement)

Static Private Attributes

static const unsigned NUM_VERTICES_PER_ELEMENT = DIM+1
static const unsigned PRESSURE_BLOCK_SIZE_ELEMENTAL = NUM_VERTICES_PER_ELEMENT

Detailed Description

template<unsigned DIM>
class StokesFlowPreconditionerAssembler< DIM >

Assembler for setting up (volume-integral parts of) the preconditioner matrix used in the FEM solver Stokes' Flow.

The system matrix has the block form (except see comment below) [A B] [B^T 0] In contrast, the preconditioner is: [A B] [B^T M]

The class therefore just needs to inherit from StokesFlowAssembler, which will assemble the A,B,B^T terms, and it just has to overload the pressure-pressure block method.

NOTE: The elemental matrix and vector is as above. The full matrix and vector uses a completely different ordering: for parallelisation reasons the pressure variables are interleaved with the spatial variables and dummy pressure variables are used for internal nodes. For example, in 2d, the ordering is [U1 V1 P1 , .. , Un Vn, Pn] where n is the total number of nodes.

Definition at line 65 of file StokesFlowPreconditionerAssembler.hpp.


Constructor & Destructor Documentation

template<unsigned DIM>
StokesFlowPreconditionerAssembler< DIM >::StokesFlowPreconditionerAssembler ( AbstractTetrahedralMesh< DIM, DIM > *  pMesh,
StokesFlowProblemDefinition< DIM > *  pProblemDefinition 
) [inline]

Constructor

Parameters:
pMesh mesh
pProblemDefinition problem definition

Definition at line 81 of file StokesFlowPreconditionerAssembler.hpp.

Referenced by StokesFlowPreconditionerAssembler< DIM >::ComputePressurePressureMatrixTerm().


Member Function Documentation

template<unsigned DIM>
c_matrix<double,PRESSURE_BLOCK_SIZE_ELEMENTAL,PRESSURE_BLOCK_SIZE_ELEMENTAL> StokesFlowPreconditionerAssembler< DIM >::ComputePressurePressureMatrixTerm ( c_vector< double, NUM_VERTICES_PER_ELEMENT > &  rLinearPhi,
c_matrix< double, DIM, NUM_VERTICES_PER_ELEMENT > &  rGradLinearPhi,
c_vector< double, DIM > &  rX,
Element< DIM, DIM > *  pElement 
) [inline, private, virtual]

For a continuum mechanics problem in mixed form (displacement-pressure or velocity-pressure), the matrix has the form (except see comments about ordering above) [A B1] [B2^T C ] The function is related to the pressure-pressure block, i.e. C

Returns:
C=M, the mass matrix.
Parameters:
rLinearPhi All the linear basis functions on this element, evaluated at the current quad point
rGradLinearPhi Gradients of all the linear basis functions on this element, evaluated at the current quad point
rX Current location (physical position)
pElement Current element

Reimplemented from AbstractContinuumMechanicsAssembler< DIM, true, true >.

Definition at line 66 of file StokesFlowPreconditionerAssembler.hpp.

References StokesFlowPreconditionerAssembler< DIM >::NUM_VERTICES_PER_ELEMENT, StokesFlowPreconditionerAssembler< DIM >::PRESSURE_BLOCK_SIZE_ELEMENTAL, and StokesFlowPreconditionerAssembler< DIM >::StokesFlowPreconditionerAssembler().


Member Data Documentation

template<unsigned DIM>
const unsigned StokesFlowPreconditionerAssembler< DIM >::NUM_VERTICES_PER_ELEMENT = DIM+1 [static, private]

Number of vertices per element

Reimplemented from StokesFlowAssembler< DIM >.

Definition at line 44 of file StokesFlowPreconditionerAssembler.hpp.

Referenced by StokesFlowPreconditionerAssembler< DIM >::ComputePressurePressureMatrixTerm().

Size of the pressure block, per element, equal num_vertices times 1 (as p solved for at each vertex.

Reimplemented from StokesFlowAssembler< DIM >.

Definition at line 50 of file StokesFlowPreconditionerAssembler.hpp.

Referenced by StokesFlowPreconditionerAssembler< DIM >::ComputePressurePressureMatrixTerm().


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

Generated by  doxygen 1.6.2