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 #ifndef ABSTRACTCONTRACTIONMODEL_HPP_
00030 #define ABSTRACTCONTRACTIONMODEL_HPP_
00031
00032 #include <cassert>
00033
00034
00039 typedef enum ContractionModel_
00040 {
00041 NASH2004,
00042 KERCHOFFS2003,
00043 NHS,
00044 NONPHYSIOL1,
00045 NONPHYSIOL2,
00046 NONPHYSIOL3
00047 } ContractionModel;
00048
00049
00054 typedef struct ContractionModelInputParameters_
00055 {
00056 double voltage;
00057 double intracellularCalciumConcentration;
00058 } ContractionModelInputParameters;
00059
00060
00066 class AbstractContractionModel
00067 {
00068 public:
00072 AbstractContractionModel()
00073 {
00074 }
00075
00079 virtual ~AbstractContractionModel()
00080 {
00081 }
00082
00086 virtual bool IsStretchDependent()=0;
00087
00091 virtual bool IsStretchRateDependent()=0;
00092
00098 virtual void SetInputParameters(ContractionModelInputParameters& rInputParameters)=0;
00099
00106 virtual void SetStretchAndStretchRate(double stretch, double stretchRate)=0;
00107
00111 void SetStretch(double stretch)
00112 {
00113 assert(!IsStretchRateDependent());
00114 SetStretchAndStretchRate(stretch, 0.0);
00115 }
00116
00126 virtual void RunDoNotUpdate(double startTime, double endTime, double timeStep)=0;
00127
00136 virtual void RunAndUpdate(double startTime, double endTime, double timeStep)=0;
00137
00138
00143 virtual void UpdateStateVariables()=0;
00144
00152 virtual double GetActiveTension()=0;
00153
00158 virtual double GetNextActiveTension()=0;
00159 };
00160
00161
00162 #endif