MonodomainTissue.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
00031
00032
00033
00034
00035
00036
00037 #ifndef MONODOMAINTISSUE_HPP_
00038 #define MONODOMAINTISSUE_HPP_
00039
00040 #include "ChasteSerialization.hpp"
00041 #include <boost/serialization/vector.hpp>
00042 #include <boost/serialization/base_object.hpp>
00043
00044 #include <vector>
00045 #include "AbstractCardiacTissue.hpp"
00046
00047
00054 template <unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
00055 class MonodomainTissue : public virtual AbstractCardiacTissue<ELEMENT_DIM,SPACE_DIM>
00056 {
00057 private:
00058 friend class TestMonodomainTissue;
00059
00061 friend class boost::serialization::access;
00068 template<class Archive>
00069 void serialize(Archive & archive, const unsigned int version)
00070 {
00071 archive & boost::serialization::base_object<AbstractCardiacTissue<ELEMENT_DIM, SPACE_DIM> >(*this);
00072 }
00073
00074
00075 public:
00082 MonodomainTissue(AbstractCardiacCellFactory<ELEMENT_DIM,SPACE_DIM>* pCellFactory, bool exchangeHalos=false);
00083
00089 MonodomainTissue(AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* pMesh);
00090 };
00091
00092
00093
00094 #include "SerializationExportWrapper.hpp"
00095 EXPORT_TEMPLATE_CLASS2(MonodomainTissue, 1, 1)
00096 EXPORT_TEMPLATE_CLASS2(MonodomainTissue, 1, 2)
00097 EXPORT_TEMPLATE_CLASS2(MonodomainTissue, 1, 3)
00098 EXPORT_TEMPLATE_CLASS2(MonodomainTissue, 2, 2)
00099 EXPORT_TEMPLATE_CLASS2(MonodomainTissue, 3, 3)
00100
00101 namespace boost
00102 {
00103 namespace serialization
00104 {
00105
00106 template<class Archive, unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00107 inline void save_construct_data(
00108 Archive & ar, const MonodomainTissue<ELEMENT_DIM, SPACE_DIM> * t, const unsigned int file_version)
00109 {
00110 const AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* p_mesh = t->pGetMesh();
00111 ar & p_mesh;
00112
00113
00114
00115 HeartConfig* p_config = HeartConfig::Instance();
00116 ar & *p_config;
00117 ar & p_config;
00118 }
00119
00124 template<class Archive, unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00125 inline void load_construct_data(
00126 Archive & ar, MonodomainTissue<ELEMENT_DIM, SPACE_DIM> * t, const unsigned int file_version)
00127 {
00128 AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* p_mesh;
00129 ar & p_mesh;
00130
00131
00132
00133 HeartConfig* p_config = HeartConfig::Instance();
00134 ar & *p_config;
00135 ar & p_config;
00136
00137 ::new(t)MonodomainTissue<ELEMENT_DIM, SPACE_DIM>(p_mesh);
00138 }
00139 }
00140 }
00141
00142
00143 #endif