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