C C There are a total of 9 entries in the algebraic variable array. C There are a total of 1 entries in each of the rate and state variable arrays. C There are a total of 6 entries in the constant variable array. C C C VOI is time in component environment (minute). C CONSTS(1) is BFN in component non_muscle_O2_delivery (L_per_minute). C CONSTS(2) is OVA in component non_muscle_O2_delivery (mL_per_L). C CONSTS(3) is HM in component non_muscle_O2_delivery (dimensionless). C CONSTS(4) is AOM in component non_muscle_O2_delivery (dimensionless). C CONSTS(6) is O2ARTN in component NM_O2_blood_supply (mL_per_minute). C ALGBRC(5) is DOB in component delivery_of_O2_to_NM_tissues (mL_per_minute). C ALGBRC(6) is POV in component NM_venous_O2_content (mmHg). C ALGBRC(7) is OSV in component NM_venous_O2_content (dimensionless). C ALGBRC(2) is POT in component pressure_of_O2_in_NM_tissue_cells (mmHg). C ALGBRC(4) is MO2 in component O2_consumption_by_NM_tissue (mL_per_minute). C CONSTS(5) is O2M in component parameter_values (mL_per_minute). C ALGBRC(3) is P1O in component O2_consumption_by_NM_tissue (mmHg). C ALGBRC(1) is QO2 in component volume_of_O2_in_NM_tissue (mL). C ALGBRC(9) is DO2N in component volume_of_O2_in_NM_tissue (mL_per_minute). C ALGBRC(8) is DO2N1 in component volume_of_O2_in_NM_tissue (mL_per_minute). C STATES(1) is QO2T in component volume_of_O2_in_NM_tissue (mL). C RATES(1) is d/dt QO2T in component volume_of_O2_in_NM_tissue (mL). C SUBROUTINE initConsts(CONSTS, RATES, STATES) REAL CONSTS(*), RATES(*), STATES(*) CONSTS(1) = 2.79521 CONSTS(2) = 204.497 CONSTS(3) = 40.0381 CONSTS(4) = 1.00002 CONSTS(5) = 164 STATES(1) = 72.2362 CONSTS(6) = CONSTS(2)*CONSTS(1) RETURN END SUBROUTINE computeRates(VOI, CONSTS, RATES, STATES, ALGBRC) REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*) ALGBRC(1) = TERNRY(STATES(1).LT.0.00000, 0.00000, STATES(1)) ALGBRC(2) = ALGBRC(1)*0.486110 CALL minimize(minfunc_0, CONSTS, VARIABLES, ) ALGBRC(3) = TERNRY(ALGBRC(2).GT.35.0000, 35.0000, ALGBRC(2)) ALGBRC(4) = CONSTS(4)*CONSTS(5)*(1.00000 - 35.0001 - ALGBRC(3) ** 3.00000/42875.0) ALGBRC(8) = ALGBRC(5) - ALGBRC(4) ALGBRC(9) = TERNRY(ALGBRC(1).LT.6.00000.AND.ALGBRC(8).LT.0.00000, ALGBRC(8)*0.100000, ALGBRC(8)) RATES(1) = ALGBRC(9) RETURN END SUBROUTINE computeVariables(VOI, CONSTS, RATES, STATES, ALGBRC) REAL VOI, CONSTS(*), RATES(*), STATES(*), ALGBRC(*) ALGBRC(1) = TERNRY(STATES(1).LT.0.00000, 0.00000, STATES(1)) ALGBRC(2) = ALGBRC(1)*0.486110 ALGBRC(3) = TERNRY(ALGBRC(2).GT.35.0000, 35.0000, ALGBRC(2)) ALGBRC(4) = CONSTS(4)*CONSTS(5)*(1.00000 - 35.0001 - ALGBRC(3) ** 3.00000/42875.0) ALGBRC(8) = ALGBRC(5) - ALGBRC(4) ALGBRC(9) = TERNRY(ALGBRC(1).LT.6.00000.AND.ALGBRC(8).LT.0.00000, ALGBRC(8)*0.100000, ALGBRC(8)) RETURN END REAL FUNCTION minfunc_0(CONSTS, VARIABLES) REAL CONSTS(*), VARIABLES(*) minfunc_0[1] = abs(ALGBRC(7) - (CONSTS(6) - ALGBRC(5))/( CONSTS(3)*5.25000*CONSTS(1))) minfunc_0[2] = abs(ALGBRC(6) - ALGBRC(7)*57.1400) minfunc_0[3] = abs(ALGBRC(5) - (ALGBRC(6) - ALGBRC(2))*12.8570*CONSTS(1)) RETURN END REAL FUNCTION TERNRY(TEST, VALA, VALB) LOGICAL TEST REAL VALA, VALB IF (TEST) THEN TERNRY = VALA ELSE TERNRY = VALB ENDIF RETURN END