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