/* There are a total of 22 entries in the algebraic variable array. There are a total of 13 entries in each of the rate and state variable arrays. There are a total of 67 entries in the constant variable array. */ /* * VOI is time in component environment (second). * STATES[0] is GlcI in component GlcI (millimolar). * ALGEBRAIC[5] is vHK in component vHK (flux). * ALGEBRAIC[4] is vGlcTr in component vGlcTr (flux). * STATES[1] is hexose_P in component hexose_P (millimolar). * ALGEBRAIC[6] is vPFK in component vPFK (flux). * STATES[2] is Fru16BP in component Fru16BP (millimolar). * ALGEBRAIC[14] is vALD in component vALD (flux). * STATES[3] is triose_P in component triose_P (millimolar). * ALGEBRAIC[16] is vGAPDH in component vGAPDH (flux). * ALGEBRAIC[17] is vGDH in component vGDH (flux). * ALGEBRAIC[8] is vGPO in component vGPO (flux). * STATES[4] is BPGA13 in component BPGA13 (millimolar). * ALGEBRAIC[20] is vPGK in component vPGK (flux). * STATES[5] is N in component N (millimolar). * ALGEBRAIC[21] is vPK in component vPK (flux). * STATES[6] is Pyr in component Pyr (millimolar). * ALGEBRAIC[9] is vPyrTr in component vPyrTr (flux). * STATES[7] is NADH in component NADH (millimolar). * STATES[8] is NAD in component NAD (millimolar). * STATES[9] is Gly3P in component Gly3P (millimolar). * ALGEBRAIC[11] is vGlyK in component vGlyK (flux). * STATES[10] is Gly in component Gly (millimolar). * STATES[11] is P in component P (millimolar). * ALGEBRAIC[10] is vATPase in component vATPase (flux). * ALGEBRAIC[0] is ATP in component ATP (millimolar). * CONSTANTS[0] is sumA in component ATP (millimolar). * CONSTANTS[1] is Keq_AK in component ATP (dimensionless). * ALGEBRAIC[1] is ADP in component ADP (millimolar). * ALGEBRAIC[12] is DHAP in component DHAP (millimolar). * ALGEBRAIC[3] is Fru6P in component Fru6P (millimolar). * ALGEBRAIC[13] is GAP in component GAP (millimolar). * STATES[12] is Glc6P in component Glc6P (millimolar). * CONSTANTS[2] is sumc4 in component DHAP (millimolar). * CONSTANTS[3] is sumc5 in component DHAP (millimolar). * ALGEBRAIC[2] is GlcE in component GlcE (millimolar). * ALGEBRAIC[7] is vPGI in component vPGI (flux). * ALGEBRAIC[18] is PGA3 in component PGA3 (millimolar). * ALGEBRAIC[19] is PEP in component PEP (millimolar). * CONSTANTS[4] is Keq_ENO in component PEP (dimensionless). * CONSTANTS[5] is Keq_PGM in component PEP (dimensionless). * CONSTANTS[6] is K_Glc in component vGlcTr (millimolar). * CONSTANTS[7] is alpha in component vGlcTr (dimensionless). * CONSTANTS[8] is vGlcTr_max in component vGlcTr (flux). * CONSTANTS[9] is K_GlcI in component vHK (millimolar). * CONSTANTS[10] is K_Glc6P in component vHK (millimolar). * CONSTANTS[11] is K_ATP in component vHK (millimolar). * CONSTANTS[12] is K_ADP in component vHK (millimolar). * CONSTANTS[13] is vHK_max in component vHK (flux). * CONSTANTS[14] is K_Glc6P in component vPGI (millimolar). * CONSTANTS[15] is K_Fru6P in component vPGI (millimolar). * CONSTANTS[16] is vPGI_max in component vPGI (flux). * CONSTANTS[17] is Ki_1 in component vPFK (millimolar). * CONSTANTS[18] is Ki_2 in component vPFK (millimolar). * CONSTANTS[19] is KM_Fru6P in component vPFK (millimolar). * CONSTANTS[20] is KM_ATP in component vPFK (millimolar). * CONSTANTS[21] is vPFK_max in component vPFK (flux). * CONSTANTS[22] is sumA in component vALD (millimolar). * CONSTANTS[23] is KM_GAP in component vALD (millimolar). * CONSTANTS[24] is Ki_GAP in component vALD (millimolar). * CONSTANTS[25] is KM_DHAP in component vALD (millimolar). * CONSTANTS[26] is vALD_max_forward in component vALD (flux). * CONSTANTS[27] is vALD_max_reverse in component vALD (flux). * ALGEBRAIC[15] is vTPI in component vTPI (flux). * CONSTANTS[28] is K_DHAP in component vTPI (millimolar). * CONSTANTS[29] is K_GAP in component vTPI (millimolar). * CONSTANTS[30] is vTPI_max in component vTPI (flux). * CONSTANTS[31] is K_NAD in component vGAPDH (millimolar). * CONSTANTS[32] is K_GAP in component vGAPDH (millimolar). * CONSTANTS[33] is K_BPGA13 in component vGAPDH (millimolar). * CONSTANTS[34] is K_NADH in component vGAPDH (millimolar). * CONSTANTS[35] is vGAPDH_max_forward in component vGAPDH (flux). * CONSTANTS[36] is vGAPDH_max_reverse in component vGAPDH (flux). * CONSTANTS[37] is vGAPDH_max in component vGAPDH (dimensionless). * CONSTANTS[38] is K_NADH in component vGDH (millimolar). * CONSTANTS[39] is K_Gly3P in component vGDH (millimolar). * CONSTANTS[40] is K_DHAP in component vGDH (millimolar). * CONSTANTS[41] is K_NAD in component vGDH (millimolar). * CONSTANTS[42] is vGDH_max_forward in component vGDH (flux). * CONSTANTS[43] is vGDH_max_reverse in component vGDH (flux). * CONSTANTS[44] is vGDH_max in component vGDH (dimensionless). * CONSTANTS[45] is K_Gly3P in component vGPO (millimolar). * CONSTANTS[46] is vGPO_max in component vGPO (flux). * CONSTANTS[47] is K_pyruvate in component vPyrTr (millimolar). * CONSTANTS[48] is vPyrTr_max in component vPyrTr (flux). * CONSTANTS[49] is K_ADP in component vPGK (millimolar). * CONSTANTS[50] is K_BPGA13 in component vPGK (millimolar). * CONSTANTS[51] is K_PGA3 in component vPGK (millimolar). * CONSTANTS[52] is K_ATP in component vPGK (millimolar). * CONSTANTS[53] is vPGK_max_forward in component vPGK (flux). * CONSTANTS[54] is vPGK_max_reverse in component vPGK (flux). * CONSTANTS[55] is vPGK_max in component vPGK (dimensionless). * CONSTANTS[56] is KM_ADP in component vPK (millimolar). * CONSTANTS[57] is n in component vPK (dimensionless). * CONSTANTS[58] is vPK_max in component vPK (flux). * CONSTANTS[59] is k in component vATPase (flux). * CONSTANTS[60] is K_ADP in component vGlyK (millimolar). * CONSTANTS[61] is K_Gly3P in component vGlyK (millimolar). * CONSTANTS[62] is K_Gly in component vGlyK (millimolar). * CONSTANTS[63] is K_ATP in component vGlyK (millimolar). * CONSTANTS[64] is vGlyK_max_forward in component vGlyK (flux). * CONSTANTS[65] is vGlyK_max_reverse in component vGlyK (flux). * CONSTANTS[66] is vGlyK_max in component vGlyK (dimensionless). * RATES[0] is d/dt GlcI in component GlcI (millimolar). * RATES[1] is d/dt hexose_P in component hexose_P (millimolar). * RATES[2] is d/dt Fru16BP in component Fru16BP (millimolar). * RATES[3] is d/dt triose_P in component triose_P (millimolar). * RATES[4] is d/dt BPGA13 in component BPGA13 (millimolar). * RATES[5] is d/dt N in component N (millimolar). * RATES[6] is d/dt Pyr in component Pyr (millimolar). * RATES[7] is d/dt NADH in component NADH (millimolar). * RATES[8] is d/dt NAD in component NAD (millimolar). * RATES[9] is d/dt Gly3P in component Gly3P (millimolar). * RATES[10] is d/dt Gly in component Gly (millimolar). * RATES[11] is d/dt P in component P (millimolar). * RATES[12] is d/dt Glc6P in component Glc6P (millimolar). */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { STATES[0] = 0.0340009; STATES[1] = 2.583763; STATES[2] = 16.5371; STATES[3] = 3.9391429; STATES[4] = 0.0326745; STATES[5] = 1.59603; STATES[6] = 4.77413; STATES[7] = 0.0448639; STATES[8] = 0.0448639; STATES[9] = 0.0; STATES[10] = 0.0; STATES[11] = 7.63936; CONSTANTS[0] = 3.9; CONSTANTS[1] = 0.442; STATES[12] = 2.07199; CONSTANTS[2] = 45.0; CONSTANTS[3] = 5.0; CONSTANTS[4] = 6.7; CONSTANTS[5] = 0.187; CONSTANTS[6] = 2.0; CONSTANTS[7] = 0.75; CONSTANTS[8] = 106.2; CONSTANTS[9] = 0.1; CONSTANTS[10] = 12.0; CONSTANTS[11] = 0.116; CONSTANTS[12] = 0.126; CONSTANTS[13] = 625.0; CONSTANTS[14] = 0.4; CONSTANTS[15] = 0.12; CONSTANTS[16] = 848.0; CONSTANTS[17] = 15.8; CONSTANTS[18] = 10.7; CONSTANTS[19] = 0.82; CONSTANTS[20] = 0.026; CONSTANTS[21] = 780.0; CONSTANTS[22] = 6.0; CONSTANTS[23] = 0.067; CONSTANTS[24] = 0.098; CONSTANTS[25] = 0.015; CONSTANTS[26] = 184.5; CONSTANTS[27] = 219.555; CONSTANTS[28] = 1.2; CONSTANTS[29] = 0.25; CONSTANTS[30] = 842.0; CONSTANTS[31] = 0.45; CONSTANTS[32] = 0.15; CONSTANTS[33] = 0.1; CONSTANTS[34] = 0.02; CONSTANTS[35] = 1470.0; CONSTANTS[36] = 984.9; CONSTANTS[37] = 1.0; CONSTANTS[38] = 0.01; CONSTANTS[39] = 2.0; CONSTANTS[40] = 0.1; CONSTANTS[41] = 0.4; CONSTANTS[42] = 533.0; CONSTANTS[43] = 149.24; CONSTANTS[44] = 1.0; CONSTANTS[45] = 1.7; CONSTANTS[46] = 368.0; CONSTANTS[47] = 1.96; CONSTANTS[48] = 200.0; CONSTANTS[49] = 0.1; CONSTANTS[50] = 0.05; CONSTANTS[51] = 1.62; CONSTANTS[52] = 0.29; CONSTANTS[53] = 640.0; CONSTANTS[54] = 18.56; CONSTANTS[55] = 1.0; CONSTANTS[56] = 0.114; CONSTANTS[57] = 2.5; CONSTANTS[58] = 2600; CONSTANTS[59] = 50; CONSTANTS[60] = 0.12; CONSTANTS[61] = 5.1; CONSTANTS[62] = 0.12; CONSTANTS[63] = 0.19; CONSTANTS[64] = 220.0; CONSTANTS[65] = 334000.0; CONSTANTS[66] = 1.0; } void computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[0] = (( STATES[11]*(1.00000 - 4.00000*CONSTANTS[1]) - CONSTANTS[0])+pow(pow(CONSTANTS[0] - (1.00000 - 4.00000*CONSTANTS[1])*STATES[11], 2.00000)+ 4.00000*(1.00000 - 4.00000*CONSTANTS[1])*( - CONSTANTS[1]*pow(STATES[11], 2.00000)), 0.500000))/( 2.00000*(1.00000 - 4.00000*CONSTANTS[1])); ALGEBRAIC[1] = STATES[11] - 2.00000*ALGEBRAIC[0]; ALGEBRAIC[5] = ( CONSTANTS[13]*STATES[0]*ALGEBRAIC[0])/( CONSTANTS[11]*CONSTANTS[9]*(1.00000+STATES[12]/CONSTANTS[10]+STATES[0]/CONSTANTS[9])*(1.00000+ALGEBRAIC[0]/CONSTANTS[11]+ALGEBRAIC[1]/CONSTANTS[12])); ALGEBRAIC[2] = (VOI>=60.0000&&VOI<61.0000 ? 5.00000 : 0.0500000); ALGEBRAIC[4] = CONSTANTS[8]*((ALGEBRAIC[2] - STATES[0])/(CONSTANTS[6]+ALGEBRAIC[2]+STATES[0]+ CONSTANTS[7]*ALGEBRAIC[2]*(STATES[0]/CONSTANTS[6]))); RATES[0] = ALGEBRAIC[4] - ALGEBRAIC[5]; ALGEBRAIC[3] = STATES[1] - STATES[12]; ALGEBRAIC[6] = ( CONSTANTS[17]*CONSTANTS[21]*ALGEBRAIC[3]*ALGEBRAIC[0])/( CONSTANTS[20]*CONSTANTS[19]*(STATES[2]+CONSTANTS[17])*(1.00000+STATES[2]/CONSTANTS[18]+ALGEBRAIC[3]/CONSTANTS[19])*(1.00000+ALGEBRAIC[0]/CONSTANTS[20])); RATES[1] = ALGEBRAIC[5] - ALGEBRAIC[6]; ALGEBRAIC[7] = ( CONSTANTS[16]*(STATES[12]/CONSTANTS[14] - ALGEBRAIC[3]/CONSTANTS[15]))/(1.00000+STATES[12]/CONSTANTS[14]+ALGEBRAIC[3]/CONSTANTS[15]); RATES[12] = ALGEBRAIC[5] - ALGEBRAIC[7]; ALGEBRAIC[11] = ( CONSTANTS[66]*(( CONSTANTS[64]*ALGEBRAIC[1]*STATES[9])/( CONSTANTS[60]*CONSTANTS[61]) - ( CONSTANTS[65]*ALGEBRAIC[0]*STATES[10])/( CONSTANTS[63]*CONSTANTS[62])))/( (1.00000+STATES[9]/CONSTANTS[61]+STATES[10]/CONSTANTS[62])*(1.00000+ALGEBRAIC[1]/CONSTANTS[60]+ALGEBRAIC[0]/CONSTANTS[63])); RATES[10] = ALGEBRAIC[11]; rootfind_0(VOI, CONSTANTS, RATES, STATES, ALGEBRAIC, pret); ALGEBRAIC[14] = (( CONSTANTS[26]*STATES[2])/( 0.00900000*(1.00000+ALGEBRAIC[0]/0.680000+ALGEBRAIC[1]/1.51000+(CONSTANTS[22] - (ALGEBRAIC[0]+ALGEBRAIC[1]))/3.65000)) - ( CONSTANTS[27]*ALGEBRAIC[13]*ALGEBRAIC[12])/( CONSTANTS[25]*CONSTANTS[23]))/(1.00000+ALGEBRAIC[13]/CONSTANTS[23]+ALGEBRAIC[12]/CONSTANTS[25]+( ALGEBRAIC[13]*ALGEBRAIC[12])/( CONSTANTS[25]*CONSTANTS[23])+STATES[2]/( 0.00900000*(1.00000+ALGEBRAIC[0]/0.680000+ALGEBRAIC[1]/1.51000+(CONSTANTS[22] - (ALGEBRAIC[0]+ALGEBRAIC[1]))/3.65000))+( STATES[2]*ALGEBRAIC[13])/( CONSTANTS[24]*0.00900000*(1.00000+ALGEBRAIC[0]/0.680000+ALGEBRAIC[1]/1.51000+(CONSTANTS[22] - (ALGEBRAIC[0]+ALGEBRAIC[1]))/3.65000))); RATES[2] = ALGEBRAIC[6] - ALGEBRAIC[14]; ALGEBRAIC[16] = CONSTANTS[37]*(( CONSTANTS[35]*( ALGEBRAIC[13]*((STATES[8]/CONSTANTS[32])/CONSTANTS[31]) - (CONSTANTS[36]/CONSTANTS[35])*((( STATES[4]*STATES[7])/CONSTANTS[33])/CONSTANTS[34])))/( (1.00000+ALGEBRAIC[13]/CONSTANTS[32]+STATES[4]/CONSTANTS[33])*(1.00000+STATES[8]/CONSTANTS[31]+STATES[7]/CONSTANTS[34]))); ALGEBRAIC[17] = ( CONSTANTS[44]*CONSTANTS[42]*(( STATES[7]*ALGEBRAIC[12])/( CONSTANTS[38]*CONSTANTS[40]) - ( CONSTANTS[43]*STATES[8]*STATES[9])/( CONSTANTS[39]*CONSTANTS[41]*CONSTANTS[42])))/( (1.00000+STATES[8]/CONSTANTS[41]+STATES[7]/CONSTANTS[38])*(1.00000+ALGEBRAIC[12]/CONSTANTS[40]+STATES[9]/CONSTANTS[39])); ALGEBRAIC[8] = ( CONSTANTS[46]*STATES[9])/(STATES[9]+CONSTANTS[45]); RATES[3] = ( 2.00000*ALGEBRAIC[14]+ALGEBRAIC[8]) - (ALGEBRAIC[16]+ALGEBRAIC[17]); RATES[7] = ALGEBRAIC[16] - ALGEBRAIC[17]; RATES[8] = ALGEBRAIC[17] - ALGEBRAIC[16]; RATES[9] = ALGEBRAIC[17] - (ALGEBRAIC[11]+ALGEBRAIC[8]); rootfind_1(VOI, CONSTANTS, RATES, STATES, ALGEBRAIC, pret); ALGEBRAIC[20] = ( CONSTANTS[55]*CONSTANTS[53]*(( - CONSTANTS[54]*ALGEBRAIC[18]*ALGEBRAIC[0])/( CONSTANTS[52]*CONSTANTS[51]*CONSTANTS[53])+( STATES[4]*ALGEBRAIC[1])/( CONSTANTS[50]*CONSTANTS[49])))/( (1.00000+STATES[4]/CONSTANTS[50]+ALGEBRAIC[18]/CONSTANTS[51])*(1.00000+ALGEBRAIC[1]/CONSTANTS[49]+ALGEBRAIC[0]/CONSTANTS[52])); RATES[4] = ALGEBRAIC[16] - ALGEBRAIC[20]; ALGEBRAIC[21] = (( CONSTANTS[58]*pow(ALGEBRAIC[19]/( 0.340000*(1.00000+ALGEBRAIC[0]/0.570000+ALGEBRAIC[1]/0.640000)), CONSTANTS[57])*ALGEBRAIC[1])/CONSTANTS[56])/( (1.00000+pow(ALGEBRAIC[19]/( 0.340000*(1.00000+ALGEBRAIC[0]/0.570000+ALGEBRAIC[1]/0.640000)), CONSTANTS[57]))*(1.00000+ALGEBRAIC[1]/CONSTANTS[56])); RATES[5] = ALGEBRAIC[20] - ALGEBRAIC[21]; ALGEBRAIC[9] = (( CONSTANTS[48]*STATES[6])/CONSTANTS[47])/(1.00000+STATES[6]/CONSTANTS[47]); RATES[6] = ALGEBRAIC[21] - ALGEBRAIC[9]; ALGEBRAIC[10] = ( CONSTANTS[59]*ALGEBRAIC[0])/ALGEBRAIC[1]; RATES[11] = (ALGEBRAIC[20]+ALGEBRAIC[11]+ALGEBRAIC[21]) - (ALGEBRAIC[5]+ALGEBRAIC[6]+ALGEBRAIC[10]); } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[0] = (( STATES[11]*(1.00000 - 4.00000*CONSTANTS[1]) - CONSTANTS[0])+pow(pow(CONSTANTS[0] - (1.00000 - 4.00000*CONSTANTS[1])*STATES[11], 2.00000)+ 4.00000*(1.00000 - 4.00000*CONSTANTS[1])*( - CONSTANTS[1]*pow(STATES[11], 2.00000)), 0.500000))/( 2.00000*(1.00000 - 4.00000*CONSTANTS[1])); ALGEBRAIC[1] = STATES[11] - 2.00000*ALGEBRAIC[0]; ALGEBRAIC[5] = ( CONSTANTS[13]*STATES[0]*ALGEBRAIC[0])/( CONSTANTS[11]*CONSTANTS[9]*(1.00000+STATES[12]/CONSTANTS[10]+STATES[0]/CONSTANTS[9])*(1.00000+ALGEBRAIC[0]/CONSTANTS[11]+ALGEBRAIC[1]/CONSTANTS[12])); ALGEBRAIC[2] = (VOI>=60.0000&&VOI<61.0000 ? 5.00000 : 0.0500000); ALGEBRAIC[4] = CONSTANTS[8]*((ALGEBRAIC[2] - STATES[0])/(CONSTANTS[6]+ALGEBRAIC[2]+STATES[0]+ CONSTANTS[7]*ALGEBRAIC[2]*(STATES[0]/CONSTANTS[6]))); ALGEBRAIC[3] = STATES[1] - STATES[12]; ALGEBRAIC[6] = ( CONSTANTS[17]*CONSTANTS[21]*ALGEBRAIC[3]*ALGEBRAIC[0])/( CONSTANTS[20]*CONSTANTS[19]*(STATES[2]+CONSTANTS[17])*(1.00000+STATES[2]/CONSTANTS[18]+ALGEBRAIC[3]/CONSTANTS[19])*(1.00000+ALGEBRAIC[0]/CONSTANTS[20])); ALGEBRAIC[7] = ( CONSTANTS[16]*(STATES[12]/CONSTANTS[14] - ALGEBRAIC[3]/CONSTANTS[15]))/(1.00000+STATES[12]/CONSTANTS[14]+ALGEBRAIC[3]/CONSTANTS[15]); ALGEBRAIC[11] = ( CONSTANTS[66]*(( CONSTANTS[64]*ALGEBRAIC[1]*STATES[9])/( CONSTANTS[60]*CONSTANTS[61]) - ( CONSTANTS[65]*ALGEBRAIC[0]*STATES[10])/( CONSTANTS[63]*CONSTANTS[62])))/( (1.00000+STATES[9]/CONSTANTS[61]+STATES[10]/CONSTANTS[62])*(1.00000+ALGEBRAIC[1]/CONSTANTS[60]+ALGEBRAIC[0]/CONSTANTS[63])); ALGEBRAIC[14] = (( CONSTANTS[26]*STATES[2])/( 0.00900000*(1.00000+ALGEBRAIC[0]/0.680000+ALGEBRAIC[1]/1.51000+(CONSTANTS[22] - (ALGEBRAIC[0]+ALGEBRAIC[1]))/3.65000)) - ( CONSTANTS[27]*ALGEBRAIC[13]*ALGEBRAIC[12])/( CONSTANTS[25]*CONSTANTS[23]))/(1.00000+ALGEBRAIC[13]/CONSTANTS[23]+ALGEBRAIC[12]/CONSTANTS[25]+( ALGEBRAIC[13]*ALGEBRAIC[12])/( CONSTANTS[25]*CONSTANTS[23])+STATES[2]/( 0.00900000*(1.00000+ALGEBRAIC[0]/0.680000+ALGEBRAIC[1]/1.51000+(CONSTANTS[22] - (ALGEBRAIC[0]+ALGEBRAIC[1]))/3.65000))+( STATES[2]*ALGEBRAIC[13])/( CONSTANTS[24]*0.00900000*(1.00000+ALGEBRAIC[0]/0.680000+ALGEBRAIC[1]/1.51000+(CONSTANTS[22] - (ALGEBRAIC[0]+ALGEBRAIC[1]))/3.65000))); ALGEBRAIC[16] = CONSTANTS[37]*(( CONSTANTS[35]*( ALGEBRAIC[13]*((STATES[8]/CONSTANTS[32])/CONSTANTS[31]) - (CONSTANTS[36]/CONSTANTS[35])*((( STATES[4]*STATES[7])/CONSTANTS[33])/CONSTANTS[34])))/( (1.00000+ALGEBRAIC[13]/CONSTANTS[32]+STATES[4]/CONSTANTS[33])*(1.00000+STATES[8]/CONSTANTS[31]+STATES[7]/CONSTANTS[34]))); ALGEBRAIC[17] = ( CONSTANTS[44]*CONSTANTS[42]*(( STATES[7]*ALGEBRAIC[12])/( CONSTANTS[38]*CONSTANTS[40]) - ( CONSTANTS[43]*STATES[8]*STATES[9])/( CONSTANTS[39]*CONSTANTS[41]*CONSTANTS[42])))/( (1.00000+STATES[8]/CONSTANTS[41]+STATES[7]/CONSTANTS[38])*(1.00000+ALGEBRAIC[12]/CONSTANTS[40]+STATES[9]/CONSTANTS[39])); ALGEBRAIC[8] = ( CONSTANTS[46]*STATES[9])/(STATES[9]+CONSTANTS[45]); ALGEBRAIC[20] = ( CONSTANTS[55]*CONSTANTS[53]*(( - CONSTANTS[54]*ALGEBRAIC[18]*ALGEBRAIC[0])/( CONSTANTS[52]*CONSTANTS[51]*CONSTANTS[53])+( STATES[4]*ALGEBRAIC[1])/( CONSTANTS[50]*CONSTANTS[49])))/( (1.00000+STATES[4]/CONSTANTS[50]+ALGEBRAIC[18]/CONSTANTS[51])*(1.00000+ALGEBRAIC[1]/CONSTANTS[49]+ALGEBRAIC[0]/CONSTANTS[52])); ALGEBRAIC[21] = (( CONSTANTS[58]*pow(ALGEBRAIC[19]/( 0.340000*(1.00000+ALGEBRAIC[0]/0.570000+ALGEBRAIC[1]/0.640000)), CONSTANTS[57])*ALGEBRAIC[1])/CONSTANTS[56])/( (1.00000+pow(ALGEBRAIC[19]/( 0.340000*(1.00000+ALGEBRAIC[0]/0.570000+ALGEBRAIC[1]/0.640000)), CONSTANTS[57]))*(1.00000+ALGEBRAIC[1]/CONSTANTS[56])); ALGEBRAIC[9] = (( CONSTANTS[48]*STATES[6])/CONSTANTS[47])/(1.00000+STATES[6]/CONSTANTS[47]); ALGEBRAIC[10] = ( CONSTANTS[59]*ALGEBRAIC[0])/ALGEBRAIC[1]; ALGEBRAIC[15] = ( CONSTANTS[30]*(ALGEBRAIC[12]/CONSTANTS[28] - ( 5.70000*ALGEBRAIC[13])/CONSTANTS[29]))/(1.00000+ALGEBRAIC[13]/CONSTANTS[29]+ALGEBRAIC[12]/CONSTANTS[28]); } void objfunc_0(double *p, double *hx, int m, int n, void *adata) { struct rootfind_info* rfi = (struct rootfind_info*)adata; #define VOI rfi->aVOI #define CONSTANTS rfi->aCONSTANTS #define RATES rfi->aRATES #define STATES rfi->aSTATES #define ALGEBRAIC rfi->aALGEBRAIC #define pret rfi->aPRET ALGEBRAIC[12] = p[0]; ALGEBRAIC[13] = p[1]; hx[0] = ALGEBRAIC[12] - ( CONSTANTS[3]*ALGEBRAIC[12])/((CONSTANTS[2]+CONSTANTS[3]) - (STATES[4]+ 2.00000*STATES[2]+ALGEBRAIC[3]+ALGEBRAIC[13]+STATES[12]+STATES[11])); hx[1] = ALGEBRAIC[13] - (STATES[3] - ALGEBRAIC[12]); #undef VOI #undef CONSTANTS #undef RATES #undef STATES #undef ALGEBRAIC #undef pret } void rootfind_0(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC, int* pret) { static double p[2] = {0.1,0.1}; double bp[2], work[LM_DIF_WORKSZ(2, 2)]; struct rootfind_info rfi; rfi.aVOI = VOI; rfi.aCONSTANTS = CONSTANTS; rfi.aRATES = RATES; rfi.aSTATES = STATES; rfi.aALGEBRAIC = ALGEBRAIC; rfi.aPRET = pret; do_levmar(objfunc_0, p, bp, work, pret, 2, &rfi); ALGEBRAIC[12] = p[0]; ALGEBRAIC[13] = p[1]; } void objfunc_1(double *p, double *hx, int m, int n, void *adata) { struct rootfind_info* rfi = (struct rootfind_info*)adata; #define VOI rfi->aVOI #define CONSTANTS rfi->aCONSTANTS #define RATES rfi->aRATES #define STATES rfi->aSTATES #define ALGEBRAIC rfi->aALGEBRAIC #define pret rfi->aPRET ALGEBRAIC[18] = p[0]; ALGEBRAIC[19] = p[1]; hx[0] = ALGEBRAIC[18] - (STATES[5] - ALGEBRAIC[19]); hx[1] = ALGEBRAIC[19] - CONSTANTS[4]*CONSTANTS[5]*ALGEBRAIC[18]; #undef VOI #undef CONSTANTS #undef RATES #undef STATES #undef ALGEBRAIC #undef pret } void rootfind_1(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC, int* pret) { static double p[2] = {0.1,0.1}; double bp[2], work[LM_DIF_WORKSZ(2, 2)]; struct rootfind_info rfi; rfi.aVOI = VOI; rfi.aCONSTANTS = CONSTANTS; rfi.aRATES = RATES; rfi.aSTATES = STATES; rfi.aALGEBRAIC = ALGEBRAIC; rfi.aPRET = pret; do_levmar(objfunc_1, p, bp, work, pret, 2, &rfi); ALGEBRAIC[18] = p[0]; ALGEBRAIC[19] = p[1]; }