Chaste Release::3.1
|
#include <ContinuumMechanicsNeumannBcsAssembler.hpp>
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 |
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.
ContinuumMechanicsNeumannBcsAssembler< DIM >::ContinuumMechanicsNeumannBcsAssembler | ( | QuadraticMesh< DIM > * | pMesh, |
ContinuumMechanicsProblemDefinition< DIM > * | pProblemDefinition, | ||
unsigned | numQuadPoints = 2 |
||
) | [inline] |
Constructor
pMesh | Pointer to the mesh |
pProblemDefinition | Pointer to the problem definition object |
numQuadPoints | Number of quadrature points in each direction, defaults to 2 |
Definition at line 120 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
References ContinuumMechanicsNeumannBcsAssembler< DIM >::mpQuadRule.
virtual ContinuumMechanicsNeumannBcsAssembler< DIM >::~ContinuumMechanicsNeumannBcsAssembler | ( | ) | [inline, virtual] |
Destructor.
Definition at line 136 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
References ContinuumMechanicsNeumannBcsAssembler< DIM >::mpQuadRule.
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.
rElement | The element to assemble on. |
rBElem | The 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. |
boundaryConditionIndex | into 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.
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().
QuadraticMesh<DIM>* ContinuumMechanicsNeumannBcsAssembler< DIM >::mpMesh [protected] |
The quadratic mesh
Definition at line 86 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
ContinuumMechanicsProblemDefinition<DIM>* ContinuumMechanicsNeumannBcsAssembler< DIM >::mpProblemDefinition [protected] |
Problem definition, containing the boundary conditions
Definition at line 89 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
GaussianQuadratureRule<DIM-1>* ContinuumMechanicsNeumannBcsAssembler< DIM >::mpQuadRule [protected] |
Quadrature rule for surface integrals
Definition at line 92 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
Referenced by ContinuumMechanicsNeumannBcsAssembler< DIM >::ContinuumMechanicsNeumannBcsAssembler(), and ContinuumMechanicsNeumannBcsAssembler< DIM >::~ContinuumMechanicsNeumannBcsAssembler().
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.
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.
const unsigned ContinuumMechanicsNeumannBcsAssembler< DIM >::PRESSURE_BLOCK_SIZE_ELEMENTAL = NUM_VERTICES_PER_ELEMENT [static, private] |
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.
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.
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.