/* There are a total of 34 entries in the algebraic variable array. There are a total of 15 entries in each of the rate and state variable arrays. There are a total of 59 entries in the constant variable array. */ /* * VOI is time in component environment (second). * ALGEBRAIC[0] is L_iso in component beta_1_adrenergic_parameters (uM). * CONSTANTS[0] is K_H in component beta_1_adrenergic_parameters (uM). * CONSTANTS[1] is K_L in component beta_1_adrenergic_parameters (uM). * CONSTANTS[2] is K_C in component beta_1_adrenergic_parameters (uM). * ALGEBRAIC[1] is L_ach in component muscarinic_parameters (uM). * CONSTANTS[3] is K_H in component muscarinic_parameters (uM). * CONSTANTS[4] is K_L in component muscarinic_parameters (uM). * CONSTANTS[5] is K_C in component muscarinic_parameters (uM). * CONSTANTS[6] is k_PDE2 in component PDE_parameters (per_sec). * CONSTANTS[7] is Km_PDE2 in component PDE_parameters (uM). * CONSTANTS[8] is k_PDE3 in component PDE_parameters (per_sec). * CONSTANTS[9] is Km_PDE3 in component PDE_parameters (uM). * CONSTANTS[10] is k_PDE4 in component PDE_parameters (per_sec). * CONSTANTS[11] is Km_PDE4 in component PDE_parameters (uM). * CONSTANTS[12] is k_act1 in component G_s_parameters (per_sec). * CONSTANTS[13] is k_act2 in component G_s_parameters (per_sec). * CONSTANTS[14] is k_hydr in component G_s_parameters (per_sec). * CONSTANTS[15] is k_reas in component G_s_parameters (per_uM_per_sec). * CONSTANTS[16] is k_act1 in component G_i_parameters (per_sec). * CONSTANTS[17] is k_act2 in component G_i_parameters (per_sec). * CONSTANTS[18] is k_hydr in component G_i_parameters (per_sec). * CONSTANTS[19] is k_reas in component G_i_parameters (per_uM_per_sec). * ALGEBRAIC[12] is R in component caveolar_beta_1_adrenergic_receptor_module (uM). * ALGEBRAIC[13] is LR in component caveolar_beta_1_adrenergic_receptor_module (uM). * ALGEBRAIC[14] is LRG in component caveolar_beta_1_adrenergic_receptor_module (uM). * ALGEBRAIC[15] is RG in component caveolar_beta_1_adrenergic_receptor_module (uM). * CONSTANTS[20] is R_Total in component caveolar_beta_1_adrenergic_receptor_module (uM). * ALGEBRAIC[5] is Gs_alpha_beta_gamma in component caveolar_G_s_protein_activation_module (uM). * ALGEBRAIC[16] is R in component caveolar_muscarinic_receptor_module (uM). * ALGEBRAIC[17] is LR in component caveolar_muscarinic_receptor_module (uM). * ALGEBRAIC[18] is LRG in component caveolar_muscarinic_receptor_module (uM). * ALGEBRAIC[19] is RG in component caveolar_muscarinic_receptor_module (uM). * CONSTANTS[21] is R_Total in component caveolar_muscarinic_receptor_module (uM). * ALGEBRAIC[6] is Gi_alpha_beta_gamma in component caveolar_G_i_protein_activation_module (uM). * STATES[0] is Gs_alpha_GTP in component caveolar_G_s_protein_activation_module (uM). * STATES[1] is Gs_beta_gamma in component caveolar_G_s_protein_activation_module (uM). * STATES[2] is Gs_alpha_GDP in component caveolar_G_s_protein_activation_module (uM). * CONSTANTS[22] is Gs_Total in component caveolar_G_s_protein_activation_module (uM). * STATES[3] is Gi_alpha_GTP in component caveolar_G_i_protein_activation_module (uM). * STATES[4] is Gi_beta_gamma in component caveolar_G_i_protein_activation_module (uM). * STATES[5] is Gi_alpha_GDP in component caveolar_G_i_protein_activation_module (uM). * CONSTANTS[23] is Gi_Total in component caveolar_G_i_protein_activation_module (uM). * ALGEBRAIC[20] is R in component extracaveolar_beta_1_adrenergic_receptor_module (uM). * ALGEBRAIC[21] is LR in component extracaveolar_beta_1_adrenergic_receptor_module (uM). * ALGEBRAIC[22] is LRG in component extracaveolar_beta_1_adrenergic_receptor_module (uM). * ALGEBRAIC[23] is RG in component extracaveolar_beta_1_adrenergic_receptor_module (uM). * CONSTANTS[24] is R_Total in component extracaveolar_beta_1_adrenergic_receptor_module (uM). * ALGEBRAIC[7] is Gs_alpha_beta_gamma in component extracaveolar_G_s_protein_activation_module (uM). * ALGEBRAIC[24] is R in component extracaveolar_muscarinic_receptor_module (uM). * ALGEBRAIC[25] is LR in component extracaveolar_muscarinic_receptor_module (uM). * ALGEBRAIC[26] is LRG in component extracaveolar_muscarinic_receptor_module (uM). * ALGEBRAIC[27] is RG in component extracaveolar_muscarinic_receptor_module (uM). * CONSTANTS[25] is R_Total in component extracaveolar_muscarinic_receptor_module (uM). * ALGEBRAIC[8] is Gi_alpha_beta_gamma in component extracaveolar_G_i_protein_activation_module (uM). * STATES[6] is Gs_alpha_GTP in component extracaveolar_G_s_protein_activation_module (uM). * STATES[7] is Gs_beta_gamma in component extracaveolar_G_s_protein_activation_module (uM). * STATES[8] is Gs_alpha_GDP in component extracaveolar_G_s_protein_activation_module (uM). * CONSTANTS[26] is Gs_Total in component extracaveolar_G_s_protein_activation_module (uM). * STATES[9] is Gi_alpha_GTP in component extracaveolar_G_i_protein_activation_module (uM). * STATES[10] is Gi_beta_gamma in component extracaveolar_G_i_protein_activation_module (uM). * STATES[11] is Gi_alpha_GDP in component extracaveolar_G_i_protein_activation_module (uM). * CONSTANTS[27] is Gi_Total in component extracaveolar_G_i_protein_activation_module (uM). * ALGEBRAIC[9] is dcAMP_AC_56_dt in component AC56_module (uM_per_sec). * ALGEBRAIC[2] is k_AC56 in component AC56_module (per_sec). * CONSTANTS[28] is AC_56 in component AC56_module (uM). * CONSTANTS[29] is AF56 in component AC56_module (dimensionless). * CONSTANTS[30] is MW_AC56 in component AC56_module (kDa). * CONSTANTS[31] is ATP in component AC56_module (uM). * CONSTANTS[32] is Km_ATP in component AC56_module (uM). * ALGEBRAIC[10] is dcAMP_AC_47_ecav_dt in component AC47_ecav_module (uM_per_sec). * ALGEBRAIC[3] is k_AC47_ecav in component AC47_ecav_module (per_sec). * CONSTANTS[33] is AC_47_ecav in component AC47_ecav_module (uM). * CONSTANTS[34] is AF47 in component AC47_ecav_module (dimensionless). * CONSTANTS[35] is MW_AC47 in component AC47_ecav_module (kDa). * CONSTANTS[36] is ATP in component AC47_ecav_module (uM). * CONSTANTS[37] is Km_ATP in component AC47_ecav_module (uM). * CONSTANTS[55] is dcAMP_AC_47_cyt_dt in component AC47_cyt_module (uM_per_sec). * CONSTANTS[38] is k_AC47_cyt in component AC47_cyt_module (per_sec). * CONSTANTS[39] is AC_47_cyt in component AC47_cyt_module (uM). * CONSTANTS[40] is AF47 in component AC47_cyt_module (dimensionless). * CONSTANTS[41] is ATP in component AC47_cyt_module (uM). * CONSTANTS[42] is Km_ATP in component AC47_cyt_module (uM). * ALGEBRAIC[28] is dcAMP_cav_PDE2_dt in component caveolar_PDE_module (uM_per_sec). * ALGEBRAIC[31] is dcAMP_cav_PDE3_dt in component caveolar_PDE_module (uM_per_sec). * ALGEBRAIC[33] is dcAMP_cav_PDE4_dt in component caveolar_PDE_module (uM_per_sec). * STATES[12] is cAMP_cav in component cAMP_flux_module (uM). * CONSTANTS[43] is PDE2 in component caveolar_PDE_module (uM). * CONSTANTS[44] is PDE3 in component caveolar_PDE_module (uM). * CONSTANTS[45] is PDE4 in component caveolar_PDE_module (uM). * ALGEBRAIC[29] is dcAMP_ecav_PDE2_dt in component extracaveolar_PDE_module (uM_per_sec). * ALGEBRAIC[32] is dcAMP_ecav_PDE4_dt in component extracaveolar_PDE_module (uM_per_sec). * STATES[13] is cAMP_ecav in component cAMP_flux_module (uM). * CONSTANTS[46] is PDE2 in component extracaveolar_PDE_module (uM). * CONSTANTS[47] is PDE4 in component extracaveolar_PDE_module (uM). * ALGEBRAIC[4] is dcAMP_cyt_PDE2_dt in component bulk_cytoplasmic_PDE_module (uM_per_sec). * ALGEBRAIC[11] is dcAMP_cyt_PDE3_dt in component bulk_cytoplasmic_PDE_module (uM_per_sec). * ALGEBRAIC[30] is dcAMP_cyt_PDE4_dt in component bulk_cytoplasmic_PDE_module (uM_per_sec). * STATES[14] is cAMP_cyt in component cAMP_flux_module (uM). * CONSTANTS[48] is PDE2 in component bulk_cytoplasmic_PDE_module (uM). * CONSTANTS[49] is PDE3 in component bulk_cytoplasmic_PDE_module (uM). * CONSTANTS[50] is PDE4 in component bulk_cytoplasmic_PDE_module (uM). * CONSTANTS[56] is V_cav in component cAMP_flux_module (liter). * CONSTANTS[57] is V_ecav in component cAMP_flux_module (liter). * CONSTANTS[58] is V_cyt in component cAMP_flux_module (liter). * CONSTANTS[51] is V_cell in component cAMP_flux_module (liter). * CONSTANTS[52] is J_cav_ecav in component cAMP_flux_module (liters_per_second). * CONSTANTS[53] is J_cav_cyt in component cAMP_flux_module (liters_per_second). * CONSTANTS[54] is J_ecav_cyt in component cAMP_flux_module (liters_per_second). * RATES[0] is d/dt Gs_alpha_GTP in component caveolar_G_s_protein_activation_module (uM). * RATES[1] is d/dt Gs_beta_gamma in component caveolar_G_s_protein_activation_module (uM). * RATES[2] is d/dt Gs_alpha_GDP in component caveolar_G_s_protein_activation_module (uM). * RATES[3] is d/dt Gi_alpha_GTP in component caveolar_G_i_protein_activation_module (uM). * RATES[4] is d/dt Gi_beta_gamma in component caveolar_G_i_protein_activation_module (uM). * RATES[5] is d/dt Gi_alpha_GDP in component caveolar_G_i_protein_activation_module (uM). * RATES[6] is d/dt Gs_alpha_GTP in component extracaveolar_G_s_protein_activation_module (uM). * RATES[7] is d/dt Gs_beta_gamma in component extracaveolar_G_s_protein_activation_module (uM). * RATES[8] is d/dt Gs_alpha_GDP in component extracaveolar_G_s_protein_activation_module (uM). * RATES[9] is d/dt Gi_alpha_GTP in component extracaveolar_G_i_protein_activation_module (uM). * RATES[10] is d/dt Gi_beta_gamma in component extracaveolar_G_i_protein_activation_module (uM). * RATES[11] is d/dt Gi_alpha_GDP in component extracaveolar_G_i_protein_activation_module (uM). * RATES[12] is d/dt cAMP_cav in component cAMP_flux_module (uM). * RATES[13] is d/dt cAMP_ecav in component cAMP_flux_module (uM). * RATES[14] is d/dt cAMP_cyt in component cAMP_flux_module (uM). */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { CONSTANTS[0] = 0.035; CONSTANTS[1] = 0.386; CONSTANTS[2] = 8.809; CONSTANTS[3] = 0.16; CONSTANTS[4] = 11; CONSTANTS[5] = 30; CONSTANTS[6] = 20; CONSTANTS[7] = 50; CONSTANTS[8] = 1.25; CONSTANTS[9] = 0.08; CONSTANTS[10] = 2.5; CONSTANTS[11] = 2.2; CONSTANTS[12] = 5; CONSTANTS[13] = 0.1; CONSTANTS[14] = 0.8; CONSTANTS[15] = 1.21e3; CONSTANTS[16] = 2.5; CONSTANTS[17] = 0.05; CONSTANTS[18] = 0.8; CONSTANTS[19] = 1.21e3; CONSTANTS[20] = 0.633; CONSTANTS[21] = 0.633; STATES[0] = 0.041983438; STATES[1] = 0.042634499; STATES[2] = 0.000651061; CONSTANTS[22] = 10; STATES[3] = 0.012644961; STATES[4] = 0.013274751; STATES[5] = 0.00062979; CONSTANTS[23] = 20; CONSTANTS[24] = 0.633; CONSTANTS[25] = 0.633; STATES[6] = 0.083866891; STATES[7] = 0.084522918; STATES[8] = 0.000656025; CONSTANTS[26] = 10; STATES[9] = 0.001018705; STATES[10] = 0.001475253; STATES[11] = 0.000456548; CONSTANTS[27] = 1; CONSTANTS[28] = 3.379; CONSTANTS[29] = 500; CONSTANTS[30] = 130; CONSTANTS[31] = 5000; CONSTANTS[32] = 315; CONSTANTS[33] = 0.2; CONSTANTS[34] = 130; CONSTANTS[35] = 130; CONSTANTS[36] = 5000; CONSTANTS[37] = 315; CONSTANTS[38] = 1.08e-3; CONSTANTS[39] = 0.136; CONSTANTS[40] = 130; CONSTANTS[41] = 5000; CONSTANTS[42] = 315; STATES[12] = 0.11750433; CONSTANTS[43] = 4.5; CONSTANTS[44] = 5.6; CONSTANTS[45] = 2; STATES[13] = 1.092200547; CONSTANTS[46] = 0.02; CONSTANTS[47] = 0.16; STATES[14] = 0.992583576; CONSTANTS[48] = 5e-3; CONSTANTS[49] = 7.5e-3; CONSTANTS[50] = 5e-3; CONSTANTS[51] = 38e-12; CONSTANTS[52] = 7.5e-15; CONSTANTS[53] = 7.5e-14; CONSTANTS[54] = 1.5e-17; CONSTANTS[55] = ( CONSTANTS[38]*CONSTANTS[39]*CONSTANTS[40]*CONSTANTS[41])/(CONSTANTS[42]+CONSTANTS[41]); CONSTANTS[56] = 0.0100000*CONSTANTS[51]; CONSTANTS[57] = 0.0200000*CONSTANTS[51]; CONSTANTS[58] = 0.500000*CONSTANTS[51]; } void computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { RATES[2] = STATES[0]*CONSTANTS[14] - STATES[2]*STATES[1]*CONSTANTS[15]; RATES[5] = STATES[3]*CONSTANTS[18] - STATES[5]*STATES[4]*CONSTANTS[19]; RATES[8] = STATES[6]*CONSTANTS[14] - STATES[8]*STATES[7]*CONSTANTS[15]; RATES[11] = STATES[9]*CONSTANTS[18] - STATES[11]*STATES[10]*CONSTANTS[19]; ALGEBRAIC[0] = (VOI>120.000&&VOI<=720.000 ? 1.00000 : 1.00000); ALGEBRAIC[5] = (CONSTANTS[22] - STATES[0]) - STATES[2]; rootfind_0(VOI, CONSTANTS, RATES, STATES, ALGEBRAIC, pret); RATES[0] = ( ALGEBRAIC[15]*CONSTANTS[13]+ ALGEBRAIC[14]*CONSTANTS[12]) - STATES[0]*CONSTANTS[14]; RATES[1] = ( ALGEBRAIC[15]*CONSTANTS[13]+ ALGEBRAIC[14]*CONSTANTS[12]) - STATES[2]*STATES[1]*CONSTANTS[15]; ALGEBRAIC[1] = (VOI>240.000&&VOI<=540.000 ? 0.00000 : 0.00000); ALGEBRAIC[6] = (CONSTANTS[23] - STATES[3]) - STATES[5]; rootfind_1(VOI, CONSTANTS, RATES, STATES, ALGEBRAIC, pret); RATES[3] = ( ALGEBRAIC[19]*CONSTANTS[17]+ ALGEBRAIC[18]*CONSTANTS[16]) - STATES[3]*CONSTANTS[18]; RATES[4] = ( ALGEBRAIC[19]*CONSTANTS[17]+ ALGEBRAIC[18]*CONSTANTS[16]) - STATES[5]*STATES[4]*CONSTANTS[19]; ALGEBRAIC[7] = (CONSTANTS[26] - STATES[6]) - STATES[8]; rootfind_2(VOI, CONSTANTS, RATES, STATES, ALGEBRAIC, pret); RATES[6] = ( ALGEBRAIC[23]*CONSTANTS[13]+ ALGEBRAIC[22]*CONSTANTS[12]) - STATES[6]*CONSTANTS[14]; RATES[7] = ( ALGEBRAIC[23]*CONSTANTS[13]+ ALGEBRAIC[22]*CONSTANTS[12]) - STATES[8]*STATES[7]*CONSTANTS[15]; ALGEBRAIC[8] = (CONSTANTS[27] - STATES[9]) - STATES[11]; rootfind_3(VOI, CONSTANTS, RATES, STATES, ALGEBRAIC, pret); RATES[9] = ( ALGEBRAIC[27]*CONSTANTS[17]+ ALGEBRAIC[26]*CONSTANTS[16]) - STATES[9]*CONSTANTS[18]; RATES[10] = ( ALGEBRAIC[27]*CONSTANTS[17]+ ALGEBRAIC[26]*CONSTANTS[16]) - STATES[11]*STATES[10]*CONSTANTS[19]; ALGEBRAIC[4] = ( CONSTANTS[6]*CONSTANTS[48]*STATES[14])/(CONSTANTS[7]+STATES[14]); ALGEBRAIC[11] = ( CONSTANTS[8]*CONSTANTS[49]*STATES[14])/(CONSTANTS[9]+STATES[14]); ALGEBRAIC[30] = ( CONSTANTS[10]*CONSTANTS[50]*STATES[14])/(CONSTANTS[11]+STATES[14]); RATES[14] = (CONSTANTS[55] - (ALGEBRAIC[4]+ALGEBRAIC[11]+ALGEBRAIC[30]))+( CONSTANTS[53]*(STATES[12] - STATES[14]))/CONSTANTS[58]+( CONSTANTS[54]*(STATES[13] - STATES[14]))/CONSTANTS[58]; ALGEBRAIC[3] = (( (0.0630000+( 2.01000*pow( STATES[6]*1000.00, 1.00430))/(31.5440+pow( STATES[6]*1000.00, 1.00430)))*(1.00000+( (1.00000/3.01000)*49.1000*pow( STATES[10]*1000.00, 0.892100))/(25.4400+pow( STATES[10]*1000.00, 0.892100)))*CONSTANTS[35])/60.0000)*0.00100000; ALGEBRAIC[10] = ( ALGEBRAIC[3]*CONSTANTS[33]*CONSTANTS[34]*CONSTANTS[36])/(CONSTANTS[37]+CONSTANTS[36]); ALGEBRAIC[29] = ( CONSTANTS[6]*CONSTANTS[46]*STATES[13])/(CONSTANTS[7]+STATES[13]); ALGEBRAIC[32] = ( CONSTANTS[10]*CONSTANTS[47]*STATES[13])/(CONSTANTS[11]+STATES[13]); RATES[13] = ((ALGEBRAIC[10] - (ALGEBRAIC[29]+ALGEBRAIC[32]))+( CONSTANTS[52]*(STATES[12] - STATES[13]))/CONSTANTS[57]) - ( CONSTANTS[54]*(STATES[13] - STATES[14]))/CONSTANTS[57]; ALGEBRAIC[2] = (( (0.700000+( 3.82340*pow(STATES[0]/1.00000, 0.978700))/(0.198600+pow(STATES[0]/1.00000, 0.978700)))*(1.00000+( (1.00000/1.44320)*- 1.00610*pow(STATES[3]/1.00000, 0.835600))/(0.191800+pow(STATES[3]/1.00000, 0.835600)))*CONSTANTS[30])/60.0000)*0.00100000; ALGEBRAIC[9] = ( ALGEBRAIC[2]*CONSTANTS[28]*CONSTANTS[29]*CONSTANTS[31])/(CONSTANTS[32]+CONSTANTS[31]); ALGEBRAIC[28] = ( CONSTANTS[6]*CONSTANTS[43]*STATES[12])/(CONSTANTS[7]+STATES[12]); ALGEBRAIC[31] = ( CONSTANTS[8]*CONSTANTS[44]*STATES[12])/(CONSTANTS[9]+STATES[12]); ALGEBRAIC[33] = ( CONSTANTS[10]*CONSTANTS[45]*STATES[12])/(CONSTANTS[11]+STATES[12]); RATES[12] = ((ALGEBRAIC[9] - (ALGEBRAIC[28]+ALGEBRAIC[31]+ALGEBRAIC[33])) - ( CONSTANTS[52]*(STATES[12] - STATES[13]))/CONSTANTS[56]) - ( CONSTANTS[53]*(STATES[12] - STATES[14]))/CONSTANTS[56]; } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[0] = (VOI>120.000&&VOI<=720.000 ? 1.00000 : 1.00000); ALGEBRAIC[5] = (CONSTANTS[22] - STATES[0]) - STATES[2]; ALGEBRAIC[1] = (VOI>240.000&&VOI<=540.000 ? 0.00000 : 0.00000); ALGEBRAIC[6] = (CONSTANTS[23] - STATES[3]) - STATES[5]; ALGEBRAIC[7] = (CONSTANTS[26] - STATES[6]) - STATES[8]; ALGEBRAIC[8] = (CONSTANTS[27] - STATES[9]) - STATES[11]; ALGEBRAIC[4] = ( CONSTANTS[6]*CONSTANTS[48]*STATES[14])/(CONSTANTS[7]+STATES[14]); ALGEBRAIC[11] = ( CONSTANTS[8]*CONSTANTS[49]*STATES[14])/(CONSTANTS[9]+STATES[14]); ALGEBRAIC[30] = ( CONSTANTS[10]*CONSTANTS[50]*STATES[14])/(CONSTANTS[11]+STATES[14]); ALGEBRAIC[3] = (( (0.0630000+( 2.01000*pow( STATES[6]*1000.00, 1.00430))/(31.5440+pow( STATES[6]*1000.00, 1.00430)))*(1.00000+( (1.00000/3.01000)*49.1000*pow( STATES[10]*1000.00, 0.892100))/(25.4400+pow( STATES[10]*1000.00, 0.892100)))*CONSTANTS[35])/60.0000)*0.00100000; ALGEBRAIC[10] = ( ALGEBRAIC[3]*CONSTANTS[33]*CONSTANTS[34]*CONSTANTS[36])/(CONSTANTS[37]+CONSTANTS[36]); ALGEBRAIC[29] = ( CONSTANTS[6]*CONSTANTS[46]*STATES[13])/(CONSTANTS[7]+STATES[13]); ALGEBRAIC[32] = ( CONSTANTS[10]*CONSTANTS[47]*STATES[13])/(CONSTANTS[11]+STATES[13]); ALGEBRAIC[2] = (( (0.700000+( 3.82340*pow(STATES[0]/1.00000, 0.978700))/(0.198600+pow(STATES[0]/1.00000, 0.978700)))*(1.00000+( (1.00000/1.44320)*- 1.00610*pow(STATES[3]/1.00000, 0.835600))/(0.191800+pow(STATES[3]/1.00000, 0.835600)))*CONSTANTS[30])/60.0000)*0.00100000; ALGEBRAIC[9] = ( ALGEBRAIC[2]*CONSTANTS[28]*CONSTANTS[29]*CONSTANTS[31])/(CONSTANTS[32]+CONSTANTS[31]); ALGEBRAIC[28] = ( CONSTANTS[6]*CONSTANTS[43]*STATES[12])/(CONSTANTS[7]+STATES[12]); ALGEBRAIC[31] = ( CONSTANTS[8]*CONSTANTS[44]*STATES[12])/(CONSTANTS[9]+STATES[12]); ALGEBRAIC[33] = ( CONSTANTS[10]*CONSTANTS[45]*STATES[12])/(CONSTANTS[11]+STATES[12]); } 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]; ALGEBRAIC[14] = p[2]; ALGEBRAIC[15] = p[3]; hx[0] = ALGEBRAIC[12] - (((CONSTANTS[20] - ALGEBRAIC[13]) - ALGEBRAIC[14]) - ALGEBRAIC[15]); hx[1] = ALGEBRAIC[13] - ( ALGEBRAIC[0]*ALGEBRAIC[12])/CONSTANTS[1]; hx[2] = ALGEBRAIC[14] - ( ALGEBRAIC[0]*ALGEBRAIC[12]*ALGEBRAIC[5])/( CONSTANTS[0]*CONSTANTS[2]); hx[3] = ALGEBRAIC[15] - ( ALGEBRAIC[12]*ALGEBRAIC[5])/CONSTANTS[2]; #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[4] = {0.1,0.1,0.1,0.1}; double bp[4], work[LM_DIF_WORKSZ(4, 4)]; 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, 4, &rfi); ALGEBRAIC[12] = p[0]; ALGEBRAIC[13] = p[1]; ALGEBRAIC[14] = p[2]; ALGEBRAIC[15] = p[3]; } 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[16] = p[0]; ALGEBRAIC[17] = p[1]; ALGEBRAIC[18] = p[2]; ALGEBRAIC[19] = p[3]; hx[0] = ALGEBRAIC[16] - (((CONSTANTS[21] - ALGEBRAIC[17]) - ALGEBRAIC[18]) - ALGEBRAIC[19]); hx[1] = ALGEBRAIC[17] - ( ALGEBRAIC[1]*ALGEBRAIC[16])/CONSTANTS[4]; hx[2] = ALGEBRAIC[18] - ( ALGEBRAIC[1]*ALGEBRAIC[16]*ALGEBRAIC[6])/( CONSTANTS[3]*CONSTANTS[5]); hx[3] = ALGEBRAIC[19] - ( ALGEBRAIC[16]*ALGEBRAIC[6])/CONSTANTS[5]; #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[4] = {0.1,0.1,0.1,0.1}; double bp[4], work[LM_DIF_WORKSZ(4, 4)]; 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, 4, &rfi); ALGEBRAIC[16] = p[0]; ALGEBRAIC[17] = p[1]; ALGEBRAIC[18] = p[2]; ALGEBRAIC[19] = p[3]; } void objfunc_2(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[20] = p[0]; ALGEBRAIC[21] = p[1]; ALGEBRAIC[22] = p[2]; ALGEBRAIC[23] = p[3]; hx[0] = ALGEBRAIC[20] - (((CONSTANTS[24] - ALGEBRAIC[21]) - ALGEBRAIC[22]) - ALGEBRAIC[23]); hx[1] = ALGEBRAIC[21] - ( ALGEBRAIC[0]*ALGEBRAIC[20])/CONSTANTS[1]; hx[2] = ALGEBRAIC[22] - ( ALGEBRAIC[0]*ALGEBRAIC[20]*ALGEBRAIC[7])/( CONSTANTS[0]*CONSTANTS[2]); hx[3] = ALGEBRAIC[23] - ( ALGEBRAIC[20]*ALGEBRAIC[7])/CONSTANTS[2]; #undef VOI #undef CONSTANTS #undef RATES #undef STATES #undef ALGEBRAIC #undef pret } void rootfind_2(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC, int* pret) { static double p[4] = {0.1,0.1,0.1,0.1}; double bp[4], work[LM_DIF_WORKSZ(4, 4)]; 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_2, p, bp, work, pret, 4, &rfi); ALGEBRAIC[20] = p[0]; ALGEBRAIC[21] = p[1]; ALGEBRAIC[22] = p[2]; ALGEBRAIC[23] = p[3]; } void objfunc_3(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[24] = p[0]; ALGEBRAIC[25] = p[1]; ALGEBRAIC[26] = p[2]; ALGEBRAIC[27] = p[3]; hx[0] = ALGEBRAIC[24] - (((CONSTANTS[25] - ALGEBRAIC[25]) - ALGEBRAIC[26]) - ALGEBRAIC[27]); hx[1] = ALGEBRAIC[25] - ( ALGEBRAIC[1]*ALGEBRAIC[24])/CONSTANTS[4]; hx[2] = ALGEBRAIC[26] - ( ALGEBRAIC[1]*ALGEBRAIC[24]*ALGEBRAIC[8])/( CONSTANTS[3]*CONSTANTS[5]); hx[3] = ALGEBRAIC[27] - ( ALGEBRAIC[24]*ALGEBRAIC[8])/CONSTANTS[5]; #undef VOI #undef CONSTANTS #undef RATES #undef STATES #undef ALGEBRAIC #undef pret } void rootfind_3(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC, int* pret) { static double p[4] = {0.1,0.1,0.1,0.1}; double bp[4], work[LM_DIF_WORKSZ(4, 4)]; 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_3, p, bp, work, pret, 4, &rfi); ALGEBRAIC[24] = p[0]; ALGEBRAIC[25] = p[1]; ALGEBRAIC[26] = p[2]; ALGEBRAIC[27] = p[3]; }