Excitation-contraction coupling/mitochondrial energetics (ECME) model (Cortassa et al. 2006)

 Download zip file 
Help downloading and running models
"An intricate network of reactions is involved in matching energy supply with demand in the heart. This complexity arises because energy production both modulates and is modulated by the electrophysiological and contractile activity of the cardiac myocyte. Here, we present an integrated mathematical model of the cardiac cell that links excitation-contraction coupling with mitochondrial energy generation. The dynamics of the model are described by a system of 50 ordinary differential equations. The formulation explicitly incorporates cytoplasmic ATP-consuming processes associated with force generation and ion transport, as well as the creatine kinase reaction. Changes in the electrical and contractile activity of the myocyte are coupled to mitochondrial energetics through the ATP, Ca21, and Na1 concentrations in the myoplasmic and mitochondrial matrix compartments. ..."
1 . Cortassa S, Aon MA, Marbán E, Winslow RL, O'Rourke B (2003) An integrated model of cardiac mitochondrial energy metabolism and calcium dynamics. Biophys J 84:2734-55 [PubMed]
Model Information (Click on a link to find other models with that property)
Model Type: Neuron or other electrically excitable cell; Electrogenic pump;
Brain Region(s)/Organism:
Cell Type(s): Heart cell;
Channel(s): I L high threshold; I Sodium; I Potassium; Na/Ca exchanger; I_SERCA;
Gap Junctions:
Simulation Environment: C or C++ program;
Model Concept(s): Activity Patterns; Temporal Pattern Generation; Signaling pathways; Calcium dynamics;
Search NeuronDB for information about:  I L high threshold; I Sodium; I Potassium; Na/Ca exchanger; I_SERCA;
int CVode(void *cvode_mem, realtype tout, N_Vector yout, realtype *t, int itask);
(NORMAL or ONE_STEP) tout = desired output time. yout is the output vector

N_Vector v; //This is a pointer
real *v_data;
real r;
integer v_len;
integer i;

//User defined/alloc data
N_Vector N_VMake(integertype n, realtype *v_data, M_Env machEnv);
void N_VDispose(N_Vector v);

N_VGetData(v); //pointer to data storage
N_VSetData(realtype *v_data, N_Vector v)
N_VLENGTH;  //Set/Get the length of the vector
N_VIth(v,i);//Like v[i]

v = (N_Vector) malloc(sizeof(*v)); v->data = v_data; v->length = v_len;

//CVode alloc
v = N_VNew(int n, NULL)

static void *cvode_mem;
cvode_mem = CVodeMalloc(N, f, t0, y0,lmm, iter, itol, &reltol, &abstol, f_data, errfp, optIn, iopt, ropt, NULL)
N = Problem Size
t0, y0 = Initial conditions
lmm = Liner Multistep method (Adams, BRF)
itol = (SS) scale relative and absolute tolerances | (SV) scalar relative and vector (N_Vactor) absolute tolerances
f_data = pointer to user data;
errfp = file pointer for error, NULL = standard output
iopt, ropt = real and integer optional inputs
**y0 is copied to zn[0]

For code see cvode.c L#495 ,cvode.h L#564

void f_GPC(long N, realtype time, N_Vector y, N_Vector ydot, void *f_data) { 
f(N, tn, zn[0], ftemp, f_data);
zn[0] = y
ftemp = ydot

#define zn     (cv_mem->cv_zn) 
#define ftemp  (cv_mem->cv_ftemp)
first run
f(N, tn, zn[0], zn[1], f_data); 

Must redo pointers everytime;

Loading data, please wait...