00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef MATRIXBASEDMONODOMAINSOLVER_HPP_
00030 #define MATRIXBASEDMONODOMAINSOLVER_HPP_
00031
00032 #include "AbstractMonodomainSolver.hpp"
00033 #include "MassMatrixAssembler.hpp"
00034 #include "MonodomainCorrectionTermAssembler.hpp"
00035
00047 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00048 class MatrixBasedMonodomainSolver
00049 : public AbstractMonodomainSolver<ELEMENT_DIM,SPACE_DIM>
00050 {
00051 private:
00053 Mat mMassMatrix;
00054
00058 Vec mVecForConstructingRhs;
00059
00064 MonodomainCorrectionTermAssembler<ELEMENT_DIM,SPACE_DIM>* mpMonodomainCorrectionTermAssembler;
00065
00074 void SetupLinearSystem(Vec currentSolution, bool computeMatrix);
00075
00076
00077 public:
00078
00084 void InitialiseForSolve(Vec initialSolution);
00085
00086
00095 MatrixBasedMonodomainSolver(AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* pMesh,
00096 MonodomainTissue<ELEMENT_DIM,SPACE_DIM>* pTissue,
00097 BoundaryConditionsContainer<ELEMENT_DIM,SPACE_DIM,1>* pBoundaryConditions,
00098 unsigned numQuadPoints = 2);
00099
00103 ~MatrixBasedMonodomainSolver();
00104 };
00105
00106
00107
00108 #endif