3146 double dist = 0., d = 0., ason = 0., vel = 0., Aa = 0., ason1 = 0., vel1 = 0., Aa1 = 0., ason2 = 0., vel2 = 0.,
3153 if(FNumResInstant != 0) {
3154 for(
int i = 0; i < FNumResInstant; i++) {
3155 dist = ResultInstantaneos[i].Distancia / FXref;
3156 n1 = (int) floor(dist);
3157 if(n1 >= FNin - 1) {
3158 if(ResultInstantaneos[i].Pressure)
3159 ResultInstantaneos[i].PresionINS = FPresion0[FNin - 1];
3160 if(ResultInstantaneos[i].Velocity)
3161 ResultInstantaneos[i].VelocidadINS = FVelocidad0[FNin - 1] * __cons::ARef;
3162 if(ResultInstantaneos[i].TemperaturaGas) {
3163 double temp = __units::KTodegC(
pow2(FAsonido0[FNin - 1] * __cons::ARef) / (FGamma[FNin - 1] * FRMezcla[FNin - 1]));
3164 ResultInstantaneos[i].TemperaturaGasINS = temp;
3166 if(ResultInstantaneos[i].FlujoMasico) {
3167 ResultInstantaneos[i].FlujoMasicoINS = FFlowMass[FNin - 1];
3169 if(ResultInstantaneos[i].VelocidadDerecha || ResultInstantaneos[i].VelocidadIzquierda
3170 || ResultInstantaneos[i].PresionDerecha || ResultInstantaneos[i].PresionIzquierda) {
3171 ason = FAsonidoDim[FNin - 1];
3172 vel = FGamma1[FNin - 1] / 2 * FVelocidadDim[FNin - 1];
3173 Aa = ason / pow(FPresion0[FNin - 1], FGamma5[FNin - 1]);
3175 if(ResultInstantaneos[i].VelocidadDerecha) {
3176 double VelDer = ((ason + vel) - Aa) / FGamma1[FNin - 1];
3177 ResultInstantaneos[i].VelocidadDerechaINS = VelDer;
3179 if(ResultInstantaneos[i].VelocidadIzquierda) {
3180 double VelIzq = -((ason - vel) - Aa) / FGamma1[FNin - 1];
3181 ResultInstantaneos[i].VelocidadIzquierdaINS = VelIzq;
3183 if(ResultInstantaneos[i].PresionDerecha) {
3184 double PreDer = pow(((ason + vel) / Aa + 1) / 2., FGamma4[FNin - 1]);
3185 ResultInstantaneos[i].PresionDerechaINS = PreDer;
3187 if(ResultInstantaneos[i].PresionIzquierda) {
3188 double PreIzq = pow(((ason - vel) / Aa + 1) / 2., FGamma4[FNin - 1]);
3189 ResultInstantaneos[i].PresionIzquierdaINS = PreIzq;
3191 if(ResultInstantaneos[i].NIT) {
3192 double nit = CalculaNIT(FAsonido0[FNin - 1], FVelocidad0[FNin - 1], FPresion0[FNin - 1], FDiametroTubo[FNin - 1],
3193 FGamma[FNin - 1], FRMezcla[FNin - 1]);
3194 ResultInstantaneos[i].NITINS = nit;
3196 if(ResultInstantaneos[i].TemperaturaInternaPared)
3197 ResultInstantaneos[i].TemperaturaInternaParedINS = FTPTubo[0][FNin - 1];
3198 if(ResultInstantaneos[i].TemperaturaIntermediaPared)
3199 ResultInstantaneos[i].TemperaturaIntermediaParedINS = FTPTubo[1][FNin - 1];
3200 if(ResultInstantaneos[i].TemperaturaExternaPared)
3201 ResultInstantaneos[i].TemperaturaExternaParedINS = FTPTubo[2][FNin - 1];
3202 if(ResultInstantaneos[i].CoefPelInterior)
3203 ResultInstantaneos[i].CoefPelInteriorINS = Fhi[FNin - 1];
3204 if(ResultInstantaneos[i].FraccionMasicaEspecies) {
3205 for(
int j = 0; j < FNumeroEspecies - FIntEGR; j++) {
3206 ResultInstantaneos[i].FraccionINS[j] = FFraccionMasicaEspecie[FNin - 1][j];
3209 if(ResultInstantaneos[i].Gamma)
3210 ResultInstantaneos[i].GammaINS = FGamma[FNin - 1];
3213 d = dist - (double) n1;
3214 if(ResultInstantaneos[i].Pressure) {
3215 double pres = Interpola(FPresion0[n1], FPresion0[n2], 1., d);
3216 ResultInstantaneos[i].PresionINS = pres;
3218 if(ResultInstantaneos[i].Velocity) {
3219 double vel = Interpola(FVelocidadDim[n1], FVelocidadDim[n2], 1., d);
3220 ResultInstantaneos[i].VelocidadINS = vel;
3222 if(ResultInstantaneos[i].TemperaturaGas) {
3223 double temp1 = FTemperature[n1];
3224 double temp2 = FTemperature[n2];
3225 double temp = Interpola(temp1, temp2, 1., d);
3226 ResultInstantaneos[i].TemperaturaGasINS = __units::KTodegC(temp);
3228 if(ResultInstantaneos[i].FlujoMasico) {
3231 double gto1 = FFlowMass[n1];
3234 double gto2 = FFlowMass[n2];
3235 double gto = Interpola(gto1, gto2, 1., d);
3236 ResultInstantaneos[i].FlujoMasicoINS = gto;
3238 if(ResultInstantaneos[i].VelocidadDerecha || ResultInstantaneos[i].VelocidadIzquierda
3239 || ResultInstantaneos[i].PresionDerecha || ResultInstantaneos[i].PresionIzquierda) {
3240 ason1 = FAsonidoDim[n1];
3241 vel1 = FGamma1[n1] / 2 * FVelocidadDim[n1];
3242 Aa1 = ason1 / pow(FPresion0[n1], FGamma5[n1]);
3243 ason2 = FAsonidoDim[n2];
3244 vel2 = FGamma1[n2] / 2 * FVelocidadDim[n2];
3245 Aa2 = ason2 / pow(FPresion0[n2], FGamma5[n2]);
3247 if(ResultInstantaneos[i].VelocidadDerecha) {
3248 double VelDer1 = ((ason1 + vel1) - Aa1) / FGamma1[n1];
3249 double VelDer2 = ((ason2 + vel2) - Aa2) / FGamma1[n2];
3250 double VelDer = Interpola(VelDer1, VelDer2, 1., d);
3251 ResultInstantaneos[i].VelocidadDerechaINS = VelDer;
3253 if(ResultInstantaneos[i].VelocidadIzquierda) {
3254 double VelIzq1 = -((ason1 - vel1) - Aa1) / FGamma1[n1];
3255 double VelIzq2 = -((ason2 - vel2) - Aa2) / FGamma1[n2];
3256 double VelIzq = Interpola(VelIzq1, VelIzq2, 1., d);
3257 ResultInstantaneos[i].VelocidadIzquierdaINS = VelIzq;
3259 if(ResultInstantaneos[i].PresionDerecha) {
3260 double PreDer1 = pow(((ason1 + vel1) / Aa1 + 1) / 2., FGamma4[n1]);
3261 double PreDer2 = pow(((ason2 + vel2) / Aa2 + 1) / 2., FGamma4[n2]);
3262 double PreDer = Interpola(PreDer1, PreDer2, 1., d);
3263 ResultInstantaneos[i].PresionDerechaINS = PreDer;
3265 if(ResultInstantaneos[i].PresionIzquierda) {
3266 double PreIzq1 = pow(((ason1 - vel1) / Aa1 + 1) / 2., FGamma4[n1]);
3267 double PreIzq2 = pow(((ason2 - vel2) / Aa2 + 1) / 2., FGamma4[n2]);
3268 double PreIzq = Interpola(PreIzq1, PreIzq2, 1., d);
3269 ResultInstantaneos[i].PresionIzquierdaINS = PreIzq;
3271 if(ResultInstantaneos[i].NIT) {
3272 double nit1 = CalculaNIT(FAsonido0[n1], FVelocidad0[n1], FPresion0[n1], FDiametroTubo[n1], FGamma[n1], FRMezcla[n1]);
3273 double nit2 = CalculaNIT(FAsonido0[n2], FVelocidad0[n2], FPresion0[n2], FDiametroTubo[n2], FGamma[n2], FRMezcla[n2]);
3274 double nit = Interpola(nit1, nit2, 1., d);
3275 ResultInstantaneos[i].NITINS = nit;
3277 if(ResultInstantaneos[i].TemperaturaInternaPared) {
3278 double TP = Interpola(FTPTubo[0][n1], FTPTubo[0][n2], 1., d);
3279 ResultInstantaneos[i].TemperaturaInternaParedINS = TP;
3281 if(ResultInstantaneos[i].TemperaturaIntermediaPared) {
3282 double TP = Interpola(FTPTubo[1][n1], FTPTubo[1][n2], 1., d);
3283 ResultInstantaneos[i].TemperaturaIntermediaParedINS = TP;
3285 if(ResultInstantaneos[i].TemperaturaExternaPared) {
3286 double TP = Interpola(FTPTubo[2][n1], FTPTubo[2][n2], 1., d);
3287 ResultInstantaneos[i].TemperaturaExternaParedINS = TP;
3289 if(ResultInstantaneos[i].CoefPelInterior) {
3290 double hi = Interpola(Fhi[n1], Fhi[n2], 1., d);
3291 ResultInstantaneos[i].CoefPelInteriorINS = hi;
3293 if(ResultInstantaneos[i].FraccionMasicaEspecies) {
3294 for(
int j = 0; j < FNumeroEspecies - FIntEGR; j++) {
3295 double Fraccion = Interpola(FFraccionMasicaEspecie[n1][j], FFraccionMasicaEspecie[n2][j], 1., d);
3296 ResultInstantaneos[i].FraccionINS[j] = Fraccion;
3299 if(ResultInstantaneos[i].Gamma) {
3300 double gamma = Interpola(FGamma[n1], FGamma[n2], 1., d);
3301 ResultInstantaneos[i].GammaINS = gamma;
3308 }
catch(exception & N) {
3309 std::cout <<
"ERROR: TTubo::CalculaResultadosInstantaneos en el tubo: " << FNumeroTubo << std::endl;
3310 std::cout <<
"Tipo de error: " << N.what() << std::endl;