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 MONODOMAINPROBLEM_HPP_
00031 #define MONODOMAINPROBLEM_HPP_
00032
00033 #include "ChasteSerialization.hpp"
00034 #include <boost/serialization/base_object.hpp>
00035
00036 #include "AbstractCardiacProblem.hpp"
00037 #include "AbstractCardiacTissue.hpp"
00038 #include "AbstractDynamicLinearPdeSolver.hpp"
00039 #include "AbstractCardiacCellFactory.hpp"
00040 #include "MonodomainTissue.hpp"
00041
00042
00046 template<unsigned ELEMENT_DIM, unsigned SPACE_DIM = ELEMENT_DIM>
00047 class MonodomainProblem : public AbstractCardiacProblem<ELEMENT_DIM, SPACE_DIM, 1>
00048 {
00050 friend class boost::serialization::access;
00057 template<class Archive>
00058 void serialize(Archive & archive, const unsigned int version)
00059 {
00060 archive & boost::serialization::base_object<AbstractCardiacProblem<ELEMENT_DIM, SPACE_DIM, 1> >(*this);
00061 archive & mpMonodomainTissue;
00062 }
00063
00064 protected:
00066 MonodomainTissue<ELEMENT_DIM,SPACE_DIM>* mpMonodomainTissue;
00067
00068 public:
00070 AbstractCardiacTissue<ELEMENT_DIM, SPACE_DIM>* CreateCardiacTissue();
00071
00073 AbstractDynamicLinearPdeSolver<ELEMENT_DIM, SPACE_DIM, 1>* CreateSolver();
00074
00075 public:
00081 MonodomainProblem(AbstractCardiacCellFactory<ELEMENT_DIM,SPACE_DIM>* pCellFactory);
00082
00086 MonodomainProblem();
00087
00091 ~MonodomainProblem();
00092
00094 MonodomainTissue<ELEMENT_DIM,SPACE_DIM> * GetMonodomainTissue();
00095
00101 void WriteInfo(double time);
00102
00107 virtual void DefineWriterColumns(bool extending);
00108
00116 virtual void WriteOneStep(double time, Vec voltageVec);
00117
00118 };
00119
00120 #include "SerializationExportWrapper.hpp"
00121 EXPORT_TEMPLATE_CLASS2(MonodomainProblem, 1, 1)
00122 EXPORT_TEMPLATE_CLASS2(MonodomainProblem, 1, 2)
00123 EXPORT_TEMPLATE_CLASS2(MonodomainProblem, 1, 3)
00124 EXPORT_TEMPLATE_CLASS2(MonodomainProblem, 2, 2)
00125 EXPORT_TEMPLATE_CLASS2(MonodomainProblem, 3, 3)
00126
00127 #endif