31 #include "TCCUnionEntreDepositos.h"
38 #include "TValvula4T.h"
40 #include "TDiscoRotativo.h"
41 #include "TLumbrera.h"
42 #include "TValvulaContr.h"
43 #include "TWasteGate.h"
44 #include "TEstatorTurbina.h"
45 #include "TRotorTurbina.h"
46 #include "TCDExterno.h"
48 #include "TDepVolVariable.h"
49 #include "TDepVolCte.h"
56 TCCUnionEntreDepositos::TCCUnionEntreDepositos(nmTypeBC TipoCC,
int numCC, nmTipoCalculoEspecies SpeciesModel,
57 int numeroespecies, nmCalculoGamma GammaCalculation,
bool ThereIsEGR) :
58 TCondicionContorno(TipoCC, numCC, SpeciesModel, numeroespecies, GammaCalculation, ThereIsEGR) {
75 FResInstantUED.Massflow =
false;
80 TCCUnionEntreDepositos::~TCCUnionEntreDepositos() {
92 void TCCUnionEntreDepositos::LeeUEDepositos(
const char *FileWAM, fpos_t &filepos,
bool Independent) {
96 FIndependiente = Independent;
98 FILE *fich = fopen(FileWAM,
"r");
99 fsetpos(fich, &filepos);
103 fscanf(fich,
"%d ", &FNumeroDeposito1);
104 fscanf(fich,
"%d ", &FNumeroDeposito2);
106 fgetpos(fich, &filepos);
109 }
catch(exception &N) {
110 std::cout <<
"ERROR: TCCUnionEntreDepositos::LeeNumDepositos en la condicion de contorno: " << FNumeroCC << std::endl;
111 std::cout <<
"Tipo de error: " << N.what() << std::endl;
119 void TCCUnionEntreDepositos::AsignaDepositos(
TDeposito **Plenum) {
122 FDeposito1 = Plenum[FNumeroDeposito1 - 1];
123 FDeposito2 = Plenum[FNumeroDeposito2 - 1];
126 FFraccionMasicaEspecie =
new double[FNumeroEspecies - FIntEGR];
127 for(
int i = 0; i < FNumeroEspecies - FIntEGR; i++) {
128 FFraccionMasicaEspecie[i] = FDeposito1->GetFraccionMasicaEspecie(
132 }
catch(exception &N) {
133 std::cout <<
"ERROR: TCCUnionEntreDepositos::AsignaDepositos en la condicion de contorno: " << FNumeroCC << std::endl;
134 std::cout <<
"Tipo de error: " << N.what() << std::endl;
142 void TCCUnionEntreDepositos::AsignaTipoValvula(
TTipoValvula **Origen,
int Valv,
int i) {
145 switch(Origen[Valv - 1]->getTypeOfValve()) {
147 FValvula =
new TCDFijo(
dynamic_cast<TCDFijo *
>(Origen[Valv - 1]), i);
153 FValvula =
new TLamina(
dynamic_cast<TLamina *
>(Origen[Valv - 1]), i);
155 case nmDiscoRotativo:
178 FValvula->PutDiametroTubo(FValvula->getDiametro());
179 if(FValvula->getTypeOfValve() == nmCDFijo) {
180 dynamic_cast<TCDFijo *
>(FValvula)->CalculaCD();
181 FCDEntrada = FValvula->getCDTubVol();
182 FCDSalida = FValvula->getCDVolTub();
183 FCTorbellino = FValvula->getCTorb();
184 if(FCDEntrada > 1.) {
185 FValvula->AsignaCRecuperacion(FCDEntrada - 1.);
187 FValvula->AsignaCRecuperacion(0.);
190 }
catch(exception &N) {
191 std::cout <<
"ERROR: TCCUnionEntreDepositos::AsignaTipoValvula en la condicion de contorno: " << FNumeroCC << std::endl;
192 std::cout <<
"Tipo de error: " << N.what() << std::endl;
200 void TCCUnionEntreDepositos::CalculaCoeficientesDescarga(
double TiempoActual,
double mfcomb,
double RegimenMotor) {
203 double PVol = 0., PTub = 0., PAdm = 0., DeltaP = 0., distancia = 0., CDExt = 0., nodoadm = 0., p1 = 0., p2 = 0.;
204 int turb = 0, entr = 0;
206 if(FValvula->getTypeOfValve() == nmLumbrera2T) {
209 FTime1 = TiempoActual;
210 FDeltaT = FTime1 - FTime0;
211 FDeltaAngulo = 360. * FRegimen *
dynamic_cast<TDepVolVariable*
>(FDeposito1)->getRelacionVelocidades() / 60. * FDeltaT;
212 FAnguloAnterior = FAnguloActual;
213 FAnguloActual = FAnguloAnterior + FDeltaAngulo;
214 if(FAnguloActual > 360.) {
215 FAnguloActual -= 360.;
219 if(FValvula->getTypeOfValve() == nmDiscoRotativo) {
220 if(FValvula->getControlRegimen() == nmMotor) {
221 FRegimen = RegimenMotor;
223 FRegimen = FValvula->getRegimen();
226 FTime1 = TiempoActual;
227 FDeltaT = FTime1 - FTime0;
228 FDeltaAngulo = 360. * FRegimen * FValvula->getRelacionVelocidades() / 60. * FDeltaT;
229 FAnguloAnterior = FAnguloActual;
230 FAnguloActual = FAnguloAnterior + FDeltaAngulo;
231 if(FAnguloActual > 360.) {
232 FAnguloActual -= 360.;
236 if(FValvula->getTypeOfValve() == nmValvula4T) {
237 if(FValvula->getControlRegimen() == nmMotor) {
238 FRegimen = RegimenMotor;
240 FRegimen = FValvula->getRegimen();
243 FTime1 = TiempoActual;
244 FDeltaT = FTime1 - FTime0;
245 FDeltaAngulo = 360. * FRegimen * FValvula->getRelacionVelocidades() / 60. * FDeltaT;
246 FAnguloAnterior = FAnguloActual;
247 FAnguloActual = FAnguloAnterior + FDeltaAngulo;
248 if(FAnguloActual > 360.) {
249 FAnguloActual -= 360.;
253 if(FValvula->getTypeOfValve() == nmValvulaContr) {
254 FRegimen = RegimenMotor;
256 FTime1 = TiempoActual;
257 FDeltaT = FTime1 - FTime0;
258 FDeltaAngulo = 360. * FRegimen / 60. * FDeltaT;
259 FAnguloAnterior = FAnguloActual;
260 FAnguloActual = FAnguloAnterior + FDeltaAngulo;
261 if(FAnguloActual > 720.) {
262 FAnguloActual -= 720.;
266 switch(FValvula->getTypeOfValve()) {
268 dynamic_cast<TCDFijo *
>(FValvula)->CalculaCD();
272 dynamic_cast<TValvula4T *
>(FValvula)->CalculaCD(FAnguloActual);
276 PTub = FDeposito1->getPressure();
277 PVol = FDeposito2->getPressure();
278 DeltaP = PTub - PVol;
279 dynamic_cast<TLamina *
>(FValvula)->CalculaCD(DeltaP, TiempoActual);
282 case nmDiscoRotativo:
283 dynamic_cast<TDiscoRotativo *
>(FValvula)->CalculaCD(FAnguloActual);
287 dynamic_cast<TLumbrera *
>(FValvula)->CalculaCD(FAnguloActual);
291 dynamic_cast<TValvulaContr *
>(FValvula)->CalculaCD(FAnguloActual, mfcomb);
295 PTub = FDeposito1->getPressure();
296 PVol = FDeposito2->getPressure();
297 nodoadm =
dynamic_cast<TWasteGate *
>(FValvula)->getNodoAdm();
298 distancia =
dynamic_cast<TWasteGate *
>(FValvula)->getDist();
299 p1 =
dynamic_cast<TWasteGate *
>(FValvula)->getTuboAdm()->GetPresion(nodoadm);
300 p2 =
dynamic_cast<TWasteGate *
>(FValvula)->getTuboAdm()->GetPresion(nodoadm + 1);
301 PAdm = InterpolaDeposito(p1, p2, 1.0, distancia);
302 dynamic_cast<TWasteGate *
>(FValvula)->CalculaCD(PAdm, PTub, PVol, TiempoActual);
314 dynamic_cast<TCDExterno *
>(FValvula)->CalculaCD();
318 FCDEntrada = FValvula->getCDTubVol();
319 FCDEntrada = FValvula->getCDTubVol();
320 FCDSalida = FValvula->getCDVolTub();
321 FCTorbellino = FValvula->getCTorb();
323 if(FCDEntrada > 2.0 || FCDEntrada < 0.0) {
324 printf(
"ERROR: TCCUnionEntreDepositos::CalculaCoeficientesDescarga, en calculo coeficiente descarga entrante: %lf, en %lf grados,en la condicion de contorno: %d\n",
326 FAnguloActual, FNumeroCC);
328 "ERROR:TCCUnionEntreDepositos::CalculaCoeficientesDescarga en calculo coeficiente descarga entrante: " + std::to_string(
329 FCDEntrada) +
", en " + std::to_string(FAnguloActual) +
" grados ");
332 if(FCDSalida > 1.0 || FCDSalida < 0.0) {
333 printf(
"ERROR: TCCUnionEntreDepositos::CalculaCoeficientesDescarga, en calculo coeficiente descarga saliente: %lf, en %lf grados, en la condicion de contorno: %d\n",
335 FAnguloActual, FNumeroCC);
337 "ERROR: TCCUnionEntreDepositos::CalculaCoeficientesDescarga en calculo coeficiente descarga saliente: " +
338 std::to_string(FCDSalida) +
", en " + std::to_string(FAnguloActual) +
" grados ");
340 }
catch(exception &N) {
341 std::cout <<
"ERROR: TCCUnionEntreDepositos::CalculaCoeficientesDescarga en la condicion de contorno: " << FNumeroCC <<
343 std::cout <<
"Tipo de error: " << N.what() << std::endl;
351 double TCCUnionEntreDepositos::InterpolaDeposito(
double vizq,
double vder,
double axid,
double xif) {
353 double xx = 0., yy = 0., ret_val = 0.;
357 yy = (xx / axid) * xif;
360 std::cout <<
"ERROR: valores entrada TCCUnionEntreDepositos::InterpolaDeposito: " << std::endl;
364 }
catch(exception &N) {
365 std::cout <<
"ERROR: TCCUnionEntreDepositos::InterpolaDeposito en la condicion de contorno: " << FNumeroCC << std::endl;
366 std::cout <<
"Tipo de error: " << N.what() << std::endl;
374 void TCCUnionEntreDepositos::CalculaCondicionContorno(
double Time) {
391 double p0, p1, T0,gasto_isen, a0, FraccionMasicaAcum = 0., Massflow;
392 double paso1 = 0., paso2 = 0., paso3 = 0., paso4 = 0.;
393 int signodep1 = 0, signodep2 = 0;
398 if(FDeposito1->getPressure() > FDeposito2->getPressure()) {
399 FGamma = FDeposito1->getGamma();
400 FRMezcla = FDeposito1->getR();
401 p0 = __units::BarToPa(FDeposito1->getPressure());
402 T0 =
pow2(FDeposito1->getSpeedsound() * __cons::ARef) / (FGamma * FRMezcla);
403 Fa0 = FDeposito1->getSpeedsound();
405 p1 = __units::BarToPa(FDeposito2->getPressure());
409 FGamma = FDeposito2->getGamma();
410 FRMezcla = FDeposito2->getR();
411 p0 = __units::BarToPa(FDeposito2->getPressure());
412 T0 =
pow2(FDeposito2->getSpeedsound() * __cons::ARef) / (FGamma * FRMezcla);
413 Fa0 = FDeposito2->getSpeedsound();
415 p1 = __units::BarToPa(FDeposito1->getPressure());
419 FGamma1 = __Gamma::G1(FGamma);
420 FGamma2 = __Gamma::G2(FGamma);
422 paso1 = (__cons::Pi_4 *
pow2(FValvula->getDiametro())) * p0 * sqrt(2 * FGamma / (FRMezcla * FGamma1 * T0));
423 paso2 = pow(p1 / p0, 2 / FGamma);
424 paso3 = pow(p1 / p0, FGamma2 / FGamma);
425 paso4 = sqrt(paso2 - paso3);
426 gasto_isen = paso1 * paso4;
434 if(FDeposito1->getPressure() > FDeposito2->getPressure()) {
435 Massflow = FCDSalida * gasto_isen;
436 FGasto = 0.9 * FGasto + 0.1 * Massflow;
437 FVelocity = FGasto / (__geom::Circle_area(FValvula->getDiametro())) / (p0 / (FRMezcla * T0));
438 FSentidoFlujoED1 = -1;
439 FSentidoFlujoED2 = 1;
440 FGastoImpreso = FGasto;
444 for(
int j = 0; j < FNumeroEspecies - 2; j++) {
445 FFraccionMasicaEspecie[j] = FDeposito1->GetFraccionMasicaEspecie(j);
446 FraccionMasicaAcum += FFraccionMasicaEspecie[j];
448 FFraccionMasicaEspecie[FNumeroEspecies - 2] = 1. - FraccionMasicaAcum;
450 FFraccionMasicaEspecie[FNumeroEspecies - 1] = FDeposito1->GetFraccionMasicaEspecie(FNumeroEspecies - 1);
453 Massflow = FCDEntrada * gasto_isen;
454 FGasto = 0.9 * FGasto - 0.1 * Massflow;
455 FVelocity = FGasto / (__geom::Circle_area(FValvula->getDiametro())) / (p0 / (FRMezcla * T0));
456 FSentidoFlujoED1 = -1;
457 FSentidoFlujoED2 = 1;
458 FGastoImpreso = FGasto;
461 for(
int j = 0; j < FNumeroEspecies - 2; j++) {
462 FFraccionMasicaEspecie[j] = FDeposito2->GetFraccionMasicaEspecie(j);
463 FraccionMasicaAcum += FFraccionMasicaEspecie[j];
465 FFraccionMasicaEspecie[FNumeroEspecies - 2] = 1. - FraccionMasicaAcum;
467 FFraccionMasicaEspecie[FNumeroEspecies - 1] = FDeposito2->GetFraccionMasicaEspecie(FNumeroEspecies - 1);
472 double p0, p1, T0, T1, gasto_isen, a0, FraccionMasicaAcum = 0., Massflow;
473 double paso1 = 0., paso2 = 0., paso3 = 0., paso4 = 0.;
474 int signodep1 = 0, signodep2 = 0;
476 if(FDeposito1->getPressure() > FDeposito2->getPressure()) {
477 FGamma = FDeposito1->getGamma();
478 FRMezcla = FDeposito1->getR();
479 p0 = __units::BarToPa(FDeposito1->getPressure());
480 T0 =
pow2(FDeposito1->getSpeedsound() * __cons::ARef) / (FGamma * FRMezcla);
481 Fa0 = FDeposito1->getSpeedsound();
483 p1 = __units::BarToPa(FDeposito2->getPressure());
487 FGamma = FDeposito2->getGamma();
488 FRMezcla = FDeposito2->getR();
489 p0 = __units::BarToPa(FDeposito2->getPressure());
490 T0 =
pow2(FDeposito2->getSpeedsound() * __cons::ARef) / (FGamma * FRMezcla);
491 Fa0 = FDeposito2->getSpeedsound();
493 p1 = __units::BarToPa(FDeposito1->getPressure());
497 FGamma1 = __Gamma::G1(FGamma);
498 FGamma2 = __Gamma::G2(FGamma);
500 paso1 = (__geom::Circle_area(FValvula->getDiametro())) * p0 * sqrt(2 * FGamma / (FRMezcla * FGamma1 * T0));
501 paso2 = pow(p1 / p0, 2 / FGamma);
502 paso3 = pow(p1 / p0, FGamma2 / FGamma);
503 paso4 = sqrt(paso2 - paso3);
504 gasto_isen = paso1 * paso4;
512 if(FDeposito1->getPressure() > FDeposito2->getPressure()) {
513 FGasto = FCDSalida * gasto_isen;
514 FVelocity = FGasto / (__geom::Circle_area(FValvula->getDiametro())) / (p0 / (FRMezcla * T0));
515 FSentidoFlujoED1 = -1;
516 FSentidoFlujoED2 = 1;
517 FGastoImpreso = FGasto;
521 for(
int j = 0; j < FNumeroEspecies - 2; j++) {
522 FFraccionMasicaEspecie[j] = FDeposito1->GetFraccionMasicaEspecie(j);
523 FraccionMasicaAcum += FFraccionMasicaEspecie[j];
525 FFraccionMasicaEspecie[FNumeroEspecies - 2] = 1. - FraccionMasicaAcum;
527 FFraccionMasicaEspecie[FNumeroEspecies - 1] = FDeposito1->GetFraccionMasicaEspecie(FNumeroEspecies - 1);
530 FGasto = FCDEntrada * gasto_isen;
531 FVelocity = FGasto / (__geom::Circle_area(FValvula->getDiametro())) / (p0 / (FRMezcla * T0));
532 FSentidoFlujoED1 = 1;
533 FSentidoFlujoED2 = -1;
534 FGastoImpreso = FGasto;
537 for(
int j = 0; j < FNumeroEspecies - 2; j++) {
538 FFraccionMasicaEspecie[j] = FDeposito2->GetFraccionMasicaEspecie(j);
539 FraccionMasicaAcum += FFraccionMasicaEspecie[j];
541 FFraccionMasicaEspecie[FNumeroEspecies - 2] = 1. - FraccionMasicaAcum;
543 FFraccionMasicaEspecie[FNumeroEspecies - 1] = FDeposito2->GetFraccionMasicaEspecie(FNumeroEspecies - 1);
547 }
catch(exception &N) {
548 std::cout <<
"ERROR: TCCUnionEntreDepositos::CalculaCondicionContorno en la condicion de contorno: " << FNumeroCC <<
550 std::cout <<
"Tipo de error: " << N.what() << std::endl;
558 void TCCUnionEntreDepositos::CalculaUED() {
560 double p0, p1, T0, gasto_isen, gasto_real, a0, FraccionMasicaAcum = 0.;
561 double paso1 = 0., paso2 = 0., paso3 = 0., paso4 = 0.;
562 int signodep1 = 0, signodep2 = 0;
564 FPresionDep1 = FPresionDep1SUM / FTiempoDep1SUM;
565 FPresionDep2 = FPresionDep2SUM / FTiempoDep2SUM;
567 if(FPresionDep1 > FPresionDep2) {
568 FGamma = FGammaDep1SUM / FTiempoDep1SUM;
569 FRMezcla = FRDep1SUM / FTiempoDep1SUM;
570 p0 = __units::BarToPa(FPresionDep1);
571 a0 = FAsonidoDep1SUM / FTiempoDep1SUM;
572 T0 =
pow2(a0 * __cons::ARef) / (FGamma * FRMezcla);
573 Fa1 = FAsonidoDep2SUM / FTiempoDep2SUM;
574 p1 = __units::BarToPa(FPresionDep2);
576 FGamma1 = __Gamma::G1(FGamma);
577 FGamma2 = __Gamma::G2(FGamma);
579 paso1 = (__geom::Circle_area(FValvula->getDiametro())) * p0 * sqrt(2 * FGamma / (FRMezcla * FGamma1 * T0));
580 paso2 = pow(p1 / p0, 2 / FGamma);
581 paso3 = pow(p1 / p0, FGamma2 / FGamma);
582 paso4 = sqrt(paso2 - paso3);
583 gasto_isen = paso1 * paso4;
585 }
else if(FPresionDep2 > FPresionDep1) {
586 FGamma = FGammaDep2SUM / FTiempoDep2SUM;
587 FRMezcla = FRDep2SUM / FTiempoDep2SUM;
588 p0 = __units::BarToPa(FPresionDep2);
589 a0 = FAsonidoDep2SUM / FTiempoDep2SUM;
591 T0 =
pow2(a0 * __cons::ARef) / (FGamma * FRMezcla);
592 Fa1 = FAsonidoDep1SUM / FTiempoDep1SUM;
593 p1 = __units::BarToPa(FPresionDep1);
595 FGamma1 = __Gamma::G1(FGamma);
596 FGamma2 = __Gamma::G2(FGamma);
598 paso1 = (__geom::Circle_area(FValvula->getDiametro())) * p0 * sqrt(2 * FGamma / (FRMezcla * FGamma1 * T0));
599 paso2 = pow(p1 / p0, 2 / FGamma);
600 paso3 = pow(p1 / p0, FGamma2 / FGamma);
601 paso4 = sqrt(paso2 - paso3);
602 gasto_isen = paso1 * paso4;
611 if(FPresionDep1 > FPresionDep2) {
612 FGasto = FCDEntrada * gasto_isen;
613 FSentidoFlujoED1 = -1;
614 FSentidoFlujoED2 = 1;
615 FGastoImpreso = FGasto;
619 for(
int j = 0; j < FNumeroEspecies - 2; j++) {
620 FFraccionMasicaEspecie[j] = FDeposito1->GetFraccionMasicaEspecie(j);
621 FraccionMasicaAcum += FFraccionMasicaEspecie[j];
623 FFraccionMasicaEspecie[FNumeroEspecies - 2] = 1. - FraccionMasicaAcum;
625 FFraccionMasicaEspecie[FNumeroEspecies - 1] = FDeposito1->GetFraccionMasicaEspecie(FNumeroEspecies - 1);
627 }
else if(FPresionDep2 > FPresionDep1) {
628 FGasto = FCDSalida * gasto_isen;
629 FSentidoFlujoED1 = 1;
630 FSentidoFlujoED2 = -1;
631 FGastoImpreso = -FGasto;
634 for(
int j = 0; j < FNumeroEspecies - 2; j++) {
635 FFraccionMasicaEspecie[j] = FDeposito2->GetFraccionMasicaEspecie(j);
636 FraccionMasicaAcum += FFraccionMasicaEspecie[j];
638 FFraccionMasicaEspecie[FNumeroEspecies - 2] = 1. - FraccionMasicaAcum;
640 FFraccionMasicaEspecie[FNumeroEspecies - 1] = FDeposito2->GetFraccionMasicaEspecie(FNumeroEspecies - 1);
643 FPresionDep1SUM = 0.;
644 FAsonidoDep1SUM = 0.;
648 FPresionDep2SUM = 0.;
649 FAsonidoDep2SUM = 0.;
654 }
catch(exception &N) {
655 std::cout <<
"ERROR: TCCUnionEntreDepositos::CalculaUED en la condicion de contorno: " << FNumeroCC << std::endl;
656 std::cout <<
"Tipo de error: " << N.what() << std::endl;
664 void TCCUnionEntreDepositos::LeeResultadosInstantUED(
const char *FileWAM, fpos_t &filepos) {
665 int nvars = 0, var = 0;
667 FILE *fich = fopen(FileWAM,
"r");
668 fsetpos(fich, &filepos);
670 fscanf(fich,
"%d ", &nvars);
671 for(
int i = 0; i < nvars; i++) {
672 fscanf(fich,
"%d ", &var);
675 FResInstantUED.Massflow =
true;
678 std::cout <<
"Resultados instantaneos en UED(BC) " << FNumeroCC <<
" no implementados " << std::endl;
681 fgetpos(fich, &filepos);
683 }
catch(exception &N) {
684 std::cout <<
"ERROR: TCCUnionEntreDepositos::LeeResultadosInstantUED en la BC " << FNumeroCC << std::endl;
685 std::cout <<
"Tipo de error: " << N.what() << std::endl;
693 void TCCUnionEntreDepositos::CabeceraResultadosInstantUED(stringstream& insoutput) {
698 if(FResInstantUED.Massflow) {
700 insoutput << Label.c_str();
704 }
catch(exception &N) {
705 std::cout <<
"ERROR: TCCUnionEntreDepositos::CabeceraResultadosInstantUED en la BC " << FNumeroCC << std::endl;
706 std::cout <<
"Tipo de error: " << N.what() << std::endl;
714 void TCCUnionEntreDepositos::ResultadosInstantUED() {
716 if(FResInstantUED.Massflow)
717 FResInstantUED.GastoINS = FGastoImpreso;
719 }
catch(exception &N) {
720 std::cout <<
"ERROR: TCCUnionEntreDepositos::ResultadosInstantUED en la BC " << FNumeroCC << std::endl;
721 std::cout <<
"Tipo de error: " << N.what() << std::endl;
729 void TCCUnionEntreDepositos::ImprimeResultadosInstantUED(stringstream& insoutput) {
733 if(FResInstantUED.Massflow)
734 insoutput <<
"\t" << FResInstantUED.GastoINS;
737 }
catch(exception &N) {
738 std::cout <<
"ERROR: TCCUnionEntreDepositos::ImprimeResultadosInstantUED en la BC " << FNumeroCC << std::endl;
739 std::cout <<
"Tipo de error: " << N.what() << std::endl;
747 void TCCUnionEntreDepositos::ReadAverageResultsUED(
const char *FileWAM, fpos_t &filepos) {
748 int nvars = 0, var = 0;
750 FILE *fich = fopen(FileWAM,
"r");
751 fsetpos(fich, &filepos);
753 fscanf(fich,
"%d ", &nvars);
754 for(
int i = 0; i < nvars; i++) {
755 fscanf(fich,
"%d ", &var);
758 FResMediosUED.Massflow =
true;
761 std::cout <<
"Resultados medios en UED(BC) " << FNumeroCC <<
" no implementados " << std::endl;
764 fgetpos(fich, &filepos);
766 }
catch(exception &N) {
767 std::cout <<
"ERROR: TCCUnionEntreDepositos::ReadAverageResultsUED en la BC " << FNumeroCC << std::endl;
768 std::cout <<
"Tipo de error: " << N.what() << std::endl;
776 void TCCUnionEntreDepositos::HeaderAverageResultsUED(stringstream& medoutput) {
781 if(FResMediosUED.Massflow) {
783 medoutput << Label.c_str();
787 }
catch(exception &N) {
788 std::cout <<
"ERROR: TCCUnionEntreDepositos::HeaderAverageResultsUED en la BC " << FNumeroCC << std::endl;
789 std::cout <<
"Tipo de error: " << N.what() << std::endl;
797 void TCCUnionEntreDepositos::AcumulaResultadosMediosUED(
double Actual) {
800 double Delta = Actual - FResMediosUED.Tiempo0;
802 if(FResMediosUED.Massflow) {
803 FResMediosUED.GastoSUM += FGastoImpreso * Delta;
805 FResMediosUED.TiempoSUM += Delta;
806 FResMediosUED.Tiempo0 = Actual;
807 }
catch(exception &N) {
808 std::cout <<
"ERROR: TCCUnionEntreDepositos::AcumulaResultadosMediosUED en la BC " << FNumeroCC << std::endl;
809 std::cout <<
"Tipo de error: " << N.what() << std::endl;
817 void TCCUnionEntreDepositos::ResultadosMediosUED() {
819 if(FResMediosUED.Massflow) {
820 FResMediosUED.GastoMED = FResMediosUED.GastoSUM / FResMediosUED.TiempoSUM;
821 FResMediosUED.GastoSUM = 0.;
824 FResMediosUED.TiempoSUM = 0;
825 }
catch(exception &N) {
826 std::cout <<
"ERROR: TCCUnionEntreDepositos::ResultadosMediosUED en la BC " << FNumeroCC << std::endl;
827 std::cout <<
"Tipo de error: " << N.what() << std::endl;
834 void TCCUnionEntreDepositos::ImprimeResultadosMediosUED(stringstream& medoutput) {
838 if(FResMediosUED.Massflow)
839 medoutput <<
"\t" << FResMediosUED.GastoMED;
842 }
catch(exception &N) {
843 std::cout <<
"ERROR: TCCUnionEntreDepositos::ImprimeResultadosMediosUED en la BC " << FNumeroCC << std::endl;
844 std::cout <<
"Tipo de error: " << N.what() << std::endl;
852 #pragma package(smart_init)