Generated Code

The following is matlab code generated by the CellML API from this CellML file. (Back to language selection)

The raw code is available.

function [VOI, STATES, ALGEBRAIC, CONSTANTS] = mainFunction()
    % This is the "main function".  In Matlab, things work best if you rename this function to match the filename.
   [VOI, STATES, ALGEBRAIC, CONSTANTS] = solveModel();
end

function [algebraicVariableCount] = getAlgebraicVariableCount() 
    % Used later when setting a global variable with the number of algebraic variables.
    % Note: This is not the "main method".  
    algebraicVariableCount =126;
end
% There are a total of 46 entries in each of the rate and state variable arrays.
% There are a total of 175 entries in the constant variable array.
%

function [VOI, STATES, ALGEBRAIC, CONSTANTS] = solveModel()
    % Create ALGEBRAIC of correct size
    global algebraicVariableCount;  algebraicVariableCount = getAlgebraicVariableCount();
    % Initialise constants and state variables
    [INIT_STATES, CONSTANTS] = initConsts;

    % Set timespan to solve over 
    tspan = [0, 10];

    % Set numerical accuracy options for ODE solver
    options = odeset('RelTol', 1e-06, 'AbsTol', 1e-06, 'MaxStep', 1);

    % Solve model with ODE solver
    [VOI, STATES] = ode15s(@(VOI, STATES)computeRates(VOI, STATES, CONSTANTS), tspan, INIT_STATES, options);

    % Compute algebraic variables
    [RATES, ALGEBRAIC] = computeRates(VOI, STATES, CONSTANTS);
    ALGEBRAIC = computeAlgebraic(ALGEBRAIC, CONSTANTS, STATES, VOI);

    % Plot state variables against variable of integration
    [LEGEND_STATES, LEGEND_ALGEBRAIC, LEGEND_VOI, LEGEND_CONSTANTS] = createLegends();
    figure();
    plot(VOI, STATES);
    xlabel(LEGEND_VOI);
    l = legend(LEGEND_STATES);
    set(l,'Interpreter','none');
end

