C C There are a total of 14 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 24 entries in the constant variable array. C C C VOI is time in component environment (second). C ALGBRC(1) is Vm in component membrane (millivolt). C CONSTS(1) is Cm in component membrane (microfarad). C ALGBRC(12) is I_b in component I_b (nanoampere). C ALGBRC(3) is I_Kir in component I_Kir (nanoampere). C ALGBRC(10) is I_Shkr in component I_Shkr (nanoampere). C ALGBRC(14) is I_stim in component I_stim (nanoampere). C STATES(1) is VmReal in component membrane (millivolt). C CONSTS(2) is GKir in component I_Kir (microsiemens). C CONSTS(3) is aKir in component I_Kir (dimensionless). C CONSTS(4) is bKir in component I_Kir (dimensionless). C CONSTS(24) is EK in component I_Kir (millivolt). C ALGBRC(2) is OKir in component I_Kir (dimensionless). C CONSTS(5) is R in component model_parameters (millijoule_per_kelvin_mole). C CONSTS(6) is T in component model_parameters (kelvin). C CONSTS(7) is F in component model_parameters (coulomb_per_mole). C CONSTS(8) is Ko in component model_parameters (millimolar). C CONSTS(9) is Ki in component model_parameters (millimolar). C CONSTS(10) is PShkr in component I_Shkr (microlitre_per_second). C STATES(2) is C0ShkrReal in component I_Shkr (dimensionless). C STATES(3) is C1ShkrReal in component I_Shkr (dimensionless). C STATES(4) is C2ShkrReal in component I_Shkr (dimensionless). C STATES(5) is C3ShkrReal in component I_Shkr (dimensionless). C STATES(6) is C4ShkrReal in component I_Shkr (dimensionless). C STATES(7) is OShkrReal in component I_Shkr (dimensionless). C ALGBRC(4) is C0Shkr in component I_Shkr (dimensionless). C ALGBRC(5) is C1Shkr in component I_Shkr (dimensionless). C ALGBRC(6) is C2Shkr in component I_Shkr (dimensionless). C ALGBRC(7) is C3Shkr in component I_Shkr (dimensionless). C ALGBRC(8) is C4Shkr in component I_Shkr (dimensionless). C ALGBRC(9) is OShkr in component I_Shkr (dimensionless). C ALGBRC(11) is kv in component I_Shkr (first_order_rate_constant). C ALGBRC(13) is k_v in component I_Shkr (first_order_rate_constant). C CONSTS(11) is kv0 in component I_Shkr (first_order_rate_constant). C CONSTS(12) is zv in component I_Shkr (dimensionless). C CONSTS(13) is k_v0 in component I_Shkr (first_order_rate_constant). C CONSTS(14) is z_v in component I_Shkr (dimensionless). C CONSTS(15) is ko in component I_Shkr (first_order_rate_constant). C CONSTS(16) is k_o in component I_Shkr (first_order_rate_constant). C CONSTS(17) is Gb in component I_b (microsiemens). C CONSTS(18) is Eb in component I_b (millivolt). C CONSTS(19) is stim_start in component I_stim (second). C CONSTS(20) is stim_end in component I_stim (second). C CONSTS(21) is stim_period in component I_stim (second). C CONSTS(22) is stim_duration in component I_stim (second). C CONSTS(23) is stim_amplitude in component I_stim (nanoampere). C RATES(1) is d/dt VmReal in component membrane (millivolt). C RATES(2) is d/dt C0ShkrReal in component I_Shkr (dimensionless). C RATES(3) is d/dt C1ShkrReal in component I_Shkr (dimensionless). C RATES(4) is d/dt C2ShkrReal in component I_Shkr (dimensionless). C RATES(5) is d/dt C3ShkrReal in component I_Shkr (dimensionless). C RATES(6) is d/dt C4ShkrReal in component I_Shkr (dimensionless). C RATES(7) is d/dt OShkrReal in component I_Shkr (dimensionless). C SUBROUTINE initConsts(CONSTS, RATES, STATES) REAL CONSTS(*), RATES(*), STATES(*) CONSTS(1) = 4.5e-6 STATES(1) = -58.00 CONSTS(2) = 1e-3 CONSTS(3) = 0.94 CONSTS(4) = 1.26 CONSTS(5) = 8310 CONSTS(6) = 295 CONSTS(7) = 9.65e4 CONSTS(8) = 5 CONSTS(9) = 140 CONSTS(10) = 5.4e-9 STATES(2) = 9.11e-1 STATES(3) = 8.57e-2 STATES(4) = 3.02e-3 STATES(5) = 4.74e-5 STATES(6) = 2.79e-7 STATES(7) = 0 CONSTS(11) = 30 CONSTS(12) = 1.28 CONSTS(13) = 2 CONSTS(14) = -1.53 CONSTS(15) = 77 CONSTS(16) = 18 CONSTS(17) = 6.9e-6 CONSTS(18) = 0 CONSTS(19) = 0.1 CONSTS(20) = 10 CONSTS(21) = 1 CONSTS(22) = 0.001 CONSTS(23) = 0.1 CONSTS(24) = (( CONSTS(5)*CONSTS(6))/CONSTS(7))*log(CONSTS(8)/CONSTS(9)) RETURN END SUBROUTINE computeRates(VOI, CONSTS, RATES, STATES, ALGBRC) REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*) ALGBRC(8) = TERNRY(STATES(6).LT.0.00000, 0.00000, TERNRY(STATES(6).GT.1.00000, 1.00000, STATES(6)) ALGBRC(9) = TERNRY(STATES(7).LT.0.00000, 0.00000, TERNRY(STATES(7).GT.1.00000, 1.00000, STATES(7)) RATES(7) = CONSTS(15)*ALGBRC(8) - CONSTS(16)*ALGBRC(9) ALGBRC(4) = TERNRY(STATES(2).LT.0.00000, 0.00000, TERNRY(STATES(2).GT.1.00000, 1.00000, STATES(2)) ALGBRC(5) = TERNRY(STATES(3).LT.0.00000, 0.00000, TERNRY(STATES(3).GT.1.00000, 1.00000, STATES(3)) ALGBRC(1) = TERNRY(ABS(STATES(1)).LT.1.00000e-07, 1.00000e-07, STATES(1)) ALGBRC(11) = CONSTS(11)*EXP(( ALGBRC(1)*CONSTS(12)*CONSTS(7))/( CONSTS(5)*CONSTS(6))) ALGBRC(13) = CONSTS(13)*EXP(( ALGBRC(1)*CONSTS(14)*CONSTS(7))/( CONSTS(5)*CONSTS(6))) RATES(2) = ALGBRC(13)*ALGBRC(5) - 4.00000*ALGBRC(11)*ALGBRC(4) ALGBRC(6) = TERNRY(STATES(4).LT.0.00000, 0.00000, TERNRY(STATES(4).GT.1.00000, 1.00000, STATES(4)) RATES(3) = ( 2.00000*ALGBRC(13)*ALGBRC(6)+ 4.00000*ALGBRC(11)*ALGBRC(4)) - ( 3.00000*ALGBRC(11)+ALGBRC(13))*ALGBRC(5) ALGBRC(7) = TERNRY(STATES(5).LT.0.00000, 0.00000, TERNRY(STATES(5).GT.1.00000, 1.00000, STATES(5)) RATES(4) = ( 3.00000*ALGBRC(13)*ALGBRC(7)+ 3.00000*ALGBRC(11)*ALGBRC(5)) - ( 2.00000*ALGBRC(11)+ 2.00000*ALGBRC(13))*ALGBRC(6) RATES(5) = ( 4.00000*ALGBRC(13)*ALGBRC(8)+ 2.00000*ALGBRC(11)*ALGBRC(6)) - (ALGBRC(11)+ 3.00000*ALGBRC(13))*ALGBRC(7) RATES(6) = ( CONSTS(16)*ALGBRC(9)+ ALGBRC(11)*ALGBRC(7)) - (CONSTS(15)+ 4.00000*ALGBRC(13))*ALGBRC(8) ALGBRC(12) = CONSTS(17)*(ALGBRC(1) - CONSTS(18)) ALGBRC(2) = 1.00000/(CONSTS(3)+EXP(( CONSTS(4)*(ALGBRC(1) - CONSTS(24))*CONSTS(7))/( CONSTS(5)*CONSTS(6)))) ALGBRC(3) = CONSTS(2)*ALGBRC(2)* ( CONSTS(8)*0.00100000) ** (1.0 / 2)*(ALGBRC(1) - CONSTS(24)) ALGBRC(10) = ( (( CONSTS(10)*ALGBRC(9)*ALGBRC(1)*CONSTS(7) ** 2.00000)/( CONSTS(5)*CONSTS(6)))*(CONSTS(9) - CONSTS(8)*EXP(( - ALGBRC(1)*CONSTS(7))/( CONSTS(5)*CONSTS(6)))))/(1.00000 - EXP(( - ALGBRC(1)*CONSTS(7))/( CONSTS(5)*CONSTS(6)))) ALGBRC(14) = TERNRY(VOI.GE.CONSTS(19).AND.(VOI.LE.CONSTS(20).AND.(VOI - CONSTS(19)) - INT((VOI - CONSTS(19))/CONSTS(21))*CONSTS(21).LE.CONSTS(22)), CONSTS(23), 0.00000) RATES(1) = - ((ALGBRC(3)+ALGBRC(10)+ALGBRC(12)) - ALGBRC(14))/CONSTS(1) RETURN END SUBROUTINE computeVariables(VOI, CONSTS, RATES, STATES, ALGBRC) REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*) ALGBRC(8) = TERNRY(STATES(6).LT.0.00000, 0.00000, TERNRY(STATES(6).GT.1.00000, 1.00000, STATES(6)) ALGBRC(9) = TERNRY(STATES(7).LT.0.00000, 0.00000, TERNRY(STATES(7).GT.1.00000, 1.00000, STATES(7)) ALGBRC(4) = TERNRY(STATES(2).LT.0.00000, 0.00000, TERNRY(STATES(2).GT.1.00000, 1.00000, STATES(2)) ALGBRC(5) = TERNRY(STATES(3).LT.0.00000, 0.00000, TERNRY(STATES(3).GT.1.00000, 1.00000, STATES(3)) ALGBRC(1) = TERNRY(ABS(STATES(1)).LT.1.00000e-07, 1.00000e-07, STATES(1)) ALGBRC(11) = CONSTS(11)*EXP(( ALGBRC(1)*CONSTS(12)*CONSTS(7))/( CONSTS(5)*CONSTS(6))) ALGBRC(13) = CONSTS(13)*EXP(( ALGBRC(1)*CONSTS(14)*CONSTS(7))/( CONSTS(5)*CONSTS(6))) ALGBRC(6) = TERNRY(STATES(4).LT.0.00000, 0.00000, TERNRY(STATES(4).GT.1.00000, 1.00000, STATES(4)) ALGBRC(7) = TERNRY(STATES(5).LT.0.00000, 0.00000, TERNRY(STATES(5).GT.1.00000, 1.00000, STATES(5)) ALGBRC(12) = CONSTS(17)*(ALGBRC(1) - CONSTS(18)) ALGBRC(2) = 1.00000/(CONSTS(3)+EXP(( CONSTS(4)*(ALGBRC(1) - CONSTS(24))*CONSTS(7))/( CONSTS(5)*CONSTS(6)))) ALGBRC(3) = CONSTS(2)*ALGBRC(2)* ( CONSTS(8)*0.00100000) ** (1.0 / 2)*(ALGBRC(1) - CONSTS(24)) ALGBRC(10) = ( (( CONSTS(10)*ALGBRC(9)*ALGBRC(1)*CONSTS(7) ** 2.00000)/( CONSTS(5)*CONSTS(6)))*(CONSTS(9) - CONSTS(8)*EXP(( - ALGBRC(1)*CONSTS(7))/( CONSTS(5)*CONSTS(6)))))/(1.00000 - EXP(( - ALGBRC(1)*CONSTS(7))/( CONSTS(5)*CONSTS(6)))) ALGBRC(14) = TERNRY(VOI.GE.CONSTS(19).AND.(VOI.LE.CONSTS(20).AND.(VOI - CONSTS(19)) - INT((VOI - CONSTS(19))/CONSTS(21))*CONSTS(21).LE.CONSTS(22)), CONSTS(23), 0.00000) RETURN END REAL FUNCTION TERNRY(TEST, VALA, VALB) LOGICAL TEST REAL VALA, VALB IF (TEST) THEN TERNRY = VALA ELSE TERNRY = VALB ENDIF RETURN END