C C There are a total of 3 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 (week). C ALGBRC(1) is rem_time in component environment (week). C ALGBRC(3) is Exposure in component environment (mg). C CONSTS(1) is Dose in component environment (mg). C CONSTS(2) is Dose_Int1 in component environment (week). C CONSTS(3) is Dose_Int2 in component environment (week). C CONSTS(4) is Dose_Length in component environment (week). C CONSTS(5) is Cycle_Int in component environment (week). C CONSTS(6) is N_Cycle in component environment (dimensionless). C CONSTS(7) is conversion_factor in component environment (sec_per_week). C ALGBRC(2) is Effect in component effect_compartment (dimensionless). C STATES(1) is Ce in component effect_compartment (mg). C CONSTS(8) is E_max in component effect_compartment (dimensionless). C CONSTS(9) is Amt_50 in component effect_compartment (mg). C CONSTS(13) is k_1 in component effect_compartment (per_week). C CONSTS(10) is t_half_eq in component effect_compartment (week). C STATES(2) is Size in component response_compartment (cm). C CONSTS(11) is Size_0 in component response_compartment (cm). C CONSTS(15) is RateIn in component response_compartment (per_week). C CONSTS(12) is T_Turnover in component response_compartment (cm_week). C CONSTS(14) is k_2 in component response_compartment (per_cm_per_week). C RATES(1) is d/dt Ce in component effect_compartment (mg). C RATES(2) is d/dt Size in component response_compartment (cm). C SUBROUTINE initConsts(CONSTS, RATES, STATES) REAL CONSTS(*), RATES(*), STATES(*) CONSTS(1) = 5203.84 CONSTS(2) = 0 CONSTS(3) = 1 CONSTS(4) = 0.44359 CONSTS(5) = 3 CONSTS(6) = 6 CONSTS(7) = 604800 STATES(1) = 0 CONSTS(8) = 1 CONSTS(9) = 10600 CONSTS(10) = 7.67 STATES(2) = 6.66 CONSTS(11) = 6.66 CONSTS(12) = 21.8 CONSTS(13) = log(2.00000)/CONSTS(10) CONSTS(14) = log(2.00000)/CONSTS(12) CONSTS(15) = CONSTS(11)*CONSTS(14) RETURN END SUBROUTINE computeRates(VOI, CONSTS, RATES, STATES, ALGBRC) REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*) ALGBRC(2) = 1.00000 - ( CONSTS(8)*STATES(1))/(CONSTS(9)+STATES(1)) RATES(2) = ( CONSTS(15)*ALGBRC(2) - CONSTS(14)*STATES(2))*STATES(2) ALGBRC(1) = ( INT(MOD( VOI*CONSTS(7), CONSTS(5)*CONSTS(7))))/CONSTS(7) ALGBRC(3) = TERNRY(VOI.LT. CONSTS(5)*CONSTS(6).AND.CONSTS(2).LT.ALGBRC(1).AND.ALGBRC(1).LT.CONSTS(4), CONSTS(1), TERNRY(VOI.LT. CONSTS(5)*CONSTS(6).AND.CONSTS(3).LT.ALGBRC(1).AND.ALGBRC(1).LT.CONSTS(3)+CONSTS(4), CONSTS(1), 0.00000) RATES(1) = ALGBRC(3)/1.00000 - STATES(1)*CONSTS(13) RETURN END SUBROUTINE computeVariables(VOI, CONSTS, RATES, STATES, ALGBRC) REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*) ALGBRC(2) = 1.00000 - ( CONSTS(8)*STATES(1))/(CONSTS(9)+STATES(1)) ALGBRC(1) = ( INT(MOD( VOI*CONSTS(7), CONSTS(5)*CONSTS(7))))/CONSTS(7) ALGBRC(3) = TERNRY(VOI.LT. CONSTS(5)*CONSTS(6).AND.CONSTS(2).LT.ALGBRC(1).AND.ALGBRC(1).LT.CONSTS(4), CONSTS(1), TERNRY(VOI.LT. CONSTS(5)*CONSTS(6).AND.CONSTS(3).LT.ALGBRC(1).AND.ALGBRC(1).LT.CONSTS(3)+CONSTS(4), CONSTS(1), 0.00000) RETURN END REAL FUNCTION TERNRY(TEST, VALA, VALB) LOGICAL TEST REAL VALA, VALB IF (TEST) THEN TERNRY = VALA ELSE TERNRY = VALB ENDIF RETURN END