29 #ifndef NewCompSolverH
30 #define NewCompSolverH
58 stCompSolverA2(
double c2,
double g,
double RC,
double cp0,
double aa1,
double aa2,
double a1,
double s1,
double s2,
60 Gam(g), CC2(c2), CP(cp0), AA1ini(aa1), AA2ini(aa2), RelComp(RC), A1ini(a1), Sec1(s1), Sec2(s2), V1ini(v1) {
62 Gae = (Gam - 1) / Gam;
65 double operator()(
const double A2) {
66 V2 = (CC2 * __cons::ARef - A2) * (-Gaa);
68 AA1new = AA2ini * pow(RelComp, Gae / 2.) / sqrt(1 + CP);
71 AA2new = sqrt(1 + CP) * AA1ini / pow(RelComp, Gae / 2.);
74 return pow(A1ini / pow(AA1new, Gam), Gaa) * V1ini * RelSec - pow(A2 / pow(AA2new, Gam), Gaa) * V2;
109 stCompSolverA1(
double c1,
double c2,
double s1,
double s2,
double g,
double aa1,
double aa2,
double RC,
double Rd,
110 double Lc,
double cp0,
double inct) :
111 CC1(c1), CC2(c2), AA1ini(aa1), AA2ini(aa2), Sec1(s1), Sec2(s2), RelComp(RC), Gam(g), Rend(Rd), Dt(inct), CPAnt(cp0),
115 Gae = (Gam - 1) / Gam;
116 CP = (pow(RC, Gae) - 1) / Rd;
120 double operator()(
const double A1) {
121 V1 = (CC1 * __cons::ARef - A1) * Gaa;
123 CPfin = CPAnt + (1 / LCar * 10) * (-CPAnt) * 0.5 * fabs(V1) * Dt;
124 A2Min = CC2 * __cons::ARef + V1 * RelSec / Gaa;
125 A2Max = CC2 * __cons::ARef;
126 A2MinLim = CC2 * __cons::ARef * 2 / (Gam + 1);
127 A2MaxLim = CC2 * __cons::ARef;
129 CPfin = CPAnt + (1 / LCar * 10) * (CP - CPAnt) * 0.5 * fabs(V1) * Dt;
130 A2Min = CC2 * __cons::ARef;
131 A2Max = CC2 * __cons::ARef + V1 * RelSec / Gaa;
132 A2MinLim = CC2 * __cons::ARef;
133 A2MaxLim = CC2 * __cons::ARef * 2 / (3 - Gam);
135 A2 = CC2 * __cons::ARef;
137 return (A2 * A2) - (A1 * A1) * (1 + CPfin);
139 stCompSolverA2 FunA2(CC2, Gam, RelComp, CPAnt, AA1ini, AA2ini, A1, Sec1, Sec2, V1);
141 bool Verdad = zbrac2(FunA2, A2Min, A2Max, A2MinLim, A2MaxLim);
145 if(fabs(FunA2(A2Min)) < fabs(FunA2(A2Max))) {
146 double Error = FunA2(A2Min);
149 double Error = FunA2(A2Max);
155 AA1new = FunA2.AA1new;
156 AA2new = FunA2.AA2new;
158 return (A2 * A2 + V2 * V2 / Gaa) - (A1 * A1 + V1 * V1 / Gaa) * (1 + CPfin);