#include <AbstractFeSurfaceIntegralAssembler.hpp>
Inherits AbstractFeAssemblerCommon< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, true, false, NORMAL >.
Inherited by NaturalNeumannSurfaceTermAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >, and NaturalNeumannSurfaceTermAssembler< ELEMENT_DIM, SPACE_DIM, 1 >.
Public Member Functions | |
AbstractFeSurfaceIntegralAssembler (AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *pMesh, BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM > *pBoundaryConditions, unsigned numQuadPoints=2) | |
~AbstractFeSurfaceIntegralAssembler () | |
void | ResetBoundaryConditionsContainer (BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM > *pBoundaryConditions) |
Protected Types | |
typedef LinearBasisFunction < ELEMENT_DIM-1 > | SurfaceBasisFunction |
Protected Member Functions | |
virtual c_vector< double, PROBLEM_DIM *ELEMENT_DIM > | ComputeVectorSurfaceTerm (const BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > &rSurfaceElement, c_vector< double, ELEMENT_DIM > &rPhi, ChastePoint< SPACE_DIM > &rX) |
virtual void | AssembleOnSurfaceElement (const BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > &rSurfaceElement, c_vector< double, PROBLEM_DIM *ELEMENT_DIM > &rBSurfElem) |
void | DoAssemble () |
Protected Attributes | |
AbstractTetrahedralMesh < ELEMENT_DIM, SPACE_DIM > * | mpMesh |
BoundaryConditionsContainer < ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM > * | mpBoundaryConditions |
GaussianQuadratureRule < ELEMENT_DIM-1 > * | mpSurfaceQuadRule |
Similar to AbstractFeVolumeIntegralAssembler but is used for constructing finite element objects that are based on SURFACE INTEGRALS, as opposed to volume integrals.
This class assumes that the concrete class only needs to assemble a vector, not a matrix. (Can be extended in the future if needed).
Hence, the (effectively) pure method, that needs to be implemented, is ComputeVectorSurfaceTerm().
The surface terms is assumed to come from Neumann BCs, so only the surface elements containing non-zero Neumann BCs (from the BoundaryConditionsContainer given) are assembled on.
The interface is the same the volume assemblers.
Definition at line 54 of file AbstractFeSurfaceIntegralAssembler.hpp.
typedef LinearBasisFunction<ELEMENT_DIM-1> AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::SurfaceBasisFunction [protected] |
Basis function for use with boundary elements.
Definition at line 67 of file AbstractFeSurfaceIntegralAssembler.hpp.
AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::AbstractFeSurfaceIntegralAssembler | ( | AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > * | pMesh, | |
BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM > * | pBoundaryConditions, | |||
unsigned | numQuadPoints = 2 | |||
) | [inline] |
Constructor
pMesh | The mesh | |
pBoundaryConditions | The boundary conditions container | |
numQuadPoints | Number of quad points (per dimension) to use |
Definition at line 142 of file AbstractFeSurfaceIntegralAssembler.hpp.
References AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpSurfaceQuadRule.
AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::~AbstractFeSurfaceIntegralAssembler | ( | ) | [inline] |
Destructor
Definition at line 158 of file AbstractFeSurfaceIntegralAssembler.hpp.
References AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpSurfaceQuadRule.
void AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::AssembleOnSurfaceElement | ( | const BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > & | rSurfaceElement, | |
c_vector< double, PROBLEM_DIM *ELEMENT_DIM > & | rBSurfElem | |||
) | [inline, protected, virtual] |
Calculate the contribution of a single surface element with Neumann boundary condition to the linear system.
rSurfaceElement | The element to assemble on. | |
rBSurfElem | 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. |
Definition at line 198 of file AbstractFeSurfaceIntegralAssembler.hpp.
References LinearBasisFunction< ELEMENT_DIM >::ComputeBasisFunctions(), AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::ComputeVectorSurfaceTerm(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetIndex(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNode(), AbstractElement< ELEMENT_DIM, SPACE_DIM >::GetNumNodes(), GaussianQuadratureRule< ELEMENT_DIM >::GetNumQuadPoints(), GaussianQuadratureRule< ELEMENT_DIM >::GetWeight(), AbstractFeAssemblerCommon< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, true, false, NORMAL >::IncrementInterpolatedQuantities(), AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpMesh, AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpSurfaceQuadRule, AbstractFeAssemblerCommon< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, true, false, NORMAL >::ResetInterpolatedQuantities(), ChastePoint< DIM >::rGetLocation(), and GaussianQuadratureRule< ELEMENT_DIM >::rGetQuadPoint().
Referenced by AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::DoAssemble().
virtual c_vector<double, PROBLEM_DIM*ELEMENT_DIM> AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::ComputeVectorSurfaceTerm | ( | const BoundaryElement< ELEMENT_DIM-1, SPACE_DIM > & | rSurfaceElement, | |
c_vector< double, ELEMENT_DIM > & | rPhi, | |||
ChastePoint< SPACE_DIM > & | rX | |||
) | [inline, protected, virtual] |
This method returns the vector to be added to full vector for a given Gauss point in BoundaryElement, ie, essentially the INTEGRAND in the boundary integral part of the definition of the vector. The arguments are the bases, x and current solution computed at the Gauss point.
** This method needs to be overloaded in the concrete class **
rSurfaceElement | the element which is being considered. | |
rPhi | The basis functions, rPhi(i) = phi_i, i=1..numBases | |
rX | The point in space |
Reimplemented in BidomainNeumannSurfaceTermAssembler< ELEMENT_DIM, SPACE_DIM >, ExtendedBidomainNeumannSurfaceTermAssembler< ELEMENT_DIM, SPACE_DIM >, NaturalNeumannSurfaceTermAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >, ExtendedBidomainNeumannSurfaceTermAssembler< ELEM_DIM, SPACE_DIM >, and NaturalNeumannSurfaceTermAssembler< ELEMENT_DIM, SPACE_DIM, 1 >.
Definition at line 82 of file AbstractFeSurfaceIntegralAssembler.hpp.
Referenced by AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::AssembleOnSurfaceElement().
void AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::DoAssemble | ( | ) | [inline, protected, virtual] |
Main assemble method. Users should call Assemble() however
Implements AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >.
Definition at line 165 of file AbstractFeSurfaceIntegralAssembler.hpp.
References AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::AssembleOnSurfaceElement(), GenericEventHandler< 16, HeartEventHandler >::BeginEvent(), GenericEventHandler< 16, HeartEventHandler >::EndEvent(), AbstractTetrahedralElement< ELEMENT_DIM, SPACE_DIM >::GetStiffnessMatrixGlobalIndices(), AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::mAssembleVector, AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpBoundaryConditions, and AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::mVectorToAssemble.
void AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::ResetBoundaryConditionsContainer | ( | BoundaryConditionsContainer< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM > * | pBoundaryConditions | ) | [inline] |
Reset the internal boundary conditions container pointer
pBoundaryConditions |
Definition at line 133 of file AbstractFeSurfaceIntegralAssembler.hpp.
Referenced by ExtendedBidomainSolver< ELEM_DIM, SPACE_DIM >::SetupLinearSystem().
BoundaryConditionsContainer<ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM>* AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpBoundaryConditions [protected] |
Boundary conditions container
Definition at line 61 of file AbstractFeSurfaceIntegralAssembler.hpp.
Referenced by NaturalNeumannSurfaceTermAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::ComputeVectorSurfaceTerm(), AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::DoAssemble(), and AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, 2 >::ResetBoundaryConditionsContainer().
AbstractTetrahedralMesh<ELEMENT_DIM, SPACE_DIM>* AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpMesh [protected] |
Mesh to be solved on.
Definition at line 58 of file AbstractFeSurfaceIntegralAssembler.hpp.
Referenced by AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::AssembleOnSurfaceElement().
GaussianQuadratureRule<ELEMENT_DIM-1>* AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::mpSurfaceQuadRule [protected] |
Quadrature rule for use on boundary elements.
Definition at line 64 of file AbstractFeSurfaceIntegralAssembler.hpp.
Referenced by AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::AbstractFeSurfaceIntegralAssembler(), AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::AssembleOnSurfaceElement(), and AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >::~AbstractFeSurfaceIntegralAssembler().