Generated Code

The following is f77 code generated by the CellML API from this CellML file. (Back to language selection)

The raw code is available.

C
C There are a total of 40 entries in the algebraic variable array.
C There are a total of 7 entries in each of the rate and state variable arrays.
C There are a total of 38 entries in the constant variable array.
C
C
C VOI is time in component environment (second).
C STATES(1) is V in component membrane (millivolt).
C CONSTS(1) is V_T in component membrane (millivolt).
C CONSTS(2) is V_S in component membrane (millivolt).
C CONSTS(3) is C_m in component membrane (mF_per_cm_squared).
C CONSTS(4) is F in component membrane (coulomb_per_mole).
C CONSTS(5) is R in component membrane (joule_per_mole_per_kelvin).
C CONSTS(6) is T in component membrane (kelvin).
C ALGBRC(17) is I_leak in component I_leak (milliampere_per_cm_squared).
C ALGBRC(22) is I_Na in component I_Na (milliampere_per_cm_squared).
C ALGBRC(23) is I_KD in component I_KD (milliampere_per_cm_squared).
C ALGBRC(24) is I_KM in component I_KM (milliampere_per_cm_squared).
C ALGBRC(26) is I_CaL in component I_CaL (milliampere_per_cm_squared).
C ALGBRC(40) is I_h in component I_h (milliampere_per_cm_squared).
C ALGBRC(12) is I_app in component stimulus_protocol (milliampere_per_cm_squared).
C CONSTS(7) is i_stimStart in component stimulus_protocol (second).
C CONSTS(8) is i_stimEnd in component stimulus_protocol (second).
C CONSTS(9) is i_stimAmplitude in component stimulus_protocol (milliampere_per_cm_squared).
C ALGBRC(6) is tau in component stimulus_protocol (second).
C CONSTS(10) is period in component stimulus_protocol (second).
C CONSTS(11) is g_leak in component I_leak (millisiemens_per_cm_squared).
C CONSTS(12) is E_leak in component I_leak (millivolt).
C CONSTS(13) is g_Na in component I_Na (millisiemens_per_cm_squared).
C CONSTS(14) is E_Na in component I_Na (millivolt).
C STATES(2) is m in component Na_m_gate (dimensionless).
C STATES(3) is h in component Na_h_gate (dimensionless).
C ALGBRC(1) is alpha in component Na_m_gate (per_second).
C ALGBRC(7) is beta in component Na_m_gate (per_second).
C ALGBRC(13) is tau_m in component Na_m_gate (second).
C ALGBRC(18) is m_inf in component Na_m_gate (dimensionless).
C ALGBRC(2) is alpha_h in component Na_h_gate (per_second).
C ALGBRC(8) is beta_h in component Na_h_gate (per_second).
C ALGBRC(19) is h_inf in component Na_h_gate (dimensionless).
C ALGBRC(14) is tau_h in component Na_h_gate (second).
C CONSTS(15) is g_KD in component I_KD (millisiemens_per_cm_squared).
C CONSTS(16) is E_K in component I_KD (millivolt).
C STATES(4) is n in component KD_n_gate (dimensionless).
C ALGBRC(3) is alpha_n in component KD_n_gate (per_second).
C ALGBRC(9) is beta_n in component KD_n_gate (per_second).
C ALGBRC(15) is tau_n in component KD_n_gate (second).
C ALGBRC(20) is n_inf in component KD_n_gate (dimensionless).
C CONSTS(17) is g_KM in component I_KM (millisiemens_per_cm_squared).
C STATES(5) is p in component KM_p_gate (dimensionless).
C ALGBRC(4) is p_inf in component KM_p_gate (dimensionless).
C ALGBRC(10) is tau_p in component KM_p_gate (second).
C CONSTS(18) is tau_max in component KM_p_gate (second).
C CONSTS(19) is P_Ca in component I_CaL (cm_per_second).
C ALGBRC(25) is G in component G_nonlin (coulomb_per_cm_cubed).
C STATES(6) is q in component CaL_q_gate (dimensionless).
C ALGBRC(5) is alpha_q in component CaL_q_gate (per_second).
C ALGBRC(11) is beta_q in component CaL_q_gate (per_second).
C ALGBRC(16) is tau_q in component CaL_q_gate (second).
C ALGBRC(21) is q_inf in component CaL_q_gate (dimensionless).
C CONSTS(20) is Z in component G_nonlin (dimensionless).
C CONSTS(21) is Ca_o in component G_nonlin (mM).
C STATES(7) is Ca_i in component dCa_i_dt (mM).
C CONSTS(22) is Ca_inf in component dCa_i_dt (mM).
C CONSTS(23) is tau_r in component dCa_i_dt (second).
C CONSTS(24) is d in component dCa_i_dt (centimeter).
C ALGBRC(27) is drive_channel in component dCa_i_dt (mM_per_second).
C CONSTS(25) is k in component dCa_i_dt (fixer).
C ALGBRC(39) is m in component I_h (dimensionless).
C CONSTS(26) is E_h in component I_h (millivolt).
C CONSTS(27) is g_hbar in component I_h (millisiemens_per_cm_squared).
C CONSTS(28) is cac in component I_h (mM).
C CONSTS(29) is V_S in component I_h (millivolt).
C ALGBRC(36) is o_1 in component kinetic (dimensionless).
C ALGBRC(37) is o_2 in component kinetic (dimensionless).
C CONSTS(30) is g_inc in component I_h (dimensionless).
C ALGBRC(33) is p_0 in component kinetic (dimensionless).
C ALGBRC(34) is p_1 in component kinetic (dimensionless).
C ALGBRC(38) is c_1 in component kinetic (dimensionless).
C ALGBRC(30) is alpha in component rate_constants (dimensionless).
C ALGBRC(31) is beta in component rate_constants (dimensionless).
C ALGBRC(32) is k_1Ca in component rate_constants (per_second).
C CONSTS(31) is k_2 in component rate_constants (per_second).
C ALGBRC(35) is k_3p in component rate_constants (per_second).
C CONSTS(32) is k_4 in component rate_constants (per_second).
C ALGBRC(28) is h_inf in component rate_constants (second).
C ALGBRC(29) is tau_s in component rate_constants (second).
C CONSTS(33) is P_c in component rate_constants (dimensionless).
C CONSTS(34) is n_Ca in component rate_constants (dimensionless).
C CONSTS(35) is n_exp in component rate_constants (dimensionless).
C CONSTS(36) is p_C in component rate_constants (dimensionless).
C CONSTS(37) is Ca_c in component rate_constants (mM).
C CONSTS(38) is tau_m in component rate_constants (second).
C RATES(1) is d/dt V in component membrane (millivolt).
C RATES(2) is d/dt m in component Na_m_gate (dimensionless).
C RATES(3) is d/dt h in component Na_h_gate (dimensionless).
C RATES(4) is d/dt n in component KD_n_gate (dimensionless).
C RATES(5) is d/dt p in component KM_p_gate (dimensionless).
C RATES(6) is d/dt q in component CaL_q_gate (dimensionless).
C RATES(7) is d/dt Ca_i in component dCa_i_dt (mM).
C
      SUBROUTINE initConsts(CONSTS, RATES, STATES)
      REAL CONSTS(*), RATES(*), STATES(*)
      STATES(1) = -70
      CONSTS(1) = -55
      CONSTS(2) = 0
      CONSTS(3) = 1e-3
      CONSTS(4) = 96489
      CONSTS(5) = 8.314
      CONSTS(6) = 296.65
      CONSTS(7) = 5
      CONSTS(8) = 9
      CONSTS(9) = -0.3
      CONSTS(10) = 9
      CONSTS(11) = 1
      CONSTS(12) = -70
      CONSTS(13) = 70
      CONSTS(14) = 50
      STATES(2) = 0
      STATES(3) = 0
      CONSTS(15) = 7
      CONSTS(16) = -95
      STATES(4) = 0
      CONSTS(17) = 0.004
      STATES(5) = 0
      CONSTS(18) = 4
      CONSTS(19) = 2.76e-4
      STATES(6) = 0.00247262
      CONSTS(20) = 2
      CONSTS(21) = 2
      STATES(7) = 100e-6
      CONSTS(22) = 100e-6
      CONSTS(23) = 17e-3
      CONSTS(24) = 1e-4
      CONSTS(25) = 0.1
      CONSTS(26) = -20
      CONSTS(27) = 0.02
      CONSTS(28) = 0.006
      CONSTS(29) = 0
      CONSTS(30) = 2
      CONSTS(31) = 0.1
      CONSTS(32) = 1
      CONSTS(33) = 0.01
      CONSTS(34) = 4
      CONSTS(35) = 1
      CONSTS(36) = 0.01
      CONSTS(37) = 0.006
      CONSTS(38) = 20e-3
      RETURN
      END
      SUBROUTINE computeRates(VOI, CONSTS,  RATES, STATES, ALGBRC)
      REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*)
      ALGBRC(4) = TERNRY(- (STATES(1)+35.0000)/10.0000.LT.25.0000.AND.- (STATES(1)+35.0000)/10.0000.GT.- 25.0000, 1.00000/(1.00000+EXP(- (STATES(1)+35.0000)/10.0000)), 1.00000)
      ALGBRC(10) = TERNRY((STATES(1)+35.0000)/20.0000.LT.25.0000.AND.(STATES(1)+35.0000)/20.0000.GT.- 25.0000, CONSTS(18)/( 3.30000*EXP((STATES(1)+35.0000)/20.0000)+EXP(- (STATES(1)+35.0000)/20.0000)), 1.00000)
      RATES(5) = (ALGBRC(4) - STATES(5))/ALGBRC(10)
      ALGBRC(1) = TERNRY(ABS(((13.0000+CONSTS(1)) - STATES(1))/4.00000).LT.1.00000e-06,  0.320000*4.00000*(1.00000 - ((13.0000+CONSTS(1)) - STATES(1))/( 2.00000*4.00000)), ( 0.320000*((13.0000+CONSTS(1)) - STATES(1)))/(EXP(((13.0000+CONSTS(1)) - STATES(1))/4.00000) - 1.00000))
      ALGBRC(7) = TERNRY(ABS(- ((STATES(1) - CONSTS(1)) - 40.0000)/5.00000).LT.1.00000e-06,  - 0.280000*5.00000*(1.00000 - - ((STATES(1) - CONSTS(1)) - 40.0000)/( 2.00000*5.00000)), ( - 0.280000*((STATES(1) - CONSTS(1)) - 40.0000))/(EXP(- ((STATES(1) - CONSTS(1)) - 40.0000)/5.00000) - 1.00000))
      ALGBRC(13) = 1.00000/(ALGBRC(1)+ALGBRC(7))
      ALGBRC(18) = ALGBRC(1)/(ALGBRC(1)+ALGBRC(7))
      RATES(2) = (ALGBRC(18) - STATES(2))/ALGBRC(13)
      ALGBRC(2) =  0.128000*EXP(((17.0000+CONSTS(1)+CONSTS(2)) - STATES(1))/18.0000)
      ALGBRC(8) = 4.00000/(1.00000+EXP(((40.0000+CONSTS(2)+CONSTS(1)) - STATES(1))/5.00000))
      ALGBRC(19) = ALGBRC(2)/(ALGBRC(2)+ALGBRC(8))
      ALGBRC(14) = 1.00000/(ALGBRC(2)+ALGBRC(8))
      RATES(3) = (ALGBRC(19) - STATES(3))/ALGBRC(14)
      ALGBRC(3) = TERNRY(ABS(((STATES(1) - CONSTS(1)) - 15.0000)/5.00000).LT.1.00000e-06,  - 0.0320000*5.00000*(1.00000 - ((STATES(1) - CONSTS(1)) - 15.0000)/( 2.00000*5.00000)), ( - 0.0320000*((STATES(1) - CONSTS(1)) - 15.0000))/(EXP(((STATES(1) - CONSTS(1)) - 15.0000)/5.00000) - 1.00000))
      ALGBRC(9) = TERNRY(ABS(- ((STATES(1) - CONSTS(1)) - 10.0000)/40.0000).LT.1.00000e-06,  0.500000*40.0000*(1.00000+((STATES(1) - CONSTS(1)) - 10.0000)/( 2.00000*40.0000)), ( 0.500000*- ((STATES(1) - CONSTS(1)) - 10.0000))/(EXP(- ((STATES(1) - CONSTS(1)) - 10.0000)/40.0000) - 1.00000))
      ALGBRC(15) = 1.00000/(ALGBRC(3)+ALGBRC(9))
      ALGBRC(20) = ALGBRC(3)/(ALGBRC(3)+ALGBRC(9))
      RATES(4) = (ALGBRC(20) - STATES(4))/ALGBRC(15)
      ALGBRC(5) = 6.32000/(1.00000+EXP(- (STATES(1) - 5.00000)/13.8900))
      ALGBRC(11) = TERNRY(ABS((1.31000 - STATES(1))/5.36000).LT.1.00000e-06,  0.0200000*(5.36000+(1.31000 - STATES(1))/2.00000), ( 0.0200000*(1.31000 - STATES(1)))/(1.00000 - EXP((STATES(1) - 1.31000)/5.36000)))
      ALGBRC(16) = 1.00000/(ALGBRC(5)+ALGBRC(11))
      ALGBRC(21) = 1.00000/(1.00000+EXP((STATES(1)+10.0000)/- 10.0000))
      RATES(6) = (ALGBRC(21) - STATES(6))/ALGBRC(16)
      ALGBRC(25) = ( (( CONSTS(20) ** 2.00000*CONSTS(4) ** 2.00000*0.00100000*STATES(1))/( CONSTS(5)*CONSTS(6)))*1.00000e-06*(STATES(7) -  CONSTS(21)*EXP(( CONSTS(20)*CONSTS(4)*0.00100000*STATES(1))/( CONSTS(5)*CONSTS(6)))))/(1.00000 - EXP(( 0.00100000*CONSTS(20)*CONSTS(4)*STATES(1))/( CONSTS(5)*CONSTS(6))))
      ALGBRC(26) =  1000.00*CONSTS(19)*STATES(6) ** 2.00000*ALGBRC(25)
      ALGBRC(27) = ( CONSTS(25)*ALGBRC(26))/( 2.00000*CONSTS(4)*CONSTS(24))
      RATES(7) = TERNRY(ALGBRC(27).LE.0.00000, (CONSTS(22) - STATES(7))/CONSTS(23), ALGBRC(27)+(CONSTS(22) - STATES(7))/CONSTS(23))
      ALGBRC(17) =  1000.00*CONSTS(11)*(STATES(1) - CONSTS(12))
      ALGBRC(22) =  1000.00*CONSTS(13)*STATES(2) ** 3.00000*STATES(3)*(STATES(1) - CONSTS(14))
      ALGBRC(23) =  1000.00*CONSTS(15)*STATES(4) ** 4.00000*(STATES(1) - CONSTS(16))
      ALGBRC(24) =  1000.00*CONSTS(17)*STATES(5)*(STATES(1) - CONSTS(16))
      ALGBRC(28) = 1.00000/(1.00000+EXP(((STATES(1)+75.0000) - CONSTS(29))/5.50000))
      ALGBRC(29) = CONSTS(38)+1000.00/(EXP(((STATES(1)+71.5500) - CONSTS(29))/14.2000)+EXP(- ((STATES(1)+89.0000) - CONSTS(29))/11.6000))
      ALGBRC(30) = ALGBRC(28)/ALGBRC(29)
      ALGBRC(31) = (1.00000 - ALGBRC(28))/ALGBRC(29)
      ALGBRC(32) =  CONSTS(31)*STATES(7)/CONSTS(37) ** CONSTS(34)
