5 #include "TOutputResults.h"
7 TOutputResults::TOutputResults() {
12 FPlotThisCycle =
true;
14 InsHeaderCreated =
false;
15 FWriteSpaceTime =
false;
17 WriteInsHeader =
false;
20 TOutputResults::~TOutputResults() {
24 void TOutputResults::ReadAverageResults(
const char* FileWAM, fpos_t& filepos,
TTubo** Pipe,
bool EngineBlock,
27 TController** Controller,
int TotalCycles,
char* ModelName) {
29 GetName(ModelName, FAvgFilename,
"AVG.DAT");
31 FILE *FileInput = fopen(FileWAM,
"r");
32 fsetpos(FileInput, &filepos);
37 fscanf(FileInput,
"%d ", &intAuxiliar);
40 FTypeOfInsResults = nmLastCyle;
41 FMultipleFiles =
false;
44 FTypeOfInsResults = nmAllCyclesIndependent;
45 FMultipleFiles =
true;
46 FCharacters = int(log10((
float) TotalCycles));
49 FTypeOfInsResults = nmAllCyclesConcatenated;
50 FMultipleFiles =
false;
53 FTypeOfInsResults = nmEveryNCycles;
54 FMultipleFiles =
true;
55 fscanf(FileInput,
"%d ", &FCyclePeriod);
56 FCharacters = int(log10(
float(TotalCycles) / FCyclePeriod));
63 fscanf(FileInput,
"%d ", &NumPipesAvg);
64 fscanf(FileInput,
"%d ", &intAuxiliar);
65 for(
int i = 0; i < NumPipesAvg; i++) {
66 fscanf(FileInput,
"%d ", &PipeID);
67 AvgPipe.push_back(Pipe[PipeID - 1]);
68 fgetpos(FileInput, &filepos);
70 AvgPipe[i]->ReadAverageResultsTubo(FileWAM, filepos, EngineBlock);
71 FileInput = fopen(FileWAM,
"r");
72 fsetpos(FileInput, &filepos);
76 int NumCylindersAvg = 0;
78 fscanf(FileInput,
"%d ", &NumCylindersAvg);
79 for(
int i = 0; i < NumCylindersAvg; i++) {
80 fscanf(FileInput,
"%d ", &CylinderID);
81 AvgCylinder.push_back(Engine[0]->GetCilindro(CylinderID - 1));
82 fgetpos(FileInput, &filepos);
84 AvgCylinder[i]->ReadAverageResultsCilindro(FileWAM, filepos);
85 FileInput = fopen(FileWAM,
"r");
86 fsetpos(FileInput, &filepos);
90 int NumEnginesAvg = 0;
92 fscanf(FileInput,
"%d ", &NumEnginesAvg);
93 if(NumEnginesAvg > 0) {
94 AvgEngine = Engine[0];
95 fgetpos(FileInput, &filepos);
97 AvgEngine->ReadAverageResultsBloqueMotor(FileWAM, filepos);
98 FileInput = fopen(FileWAM,
"r");
99 fsetpos(FileInput, &filepos);
103 int NumPlenumsAvg = 0;
105 fscanf(FileInput,
"%d ", &NumPlenumsAvg);
106 for(
int i = 0; i < NumPlenumsAvg; i++) {
107 fscanf(FileInput,
"%d ", &PlenumID);
108 AvgPlenum.push_back(Plenum[PlenumID - 1]);
109 fgetpos(FileInput, &filepos);
111 AvgPlenum[i]->ReadAverageResultsDep(FileWAM, filepos);
112 FileInput = fopen(FileWAM,
"r");
113 fsetpos(FileInput, &filepos);
119 fscanf(FileInput,
"%d ", &NumAxisAvg);
120 for(
int i = 0; i < NumAxisAvg; i++) {
121 fscanf(FileInput,
"%d ", &AxisID);
122 AvgAxis.push_back(Axis[AxisID - 1]);
123 fgetpos(FileInput, &filepos);
125 AvgAxis[i]->ReadAverageResultsEje(FileWAM, filepos);
126 FileInput = fopen(FileWAM,
"r");
127 fsetpos(FileInput, &filepos);
131 int NumCompressorAvg = 0;
132 int CompressorID = 0;
133 fscanf(FileInput,
"%d ", &NumCompressorAvg);
134 for(
int i = 0; i < NumCompressorAvg; i++) {
135 fscanf(FileInput,
"%d ", &CompressorID);
136 AvgCompressor.push_back(Compressor[CompressorID - 1]);
137 fgetpos(FileInput, &filepos);
139 AvgCompressor[i]->LeeDatosGraficasMedias(FileWAM, filepos);
140 FileInput = fopen(FileWAM,
"r");
141 fsetpos(FileInput, &filepos);
145 int NumTurbineAvg = 0;
147 fscanf(FileInput,
"%d ", &NumTurbineAvg);
148 for(
int i = 0; i < NumTurbineAvg; i++) {
149 fscanf(FileInput,
"%d ", &TurbineID);
150 AvgTurbine.push_back(Turbine[TurbineID - 1]);
151 fgetpos(FileInput, &filepos);
153 AvgTurbine[i]->ReadAverageResultsTurb(FileWAM, filepos);
154 FileInput = fopen(FileWAM,
"r");
155 fsetpos(FileInput, &filepos);
159 int NumValvesAvg = 0;
161 fscanf(FileInput,
"%d ", &NumValvesAvg);
162 for(
int i = 0; i < NumValvesAvg; i++) {
163 fscanf(FileInput,
"%d ", &ValveID);
164 if(BC[ValveID - 1]->getTipoCC() == nmIntakeValve || BC[ValveID - 1]->getTipoCC() == nmExhaustValve) {
165 AvgValve.push_back(
dynamic_cast<TCCCilindro*
>(BC[ValveID - 1])->getValvula());
166 }
else if(BC[ValveID - 1]->getTipoCC() == nmPipeToPlenumConnection) {
167 AvgValve.push_back(
dynamic_cast<TCCDeposito*
>(BC[ValveID - 1])->getValvula());
168 }
else if(BC[ValveID - 1]->getTipoCC() == nmUnionEntreDepositos) {
171 printf(
"ERROR: There is no valves asigned in the connection number %d\n", ValveID);
172 AvgValveNode.push_back(ValveID);
173 fgetpos(FileInput, &filepos);
175 AvgValve[i]->LeeDatosGraficasMED(FileWAM, filepos);
176 FileInput = fopen(FileWAM,
"r");
177 fsetpos(FileInput, &filepos);
184 fscanf(FileInput,
"%d ", &NumRootsAvg);
186 for(
int i = 0; i < NumRootsAvg; ++i) {
187 fscanf(FileInput,
"%d ", &RootID);
188 AvgRoot.push_back(Root[RootID - 1]);
189 fgetpos(FileInput, &filepos);
191 AvgRoot[i]->ReadAverageResultsCV(FileWAM, filepos);
192 FileInput = fopen(FileWAM,
"r");
193 fsetpos(FileInput, &filepos);
197 int NumVenturisAvg = 0;
199 fscanf(FileInput,
"%d ", &NumVenturisAvg);
201 for(
int i = 0; i < NumVenturisAvg; ++i) {
202 fscanf(FileInput,
"%d ", &VenturiID);
203 AvgVenturi.push_back(Venturi[VenturiID - 1]);
204 fgetpos(FileInput, &filepos);
206 AvgVenturi[i]->ReadAverageResultsVenturi(FileWAM, filepos);
207 FileInput = fopen(FileWAM,
"r");
208 fsetpos(FileInput, &filepos);
212 int NumConnectionsAvg = 0;
213 int ConnectionID = 0;
214 fscanf(FileInput,
"%d ", &NumConnectionsAvg);
216 for(
int i = 0; i < NumConnectionsAvg; ++i) {
217 fscanf(FileInput,
"%d ", &ConnectionID);
218 if(BC[ConnectionID - 1]->getTipoCC() == nmUnionEntreDepositos) {
221 printf(
"ERROR: Connection %d\n does not connect two plenums", ConnectionID);
223 fgetpos(FileInput, &filepos);
225 AvgConnection[i]->ReadAverageResultsUED(FileWAM, filepos);
226 FileInput = fopen(FileWAM,
"r");
227 fsetpos(FileInput, &filepos);
231 #ifdef ParticulateFilter
234 fscanf(FileInput,
"%d ", &NumDPFAvg);
235 for(
int i = 0; i < NumDPFAvg; i++) {
236 fscanf(FileInput,
"%d ", &DPFID);
237 AvgDPF.push_back(DPF[DPFID - 1]);
238 fgetpos(FileInput, &filepos);
240 AvgDPF[i]->LeeResultadosMediosDPF(FileWAM, filepos);
241 FileInput = fopen(FileWAM,
"r");
242 fsetpos(FileInput, &filepos);
247 int NumSensorAvg = 0;
249 fscanf(FileInput,
"%d ", &NumSensorAvg);
250 for(
int i = 0; i < NumSensorAvg; ++i) {
251 fscanf(FileInput,
"%d ", &SensorID);
252 AvgSensor.push_back(Sensor[SensorID - 1]);
253 fgetpos(FileInput, &filepos);
255 AvgSensor[i]->LeeResultadosMedSensor(FileWAM, filepos);
256 FileInput = fopen(FileWAM,
"r");
257 fsetpos(FileInput, &filepos);
261 int NumControllersAvg = 0;
262 int ControllerID = 0;
263 fscanf(FileInput,
"%d ", &NumControllersAvg);
265 for(
int i = 0; i < NumControllersAvg; ++i) {
266 fscanf(FileInput,
"%d ", &ControllerID);
267 AvgController.push_back(Controller[ControllerID - 1]);
268 fgetpos(FileInput, &filepos);
270 AvgController[i]->LeeResultadosMedControlador(FileWAM, filepos);
271 FileInput = fopen(FileWAM,
"r");
272 fsetpos(FileInput, &filepos);
274 fgetpos(FileInput, &filepos);
282 FAvgOutput <<
"\t" <<
PutLabel(701);
286 for(
Uint i = 0; i < AvgCylinder.size(); ++i) {
287 AvgCylinder[i]->HeaderAverageResultsCilindro(FAvgOutput, SpeciesName);
291 if(AvgEngine != NULL) {
292 AvgEngine->HeaderAverageResultsBloqueMotor(FAvgOutput);
296 for(
Uint i = 0; i < AvgPlenum.size(); ++i) {
297 AvgPlenum[i]->HeaderAverageResultsDep(FAvgOutput, SpeciesName);
301 for(
Uint i = 0; i < AvgPipe.size(); i++) {
302 AvgPipe[i]->HeaderAverageResults(FAvgOutput, SpeciesName);
306 for(
Uint i = 0; i < AvgValve.size(); i++) {
307 AvgValve[i]->CabeceraGraficaMED(FAvgOutput, AvgValveNode[i]);
311 for(
Uint i = 0; i < AvgVenturi.size(); i++) {
312 AvgVenturi[i]->HeaderAverageResultsVenturi(FAvgOutput);
316 for(
Uint i = 0; i < AvgAxis.size(); ++i) {
317 AvgAxis[i]->CabeceraResultadosMedEje(FAvgOutput);
321 for(
Uint i = 0; i < AvgCompressor.size(); ++i) {
322 AvgCompressor[i]->CabeceraGraficasMedias(FAvgOutput);
327 for(
Uint i = 0; i < AvgTurbine.size(); i++) {
328 AvgTurbine[i]->CabeceraResultadosMedTurb(FAvgOutput);
332 for(
Uint i = 0; i < AvgRoot.size(); i++) {
333 AvgRoot[i]->CabeceraResultadosMedCV(FAvgOutput);
337 for(
Uint i = 0; i < AvgConnection.size(); i++) {
338 AvgConnection[i]->HeaderAverageResultsUED(FAvgOutput);
342 #ifdef ParticulateFilter
343 for(
Uint i = 0; i < AvgDPF.size(); i++) {
344 AvgDPF[i]->CabeceraResultadosMedios(FAvgOutput, SpeciesName);
349 for(
Uint i = 0; i < AvgSensor.size(); i++) {
350 AvgSensor[i]->CabeceraResultadosMedSensor(FAvgOutput);
354 for(
Uint i = 0; i < AvgController.size(); i++) {
355 AvgController[i]->CabeceraResultadosMedControlador(FAvgOutput);
360 EXTERN->ImprimeCabeceraMedias(FAvgOutput);
364 void TOutputResults::OutputAverageResults(
double AcumulatedTime,
TCalculoExtern* EXTERN,
bool ThereIsDLL) {
368 pasafloat = (float)(AcumulatedTime);
370 FAvgOutput << std::endl;
371 FAvgOutput << AvgEngine->getCiclo();
373 FAvgOutput << pasafloat;
377 for(
Uint i = 0; i < AvgCylinder.size(); ++i) {
378 AvgCylinder[i]->CalculaResultadosMediosCilindro();
379 AvgCylinder[i]->ImprimeResultadosMediosCilindro(FAvgOutput);
383 if(AvgEngine != NULL) {
384 AvgEngine->ResultadosMediosBloqueMotor();
385 AvgEngine->ImprimeResultadosMediosBloqueMotor(FAvgOutput);
390 for(
Uint i = 0; i < AvgPlenum.size(); ++i) {
391 AvgPlenum[i]->ResultadosMediosDep();
392 AvgPlenum[i]->ImprimeResultadosMediosDep(FAvgOutput);
396 for(
Uint i = 0; i < AvgPipe.size(); ++i) {
397 AvgPipe[i]->ImprimeResultadosMedios(FAvgOutput);
401 for(
Uint i = 0; i < AvgValve.size(); i++) {
402 AvgValve[i]->ImprimeGraficaMED(FAvgOutput);
406 for(
Uint i = 0; i < AvgVenturi.size(); i++) {
407 AvgVenturi[i]->ResultadosMediosVenturi();
408 AvgVenturi[i]->ImprimeResultadosMediosVenturi(FAvgOutput);
412 for(
Uint i = 0; i < AvgAxis.size(); ++i) {
413 AvgAxis[i]->ResultadosMediosEje();
414 AvgAxis[i]->ImprimeResultadosMedEje(FAvgOutput);
418 for(
Uint i = 0; i < AvgCompressor.size(); ++i) {
419 AvgCompressor[i]->ImprimeGraficasMedias(FAvgOutput);
423 for(
Uint i = 0; i < AvgTurbine.size(); i++) {
424 AvgTurbine[i]->CalculaResultadosMediosTurb();
425 AvgTurbine[i]->ImprimeResultadosMedTurb(FAvgOutput);
429 for(
Uint i = 0; i < AvgRoot.size(); i++) {
430 AvgRoot[i]->ResultadosMediosCV();
431 AvgRoot[i]->ImprimeResultadosMedCV(FAvgOutput);
435 for(
Uint i = 0; i < AvgConnection.size(); i++) {
436 AvgConnection[i]->ResultadosMediosUED();
437 AvgConnection[i]->ImprimeResultadosMediosUED(FAvgOutput);
441 #ifdef ParticulateFilter
442 for(
int i = 0; i < AvgConnection.size(); i++) {
443 AvgDPF[i]->ImprimeResultadosMedios(FAvgOutput);
448 for(
Uint i = 0; i < AvgSensor.size(); i++) {
449 AvgSensor[i]->ResultadosMediosSensor();
450 AvgSensor[i]->ImprimeResultadosMedSensor(FAvgOutput);
454 for(
Uint i = 0; i < AvgController.size(); i++) {
455 AvgController[i]->ResultadosMediosController();
456 AvgController[i]->ImprimeResultadosMedControlador(FAvgOutput);
461 EXTERN->CalculaMedias();
462 EXTERN->ImprimeGraficosMedias(FAvgOutput);
467 void TOutputResults::CopyAverageResultsToFile(
int mode) {
470 FFileAvg.open(FAvgFilename, fstream::out);
472 FFileAvg.open(FAvgFilename, fstream::out | fstream::app);
475 FFileAvg << FAvgOutput.str();
482 void TOutputResults::CopyInstananeousResultsToFile(
int mode) {
484 if(FInsOutput.str() !=
"" && (WriteInsHeader || mode == 1)) {
489 ConvertCharacter(FFileCountI, FFileCountC, FCharacters);
491 strcat(FFileCountC,
".DAT");
492 GetName(FInsFilename, FileName, FFileCountC);
494 GetName(FInsFilename, FileName,
".DAT");
498 FFileIns.open(FileName, fstream::out);
501 FFileIns.open(FileName, fstream::out | fstream::app);
504 FFileIns.open(FileName, fstream::out);
507 if(!FFileIns.is_open()) {
508 cout <<
"WARNING: The file " << FileName <<
" in in use" << endl;
509 cout <<
"Please close the file, insert any character and press enter to continue" << endl;
514 FFileIns << FInsOutput.str();
524 void TOutputResults::ReadInstantaneousResults(
const char* FileWAM, fpos_t &filepos,
TBloqueMotor** Engine,
530 GetName(ModelName, FInsFilename,
"INS.DAT");
532 int err = remove(FInsFilename);
534 FILE *FileInput = fopen(FileWAM,
"r");
535 fsetpos(FileInput, &filepos);
538 int NumCylindersIns = 0;
540 fscanf(FileInput,
"%d ", &NumCylindersIns);
541 for(
int i = 0; i < NumCylindersIns; ++i) {
542 fscanf(FileInput,
"%d ", &CylinderID);
543 InsCylinder.push_back(Engine[0]->GetCilindro(CylinderID - 1));
544 fgetpos(FileInput, &filepos);
546 InsCylinder[i]->ReadInstantaneousResultsCilindro(FileWAM, filepos);
547 FileInput = fopen(FileWAM,
"r");
548 fsetpos(FileInput, &filepos);
552 int NumPlenumsIns = 0;
554 fscanf(FileInput,
"%d ", &NumPlenumsIns);
555 for(
int i = 0; i < NumPlenumsIns; i++) {
556 fscanf(FileInput,
"%d ", &PlenumID);
557 InsPlenum.push_back(Plenum[PlenumID - 1]);
558 fgetpos(FileInput, &filepos);
560 InsPlenum[i]->ReadInstantaneousResultsDep(FileWAM, filepos);
561 FileInput = fopen(FileWAM,
"r");
562 fsetpos(FileInput, &filepos);
568 fscanf(FileInput,
"%d ", &NumPipesIns);
570 int numeroparawamer = 0;
571 fscanf(FileInput,
"%d ", &numeroparawamer);
572 for(
int i = 0; i < NumPipesIns; i++) {
573 fscanf(FileInput,
"%d ", &PipeID);
574 InsPipe.push_back(Pipe[PipeID - 1]);
575 fgetpos(FileInput, &filepos);
577 InsPipe[i]->ReadInstantaneousResultsTubo(FileWAM, filepos, Engine);
578 FileInput = fopen(FileWAM,
"r");
579 fsetpos(FileInput, &filepos);
583 int NumVenturisIns = 0;
585 fscanf(FileInput,
"%d ", &NumVenturisIns);
586 for(
int i = 0; i < NumVenturisIns; i++) {
587 fscanf(FileInput,
"%d ", &VenturiID);
588 InsVenturi.push_back(Venturi[VenturiID - 1]);
589 fgetpos(FileInput, &filepos);
591 InsVenturi[i]->LeeResultadosInstantVenturi(FileWAM, filepos);
592 FileInput = fopen(FileWAM,
"r");
593 fsetpos(FileInput, &filepos);
597 int NumValvesIns = 0;
599 fscanf(FileInput,
"%d", &NumValvesIns);
600 for(
int i = 0; i < NumValvesIns; i++) {
601 fscanf(FileInput,
"%d ", &ValveID);
602 if(BC[ValveID - 1]->getTipoCC() == nmIntakeValve || BC[ValveID - 1]->getTipoCC() == nmExhaustValve) {
603 InsValve.push_back(
dynamic_cast<TCCCilindro*
>(BC[ValveID - 1])->getValvula());
604 }
else if(BC[ValveID - 1]->getTipoCC() == nmPipeToPlenumConnection) {
605 InsValve.push_back(
dynamic_cast<TCCDeposito*
>(BC[ValveID - 1])->getValvula());
606 }
else if(BC[ValveID - 1]->getTipoCC() == nmUnionEntreDepositos) {
609 printf(
"ERROR: There is no valves asigned in the connection number %d\n", ValveID);
610 InsValveNode.push_back(ValveID);
611 fgetpos(FileInput, &filepos);
613 InsValve[i]->LeeDatosGraficasINS(FileWAM, filepos);
614 FileInput = fopen(FileWAM,
"r");
615 fsetpos(FileInput, &filepos);
621 fscanf(FileInput,
"%d", &NumTurboIns);
622 for(
int i = 0; i < NumTurboIns; i++) {
623 fscanf(FileInput,
"%d", &TurboID);
624 InsTurbo.push_back(Turbo[TurboID - 1]);
625 fgetpos(FileInput, &filepos);
627 InsTurbo[i]->ReadInstantaneousResultsEje(FileWAM, filepos);
628 FileInput = fopen(FileWAM,
"r");
629 fsetpos(FileInput, &filepos);
632 int NumCompressorIns = 0;
633 int CompressorID = 0;
634 fscanf(FileInput,
"%d ", &NumCompressorIns);
635 for(
int i = 0; i < NumCompressorIns; i++) {
636 fscanf(FileInput,
"%d ", &CompressorID);
637 InsCompressor.push_back(Compressor[CompressorID - 1]);
638 fgetpos(FileInput, &filepos);
640 InsCompressor[i]->LeeDatosGraficasInstantaneas(FileWAM, filepos);
641 FileInput = fopen(FileWAM,
"r");
642 fsetpos(FileInput, &filepos);
645 int NumTurbineIns = 0;
647 fscanf(FileInput,
"%d ", &NumTurbineIns);
648 for(
int i = 0; i < NumTurbineIns; i++) {
649 fscanf(FileInput,
"%d ", &TurbineID);
650 InsTurbine.push_back(Turbine[TurbineID - 1]);
651 fgetpos(FileInput, &filepos);
653 InsTurbine[i]->LeeResultadosInstantTurb(FileWAM, filepos);
654 FileInput = fopen(FileWAM,
"r");
655 fsetpos(FileInput, &filepos);
660 fscanf(FileInput,
"%d ", &NumRootsIns);
661 for(
int i = 0; i < NumRootsIns; ++i) {
662 fscanf(FileInput,
"%d ", &RootID);
663 InsRoot.push_back(Root[RootID - 1]);
664 fgetpos(FileInput, &filepos);
666 InsRoot[i]->LeeResultadosInstantCV(FileWAM, filepos);
667 FileInput = fopen(FileWAM,
"r");
668 fsetpos(FileInput, &filepos);
672 int NumConnectionsIns = 0;
673 int ConnectionID = 0;
674 fscanf(FileInput,
"%d ", &NumConnectionsIns);
675 for(
int i = 0; i < NumConnectionsIns; ++i) {
676 fscanf(FileInput,
"%d ", &ConnectionID);
677 if(BC[ConnectionID - 1]->getTipoCC() == nmUnionEntreDepositos) {
680 printf(
"ERROR: Connection %d\n does not connect two plenums", ConnectionID);
682 fgetpos(FileInput, &filepos);
684 InsConnection[i]->LeeResultadosInstantUED(FileWAM, filepos);
685 FileInput = fopen(FileWAM,
"r");
686 fsetpos(FileInput, &filepos);
692 int NumWasteGateIns = 0;
695 fscanf(FileInput,
"%d ", &NumWasteGateIns);
696 for(
int i = 0; i < NumWasteGateIns; i++) {
697 fscanf(FileInput,
"%d ", &WasteGateID);
698 for(
int j = 0; j < NumberOfWasteGates; j++) {
699 if(BCWasteGate[j]->getNumeroCC() == WasteGateID) {
701 fgetpos(FileInput, &filepos);
703 if(BCWasteGate[j]->getTipoCC() == nmPipeToPlenumConnection) {
704 InsWasteGate.push_back(
dynamic_cast<TWasteGate*
>(
dynamic_cast<TCCDeposito*
>(BCWasteGate[j])->getValvula()));
705 }
else if(BCWasteGate[j]->getTipoCC() == nmUnionEntreDepositos) {
708 InsWasteGate[i]->LeeDatosGraficasINS(FileWAM, filepos);
709 FileInput = fopen(FileWAM,
"r");
710 fsetpos(FileInput, &filepos);
714 printf(
"ERROR: A WasteGate does not exist in connection number %d\n", WasteGateID);
721 fscanf(FileInput,
"%d ", &NumReedIns);
722 for(
int i = 0; i < NumReedIns; i++) {
723 fscanf(FileInput,
"%d ", &ReedID);
724 for(
int j = 0; j < NumberOfReedValves; j++) {
725 if(BCReedValve[j]->getNumeroCC() == ReedID) {
727 fgetpos(FileInput, &filepos);
729 if(BCReedValve[j]->getTipoCC() == nmPipeToPlenumConnection) {
730 InsReedValve.push_back(
dynamic_cast<TLamina*
>(
dynamic_cast<TCCDeposito*
>(BCReedValve[j])->getValvula()));
731 }
else if(BCReedValve[j]->getTipoCC() == nmUnionEntreDepositos) {
734 InsReedValve[i]->LeeDatosGraficasINS(FileWAM, filepos);
735 FileInput = fopen(FileWAM,
"r");
736 fsetpos(FileInput, &filepos);
740 printf(
"ERROR: A reed valve does not exist in connection number %d\n", ReedID);
746 #ifdef ParticulateFilter
749 fscanf(FileInput,
"%d ", &NumDPFIns);
750 for(
int i = 0; i < NumDPFIns; ++i) {
751 fscanf(FileInput,
"%d ", &DPFID);
752 InsDPF.push_back(DPF[DPFID - 1]);
753 fgetpos(FileInput, &filepos);
755 InsDPF[i]->LeeResultadosInstantaneosDPF(FileWAM, filepos);
756 FileInput = fopen(FileWAM,
"r");
757 fsetpos(FileInput, &filepos);
762 int NumSensorIns = 0;
764 fscanf(FileInput,
"%d ", &NumSensorIns);
765 for(
int i = 0; i < NumSensorIns; ++i) {
766 fscanf(FileInput,
"%d ", &SensorID);
767 InsSensor.push_back(Sensor[SensorID - 1]);
768 fgetpos(FileInput, &filepos);
770 InsSensor[i]->LeeResultadosInsSensor(FileWAM, filepos);
771 FileInput = fopen(FileWAM,
"r");
772 fsetpos(FileInput, &filepos);
777 int NumControllersIns = 0;
778 int ControllerID = 0;
779 fscanf(FileInput,
"%d ", &NumControllersIns);
781 for(
int i = 0; i < NumControllersIns; ++i) {
782 fscanf(FileInput,
"%d ", &ControllerID);
783 InsController.push_back(Controller[ControllerID - 1]);
784 fgetpos(FileInput, &filepos);
786 InsController[i]->LeeResultadosInsControlador(FileWAM, filepos);
787 FileInput = fopen(FileWAM,
"r");
788 fsetpos(FileInput, &filepos);
791 fgetpos(FileInput, &filepos);
796 void TOutputResults::ReadSpaceTimeResults(
const char* FileWAM, fpos_t &filepos,
TTubo** Pipe,
TBloqueMotor** Engine,
800 int FNumMagnitudesEspTemp = 0;
801 int NumCilEspTemp = 0;
802 int NumDepEspTemp = 0;
803 int NumTubEspTemp = 0;
805 FILE *FileInput = fopen(FileWAM,
"r");
806 fsetpos(FileInput, &filepos);
808 fscanf(FileInput,
"%d ", &FNumMagnitudesEspTemp);
809 if(FNumMagnitudesEspTemp != 0) {
810 fscanf(FileInput,
"%d %d %d ", &NumCilEspTemp, &NumDepEspTemp, &NumTubEspTemp);
813 for(
int i = 0; i < NumCilEspTemp; ++i) {
814 fscanf(FileInput,
"%d ", &CylinderID);
815 STCylinder.push_back(Engine[0]->GetCilindro(CylinderID - 1));
819 for(
int i = 0; i < NumDepEspTemp; ++i) {
820 fscanf(FileInput,
"%d ", &PlenumID);
821 STPlenum.push_back(Plenum[PlenumID - 1]);
825 for(
int i = 0; i < NumTubEspTemp; ++i) {
826 fscanf(FileInput,
"%d ", &PipeID);
827 STPipe.push_back(Pipe[PipeID - 1]);
832 for(
int i = 0; i < FNumMagnitudesEspTemp; ++i) {
833 fscanf(FileInput,
"%d ", &ParameterID);
834 FParameterSpaceTime.push_back(ParameterID);
838 fgetpos(FileInput, &filepos);
843 void TOutputResults::DoSpaceTimeFiles(
int SpeciesNumber) {
845 if(FParameterSpaceTime.size() > 0) {
847 if(SpeciesNumber == 3) {
848 for(
int j = 0; j <= 299; ++j) {
853 salYAireFresco[j] =
'\0';
854 salYGasQuemado[j] =
'\0';
855 salGastoAireFresco[j] =
'\0';
856 salGastoGasQuemado[j] =
'\0';
858 }
else if(SpeciesNumber == 4) {
859 for(
int j = 0; j <= 299; ++j) {
864 salYCombustible[j] =
'\0';
865 salYAireFresco[j] =
'\0';
866 salYGasQuemado[j] =
'\0';
867 salGastoCombustible[j] =
'\0';
868 salGastoAireFresco[j] =
'\0';
869 salGastoGasQuemado[j] =
'\0';
871 }
else if(SpeciesNumber == 9) {
872 for(
int j = 0; j <= 299; ++j) {
885 salGastoO2[j] =
'\0';
886 salGastoN2[j] =
'\0';
887 salGastoCO2[j] =
'\0';
888 salGastoH2O[j] =
'\0';
889 salGastoCO[j] =
'\0';
890 salGastoHC[j] =
'\0';
891 salGastoSoot[j] =
'\0';
892 salGastoNOx[j] =
'\0';
894 }
else if(SpeciesNumber == 10) {
895 for(
int j = 0; j <= 299; ++j) {
907 salYCombustible[j] =
'\0';
909 salGastoO2[j] =
'\0';
910 salGastoN2[j] =
'\0';
911 salGastoCO2[j] =
'\0';
912 salGastoH2O[j] =
'\0';
913 salGastoCO[j] =
'\0';
914 salGastoHC[j] =
'\0';
915 salGastoSoot[j] =
'\0';
916 salGastoCombustible[j] =
'\0';
917 salGastoNOx[j] =
'\0';
921 for(
unsigned int i = 0; i < FParameterSpaceTime.size(); ++i) {
922 switch(FParameterSpaceTime[i]) {
925 while(FInsFilename[k] !=
'.') {
926 salpre[k] = FInsFilename[k];
929 strcat(salpre,
"_pre.DAT");
930 FileOutPressure = fopen(salpre,
"w");
934 while(FInsFilename[k] !=
'.') {
935 saltem[k] = FInsFilename[k];
938 strcat(saltem,
"_tem.DAT");
939 FileOutTemp = fopen(saltem,
"w");
943 while(FInsFilename[k] !=
'.') {
944 salvel[k] = FInsFilename[k];
947 strcat(salvel,
"_vel.DAT");
948 FileOutVel = fopen(salvel,
"w");
952 while(FInsFilename[k] !=
'.') {
953 salair[k] = FInsFilename[k];
956 strcat(salair,
"_air.DAT");
957 FileOutFlow = fopen(salair,
"w");
961 if(SpeciesNumber == 3) {
962 while(FInsFilename[k] !=
'.') {
963 salYGasQuemado[k] = FInsFilename[k];
964 salYAireFresco[k] = FInsFilename[k];
967 strcat(salYGasQuemado,
"_YGQ.DAT");
968 strcat(salYAireFresco,
"_YAF.DAT");
969 FOutYBurntGas = fopen(salYGasQuemado,
"w");
970 FOutYFreshAir = fopen(salYAireFresco,
"w");
972 }
else if(SpeciesNumber == 4) {
973 while(FInsFilename[k] !=
'.') {
974 salYGasQuemado[k] = FInsFilename[k];
975 salYCombustible[k] = FInsFilename[k];
976 salYAireFresco[k] = FInsFilename[k];
979 strcat(salYGasQuemado,
"_YGQ.DAT");
980 strcat(salYCombustible,
"_Ycomb.DAT");
981 strcat(salYAireFresco,
"_YAF.DAT");
982 FOutYBurntGas = fopen(salYGasQuemado,
"w");
983 FOutYFuel = fopen(salYCombustible,
"w");
984 FOutYFreshAir = fopen(salYAireFresco,
"w");
986 }
else if(SpeciesNumber == 9) {
987 while(FInsFilename[k] !=
'.') {
988 salYO2[k] = FInsFilename[k];
989 salYCO2[k] = FInsFilename[k];
990 salYH2O[k] = FInsFilename[k];
991 salYHC[k] = FInsFilename[k];
992 salYSoot[k] = FInsFilename[k];
993 salYNOx[k] = FInsFilename[k];
994 salYCO[k] = FInsFilename[k];
995 salYN2[k] = FInsFilename[k];
998 strcat(salYO2,
"_YO2.DAT");
999 strcat(salYCO2,
"_YCO2.DAT");
1000 strcat(salYH2O,
"_YH2O.DAT");
1001 strcat(salYHC,
"_YHC.DAT");
1002 strcat(salYSoot,
"_YSoot.DAT");
1003 strcat(salYNOx,
"_YNOx.DAT");
1004 strcat(salYCO,
"_YCO.DAT");
1005 strcat(salYN2,
"_YN2.DAT");
1006 FOutYO2 = fopen(salYO2,
"w");
1007 FOutYCO2 = fopen(salYCO2,
"w");
1008 FOutYH2O = fopen(salYH2O,
"w");
1009 FOutYHC = fopen(salYHC,
"w");
1010 FOutYSoot = fopen(salYSoot,
"w");
1011 FOutYNOx = fopen(salYNOx,
"w");
1012 FOutYCO = fopen(salYCO,
"w");
1013 FOutYN2 = fopen(salYN2,
"w");
1015 }
else if(SpeciesNumber == 10) {
1016 while(FInsFilename[k] !=
'.') {
1017 salYO2[k] = FInsFilename[k];
1018 salYCO2[k] = FInsFilename[k];
1019 salYH2O[k] = FInsFilename[k];
1020 salYHC[k] = FInsFilename[k];
1021 salYSoot[k] = FInsFilename[k];
1022 salYNOx[k] = FInsFilename[k];
1023 salYCO[k] = FInsFilename[k];
1024 salYCombustible[k] = FInsFilename[k];
1025 salYN2[k] = FInsFilename[k];
1028 strcat(salYO2,
"_YO2.DAT");
1029 strcat(salYCO2,
"_YCO2.DAT");
1030 strcat(salYH2O,
"_YH2O.DAT");
1031 strcat(salYHC,
"_YHC.DAT");
1032 strcat(salYSoot,
"_YSoot.DAT");
1033 strcat(salYNOx,
"_YNOx.DAT");
1034 strcat(salYCO,
"_YCO.DAT");
1035 strcat(salYCombustible,
"_YComb.DAT");
1036 strcat(salYN2,
"_YN2.DAT");
1037 FOutYO2 = fopen(salYO2,
"w");
1038 FOutYCO2 = fopen(salYCO2,
"w");
1039 FOutYH2O = fopen(salYH2O,
"w");
1040 FOutYHC = fopen(salYHC,
"w");
1041 FOutYSoot = fopen(salYSoot,
"w");
1042 FOutYNOx = fopen(salYNOx,
"w");
1043 FOutYCO = fopen(salYCO,
"w");
1044 FOutYFuel = fopen(salYCombustible,
"w");
1045 FOutYN2 = fopen(salYN2,
"w");
1050 if(SpeciesNumber == 3) {
1051 while(FInsFilename[k] !=
'.') {
1052 salGastoGasQuemado[k] = FInsFilename[k];
1053 salGastoAireFresco[k] = FInsFilename[k];
1056 strcat(salGastoGasQuemado,
"_GastoGQ.DAT");
1057 strcat(salGastoAireFresco,
"_GastoAF.DAT");
1058 FOutFlowBurntGas = fopen(salGastoGasQuemado,
"w");
1059 FOutFlowFreshAir = fopen(salGastoAireFresco,
"w");
1061 }
else if(SpeciesNumber == 4) {
1062 while(FInsFilename[k] !=
'.') {
1063 salGastoGasQuemado[k] = FInsFilename[k];
1064 salGastoCombustible[k] = FInsFilename[k];
1065 salGastoAireFresco[k] = FInsFilename[k];
1068 strcat(salGastoGasQuemado,
"_GastoGQ.DAT");
1069 strcat(salGastoCombustible,
"_Gastocomb.DAT");
1070 strcat(salGastoAireFresco,
"_GastoAF.DAT");
1071 FOutFlowBurntGas = fopen(salGastoGasQuemado,
"w");
1072 FOutFlowFuel = fopen(salGastoCombustible,
"w");
1073 FOutFlowFreshAir = fopen(salGastoAireFresco,
"w");
1075 }
else if(SpeciesNumber == 9) {
1076 while(FInsFilename[k] !=
'.') {
1077 salGastoO2[k] = FInsFilename[k];
1078 salGastoCO2[k] = FInsFilename[k];
1079 salGastoH2O[k] = FInsFilename[k];
1080 salGastoHC[k] = FInsFilename[k];
1081 salGastoSoot[k] = FInsFilename[k];
1082 salGastoNOx[k] = FInsFilename[k];
1083 salGastoCO[k] = FInsFilename[k];
1084 salGastoN2[k] = FInsFilename[k];
1087 strcat(salGastoO2,
"_GastoO2.DAT");
1088 strcat(salGastoCO2,
"_GastoCO2.DAT");
1089 strcat(salGastoH2O,
"_GastoH2O.DAT");
1090 strcat(salGastoHC,
"_GastoHC.DAT");
1091 strcat(salGastoSoot,
"_GastoSoot.DAT");
1092 strcat(salGastoNOx,
"_GastoNOx.DAT");
1093 strcat(salGastoCO,
"_GastoCO.DAT");
1094 strcat(salGastoN2,
"_GastoN2.DAT");
1095 FOutFlowO2 = fopen(salGastoO2,
"w");
1096 FOutFlowCO2 = fopen(salGastoCO2,
"w");
1097 FOutFlowH2O = fopen(salGastoH2O,
"w");
1098 FOutFlowHC = fopen(salGastoHC,
"w");
1099 FOutFlowSoot = fopen(salGastoSoot,
"w");
1100 FOutFlowNOx = fopen(salGastoNOx,
"w");
1101 FOutFlowCO = fopen(salGastoCO,
"w");
1102 FOutFlowN2 = fopen(salGastoN2,
"w");
1104 }
else if(SpeciesNumber == 10) {
1105 while(FInsFilename[k] !=
'.') {
1106 salGastoO2[k] = FInsFilename[k];
1107 salGastoCO2[k] = FInsFilename[k];
1108 salGastoH2O[k] = FInsFilename[k];
1109 salGastoHC[k] = FInsFilename[k];
1110 salGastoSoot[k] = FInsFilename[k];
1111 salGastoNOx[k] = FInsFilename[k];
1112 salGastoCO[k] = FInsFilename[k];
1113 salGastoCombustible[k] = FInsFilename[k];
1114 salGastoN2[k] = FInsFilename[k];
1117 strcat(salGastoO2,
"_GastoO2.DAT");
1118 strcat(salGastoCO2,
"_GastoCO2.DAT");
1119 strcat(salGastoH2O,
"_GastoH2O.DAT");
1120 strcat(salGastoHC,
"_GastoHC.DAT");
1121 strcat(salGastoSoot,
"_GastoSoot.DAT");
1122 strcat(salGastoNOx,
"_GastoNOx.DAT");
1123 strcat(salGastoCO,
"_GastoCO.DAT");
1124 strcat(salGastoCombustible,
"_GastoComb.DAT");
1125 strcat(salGastoN2,
"_GastoN2.DAT");
1126 FOutFlowO2 = fopen(salGastoO2,
"w");
1127 FOutFlowCO2 = fopen(salGastoCO2,
"w");
1128 FOutFlowH2O = fopen(salGastoH2O,
"w");
1129 FOutFlowHC = fopen(salGastoHC,
"w");
1130 FOutFlowSoot = fopen(salGastoSoot,
"w");
1131 FOutFlowNOx = fopen(salGastoNOx,
"w");
1132 FOutFlowCO = fopen(salGastoCO,
"w");
1133 FOutFlowFuel = fopen(salGastoCombustible,
"w");
1134 FOutFlowN2 = fopen(salGastoN2,
"w");
1143 void TOutputResults::HeaderSpaceTimeResults(
double thmax,
double grmax,
double agincr,
int SpeciesNumber)
1147 for(
unsigned int i = 0; i < FParameterSpaceTime.size(); ++i) {
1148 switch(FParameterSpaceTime[i]) {
1150 fprintf(FileOutPressure,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1151 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1152 fprintf(FileOutPressure,
"%d ", STCylinder[j]->getNumeroCilindro());
1154 fprintf(FileOutPressure,
"\n");
1155 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1156 fprintf(FileOutPressure,
"%d ", STPlenum[j]->getNumeroDeposito());
1158 fprintf(FileOutPressure,
"\n");
1159 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1160 fprintf(FileOutPressure,
"%d ", STPipe[j]->getNumeroTubo());
1162 fprintf(FileOutPressure,
"\n");
1163 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1164 fprintf(FileOutPressure,
"%d ", STPipe[j]->getNin());
1166 fprintf(FileOutPressure,
"\n%d", (
int)((thmax - grmax) / agincr));
1169 fprintf(FileOutTemp,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1170 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1171 fprintf(FileOutTemp,
"%d ", STCylinder[j]->getNumeroCilindro());
1173 fprintf(FileOutTemp,
"\n");
1174 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1175 fprintf(FileOutTemp,
"%d ", STPlenum[j]->getNumeroDeposito());
1177 fprintf(FileOutTemp,
"\n");
1178 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1179 fprintf(FileOutTemp,
"%d ", STPipe[j]->getNumeroTubo());
1181 fprintf(FileOutTemp,
"\n");
1182 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1183 fprintf(FileOutTemp,
"%d ", STPipe[j]->getNin());
1185 fprintf(FileOutTemp,
"\n%d", (
int)((thmax - grmax) / agincr));
1188 fprintf(FileOutVel,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1189 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1190 fprintf(FileOutVel,
"%d ", STCylinder[j]->getNumeroCilindro());
1192 fprintf(FileOutVel,
"\n");
1193 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1194 fprintf(FileOutVel,
"%d ", STPlenum[j]->getNumeroDeposito());
1196 fprintf(FileOutVel,
"\n");
1197 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1198 fprintf(FileOutVel,
"%d ", STPipe[j]->getNumeroTubo());
1200 fprintf(FileOutVel,
"\n");
1201 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1202 fprintf(FileOutVel,
"%d ", STPipe[j]->getNin());
1204 fprintf(FileOutVel,
"\n%d", (
int)((thmax - grmax) / agincr));
1207 fprintf(FileOutFlow,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1208 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1209 fprintf(FileOutFlow,
"%d ", STCylinder[j]->getNumeroCilindro());
1211 fprintf(FileOutFlow,
"\n");
1212 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1213 fprintf(FileOutFlow,
"%d ", STPlenum[j]->getNumeroDeposito());
1215 fprintf(FileOutFlow,
"\n");
1216 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1217 fprintf(FileOutFlow,
"%d ", STPipe[j]->getNumeroTubo());
1219 fprintf(FileOutFlow,
"\n");
1220 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1221 fprintf(FileOutFlow,
"%d ", STPipe[j]->getNin());
1223 fprintf(FileOutFlow,
"\n%d", (
int)((thmax - grmax) / agincr));
1226 if(SpeciesNumber == 3) {
1227 fprintf(FOutYBurntGas,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1228 fprintf(FOutYFreshAir,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1229 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1230 fprintf(FOutYBurntGas,
"%d ", STCylinder[j]->getNumeroCilindro());
1231 fprintf(FOutYFreshAir,
"%d ", STCylinder[j]->getNumeroCilindro());
1233 fprintf(FOutYBurntGas,
"\n");
1234 fprintf(FOutYFreshAir,
"\n");
1235 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1236 fprintf(FOutYBurntGas,
"%d ", STPlenum[j]->getNumeroDeposito());
1237 fprintf(FOutYFreshAir,
"%d ", STPlenum[j]->getNumeroDeposito());
1239 fprintf(FOutYBurntGas,
"\n");
1240 fprintf(FOutYFreshAir,
"\n");
1241 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1242 fprintf(FOutYBurntGas,
"%d ", STPipe[j]->getNumeroTubo());
1243 fprintf(FOutYFreshAir,
"%d ", STPipe[j]->getNumeroTubo());
1245 fprintf(FOutYBurntGas,
"\n");
1246 fprintf(FOutYFreshAir,
"\n");
1247 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1248 fprintf(FOutYBurntGas,
"%d ", STPipe[j]->getNin());
1249 fprintf(FOutYFreshAir,
"%d ", STPipe[j]->getNin());
1251 fprintf(FOutYBurntGas,
"\n%d", (
int)((thmax - grmax) / agincr));
1252 fprintf(FOutYFreshAir,
"\n%d", (
int)((thmax - grmax) / agincr));
1254 }
else if(SpeciesNumber == 4) {
1255 fprintf(FOutYBurntGas,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1256 fprintf(FOutYFuel,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1257 fprintf(FOutYFreshAir,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1258 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1259 fprintf(FOutYBurntGas,
"%d ", STCylinder[j]->getNumeroCilindro());
1260 fprintf(FOutYFuel,
"%d ", STCylinder[j]->getNumeroCilindro());
1261 fprintf(FOutYFreshAir,
"%d ", STCylinder[j]->getNumeroCilindro());
1263 fprintf(FOutYBurntGas,
"\n");
1264 fprintf(FOutYFuel,
"\n");
1265 fprintf(FOutYFreshAir,
"\n");
1266 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1267 fprintf(FOutYBurntGas,
"%d ", STPlenum[j]->getNumeroDeposito());
1268 fprintf(FOutYFuel,
"%d ", STPlenum[j]->getNumeroDeposito());
1269 fprintf(FOutYFreshAir,
"%d ", STPlenum[j]->getNumeroDeposito());
1271 fprintf(FOutYBurntGas,
"\n");
1272 fprintf(FOutYFuel,
"\n");
1273 fprintf(FOutYFreshAir,
"\n");
1274 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1275 fprintf(FOutYBurntGas,
"%d ", STPipe[j]->getNumeroTubo());
1276 fprintf(FOutYFuel,
"%d ", STPipe[j]->getNumeroTubo());
1277 fprintf(FOutYFreshAir,
"%d ", STPipe[j]->getNumeroTubo());
1279 fprintf(FOutYBurntGas,
"\n");
1280 fprintf(FOutYFuel,
"\n");
1281 fprintf(FOutYFreshAir,
"\n");
1282 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1283 fprintf(FOutYBurntGas,
"%d ", STPipe[j]->getNin());
1284 fprintf(FOutYFuel,
"%d ", STPipe[j]->getNin());
1285 fprintf(FOutYFreshAir,
"%d ", STPipe[j]->getNin());
1287 fprintf(FOutYBurntGas,
"\n%d", (
int)((thmax - grmax) / agincr));
1288 fprintf(FOutYFuel,
"\n%d", (
int)((thmax - grmax) / agincr));
1289 fprintf(FOutYFreshAir,
"\n%d", (
int)((thmax - grmax) / agincr));
1291 }
else if(SpeciesNumber == 9) {
1292 fprintf(FOutYO2,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1293 fprintf(FOutYCO2,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1294 fprintf(FOutYH2O,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1295 fprintf(FOutYHC,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1296 fprintf(FOutYSoot,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1297 fprintf(FOutYNOx,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1298 fprintf(FOutYCO,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1299 fprintf(FOutYN2,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1300 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1301 fprintf(FOutYO2,
"%d ", STCylinder[j]->getNumeroCilindro());
1302 fprintf(FOutYCO2,
"%d ", STCylinder[j]->getNumeroCilindro());
1303 fprintf(FOutYH2O,
"%d ", STCylinder[j]->getNumeroCilindro());
1304 fprintf(FOutYHC,
"%d ", STCylinder[j]->getNumeroCilindro());
1305 fprintf(FOutYSoot,
"%d ", STCylinder[j]->getNumeroCilindro());
1306 fprintf(FOutYNOx,
"%d ", STCylinder[j]->getNumeroCilindro());
1307 fprintf(FOutYCO,
"%d ", STCylinder[j]->getNumeroCilindro());
1308 fprintf(FOutYN2,
"%d ", STCylinder[j]->getNumeroCilindro());
1310 fprintf(FOutYO2,
"\n");
1311 fprintf(FOutYCO2,
"\n");
1312 fprintf(FOutYH2O,
"\n");
1313 fprintf(FOutYHC,
"\n");
1314 fprintf(FOutYSoot,
"\n");
1315 fprintf(FOutYNOx,
"\n");
1316 fprintf(FOutYCO,
"\n");
1317 fprintf(FOutYN2,
"\n");
1318 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1319 fprintf(FOutYO2,
"%d ", STPlenum[j]->getNumeroDeposito());
1320 fprintf(FOutYCO2,
"%d ", STPlenum[j]->getNumeroDeposito());
1321 fprintf(FOutYH2O,
"%d ", STPlenum[j]->getNumeroDeposito());
1322 fprintf(FOutYHC,
"%d ", STPlenum[j]->getNumeroDeposito());
1323 fprintf(FOutYSoot,
"%d ", STPlenum[j]->getNumeroDeposito());
1324 fprintf(FOutYNOx,
"%d ", STPlenum[j]->getNumeroDeposito());
1325 fprintf(FOutYCO,
"%d ", STPlenum[j]->getNumeroDeposito());
1326 fprintf(FOutYN2,
"%d ", STPlenum[j]->getNumeroDeposito());
1328 fprintf(FOutYO2,
"\n");
1329 fprintf(FOutYCO2,
"\n");
1330 fprintf(FOutYH2O,
"\n");
1331 fprintf(FOutYHC,
"\n");
1332 fprintf(FOutYSoot,
"\n");
1333 fprintf(FOutYNOx,
"\n");
1334 fprintf(FOutYCO,
"\n");
1335 fprintf(FOutYN2,
"\n");
1336 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1337 fprintf(FOutYO2,
"%d ", STPipe[j]->getNumeroTubo());
1338 fprintf(FOutYCO2,
"%d ", STPipe[j]->getNumeroTubo());
1339 fprintf(FOutYH2O,
"%d ", STPipe[j]->getNumeroTubo());
1340 fprintf(FOutYHC,
"%d ", STPipe[j]->getNumeroTubo());
1341 fprintf(FOutYSoot,
"%d ", STPipe[j]->getNumeroTubo());
1342 fprintf(FOutYNOx,
"%d ", STPipe[j]->getNumeroTubo());
1343 fprintf(FOutYCO,
"%d ", STPipe[j]->getNumeroTubo());
1344 fprintf(FOutYN2,
"%d ", STPipe[j]->getNumeroTubo());
1346 fprintf(FOutYO2,
"\n");
1347 fprintf(FOutYCO2,
"\n");
1348 fprintf(FOutYH2O,
"\n");
1349 fprintf(FOutYHC,
"\n");
1350 fprintf(FOutYSoot,
"\n");
1351 fprintf(FOutYNOx,
"\n");
1352 fprintf(FOutYCO,
"\n");
1353 fprintf(FOutYN2,
"\n");
1354 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1355 fprintf(FOutYO2,
"%d ", STPipe[j]->getNin());
1356 fprintf(FOutYCO2,
"%d ", STPipe[j]->getNin());
1357 fprintf(FOutYH2O,
"%d ", STPipe[j]->getNin());
1358 fprintf(FOutYHC,
"%d ", STPipe[j]->getNin());
1359 fprintf(FOutYSoot,
"%d ", STPipe[j]->getNin());
1360 fprintf(FOutYNOx,
"%d ", STPipe[j]->getNin());
1361 fprintf(FOutYCO,
"%d ", STPipe[j]->getNin());
1362 fprintf(FOutYN2,
"%d ", STPipe[j]->getNin());
1364 fprintf(FOutYO2,
"\n%d", (
int)((thmax - grmax) / agincr));
1365 fprintf(FOutYCO2,
"\n%d", (
int)((thmax - grmax) / agincr));
1366 fprintf(FOutYH2O,
"\n%d", (
int)((thmax - grmax) / agincr));
1367 fprintf(FOutYHC,
"\n%d", (
int)((thmax - grmax) / agincr));
1368 fprintf(FOutYSoot,
"\n%d", (
int)((thmax - grmax) / agincr));
1369 fprintf(FOutYNOx,
"\n%d", (
int)((thmax - grmax) / agincr));
1370 fprintf(FOutYCO,
"\n%d", (
int)((thmax - grmax) / agincr));
1371 fprintf(FOutYN2,
"\n%d", (
int)((thmax - grmax) / agincr));
1373 }
else if(SpeciesNumber == 10) {
1374 fprintf(FOutYO2,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1375 fprintf(FOutYCO2,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1376 fprintf(FOutYH2O,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1377 fprintf(FOutYHC,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1378 fprintf(FOutYSoot,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1379 fprintf(FOutYNOx,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1380 fprintf(FOutYCO,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1381 fprintf(FOutYFuel,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1382 fprintf(FOutYN2,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1383 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1384 fprintf(FOutYO2,
"%d ", STCylinder[j]->getNumeroCilindro());
1385 fprintf(FOutYCO2,
"%d ", STCylinder[j]->getNumeroCilindro());
1386 fprintf(FOutYH2O,
"%d ", STCylinder[j]->getNumeroCilindro());
1387 fprintf(FOutYHC,
"%d ", STCylinder[j]->getNumeroCilindro());
1388 fprintf(FOutYSoot,
"%d ", STCylinder[j]->getNumeroCilindro());
1389 fprintf(FOutYNOx,
"%d ", STCylinder[j]->getNumeroCilindro());
1390 fprintf(FOutYCO,
"%d ", STCylinder[j]->getNumeroCilindro());
1391 fprintf(FOutYFuel,
"%d ", STCylinder[j]->getNumeroCilindro());
1392 fprintf(FOutYN2,
"%d ", STCylinder[j]->getNumeroCilindro());
1394 fprintf(FOutYO2,
"\n");
1395 fprintf(FOutYCO2,
"\n");
1396 fprintf(FOutYH2O,
"\n");
1397 fprintf(FOutYHC,
"\n");
1398 fprintf(FOutYSoot,
"\n");
1399 fprintf(FOutYNOx,
"\n");
1400 fprintf(FOutYCO,
"\n");
1401 fprintf(FOutYFuel,
"\n");
1402 fprintf(FOutYN2,
"\n");
1403 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1404 fprintf(FOutYO2,
"%d ", STPlenum[j]->getNumeroDeposito());
1405 fprintf(FOutYCO2,
"%d ", STPlenum[j]->getNumeroDeposito());
1406 fprintf(FOutYH2O,
"%d ", STPlenum[j]->getNumeroDeposito());
1407 fprintf(FOutYHC,
"%d ", STPlenum[j]->getNumeroDeposito());
1408 fprintf(FOutYSoot,
"%d ", STPlenum[j]->getNumeroDeposito());
1409 fprintf(FOutYNOx,
"%d ", STPlenum[j]->getNumeroDeposito());
1410 fprintf(FOutYCO,
"%d ", STPlenum[j]->getNumeroDeposito());
1411 fprintf(FOutYFuel,
"%d ", STPlenum[j]->getNumeroDeposito());
1412 fprintf(FOutYN2,
"%d ", STPlenum[j]->getNumeroDeposito());
1414 fprintf(FOutYO2,
"\n");
1415 fprintf(FOutYCO2,
"\n");
1416 fprintf(FOutYH2O,
"\n");
1417 fprintf(FOutYHC,
"\n");
1418 fprintf(FOutYSoot,
"\n");
1419 fprintf(FOutYNOx,
"\n");
1420 fprintf(FOutYCO,
"\n");
1421 fprintf(FOutYFuel,
"\n");
1422 fprintf(FOutYN2,
"\n");
1423 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1424 fprintf(FOutYO2,
"%d ", STPipe[j]->getNumeroTubo());
1425 fprintf(FOutYCO2,
"%d ", STPipe[j]->getNumeroTubo());
1426 fprintf(FOutYH2O,
"%d ", STPipe[j]->getNumeroTubo());
1427 fprintf(FOutYHC,
"%d ", STPipe[j]->getNumeroTubo());
1428 fprintf(FOutYSoot,
"%d ", STPipe[j]->getNumeroTubo());
1429 fprintf(FOutYNOx,
"%d ", STPipe[j]->getNumeroTubo());
1430 fprintf(FOutYCO,
"%d ", STPipe[j]->getNumeroTubo());
1431 fprintf(FOutYFuel,
"%d ", STPipe[j]->getNumeroTubo());
1432 fprintf(FOutYN2,
"%d ", STPipe[j]->getNumeroTubo());
1434 fprintf(FOutYO2,
"\n");
1435 fprintf(FOutYCO2,
"\n");
1436 fprintf(FOutYH2O,
"\n");
1437 fprintf(FOutYHC,
"\n");
1438 fprintf(FOutYSoot,
"\n");
1439 fprintf(FOutYNOx,
"\n");
1440 fprintf(FOutYCO,
"\n");
1441 fprintf(FOutYFuel,
"\n");
1442 fprintf(FOutYN2,
"\n");
1443 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1444 fprintf(FOutYO2,
"%d ", STPipe[j]->getNin());
1445 fprintf(FOutYCO2,
"%d ", STPipe[j]->getNin());
1446 fprintf(FOutYH2O,
"%d ", STPipe[j]->getNin());
1447 fprintf(FOutYHC,
"%d ", STPipe[j]->getNin());
1448 fprintf(FOutYSoot,
"%d ", STPipe[j]->getNin());
1449 fprintf(FOutYNOx,
"%d ", STPipe[j]->getNin());
1450 fprintf(FOutYCO,
"%d ", STPipe[j]->getNin());
1451 fprintf(FOutYFuel,
"%d ", STPipe[j]->getNin());
1452 fprintf(FOutYN2,
"%d ", STPipe[j]->getNin());
1454 fprintf(FOutYO2,
"\n%d", (
int)((thmax - grmax) / agincr));
1455 fprintf(FOutYCO2,
"\n%d", (
int)((thmax - grmax) / agincr));
1456 fprintf(FOutYH2O,
"\n%d", (
int)((thmax - grmax) / agincr));
1457 fprintf(FOutYHC,
"\n%d", (
int)((thmax - grmax) / agincr));
1458 fprintf(FOutYSoot,
"\n%d", (
int)((thmax - grmax) / agincr));
1459 fprintf(FOutYNOx,
"\n%d", (
int)((thmax - grmax) / agincr));
1460 fprintf(FOutYCO,
"\n%d", (
int)((thmax - grmax) / agincr));
1461 fprintf(FOutYFuel,
"\n%d", (
int)((thmax - grmax) / agincr));
1462 fprintf(FOutYN2,
"\n%d", (
int)((thmax - grmax) / agincr));
1466 if(SpeciesNumber == 3) {
1467 fprintf(FOutFlowBurntGas,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1468 fprintf(FOutFlowFreshAir,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1469 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1470 fprintf(FOutFlowBurntGas,
"%d ", STCylinder[j]->getNumeroCilindro());
1471 fprintf(FOutFlowFreshAir,
"%d ", STCylinder[j]->getNumeroCilindro());
1473 fprintf(FOutFlowBurntGas,
"\n");
1474 fprintf(FOutFlowFreshAir,
"\n");
1475 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1476 fprintf(FOutFlowBurntGas,
"%d ", STPlenum[j]->getNumeroDeposito());
1477 fprintf(FOutFlowFreshAir,
"%d ", STPlenum[j]->getNumeroDeposito());
1479 fprintf(FOutFlowBurntGas,
"\n");
1480 fprintf(FOutFlowFreshAir,
"\n");
1481 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1482 fprintf(FOutFlowBurntGas,
"%d ", STPipe[j]->getNumeroTubo());
1483 fprintf(FOutFlowFreshAir,
"%d ", STPipe[j]->getNumeroTubo());
1485 fprintf(FOutFlowBurntGas,
"\n");
1486 fprintf(FOutFlowFreshAir,
"\n");
1487 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1488 fprintf(FOutFlowBurntGas,
"%d ", STPipe[j]->getNin());
1489 fprintf(FOutFlowFreshAir,
"%d ", STPipe[j]->getNin());
1491 fprintf(FOutFlowBurntGas,
"\n%d", (
int)((thmax - grmax) / agincr));
1492 fprintf(FOutFlowFreshAir,
"\n%d", (
int)((thmax - grmax) / agincr));
1494 }
else if(SpeciesNumber == 4) {
1495 fprintf(FOutFlowBurntGas,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1496 fprintf(FOutFlowFuel,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1497 fprintf(FOutFlowFreshAir,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1498 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1499 fprintf(FOutFlowBurntGas,
"%d ", STCylinder[j]->getNumeroCilindro());
1500 fprintf(FOutFlowFuel,
"%d ", STCylinder[j]->getNumeroCilindro());
1501 fprintf(FOutFlowFreshAir,
"%d ", STCylinder[j]->getNumeroCilindro());
1503 fprintf(FOutFlowBurntGas,
"\n");
1504 fprintf(FOutFlowFuel,
"\n");
1505 fprintf(FOutFlowFreshAir,
"\n");
1506 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1507 fprintf(FOutFlowBurntGas,
"%d ", STPlenum[j]->getNumeroDeposito());
1508 fprintf(FOutFlowFuel,
"%d ", STPlenum[j]->getNumeroDeposito());
1509 fprintf(FOutFlowFreshAir,
"%d ", STPlenum[j]->getNumeroDeposito());
1511 fprintf(FOutFlowBurntGas,
"\n");
1512 fprintf(FOutFlowFuel,
"\n");
1513 fprintf(FOutFlowFreshAir,
"\n");
1514 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1515 fprintf(FOutFlowBurntGas,
"%d ", STPipe[j]->getNumeroTubo());
1516 fprintf(FOutFlowFuel,
"%d ", STPipe[j]->getNumeroTubo());
1517 fprintf(FOutFlowFreshAir,
"%d ", STPipe[j]->getNumeroTubo());
1519 fprintf(FOutFlowBurntGas,
"\n");
1520 fprintf(FOutFlowFuel,
"\n");
1521 fprintf(FOutFlowFreshAir,
"\n");
1522 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1523 fprintf(FOutFlowBurntGas,
"%d ", STPipe[j]->getNin());
1524 fprintf(FOutFlowFuel,
"%d ", STPipe[j]->getNin());
1525 fprintf(FOutFlowFreshAir,
"%d ", STPipe[j]->getNin());
1527 fprintf(FOutFlowBurntGas,
"\n%d", (
int)((thmax - grmax) / agincr));
1528 fprintf(FOutFlowFuel,
"\n%d", (
int)((thmax - grmax) / agincr));
1529 fprintf(FOutFlowFreshAir,
"\n%d", (
int)((thmax - grmax) / agincr));
1531 }
else if(SpeciesNumber == 9) {
1532 fprintf(FOutFlowO2,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1533 fprintf(FOutFlowCO2,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1534 fprintf(FOutFlowH2O,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1535 fprintf(FOutFlowHC,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1536 fprintf(FOutFlowSoot,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1537 fprintf(FOutFlowNOx,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1538 fprintf(FOutFlowCO,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1539 fprintf(FOutFlowN2,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1540 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1541 fprintf(FOutFlowO2,
"%d ", STCylinder[j]->getNumeroCilindro());
1542 fprintf(FOutFlowCO2,
"%d ", STCylinder[j]->getNumeroCilindro());
1543 fprintf(FOutFlowH2O,
"%d ", STCylinder[j]->getNumeroCilindro());
1544 fprintf(FOutFlowHC,
"%d ", STCylinder[j]->getNumeroCilindro());
1545 fprintf(FOutFlowSoot,
"%d ", STCylinder[j]->getNumeroCilindro());
1546 fprintf(FOutFlowNOx,
"%d ", STCylinder[j]->getNumeroCilindro());
1547 fprintf(FOutFlowCO,
"%d ", STCylinder[j]->getNumeroCilindro());
1548 fprintf(FOutFlowN2,
"%d ", STCylinder[j]->getNumeroCilindro());
1550 fprintf(FOutFlowO2,
"\n");
1551 fprintf(FOutFlowCO2,
"\n");
1552 fprintf(FOutFlowH2O,
"\n");
1553 fprintf(FOutFlowHC,
"\n");
1554 fprintf(FOutFlowSoot,
"\n");
1555 fprintf(FOutFlowNOx,
"\n");
1556 fprintf(FOutFlowCO,
"\n");
1557 fprintf(FOutFlowN2,
"\n");
1558 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1559 fprintf(FOutFlowO2,
"%d ", STPlenum[j]->getNumeroDeposito());
1560 fprintf(FOutFlowCO2,
"%d ", STPlenum[j]->getNumeroDeposito());
1561 fprintf(FOutFlowH2O,
"%d ", STPlenum[j]->getNumeroDeposito());
1562 fprintf(FOutFlowHC,
"%d ", STPlenum[j]->getNumeroDeposito());
1563 fprintf(FOutFlowSoot,
"%d ", STPlenum[j]->getNumeroDeposito());
1564 fprintf(FOutFlowNOx,
"%d ", STPlenum[j]->getNumeroDeposito());
1565 fprintf(FOutFlowCO,
"%d ", STPlenum[j]->getNumeroDeposito());
1566 fprintf(FOutFlowN2,
"%d ", STPlenum[j]->getNumeroDeposito());
1568 fprintf(FOutFlowO2,
"\n");
1569 fprintf(FOutFlowCO2,
"\n");
1570 fprintf(FOutFlowH2O,
"\n");
1571 fprintf(FOutFlowHC,
"\n");
1572 fprintf(FOutFlowSoot,
"\n");
1573 fprintf(FOutFlowNOx,
"\n");
1574 fprintf(FOutFlowCO,
"\n");
1575 fprintf(FOutFlowN2,
"\n");
1576 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1577 fprintf(FOutFlowO2,
"%d ", STPipe[j]->getNumeroTubo());
1578 fprintf(FOutFlowCO2,
"%d ", STPipe[j]->getNumeroTubo());
1579 fprintf(FOutFlowH2O,
"%d ", STPipe[j]->getNumeroTubo());
1580 fprintf(FOutFlowHC,
"%d ", STPipe[j]->getNumeroTubo());
1581 fprintf(FOutFlowSoot,
"%d ", STPipe[j]->getNumeroTubo());
1582 fprintf(FOutFlowNOx,
"%d ", STPipe[j]->getNumeroTubo());
1583 fprintf(FOutFlowCO,
"%d ", STPipe[j]->getNumeroTubo());
1584 fprintf(FOutFlowN2,
"%d ", STPipe[j]->getNumeroTubo());
1586 fprintf(FOutFlowO2,
"\n");
1587 fprintf(FOutFlowCO2,
"\n");
1588 fprintf(FOutFlowH2O,
"\n");
1589 fprintf(FOutFlowHC,
"\n");
1590 fprintf(FOutFlowSoot,
"\n");
1591 fprintf(FOutFlowNOx,
"\n");
1592 fprintf(FOutFlowCO,
"\n");
1593 fprintf(FOutFlowN2,
"\n");
1594 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1595 fprintf(FOutFlowO2,
"%d ", STPipe[j]->getNin());
1596 fprintf(FOutFlowCO2,
"%d ", STPipe[j]->getNin());
1597 fprintf(FOutFlowH2O,
"%d ", STPipe[j]->getNin());
1598 fprintf(FOutFlowHC,
"%d ", STPipe[j]->getNin());
1599 fprintf(FOutFlowSoot,
"%d ", STPipe[j]->getNin());
1600 fprintf(FOutFlowNOx,
"%d ", STPipe[j]->getNin());
1601 fprintf(FOutFlowCO,
"%d ", STPipe[j]->getNin());
1602 fprintf(FOutFlowN2,
"%d ", STPipe[j]->getNin());
1604 fprintf(FOutFlowO2,
"\n%d", (
int)((thmax - grmax) / agincr));
1605 fprintf(FOutFlowCO2,
"\n%d", (
int)((thmax - grmax) / agincr));
1606 fprintf(FOutFlowH2O,
"\n%d", (
int)((thmax - grmax) / agincr));
1607 fprintf(FOutFlowHC,
"\n%d", (
int)((thmax - grmax) / agincr));
1608 fprintf(FOutFlowSoot,
"\n%d", (
int)((thmax - grmax) / agincr));
1609 fprintf(FOutFlowNOx,
"\n%d", (
int)((thmax - grmax) / agincr));
1610 fprintf(FOutFlowCO,
"\n%d", (
int)((thmax - grmax) / agincr));
1611 fprintf(FOutFlowN2,
"\n%d", (
int)((thmax - grmax) / agincr));
1613 }
else if(SpeciesNumber == 10) {
1614 fprintf(FOutFlowO2,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1615 fprintf(FOutFlowCO2,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1616 fprintf(FOutFlowH2O,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1617 fprintf(FOutFlowHC,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1618 fprintf(FOutFlowSoot,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1619 fprintf(FOutFlowNOx,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1620 fprintf(FOutFlowCO,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1621 fprintf(FOutFlowFuel,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1622 fprintf(FOutFlowN2,
"%d %d %d\n", STCylinder.size(), STPlenum.size(), STPipe.size());
1623 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1624 fprintf(FOutFlowO2,
"%d ", STCylinder[j]->getNumeroCilindro());
1625 fprintf(FOutFlowCO2,
"%d ", STCylinder[j]->getNumeroCilindro());
1626 fprintf(FOutFlowH2O,
"%d ", STCylinder[j]->getNumeroCilindro());
1627 fprintf(FOutFlowHC,
"%d ", STCylinder[j]->getNumeroCilindro());
1628 fprintf(FOutFlowSoot,
"%d ", STCylinder[j]->getNumeroCilindro());
1629 fprintf(FOutFlowNOx,
"%d ", STCylinder[j]->getNumeroCilindro());
1630 fprintf(FOutFlowCO,
"%d ", STCylinder[j]->getNumeroCilindro());
1631 fprintf(FOutFlowFuel,
"%d ", STCylinder[j]->getNumeroCilindro());
1632 fprintf(FOutFlowN2,
"%d ", STCylinder[j]->getNumeroCilindro());
1634 fprintf(FOutFlowO2,
"\n");
1635 fprintf(FOutFlowCO2,
"\n");
1636 fprintf(FOutFlowH2O,
"\n");
1637 fprintf(FOutFlowHC,
"\n");
1638 fprintf(FOutFlowSoot,
"\n");
1639 fprintf(FOutFlowNOx,
"\n");
1640 fprintf(FOutFlowCO,
"\n");
1641 fprintf(FOutFlowFuel,
"\n");
1642 fprintf(FOutFlowN2,
"\n");
1643 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1644 fprintf(FOutFlowO2,
"%d ", STPlenum[j]->getNumeroDeposito());
1645 fprintf(FOutFlowCO2,
"%d ", STPlenum[j]->getNumeroDeposito());
1646 fprintf(FOutFlowH2O,
"%d ", STPlenum[j]->getNumeroDeposito());
1647 fprintf(FOutFlowHC,
"%d ", STPlenum[j]->getNumeroDeposito());
1648 fprintf(FOutFlowSoot,
"%d ", STPlenum[j]->getNumeroDeposito());
1649 fprintf(FOutFlowNOx,
"%d ", STPlenum[j]->getNumeroDeposito());
1650 fprintf(FOutFlowCO,
"%d ", STPlenum[j]->getNumeroDeposito());
1651 fprintf(FOutFlowFuel,
"%d ", STPlenum[j]->getNumeroDeposito());
1652 fprintf(FOutFlowN2,
"%d ", STPlenum[j]->getNumeroDeposito());
1654 fprintf(FOutFlowO2,
"\n");
1655 fprintf(FOutFlowCO2,
"\n");
1656 fprintf(FOutFlowH2O,
"\n");
1657 fprintf(FOutFlowHC,
"\n");
1658 fprintf(FOutFlowSoot,
"\n");
1659 fprintf(FOutFlowNOx,
"\n");
1660 fprintf(FOutFlowCO,
"\n");
1661 fprintf(FOutFlowFuel,
"\n");
1662 fprintf(FOutFlowN2,
"\n");
1663 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1664 fprintf(FOutFlowO2,
"%d ", STPipe[j]->getNumeroTubo());
1665 fprintf(FOutFlowCO2,
"%d ", STPipe[j]->getNumeroTubo());
1666 fprintf(FOutFlowH2O,
"%d ", STPipe[j]->getNumeroTubo());
1667 fprintf(FOutFlowHC,
"%d ", STPipe[j]->getNumeroTubo());
1668 fprintf(FOutFlowSoot,
"%d ", STPipe[j]->getNumeroTubo());
1669 fprintf(FOutFlowNOx,
"%d ", STPipe[j]->getNumeroTubo());
1670 fprintf(FOutFlowCO,
"%d ", STPipe[j]->getNumeroTubo());
1671 fprintf(FOutFlowFuel,
"%d ", STPipe[j]->getNumeroTubo());
1672 fprintf(FOutFlowN2,
"%d ", STPipe[j]->getNumeroTubo());
1674 fprintf(FOutFlowO2,
"\n");
1675 fprintf(FOutFlowCO2,
"\n");
1676 fprintf(FOutFlowH2O,
"\n");
1677 fprintf(FOutFlowHC,
"\n");
1678 fprintf(FOutFlowSoot,
"\n");
1679 fprintf(FOutFlowNOx,
"\n");
1680 fprintf(FOutFlowCO,
"\n");
1681 fprintf(FOutFlowFuel,
"\n");
1682 fprintf(FOutFlowN2,
"\n");
1683 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1684 fprintf(FOutFlowO2,
"%d ", STPipe[j]->getNin());
1685 fprintf(FOutFlowCO2,
"%d ", STPipe[j]->getNin());
1686 fprintf(FOutFlowH2O,
"%d ", STPipe[j]->getNin());
1687 fprintf(FOutFlowHC,
"%d ", STPipe[j]->getNin());
1688 fprintf(FOutFlowSoot,
"%d ", STPipe[j]->getNin());
1689 fprintf(FOutFlowNOx,
"%d ", STPipe[j]->getNin());
1690 fprintf(FOutFlowCO,
"%d ", STPipe[j]->getNin());
1691 fprintf(FOutFlowFuel,
"%d ", STPipe[j]->getNin());
1692 fprintf(FOutFlowN2,
"%d ", STPipe[j]->getNin());
1694 fprintf(FOutFlowO2,
"\n%d", (
int)((thmax - grmax) / agincr));
1695 fprintf(FOutFlowCO2,
"\n%d", (
int)((thmax - grmax) / agincr));
1696 fprintf(FOutFlowH2O,
"\n%d", (
int)((thmax - grmax) / agincr));
1697 fprintf(FOutFlowHC,
"\n%d", (
int)((thmax - grmax) / agincr));
1698 fprintf(FOutFlowSoot,
"\n%d", (
int)((thmax - grmax) / agincr));
1699 fprintf(FOutFlowNOx,
"\n%d", (
int)((thmax - grmax) / agincr));
1700 fprintf(FOutFlowCO,
"\n%d", (
int)((thmax - grmax) / agincr));
1701 fprintf(FOutFlowFuel,
"\n%d", (
int)((thmax - grmax) / agincr));
1702 fprintf(FOutFlowN2,
"\n%d", (
int)((thmax - grmax) / agincr));
1709 void TOutputResults::PrintSpaceTimeResults(
bool EngineBlock,
double Theta,
double SimulationDuration,
1714 if(FWriteSpaceTime) {
1715 float pasafloat = 0.;
1716 double m = 0., RegimenFicticio = 0.;
1719 m = floor(Theta / Engine[0]->getAngTotalCiclo());
1720 pasafloat = (float)(Theta - (m * Engine[0]->getAngTotalCiclo()));
1722 RegimenFicticio = 720. / 6. / SimulationDuration;
1723 m = floor(Theta / 720.);
1724 pasafloat = (float)(Theta - (m * 720.));
1725 pasafloat = pasafloat / 6. / RegimenFicticio;
1727 for(
unsigned int i = 0; i < FParameterSpaceTime.size(); ++i) {
1728 switch(FParameterSpaceTime[i]) {
1730 fprintf(FileOutPressure,
"\n%g", pasafloat);
1731 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1732 fprintf(FileOutPressure,
" %g", STCylinder[j]->getPressure());
1734 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1735 fprintf(FileOutPressure,
" %g", STPlenum[j]->getPressure());
1737 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1738 for(
int k = 0; k < STPipe[j]->getNin(); ++k) {
1739 fprintf(FileOutPressure,
" %g", STPipe[j]->GetPresion(k));
1744 fprintf(FileOutTemp,
"\n%g", pasafloat);
1745 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1746 fprintf(FileOutTemp,
" %g", STCylinder[j]->getTemperature());
1748 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1749 fprintf(FileOutTemp,
" %g", STPlenum[j]->getTemperature());
1751 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1752 for(
int k = 0; k < STPipe[j]->getNin(); ++k) {
1753 double temp = __units::KTodegC(
pow2(STPipe[j]->GetAsonido(k) * __cons::ARef) / (STPipe[j]->GetGamma(
1754 k) * STPipe[j]->GetRMezcla(k)));
1755 fprintf(FileOutTemp,
" %g", temp);
1760 fprintf(FileOutVel,
"\n%g", pasafloat);
1761 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1762 fprintf(FileOutVel,
" %g", 0.0);
1764 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1765 fprintf(FileOutVel,
" %g", 0.0);
1767 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1768 for(
int k = 0; k < STPipe[j]->getNin(); ++k) {
1769 double vel = STPipe[j]->GetVelocidad(k) * __cons::ARef;
1770 fprintf(FileOutVel,
" %g", vel);
1775 fprintf(FileOutFlow,
"\n%g", pasafloat);
1776 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1777 fprintf(FileOutFlow,
" %g", 0.0);
1779 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1780 fprintf(FileOutFlow,
" %g", 0.0);
1782 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1783 for(
int k = 0; k < STPipe[j]->getNin(); ++k) {
1784 if(STPipe[j]->getFormulacionLeyes() == nmConArea) {
1785 fprintf(FileOutFlow,
" %g", STPipe[j]->GetU0(1, k));
1787 double massflow = __units::BarToPa(STPipe[j]->GetPresion(k)) /
pow2(STPipe[j]->GetAsonido(
1788 k) * __cons::ARef) * STPipe[j]->GetGamma(k) * STPipe[j]->GetVelocidad(k) * __cons::ARef * __geom::Circle_area(
1789 STPipe[j]->GetDiametro(k));
1790 fprintf(FileOutFlow,
" %g", massflow);
1796 if(SpeciesNumber == 3) {
1797 fprintf(FOutYBurntGas,
"\n%g", pasafloat);
1798 fprintf(FOutYFreshAir,
"\n%g", pasafloat);
1799 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1800 fprintf(FOutYBurntGas,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(0));
1801 fprintf(FOutYFreshAir,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(1));
1803 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1804 fprintf(FOutYBurntGas,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(0));
1805 fprintf(FOutYFreshAir,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(1));
1807 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1808 for(
int k = 0; k < STPipe[j]->getNin(); ++k) {
1809 fprintf(FOutYBurntGas,
" %g", STPipe[j]->GetFraccionMasica(k, 0));
1810 fprintf(FOutYFreshAir,
" %g", STPipe[j]->GetFraccionMasica(k, 1));
1814 }
else if(SpeciesNumber == 4) {
1815 fprintf(FOutYBurntGas,
"\n%g", pasafloat);
1816 fprintf(FOutYFuel,
"\n%g", pasafloat);
1817 fprintf(FOutYFreshAir,
"\n%g", pasafloat);
1818 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1819 fprintf(FOutYBurntGas,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(0));
1820 fprintf(FOutYFuel,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(1));
1821 fprintf(FOutYFreshAir,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(2));
1823 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1824 fprintf(FOutYBurntGas,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(0));
1825 fprintf(FOutYFuel,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(1));
1826 fprintf(FOutYFreshAir,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(2));
1828 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1829 for(
int k = 0; k < STPipe[j]->getNin(); ++k) {
1830 fprintf(FOutYBurntGas,
" %g", STPipe[j]->GetFraccionMasica(k, 0));
1831 fprintf(FOutYFuel,
" %g", STPipe[j]->GetFraccionMasica(k, 1));
1832 fprintf(FOutYFreshAir,
" %g", STPipe[j]->GetFraccionMasica(k, 2));
1836 }
else if(SpeciesNumber == 9) {
1837 fprintf(FOutYO2,
"\n%g", pasafloat);
1838 fprintf(FOutYCO2,
"\n%g", pasafloat);
1839 fprintf(FOutYH2O,
"\n%g", pasafloat);
1840 fprintf(FOutYHC,
"\n%g", pasafloat);
1841 fprintf(FOutYSoot,
"\n%g", pasafloat);
1842 fprintf(FOutYNOx,
"\n%g", pasafloat);
1843 fprintf(FOutYCO,
"\n%g", pasafloat);
1844 fprintf(FOutYN2,
"\n%g", pasafloat);
1845 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1846 fprintf(FOutYO2,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(0));
1847 fprintf(FOutYCO2,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(1));
1848 fprintf(FOutYH2O,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(2));
1849 fprintf(FOutYHC,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(3));
1850 fprintf(FOutYSoot,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(4));
1851 fprintf(FOutYNOx,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(5));
1852 fprintf(FOutYCO,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(6));
1853 fprintf(FOutYN2,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(7));
1855 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1856 fprintf(FOutYO2,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(0));
1857 fprintf(FOutYCO2,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(1));
1858 fprintf(FOutYH2O,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(2));
1859 fprintf(FOutYHC,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(3));
1860 fprintf(FOutYSoot,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(4));
1861 fprintf(FOutYNOx,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(5));
1862 fprintf(FOutYCO,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(6));
1863 fprintf(FOutYN2,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(7));
1865 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1866 for(
int k = 0; k < STPipe[j]->getNin(); ++k) {
1867 fprintf(FOutYO2,
" %g", STPipe[j]->GetFraccionMasica(k, 0));
1868 fprintf(FOutYCO2,
" %g", STPipe[j]->GetFraccionMasica(k, 1));
1869 fprintf(FOutYH2O,
" %g", STPipe[j]->GetFraccionMasica(k, 2));
1870 fprintf(FOutYHC,
" %g", STPipe[j]->GetFraccionMasica(k, 3));
1871 fprintf(FOutYSoot,
" %g", STPipe[j]->GetFraccionMasica(k, 4));
1872 fprintf(FOutYNOx,
" %g", STPipe[j]->GetFraccionMasica(k, 5));
1873 fprintf(FOutYCO,
" %g", STPipe[j]->GetFraccionMasica(k, 6));
1874 fprintf(FOutYN2,
" %g", STPipe[j]->GetFraccionMasica(k, 7));
1878 }
else if(SpeciesNumber == 10) {
1879 fprintf(FOutYO2,
"\n%g", pasafloat);
1880 fprintf(FOutYCO2,
"\n%g", pasafloat);
1881 fprintf(FOutYH2O,
"\n%g", pasafloat);
1882 fprintf(FOutYHC,
"\n%g", pasafloat);
1883 fprintf(FOutYSoot,
"\n%g", pasafloat);
1884 fprintf(FOutYNOx,
"\n%g", pasafloat);
1885 fprintf(FOutYCO,
"\n%g", pasafloat);
1886 fprintf(FOutYFuel,
"\n%g", pasafloat);
1887 fprintf(FOutYN2,
"\n%g", pasafloat);
1888 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1889 fprintf(FOutYO2,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(0));
1890 fprintf(FOutYCO2,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(1));
1891 fprintf(FOutYH2O,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(2));
1892 fprintf(FOutYHC,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(3));
1893 fprintf(FOutYSoot,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(4));
1894 fprintf(FOutYNOx,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(5));
1895 fprintf(FOutYCO,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(6));
1896 fprintf(FOutYFuel,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(7));
1897 fprintf(FOutYN2,
" %g", STCylinder[j]->GetFraccionMasicaEspecie(8));
1899 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1900 fprintf(FOutYO2,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(0));
1901 fprintf(FOutYCO2,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(1));
1902 fprintf(FOutYH2O,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(2));
1903 fprintf(FOutYHC,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(3));
1904 fprintf(FOutYSoot,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(4));
1905 fprintf(FOutYNOx,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(5));
1906 fprintf(FOutYCO,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(6));
1907 fprintf(FOutYFuel,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(7));
1908 fprintf(FOutYN2,
" %g", STPlenum[j]->GetFraccionMasicaEspecie(8));
1910 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1911 for(
int k = 0; k < STPipe[j]->getNin(); ++k) {
1912 fprintf(FOutYO2,
" %g", STPipe[j]->GetFraccionMasica(k, 0));
1913 fprintf(FOutYCO2,
" %g", STPipe[j]->GetFraccionMasica(k, 1));
1914 fprintf(FOutYH2O,
" %g", STPipe[j]->GetFraccionMasica(k, 2));
1915 fprintf(FOutYHC,
" %g", STPipe[j]->GetFraccionMasica(k, 3));
1916 fprintf(FOutYSoot,
" %g", STPipe[j]->GetFraccionMasica(k, 4));
1917 fprintf(FOutYNOx,
" %g", STPipe[j]->GetFraccionMasica(k, 5));
1918 fprintf(FOutYCO,
" %g", STPipe[j]->GetFraccionMasica(k, 6));
1919 fprintf(FOutYFuel,
" %g", STPipe[j]->GetFraccionMasica(k, 7));
1920 fprintf(FOutYN2,
" %g", STPipe[j]->GetFraccionMasica(k, 8));
1926 double massflow = 0.;
1927 if(SpeciesNumber == 3) {
1928 fprintf(FOutFlowBurntGas,
"\n%g", pasafloat);
1929 fprintf(FOutFlowFreshAir,
"\n%g", pasafloat);
1930 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1931 fprintf(FOutFlowBurntGas,
" %g", 0.0);
1932 fprintf(FOutFlowFreshAir,
" %g", 0.0);
1934 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1935 fprintf(FOutFlowBurntGas,
" %g", 0.0);
1936 fprintf(FOutFlowFreshAir,
" %g", 0.0);
1938 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1939 for(
int k = 0; k < STPipe[j]->getNin(); ++k) {
1940 if(STPipe[j]->getFormulacionLeyes() == nmConArea) {
1941 massflow = STPipe[j]->GetU0(1, k);
1943 massflow = __units::BarToPa(STPipe[j]->GetPresion(k)) /
pow2(STPipe[j]->GetAsonido(k) * __cons::ARef) *
1944 STPipe[j]->GetGamma(k) * STPipe[j]->GetVelocidad(k) * __cons::ARef * __geom::Circle_area(
1945 STPipe[j]->GetDiametro(k));
1947 fprintf(FOutFlowBurntGas,
" %g", STPipe[j]->GetFraccionMasica(k, 0) * massflow);
1948 fprintf(FOutFlowFreshAir,
" %g", STPipe[j]->GetFraccionMasica(k, 1) * massflow);
1952 }
else if(SpeciesNumber == 4) {
1953 fprintf(FOutFlowBurntGas,
"\n%g", pasafloat);
1954 fprintf(FOutFlowFuel,
"\n%g", pasafloat);
1955 fprintf(FOutFlowFreshAir,
"\n%g", pasafloat);
1956 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1957 fprintf(FOutFlowBurntGas,
" %g", 0.0);
1958 fprintf(FOutFlowFuel,
" %g", 0.0);
1959 fprintf(FOutFlowFreshAir,
" %g", 0.0);
1961 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
1962 fprintf(FOutFlowBurntGas,
" %g", 0.0);
1963 fprintf(FOutFlowFuel,
" %g", 0.0);
1964 fprintf(FOutFlowFreshAir,
" %g", 0.0);
1966 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
1967 for(
int k = 0; k < STPipe[j]->getNin(); ++k) {
1968 if(STPipe[j]->getFormulacionLeyes() == nmConArea) {
1969 massflow = STPipe[j]->GetU0(1, k);
1971 massflow = __units::BarToPa(STPipe[j]->GetPresion(k)) /
pow2(STPipe[j]->GetAsonido(k) * __cons::ARef) *
1972 STPipe[j]->GetGamma(k) * STPipe[j]->GetVelocidad(k) * __cons::ARef * __geom::Circle_area(
1973 STPipe[j]->GetDiametro(k));
1975 fprintf(FOutFlowBurntGas,
" %g", STPipe[j]->GetFraccionMasica(k, 0) * massflow);
1976 fprintf(FOutFlowFuel,
" %g", STPipe[j]->GetFraccionMasica(k, 1) * massflow);
1977 fprintf(FOutFlowFreshAir,
" %g", STPipe[j]->GetFraccionMasica(k, 2) * massflow);
1981 }
else if(SpeciesNumber == 9) {
1982 fprintf(FOutFlowO2,
"\n%g", pasafloat);
1983 fprintf(FOutFlowCO2,
"\n%g", pasafloat);
1984 fprintf(FOutFlowH2O,
"\n%g", pasafloat);
1985 fprintf(FOutFlowHC,
"\n%g", pasafloat);
1986 fprintf(FOutFlowSoot,
"\n%g", pasafloat);
1987 fprintf(FOutFlowNOx,
"\n%g", pasafloat);
1988 fprintf(FOutFlowCO,
"\n%g", pasafloat);
1989 fprintf(FOutFlowN2,
"\n%g", pasafloat);
1990 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
1991 fprintf(FOutFlowO2,
" %g", 0.0);
1992 fprintf(FOutFlowCO2,
" %g", 0.0);
1993 fprintf(FOutFlowH2O,
" %g", 0.0);
1994 fprintf(FOutFlowHC,
" %g", 0.0);
1995 fprintf(FOutFlowSoot,
" %g", 0.0);
1996 fprintf(FOutFlowNOx,
" %g", 0.0);
1997 fprintf(FOutFlowCO,
" %g", 0.0);
1998 fprintf(FOutFlowN2,
" %g", 0.0);
2000 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
2001 fprintf(FOutFlowO2,
" %g", 0.0);
2002 fprintf(FOutFlowCO2,
" %g", 0.0);
2003 fprintf(FOutFlowH2O,
" %g", 0.0);
2004 fprintf(FOutFlowHC,
" %g", 0.0);
2005 fprintf(FOutFlowSoot,
" %g", 0.0);
2006 fprintf(FOutFlowNOx,
" %g", 0.0);
2007 fprintf(FOutFlowCO,
" %g", 0.0);
2008 fprintf(FOutFlowN2,
" %g", 0.0);
2010 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
2011 for(
int k = 0; k < STPipe[j]->getNin(); ++k) {
2012 if(STPipe[j]->getFormulacionLeyes() == nmConArea) {
2013 massflow = STPipe[j]->GetU0(1, k);
2015 massflow = __units::BarToPa(STPipe[j]->GetPresion(k)) /
pow2(STPipe[j]->GetAsonido(k) * __cons::ARef) *
2016 STPipe[j]->GetGamma(k) * STPipe[j]->GetVelocidad(k) * __cons::ARef * __geom::Circle_area(
2017 STPipe[j]->GetDiametro(k));
2019 fprintf(FOutFlowO2,
" %g", STPipe[j]->GetFraccionMasica(k, 0) * massflow);
2020 fprintf(FOutFlowCO2,
" %g", STPipe[j]->GetFraccionMasica(k, 1) * massflow);
2021 fprintf(FOutFlowH2O,
" %g", STPipe[j]->GetFraccionMasica(k, 2) * massflow);
2022 fprintf(FOutFlowHC,
" %g", STPipe[j]->GetFraccionMasica(k, 3) * massflow);
2023 fprintf(FOutFlowSoot,
" %g", STPipe[j]->GetFraccionMasica(k, 4) * massflow);
2024 fprintf(FOutFlowNOx,
" %g", STPipe[j]->GetFraccionMasica(k, 5) * massflow);
2025 fprintf(FOutFlowCO,
" %g", STPipe[j]->GetFraccionMasica(k, 6) * massflow);
2026 fprintf(FOutFlowN2,
" %g", STPipe[j]->GetFraccionMasica(k, 7) * massflow);
2030 }
else if(SpeciesNumber == 10) {
2031 fprintf(FOutFlowO2,
"\n%g", pasafloat);
2032 fprintf(FOutFlowCO2,
"\n%g", pasafloat);
2033 fprintf(FOutFlowH2O,
"\n%g", pasafloat);
2034 fprintf(FOutFlowHC,
"\n%g", pasafloat);
2035 fprintf(FOutFlowSoot,
"\n%g", pasafloat);
2036 fprintf(FOutFlowNOx,
"\n%g", pasafloat);
2037 fprintf(FOutFlowCO,
"\n%g", pasafloat);
2038 fprintf(FOutFlowFuel,
"\n%g", pasafloat);
2039 fprintf(FOutFlowN2,
"\n%g", pasafloat);
2040 for(
unsigned int j = 0; j < STCylinder.size(); ++j) {
2041 fprintf(FOutFlowO2,
" %g", 0.0);
2042 fprintf(FOutFlowCO2,
" %g", 0.0);
2043 fprintf(FOutFlowH2O,
" %g", 0.0);
2044 fprintf(FOutFlowHC,
" %g", 0.0);
2045 fprintf(FOutFlowSoot,
" %g", 0.0);
2046 fprintf(FOutFlowNOx,
" %g", 0.0);
2047 fprintf(FOutFlowCO,
" %g", 0.0);
2048 fprintf(FOutFlowFuel,
" %g", 0.0);
2049 fprintf(FOutFlowN2,
" %g", 0.0);
2051 for(
unsigned int j = 0; j < STPlenum.size(); ++j) {
2052 fprintf(FOutFlowO2,
" %g", 0.0);
2053 fprintf(FOutFlowCO2,
" %g", 0.0);
2054 fprintf(FOutFlowH2O,
" %g", 0.0);
2055 fprintf(FOutFlowHC,
" %g", 0.0);
2056 fprintf(FOutFlowSoot,
" %g", 0.0);
2057 fprintf(FOutFlowNOx,
" %g", 0.0);
2058 fprintf(FOutFlowCO,
" %g", 0.0);
2059 fprintf(FOutFlowFuel,
" %g", 0.0);
2060 fprintf(FOutFlowN2,
" %g", 0.0);
2062 for(
unsigned int j = 0; j < STPipe.size(); ++j) {
2063 for(
int k = 0; k < STPipe[j]->getNin(); ++k) {
2064 if(STPipe[j]->getFormulacionLeyes() == nmConArea) {
2065 massflow = STPipe[j]->GetU0(1, k);
2067 massflow = __units::BarToPa(STPipe[j]->GetPresion(k)) /
pow2(STPipe[j]->GetAsonido(k) * __cons::ARef) *
2068 STPipe[j]->GetGamma(k) * STPipe[j]->GetVelocidad(k) * __cons::ARef * __geom::Circle_area(
2069 STPipe[j]->GetDiametro(k));
2071 fprintf(FOutFlowO2,
" %g", STPipe[j]->GetFraccionMasica(k, 0) * massflow);
2072 fprintf(FOutFlowCO2,
" %g", STPipe[j]->GetFraccionMasica(k, 1) * massflow);
2073 fprintf(FOutFlowH2O,
" %g", STPipe[j]->GetFraccionMasica(k, 2) * massflow);
2074 fprintf(FOutFlowHC,
" %g", STPipe[j]->GetFraccionMasica(k, 3) * massflow);
2075 fprintf(FOutFlowSoot,
" %g", STPipe[j]->GetFraccionMasica(k, 4) * massflow);
2076 fprintf(FOutFlowNOx,
" %g", STPipe[j]->GetFraccionMasica(k, 5) * massflow);
2077 fprintf(FOutFlowCO,
" %g", STPipe[j]->GetFraccionMasica(k, 6) * massflow);
2078 fprintf(FOutFlowFuel,
" %g", STPipe[j]->GetFraccionMasica(k, 7) * massflow);
2079 fprintf(FOutFlowN2,
" %g", STPipe[j]->GetFraccionMasica(k, 8) * massflow);
2090 void TOutputResults::HeaderInstantaneousResults(
TCalculoExtern *EXTERN,
bool ThereIsDLL,
bool EngineBlock,
2093 if(WriteInsHeader) {
2097 FInsOutput <<
"Time";
2101 FInsOutput <<
"\t" << Label.c_str();
2110 for(
unsigned int i = 0; i < InsCylinder.size(); ++i) {
2111 InsCylinder[i]->HeaderInstantaneousResultsCilindro(FInsOutput, SpeciesName);
2115 for(
unsigned int i = 0; i < InsPlenum.size(); ++i) {
2116 InsPlenum[i]->HeaderInstantaneousResultsDep(FInsOutput, SpeciesName);
2121 for(
unsigned int i = 0; i < InsPipe.size(); i++) {
2122 InsPipe[i]->HeaderInstantaneousResults(FInsOutput, SpeciesName);
2126 #ifdef ParticulateFilter
2127 for(
unsigned int i = 0; i < InsDPF.size(); i++) {
2128 InsDPF[i]->CabeceraResultadosInstantaneos(FInsOutput, SpeciesName);
2134 for(
unsigned int i = 0; i < InsVenturi.size(); i++) {
2135 InsVenturi[i]->CabeceraResultadosInstantVenturi(FInsOutput);
2140 for(
unsigned int i = 0; i < InsTurbo.size(); ++i) {
2141 InsTurbo[i]->HeaderInstantaneousResultsEje(FInsOutput);
2145 for(
unsigned int i = 0; i < InsTurbine.size(); i++) {
2146 InsTurbine[i]->CabeceraResultadosInstantTurb(FInsOutput);
2150 for(
unsigned int i = 0; i < InsCompressor.size(); ++i) {
2151 InsCompressor[i]->CabeceraGraficasInstantaneas(FInsOutput);
2156 for(
unsigned int i = 0; i < InsValve.size(); i++) {
2157 InsValve[i]->CabeceraGraficaINS(FInsOutput, InsValveNode[i]);
2161 for(
unsigned int i = 0; i < InsWasteGate.size(); i++) {
2162 InsWasteGate[i]->CabeceraGraficaINS(FInsOutput, i);
2166 for(
unsigned int i = 0; i < InsReedValve.size(); i++) {
2167 InsReedValve[i]->CabeceraGraficaINS(FInsOutput, i);
2171 for(
unsigned int i = 0; i < InsRoot.size(); i++) {
2172 InsRoot[i]->CabeceraResultadosInstantCV(FInsOutput);
2176 for(
unsigned int i = 0; i < InsConnection.size(); i++) {
2177 InsConnection[i]->CabeceraResultadosInstantUED(FInsOutput);
2181 for(
unsigned int i = 0; i < InsSensor.size(); i++) {
2182 InsSensor[i]->CabeceraResultadosInsSensor(FInsOutput);
2186 for(
unsigned int i = 0; i < InsController.size(); i++) {
2187 InsController[i]->CabeceraResultadosInsControlador(FInsOutput);
2192 EXTERN->ImprimeCabeceraInstantaneas(FInsOutput);
2198 void TOutputResults::ConvertCharacter(
int confile,
char confile1[],
int Characters) {
2204 confile1[Characters - i] = (char)(confile % 10) +
'0';
2206 }
while((confile /= 10) > 0);
2207 confile1[Characters + 1] =
'\0';
2209 if(i < Characters + 1) {
2210 for(j = 0; j <= (Characters - i); j++) {
2214 }
catch(exception & N) {
2215 std::cout <<
"ERROR: ConvertCharacter" << std::endl;
2216 std::cout <<
"Tipo de error: " << N.what() << std::endl;
2221 void TOutputResults::PlotThisCycle(
TBloqueMotor* Engine,
int TotalCycles) {
2223 switch(FTypeOfInsResults) {
2225 if((Engine->getCiclo() + 1) == TotalCycles - 1) {
2226 FPlotThisCycle =
true;
2228 FPlotThisCycle =
false;
2231 case nmEveryNCycles:
2232 if((Engine->getCiclo() + 1) % FCyclePeriod == 0) {
2233 FPlotThisCycle =
true;
2235 FPlotThisCycle =
false;
2238 FPlotThisCycle =
true;
2242 void TOutputResults::PlotControl(
double Theta0,
double Theta,
double CycleDuration) {
2249 while(FControlAngle1 <= Theta) {
2250 FControlAngle1 += FInsPeriod;
2252 if(FControlAngle1 > Theta + 10) {
2253 FControlAngle1 = Theta + 10;
2255 FControlAngle0 = FControlAngle1 - FInsPeriod;
2257 while(FControlAngle1 < Theta0) {
2258 FControlAngle1 = FControlAngle1 + FInsPeriod;
2259 FControlAngle0 = FControlAngle1 - FInsPeriod;
2261 if(FControlAngle1 > Theta0 && FControlAngle1 <= Theta) {
2262 FControlAngle0 = FControlAngle1;
2263 FControlAngle1 += FInsPeriod;
2264 if(fmod(FControlAngle1, CycleDuration) < FInsPeriod) {
2265 FControlAngle1 -= fmod(FControlAngle1, CycleDuration);
2276 void TOutputResults::OutputInstantaneousResults(
TCalculoExtern *EXTERN,
bool ThereIsDLL,
bool EngineBlock,
double Theta,
2281 double RegimenFicticio = 0.;
2283 FInsOutput << std::endl;
2287 m = int(Theta / Engine->getAngTotalCiclo());
2288 pasafloat = (float)(Theta - (m * Engine->getAngTotalCiclo()));
2289 FInsOutput <<
"\t" << pasafloat;
2293 for(
unsigned int i = 0; i < InsCylinder.size(); ++i) {
2294 InsCylinder[i]->CalculaResultadosInstantaneosCilindro();
2295 InsCylinder[i]->ImprimeResultadosInstantaneosCilindro(FInsOutput);
2299 for(
unsigned int i = 0; i < InsPlenum.size(); ++i) {
2300 InsPlenum[i]->ResultadosInstantaneosDep();
2301 InsPlenum[i]->ImprimeResultadosInstantaneosDep(FInsOutput);
2306 for(
unsigned int i = 0; i < InsPipe.size(); i++) {
2307 InsPipe[i]->CalculaResultadosInstantaneos();
2308 InsPipe[i]->ImprimeResultadosInstantaneos(FInsOutput);
2313 for(
unsigned int i = 0; i < InsVenturi.size(); i++) {
2314 InsVenturi[i]->CalculaResultadosVenturi();
2315 InsVenturi[i]->ImprimeResultadosInstantVenturi(FInsOutput);
2320 for(
unsigned int i = 0; i < InsTurbo.size(); ++i) {
2321 InsTurbo[i]->ResultadosInstantEje();
2322 InsTurbo[i]->ImprimeResultadosInstantaneosEje(FInsOutput);
2326 for(
unsigned int i = 0; i < InsTurbine.size(); i++) {
2327 InsTurbine[i]->ResultadosInstantTurb();
2328 InsTurbine[i]->ImprimeResultadosInstantTurb(FInsOutput);
2332 for(
unsigned int i = 0; i < InsCompressor.size(); ++i) {
2333 InsCompressor[i]->CalculaInstantaneos();
2334 InsCompressor[i]->ImprimeGraficasInstantaneas(FInsOutput);
2338 #ifdef ParticulateFilter
2339 for(
int i = 0; i < InsDPF.size(); i++) {
2340 InsDPF[i]->CalculaResultadosInstantaneos();
2341 InsDPF[i]->ImprimeResultadosInstantaneos(FInsOutput);
2347 for(
unsigned int i = 0; i < InsValve.size(); i++) {
2348 InsValve[i]->ImprimeGraficaINS(FInsOutput);
2352 for(
unsigned int i = 0; i < InsWasteGate.size(); i++) {
2353 InsWasteGate[i]->ImprimeGraficaINS(FInsOutput);
2357 for(
unsigned int i = 0; i < InsReedValve.size(); i++) {
2358 InsReedValve[i]->ImprimeGraficaINS(FInsOutput);
2362 for(
unsigned int i = 0; i < InsRoot.size(); i++) {
2363 InsRoot[i]->ResultadosInstantCV();
2364 InsRoot[i]->ImprimeResultadosInstantCV(FInsOutput);
2368 for(
unsigned int i = 0; i < InsConnection.size(); i++) {
2369 InsConnection[i]->ResultadosInstantUED();
2370 InsConnection[i]->ImprimeResultadosInstantUED(FInsOutput);
2374 for(
unsigned int i = 0; i < InsSensor.size(); i++) {
2375 InsSensor[i]->ResultadosInstantSensor();
2376 InsSensor[i]->ImprimeResultadosInsSensor(FInsOutput);
2380 for(
unsigned int i = 0; i < InsController.size(); i++) {
2381 InsController[i]->ResultadosInstantController();
2382 InsController[i]->ImprimeResultadosInsControlador(FInsOutput);
2387 EXTERN->ImprimeGraficosInstantaneas(FInsOutput);
2390 CopyInstananeousResultsToFile(1);
2396 void TOutputResults::WriteInstantaneous(
bool EngineBlock,
double Angle,
double AngStep,
TBloqueMotor* Engine,
2400 switch(FTypeOfInsResults) {
2402 if((Engine->getCiclo() + 1) == TotalCycles - 1) {
2403 FPlotThisCycle =
true;
2404 if(Angle - AngStep < 0)
2405 WriteInsHeader =
true;
2407 WriteInsHeader =
false;
2409 FPlotThisCycle =
false;
2410 WriteInsHeader =
false;
2414 case nmAllCyclesIndependent:
2415 FPlotThisCycle =
true;
2416 if(Angle - AngStep < 0)
2417 WriteInsHeader =
true;
2419 WriteInsHeader =
false;
2421 case nmAllCyclesConcatenated:
2422 FPlotThisCycle =
true;
2423 if(InsHeaderCreated) {
2424 WriteInsHeader =
false;
2426 WriteInsHeader =
true;
2427 InsHeaderCreated =
true;
2430 case nmEveryNCycles:
2432 if((Engine->getCiclo() + 1) % FCyclePeriod == 0 && Engine->getCiclo() > 0) {
2433 FPlotThisCycle =
true;
2434 if(Angle - AngStep < 0) {
2435 WriteInsHeader =
true;
2437 WriteInsHeader =
false;
2440 FPlotThisCycle =
false;
2444 if(InsHeaderCreated) {
2445 WriteInsHeader =
false;
2447 WriteInsHeader =
true;
2448 InsHeaderCreated =
true;
2454 void TOutputResults::WriteSpaceTime(
bool EngineBlock,
TBloqueMotor* Engine,
int TotalCycles) {
2456 if((Engine->getCiclo() + 1) == TotalCycles - 1) {
2457 FWriteSpaceTime =
true;
2460 FWriteSpaceTime =
true;
2466 #pragma package(smart_init)