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 6 entries in the algebraic variable array. C There are a total of 2 entries in each of the rate and state variable arrays. C There are a total of 15 entries in the constant variable array. C C C VOI is time in component environment (minute). C STATES(1) is G in component G (mg_per_litre). C ALGBRC(1) is Gin in component G (mg_per_litre_minute). C ALGBRC(3) is f2_G in component f2_G (mg_per_minute). C ALGBRC(4) is f3_G in component f3_G (per_litre). C ALGBRC(5) is f4_I in component f4_I (mg_per_minute). C ALGBRC(6) is f5_I in component f5_I (mg_per_minute). C STATES(2) is I in component I (mU_per_litre). C ALGBRC(2) is Iin in component I (mU_per_litre_minute). C CONSTS(1) is di in component model_parameters (first_order_rate_constant). C CONSTS(2) is C2 in component model_parameters (mg_per_litre). C CONSTS(3) is Ub in component model_parameters (mg_per_minute). C CONSTS(4) is Vg in component model_parameters (litre). C CONSTS(5) is C3 in component model_parameters (mg_per_litre). C CONSTS(6) is C4 in component model_parameters (mU_per_litre). C CONSTS(7) is Vi in component model_parameters (litre). C CONSTS(8) is U0 in component model_parameters (mg_per_minute). C CONSTS(9) is Um in component model_parameters (mg_per_minute). C CONSTS(10) is beta in component model_parameters (dimensionless). C CONSTS(11) is ti in component model_parameters (minute). C CONSTS(12) is Vp in component model_parameters (litre). C CONSTS(13) is C5 in component model_parameters (mU_per_litre). C CONSTS(14) is Rg in component model_parameters (mg_per_minute). C CONSTS(15) is alpha in component model_parameters (litre_per_mU). C RATES(1) is d/dt G in component G (mg_per_litre). C RATES(2) is d/dt I in component I (mU_per_litre). C SUBROUTINE initConsts(CONSTS, RATES, STATES) REAL CONSTS(*), RATES(*), STATES(*) STATES(1) = 150.0 STATES(2) = 5.0 CONSTS(1) = 0.0107 CONSTS(2) = 144 CONSTS(3) = 72.0 CONSTS(4) = 10.0 CONSTS(5) = 1000.0 CONSTS(6) = 80.0 CONSTS(7) = 11.0 CONSTS(8) = 40.0 CONSTS(9) = 940.0 CONSTS(10) = 1.77 CONSTS(11) = 100.0 CONSTS(12) = 3.0 CONSTS(13) = 26.0 CONSTS(14) = 180.0 CONSTS(15) = 0.29 RETURN END SUBROUTINE computeRates(VOI, CONSTS, RATES, STATES, ALGBRC) REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*) ALGBRC(2) = TERNRY(VOI.LE.30.0000.AND.VOI.GE.0.00000, 0.250000, TERNRY(VOI.LT.120.000.AND.VOI.GE.30.0000, 0.250000+ 1.00000*(1.00000+(VOI - 120.000)/90.0000), TERNRY(VOI.LT.240.000.AND.VOI.GE.120.000, 0.250000+ 1.00000*(1.00000 - 0.500000*((VOI - 120.000)/120.000)), TERNRY(VOI.LE.480.000.AND.VOI.GE.240.000, 0.250000+ 0.500000*(1.00000 - (VOI - 240.000)/240.000), TERNRY(VOI.LT.530.000.AND.VOI.GT.480.000, 0.250000, TERNRY(VOI.LT.620.000.AND.VOI.GE.530.000, 0.250000+ 1.00000*(1.00000+(VOI - 620.000)/90.0000), TERNRY(VOI.LT.740.000.AND.VOI.GE.620.000, 0.250000+ 1.00000*(1.00000 - 0.500000*((VOI - 620.000)/120.000)), TERNRY(VOI.LE.980.000.AND.VOI.GE.740.000, 0.250000+ 0.500000*(1.00000 - (VOI - 740.000)/240.000), 0.0/0.0) RATES(2) = ALGBRC(2) - CONSTS(1)*STATES(2) ALGBRC(1) = TERNRY(VOI.LT.15.0000.AND.VOI.GE.0.00000, 0.0500000+ (5.00000/15.0000)*VOI, TERNRY(VOI.LT.45.0000.AND.VOI.GE.15.0000, 0.0500000+ 5.00000*((45.0000 - VOI)/(45.0000 - 15.0000)), TERNRY(VOI.LE.240.000.AND.VOI.GE.45.0000, 0.0500000, TERNRY(VOI.GT.240.000.AND.VOI.LT.255.000, 0.0500000+ (5.00000/255.000)*VOI, TERNRY(VOI.LT.285.000.AND.VOI.GE.255.000, 0.0500000+ 5.00000*((285.000 - VOI)/(285.000 - 255.000)), TERNRY(VOI.LE.480.000.AND.VOI.GE.285.000, 0.0500000, TERNRY(VOI.LT.495.000.AND.VOI.GT.480.000, 0.0500000+ (5.00000/495.000)*VOI, TERNRY(VOI.LT.525.000.AND.VOI.GE.495.000, 0.0500000+ 5.00000*((525.000 - VOI)/(525.000 - 495.000)), TERNRY(VOI.LE.720.000.AND.VOI.GE.525.000, 0.0500000, TERNRY(VOI.GT.720.000.AND.VOI.LT.735.000, 0.0500000+ (5.00000/735.000)*VOI, TERNRY(VOI.LT.765.000.AND.VOI.GE.735.000, 0.0500000+ 5.00000*((765.000 - VOI)/(765.000 - 735.000)), TERNRY(VOI.LE.960.000.AND.VOI.GE.765.000, 0.0500000, 0.0/0.0) ALGBRC(3) = CONSTS(3)*(1.00000 - EXP(- STATES(1)/( CONSTS(2)*CONSTS(4)*1.00000))) ALGBRC(4) = STATES(1)/( CONSTS(5)*CONSTS(4)) ALGBRC(5) = CONSTS(8)+(CONSTS(9) - CONSTS(8))/(1.00000+EXP( - CONSTS(10)*log(STATES(2)/( CONSTS(6)*(1.00000/CONSTS(7)+1.00000/( 0.200000*CONSTS(11))))))) ALGBRC(6) = CONSTS(14)/(1.00000+EXP( CONSTS(15)*(STATES(2)/( 1.00000*( 1.00000*CONSTS(12) - CONSTS(13)))))) RATES(1) = (ALGBRC(1)+ 1.00000*ALGBRC(6)) - ( 1.00000*ALGBRC(3)+ ALGBRC(4)*ALGBRC(5)) RETURN END SUBROUTINE computeVariables(VOI, CONSTS, RATES, STATES, ALGBRC) REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*) ALGBRC(2) = TERNRY(VOI.LE.30.0000.AND.VOI.GE.0.00000, 0.250000, TERNRY(VOI.LT.120.000.AND.VOI.GE.30.0000, 0.250000+ 1.00000*(1.00000+(VOI - 120.000)/90.0000), TERNRY(VOI.LT.240.000.AND.VOI.GE.120.000, 0.250000+ 1.00000*(1.00000 - 0.500000*((VOI - 120.000)/120.000)), TERNRY(VOI.LE.480.000.AND.VOI.GE.240.000, 0.250000+ 0.500000*(1.00000 - (VOI - 240.000)/240.000), TERNRY(VOI.LT.530.000.AND.VOI.GT.480.000, 0.250000, TERNRY(VOI.LT.620.000.AND.VOI.GE.530.000, 0.250000+ 1.00000*(1.00000+(VOI - 620.000)/90.0000), TERNRY(VOI.LT.740.000.AND.VOI.GE.620.000, 0.250000+ 1.00000*(1.00000 - 0.500000*((VOI - 620.000)/120.000)), TERNRY(VOI.LE.980.000.AND.VOI.GE.740.000, 0.250000+ 0.500000*(1.00000 - (VOI - 740.000)/240.000), 0.0/0.0) ALGBRC(1) = TERNRY(VOI.LT.15.0000.AND.VOI.GE.0.00000, 0.0500000+ (5.00000/15.0000)*VOI, TERNRY(VOI.LT.45.0000.AND.VOI.GE.15.0000, 0.0500000+ 5.00000*((45.0000 - VOI)/(45.0000 - 15.0000)), TERNRY(VOI.LE.240.000.AND.VOI.GE.45.0000, 0.0500000, TERNRY(VOI.GT.240.000.AND.VOI.LT.255.000, 0.0500000+ (5.00000/255.000)*VOI, TERNRY(VOI.LT.285.000.AND.VOI.GE.255.000, 0.0500000+ 5.00000*((285.000 - VOI)/(285.000 - 255.000)), TERNRY(VOI.LE.480.000.AND.VOI.GE.285.000, 0.0500000, TERNRY(VOI.LT.495.000.AND.VOI.GT.480.000, 0.0500000+ (5.00000/495.000)*VOI, TERNRY(VOI.LT.525.000.AND.VOI.GE.495.000, 0.0500000+ 5.00000*((525.000 - VOI)/(525.000 - 495.000)), TERNRY(VOI.LE.720.000.AND.VOI.GE.525.000, 0.0500000, TERNRY(VOI.GT.720.000.AND.VOI.LT.735.000, 0.0500000+ (5.00000/735.000)*VOI, TERNRY(VOI.LT.765.000.AND.VOI.GE.735.000, 0.0500000+ 5.00000*((765.000 - VOI)/(765.000 - 735.000)), TERNRY(VOI.LE.960.000.AND.VOI.GE.765.000, 0.0500000, 0.0/0.0) ALGBRC(3) = CONSTS(3)*(1.00000 - EXP(- STATES(1)/( CONSTS(2)*CONSTS(4)*1.00000))) ALGBRC(4) = STATES(1)/( CONSTS(5)*CONSTS(4)) ALGBRC(5) = CONSTS(8)+(CONSTS(9) - CONSTS(8))/(1.00000+EXP( - CONSTS(10)*log(STATES(2)/( CONSTS(6)*(1.00000/CONSTS(7)+1.00000/( 0.200000*CONSTS(11))))))) ALGBRC(6) = CONSTS(14)/(1.00000+EXP( CONSTS(15)*(STATES(2)/( 1.00000*( 1.00000*CONSTS(12) - CONSTS(13)))))) RETURN END REAL FUNCTION TERNRY(TEST, VALA, VALB) LOGICAL TEST REAL VALA, VALB IF (TEST) THEN TERNRY = VALA ELSE TERNRY = VALB ENDIF RETURN END