HeartConfigRelatedCellFactory.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 #ifndef HEARTCONFIGRELATEDCELLFACTORY_HPP_
00037 #define HEARTCONFIGRELATEDCELLFACTORY_HPP_
00038
00039 #include <vector>
00040 #include <map>
00041 #include <boost/shared_ptr.hpp>
00042
00043 #include "AbstractCardiacCellFactory.hpp"
00044 #include "HeartConfig.hpp"
00045
00046 #include "AbstractStimulusFunction.hpp"
00047 #include "MultiStimulus.hpp"
00048 #include "SimpleStimulus.hpp"
00049
00050 #include "ChasteCuboid.hpp"
00051 #include "AbstractChasteRegion.hpp"
00052
00053 #include "DynamicCellModelLoader.hpp"
00054
00055
00056
00057
00058
00059
00060 #include "DiFrancescoNoble1985.hpp"
00061 #include "FaberRudy2000.hpp"
00062 #include "FaberRudy2000Opt.hpp"
00063 #include "FoxModel2002.hpp"
00064 #include "FoxModel2002BackwardEuler.hpp"
00065 #include "HodgkinHuxley1952.hpp"
00066 #include "LuoRudy1991.hpp"
00067 #include "LuoRudy1991BackwardEuler.hpp"
00068 #include "Mahajan2008.hpp"
00069 #include "Mahajan2008BackwardEuler.hpp"
00070 #include "Maleckar2008.hpp"
00071 #include "TenTusscher2006Epi.hpp"
00072 #include "TenTusscher2006EpiBackwardEuler.hpp"
00073
00074
00075
00076
00077
00078 #include "FoxModel2002Opt.hpp"
00079 #include "LuoRudy1991Opt.hpp"
00080 #include "Mahajan2008Opt.hpp"
00081 #include "Maleckar2008Opt.hpp"
00082 #include "NobleVargheseKohlNoble1998a.hpp"
00083 #include "NobleVargheseKohlNoble1998aOpt.hpp"
00084 #include "NobleVargheseKohlNoble1998aBackwardEuler.hpp"
00085 #include "Shannon2004.hpp"
00086 #include "TenTusscher2006EpiOpt.hpp"
00087
00095 template<unsigned SPACE_DIM>
00096 class HeartConfigRelatedCellFactory : public AbstractCardiacCellFactory<SPACE_DIM>
00097 {
00098 private:
00100 cp::ionic_model_selection_type mDefaultIonicModel;
00102 std::vector<boost::shared_ptr<AbstractChasteRegion<SPACE_DIM> > > mIonicModelRegions;
00104 std::vector<cp::ionic_model_selection_type> mIonicModelsDefined;
00105
00107 std::vector<boost::shared_ptr<AbstractChasteRegion<SPACE_DIM> > > mStimulatedAreas;
00109 std::vector<boost::shared_ptr<AbstractStimulusFunction> > mStimuliApplied;
00110
00122 std::vector<boost::shared_ptr<AbstractChasteRegion<SPACE_DIM> > > mCellHeterogeneityAreas;
00124 std::vector<double> mScaleFactorGks;
00126 std::vector<double> mScaleFactorIto;
00128 std::vector<double> mScaleFactorGkr;
00129
00131 std::vector<std::map<std::string, double> > mParameterSettings;
00132
00139 void PreconvertCellmlFiles();
00140
00146 DynamicCellModelLoaderPtr LoadDynamicModel(const cp::ionic_model_selection_type& rModel,
00147 bool isCollective);
00148
00149 public:
00155 HeartConfigRelatedCellFactory();
00156
00158 ~HeartConfigRelatedCellFactory();
00159
00165 AbstractCardiacCellInterface* CreateCellWithIntracellularStimulus(
00166 boost::shared_ptr<AbstractStimulusFunction> intracellularStimulus,
00167 unsigned nodeIndex);
00168
00176 AbstractCardiacCellInterface* CreateCardiacCellForTissueNode(Node<SPACE_DIM>* pNode);
00177
00181 void FillInCellularTransmuralAreas();
00182
00189 void SetCellParameters(AbstractCardiacCellInterface* pCell, unsigned nodeIndex);
00190
00197 void SetCellIntracellularStimulus(AbstractCardiacCellInterface* pCell, unsigned nodeIndex);
00198 };
00199
00200
00201 #endif