"""This module contains a Fitzhughnagumo cardiac cell model
The module was autogenerated from a gotran form file
"""
from __future__ import division
from collections import OrderedDict
import ufl
from cbcbeat.dolfinimport import *
from cbcbeat.cellmodels import CardiacCellModel
[docs]class Fitzhughnagumo(CardiacCellModel):
"""
NOT_IMPLEMENTED
"""
def __init__(self, params=None, init_conditions=None):
"""
Create cardiac cell model
*Arguments*
params (dict, :py:class:`dolfin.Mesh`, optional)
optional model parameters
init_conditions (dict, :py:class:`dolfin.Mesh`, optional)
optional initial conditions
"""
CardiacCellModel.__init__(self, params, init_conditions)
@staticmethod
[docs] def default_parameters():
"Set-up and return default parameters."
params = OrderedDict([("a", 0.13),
("b", 0.013),
("c_1", 0.26),
("c_2", 0.1),
("c_3", 1.0),
("stim_amplitude", 0),
("stim_duration", 1),
("stim_period", 1000),
("stim_start", 1),
("v_peak", 40.0),
("v_rest", -85.0)])
return params
@staticmethod
[docs] def default_initial_conditions():
"Set-up and return default initial conditions."
ic = OrderedDict([("v", -85.0),
("s", 0.0)])
return ic
[docs] def I(self, v, s, time=None):
"""
Transmembrane current
"""
# Imports
# No imports for now
time = time if time else Constant(0.0)
# Assign states
_is_vector = False
# Assign parameters
a = self._parameters["a"]
stim_start = self._parameters["stim_start"]
stim_amplitude = self._parameters["stim_amplitude"]
c_1 = self._parameters["c_1"]
c_2 = self._parameters["c_2"]
v_rest = self._parameters["v_rest"]
stim_duration = self._parameters["stim_duration"]
v_peak = self._parameters["v_peak"]
current = -(v - v_rest)*(v_peak - v)*(-(v_peak - v_rest)*a + v -\
v_rest)*c_1/((v_peak - v_rest)*(v_peak - v_rest)) + (v -\
v_rest)*c_2*s/(v_peak - v_rest) - (1.0 - 1.0/(1.0 +\
ufl.exp(-5.0*stim_start + 5.0*time)))*stim_amplitude/(1.0 +\
ufl.exp(-5.0*stim_start + 5.0*time - 5.0*stim_duration))
return current
[docs] def F(self, v, s, time=None):
"""
Right hand side for ODE system
"""
# Imports
# No imports for now
time = time if time else Constant(0.0)
# Assign states
_is_vector = False
# Assign parameters
c_3 = self._parameters["c_3"]
b = self._parameters["b"]
v_rest = self._parameters["v_rest"]
F_expressions = [\
# Derivative for state s
(-c_3*s + v - v_rest)*b,
]
return as_vector(F_expressions) if _is_vector else F_expressions[0]
[docs] def num_states(self):
return 1
def __str__(self):
return 'Fitzhughnagumo cardiac cell model'