Chaste  Release::2018.1
AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX > Class Template Referenceabstract

#include <AbstractFeAssemblerInterface.hpp>

+ Inheritance diagram for AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >:
+ Collaboration diagram for AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >:

Public Member Functions

 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

virtual void DoAssemble ()=0
 

Protected Attributes

Vec mVectorToAssemble
 
Mat mMatrixToAssemble
 
bool mAssembleMatrix
 
bool mAssembleVector
 
bool mZeroMatrixBeforeAssembly
 
bool mZeroVectorBeforeAssembly
 
PetscInt mOwnershipRangeLo
 
PetscInt mOwnershipRangeHi
 

Detailed Description

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
class AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >

A common bass class for AbstractFeVolumeIntegralAssembler (the main abstract assembler class), and other assembler classes (including continuum mechanics assemblers, which is why this class is separate to AbstractFeAssemblerInterface).

See AbstractFeVolumeIntegralAssembler documentation for info on these assembler classes.

Definition at line 51 of file AbstractFeAssemblerInterface.hpp.

Constructor & Destructor Documentation

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::AbstractFeAssemblerInterface ( )

Constructor.

Definition at line 157 of file AbstractFeAssemblerInterface.hpp.

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
virtual AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::~AbstractFeAssemblerInterface ( )
inlinevirtual

Destructor.

Definition at line 151 of file AbstractFeAssemblerInterface.hpp.

Member Function Documentation

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
void AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::AssembleMatrix ( )
inline

Assemble the matrix. Requires CAN_ASSEMBLE_MATRIX==true

Definition at line 129 of file AbstractFeAssemblerInterface.hpp.

Referenced by MonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem().

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
void AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::AssembleVector ( )
inline

Assemble the vector. Requires CAN_ASSEMBLE_VECTOR==true

Definition at line 140 of file AbstractFeAssemblerInterface.hpp.

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
virtual void AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::DoAssemble ( )
protectedpure virtual

The main assembly method. Protected, should only be called through Assemble(), AssembleMatrix() or AssembleVector() which set mAssembleMatrix, mAssembleVector accordingly. Pure and therefore is implemented in child classes. Will involve looping over elements (which may be volume, surface or cable elements), and computing integrals and adding them to the vector or matrix

Implemented in AbstractContinuumMechanicsAssembler< DIM, CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >, AbstractContinuumMechanicsAssembler< DIM, true, true >, AbstractFeVolumeIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX, INTERPOLATION_LEVEL >, AbstractFeVolumeIntegralAssembler< ELEMENT_DIM, SPACE_DIM, 1, false, true, NORMAL >, AbstractFeVolumeIntegralAssembler< DIM, DIM, 3, false, true, NORMAL >, AbstractFeVolumeIntegralAssembler< ELEMENT_DIM, SPACE_DIM, 2, false, true, NORMAL >, AbstractFeVolumeIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, true, true, INTERPOLATION_LEVEL >, AbstractFeVolumeIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, true, true, NONLINEAR >, AbstractFeVolumeIntegralAssembler< DIM, DIM, 2, false, true, CARDIAC >, AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >, AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, 3 >, AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, 2 >, ContinuumMechanicsNeumannBcsAssembler< DIM >, AbstractFeCableIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX, INTERPOLATION_LEVEL >, and AbstractFeCableIntegralAssembler< ELEMENT_DIM, SPACE_DIM, 2, false, true, NORMAL >.

Referenced by AbstractFeAssemblerInterface< true, false >::Assemble(), AbstractFeAssemblerInterface< true, false >::AssembleMatrix(), and AbstractFeAssemblerInterface< true, false >::AssembleVector().

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
void AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::SetMatrixToAssemble ( Mat rMatToAssemble,
bool  zeroMatrixBeforeAssembly = true 
)

Set the matrix that needs to be assembled. Requires CAN_ASSEMBLE_MATRIX==true.

Parameters
rMatToAssembleReference to the matrix
zeroMatrixBeforeAssemblyWhether to zero the matrix before assembling (otherwise it is just added to)

Definition at line 167 of file AbstractFeAssemblerInterface.hpp.

Referenced by ExtendedBidomainSolver< ELEM_DIM, SPACE_DIM >::SetupLinearSystem(), OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), MonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), BidomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), and MonodomainPurkinjeSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem().

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
void AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::SetVectorToAssemble ( Vec rVecToAssemble,
bool  zeroVectorBeforeAssembly 
)

Set the vector that needs to be assembled. Requires CAN_ASSEMBLE_VECTOR==true.

Parameters
rVecToAssembleReference to the vector
zeroVectorBeforeAssemblyWhether to zero the vector before assembling (otherwise it is just added to)

Definition at line 177 of file AbstractFeAssemblerInterface.hpp.

Member Data Documentation

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
bool AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::mAssembleMatrix
protected

Whether to assemble the matrix (an assembler may be able to assemble matrices (CAN_ASSEMBLE_MATRIX==true), but may not want to do so each timestep, hence this second boolean.

Definition at line 65 of file AbstractFeAssemblerInterface.hpp.

Referenced by AbstractFeAssemblerInterface< true, false >::Assemble(), AbstractFeAssemblerInterface< true, false >::AssembleMatrix(), and AbstractFeAssemblerInterface< true, false >::AssembleVector().

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
bool AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::mAssembleVector
protected
template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
Mat AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::mMatrixToAssemble
protected

The matrix to be assembled (only used if CAN_ASSEMBLE_MATRIX == true).

Definition at line 58 of file AbstractFeAssemblerInterface.hpp.

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
PetscInt AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::mOwnershipRangeHi
protected

Ownership range of the vector/matrix - highest component owned +1.

Definition at line 80 of file AbstractFeAssemblerInterface.hpp.

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
PetscInt AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::mOwnershipRangeLo
protected

Ownership range of the vector/matrix - lowest component owned.

Definition at line 77 of file AbstractFeAssemblerInterface.hpp.

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
Vec AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::mVectorToAssemble
protected

The vector to be assembled (only used if CAN_ASSEMBLE_VECTOR == true).

Definition at line 55 of file AbstractFeAssemblerInterface.hpp.

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
bool AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::mZeroMatrixBeforeAssembly
protected

Whether to zero the given matrix before assembly, or just add to it.

Definition at line 71 of file AbstractFeAssemblerInterface.hpp.

template<bool CAN_ASSEMBLE_VECTOR, bool CAN_ASSEMBLE_MATRIX>
bool AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >::mZeroVectorBeforeAssembly
protected

Whether to zero the given vector before assembly, or just add to it.

Definition at line 74 of file AbstractFeAssemblerInterface.hpp.


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