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 MONODOMAINTISSUE_HPP_
00031 #define MONODOMAINTISSUE_HPP_
00032
00033 #include "ChasteSerialization.hpp"
00034 #include <boost/serialization/vector.hpp>
00035 #include <boost/serialization/base_object.hpp>
00036
00037 #include <vector>
00038 #include "AbstractCardiacTissue.hpp"
00039
00040
00047 template <unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
00048 class MonodomainTissue : public virtual AbstractCardiacTissue<ELEMENT_DIM,SPACE_DIM>
00049 {
00050 private:
00051 friend class TestMonodomainTissue;
00052
00054 friend class boost::serialization::access;
00061 template<class Archive>
00062 void serialize(Archive & archive, const unsigned int version)
00063 {
00064 archive & boost::serialization::base_object<AbstractCardiacTissue<ELEMENT_DIM, SPACE_DIM> >(*this);
00065 }
00066
00067
00068 public:
00075 MonodomainTissue(AbstractCardiacCellFactory<ELEMENT_DIM,SPACE_DIM>* pCellFactory, bool exchangeHalos=false);
00076
00082 MonodomainTissue(AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* pMesh);
00083 };
00084
00085
00086
00087 #include "SerializationExportWrapper.hpp"
00088 EXPORT_TEMPLATE_CLASS2(MonodomainTissue, 1, 1)
00089 EXPORT_TEMPLATE_CLASS2(MonodomainTissue, 1, 2)
00090 EXPORT_TEMPLATE_CLASS2(MonodomainTissue, 1, 3)
00091 EXPORT_TEMPLATE_CLASS2(MonodomainTissue, 2, 2)
00092 EXPORT_TEMPLATE_CLASS2(MonodomainTissue, 3, 3)
00093
00094 namespace boost
00095 {
00096 namespace serialization
00097 {
00098
00099 template<class Archive, unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00100 inline void save_construct_data(
00101 Archive & ar, const MonodomainTissue<ELEMENT_DIM, SPACE_DIM> * t, const unsigned int file_version)
00102 {
00103 const AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* p_mesh = t->pGetMesh();
00104 ar & p_mesh;
00105
00106
00107
00108 HeartConfig* p_config = HeartConfig::Instance();
00109 ar & *p_config;
00110 ar & p_config;
00111 }
00112
00117 template<class Archive, unsigned ELEMENT_DIM, unsigned SPACE_DIM>
00118 inline void load_construct_data(
00119 Archive & ar, MonodomainTissue<ELEMENT_DIM, SPACE_DIM> * t, const unsigned int file_version)
00120 {
00121 AbstractTetrahedralMesh<ELEMENT_DIM,SPACE_DIM>* p_mesh;
00122 ar & p_mesh;
00123
00124
00125
00126 HeartConfig* p_config = HeartConfig::Instance();
00127 ar & *p_config;
00128 ar & p_config;
00129
00130 ::new(t)MonodomainTissue<ELEMENT_DIM, SPACE_DIM>(p_mesh);
00131 }
00132 }
00133 }
00134
00135
00136 #endif