Chaste Release::3.1
ContinuumMechanicsNeumannBcsAssembler< DIM > Class Template Reference

#include <ContinuumMechanicsNeumannBcsAssembler.hpp>

Inheritance diagram for ContinuumMechanicsNeumannBcsAssembler< DIM >:
Collaboration diagram for ContinuumMechanicsNeumannBcsAssembler< DIM >:

List of all members.

Public Member Functions

 ContinuumMechanicsNeumannBcsAssembler (QuadraticMesh< DIM > *pMesh, ContinuumMechanicsProblemDefinition< DIM > *pProblemDefinition, unsigned numQuadPoints=2)
virtual ~ContinuumMechanicsNeumannBcsAssembler ()

Protected Member Functions

void DoAssemble ()
void AssembleOnBoundaryElement (BoundaryElement< DIM-1, DIM > &rElement, c_vector< double, STENCIL_SIZE > &rBElem, unsigned boundaryConditionIndex)

Protected Attributes

QuadraticMesh< DIM > * mpMesh
ContinuumMechanicsProblemDefinition
< DIM > * 
mpProblemDefinition
GaussianQuadratureRule< DIM-1 > * mpQuadRule

Static Private Attributes

static const unsigned NUM_VERTICES_PER_ELEMENT = DIM
static const unsigned NUM_NODES_PER_ELEMENT = DIM*(DIM+1)/2
static const unsigned SPATIAL_BLOCK_SIZE_ELEMENTAL = DIM*NUM_NODES_PER_ELEMENT
static const unsigned PRESSURE_BLOCK_SIZE_ELEMENTAL = NUM_VERTICES_PER_ELEMENT
static const unsigned STENCIL_SIZE = DIM*NUM_NODES_PER_ELEMENT + NUM_VERTICES_PER_ELEMENT

Detailed Description

template<unsigned DIM>
class ContinuumMechanicsNeumannBcsAssembler< DIM >

Abstract class for assembling surface-integral parts of vectors in continuum mechanics problems.

For such problems, the matrix has the form [A B1] [B2^T C ] (where often B1=B2 and C=0) and the vector has the form [b1] [b2]

This class adds surface integral components, arising from natural Neumann boundary conditions, to the spatial part of the RHS vector, ie to b1.

Definition at line 68 of file ContinuumMechanicsNeumannBcsAssembler.hpp.


Constructor & Destructor Documentation

template<unsigned DIM>
ContinuumMechanicsNeumannBcsAssembler< DIM >::ContinuumMechanicsNeumannBcsAssembler ( QuadraticMesh< DIM > *  pMesh,
ContinuumMechanicsProblemDefinition< DIM > *  pProblemDefinition,
unsigned  numQuadPoints = 2 
) [inline]

Constructor

Parameters:
pMeshPointer to the mesh
pProblemDefinitionPointer to the problem definition object
numQuadPointsNumber of quadrature points in each direction, defaults to 2

Definition at line 120 of file ContinuumMechanicsNeumannBcsAssembler.hpp.

References ContinuumMechanicsNeumannBcsAssembler< DIM >::mpQuadRule.

template<unsigned DIM>
virtual ContinuumMechanicsNeumannBcsAssembler< DIM >::~ContinuumMechanicsNeumannBcsAssembler ( ) [inline, virtual]

Member Function Documentation

template<unsigned DIM>
void ContinuumMechanicsNeumannBcsAssembler< DIM >::AssembleOnBoundaryElement ( BoundaryElement< DIM-1, DIM > &  rElement,
c_vector< double, STENCIL_SIZE > &  rBElem,
unsigned  boundaryConditionIndex 
) [protected]

Calculate the contribution of a single element to the linear system.

Parameters:
rElementThe element to assemble on.
rBElemThe element's contribution to the RHS vector is returned in this vector of length n, the no. of nodes in this element. There is no need to zero this vector before calling.
boundaryConditionIndexinto the traction BCs structures in the problem definition

Definition at line 195 of file ContinuumMechanicsNeumannBcsAssembler.hpp.

References QuadraticBasisFunction< ELEMENT_DIM >::ComputeBasisFunctions(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetIndex(), and NEVER_REACHED.

template<unsigned DIM>
void ContinuumMechanicsNeumannBcsAssembler< DIM >::DoAssemble ( ) [protected, virtual]

The main assembly method. Protected, should only be called through Assemble(), or AssembleVector() in the parent class.

Implements AbstractFeAssemblerInterface< true, false >.

Definition at line 144 of file ContinuumMechanicsNeumannBcsAssembler.hpp.

References EXCEPTION, PetscVecTools::GetSize(), and PetscVecTools::Zero().


Member Data Documentation

template<unsigned DIM>
QuadraticMesh<DIM>* ContinuumMechanicsNeumannBcsAssembler< DIM >::mpMesh [protected]

The quadratic mesh

Definition at line 86 of file ContinuumMechanicsNeumannBcsAssembler.hpp.

Problem definition, containing the boundary conditions

Definition at line 89 of file ContinuumMechanicsNeumannBcsAssembler.hpp.

template<unsigned DIM>
const unsigned ContinuumMechanicsNeumannBcsAssembler< DIM >::NUM_NODES_PER_ELEMENT = DIM*(DIM+1)/2 [static, private]

Number of nodes per (boundary) element.

Definition at line 74 of file ContinuumMechanicsNeumannBcsAssembler.hpp.

template<unsigned DIM>
const unsigned ContinuumMechanicsNeumannBcsAssembler< DIM >::NUM_VERTICES_PER_ELEMENT = DIM [static, private]

Number of vertices per (boundary) element.

Definition at line 71 of file ContinuumMechanicsNeumannBcsAssembler.hpp.

Size of the pressure-block (the number of rows or columns in the submatrix C), restricted to one element

Definition at line 79 of file ContinuumMechanicsNeumannBcsAssembler.hpp.

template<unsigned DIM>
const unsigned ContinuumMechanicsNeumannBcsAssembler< DIM >::SPATIAL_BLOCK_SIZE_ELEMENTAL = DIM*NUM_NODES_PER_ELEMENT [static, private]

Size of the spatial-block (the number or rows or columns in the submatrix A), restricted to one element

Definition at line 77 of file ContinuumMechanicsNeumannBcsAssembler.hpp.

template<unsigned DIM>
const unsigned ContinuumMechanicsNeumannBcsAssembler< DIM >::STENCIL_SIZE = DIM*NUM_NODES_PER_ELEMENT + NUM_VERTICES_PER_ELEMENT [static, private]

Stencil size.

Definition at line 82 of file ContinuumMechanicsNeumannBcsAssembler.hpp.


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