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 BIDOMAINWITHBATHASSEMBLER_HPP_
00030 #define BIDOMAINWITHBATHASSEMBLER_HPP_
00031
00032 #include "BidomainDg0Assembler.hpp"
00033 #include "HeartConfig.hpp"
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00048 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00049 class BidomainWithBathAssembler
00050 : public virtual BidomainDg0Assembler<ELEMENT_DIM, SPACE_DIM>
00051 {
00052 public:
00053
00067 virtual c_matrix<double,2*(ELEMENT_DIM+1),2*(ELEMENT_DIM+1)> ComputeMatrixTerm(
00068 c_vector<double, ELEMENT_DIM+1> &rPhi,
00069 c_matrix<double, ELEMENT_DIM, ELEMENT_DIM+1> &rGradPhi,
00070 ChastePoint<SPACE_DIM> &rX,
00071 c_vector<double,2> &rU,
00072 c_matrix<double, 2, SPACE_DIM> &rGradU ,
00073 Element<ELEMENT_DIM,SPACE_DIM>* pElement);
00074
00085 virtual c_vector<double,2*(ELEMENT_DIM+1)> ComputeVectorTerm(
00086 c_vector<double, ELEMENT_DIM+1> &rPhi,
00087 c_matrix<double, ELEMENT_DIM, ELEMENT_DIM+1> &rGradPhi,
00088 ChastePoint<SPACE_DIM> &rX,
00089 c_vector<double,2> &rU,
00090 c_matrix<double, 2, SPACE_DIM> &rGradU ,
00091 Element<ELEMENT_DIM,SPACE_DIM>* pElement);
00092
00104 void FinaliseLinearSystem(Vec existingSolutionOrGuess, double time, bool assembleVector, bool assembleMatrix);
00105
00114 BidomainWithBathAssembler(AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* pMesh,
00115 BidomainPde<SPACE_DIM>* pPde,
00116 BoundaryConditionsContainer<ELEMENT_DIM, SPACE_DIM, 2>* pBcc,
00117 unsigned numQuadPoints = 2);
00118 };
00119
00120 #endif