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
00030
00031
00032
00033
00034
00035
00036 #ifndef MONODOMAINASSEMBLER_CPP_
00037 #define MONODOMAINASSEMBLER_CPP_
00038
00039 #include "MonodomainAssembler.hpp"
00040 #include "PdeSimulationTime.hpp"
00041
00042 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00043 c_matrix<double,1*(ELEMENT_DIM+1),1*(ELEMENT_DIM+1)> MonodomainAssembler<ELEMENT_DIM,SPACE_DIM>::ComputeMatrixTerm(
00044 c_vector<double, ELEMENT_DIM+1> &rPhi,
00045 c_matrix<double, SPACE_DIM, ELEMENT_DIM+1> &rGradPhi,
00046 ChastePoint<SPACE_DIM> &rX,
00047 c_vector<double,1> &rU,
00048 c_matrix<double, 1, SPACE_DIM> &rGradU ,
00049 Element<ELEMENT_DIM,SPACE_DIM>* pElement)
00050 {
00052 return (PdeSimulationTime::GetPdeTimeStepInverse())*mMassMatrixAssembler.ComputeMatrixTerm(rPhi,rGradPhi,rX,rU,rGradU,pElement)
00053 + mStiffnessMatrixAssembler.ComputeMatrixTerm(rPhi,rGradPhi,rX,rU,rGradU,pElement);
00054 }
00055
00056
00057 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00058 MonodomainAssembler<ELEMENT_DIM,SPACE_DIM>::MonodomainAssembler(
00059 AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* pMesh,
00060 MonodomainTissue<ELEMENT_DIM,SPACE_DIM>* pTissue)
00061 : AbstractCardiacFeVolumeIntegralAssembler<ELEMENT_DIM,SPACE_DIM,1,false,true,CARDIAC>(pMesh,pTissue),
00062 mMassMatrixAssembler(pMesh, HeartConfig::Instance()->GetUseMassLumping(),
00063 HeartConfig::Instance()->GetSurfaceAreaToVolumeRatio()*HeartConfig::Instance()->GetCapacitance()),
00064 mStiffnessMatrixAssembler(pMesh, pTissue)
00065 {
00066 assert(pTissue);
00067 }
00068
00069
00070
00072
00074
00075
00076 template class MonodomainAssembler<1,1>;
00077 template class MonodomainAssembler<1,2>;
00078 template class MonodomainAssembler<1,3>;
00079 template class MonodomainAssembler<2,2>;
00080 template class MonodomainAssembler<3,3>;
00081
00082 #endif