ExtendedBidomainAssembler.hpp
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 #ifndef EXTENDEDBIDOMAINASSEMBLER_HPP_
00031 #define EXTENDEDBIDOMAINASSEMBLER_HPP_
00032
00033 #include "UblasIncludes.hpp"
00034
00035
00036 #include <vector>
00037 #include <petscvec.h>
00038
00039 #include "AbstractCardiacFeVolumeIntegralAssembler.hpp"
00040
00041 #include "ExtendedBidomainTissue.hpp"
00042 #include "HeartConfig.hpp"
00043 #include "Element.hpp"
00044 #include "BoundaryElement.hpp"
00045 #include "ChastePoint.hpp"
00046 #include "AbstractTetrahedralMesh.hpp"
00047 #include "BoundaryConditionsContainer.hpp"
00048
00063 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00064 class ExtendedBidomainAssembler
00065 : public AbstractCardiacFeVolumeIntegralAssembler<ELEMENT_DIM,SPACE_DIM,3,true,true,NORMAL>
00066 {
00067
00068 protected:
00069
00071 ExtendedBidomainTissue<SPACE_DIM>* mpExtendedBidomainTissue;
00072
00074 HeartConfig* mpConfig;
00075
00076
00090 virtual c_matrix<double,3*(ELEMENT_DIM+1),3*(ELEMENT_DIM+1)> ComputeMatrixTerm(
00091 c_vector<double, ELEMENT_DIM+1> &rPhi,
00092 c_matrix<double, SPACE_DIM, ELEMENT_DIM+1> &rGradPhi,
00093 ChastePoint<SPACE_DIM> &rX,
00094 c_vector<double,3> &rU,
00095 c_matrix<double, 3, SPACE_DIM> &rGradU ,
00096 Element<ELEMENT_DIM,SPACE_DIM>* pElement);
00097
00098
00099 public:
00100
00108 ExtendedBidomainAssembler(AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* pMesh,
00109 ExtendedBidomainTissue<SPACE_DIM>* pTissue,
00110 unsigned numQuadPoints = 2);
00111
00115 ~ExtendedBidomainAssembler();
00116
00117 };
00118
00119
00120 #endif