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 16 entries in the algebraic variable array.
C There are a total of 3 entries in each of the rate and state variable arrays.
C There are a total of 37 entries in the constant variable array.
C
C
C VOI is time in component environment (hour).
C CONSTS(1) is T_a in component model_parameters (celsius).
C CONSTS(2) is T_b in component model_parameters (celsius).
C CONSTS(3) is delta_T in component model_parameters (celsius).
C CONSTS(4) is kinc in component model_parameters (W_per_kg_C2).
C CONSTS(5) is tdose1 in component model_parameters (hour).
C CONSTS(6) is tdose2 in component model_parameters (hour).
C CONSTS(7) is tdose3 in component model_parameters (hour).
C ALGBRC(6) is M_c in component M_c (W_per_kg).
C CONSTS(8) is t_day in component M_c (hour).
C CONSTS(9) is t_night in component M_c (hour).
C ALGBRC(2) is tprime in component M_c (second).
C CONSTS(10) is day_length in component M_c (second).
C CONSTS(36) is M_day in component M_day (W_per_kg).
C ALGBRC(4) is M_night in component M_night (W_per_kg).
C STATES(1) is M in component M (W_per_kg).
C CONSTS(11) is km in component M (per_hour).
C STATES(2) is T in component T (celsius).
C CONSTS(12) is c in component T (kJ_per_kg_C).
C ALGBRC(1) is k in component k (W_per_kg_C).
C STATES(3) is BR in component k (dimensionless).
C CONSTS(13) is pEtot in component k (dimensionless).
C CONSTS(14) is kR in component k (per_day).
C CONSTS(15) is AMT_dose in component k (mg_per_kg).
C CONSTS(16) is pEf1 in component k (per_day).
C CONSTS(17) is pEs1 in component k (kg_per_day_mg).
C CONSTS(18) is pEf2 in component k (per_day).
C CONSTS(19) is pEs2 in component k (kg_per_day_mg).
C CONSTS(20) is pEf3 in component k (per_day).
C CONSTS(21) is pEs3 in component k (kg_per_day_mg).
C ALGBRC(14) is E_slow in component k (per_day).
C ALGBRC(16) is E_fast in component k (per_day).
C CONSTS(31) is f2_drug in component k (W_per_kg_C).
C CONSTS(35) is kb in component kb (W_per_kg_C).
C ALGBRC(3) is f_prime in component M_night (dimensionless).
C ALGBRC(7) is gNsTs1 in component gNT (dimensionless).
C ALGBRC(10) is gNsTs2 in component gNT (dimensionless).
C ALGBRC(13) is gNsTs3 in component gNT (dimensionless).
C ALGBRC(8) is gNfTf1 in component gNT (dimensionless).
C ALGBRC(11) is gNfTf2 in component gNT (dimensionless).
C ALGBRC(15) is gNfTf3 in component gNT (dimensionless).
C CONSTS(30) is T_day in component T_day (celsius).
C CONSTS(33) is T_night in component T_night (celsius).
C CONSTS(22) is M_b in component kb (W_per_kg).
C CONSTS(23) is t_prime in component M_night (hour).
C CONSTS(24) is alpha in component M_night (per_hour).
C CONSTS(25) is delta_high_dose in component M_night (dimensionless).
C CONSTS(37) is M_night_baseline in component M_night (W_per_kg).
C CONSTS(26) is Ns in component gNT (dimensionless).
C CONSTS(27) is Nf in component gNT (dimensionless).
C CONSTS(28) is Ts in component gNT (day).
C CONSTS(29) is Tf in component gNT (day).
C ALGBRC(5) is X1 in component gNT (day).
C ALGBRC(9) is X2 in component gNT (day).
C ALGBRC(12) is X3 in component gNT (day).
C CONSTS(32) is Kf in component gNT (per_day).
C CONSTS(34) is Ks in component gNT (per_day).
C RATES(1) is d/dt M in component M (W_per_kg).
C RATES(2) is d/dt T in component T (celsius).
C RATES(3) is d/dt BR in component k (dimensionless).
C
      SUBROUTINE initConsts(CONSTS, RATES, STATES)
      REAL CONSTS(*), RATES(*), STATES(*)
      CONSTS(1) = 21.0
      CONSTS(2) = 38.0
      CONSTS(3) = 1.57
      CONSTS(4) = 0.0258
      CONSTS(5) = 24.0
      CONSTS(6) = 72.0
      CONSTS(7) = 120.0
      CONSTS(8) = 17.5
      CONSTS(9) = 6.73
      CONSTS(10) = 86400
      STATES(1) = 3.5
      CONSTS(11) = 1.1375
      STATES(2) = 38.785
      CONSTS(12) = 3.47
      STATES(3) = 0.0
      CONSTS(13) = 0.144
      CONSTS(14) = 5.35
      CONSTS(15) = 3.0
      CONSTS(16) = 1.0
      CONSTS(17) = 0.2
      CONSTS(18) = 3.57
      CONSTS(19) = 2.43
      CONSTS(20) = 8.0
      CONSTS(21) = 50.0
      CONSTS(22) = 3.0
      CONSTS(23) = 45.12
      CONSTS(24) = 0.2229166
      CONSTS(25) = 1.0
      CONSTS(26) = 4.0
      CONSTS(27) = 4.0
      CONSTS(28) = 2.45
      CONSTS(29) = 0.368
      CONSTS(30) = CONSTS(2)+CONSTS(3)/2.00000
      CONSTS(31) = 0.00000
      CONSTS(32) = CONSTS(27)/CONSTS(29)
      CONSTS(33) = CONSTS(2) - CONSTS(3)/2.00000
      CONSTS(34) = CONSTS(26)/CONSTS(28)
      CONSTS(35) = CONSTS(22)/(CONSTS(2) - CONSTS(1))
      CONSTS(36) =  (CONSTS(35)+ CONSTS(4)*(CONSTS(30) - CONSTS(2)))*(CONSTS(30) - CONSTS(1))
      CONSTS(37) =  (CONSTS(35)+ CONSTS(4)*(CONSTS(33) - CONSTS(2)))*(CONSTS(33) - CONSTS(1))
      RETURN
      END
      SUBROUTINE computeRates(VOI, CONSTS,  RATES, STATES, ALGBRC)
      REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*)
      ALGBRC(1) = CONSTS(35)+ CONSTS(4)*(STATES(2) -  CONSTS(2)*(1.00000+ CONSTS(13)*STATES(3)))+CONSTS(31)
      RATES(2) =  CONSTS(12) ** -1.00000*(STATES(1) -  ALGBRC(1)*(STATES(2) - CONSTS(1)))
      ALGBRC(2) =  INT(MOD( VOI*3600.00*1.00000, CONSTS(10)))
      ALGBRC(3) =  CONSTS(25)*1.00000+EXP( - CONSTS(24)*(VOI - (CONSTS(5)+CONSTS(23)))) ** -1.00000
      ALGBRC(4) =  (1.00000 - ALGBRC(3))*CONSTS(37)+ ALGBRC(3)*CONSTS(36)
      ALGBRC(6) = TERNRY(ALGBRC(2)/3600.00.GE.CONSTS(9).AND.ALGBRC(2)/3600.00.LT.CONSTS(8), ALGBRC(4), CONSTS(36))
      RATES(1) =  - CONSTS(11)*(STATES(1) - ALGBRC(6))
      ALGBRC(5) = (VOI - CONSTS(5))/24.0000
      ALGBRC(7) = TERNRY(ALGBRC(5).GT.0.00000,  (CONSTS(34) ** CONSTS(26)/6.00000)*EXP( - CONSTS(34)*ALGBRC(5))*ALGBRC(5) ** CONSTS(26) - 1.00000, 0.00000)
      ALGBRC(9) = (VOI - CONSTS(6))/24.0000
      ALGBRC(10) = TERNRY(ALGBRC(9).GT.0.00000,  (CONSTS(34) ** CONSTS(26)/6.00000)*EXP( - CONSTS(34)*ALGBRC(9))*ALGBRC(9) ** CONSTS(26) - 1.00000, 0.00000)
      ALGBRC(12) = (VOI - CONSTS(7))/24.0000
      ALGBRC(13) = TERNRY(ALGBRC(12).GT.0.00000,  (CONSTS(34) ** CONSTS(26)/6.00000)*EXP( - CONSTS(34)*ALGBRC(12))*ALGBRC(12) ** CONSTS(26) - 1.00000, 0.00000)
      ALGBRC(14) =  CONSTS(15)*CONSTS(19)*(ALGBRC(7)+ALGBRC(10)+ALGBRC(13))
      ALGBRC(8) = TERNRY(ALGBRC(5).GT.0.00000,  (CONSTS(32) ** CONSTS(27)/6.00000)*EXP( - CONSTS(32)*ALGBRC(5))*ALGBRC(5) ** CONSTS(27) - 1.00000, 0.00000)
      ALGBRC(11) = TERNRY(ALGBRC(9).GT.0.00000,  (CONSTS(32) ** CONSTS(27)/6.00000)*EXP( - CONSTS(32)*ALGBRC(9))*ALGBRC(9) ** CONSTS(27) - 1.00000, 0.00000)
      ALGBRC(15) = TERNRY(ALGBRC(12).GT.0.00000,  (CONSTS(32) ** CONSTS(27)/6.00000)*EXP( - CONSTS(32)*ALGBRC(12))*ALGBRC(12) ** CONSTS(27) - 1.00000, 0.00000)
      ALGBRC(16) =  CONSTS(18)*(ALGBRC(8)+ALGBRC(11)+ALGBRC(15))
      RATES(3) =  ( ALGBRC(3)*(ALGBRC(14)+ALGBRC(16)))*(1.00000 - STATES(3)) -  CONSTS(14)*STATES(3)
      RETURN
      END
      SUBROUTINE computeVariables(VOI, CONSTS, RATES, STATES, ALGBRC)
      REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*)
      ALGBRC(1) = CONSTS(35)+ CONSTS(4)*(STATES(2) -  CONSTS(2)*(1.00000+ CONSTS(13)*STATES(3)))+CONSTS(31)
      ALGBRC(2) =  INT(MOD( VOI*3600.00*1.00000, CONSTS(10)))
      ALGBRC(3) =  CONSTS(25)*1.00000+EXP( - CONSTS(24)*(VOI - (CONSTS(5)+CONSTS(23)))) ** -1.00000
      ALGBRC(4) =  (1.00000 - ALGBRC(3))*CONSTS(37)+ ALGBRC(3)*CONSTS(36)
      ALGBRC(6) = TERNRY(ALGBRC(2)/3600.00.GE.CONSTS(9).AND.ALGBRC(2)/3600.00.LT.CONSTS(8), ALGBRC(4), CONSTS(36))
      ALGBRC(5) = (VOI - CONSTS(5))/24.0000
      ALGBRC(7) = TERNRY(ALGBRC(5).GT.0.00000,  (CONSTS(34) ** CONSTS(26)/6.00000)*EXP( - CONSTS(34)*ALGBRC(5))*ALGBRC(5) ** CONSTS(26) - 1.00000, 0.00000)
      ALGBRC(9) = (VOI - CONSTS(6))/24.0000
      ALGBRC(10) = TERNRY(ALGBRC(9).GT.0.00000,  (CONSTS(34) ** CONSTS(26)/6.00000)*EXP( - CONSTS(34)*ALGBRC(9))*ALGBRC(9) ** CONSTS(26) - 1.00000, 0.00000)
      ALGBRC(12) = (VOI - CONSTS(7))/24.0000
      ALGBRC(13) = TERNRY(ALGBRC(12).GT.0.00000,  (CONSTS(34) ** CONSTS(26)/6.00000)*EXP( - CONSTS(34)*ALGBRC(12))*ALGBRC(12) ** CONSTS(26) - 1.00000, 0.00000)
      ALGBRC(14) =  CONSTS(15)*CONSTS(19)*(ALGBRC(7)+ALGBRC(10)+ALGBRC(13))
      ALGBRC(8) = TERNRY(ALGBRC(5).GT.0.00000,  (CONSTS(32) ** CONSTS(27)/6.00000)*EXP( - CONSTS(32)*ALGBRC(5))*ALGBRC(5) ** CONSTS(27) - 1.00000, 0.00000)
      ALGBRC(11) = TERNRY(ALGBRC(9).GT.0.00000,  (CONSTS(32) ** CONSTS(27)/6.00000)*EXP( - CONSTS(32)*ALGBRC(9))*ALGBRC(9) ** CONSTS(27) - 1.00000, 0.00000)
      ALGBRC(15) = TERNRY(ALGBRC(12).GT.0.00000,  (CONSTS(32) ** CONSTS(27)/6.00000)*EXP( - CONSTS(32)*ALGBRC(12))*ALGBRC(12) ** CONSTS(27) - 1.00000, 0.00000)
      ALGBRC(16) =  CONSTS(18)*(ALGBRC(8)+ALGBRC(11)+ALGBRC(15))
      RETURN
      END
      REAL FUNCTION TERNRY(TEST, VALA, VALB)
      LOGICAL TEST
      REAL VALA, VALB
      IF (TEST) THEN
        TERNRY = VALA
      ELSE
        TERNRY = VALB
      ENDIF
      RETURN
      END