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
