Chaste Release::3.1
AbstractFeAssemblerInterface< CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX > Class Template Reference

#include <AbstractFeAssemblerInterface.hpp>

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

List of all members.

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 ( ) [inline, virtual]

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 >::Assemble ( ) [inline]
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 ( ) [protected, pure 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 AbstractFeCableIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX, INTERPOLATION_LEVEL >, AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM >, AbstractFeVolumeIntegralAssembler< ELEMENT_DIM, SPACE_DIM, PROBLEM_DIM, CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX, INTERPOLATION_LEVEL >, AbstractContinuumMechanicsAssembler< DIM, CAN_ASSEMBLE_VECTOR, CAN_ASSEMBLE_MATRIX >, ContinuumMechanicsNeumannBcsAssembler< DIM >, AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, 3 >, AbstractFeSurfaceIntegralAssembler< ELEMENT_DIM, SPACE_DIM, 2 >, AbstractFeVolumeIntegralAssembler< ELEMENT_DIM, SPACE_DIM, 1, false, true, NORMAL >, AbstractFeVolumeIntegralAssembler< DIM, DIM, 3, 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 >, and AbstractContinuumMechanicsAssembler< DIM, true, true >.

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 OperatorSplittingMonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), MonodomainSolver< ELEMENT_DIM, SPACE_DIM >::SetupLinearSystem(), ExtendedBidomainSolver< ELEM_DIM, SPACE_DIM >::SetupLinearSystem(), and BidomainSolver< 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: