41 m_name =
"Courtemanche-Ramirez-Nattel 1998";
59 "Ca_rel [millimolar]",
147 y[
_caup ] = 1.488e+0;
180 CepsReal dInf = 1/(1+exp(-0.125*(v+10)));
181 CepsReal texp = expm1(-(v+10.)/6.24);
183 dtyLin [
_d] = -1/taud;
184 dtyNLin[
_d] = dInf/taud;
188 CepsReal tauf = 9./(0.02+0.0197*exp(-pow(0.0337*(v+10.),2)));
189 dtyLin [
_f] = -1/tauf;
190 dtyNLin[
_f] = fInf/tauf;
194 CepsReal wInf = 1-1/(1+exp(-(v-40)/17.));
195 dtyLin [
_w] = -1/tauw;
196 dtyNLin[
_w] = wInf/tauw;
200 dtyLin [
_m] = -alpham-betam;
201 dtyNLin[
_m] = alpham;
203 CepsReal alphah = v<-40 ? 0.135*exp(-(v+80)/6.8) : 0.;
204 CepsReal betah = v<-40 ? 3.56*exp(0.079*v) + 3.1e5*exp(0.35*v) : 1/(0.13*(1+exp(-(v+10.66)/11.1)));
205 dtyLin [
_h] = -alphah-betah;
206 dtyNLin[
_h] = alphah;
208 CepsReal alphaj = v<-40 ? (-127140.*exp(0.2444*v)-3.474e-5*exp(-0.04391*v))*(v+37.78)
209 /(1+exp(0.311*(v+79.23))) : 0.;
210 CepsReal betaj = v<-40 ? 0.1212*exp(-0.01052*v)/(1+exp(-0.1378*(v+40.14)))
211 : 0.3*exp(-2.35e-7*v)/(1+exp(-0.1*(v+32)));
212 dtyLin [
_j] = -alphaj-betaj;
213 dtyNLin[
_j] = alphaj;
215 CepsReal alphaoa = 0.65/(exp(-(v+10)/8.5)+exp(-(v-30)/59.));
216 CepsReal betaoa = 0.65/(2.5+exp((v+82)/17.));
218 CepsReal oaInf = 1/(1+exp(-(v+20.47)/17.54));
219 dtyLin [
_oa] = -1/tauoa;
220 dtyNLin[
_oa] = oaInf/tauoa;
222 CepsReal alphaoi = 1/(18.53+exp((v+113.7)/10.95));
223 CepsReal betaoi = 1/(35.56+exp(-(v+1.26)/7.44));
225 CepsReal oiInf = 1/(1+exp((v+43.1)/5.3));
226 dtyLin [
_oi] = -1/tauoi;
227 dtyNLin[
_oi] = oiInf/tauoi;
230 CepsReal uaInf = 1/(1+exp(-(v+30.3)/9.6));
231 dtyLin [
_ua] = -1/tauua;
232 dtyNLin[
_ua] = uaInf/tauua;
234 CepsReal alphaui = 1/(21+exp(-(v-185.)/28.));
237 CepsReal uiInf = 1/(1+exp((v-99.45)/27.48));
238 dtyLin [
_ui] = -1/tauui;
239 dtyNLin[
_ui] = uiInf/tauui;
242 : -3.e-4*(v+14.10)/expm1(-0.2*(v+14.10));
244 : 7.3898e-5*(v-3.3328)/expm1((v-3.3328)/5.1237);
245 CepsReal tauxr = 1/(alphaxr+betaxr);
246 CepsReal xrInf = 1/(1+exp(-(v+14.1)/6.5));
247 dtyLin [
_xr] = -1/tauxr;
248 dtyNLin[
_xr] = xrInf/tauxr;
252 CepsReal tauxs = 0.5/(alphaxs+betaxs);
253 CepsReal xsInf = 1/std::sqrt(1+exp(-(v-19.9)/12.7));
254 dtyLin [
_xs] = -1/tauxs;
255 dtyNLin[
_xs] = xsInf/tauxs;
260 CepsReal gkur = 0.005+0.05/(1+exp(-(v-15)/13));
264 CepsReal fnak = 1/(1+0.1245*exp(-0.1/RTF*v)+0.0365*c[
_sigma]*exp(-v/RTF));
268 dtyNLin[
_ki] = (2*inak-ik1-ito-ikur-ikr-iks-ibk)/(c[
_vi]*c[
_F]);
282 dtyNLin[
_nai] = (-3*inak-3*inaca-ibna-ina)/(c[
_vi]*c[
_F]);
290 CepsReal iIon = -(ina+ik1+ito+ikur+ikr+iks+ibna+ibca+inak+icap+inaca+ical);
306 CepsReal uInf = 1/(1+exp(-(fn-3.4175e-13)/1.367e-15));
310 CepsReal tauv = 1.91+2.09/(1+exp(-(fn-3.4175e-13)/1.367e-15));
311 CepsReal vInf = 1-1/(1+exp(-(fn-6.835e-14)/1.367e-15));
312 dtyLin [
_v] = -1/tauv;
313 dtyNLin[
_v] = vInf/tauv;
325 dtyNLin[
_cai] = b1/b2;
std::basic_string< CepsChar > CepsString
C++ format string.
std::set< _Type, _Compare, _Alloc > CepsSet
C++ set.
float CepsReal
Need single precision floating point.
Represents a ionic model for a group of cells, i.e. multiple systems of ODEs.
CepsReal m_paperStim
Original stim amplitude.
CepsUInt m_nStateVars
Dimensionality of the ODE system, -1 for vm.
CepsReal * m_constants
Constant parameters of the model, from inputs.
CepsReal getStimulation(DegreeOfFreedom *x, CepsReal t) const
Get the sum of all stimulations at time t and dof x.
CepsVector< CepsString > m_stateVarNames
Names of state variables.
CepsReal getCmInternal(CepsReal t, DegreeOfFreedom *dof) const
Get either the value of cm on dof, or the default value from the paper.
CepsReal m_paperCm
Original value of Cm.
CepsString m_name
A label for display.
static constexpr const CepsInt _ua
Index alias.
CRN98(Unknown *u, const CepsSet< CepsAttribute > &attrs={}, InputParameters *params=nullptr)
Constructor (sets constants)
static constexpr const CepsInt _h
Index alias.
static constexpr const CepsInt _F
Index alias.
static constexpr const CepsInt _f
Index alias.
static constexpr const CepsInt _vrel
Index alias.
static constexpr const CepsInt _gkr
Index alias.
static constexpr const CepsInt _kmcsqn
Index alias.
void getInitialCondition(CepsReal *v, CepsReal *y) const final
Sets initial values of state variables and transmembrane voltage for a single point....
void computeRates(CepsReal t, CepsReal *y, CepsReal *v, CepsReal *dtyL, CepsReal *dtyNL, CepsReal *dtv, DegreeOfFreedom *dof) const final
Get the linear and non linear part of the evolution function f. Also computes the ionic current.
static constexpr const CepsInt _gbna
Index alias.
static constexpr const CepsInt _ui
Index alias.
static constexpr const CepsInt _kmko
Index alias.
static constexpr const CepsInt _kmtrpn
Index alias.
static constexpr const CepsInt _sigma
Index alias.
static constexpr const CepsInt _icapmax
Index alias.
static constexpr const CepsInt _caupmax
Index alias.
CepsReal m_cellSurface
surface used to scale current to CEPS unit.
static constexpr const CepsInt _vup
Index alias.
static constexpr const CepsInt _iupmax
Index alias.
CepsReal convertCmFromCepsUnit(const CepsReal &cm) const override
Convert capacitance from ceps units (uF/cm2) to ionic model units. Does nothing by default.
static constexpr const CepsInt _kmnai
Index alias.
static constexpr const CepsInt _xs
Index alias.
static constexpr const CepsInt _T
Index alias.
static constexpr const CepsInt _R
Index alias.
static constexpr const CepsInt _xr
Index alias.
static constexpr const CepsInt _gna
Index alias.
static constexpr const CepsInt _v
Index alias.
static constexpr const CepsInt _kq10
Index alias.
static constexpr const CepsInt _nao
Index alias.
static constexpr const CepsInt _ki
Index alias.
static constexpr const CepsInt _u
Index alias.
static constexpr const CepsInt _w
Index alias.
static constexpr const CepsInt _cao
Index alias.
static constexpr const CepsInt _vcell
Index alias.
static constexpr const CepsInt _vi
Index alias.
static constexpr const CepsInt _tauu
Index alias.
static constexpr const CepsInt _oi
Index alias.
static constexpr const CepsInt _gto
Index alias.
static constexpr const CepsInt _j
Index alias.
void setupWithParameters(InputParameters *p, FunctionDictionary *dico)
Sets the constants and the space dependant parameters from text inputs.
static constexpr const CepsInt _nai
Index alias.
static constexpr const CepsInt _cai
Index alias.
static constexpr const CepsInt _gks
Index alias.
static constexpr const CepsInt _kmna
Index alias.
static constexpr const CepsInt _gk1
Index alias.
static constexpr const CepsInt _tautr
Index alias.
static constexpr const CepsInt _krel
Index alias.
static constexpr const CepsInt _d
Index alias.
CepsReal convertCurrentFromCepsUnit(const CepsReal &i) const override
Convert from uA per cm2 to pA.
static constexpr const CepsInt _kmca
Index alias.
static constexpr const CepsInt _gcal
Index alias.
static constexpr const CepsInt _kmcmdn
Index alias.
static constexpr const CepsInt _carel
Index alias.
static constexpr const CepsInt _taufca
Index alias.
static constexpr const CepsInt _ko
Index alias.
static constexpr const CepsInt _kup
Index alias.
CepsReal convertCmToCepsUnit(const CepsReal &cm) const override
Convert capacitance from ionic model units to ceps units (uF/cm2). Does nothing by default.
static constexpr const CepsInt _cmdnmax
Index alias.
static constexpr const CepsInt _csqnmax
Index alias.
static constexpr const CepsInt _inacamax
Index alias.
static constexpr const CepsInt _gbk
Index alias.
static constexpr const CepsInt _inakmax
Index alias.
static constexpr const CepsInt _m
Index alias.
static constexpr const CepsInt _gamma
Index alias.
static constexpr const CepsInt _oa
Index alias.
static constexpr const CepsInt _caup
Index alias.
static constexpr const CepsInt _fca
Index alias.
static constexpr const CepsInt _ksat
Index alias.
static constexpr const CepsInt _trpnmax
Index alias.
static constexpr const CepsInt _gbca
Index alias.
A degree of freedom for any kind of problem The dof can be associated to a geometrical element or not...
FunctionDictionary that holds functions which can be used to define source terms, boundary conditions...
A class used to defined an unknown of a PDE problem The unknown can be defined on a specific region,...
const CepsGlobalIndex & getGlobalIndex() const
Get the index
CepsBool approxEquals(CepsReal a, CepsReal b, CepsReal epsilon)
Approximate equality with epsilon tolerance.
CepsBool isValidPtr(_Type *ptr)
Tells if pointer is not null.
void checkNanOrInf(CepsReal v, CepsString message="")
Stops if value is NaN or infty.