Chaste  Release::2018.1
NhsContractionModel.hpp
1 /*
2 
3 Copyright (c) 2005-2018, University of Oxford.
4 All rights reserved.
5 
6 University of Oxford means the Chancellor, Masters and Scholars of the
7 University of Oxford, having an administrative office at Wellington
8 Square, Oxford OX1 2JD, UK.
9 
10 This file is part of Chaste.
11 
12 Redistribution and use in source and binary forms, with or without
13 modification, are permitted provided that the following conditions are met:
14  * Redistributions of source code must retain the above copyright notice,
15  this list of conditions and the following disclaimer.
16  * Redistributions in binary form must reproduce the above copyright notice,
17  this list of conditions and the following disclaimer in the documentation
18  and/or other materials provided with the distribution.
19  * Neither the name of the University of Oxford nor the names of its
20  contributors may be used to endorse or promote products derived from this
21  software without specific prior written permission.
22 
23 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
27 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
29 GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
32 OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 
34 */
35 #ifndef NHSCONTRACTIONMODEL_HPP_
36 #define NHSCONTRACTIONMODEL_HPP_
37 
38 #include "AbstractOdeBasedContractionModel.hpp"
39 #include "Exception.hpp"
40 
41 
57 {
58 friend class TestContractionModels;
59 
60 protected :
62  double mLambda;
64  double mDLambdaDt;
66  double mCalciumI;
67 
68 
71 
73  double mK1;
75  double mK2;
76 
77  // Parameters
78 
80  static const double mKon;
81 
83  static const double mKrefoff;
84 
86  static const double mGamma;
87 
89  static const double mCalciumTroponinMax;
90 
92  static const double mAlphaR1;
93 
95  static const double mAlphaR2;
96 
98  static const double mKZ;
99 
101  static const unsigned mNr;
102 
104  static const double mBeta1;
105 
107  static const double mAlpha0;
108 
110  static const unsigned mN;
111 
113  static const double mZp;
114 
116  static const double mCalcium50ref;
117 
119  static const double mTref;
120 
122  static const double mBeta0;
123 
125  static const double mA;
126 
128  static const double mA1;
129 
131  static const double mA2;
132 
134  static const double mA3;
135 
137  static const double mAlpha1;
138 
140  static const double mAlpha2;
141 
143  static const double mAlpha3;
144 
149  void CalculateCalciumTrop50();
150 
156  double CalculateT0(double z);
157 
158 public :
164 
171  void SetStretchAndStretchRate(double lambda, double dlambdaDt);
172 
178  void SetInputParameters(ContractionModelInputParameters& rInputParameters);
179 
184  void SetIntracellularCalciumConcentration(double calciumConcentration);
185 
190  double GetCalciumTroponinValue();
191 
199  void EvaluateYDerivatives(double time, const std::vector<double> &rY, std::vector<double> &rDY);
200 
204  double GetActiveTension();
205 
212  {
213  EXCEPTION("If using this in an 'explicit manner' call UpdateStateVariables() and then GetActiveTension(), otherwise use NhsModelWithBackwardSolver");
214  }
215 
220  {
221  return true;
222  }
223 
228  {
229  return true;
230  }
231 };
232 #endif /*NHSCONTRACTIONMODEL_HPP_*/
static const double mBeta0
void SetStretchAndStretchRate(double lambda, double dlambdaDt)
double CalculateT0(double z)
static const double mTref
#define EXCEPTION(message)
Definition: Exception.hpp:143
static const double mKZ
static const unsigned mNr
static const double mZp
static const double mAlphaR1
static const double mAlpha0
void SetInputParameters(ContractionModelInputParameters &rInputParameters)
static const unsigned mN
static const double mAlpha3
static const double mCalciumTroponinMax
void SetIntracellularCalciumConcentration(double calciumConcentration)
void EvaluateYDerivatives(double time, const std::vector< double > &rY, std::vector< double > &rDY)
static const double mBeta1
static const double mA
static const double mA2
static const double mCalcium50ref
static const double mA3
static const double mAlpha2
static const double mGamma
static const double mKon
static const double mAlpha1
static const double mAlphaR2
static const double mKrefoff
static const double mA1