C C There are a total of 16 entries in the algebraic variable array. C There are a total of 4 entries in each of the rate and state variable arrays. C There are a total of 32 entries in the constant variable array. C C C VOI is time in component environment (ms). C CONSTS(1) is epi in component environment (dimensionless). C CONSTS(2) is endo in component environment (dimensionless). C CONSTS(3) is mcell in component environment (dimensionless). C STATES(1) is u in component membrane (dimensionless). C ALGBRC(1) is Vm in component membrane (mV). C CONSTS(4) is V_0 in component membrane (mV). C CONSTS(5) is V_fi in component membrane (mV). C ALGBRC(9) is J_fi in component fast_inward_current (per_ms). C ALGBRC(15) is J_so in component slow_outward_current (per_ms). C ALGBRC(16) is J_si in component slow_inward_current (per_ms). C ALGBRC(2) is J_stim in component membrane (per_ms). C ALGBRC(3) is m in component m (dimensionless). C CONSTS(6) is u_m in component m (dimensionless). C ALGBRC(5) is p in component p (dimensionless). C CONSTS(7) is u_p in component p (dimensionless). C ALGBRC(4) is q in component q (dimensionless). C CONSTS(14) is u_q in component q (dimensionless). C ALGBRC(6) is r in component r (dimensionless). C CONSTS(16) is u_r in component r (dimensionless). C CONSTS(17) is tau_fi in component fast_inward_current (ms). C CONSTS(18) is u_u in component fast_inward_current (dimensionless). C STATES(2) is v in component fast_inward_current_v_gate (dimensionless). C ALGBRC(7) is v_inf in component fast_inward_current_v_gate (dimensionless). C ALGBRC(10) is tau_v_minus in component fast_inward_current_v_gate (ms). C CONSTS(31) is tau_v1_minus in component fast_inward_current_v_gate (ms). C CONSTS(13) is tau_v2_minus in component fast_inward_current_v_gate (ms). C CONSTS(8) is tau_v_plus in component fast_inward_current_v_gate (ms). C ALGBRC(12) is tau_o in component slow_outward_current (ms). C CONSTS(15) is tau_o1 in component slow_outward_current (ms). C CONSTS(32) is tau_o2 in component slow_outward_current (ms). C ALGBRC(14) is tau_so in component slow_outward_current (ms). C CONSTS(19) is tau_so1 in component slow_outward_current (ms). C CONSTS(20) is tau_so2 in component slow_outward_current (ms). C CONSTS(21) is k_so in component slow_outward_current (dimensionless). C CONSTS(22) is u_so in component slow_outward_current (dimensionless). C CONSTS(23) is tau_si in component slow_inward_current (ms). C STATES(3) is w in component slow_inward_current_w_gate (dimensionless). C STATES(4) is s in component slow_inward_current_s_gate (dimensionless). C ALGBRC(11) is w_inf in component slow_inward_current_w_gate (dimensionless). C CONSTS(24) is tau_winf in component slow_inward_current_w_gate (ms). C CONSTS(25) is wstar_inf in component slow_inward_current_w_gate (dimensionless). C ALGBRC(13) is tau_w_minus in component slow_inward_current_w_gate (ms). C CONSTS(26) is tau_w1_minus in component slow_inward_current_w_gate (ms). C CONSTS(27) is tau_w2_minus in component slow_inward_current_w_gate (ms). C CONSTS(28) is k_w_minus in component slow_inward_current_w_gate (dimensionless). C CONSTS(29) is u_w_minus in component slow_inward_current_w_gate (dimensionless). C CONSTS(30) is tau_w_plus in component slow_inward_current_w_gate (ms). C ALGBRC(8) is tau_s in component slow_inward_current_s_gate (ms). C CONSTS(9) is tau_s1 in component slow_inward_current_s_gate (ms). C CONSTS(12) is tau_s2 in component slow_inward_current_s_gate (ms). C CONSTS(10) is k_s in component slow_inward_current_s_gate (dimensionless). C CONSTS(11) is u_s in component slow_inward_current_s_gate (dimensionless). C RATES(1) is d/dt u in component membrane (dimensionless). C RATES(2) is d/dt v in component fast_inward_current_v_gate (dimensionless). C RATES(3) is d/dt w in component slow_inward_current_w_gate (dimensionless). C RATES(4) is d/dt s in component slow_inward_current_s_gate (dimensionless). C SUBROUTINE initConsts(CONSTS, RATES, STATES) REAL CONSTS(*), RATES(*), STATES(*) CONSTS(1) = 1 CONSTS(2) = 0 CONSTS(3) = 0 STATES(1) = 0 CONSTS(4) = -83 CONSTS(5) = 2.7 CONSTS(6) = 0.3 CONSTS(7) = 0.13 STATES(2) = 1 CONSTS(8) = 1.45 STATES(3) = 1 STATES(4) = 0 CONSTS(9) = 2.7342 CONSTS(10) = 2.0994 CONSTS(11) = 0.9087 CONSTS(12) = TERNRY(CONSTS(1).EQ.1.00000, 16.0000, TERNRY(CONSTS(2).EQ.1.00000, 2.00000, 4.00000) CONSTS(13) = TERNRY(CONSTS(1).EQ.1.00000, 1150.00, TERNRY(CONSTS(2).EQ.1.00000, 10.0000, 1.45000) CONSTS(14) = TERNRY(CONSTS(1).EQ.1.00000, 0.00600000, TERNRY(CONSTS(2).EQ.1.00000, 0.0240000, 0.100000) CONSTS(15) = TERNRY(CONSTS(1).EQ.1.00000, 400.000, TERNRY(CONSTS(2).EQ.1.00000, 470.000, 410.000) CONSTS(16) = TERNRY(CONSTS(1).EQ.1.00000, 0.00600000, TERNRY(CONSTS(2).EQ.1.00000, 0.00600000, 0.00500000) CONSTS(17) = TERNRY(CONSTS(1).EQ.1.00000, 0.110000, TERNRY(CONSTS(2).EQ.1.00000, 0.104000, 0.0780000) CONSTS(18) = TERNRY(CONSTS(1).EQ.1.00000, 1.55000, TERNRY(CONSTS(2).EQ.1.00000, 1.56000, 1.61000) CONSTS(19) = TERNRY(CONSTS(1).EQ.1.00000, 30.0200, TERNRY(CONSTS(2).EQ.1.00000, 40.0000, 91.0000) CONSTS(20) = TERNRY(CONSTS(1).EQ.1.00000, 0.996000, TERNRY(CONSTS(2).EQ.1.00000, 1.20000, 0.800000) CONSTS(21) = TERNRY(CONSTS(1).EQ.1.00000, 2.04600, TERNRY(CONSTS(2).EQ.1.00000, 2.00000, 2.10000) CONSTS(22) = TERNRY(CONSTS(1).EQ.1.00000, 0.650000, TERNRY(CONSTS(2).EQ.1.00000, 0.650000, 0.600000) CONSTS(23) = TERNRY(CONSTS(1).EQ.1.00000, 1.88750, TERNRY(CONSTS(2).EQ.1.00000, 2.90130, 3.38490) CONSTS(24) = TERNRY(CONSTS(1).EQ.1.00000, 0.0700000, TERNRY(CONSTS(2).EQ.1.00000, 0.0273000, 0.0100000) CONSTS(25) = TERNRY(CONSTS(1).EQ.1.00000, 0.940000, TERNRY(CONSTS(2).EQ.1.00000, 0.780000, 0.500000) CONSTS(26) = TERNRY(CONSTS(1).EQ.1.00000, 60.0000, TERNRY(CONSTS(2).EQ.1.00000, 6.00000, 70.0000) CONSTS(27) = TERNRY(CONSTS(1).EQ.1.00000, 15.0000, TERNRY(CONSTS(2).EQ.1.00000, 140.000, 8.00000) CONSTS(28) = TERNRY(CONSTS(1).EQ.1.00000, 65.0000, TERNRY(CONSTS(2).EQ.1.00000, 200.000, 200.000) CONSTS(29) = TERNRY(CONSTS(1).EQ.1.00000, 0.0300000, TERNRY(CONSTS(2).EQ.1.00000, 0.0160000, 0.0160000) CONSTS(30) = TERNRY(CONSTS(1).EQ.1.00000, 200.000, TERNRY(CONSTS(2).EQ.1.00000, 280.000, 280.000) CONSTS(31) = TERNRY(CONSTS(1).EQ.1.00000, 60.0000, TERNRY(CONSTS(2).EQ.1.00000, 75.0000, 80.0000) CONSTS(32) = TERNRY(CONSTS(1).EQ.1.00000, 6.00000, TERNRY(CONSTS(2).EQ.1.00000, 6.00000, 7.00000) RETURN END SUBROUTINE computeRates(VOI, CONSTS, RATES, STATES, ALGBRC) REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*) ALGBRC(5) = TERNRY(STATES(1).LT.CONSTS(7), 0.00000, 1.00000) ALGBRC(8) = (1.00000 - ALGBRC(5))*CONSTS(9)+ ALGBRC(5)*CONSTS(12) RATES(4) = ((1.00000+ tanh( CONSTS(10)*(STATES(1) - CONSTS(11))))/2.00000 - STATES(4))/ALGBRC(8) ALGBRC(3) = TERNRY(STATES(1).LT.CONSTS(6), 0.00000, 1.00000) ALGBRC(7) = TERNRY(STATES(1).LT.CONSTS(14), 1.00000, 0.00000) ALGBRC(4) = TERNRY(STATES(1).LT.CONSTS(14), 0.00000, 1.00000) ALGBRC(10) = ALGBRC(4)*CONSTS(13)+ (1.00000 - ALGBRC(4))*CONSTS(31) RATES(2) = ( (1.00000 - ALGBRC(3))*(ALGBRC(7) - STATES(2)))/ALGBRC(10) - ( ALGBRC(3)*STATES(2))/CONSTS(8) ALGBRC(6) = TERNRY(STATES(1).LT.CONSTS(16), 0.00000, 1.00000) ALGBRC(11) = (1.00000 - ALGBRC(6))*(1.00000 - ( STATES(1)*1.00000)/CONSTS(24))+ ALGBRC(6)*CONSTS(25) ALGBRC(13) = CONSTS(26)+( (CONSTS(27) - CONSTS(26))*(1.00000+ tanh( CONSTS(28)*(STATES(1) - CONSTS(29)))))/2.00000 RATES(3) = ( (1.00000 - ALGBRC(6))*(ALGBRC(11) - STATES(3)))/ALGBRC(13) - ( ALGBRC(6)*STATES(3))/CONSTS(30) ALGBRC(9) = ( - ALGBRC(3)*STATES(2)*(STATES(1) - CONSTS(6))*(CONSTS(18) - STATES(1)))/CONSTS(17) ALGBRC(12) = (1.00000 - ALGBRC(6))*CONSTS(15)+ ALGBRC(6)*CONSTS(32) ALGBRC(14) = CONSTS(19)+( (CONSTS(20) - CONSTS(19))*(1.00000+ tanh( CONSTS(21)*(STATES(1) - CONSTS(22)))))/2.00000 ALGBRC(15) = ( STATES(1)*(1.00000 - ALGBRC(5)))/ALGBRC(12)+ALGBRC(5)/ALGBRC(14) ALGBRC(16) = ( - ALGBRC(5)*STATES(3)*STATES(4))/CONSTS(23) ALGBRC(2) = TERNRY(VOI.GE.100.000.AND.VOI.LE.101.000, - 1.00000, 0.00000) RATES(1) = - (ALGBRC(9)+ALGBRC(15)+ALGBRC(16)+ALGBRC(2)) RETURN END SUBROUTINE computeVariables(VOI, CONSTS, RATES, STATES, ALGBRC) REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*) ALGBRC(5) = TERNRY(STATES(1).LT.CONSTS(7), 0.00000, 1.00000) ALGBRC(8) = (1.00000 - ALGBRC(5))*CONSTS(9)+ ALGBRC(5)*CONSTS(12) ALGBRC(3) = TERNRY(STATES(1).LT.CONSTS(6), 0.00000, 1.00000) ALGBRC(7) = TERNRY(STATES(1).LT.CONSTS(14), 1.00000, 0.00000) ALGBRC(4) = TERNRY(STATES(1).LT.CONSTS(14), 0.00000, 1.00000) ALGBRC(10) = ALGBRC(4)*CONSTS(13)+ (1.00000 - ALGBRC(4))*CONSTS(31) ALGBRC(6) = TERNRY(STATES(1).LT.CONSTS(16), 0.00000, 1.00000) ALGBRC(11) = (1.00000 - ALGBRC(6))*(1.00000 - ( STATES(1)*1.00000)/CONSTS(24))+ ALGBRC(6)*CONSTS(25) ALGBRC(13) = CONSTS(26)+( (CONSTS(27) - CONSTS(26))*(1.00000+ tanh( CONSTS(28)*(STATES(1) - CONSTS(29)))))/2.00000 ALGBRC(9) = ( - ALGBRC(3)*STATES(2)*(STATES(1) - CONSTS(6))*(CONSTS(18) - STATES(1)))/CONSTS(17) ALGBRC(12) = (1.00000 - ALGBRC(6))*CONSTS(15)+ ALGBRC(6)*CONSTS(32) ALGBRC(14) = CONSTS(19)+( (CONSTS(20) - CONSTS(19))*(1.00000+ tanh( CONSTS(21)*(STATES(1) - CONSTS(22)))))/2.00000 ALGBRC(15) = ( STATES(1)*(1.00000 - ALGBRC(5)))/ALGBRC(12)+ALGBRC(5)/ALGBRC(14) ALGBRC(16) = ( - ALGBRC(5)*STATES(3)*STATES(4))/CONSTS(23) ALGBRC(2) = TERNRY(VOI.GE.100.000.AND.VOI.LE.101.000, - 1.00000, 0.00000) ALGBRC(1) = CONSTS(4)+ STATES(1)*(CONSTS(5) - CONSTS(4)) RETURN END REAL FUNCTION TERNRY(TEST, VALA, VALB) LOGICAL TEST REAL VALA, VALB IF (TEST) THEN TERNRY = VALA ELSE TERNRY = VALB ENDIF RETURN END