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
00076 virtual ~AbstractContractionModel()
00077 {
00078 }
00079
00083 virtual bool IsStretchDependent()=0;
00084
00088 virtual bool IsStretchRateDependent()=0;
00089
00095 virtual void SetInputParameters(ContractionModelInputParameters& rInputParameters)=0;
00096
00103 virtual void SetStretchAndStretchRate(double stretch, double stretchRate)=0;
00104
00108 void SetStretch(double stretch)
00109 {
00110 assert(!IsStretchRateDependent());
00111 SetStretchAndStretchRate(stretch, 0.0);
00112 }
00113
00123 virtual void RunDoNotUpdate(double startTime, double endTime, double timeStep)=0;
00124
00133 virtual void RunAndUpdate(double startTime, double endTime, double timeStep)=0;
00134
00135
00140 virtual void UpdateStateVariables()=0;
00141
00149 virtual double GetActiveTension()=0;
00150
00155 virtual double GetNextActiveTension()=0;
00156 };
00157
00158
00159 #endif