#include <ContinuumMechanicsNeumannBcsAssembler.hpp>
Inherits AbstractFeAssemblerInterface< true, false >.
Public Member Functions | |
ContinuumMechanicsNeumannBcsAssembler (AbstractTetrahedralMesh< DIM, DIM > *pMesh, ContinuumMechanicsProblemDefinition< DIM > *pProblemDefinition) | |
virtual | ~ContinuumMechanicsNeumannBcsAssembler () |
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 |
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.
ContinuumMechanicsNeumannBcsAssembler< DIM >::ContinuumMechanicsNeumannBcsAssembler | ( | AbstractTetrahedralMesh< DIM, DIM > * | pMesh, | |
ContinuumMechanicsProblemDefinition< DIM > * | pProblemDefinition | |||
) | [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.
virtual ContinuumMechanicsNeumannBcsAssembler< DIM >::~ContinuumMechanicsNeumannBcsAssembler | ( | ) | [inline, virtual] |
Destructor.
Definition at line 148 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 | |||
) | [inline, 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 207 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
References AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetIndex(), GaussianQuadratureRule< ELEMENT_DIM >::GetNumQuadPoints(), GaussianQuadratureRule< ELEMENT_DIM >::GetWeight(), AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM >::GetWeightedDirectionForBoundaryElement(), ContinuumMechanicsNeumannBcsAssembler< DIM >::mpMesh, ContinuumMechanicsNeumannBcsAssembler< DIM >::mpProblemDefinition, ContinuumMechanicsNeumannBcsAssembler< DIM >::mpQuadRule, NEVER_REACHED, ContinuumMechanicsNeumannBcsAssembler< DIM >::NUM_NODES_PER_ELEMENT, and GaussianQuadratureRule< ELEMENT_DIM >::rGetQuadPoint().
Referenced by ContinuumMechanicsNeumannBcsAssembler< DIM >::DoAssemble().
void ContinuumMechanicsNeumannBcsAssembler< DIM >::DoAssemble | ( | ) | [inline, 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 156 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
References ContinuumMechanicsNeumannBcsAssembler< DIM >::AssembleOnBoundaryElement(), EXCEPTION, AbstractMesh< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), PetscVecTools::GetSize(), ContinuumMechanicsNeumannBcsAssembler< DIM >::mpMesh, ContinuumMechanicsNeumannBcsAssembler< DIM >::mpProblemDefinition, AbstractFeAssemblerInterface< true, false >::mVectorToAssemble, AbstractFeAssemblerInterface< true, false >::mZeroVectorBeforeAssembly, ContinuumMechanicsNeumannBcsAssembler< DIM >::NUM_NODES_PER_ELEMENT, ContinuumMechanicsNeumannBcsAssembler< DIM >::STENCIL_SIZE, and PetscVecTools::Zero().
AbstractTetrahedralMesh<DIM,DIM>* ContinuumMechanicsNeumannBcsAssembler< DIM >::mpMesh [protected] |
The quadratic mesh
Definition at line 88 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
Referenced by ContinuumMechanicsNeumannBcsAssembler< DIM >::AssembleOnBoundaryElement(), and ContinuumMechanicsNeumannBcsAssembler< DIM >::DoAssemble().
ContinuumMechanicsProblemDefinition<DIM>* ContinuumMechanicsNeumannBcsAssembler< DIM >::mpProblemDefinition [protected] |
Problem definition, containing the boundary conditions
Definition at line 91 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
Referenced by ContinuumMechanicsNeumannBcsAssembler< DIM >::AssembleOnBoundaryElement(), and ContinuumMechanicsNeumannBcsAssembler< DIM >::DoAssemble().
GaussianQuadratureRule<DIM-1>* ContinuumMechanicsNeumannBcsAssembler< DIM >::mpQuadRule [protected] |
Quadrature rule for surface integrals
Definition at line 94 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
Referenced by ContinuumMechanicsNeumannBcsAssembler< DIM >::AssembleOnBoundaryElement(), 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 76 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
Referenced by ContinuumMechanicsNeumannBcsAssembler< DIM >::AssembleOnBoundaryElement(), and ContinuumMechanicsNeumannBcsAssembler< DIM >::DoAssemble().
const unsigned ContinuumMechanicsNeumannBcsAssembler< DIM >::NUM_VERTICES_PER_ELEMENT = DIM [static, private] |
Number of vertices per (boundary) element.
Definition at line 73 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 81 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 79 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 84 of file ContinuumMechanicsNeumannBcsAssembler.hpp.
Referenced by ContinuumMechanicsNeumannBcsAssembler< DIM >::DoAssemble().