CALL minimize(minfunc_0, CONSTS, VARIABLES, <VAR>)
      ALGBRC(35) =  CONSTS(32)*ALGBRC(34)/CONSTS(36) ** CONSTS(35)
CALL minimize(minfunc_1, CONSTS, VARIABLES, <VAR>)
      ALGBRC(39) = ALGBRC(36)+CONSTS(30)+ALGBRC(37)
      ALGBRC(40) =  1000.00*CONSTS(27)*ALGBRC(39)*(STATES(1) - CONSTS(26))
      ALGBRC(6) = VOI -  CONSTS(10)*INT(VOI/CONSTS(10))
      ALGBRC(12) = TERNRY(ALGBRC(6).GE.CONSTS(7).AND.ALGBRC(6).LE.CONSTS(8), CONSTS(9), 0.00000)
      RATES(1) = ( 0.00100000*((((((ALGBRC(12)+- ALGBRC(17)) - ALGBRC(22)) - ALGBRC(23)) - ALGBRC(24)) - ALGBRC(26)) - ALGBRC(40)))/CONSTS(3)
      RETURN
      END
      SUBROUTINE computeVariables(VOI, CONSTS, RATES, STATES, ALGBRC)
      REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*)
      ALGBRC(4) = TERNRY(- (STATES(1)+35.0000)/10.0000.LT.25.0000.AND.- (STATES(1)+35.0000)/10.0000.GT.- 25.0000, 1.00000/(1.00000+EXP(- (STATES(1)+35.0000)/10.0000)), 1.00000)
      ALGBRC(10) = TERNRY((STATES(1)+35.0000)/20.0000.LT.25.0000.AND.(STATES(1)+35.0000)/20.0000.GT.- 25.0000, CONSTS(18)/( 3.30000*EXP((STATES(1)+35.0000)/20.0000)+EXP(- (STATES(1)+35.0000)/20.0000)), 1.00000)
      ALGBRC(1) = TERNRY(ABS(((13.0000+CONSTS(1)) - STATES(1))/4.00000).LT.1.00000e-06,  0.320000*4.00000*(1.00000 - ((13.0000+CONSTS(1)) - STATES(1))/( 2.00000*4.00000)), ( 0.320000*((13.0000+CONSTS(1)) - STATES(1)))/(EXP(((13.0000+CONSTS(1)) - STATES(1))/4.00000) - 1.00000))
      ALGBRC(7) = TERNRY(ABS(- ((STATES(1) - CONSTS(1)) - 40.0000)/5.00000).LT.1.00000e-06,  - 0.280000*5.00000*(1.00000 - - ((STATES(1) - CONSTS(1)) - 40.0000)/( 2.00000*5.00000)), ( - 0.280000*((STATES(1) - CONSTS(1)) - 40.0000))/(EXP(- ((STATES(1) - CONSTS(1)) - 40.0000)/5.00000) - 1.00000))
      ALGBRC(13) = 1.00000/(ALGBRC(1)+ALGBRC(7))
      ALGBRC(18) = ALGBRC(1)/(ALGBRC(1)+ALGBRC(7))
      ALGBRC(2) =  0.128000*EXP(((17.0000+CONSTS(1)+CONSTS(2)) - STATES(1))/18.0000)
      ALGBRC(8) = 4.00000/(1.00000+EXP(((40.0000+CONSTS(2)+CONSTS(1)) - STATES(1))/5.00000))
      ALGBRC(19) = ALGBRC(2)/(ALGBRC(2)+ALGBRC(8))
      ALGBRC(14) = 1.00000/(ALGBRC(2)+ALGBRC(8))
      ALGBRC(3) = TERNRY(ABS(((STATES(1) - CONSTS(1)) - 15.0000)/5.00000).LT.1.00000e-06,  - 0.0320000*5.00000*(1.00000 - ((STATES(1) - CONSTS(1)) - 15.0000)/( 2.00000*5.00000)), ( - 0.0320000*((STATES(1) - CONSTS(1)) - 15.0000))/(EXP(((STATES(1) - CONSTS(1)) - 15.0000)/5.00000) - 1.00000))
      ALGBRC(9) = TERNRY(ABS(- ((STATES(1) - CONSTS(1)) - 10.0000)/40.0000).LT.1.00000e-06,  0.500000*40.0000*(1.00000+((STATES(1) - CONSTS(1)) - 10.0000)/( 2.00000*40.0000)), ( 0.500000*- ((STATES(1) - CONSTS(1)) - 10.0000))/(EXP(- ((STATES(1) - CONSTS(1)) - 10.0000)/40.0000) - 1.00000))
      ALGBRC(15) = 1.00000/(ALGBRC(3)+ALGBRC(9))
      ALGBRC(20) = ALGBRC(3)/(ALGBRC(3)+ALGBRC(9))
      ALGBRC(5) = 6.32000/(1.00000+EXP(- (STATES(1) - 5.00000)/13.8900))
      ALGBRC(11) = TERNRY(ABS((1.31000 - STATES(1))/5.36000).LT.1.00000e-06,  0.0200000*(5.36000+(1.31000 - STATES(1))/2.00000), ( 0.0200000*(1.31000 - STATES(1)))/(1.00000 - EXP((STATES(1) - 1.31000)/5.36000)))
      ALGBRC(16) = 1.00000/(ALGBRC(5)+ALGBRC(11))
      ALGBRC(21) = 1.00000/(1.00000+EXP((STATES(1)+10.0000)/- 10.0000))
      ALGBRC(25) = ( (( CONSTS(20) ** 2.00000*CONSTS(4) ** 2.00000*0.00100000*STATES(1))/( CONSTS(5)*CONSTS(6)))*1.00000e-06*(STATES(7) -  CONSTS(21)*EXP(( CONSTS(20)*CONSTS(4)*0.00100000*STATES(1))/( CONSTS(5)*CONSTS(6)))))/(1.00000 - EXP(( 0.00100000*CONSTS(20)*CONSTS(4)*STATES(1))/( CONSTS(5)*CONSTS(6))))
      ALGBRC(26) =  1000.00*CONSTS(19)*STATES(6) ** 2.00000*ALGBRC(25)
      ALGBRC(27) = ( CONSTS(25)*ALGBRC(26))/( 2.00000*CONSTS(4)*CONSTS(24))
      ALGBRC(17) =  1000.00*CONSTS(11)*(STATES(1) - CONSTS(12))
      ALGBRC(22) =  1000.00*CONSTS(13)*STATES(2) ** 3.00000*STATES(3)*(STATES(1) - CONSTS(14))
      ALGBRC(23) =  1000.00*CONSTS(15)*STATES(4) ** 4.00000*(STATES(1) - CONSTS(16))
      ALGBRC(24) =  1000.00*CONSTS(17)*STATES(5)*(STATES(1) - CONSTS(16))
      ALGBRC(28) = 1.00000/(1.00000+EXP(((STATES(1)+75.0000) - CONSTS(29))/5.50000))
      ALGBRC(29) = CONSTS(38)+1000.00/(EXP(((STATES(1)+71.5500) - CONSTS(29))/14.2000)+EXP(- ((STATES(1)+89.0000) - CONSTS(29))/11.6000))
      ALGBRC(30) = ALGBRC(28)/ALGBRC(29)
      ALGBRC(31) = (1.00000 - ALGBRC(28))/ALGBRC(29)
      ALGBRC(32) =  CONSTS(31)*STATES(7)/CONSTS(37) ** CONSTS(34)
      ALGBRC(35) =  CONSTS(32)*ALGBRC(34)/CONSTS(36) ** CONSTS(35)
      ALGBRC(39) = ALGBRC(36)+CONSTS(30)+ALGBRC(37)
      ALGBRC(40) =  1000.00*CONSTS(27)*ALGBRC(39)*(STATES(1) - CONSTS(26))
      ALGBRC(6) = VOI -  CONSTS(10)*INT(VOI/CONSTS(10))
      ALGBRC(12) = TERNRY(ALGBRC(6).GE.CONSTS(7).AND.ALGBRC(6).LE.CONSTS(8), CONSTS(9), 0.00000)
      RETURN
      END
REAL FUNCTION minfunc_0(CONSTS, VARIABLES)
            REAL CONSTS(*), VARIABLES(*) 
      minfunc_0[1] = abs(ALGBRC(33) - ( ALGBRC(34)*CONSTS(31))/ALGBRC(32))
      minfunc_0[2] = abs(ALGBRC(34) - (1.00000 - ALGBRC(33)))
      RETURN
      END
REAL FUNCTION minfunc_1(CONSTS, VARIABLES)
            REAL CONSTS(*), VARIABLES(*) 
      minfunc_1[1] = abs(ALGBRC(38) -  (ALGBRC(31)/ALGBRC(30))*ALGBRC(36))
      minfunc_1[2] = abs(ALGBRC(36) -  (CONSTS(32)/ALGBRC(35))*ALGBRC(37))
      minfunc_1[3] = abs(ALGBRC(37) - ((1.00000 - ALGBRC(38)) - ALGBRC(36)))
      RETURN
      END
      REAL FUNCTION TERNRY(TEST, VALA, VALB)
      LOGICAL TEST
      REAL VALA, VALB
      IF (TEST) THEN
        TERNRY = VALA
      ELSE
        TERNRY = VALB
      ENDIF
      RETURN
      END