Chaste
Release::2018.1
|
#include <ContinuumMechanicsNeumannBcsAssembler.hpp>
Public Member Functions | |
ContinuumMechanicsNeumannBcsAssembler (AbstractTetrahedralMesh< DIM, DIM > *pMesh, ContinuumMechanicsProblemDefinition< DIM > *pProblemDefinition) | |
virtual | ~ContinuumMechanicsNeumannBcsAssembler () |
Public Member Functions inherited from AbstractFeAssemblerInterface< true, false > | |
AbstractFeAssemblerInterface () | |
void | SetMatrixToAssemble (Mat &rMatToAssemble, bool zeroMatrixBeforeAssembly=true) |
void | SetVectorToAssemble (Vec &rVecToAssemble, bool zeroVectorBeforeAssembly) |
void | Assemble () |
void | AssembleMatrix () |
void | AssembleVector () |
virtual | ~AbstractFeAssemblerInterface () |
Protected Member Functions | |
void | DoAssemble () |
void | AssembleOnBoundaryElement (BoundaryElement< DIM-1, DIM > &rElement, c_vector< double, STENCIL_SIZE > &rBElem, unsigned boundaryConditionIndex) |
Protected Attributes | |
AbstractTetrahedralMesh< DIM, DIM > * | mpMesh |
ContinuumMechanicsProblemDefinition < DIM > * | mpProblemDefinition |
GaussianQuadratureRule< DIM-1 > * | mpQuadRule |
Protected Attributes inherited from AbstractFeAssemblerInterface< true, false > | |
Vec | mVectorToAssemble |
Mat | mMatrixToAssemble |
bool | mAssembleMatrix |
bool | mAssembleVector |
bool | mZeroMatrixBeforeAssembly |
bool | mZeroVectorBeforeAssembly |
PetscInt | mOwnershipRangeLo |
PetscInt | mOwnershipRangeHi |
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 70 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
|
inline |
Constructor
pMesh | Pointer to the mesh |
pProblemDefinition | Pointer to the problem definition object |
Definition at line 122 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
References EXCEPTION, and ContinuumMechanicsNeumannBcsAssembler< DIM >::mpQuadRule.
|
inlinevirtual |
Destructor.
Definition at line 147 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
References ContinuumMechanicsNeumannBcsAssembler< DIM >::mpQuadRule.
|
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 204 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
References QuadraticBasisFunction< ELEMENT_DIM >::ComputeBasisFunctions(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetIndex(), and NEVER_REACHED.
|
protectedvirtual |
The main assembly method. Protected, should only be called through Assemble(), or AssembleVector() in the parent class.
Implements AbstractFeAssemblerInterface< true, false >.
Definition at line 155 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
References EXCEPTION, PetscVecTools::GetSize(), and PetscVecTools::Zero().
|
protected |
The quadratic mesh
Definition at line 88 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
|
protected |
Problem definition, containing the boundary conditions
Definition at line 91 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
|
protected |
Quadrature rule for surface integrals
Definition at line 94 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
Referenced by ContinuumMechanicsNeumannBcsAssembler< DIM >::ContinuumMechanicsNeumannBcsAssembler(), and ContinuumMechanicsNeumannBcsAssembler< DIM >::~ContinuumMechanicsNeumannBcsAssembler().
|
staticprivate |
Number of nodes per (boundary) element.
Definition at line 76 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
|
staticprivate |
Number of vertices per (boundary) element.
Definition at line 73 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
|
staticprivate |
Size of the pressure-block (the number of rows or columns in the submatrix C), restricted to one element
Definition at line 81 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
|
staticprivate |
Size of the spatial-block (the number or rows or columns in the submatrix A), restricted to one element
Definition at line 79 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
|
staticprivate |
Stencil size.
Definition at line 84 of file ContinuumMechanicsNeumannBcsAssembler.hpp.