function [LEGEND_STATES, LEGEND_ALGEBRAIC, LEGEND_VOI, LEGEND_CONSTANTS] = createLegends()
    LEGEND_STATES = ''; LEGEND_ALGEBRAIC = ''; LEGEND_VOI = ''; LEGEND_CONSTANTS = '';
    LEGEND_VOI = strpad('t in component main (second)');
    LEGEND_CONSTANTS(:,1) = strpad('rho in component main (Js2_per_m5)');
    LEGEND_CONSTANTS(:,2) = strpad('g in component main (m_per_s2)');
    LEGEND_CONSTANTS(:,3) = strpad('theta_deg in component main (dim)');
    LEGEND_CONSTANTS(:,175) = strpad('theta_rad in component main (radian)');
    LEGEND_ALGEBRAIC(:,1) = strpad('z in component main (dim)');
    LEGEND_CONSTANTS(:,4) = strpad('T in component main (second)');
    LEGEND_ALGEBRAIC(:,3) = strpad('mt in component main (dim)');
    LEGEND_ALGEBRAIC(:,2) = strpad('mta in component main (dim)');
    LEGEND_CONSTANTS(:,5) = strpad('delay in component main (dim)');
    LEGEND_CONSTANTS(:,6) = strpad('To_pk in component main (dim)');
    LEGEND_STATES(:,1) = strpad('q_LV in component main (litre)');
    LEGEND_CONSTANTS(:,7) = strpad('q_LV_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,7) = strpad('u_LV in component main (kPa)');
    LEGEND_ALGEBRAIC(:,5) = strpad('E_LV in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,8) = strpad('E_LVmax in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,9) = strpad('E_LVmin in component main (kPa_per_L)');
    LEGEND_STATES(:,2) = strpad('q_RV in component main (litre)');
    LEGEND_CONSTANTS(:,10) = strpad('q_RV_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,11) = strpad('u_RV in component main (kPa)');
    LEGEND_ALGEBRAIC(:,9) = strpad('E_RV in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,11) = strpad('E_RVmax in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,12) = strpad('E_RVmin in component main (kPa_per_L)');
    LEGEND_STATES(:,3) = strpad('q_LA in component main (litre)');
    LEGEND_CONSTANTS(:,13) = strpad('q_LA_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,13) = strpad('u_LA in component main (kPa)');
    LEGEND_CONSTANTS(:,14) = strpad('E_LA in component main (kPa_per_L)');
    LEGEND_STATES(:,4) = strpad('q_RA in component main (litre)');
    LEGEND_CONSTANTS(:,15) = strpad('q_RA_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,15) = strpad('u_RA in component main (kPa)');
    LEGEND_CONSTANTS(:,16) = strpad('E_RA in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,25) = strpad('v_AV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,17) = strpad('R_AV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,24) = strpad('v_PV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,18) = strpad('R_PV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,17) = strpad('v_TV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,19) = strpad('R_TV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,19) = strpad('v_MV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,20) = strpad('R_MV in component main (kPa_s_per_L)');
    LEGEND_STATES(:,5) = strpad('q_pulmA in component main (litre)');
    LEGEND_CONSTANTS(:,21) = strpad('q_pulmA_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,21) = strpad('u_pulmA in component main (kPa)');
    LEGEND_CONSTANTS(:,22) = strpad('E_pulmA in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,28) = strpad('v_lungA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,23) = strpad('R_lungA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,6) = strpad('q_lungC in component main (litre)');
    LEGEND_CONSTANTS(:,24) = strpad('q_lungC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,26) = strpad('u_lungC in component main (kPa)');
    LEGEND_CONSTANTS(:,25) = strpad('E_lungC in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,30) = strpad('v_pulmV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,26) = strpad('R_pulmV in component main (kPa_s_per_L)');
    LEGEND_STATES(:,7) = strpad('q_AA in component main (litre)');
    LEGEND_CONSTANTS(:,27) = strpad('q_AA_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,22) = strpad('u_AA in component main (kPa)');
    LEGEND_CONSTANTS(:,28) = strpad('E_AA in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,29) = strpad('v_brachiocephalicA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,29) = strpad('R_brachiocephalicA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,8) = strpad('q_brachiocephalicA in component main (litre)');
    LEGEND_CONSTANTS(:,30) = strpad('q_brachiocephalicA_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,27) = strpad('u_brachiocephalicA in component main (kPa)');
    LEGEND_CONSTANTS(:,31) = strpad('E_brachiocephalicA in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,32) = strpad('v_rSubclavianA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,32) = strpad('R_rSubclavianA in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,36) = strpad('v_rCCA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,33) = strpad('R_rCCA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,9) = strpad('q_rSubclavianA in component main (litre)');
    LEGEND_CONSTANTS(:,34) = strpad('q_rSubclavianA_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,31) = strpad('u_rSubclavianA in component main (kPa)');
    LEGEND_CONSTANTS(:,35) = strpad('E_rSubclavianA in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,45) = strpad('v_rBrachialA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,36) = strpad('R_rBrachialA in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,37) = strpad('v_rVertebralA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,37) = strpad('R_rVertebralA in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,38) = strpad('v_lCCA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,38) = strpad('R_lCCA in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,34) = strpad('v_lSubclavianA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,39) = strpad('R_lSubclavianA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,10) = strpad('q_lSubclavianA in component main (litre)');
    LEGEND_CONSTANTS(:,40) = strpad('q_lSubclavianA_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,33) = strpad('u_lSubclavianA in component main (kPa)');
    LEGEND_CONSTANTS(:,41) = strpad('E_lSubclavianA in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,42) = strpad('v_lBrachialA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,42) = strpad('R_lBrachialA in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,39) = strpad('v_lVertebralA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,43) = strpad('R_lVertebralA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,11) = strpad('q_headC in component main (litre)');
    LEGEND_CONSTANTS(:,44) = strpad('q_headC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,35) = strpad('u_headC in component main (kPa)');
    LEGEND_CONSTANTS(:,45) = strpad('E_headC in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,40) = strpad('v_headV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,46) = strpad('R_headV in component main (kPa_s_per_L)');
    LEGEND_STATES(:,12) = strpad('q_lArmC in component main (litre)');
    LEGEND_CONSTANTS(:,47) = strpad('q_lArmC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,41) = strpad('u_lArmC in component main (kPa)');
    LEGEND_CONSTANTS(:,48) = strpad('E_lArmC in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,43) = strpad('v_lArmV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,49) = strpad('R_lArmV in component main (kPa_s_per_L)');
    LEGEND_STATES(:,13) = strpad('q_rArmC in component main (litre)');
    LEGEND_CONSTANTS(:,50) = strpad('q_rArmC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,44) = strpad('u_rArmC in component main (kPa)');
    LEGEND_CONSTANTS(:,51) = strpad('E_rArmC in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,46) = strpad('v_rArmV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,52) = strpad('R_rArmV in component main (kPa_s_per_L)');
    LEGEND_STATES(:,14) = strpad('q_A1 in component main (litre)');
    LEGEND_CONSTANTS(:,53) = strpad('q_A1_us in component main (litre)');
    LEGEND_STATES(:,15) = strpad('q_A2 in component main (litre)');
    LEGEND_CONSTANTS(:,54) = strpad('q_A2_us in component main (litre)');
    LEGEND_STATES(:,16) = strpad('q_A3 in component main (litre)');
    LEGEND_CONSTANTS(:,55) = strpad('q_A3_us in component main (litre)');
    LEGEND_STATES(:,17) = strpad('q_A4 in component main (litre)');
    LEGEND_CONSTANTS(:,56) = strpad('q_A4_us in component main (litre)');
    LEGEND_STATES(:,18) = strpad('q_A5 in component main (litre)');
    LEGEND_CONSTANTS(:,57) = strpad('q_A5_us in component main (litre)');
    LEGEND_STATES(:,19) = strpad('q_A6 in component main (litre)');
    LEGEND_CONSTANTS(:,58) = strpad('q_A6_us in component main (litre)');
    LEGEND_STATES(:,20) = strpad('q_A7 in component main (litre)');
    LEGEND_CONSTANTS(:,59) = strpad('q_A7_us in component main (litre)');
    LEGEND_STATES(:,21) = strpad('q_A8 in component main (litre)');
    LEGEND_CONSTANTS(:,60) = strpad('q_A8_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,55) = strpad('v_A1 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,56) = strpad('v_A2 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,57) = strpad('v_A3 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,58) = strpad('v_A4 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,59) = strpad('v_A5 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,60) = strpad('v_A6 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,61) = strpad('v_A7 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,62) = strpad('v_A8 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,47) = strpad('u_A1 in component main (kPa)');
    LEGEND_ALGEBRAIC(:,48) = strpad('u_A2 in component main (kPa)');
    LEGEND_ALGEBRAIC(:,49) = strpad('u_A3 in component main (kPa)');
    LEGEND_ALGEBRAIC(:,50) = strpad('u_A4 in component main (kPa)');
    LEGEND_ALGEBRAIC(:,51) = strpad('u_A5 in component main (kPa)');
    LEGEND_ALGEBRAIC(:,52) = strpad('u_A6 in component main (kPa)');
    LEGEND_ALGEBRAIC(:,53) = strpad('u_A7 in component main (kPa)');
    LEGEND_ALGEBRAIC(:,54) = strpad('u_A8 in component main (kPa)');
    LEGEND_CONSTANTS(:,61) = strpad('E_A1 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,62) = strpad('E_A2 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,63) = strpad('E_A3 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,64) = strpad('E_A4 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,65) = strpad('E_A5 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,66) = strpad('E_A6 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,67) = strpad('E_A7 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,68) = strpad('E_A8 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,69) = strpad('R_A1 in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,70) = strpad('R_A2 in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,71) = strpad('R_A3 in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,72) = strpad('R_A4 in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,73) = strpad('R_A5 in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,74) = strpad('R_A6 in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,75) = strpad('R_A7 in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,76) = strpad('R_A8 in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,64) = strpad('v_lInfPhrenicA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,77) = strpad('R_lInfPhrenicA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,22) = strpad('q_lAdrenalGlandC in component main (litre)');
    LEGEND_CONSTANTS(:,78) = strpad('q_lAdrenalGlandC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,63) = strpad('u_lAdrenalGlandC in component main (kPa)');
    LEGEND_CONSTANTS(:,79) = strpad('E_lAdrenalGlandC in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,66) = strpad('v_lAdrenalV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,80) = strpad('R_lAdrenalV in component main (kPa_s_per_L)');
    LEGEND_STATES(:,23) = strpad('q_lInfPhrenicV in component main (litre)');
    LEGEND_CONSTANTS(:,81) = strpad('q_lInfPhrenicV_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,65) = strpad('u_lInfPhrenicV in component main (kPa)');
    LEGEND_CONSTANTS(:,82) = strpad('E_lInfPhrenicV in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,105) = strpad('v_lInfPhrenicV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,83) = strpad('R_lInfPhrenicV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,68) = strpad('v_rInfPhrenicA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,84) = strpad('R_rInfPhrenicA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,24) = strpad('q_rAdrenalGlandC in component main (litre)');
    LEGEND_CONSTANTS(:,85) = strpad('q_rAdrenalGlandC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,67) = strpad('u_rAdrenalGlandC in component main (kPa)');
    LEGEND_CONSTANTS(:,86) = strpad('E_rAdrenalGlandC in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,70) = strpad('v_rAdrenalV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,87) = strpad('R_rAdrenalV in component main (kPa_s_per_L)');
    LEGEND_STATES(:,25) = strpad('q_rInfPhrenicV in component main (litre)');
    LEGEND_CONSTANTS(:,88) = strpad('q_rInfPhrenicV_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,69) = strpad('u_rInfPhrenicV in component main (kPa)');
    LEGEND_CONSTANTS(:,89) = strpad('E_rInfPhrenicV in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,107) = strpad('v_rInfPhrenicV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,90) = strpad('R_rInfPhrenicV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,72) = strpad('v_celiacA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,91) = strpad('R_celiacA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,26) = strpad('q_celiacA in component main (litre)');
    LEGEND_CONSTANTS(:,92) = strpad('q_celiacA_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,71) = strpad('u_celiacA in component main (kPa)');
    LEGEND_CONSTANTS(:,93) = strpad('E_celiacA in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,94) = strpad('z_celiacA in component main (meter)');
    LEGEND_ALGEBRAIC(:,74) = strpad('v_supMesA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,95) = strpad('R_supMesA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,27) = strpad('q_supMesA in component main (litre)');
    LEGEND_CONSTANTS(:,96) = strpad('q_supMesA_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,73) = strpad('u_supMesA in component main (kPa)');
    LEGEND_CONSTANTS(:,97) = strpad('E_supMesA in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,98) = strpad('z_supMesA in component main (meter)');
    LEGEND_ALGEBRAIC(:,76) = strpad('v_lRenalA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,99) = strpad('R_lRenalA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,28) = strpad('q_lGlomerulusC in component main (litre)');
    LEGEND_CONSTANTS(:,100) = strpad('q_lGlomerulusC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,75) = strpad('u_lGlomerulusC in component main (kPa)');
    LEGEND_CONSTANTS(:,101) = strpad('E_lGlomerulusC in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,78) = strpad('v_lEffArteriol in component main (L_per_s)');
    LEGEND_CONSTANTS(:,102) = strpad('R_lEffArteriol in component main (kPa_s_per_L)');
    LEGEND_STATES(:,29) = strpad('q_lPeritubularC in component main (litre)');
    LEGEND_CONSTANTS(:,103) = strpad('q_lPeritubularC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,77) = strpad('u_lPeritubularC in component main (kPa)');
    LEGEND_CONSTANTS(:,104) = strpad('E_lPeritubularC in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,111) = strpad('v_lRenalV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,105) = strpad('R_lRenalV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,80) = strpad('v_rRenalA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,106) = strpad('R_rRenalA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,30) = strpad('q_rGlomerulusC in component main (litre)');
    LEGEND_CONSTANTS(:,107) = strpad('q_rGlomerulusC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,79) = strpad('u_rGlomerulusC in component main (kPa)');
    LEGEND_CONSTANTS(:,108) = strpad('E_rGlomerulusC in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,82) = strpad('v_rEffArteriol in component main (L_per_s)');
    LEGEND_CONSTANTS(:,109) = strpad('R_rEffArteriol in component main (kPa_s_per_L)');
    LEGEND_STATES(:,31) = strpad('q_rPeritubularC in component main (litre)');
    LEGEND_CONSTANTS(:,110) = strpad('q_rPeritubularC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,81) = strpad('u_rPeritubularC in component main (kPa)');
    LEGEND_CONSTANTS(:,111) = strpad('E_rPeritubularC in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,113) = strpad('v_rRenalV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,112) = strpad('R_rRenalV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,93) = strpad('v_infMesA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,113) = strpad('R_infMesA in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,84) = strpad('v_stomachA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,114) = strpad('R_stomachA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,32) = strpad('q_stomachC in component main (litre)');
    LEGEND_CONSTANTS(:,115) = strpad('q_stomachC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,83) = strpad('u_stomachC in component main (kPa)');
    LEGEND_CONSTANTS(:,116) = strpad('E_stomachC in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,117) = strpad('z_stomachC in component main (meter)');
    LEGEND_ALGEBRAIC(:,96) = strpad('v_stomachV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,118) = strpad('R_stomachV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,86) = strpad('v_spleenA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,119) = strpad('R_spleenA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,33) = strpad('q_spleenC in component main (litre)');
    LEGEND_CONSTANTS(:,120) = strpad('q_spleenC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,85) = strpad('u_spleenC in component main (kPa)');
    LEGEND_CONSTANTS(:,121) = strpad('E_spleenC in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,122) = strpad('z_spleenC in component main (meter)');
    LEGEND_ALGEBRAIC(:,97) = strpad('v_spleenV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,123) = strpad('R_spleenV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,88) = strpad('v_pancreas1A in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,89) = strpad('v_pancreas2A in component main (L_per_s)');
    LEGEND_CONSTANTS(:,124) = strpad('R_pancreas1A in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,125) = strpad('R_pancreas2A in component main (kPa_s_per_L)');
    LEGEND_STATES(:,34) = strpad('q_pancreasC in component main (litre)');
    LEGEND_CONSTANTS(:,126) = strpad('q_pancreasC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,87) = strpad('u_pancreasC in component main (kPa)');
    LEGEND_CONSTANTS(:,127) = strpad('E_pancreasC in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,128) = strpad('z_pancreasC in component main (meter)');
    LEGEND_ALGEBRAIC(:,98) = strpad('v_pancreasV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,129) = strpad('R_pancreasV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,91) = strpad('v_intestineA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,130) = strpad('R_intestineA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,35) = strpad('q_intestineC in component main (litre)');
    LEGEND_CONSTANTS(:,131) = strpad('q_intestineC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,90) = strpad('u_intestineC in component main (kPa)');
    LEGEND_CONSTANTS(:,132) = strpad('E_intestineC in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,133) = strpad('z_ in component main (meter)');
    LEGEND_ALGEBRAIC(:,99) = strpad('v_intestineV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,134) = strpad('R_intestineV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,94) = strpad('v_colonA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,135) = strpad('R_colonA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,36) = strpad('q_colonC in component main (litre)');
    LEGEND_CONSTANTS(:,136) = strpad('q_colonC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,92) = strpad('u_colonC in component main (kPa)');
    LEGEND_CONSTANTS(:,137) = strpad('E_colonC in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,138) = strpad('z_colonC in component main (meter)');
    LEGEND_ALGEBRAIC(:,100) = strpad('v_colonV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,139) = strpad('R_colonV in component main (kPa_s_per_L)');
    LEGEND_STATES(:,37) = strpad('q_portalV in component main (litre)');
    LEGEND_CONSTANTS(:,140) = strpad('q_portalV_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,95) = strpad('u_portalV in component main (kPa)');
    LEGEND_CONSTANTS(:,141) = strpad('E_portalV in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,142) = strpad('z_portalV in component main (meter)');
    LEGEND_ALGEBRAIC(:,102) = strpad('v_portalV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,143) = strpad('R_portalV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,103) = strpad('v_liverA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,144) = strpad('R_liverA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,38) = strpad('q_liverC in component main (litre)');
    LEGEND_CONSTANTS(:,145) = strpad('q_liverC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,101) = strpad('u_liverC in component main (kPa)');
    LEGEND_CONSTANTS(:,146) = strpad('E_liverC in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,147) = strpad('z_liverC in component main (meter)');
    LEGEND_ALGEBRAIC(:,109) = strpad('v_liverV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,148) = strpad('R_liverV in component main (kPa_s_per_L)');
    LEGEND_STATES(:,39) = strpad('q_V1 in component main (litre)');
    LEGEND_CONSTANTS(:,149) = strpad('q_V1_us in component main (litre)');
    LEGEND_STATES(:,40) = strpad('q_V2 in component main (litre)');
    LEGEND_CONSTANTS(:,150) = strpad('q_V2_us in component main (litre)');
    LEGEND_STATES(:,41) = strpad('q_V3 in component main (litre)');
    LEGEND_CONSTANTS(:,151) = strpad('q_V3_us in component main (litre)');
    LEGEND_STATES(:,42) = strpad('q_V4 in component main (litre)');
    LEGEND_CONSTANTS(:,152) = strpad('q_V4_us in component main (litre)');
    LEGEND_STATES(:,43) = strpad('q_V5 in component main (litre)');
    LEGEND_CONSTANTS(:,153) = strpad('q_V5_us in component main (litre)');
    LEGEND_STATES(:,44) = strpad('q_V6 in component main (litre)');
    LEGEND_CONSTANTS(:,154) = strpad('q_V6_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,115) = strpad('v_V1 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,116) = strpad('v_V2 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,117) = strpad('v_V3 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,118) = strpad('v_V4 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,119) = strpad('v_V5 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,120) = strpad('v_V6 in component main (L_per_s)');
    LEGEND_ALGEBRAIC(:,104) = strpad('u_V1 in component main (kPa)');
    LEGEND_ALGEBRAIC(:,106) = strpad('u_V2 in component main (kPa)');
    LEGEND_ALGEBRAIC(:,108) = strpad('u_V3 in component main (kPa)');
    LEGEND_ALGEBRAIC(:,110) = strpad('u_V4 in component main (kPa)');
    LEGEND_ALGEBRAIC(:,112) = strpad('u_V5 in component main (kPa)');
    LEGEND_ALGEBRAIC(:,114) = strpad('u_V6 in component main (kPa)');
    LEGEND_CONSTANTS(:,155) = strpad('E_V1 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,156) = strpad('E_V2 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,157) = strpad('E_V3 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,158) = strpad('E_V4 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,159) = strpad('E_V5 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,160) = strpad('E_V6 in component main (kPa_per_L)');
    LEGEND_CONSTANTS(:,161) = strpad('R_V1 in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,162) = strpad('R_V2 in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,163) = strpad('R_V3 in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,164) = strpad('R_V4 in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,165) = strpad('R_V5 in component main (kPa_s_per_L)');
    LEGEND_CONSTANTS(:,166) = strpad('R_V6 in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,122) = strpad('v_lCommonIliacA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,167) = strpad('R_lCommonIliacA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,45) = strpad('q_lLegC in component main (litre)');
    LEGEND_CONSTANTS(:,168) = strpad('q_lLegC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,121) = strpad('u_lLegC in component main (kPa)');
    LEGEND_CONSTANTS(:,169) = strpad('E_lLegC in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,123) = strpad('v_lCommonIliacV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,170) = strpad('R_lCommonIliacV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,125) = strpad('v_rCommonIliacA in component main (L_per_s)');
    LEGEND_CONSTANTS(:,171) = strpad('R_rCommonIliacA in component main (kPa_s_per_L)');
    LEGEND_STATES(:,46) = strpad('q_rLegC in component main (litre)');
    LEGEND_CONSTANTS(:,172) = strpad('q_rLegC_us in component main (litre)');
    LEGEND_ALGEBRAIC(:,124) = strpad('u_rLegC in component main (kPa)');
    LEGEND_CONSTANTS(:,173) = strpad('E_rLegC in component main (kPa_per_L)');
    LEGEND_ALGEBRAIC(:,126) = strpad('v_rCommonIliacV in component main (L_per_s)');
    LEGEND_CONSTANTS(:,174) = strpad('R_rCommonIliacV in component main (kPa_s_per_L)');
    LEGEND_ALGEBRAIC(:,4) = strpad('q_TotHeart in component main (litre)');
    LEGEND_ALGEBRAIC(:,6) = strpad('q_TotLung in component main (litre)');
    LEGEND_ALGEBRAIC(:,8) = strpad('q_TotHead in component main (litre)');
    LEGEND_ALGEBRAIC(:,10) = strpad('q_TotThoracic in component main (litre)');
    LEGEND_ALGEBRAIC(:,12) = strpad('q_TotAorta in component main (litre)');
    LEGEND_ALGEBRAIC(:,14) = strpad('q_TotRenal in component main (litre)');
    LEGEND_ALGEBRAIC(:,16) = strpad('q_TotGut in component main (litre)');
    LEGEND_ALGEBRAIC(:,18) = strpad('q_TotVenaCava in component main (litre)');
    LEGEND_ALGEBRAIC(:,20) = strpad('q_TotLimbs in component main (litre)');
    LEGEND_ALGEBRAIC(:,23) = strpad('q_TotBlood in component main (litre)');
    LEGEND_RATES(:,1) = strpad('d/dt q_LV in component main (litre)');
    LEGEND_RATES(:,2) = strpad('d/dt q_RV in component main (litre)');
    LEGEND_RATES(:,3) = strpad('d/dt q_LA in component main (litre)');
    LEGEND_RATES(:,4) = strpad('d/dt q_RA in component main (litre)');
    LEGEND_RATES(:,5) = strpad('d/dt q_pulmA in component main (litre)');
    LEGEND_RATES(:,6) = strpad('d/dt q_lungC in component main (litre)');
    LEGEND_RATES(:,7) = strpad('d/dt q_AA in component main (litre)');
    LEGEND_RATES(:,8) = strpad('d/dt q_brachiocephalicA in component main (litre)');
    LEGEND_RATES(:,9) = strpad('d/dt q_rSubclavianA in component main (litre)');
    LEGEND_RATES(:,10) = strpad('d/dt q_lSubclavianA in component main (litre)');
    LEGEND_RATES(:,11) = strpad('d/dt q_headC in component main (litre)');
    LEGEND_RATES(:,12) = strpad('d/dt q_lArmC in component main (litre)');
    LEGEND_RATES(:,13) = strpad('d/dt q_rArmC in component main (litre)');
    LEGEND_RATES(:,14) = strpad('d/dt q_A1 in component main (litre)');
    LEGEND_RATES(:,15) = strpad('d/dt q_A2 in component main (litre)');
    LEGEND_RATES(:,16) = strpad('d/dt q_A3 in component main (litre)');
    LEGEND_RATES(:,17) = strpad('d/dt q_A4 in component main (litre)');
    LEGEND_RATES(:,18) = strpad('d/dt q_A5 in component main (litre)');
    LEGEND_RATES(:,19) = strpad('d/dt q_A6 in component main (litre)');
    LEGEND_RATES(:,20) = strpad('d/dt q_A7 in component main (litre)');
    LEGEND_RATES(:,21) = strpad('d/dt q_A8 in component main (litre)');
    LEGEND_RATES(:,22) = strpad('d/dt q_lAdrenalGlandC in component main (litre)');
    LEGEND_RATES(:,23) = strpad('d/dt q_lInfPhrenicV in component main (litre)');
    LEGEND_RATES(:,24) = strpad('d/dt q_rAdrenalGlandC in component main (litre)');
    LEGEND_RATES(:,25) = strpad('d/dt q_rInfPhrenicV in component main (litre)');
    LEGEND_RATES(:,26) = strpad('d/dt q_celiacA in component main (litre)');
    LEGEND_RATES(:,27) = strpad('d/dt q_supMesA in component main (litre)');
    LEGEND_RATES(:,28) = strpad('d/dt q_lGlomerulusC in component main (litre)');
    LEGEND_RATES(:,29) = strpad('d/dt q_lPeritubularC in component main (litre)');
    LEGEND_RATES(:,30) = strpad('d/dt q_rGlomerulusC in component main (litre)');
    LEGEND_RATES(:,31) = strpad('d/dt q_rPeritubularC in component main (litre)');
    LEGEND_RATES(:,32) = strpad('d/dt q_stomachC in component main (litre)');
    LEGEND_RATES(:,33) = strpad('d/dt q_spleenC in component main (litre)');
    LEGEND_RATES(:,34) = strpad('d/dt q_pancreasC in component main (litre)');
    LEGEND_RATES(:,35) = strpad('d/dt q_intestineC in component main (litre)');
    LEGEND_RATES(:,36) = strpad('d/dt q_colonC in component main (litre)');
    LEGEND_RATES(:,37) = strpad('d/dt q_portalV in component main (litre)');
    LEGEND_RATES(:,38) = strpad('d/dt q_liverC in component main (litre)');
    LEGEND_RATES(:,39) = strpad('d/dt q_V1 in component main (litre)');
    LEGEND_RATES(:,40) = strpad('d/dt q_V2 in component main (litre)');
    LEGEND_RATES(:,41) = strpad('d/dt q_V3 in component main (litre)');
    LEGEND_RATES(:,42) = strpad('d/dt q_V4 in component main (litre)');
    LEGEND_RATES(:,43) = strpad('d/dt q_V5 in component main (litre)');
    LEGEND_RATES(:,44) = strpad('d/dt q_V6 in component main (litre)');
    LEGEND_RATES(:,45) = strpad('d/dt q_lLegC in component main (litre)');
    LEGEND_RATES(:,46) = strpad('d/dt q_rLegC in component main (litre)');
    LEGEND_STATES  = LEGEND_STATES';
    LEGEND_ALGEBRAIC = LEGEND_ALGEBRAIC';
    LEGEND_RATES = LEGEND_RATES';
    LEGEND_CONSTANTS = LEGEND_CONSTANTS';
end

function [STATES, CONSTANTS] = initConsts()
    VOI = 0; CONSTANTS = []; STATES = []; ALGEBRAIC = [];
    CONSTANTS(:,1) = 1000;
    CONSTANTS(:,2) = 9.81;
    CONSTANTS(:,3) = 90;
    CONSTANTS(:,4) = 1;
    CONSTANTS(:,5) = 0.1;
    CONSTANTS(:,6) = 0.1;
    STATES(:,1) = 2.24894867772612;
    CONSTANTS(:,7) = 0.005;
    CONSTANTS(:,8) = 320;
    CONSTANTS(:,9) = 6.667;
    STATES(:,2) = 2.24212874273495;
    CONSTANTS(:,10) = 0.01;
    CONSTANTS(:,11) = 70;
    CONSTANTS(:,12) = 2;
    STATES(:,3) = 1.50038322871398;
    CONSTANTS(:,13) = 0.004;
    CONSTANTS(:,14) = 10;
    STATES(:,4) = 0.582873822068968;
    CONSTANTS(:,15) = 0.004;
    CONSTANTS(:,16) = 10;
    CONSTANTS(:,17) = 1;
    CONSTANTS(:,18) = 1;
    CONSTANTS(:,19) = 1;
    CONSTANTS(:,20) = 1;
    STATES(:,5) = 0.274822042097049;
    CONSTANTS(:,21) = 0.2;
    CONSTANTS(:,22) = 200;
    CONSTANTS(:,23) = 1;
    STATES(:,6) = 0.274821056256821;
    CONSTANTS(:,24) = 0.2;
    CONSTANTS(:,25) = 200;
    CONSTANTS(:,26) = 1;
    STATES(:,7) = 1.43716360225001;
    CONSTANTS(:,27) = 0.12;
    CONSTANTS(:,28) = 80;
    CONSTANTS(:,29) = 100;
    STATES(:,8) = 0.658321340279823;
    CONSTANTS(:,30) = 0.2;
    CONSTANTS(:,31) = 200;
    CONSTANTS(:,32) = 100;
    CONSTANTS(:,33) = 100;
    STATES(:,9) = 0.578637981993128;
    CONSTANTS(:,34) = 0.2;
    CONSTANTS(:,35) = 200;
    CONSTANTS(:,36) = 100;
    CONSTANTS(:,37) = 100;
    CONSTANTS(:,38) = 100;
    CONSTANTS(:,39) = 100;
    STATES(:,10) = 0.609560299960373;
    CONSTANTS(:,40) = 0.2;
    CONSTANTS(:,41) = 200;
    CONSTANTS(:,42) = 100;
    CONSTANTS(:,43) = 100;
    STATES(:,11) = 0.575700923676085;
    CONSTANTS(:,44) = 0.2;
    CONSTANTS(:,45) = 200;
    CONSTANTS(:,46) = 100;
    STATES(:,12) = 0.380415025779693;
    CONSTANTS(:,47) = 0.06;
    CONSTANTS(:,48) = 150;
    CONSTANTS(:,49) = 100;
    STATES(:,13) = 0.380415025779692;
    CONSTANTS(:,50) = 0.06;
    CONSTANTS(:,51) = 150;
    CONSTANTS(:,52) = 100;
    STATES(:,14) = 0.0726453866278764;
    CONSTANTS(:,53) = 0.06;
    STATES(:,15) = 0.0722595904606296;
    CONSTANTS(:,54) = 0.06;
    STATES(:,16) = 0.0717727262354559;
    CONSTANTS(:,55) = 0.06;
    STATES(:,17) = 0.0715328891139091;
    CONSTANTS(:,56) = 0.06;
    STATES(:,18) = 0.0714293557557069;
    CONSTANTS(:,57) = 0.06;
    STATES(:,19) = 0.0713497500336812;
    CONSTANTS(:,58) = 0.06;
    STATES(:,20) = 0.0712949341825069;
    CONSTANTS(:,59) = 0.06;
    STATES(:,21) = 0.0712201889071758;
    CONSTANTS(:,60) = 0.06;
    CONSTANTS(:,61) = 400;
    CONSTANTS(:,62) = 400;
    CONSTANTS(:,63) = 400;
    CONSTANTS(:,64) = 400;
    CONSTANTS(:,65) = 400;
    CONSTANTS(:,66) = 400;
    CONSTANTS(:,67) = 400;
    CONSTANTS(:,68) = 400;
    CONSTANTS(:,69) = 10000000;
    CONSTANTS(:,70) = 100;
    CONSTANTS(:,71) = 100;
    CONSTANTS(:,72) = 100;
    CONSTANTS(:,73) = 100;
    CONSTANTS(:,74) = 100;
    CONSTANTS(:,75) = 100;
    CONSTANTS(:,76) = 100;
    CONSTANTS(:,77) = 100;
    STATES(:,22) = 0.226013520134949;
    CONSTANTS(:,78) = 0.2;
    CONSTANTS(:,79) = 200;
    CONSTANTS(:,80) = 100;
    STATES(:,23) = 0.226425525942081;
    CONSTANTS(:,81) = 0.2;
    CONSTANTS(:,82) = 200;
    CONSTANTS(:,83) = 100;
    CONSTANTS(:,84) = 100;
    STATES(:,24) = 0.224729694488936;
    CONSTANTS(:,85) = 0.2;
    CONSTANTS(:,86) = 200;
    CONSTANTS(:,87) = 100;
    STATES(:,25) = 0.224899115493557;
    CONSTANTS(:,88) = 0.2;
    CONSTANTS(:,89) = 200;
    CONSTANTS(:,90) = 100;
    CONSTANTS(:,91) = 100;
    STATES(:,26) = 0.0715428919998289;
    CONSTANTS(:,92) = 0.06;
    CONSTANTS(:,93) = 400;
    CONSTANTS(:,94) = 0.2;
    CONSTANTS(:,95) = 100;
    STATES(:,27) = 0.071414457768405;
    CONSTANTS(:,96) = 0.06;
    CONSTANTS(:,97) = 400;
    CONSTANTS(:,98) = 0.2;
    CONSTANTS(:,99) = 100;
    STATES(:,28) = 0.222843940557744;
    CONSTANTS(:,100) = 0.2;
    CONSTANTS(:,101) = 200;
    CONSTANTS(:,102) = 100;
    STATES(:,29) = 0.222892809988734;
    CONSTANTS(:,103) = 0.2;
    CONSTANTS(:,104) = 200;
    CONSTANTS(:,105) = 100;
    CONSTANTS(:,106) = 100;
    STATES(:,30) = 0.222680450943523;
    CONSTANTS(:,107) = 0.2;
    CONSTANTS(:,108) = 200;
    CONSTANTS(:,109) = 100;
    STATES(:,31) = 0.222721287850087;
    CONSTANTS(:,110) = 0.2;
    CONSTANTS(:,111) = 200;
    CONSTANTS(:,112) = 100;
    CONSTANTS(:,113) = 100;
    CONSTANTS(:,114) = 100;
    STATES(:,32) = 0.105910755847991;
    CONSTANTS(:,115) = 0.06;
    CONSTANTS(:,116) = 100;
    CONSTANTS(:,117) = 0.2;
    CONSTANTS(:,118) = 2400;
    CONSTANTS(:,119) = 100;
    STATES(:,33) = 0.105910034847806;
    CONSTANTS(:,120) = 0.06;
    CONSTANTS(:,121) = 100;
    CONSTANTS(:,122) = 0.2;
    CONSTANTS(:,123) = 3000;
    CONSTANTS(:,124) = 100;
    CONSTANTS(:,125) = 100;
    STATES(:,34) = 0.105787155209054;
    CONSTANTS(:,126) = 0.06;
    CONSTANTS(:,127) = 100;
    CONSTANTS(:,128) = 0.2;
    CONSTANTS(:,129) = 4000;
    CONSTANTS(:,130) = 100;
    STATES(:,35) = 0.105459895332545;
    CONSTANTS(:,131) = 0.06;
    CONSTANTS(:,132) = 100;
    CONSTANTS(:,133) = 0.2;
    CONSTANTS(:,134) = 1200;
    CONSTANTS(:,135) = 100;
    STATES(:,36) = 0.105317375726849;
    CONSTANTS(:,136) = 0.06;
    CONSTANTS(:,137) = 100;
    CONSTANTS(:,138) = 0.2;
    CONSTANTS(:,139) = 2000;
    STATES(:,37) = 0.152013945600315;
    CONSTANTS(:,140) = 0.06;
    CONSTANTS(:,141) = 50;
    CONSTANTS(:,142) = 0.2;
    CONSTANTS(:,143) = 100;
    CONSTANTS(:,144) = 800;
    STATES(:,38) = 0.526188169704937;
    CONSTANTS(:,145) = 0.06;
    CONSTANTS(:,146) = 10;
    CONSTANTS(:,147) = -0.5;
    CONSTANTS(:,148) = 1;
    STATES(:,39) = 0.0732527312969717;
    CONSTANTS(:,149) = 0.06;
    STATES(:,40) = 0.0724355014489091;
    CONSTANTS(:,150) = 0.06;
    STATES(:,41) = 0.0716607456049039;
    CONSTANTS(:,151) = 0.06;
    STATES(:,42) = 0.071501504166401;
    CONSTANTS(:,152) = 0.06;
    STATES(:,43) = 0.0714111536200381;
    CONSTANTS(:,153) = 0.06;
    STATES(:,44) = 0.0713861207574313;
    CONSTANTS(:,154) = 0.06;
    CONSTANTS(:,155) = 400;
    CONSTANTS(:,156) = 400;
    CONSTANTS(:,157) = 400;
    CONSTANTS(:,158) = 400;
    CONSTANTS(:,159) = 400;
    CONSTANTS(:,160) = 400;
    CONSTANTS(:,161) = 100;
    CONSTANTS(:,162) = 100;
    CONSTANTS(:,163) = 100;
    CONSTANTS(:,164) = 100;
    CONSTANTS(:,165) = 100;
    CONSTANTS(:,166) = 100;
    CONSTANTS(:,167) = 100;
    STATES(:,45) = 0.0898390162613648;
    CONSTANTS(:,168) = 0.06;
    CONSTANTS(:,169) = 150;
    CONSTANTS(:,170) = 4000;
    CONSTANTS(:,171) = 100;
    STATES(:,46) = 0.0898390162613648;
    CONSTANTS(:,172) = 0.06;
    CONSTANTS(:,173) = 150;
    CONSTANTS(:,174) = 4000;
    CONSTANTS(:,175) = ( CONSTANTS(:,3).* pi)./180.000;
    if (isempty(STATES)), warning('Initial values for states not set');, end
end

function [RATES, ALGEBRAIC] = computeRates(VOI, STATES, CONSTANTS)
    global algebraicVariableCount;
    statesSize = size(STATES);
    statesColumnCount = statesSize(2);
    if ( statesColumnCount == 1)
        STATES = STATES';
        ALGEBRAIC = zeros(1, algebraicVariableCount);
        utilOnes = 1;
    else
        statesRowCount = statesSize(1);
        ALGEBRAIC = zeros(statesRowCount, algebraicVariableCount);
        RATES = zeros(statesRowCount, statesColumnCount);
        utilOnes = ones(statesRowCount, 1);
    end
    ALGEBRAIC(:,3) = VOI./CONSTANTS(:,4) - floor(VOI./CONSTANTS(:,4));
    ALGEBRAIC(:,5) = piecewise({ALGEBRAIC(:,3)<0.400000,  (( (CONSTANTS(:,8) - CONSTANTS(:,9)).*ALGEBRAIC(:,3))./CONSTANTS(:,6)).*exp( 0.500000.*(1.00000 - power(ALGEBRAIC(:,3)./CONSTANTS(:,6), 2.00000)))+CONSTANTS(:,9) , ALGEBRAIC(:,3)<0.600000,  (( (CONSTANTS(:,8) - CONSTANTS(:,9)).*0.400000)./CONSTANTS(:,6)).*exp( 0.500000.*(1.00000 - power(0.400000./CONSTANTS(:,6), 2.00000)))+CONSTANTS(:,9) }, CONSTANTS(:,9));
    ALGEBRAIC(:,7) =  ALGEBRAIC(:,5).*(STATES(:,1) - CONSTANTS(:,7));
    ALGEBRAIC(:,22) =  CONSTANTS(:,28).*(STATES(:,7) - CONSTANTS(:,27));
    ALGEBRAIC(:,25) = piecewise({ALGEBRAIC(:,7)>ALGEBRAIC(:,22), (ALGEBRAIC(:,7) - ALGEBRAIC(:,22))./CONSTANTS(:,17) }, 0.00000);
    ALGEBRAIC(:,13) =  CONSTANTS(:,14).*(STATES(:,3) - CONSTANTS(:,13));
    ALGEBRAIC(:,19) = piecewise({ALGEBRAIC(:,13)>ALGEBRAIC(:,7), (ALGEBRAIC(:,13) - ALGEBRAIC(:,7))./CONSTANTS(:,20) }, 0.00000);
    RATES(:,1) = ALGEBRAIC(:,19) - ALGEBRAIC(:,25);
    ALGEBRAIC(:,9) = piecewise({ALGEBRAIC(:,3)<0.400000,  (( (CONSTANTS(:,11) - CONSTANTS(:,12)).*ALGEBRAIC(:,3))./CONSTANTS(:,6)).*exp( 0.500000.*(1.00000 - power(ALGEBRAIC(:,3)./CONSTANTS(:,6), 2.00000)))+CONSTANTS(:,12) , ALGEBRAIC(:,3)<0.600000,  (( (CONSTANTS(:,11) - CONSTANTS(:,12)).*0.400000)./CONSTANTS(:,6)).*exp( 0.500000.*(1.00000 - power(0.400000./CONSTANTS(:,6), 2.00000)))+CONSTANTS(:,12) }, CONSTANTS(:,12));
    ALGEBRAIC(:,11) =  ALGEBRAIC(:,9).*(STATES(:,2) - CONSTANTS(:,10));
    ALGEBRAIC(:,21) =  CONSTANTS(:,22).*(STATES(:,5) - CONSTANTS(:,21));
    ALGEBRAIC(:,24) = piecewise({ALGEBRAIC(:,11)>ALGEBRAIC(:,21), (ALGEBRAIC(:,11) - ALGEBRAIC(:,21))./CONSTANTS(:,18) }, 0.00000);
    ALGEBRAIC(:,15) =  CONSTANTS(:,16).*(STATES(:,4) - CONSTANTS(:,15));
    ALGEBRAIC(:,17) = piecewise({ALGEBRAIC(:,15)>ALGEBRAIC(:,11), (ALGEBRAIC(:,15) - ALGEBRAIC(:,11))./CONSTANTS(:,19) }, 0.00000);
    RATES(:,2) = ALGEBRAIC(:,17) - ALGEBRAIC(:,24);
    ALGEBRAIC(:,26) =  CONSTANTS(:,25).*(STATES(:,6) - CONSTANTS(:,24));
    ALGEBRAIC(:,28) = (ALGEBRAIC(:,21) - ALGEBRAIC(:,26))./CONSTANTS(:,23);
    RATES(:,5) = ALGEBRAIC(:,24) - ALGEBRAIC(:,28);
    ALGEBRAIC(:,30) = (ALGEBRAIC(:,26) - ALGEBRAIC(:,13))./CONSTANTS(:,26);
    RATES(:,3) = ALGEBRAIC(:,30) - ALGEBRAIC(:,19);
    RATES(:,6) = ALGEBRAIC(:,28) - ALGEBRAIC(:,30);
    ALGEBRAIC(:,27) =  CONSTANTS(:,31).*(STATES(:,8) - CONSTANTS(:,30));
    ALGEBRAIC(:,29) = (ALGEBRAIC(:,22) - ALGEBRAIC(:,27))./CONSTANTS(:,29);
    ALGEBRAIC(:,31) =  CONSTANTS(:,35).*(STATES(:,9) - CONSTANTS(:,34));
    ALGEBRAIC(:,32) = (ALGEBRAIC(:,27) - ALGEBRAIC(:,31))./CONSTANTS(:,32);
    ALGEBRAIC(:,35) =  CONSTANTS(:,45).*(STATES(:,11) - CONSTANTS(:,44));
    ALGEBRAIC(:,36) = (ALGEBRAIC(:,27) - ALGEBRAIC(:,35))./CONSTANTS(:,33);
    RATES(:,8) = (ALGEBRAIC(:,29) - ALGEBRAIC(:,32)) - ALGEBRAIC(:,36);
    ALGEBRAIC(:,37) = (ALGEBRAIC(:,31) - ALGEBRAIC(:,35))./CONSTANTS(:,37);
    ALGEBRAIC(:,38) = (ALGEBRAIC(:,22) - ALGEBRAIC(:,35))./CONSTANTS(:,38);
    ALGEBRAIC(:,33) =  CONSTANTS(:,41).*(STATES(:,10) - CONSTANTS(:,40));
    ALGEBRAIC(:,39) = (ALGEBRAIC(:,33) - ALGEBRAIC(:,35))./CONSTANTS(:,43);
    ALGEBRAIC(:,40) = (ALGEBRAIC(:,35) - ALGEBRAIC(:,15))./CONSTANTS(:,46);
    RATES(:,11) = (ALGEBRAIC(:,37)+ALGEBRAIC(:,36)+ALGEBRAIC(:,38)+ALGEBRAIC(:,39)) - ALGEBRAIC(:,40);
    ALGEBRAIC(:,34) = (ALGEBRAIC(:,22) - ALGEBRAIC(:,33))./CONSTANTS(:,39);
    ALGEBRAIC(:,41) =  CONSTANTS(:,48).*(STATES(:,12) - CONSTANTS(:,47));
    ALGEBRAIC(:,42) = (ALGEBRAIC(:,33) - ALGEBRAIC(:,41))./CONSTANTS(:,42);
    RATES(:,10) = (ALGEBRAIC(:,34) - ALGEBRAIC(:,42)) - ALGEBRAIC(:,39);
    ALGEBRAIC(:,43) = (ALGEBRAIC(:,41) - ALGEBRAIC(:,15))./CONSTANTS(:,49);
    RATES(:,12) = ALGEBRAIC(:,42) - ALGEBRAIC(:,43);
    ALGEBRAIC(:,44) =  CONSTANTS(:,51).*(STATES(:,13) - CONSTANTS(:,50));
    ALGEBRAIC(:,45) = (ALGEBRAIC(:,31) - ALGEBRAIC(:,44))./CONSTANTS(:,36);
    RATES(:,9) = (ALGEBRAIC(:,32) - ALGEBRAIC(:,45)) - ALGEBRAIC(:,37);
    ALGEBRAIC(:,46) = (ALGEBRAIC(:,44) - ALGEBRAIC(:,15))./CONSTANTS(:,52);
    RATES(:,13) = ALGEBRAIC(:,45) - ALGEBRAIC(:,46);
    ALGEBRAIC(:,47) =  CONSTANTS(:,61).*(STATES(:,14) - CONSTANTS(:,53));
    ALGEBRAIC(:,55) = (ALGEBRAIC(:,22) - ALGEBRAIC(:,47))./CONSTANTS(:,69);
    RATES(:,7) = (((ALGEBRAIC(:,25) - ALGEBRAIC(:,55)) - ALGEBRAIC(:,29)) - ALGEBRAIC(:,38)) - ALGEBRAIC(:,34);
    ALGEBRAIC(:,48) =  CONSTANTS(:,62).*(STATES(:,15) - CONSTANTS(:,54));
    ALGEBRAIC(:,56) = (ALGEBRAIC(:,47) - ALGEBRAIC(:,48))./CONSTANTS(:,70);
    ALGEBRAIC(:,63) =  CONSTANTS(:,79).*(STATES(:,22) - CONSTANTS(:,78));
    ALGEBRAIC(:,64) = (ALGEBRAIC(:,47) - ALGEBRAIC(:,63))./CONSTANTS(:,77);
    RATES(:,14) = (ALGEBRAIC(:,55) - ALGEBRAIC(:,56)) - ALGEBRAIC(:,64);
    ALGEBRAIC(:,65) =  CONSTANTS(:,82).*(STATES(:,23) - CONSTANTS(:,81));
    ALGEBRAIC(:,66) = (ALGEBRAIC(:,63) - ALGEBRAIC(:,65))./CONSTANTS(:,80);
    RATES(:,22) = ALGEBRAIC(:,64) - ALGEBRAIC(:,66);
    ALGEBRAIC(:,49) =  CONSTANTS(:,63).*(STATES(:,16) - CONSTANTS(:,55));
    ALGEBRAIC(:,57) = (ALGEBRAIC(:,48) - ALGEBRAIC(:,49))./CONSTANTS(:,71);
    ALGEBRAIC(:,67) =  CONSTANTS(:,86).*(STATES(:,24) - CONSTANTS(:,85));
    ALGEBRAIC(:,68) = (ALGEBRAIC(:,48) - ALGEBRAIC(:,67))./CONSTANTS(:,84);
    RATES(:,15) = (ALGEBRAIC(:,56) - ALGEBRAIC(:,57)) - ALGEBRAIC(:,68);
    ALGEBRAIC(:,69) =  CONSTANTS(:,89).*(STATES(:,25) - CONSTANTS(:,88));
    ALGEBRAIC(:,70) = (ALGEBRAIC(:,67) - ALGEBRAIC(:,69))./CONSTANTS(:,87);
    RATES(:,24) = ALGEBRAIC(:,68) - ALGEBRAIC(:,70);
    ALGEBRAIC(:,50) =  CONSTANTS(:,64).*(STATES(:,17) - CONSTANTS(:,56));
    ALGEBRAIC(:,58) = (ALGEBRAIC(:,49) - ALGEBRAIC(:,50))./CONSTANTS(:,72);
    ALGEBRAIC(:,71) =  CONSTANTS(:,93).*(STATES(:,26) - CONSTANTS(:,92));
    ALGEBRAIC(:,72) = (ALGEBRAIC(:,49) - ALGEBRAIC(:,71))./CONSTANTS(:,91);
    RATES(:,16) = (ALGEBRAIC(:,57) - ALGEBRAIC(:,58)) - ALGEBRAIC(:,72);
    ALGEBRAIC(:,51) =  CONSTANTS(:,65).*(STATES(:,18) - CONSTANTS(:,57));
    ALGEBRAIC(:,59) = (ALGEBRAIC(:,50) - ALGEBRAIC(:,51))./CONSTANTS(:,73);
    ALGEBRAIC(:,73) =  CONSTANTS(:,97).*(STATES(:,27) - CONSTANTS(:,96));
    ALGEBRAIC(:,74) = (ALGEBRAIC(:,50) - ALGEBRAIC(:,73))./CONSTANTS(:,95);
    RATES(:,17) = (ALGEBRAIC(:,58) - ALGEBRAIC(:,59)) - ALGEBRAIC(:,74);
    ALGEBRAIC(:,52) =  CONSTANTS(:,66).*(STATES(:,19) - CONSTANTS(:,58));
    ALGEBRAIC(:,60) = (ALGEBRAIC(:,51) - ALGEBRAIC(:,52))./CONSTANTS(:,74);
    ALGEBRAIC(:,75) =  CONSTANTS(:,101).*(STATES(:,28) - CONSTANTS(:,100));
    ALGEBRAIC(:,76) = (ALGEBRAIC(:,51) - ALGEBRAIC(:,75))./CONSTANTS(:,99);
    RATES(:,18) = (ALGEBRAIC(:,59) - ALGEBRAIC(:,60)) - ALGEBRAIC(:,76);
    ALGEBRAIC(:,77) =  CONSTANTS(:,104).*(STATES(:,29) - CONSTANTS(:,103));
    ALGEBRAIC(:,78) = (ALGEBRAIC(:,75) - ALGEBRAIC(:,77))./CONSTANTS(:,102);
    RATES(:,28) = ALGEBRAIC(:,76) - ALGEBRAIC(:,78);
    ALGEBRAIC(:,53) =  CONSTANTS(:,67).*(STATES(:,20) - CONSTANTS(:,59));
    ALGEBRAIC(:,61) = (ALGEBRAIC(:,52) - ALGEBRAIC(:,53))./CONSTANTS(:,75);
    ALGEBRAIC(:,79) =  CONSTANTS(:,108).*(STATES(:,30) - CONSTANTS(:,107));
    ALGEBRAIC(:,80) = (ALGEBRAIC(:,52) - ALGEBRAIC(:,79))./CONSTANTS(:,106);
    RATES(:,19) = (ALGEBRAIC(:,60) - ALGEBRAIC(:,61)) - ALGEBRAIC(:,80);
    ALGEBRAIC(:,81) =  CONSTANTS(:,111).*(STATES(:,31) - CONSTANTS(:,110));
    ALGEBRAIC(:,82) = (ALGEBRAIC(:,79) - ALGEBRAIC(:,81))./CONSTANTS(:,109);
    RATES(:,30) = ALGEBRAIC(:,80) - ALGEBRAIC(:,82);
    ALGEBRAIC(:,54) =  CONSTANTS(:,68).*(STATES(:,21) - CONSTANTS(:,60));
    ALGEBRAIC(:,62) = (ALGEBRAIC(:,53) - ALGEBRAIC(:,54))./CONSTANTS(:,76);
    ALGEBRAIC(:,92) =  CONSTANTS(:,137).*(STATES(:,36) - CONSTANTS(:,136));
    ALGEBRAIC(:,93) = (ALGEBRAIC(:,53) - ALGEBRAIC(:,92))./CONSTANTS(:,113);
    RATES(:,20) = (ALGEBRAIC(:,61) - ALGEBRAIC(:,62)) - ALGEBRAIC(:,93);
    ALGEBRAIC(:,87) =  CONSTANTS(:,127).*(STATES(:,34) - CONSTANTS(:,126));
    ALGEBRAIC(:,89) = (ALGEBRAIC(:,73) - ALGEBRAIC(:,87))./CONSTANTS(:,125);
    ALGEBRAIC(:,90) =  CONSTANTS(:,132).*(STATES(:,35) - CONSTANTS(:,131));
    ALGEBRAIC(:,91) = (ALGEBRAIC(:,73) - ALGEBRAIC(:,90))./CONSTANTS(:,130);
    ALGEBRAIC(:,94) = (ALGEBRAIC(:,73) - ALGEBRAIC(:,92))./CONSTANTS(:,135);
    RATES(:,27) = ((ALGEBRAIC(:,74) - ALGEBRAIC(:,89)) - ALGEBRAIC(:,91)) - ALGEBRAIC(:,94);
    ALGEBRAIC(:,83) =  CONSTANTS(:,116).*(STATES(:,32) - CONSTANTS(:,115));
    ALGEBRAIC(:,84) = (ALGEBRAIC(:,71) - ALGEBRAIC(:,83))./CONSTANTS(:,114);
    ALGEBRAIC(:,95) =  CONSTANTS(:,141).*(STATES(:,37) - CONSTANTS(:,140));
    ALGEBRAIC(:,96) = (ALGEBRAIC(:,83) - ALGEBRAIC(:,95))./CONSTANTS(:,118);
    RATES(:,32) = ALGEBRAIC(:,84) - ALGEBRAIC(:,96);
    ALGEBRAIC(:,85) =  CONSTANTS(:,121).*(STATES(:,33) - CONSTANTS(:,120));
    ALGEBRAIC(:,86) = (ALGEBRAIC(:,71) - ALGEBRAIC(:,85))./CONSTANTS(:,119);
    ALGEBRAIC(:,97) = (ALGEBRAIC(:,85) - ALGEBRAIC(:,95))./CONSTANTS(:,123);
    RATES(:,33) = ALGEBRAIC(:,86) - ALGEBRAIC(:,97);
    ALGEBRAIC(:,88) = (ALGEBRAIC(:,71) - ALGEBRAIC(:,87))./CONSTANTS(:,124);
    ALGEBRAIC(:,98) = (ALGEBRAIC(:,87) - ALGEBRAIC(:,95))./CONSTANTS(:,129);
    RATES(:,34) = (ALGEBRAIC(:,88)+ALGEBRAIC(:,89)) - ALGEBRAIC(:,98);
    ALGEBRAIC(:,99) = (ALGEBRAIC(:,90) - ALGEBRAIC(:,95))./CONSTANTS(:,134);
    RATES(:,35) = ALGEBRAIC(:,91) - ALGEBRAIC(:,99);
    ALGEBRAIC(:,100) = (ALGEBRAIC(:,92) - ALGEBRAIC(:,95))./CONSTANTS(:,139);
    RATES(:,36) = (ALGEBRAIC(:,94)+ALGEBRAIC(:,93)) - ALGEBRAIC(:,100);
    ALGEBRAIC(:,101) =  CONSTANTS(:,146).*(STATES(:,38) - CONSTANTS(:,145));
    ALGEBRAIC(:,102) = (ALGEBRAIC(:,95) - ALGEBRAIC(:,101))./CONSTANTS(:,143);
    RATES(:,37) = (ALGEBRAIC(:,96)+ALGEBRAIC(:,97)+ALGEBRAIC(:,98)+ALGEBRAIC(:,99)+ALGEBRAIC(:,100)) - ALGEBRAIC(:,102);
    ALGEBRAIC(:,103) = (ALGEBRAIC(:,71) - ALGEBRAIC(:,101))./CONSTANTS(:,144);
    RATES(:,26) = (((ALGEBRAIC(:,72) - ALGEBRAIC(:,103)) - ALGEBRAIC(:,84)) - ALGEBRAIC(:,86)) - ALGEBRAIC(:,88);
    ALGEBRAIC(:,104) =  CONSTANTS(:,155).*(STATES(:,39) - CONSTANTS(:,149));
    ALGEBRAIC(:,105) = (ALGEBRAIC(:,65) - ALGEBRAIC(:,104))./CONSTANTS(:,83);
    RATES(:,23) = ALGEBRAIC(:,66) - ALGEBRAIC(:,105);
    ALGEBRAIC(:,106) =  CONSTANTS(:,156).*(STATES(:,40) - CONSTANTS(:,150));
    ALGEBRAIC(:,107) = (ALGEBRAIC(:,69) - ALGEBRAIC(:,106))./CONSTANTS(:,90);
    RATES(:,25) = ALGEBRAIC(:,70) - ALGEBRAIC(:,107);
    ALGEBRAIC(:,108) =  CONSTANTS(:,157).*(STATES(:,41) - CONSTANTS(:,151));
    ALGEBRAIC(:,109) = (ALGEBRAIC(:,101) - ALGEBRAIC(:,108))./CONSTANTS(:,148);
    RATES(:,38) = (ALGEBRAIC(:,103)+ALGEBRAIC(:,102)) - ALGEBRAIC(:,109);
    ALGEBRAIC(:,110) =  CONSTANTS(:,158).*(STATES(:,42) - CONSTANTS(:,152));
    ALGEBRAIC(:,111) = (ALGEBRAIC(:,77) - ALGEBRAIC(:,110))./CONSTANTS(:,105);
    RATES(:,29) = ALGEBRAIC(:,78) - ALGEBRAIC(:,111);
    ALGEBRAIC(:,112) =  CONSTANTS(:,159).*(STATES(:,43) - CONSTANTS(:,153));
    ALGEBRAIC(:,113) = (ALGEBRAIC(:,81) - ALGEBRAIC(:,112))./CONSTANTS(:,112);
    RATES(:,31) = ALGEBRAIC(:,82) - ALGEBRAIC(:,113);
    ALGEBRAIC(:,115) = (ALGEBRAIC(:,104) - ALGEBRAIC(:,15))./CONSTANTS(:,161);
    RATES(:,4) = (ALGEBRAIC(:,40)+ALGEBRAIC(:,43)+ALGEBRAIC(:,46)+ALGEBRAIC(:,115)) - ALGEBRAIC(:,17);
    ALGEBRAIC(:,116) = (ALGEBRAIC(:,106) - ALGEBRAIC(:,104))./CONSTANTS(:,162);
    RATES(:,39) = (ALGEBRAIC(:,116)+ALGEBRAIC(:,105)) - ALGEBRAIC(:,115);
    ALGEBRAIC(:,117) = (ALGEBRAIC(:,108) - ALGEBRAIC(:,106))./CONSTANTS(:,163);
    RATES(:,40) = (ALGEBRAIC(:,117)+ALGEBRAIC(:,107)) - ALGEBRAIC(:,116);
    ALGEBRAIC(:,118) = (ALGEBRAIC(:,110) - ALGEBRAIC(:,108))./CONSTANTS(:,164);
    RATES(:,41) = (ALGEBRAIC(:,118)+ALGEBRAIC(:,109)) - ALGEBRAIC(:,117);
    ALGEBRAIC(:,119) = (ALGEBRAIC(:,112) - ALGEBRAIC(:,110))./CONSTANTS(:,165);
    RATES(:,42) = (ALGEBRAIC(:,119)+ALGEBRAIC(:,111)) - ALGEBRAIC(:,118);
    ALGEBRAIC(:,114) =  CONSTANTS(:,160).*(STATES(:,44) - CONSTANTS(:,154));
    ALGEBRAIC(:,120) = (ALGEBRAIC(:,114) - ALGEBRAIC(:,112))./CONSTANTS(:,166);
    RATES(:,43) = (ALGEBRAIC(:,120)+ALGEBRAIC(:,113)) - ALGEBRAIC(:,119);
    ALGEBRAIC(:,121) =  CONSTANTS(:,169).*(STATES(:,45) - CONSTANTS(:,168));
    ALGEBRAIC(:,122) = (ALGEBRAIC(:,54) - ALGEBRAIC(:,121))./CONSTANTS(:,167);
    ALGEBRAIC(:,123) = (ALGEBRAIC(:,121) - ALGEBRAIC(:,114))./CONSTANTS(:,170);
    RATES(:,45) = ALGEBRAIC(:,122) - ALGEBRAIC(:,123);
    ALGEBRAIC(:,124) =  CONSTANTS(:,173).*(STATES(:,46) - CONSTANTS(:,172));
    ALGEBRAIC(:,125) = (ALGEBRAIC(:,54) - ALGEBRAIC(:,124))./CONSTANTS(:,171);
    RATES(:,21) = (ALGEBRAIC(:,62) - ALGEBRAIC(:,122)) - ALGEBRAIC(:,125);
    ALGEBRAIC(:,126) = (ALGEBRAIC(:,124) - ALGEBRAIC(:,114))./CONSTANTS(:,174);
    RATES(:,44) = (ALGEBRAIC(:,123)+ALGEBRAIC(:,126)) - ALGEBRAIC(:,120);
    RATES(:,46) = ALGEBRAIC(:,125) - ALGEBRAIC(:,126);
   RATES = RATES';
end

% Calculate algebraic variables
function ALGEBRAIC = computeAlgebraic(ALGEBRAIC, CONSTANTS, STATES, VOI)
    statesSize = size(STATES);
    statesColumnCount = statesSize(2);
    if ( statesColumnCount == 1)
        STATES = STATES';
        utilOnes = 1;
    else
        statesRowCount = statesSize(1);
        utilOnes = ones(statesRowCount, 1);
    end
    ALGEBRAIC(:,3) = VOI./CONSTANTS(:,4) - floor(VOI./CONSTANTS(:,4));
    ALGEBRAIC(:,5) = piecewise({ALGEBRAIC(:,3)<0.400000,  (( (CONSTANTS(:,8) - CONSTANTS(:,9)).*ALGEBRAIC(:,3))./CONSTANTS(:,6)).*exp( 0.500000.*(1.00000 - power(ALGEBRAIC(:,3)./CONSTANTS(:,6), 2.00000)))+CONSTANTS(:,9) , ALGEBRAIC(:,3)<0.600000,  (( (CONSTANTS(:,8) - CONSTANTS(:,9)).*0.400000)./CONSTANTS(:,6)).*exp( 0.500000.*(1.00000 - power(0.400000./CONSTANTS(:,6), 2.00000)))+CONSTANTS(:,9) }, CONSTANTS(:,9));
    ALGEBRAIC(:,7) =  ALGEBRAIC(:,5).*(STATES(:,1) - CONSTANTS(:,7));
    ALGEBRAIC(:,22) =  CONSTANTS(:,28).*(STATES(:,7) - CONSTANTS(:,27));
    ALGEBRAIC(:,25) = piecewise({ALGEBRAIC(:,7)>ALGEBRAIC(:,22), (ALGEBRAIC(:,7) - ALGEBRAIC(:,22))./CONSTANTS(:,17) }, 0.00000);
    ALGEBRAIC(:,13) =  CONSTANTS(:,14).*(STATES(:,3) - CONSTANTS(:,13));
    ALGEBRAIC(:,19) = piecewise({ALGEBRAIC(:,13)>ALGEBRAIC(:,7), (ALGEBRAIC(:,13) - ALGEBRAIC(:,7))./CONSTANTS(:,20) }, 0.00000);
    ALGEBRAIC(:,9) = piecewise({ALGEBRAIC(:,3)<0.400000,  (( (CONSTANTS(:,11) - CONSTANTS(:,12)).*ALGEBRAIC(:,3))./CONSTANTS(:,6)).*exp( 0.500000.*(1.00000 - power(ALGEBRAIC(:,3)./CONSTANTS(:,6), 2.00000)))+CONSTANTS(:,12) , ALGEBRAIC(:,3)<0.600000,  (( (CONSTANTS(:,11) - CONSTANTS(:,12)).*0.400000)./CONSTANTS(:,6)).*exp( 0.500000.*(1.00000 - power(0.400000./CONSTANTS(:,6), 2.00000)))+CONSTANTS(:,12) }, CONSTANTS(:,12));
    ALGEBRAIC(:,11) =  ALGEBRAIC(:,9).*(STATES(:,2) - CONSTANTS(:,10));
    ALGEBRAIC(:,21) =  CONSTANTS(:,22).*(STATES(:,5) - CONSTANTS(:,21));
    ALGEBRAIC(:,24) = piecewise({ALGEBRAIC(:,11)>ALGEBRAIC(:,21), (ALGEBRAIC(:,11) - ALGEBRAIC(:,21))./CONSTANTS(:,18) }, 0.00000);
    ALGEBRAIC(:,15) =  CONSTANTS(:,16).*(STATES(:,4) - CONSTANTS(:,15));
    ALGEBRAIC(:,17) = piecewise({ALGEBRAIC(:,15)>ALGEBRAIC(:,11), (ALGEBRAIC(:,15) - ALGEBRAIC(:,11))./CONSTANTS(:,19) }, 0.00000);
    ALGEBRAIC(:,26) =  CONSTANTS(:,25).*(STATES(:,6) - CONSTANTS(:,24));
    ALGEBRAIC(:,28) = (ALGEBRAIC(:,21) - ALGEBRAIC(:,26))./CONSTANTS(:,23);
    ALGEBRAIC(:,30) = (ALGEBRAIC(:,26) - ALGEBRAIC(:,13))./CONSTANTS(:,26);
    ALGEBRAIC(:,27) =  CONSTANTS(:,31).*(STATES(:,8) - CONSTANTS(:,30));
    ALGEBRAIC(:,29) = (ALGEBRAIC(:,22) - ALGEBRAIC(:,27))./CONSTANTS(:,29);
    ALGEBRAIC(:,31) =  CONSTANTS(:,35).*(STATES(:,9) - CONSTANTS(:,34));
    ALGEBRAIC(:,32) = (ALGEBRAIC(:,27) - ALGEBRAIC(:,31))./CONSTANTS(:,32);
    ALGEBRAIC(:,35) =  CONSTANTS(:,45).*(STATES(:,11) - CONSTANTS(:,44));
    ALGEBRAIC(:,36) = (ALGEBRAIC(:,27) - ALGEBRAIC(:,35))./CONSTANTS(:,33);
    ALGEBRAIC(:,37) = (ALGEBRAIC(:,31) - ALGEBRAIC(:,35))./CONSTANTS(:,37);
    ALGEBRAIC(:,38) = (ALGEBRAIC(:,22) - ALGEBRAIC(:,35))./CONSTANTS(:,38);
    ALGEBRAIC(:,33) =  CONSTANTS(:,41).*(STATES(:,10) - CONSTANTS(:,40));
    ALGEBRAIC(:,39) = (ALGEBRAIC(:,33) - ALGEBRAIC(:,35))./CONSTANTS(:,43);
    ALGEBRAIC(:,40) = (ALGEBRAIC(:,35) - ALGEBRAIC(:,15))./CONSTANTS(:,46);
    ALGEBRAIC(:,34) = (ALGEBRAIC(:,22) - ALGEBRAIC(:,33))./CONSTANTS(:,39);
    ALGEBRAIC(:,41) =  CONSTANTS(:,48).*(STATES(:,12) - CONSTANTS(:,47));
    ALGEBRAIC(:,42) = (ALGEBRAIC(:,33) - ALGEBRAIC(:,41))./CONSTANTS(:,42);
    ALGEBRAIC(:,43) = (ALGEBRAIC(:,41) - ALGEBRAIC(:,15))./CONSTANTS(:,49);
    ALGEBRAIC(:,44) =  CONSTANTS(:,51).*(STATES(:,13) - CONSTANTS(:,50));
    ALGEBRAIC(:,45) = (ALGEBRAIC(:,31) - ALGEBRAIC(:,44))./CONSTANTS(:,36);
    ALGEBRAIC(:,46) = (ALGEBRAIC(:,44) - ALGEBRAIC(:,15))./CONSTANTS(:,52);
    ALGEBRAIC(:,47) =  CONSTANTS(:,61).*(STATES(:,14) - CONSTANTS(:,53));
    ALGEBRAIC(:,55) = (ALGEBRAIC(:,22) - ALGEBRAIC(:,47))./CONSTANTS(:,69);
    ALGEBRAIC(:,48) =  CONSTANTS(:,62).*(STATES(:,15) - CONSTANTS(:,54));
    ALGEBRAIC(:,56) = (ALGEBRAIC(:,47) - ALGEBRAIC(:,48))./CONSTANTS(:,70);
    ALGEBRAIC(:,63) =  CONSTANTS(:,79).*(STATES(:,22) - CONSTANTS(:,78));
    ALGEBRAIC(:,64) = (ALGEBRAIC(:,47) - ALGEBRAIC(:,63))./CONSTANTS(:,77);
    ALGEBRAIC(:,65) =  CONSTANTS(:,82).*(STATES(:,23) - CONSTANTS(:,81));
    ALGEBRAIC(:,66) = (ALGEBRAIC(:,63) - ALGEBRAIC(:,65))./CONSTANTS(:,80);
    ALGEBRAIC(:,49) =  CONSTANTS(:,63).*(STATES(:,16) - CONSTANTS(:,55));
    ALGEBRAIC(:,57) = (ALGEBRAIC(:,48) - ALGEBRAIC(:,49))./CONSTANTS(:,71);
    ALGEBRAIC(:,67) =  CONSTANTS(:,86).*(STATES(:,24) - CONSTANTS(:,85));
    ALGEBRAIC(:,68) = (ALGEBRAIC(:,48) - ALGEBRAIC(:,67))./CONSTANTS(:,84);
    ALGEBRAIC(:,69) =  CONSTANTS(:,89).*(STATES(:,25) - CONSTANTS(:,88));
    ALGEBRAIC(:,70) = (ALGEBRAIC(:,67) - ALGEBRAIC(:,69))./CONSTANTS(:,87);
    ALGEBRAIC(:,50) =  CONSTANTS(:,64).*(STATES(:,17) - CONSTANTS(:,56));
    ALGEBRAIC(:,58) = (ALGEBRAIC(:,49) - ALGEBRAIC(:,50))./CONSTANTS(:,72);
    ALGEBRAIC(:,71) =  CONSTANTS(:,93).*(STATES(:,26) - CONSTANTS(:,92));
    ALGEBRAIC(:,72) = (ALGEBRAIC(:,49) - ALGEBRAIC(:,71))./CONSTANTS(:,91);
    ALGEBRAIC(:,51) =  CONSTANTS(:,65).*(STATES(:,18) - CONSTANTS(:,57));
    ALGEBRAIC(:,59) = (ALGEBRAIC(:,50) - ALGEBRAIC(:,51))./CONSTANTS(:,73);
    ALGEBRAIC(:,73) =  CONSTANTS(:,97).*(STATES(:,27) - CONSTANTS(:,96));
    ALGEBRAIC(:,74) = (ALGEBRAIC(:,50) - ALGEBRAIC(:,73))./CONSTANTS(:,95);
    ALGEBRAIC(:,52) =  CONSTANTS(:,66).*(STATES(:,19) - CONSTANTS(:,58));
    ALGEBRAIC(:,60) = (ALGEBRAIC(:,51) - ALGEBRAIC(:,52))./CONSTANTS(:,74);
    ALGEBRAIC(:,75) =  CONSTANTS(:,101).*(STATES(:,28) - CONSTANTS(:,100));
    ALGEBRAIC(:,76) = (ALGEBRAIC(:,51) - ALGEBRAIC(:,75))./CONSTANTS(:,99);
    ALGEBRAIC(:,77) =  CONSTANTS(:,104).*(STATES(:,29) - CONSTANTS(:,103));
    ALGEBRAIC(:,78) = (ALGEBRAIC(:,75) - ALGEBRAIC(:,77))./CONSTANTS(:,102);
    ALGEBRAIC(:,53) =  CONSTANTS(:,67).*(STATES(:,20) - CONSTANTS(:,59));
    ALGEBRAIC(:,61) = (ALGEBRAIC(:,52) - ALGEBRAIC(:,53))./CONSTANTS(:,75);
    ALGEBRAIC(:,79) =  CONSTANTS(:,108).*(STATES(:,30) - CONSTANTS(:,107));
    ALGEBRAIC(:,80) = (ALGEBRAIC(:,52) - ALGEBRAIC(:,79))./CONSTANTS(:,106);
    ALGEBRAIC(:,81) =  CONSTANTS(:,111).*(STATES(:,31) - CONSTANTS(:,110));
    ALGEBRAIC(:,82) = (ALGEBRAIC(:,79) - ALGEBRAIC(:,81))./CONSTANTS(:,109);
    ALGEBRAIC(:,54) =  CONSTANTS(:,68).*(STATES(:,21) - CONSTANTS(:,60));
    ALGEBRAIC(:,62) = (ALGEBRAIC(:,53) - ALGEBRAIC(:,54))./CONSTANTS(:,76);
    ALGEBRAIC(:,92) =  CONSTANTS(:,137).*(STATES(:,36) - CONSTANTS(:,136));
    ALGEBRAIC(:,93) = (ALGEBRAIC(:,53) - ALGEBRAIC(:,92))./CONSTANTS(:,113);
    ALGEBRAIC(:,87) =  CONSTANTS(:,127).*(STATES(:,34) - CONSTANTS(:,126));
    ALGEBRAIC(:,89) = (ALGEBRAIC(:,73) - ALGEBRAIC(:,87))./CONSTANTS(:,125);
    ALGEBRAIC(:,90) =  CONSTANTS(:,132).*(STATES(:,35) - CONSTANTS(:,131));
    ALGEBRAIC(:,91) = (ALGEBRAIC(:,73) - ALGEBRAIC(:,90))./CONSTANTS(:,130);
    ALGEBRAIC(:,94) = (ALGEBRAIC(:,73) - ALGEBRAIC(:,92))./CONSTANTS(:,135);
    ALGEBRAIC(:,83) =  CONSTANTS(:,116).*(STATES(:,32) - CONSTANTS(:,115));
    ALGEBRAIC(:,84) = (ALGEBRAIC(:,71) - ALGEBRAIC(:,83))./CONSTANTS(:,114);
    ALGEBRAIC(:,95) =  CONSTANTS(:,141).*(STATES(:,37) - CONSTANTS(:,140));
    ALGEBRAIC(:,96) = (ALGEBRAIC(:,83) - ALGEBRAIC(:,95))./CONSTANTS(:,118);
    ALGEBRAIC(:,85) =  CONSTANTS(:,121).*(STATES(:,33) - CONSTANTS(:,120));
    ALGEBRAIC(:,86) = (ALGEBRAIC(:,71) - ALGEBRAIC(:,85))./CONSTANTS(:,119);
    ALGEBRAIC(:,97) = (ALGEBRAIC(:,85) - ALGEBRAIC(:,95))./CONSTANTS(:,123);
    ALGEBRAIC(:,88) = (ALGEBRAIC(:,71) - ALGEBRAIC(:,87))./CONSTANTS(:,124);
    ALGEBRAIC(:,98) = (ALGEBRAIC(:,87) - ALGEBRAIC(:,95))./CONSTANTS(:,129);
    ALGEBRAIC(:,99) = (ALGEBRAIC(:,90) - ALGEBRAIC(:,95))./CONSTANTS(:,134);
    ALGEBRAIC(:,100) = (ALGEBRAIC(:,92) - ALGEBRAIC(:,95))./CONSTANTS(:,139);
    ALGEBRAIC(:,101) =  CONSTANTS(:,146).*(STATES(:,38) - CONSTANTS(:,145));
    ALGEBRAIC(:,102) = (ALGEBRAIC(:,95) - ALGEBRAIC(:,101))./CONSTANTS(:,143);
    ALGEBRAIC(:,103) = (ALGEBRAIC(:,71) - ALGEBRAIC(:,101))./CONSTANTS(:,144);
    ALGEBRAIC(:,104) =  CONSTANTS(:,155).*(STATES(:,39) - CONSTANTS(:,149));
    ALGEBRAIC(:,105) = (ALGEBRAIC(:,65) - ALGEBRAIC(:,104))./CONSTANTS(:,83);
    ALGEBRAIC(:,106) =  CONSTANTS(:,156).*(STATES(:,40) - CONSTANTS(:,150));
    ALGEBRAIC(:,107) = (ALGEBRAIC(:,69) - ALGEBRAIC(:,106))./CONSTANTS(:,90);
    ALGEBRAIC(:,108) =  CONSTANTS(:,157).*(STATES(:,41) - CONSTANTS(:,151));
    ALGEBRAIC(:,109) = (ALGEBRAIC(:,101) - ALGEBRAIC(:,108))./CONSTANTS(:,148);
    ALGEBRAIC(:,110) =  CONSTANTS(:,158).*(STATES(:,42) - CONSTANTS(:,152));
    ALGEBRAIC(:,111) = (ALGEBRAIC(:,77) - ALGEBRAIC(:,110))./CONSTANTS(:,105);
    ALGEBRAIC(:,112) =  CONSTANTS(:,159).*(STATES(:,43) - CONSTANTS(:,153));
    ALGEBRAIC(:,113) = (ALGEBRAIC(:,81) - ALGEBRAIC(:,112))./CONSTANTS(:,112);
    ALGEBRAIC(:,115) = (ALGEBRAIC(:,104) - ALGEBRAIC(:,15))./CONSTANTS(:,161);
    ALGEBRAIC(:,116) = (ALGEBRAIC(:,106) - ALGEBRAIC(:,104))./CONSTANTS(:,162);
    ALGEBRAIC(:,117) = (ALGEBRAIC(:,108) - ALGEBRAIC(:,106))./CONSTANTS(:,163);
    ALGEBRAIC(:,118) = (ALGEBRAIC(:,110) - ALGEBRAIC(:,108))./CONSTANTS(:,164);
    ALGEBRAIC(:,119) = (ALGEBRAIC(:,112) - ALGEBRAIC(:,110))./CONSTANTS(:,165);
    ALGEBRAIC(:,114) =  CONSTANTS(:,160).*(STATES(:,44) - CONSTANTS(:,154));
    ALGEBRAIC(:,120) = (ALGEBRAIC(:,114) - ALGEBRAIC(:,112))./CONSTANTS(:,166);
    ALGEBRAIC(:,121) =  CONSTANTS(:,169).*(STATES(:,45) - CONSTANTS(:,168));
    ALGEBRAIC(:,122) = (ALGEBRAIC(:,54) - ALGEBRAIC(:,121))./CONSTANTS(:,167);
    ALGEBRAIC(:,123) = (ALGEBRAIC(:,121) - ALGEBRAIC(:,114))./CONSTANTS(:,170);
    ALGEBRAIC(:,124) =  CONSTANTS(:,173).*(STATES(:,46) - CONSTANTS(:,172));
    ALGEBRAIC(:,125) = (ALGEBRAIC(:,54) - ALGEBRAIC(:,124))./CONSTANTS(:,171);
    ALGEBRAIC(:,126) = (ALGEBRAIC(:,124) - ALGEBRAIC(:,114))./CONSTANTS(:,174);
    ALGEBRAIC(:,1) = piecewise({VOI>100.000&VOI<101.000, 1.00000 }, 0.00000);
    ALGEBRAIC(:,2) = (VOI./CONSTANTS(:,4) - CONSTANTS(:,5)) - floor((VOI -  CONSTANTS(:,5).*CONSTANTS(:,4))./CONSTANTS(:,4));
    ALGEBRAIC(:,4) = STATES(:,4)+STATES(:,2)+STATES(:,3)+STATES(:,1);
    ALGEBRAIC(:,6) = STATES(:,6)+STATES(:,5);
    ALGEBRAIC(:,8) = STATES(:,8)+STATES(:,9)+STATES(:,10)+STATES(:,11);
    ALGEBRAIC(:,10) = STATES(:,22)+STATES(:,23)+STATES(:,24)+STATES(:,25);
    ALGEBRAIC(:,12) = STATES(:,7)+STATES(:,14)+STATES(:,15)+STATES(:,16)+STATES(:,17)+STATES(:,18)+STATES(:,19)+STATES(:,20)+STATES(:,21);
    ALGEBRAIC(:,14) = STATES(:,28)+STATES(:,29)+STATES(:,30)+STATES(:,31);
    ALGEBRAIC(:,16) = STATES(:,26)+STATES(:,27)+STATES(:,32)+STATES(:,33)+STATES(:,34)+STATES(:,35)+STATES(:,36)+STATES(:,37)+STATES(:,38);
    ALGEBRAIC(:,18) = STATES(:,39)+STATES(:,40)+STATES(:,41)+STATES(:,42)+STATES(:,43)+STATES(:,44);
    ALGEBRAIC(:,20) = STATES(:,12)+STATES(:,13)+STATES(:,45)+STATES(:,46);
    ALGEBRAIC(:,23) = ALGEBRAIC(:,4)+ALGEBRAIC(:,6)+(ALGEBRAIC(:,8))+ALGEBRAIC(:,10)+ALGEBRAIC(:,12)+ALGEBRAIC(:,14)+ALGEBRAIC(:,16)+ALGEBRAIC(:,18)+ALGEBRAIC(:,20);
end

% Compute result of a piecewise function
function x = piecewise(cases, default)
    set = [0];
    for i = 1:2:length(cases)
        if (length(cases{i+1}) == 1)
            x(cases{i} & ~set,:) = cases{i+1};
        else
            x(cases{i} & ~set,:) = cases{i+1}(cases{i} & ~set);
        end
        set = set | cases{i};
        if(set), break, end
    end
    if (length(default) == 1)
        x(~set,:) = default;
    else
        x(~set,:) = default(~set);
    end
end

% Pad out or shorten strings to a set length
function strout = strpad(strin)
    req_length = 160;
    insize = size(strin,2);
    if insize > req_length
        strout = strin(1:req_length);
    else
        strout = [strin, blanks(req_length - insize)];
    end
end

Source
Derived from workspace Bond graph CVS model at changeset 88a66c92c029.
Collaboration
To begin collaborating on this work, please use your git client and issue this command:
License
The terms of use/license for this work is unspecified.