/* There are a total of 8 entries in the algebraic variable array. There are a total of 1 entries in each of the rate and state variable arrays. There are a total of 12 entries in the constant variable array. */ /* * VOI is time in component environment (second). * ALGEBRAIC[0] is F_isom in component contraction (newton). * CONSTANTS[11] is c in component contraction (newton). * STATES[0] is L_ce in component contraction (metre). * CONSTANTS[0] is L_ce_opt in component contraction (metre). * ALGEBRAIC[1] is L in component contraction (metre). * CONSTANTS[1] is width in component contraction (metre). * CONSTANTS[2] is Factor in component contraction (per_second). * CONSTANTS[3] is A_REL in component contraction (newton). * CONSTANTS[4] is B_REL in component contraction (dimensionless). * ALGEBRAIC[7] is v_ce in component contraction (metre_per_second). * ALGEBRAIC[5] is F in component contraction (newton). * CONSTANTS[5] is F_max in component contraction (newton). * CONSTANTS[6] is q in component contraction (dimensionless). * ALGEBRAIC[4] is c1 in component contraction (per_second). * ALGEBRAIC[2] is c2 in component contraction (newton). * ALGEBRAIC[6] is c3 in component contraction (per_newton_second). * CONSTANTS[7] is slope in component contraction (newton). * CONSTANTS[8] is F_asympt in component contraction (dimensionless). * ALGEBRAIC[3] is L_see in component contraction (metre). * CONSTANTS[9] is L_slack in component contraction (metre). * CONSTANTS[10] is alpha in component contraction (newton_per_metre). * RATES[0] is d/dt L_ce in component contraction (metre). */ void initConsts(double* CONSTANTS, double* RATES, double *STATES) { STATES[0] = 0.05; CONSTANTS[0] = 0.055; CONSTANTS[1] = 0.888; CONSTANTS[2] = 1; CONSTANTS[3] = 0.41; CONSTANTS[4] = 5.2; CONSTANTS[5] = 3277.4; CONSTANTS[6] = 1; CONSTANTS[7] = 2; CONSTANTS[8] = 1.5; CONSTANTS[9] = 0.42; CONSTANTS[10] = 1449.027; CONSTANTS[11] = - 1.00000/pow(CONSTANTS[1], 2.00000); } void computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[0] = ( CONSTANTS[11]*pow(STATES[0]/CONSTANTS[0], 2.00000) - ( 2.00000*CONSTANTS[11]*STATES[0])/CONSTANTS[0])+CONSTANTS[11]+1.00000; ALGEBRAIC[1] = (VOI<=1.00000 ? 1.00000 : VOI>1.00000&&VOI<5.00000 ? 0.920000 : 0.900000); ALGEBRAIC[3] = ALGEBRAIC[1] - STATES[0]; ALGEBRAIC[5] = CONSTANTS[10]*(ALGEBRAIC[3] - CONSTANTS[9]); ALGEBRAIC[7] = - CONSTANTS[2]*STATES[0]*(( (ALGEBRAIC[0]+CONSTANTS[3])*CONSTANTS[4])/( 1.00000*(ALGEBRAIC[5]/( CONSTANTS[5]*CONSTANTS[6]))+CONSTANTS[3]) - CONSTANTS[4]); RATES[0] = ALGEBRAIC[7]; } void computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC) { ALGEBRAIC[0] = ( CONSTANTS[11]*pow(STATES[0]/CONSTANTS[0], 2.00000) - ( 2.00000*CONSTANTS[11]*STATES[0])/CONSTANTS[0])+CONSTANTS[11]+1.00000; ALGEBRAIC[1] = (VOI<=1.00000 ? 1.00000 : VOI>1.00000&&VOI<5.00000 ? 0.920000 : 0.900000); ALGEBRAIC[3] = ALGEBRAIC[1] - STATES[0]; ALGEBRAIC[5] = CONSTANTS[10]*(ALGEBRAIC[3] - CONSTANTS[9]); ALGEBRAIC[7] = - CONSTANTS[2]*STATES[0]*(( (ALGEBRAIC[0]+CONSTANTS[3])*CONSTANTS[4])/( 1.00000*(ALGEBRAIC[5]/( CONSTANTS[5]*CONSTANTS[6]))+CONSTANTS[3]) - CONSTANTS[4]); ALGEBRAIC[2] = ALGEBRAIC[0]*CONSTANTS[8]; ALGEBRAIC[4] = ( CONSTANTS[2]*CONSTANTS[4]*pow(ALGEBRAIC[0]+ALGEBRAIC[2], 2.00000))/( (ALGEBRAIC[0]+CONSTANTS[3])*CONSTANTS[7]); ALGEBRAIC[6] = ALGEBRAIC[4]/(ALGEBRAIC[0]+ALGEBRAIC[2]); }