OpenWAM
TOutputResults.h
1 // ---------------------------------------------------------------------------
2 
3 #ifndef TOutputResultsH
4 #define TOutputResultsH
5 
6 #include "Globales.h"
7 #include <sstream>
8 
9 #include "TTubo.h"
10 #include "TBloqueMotor.h"
11 #include "TDeposito.h"
12 #include "TEjeTurbogrupo.h"
13 #include "TCompresor.h"
14 #include "TTurbina.h"
15 #include "TTipoValvula.h"
16 #include "TCCCilindro.h"
17 #include "TCCDeposito.h"
18 #include "TCCUnionEntreDepositos.h"
19 #include "TCCCompresorVolumetrico.h"
20 #include "TVenturi.h"
21 #include "TSensor.h"
22 #include "TController.h"
23 #include "TCalculoExtern.h"
24 #include "TWasteGate.h"
25 #include "TLamina.h"
26 #include "TDPF.h"
27 
28 // ---------------------------------------------------------------------------
29 
30 enum nmTypeOfResults {
31  nmLastCyle = 0, nmAllCyclesIndependent = 1, nmAllCyclesConcatenated = 2, nmEveryNCycles = 3
32 };
33 
35  private:
36  nmTypeOfResults FTypeOfInsResults;
37 
38  int FCyclePeriod;
39 
40  double FInsPeriod;
41 
42  bool FPlotThisCycle;
43  bool FMultipleFiles;
44  bool FPlotIns;
45 
46  bool FFirstTime;
47 
48  bool InsHeaderCreated;
49  bool WriteInsHeader;
50 
51  bool FWriteSpaceTime;
52 
53  double FControlAngle0;
54  double FControlAngle1;
55 
56  vector<TTubo*> AvgPipe;
57  vector<TCilindro*> AvgCylinder;
58  TBloqueMotor* AvgEngine;
59  vector<TDeposito*> AvgPlenum;
60  vector<TEjeTurbogrupo*> AvgAxis;
61  vector<TCompresor*> AvgCompressor;
62  vector<TTurbina*> AvgTurbine;
63  vector<TTipoValvula*> AvgValve;
64  iVector AvgValveNode;
65  vector<TCCCompresorVolumetrico*> AvgRoot;
66  vector<TVenturi*> AvgVenturi;
67  vector<TCCUnionEntreDepositos*> AvgConnection;
68  vector<TSensor*> AvgSensor;
69  vector<TController*> AvgController;
70  vector<TDPF*> AvgDPF;
71 
72  stringstream FAvgOutput;
73  fstream FFileAvg;
74  char FAvgFilename[300];
75 
76  vector<TCilindro*> InsCylinder;
77  vector<TDeposito*> InsPlenum;
78  vector<TTubo*> InsPipe;
79  vector<TVenturi*> InsVenturi;
80  vector<TTipoValvula*> InsValve;
81  iVector InsValveNode;
82  vector<TEjeTurbogrupo*> InsTurbo;
83  vector<TCompresor*> InsCompressor;
84  vector<TTurbina*> InsTurbine;
85  vector<TCCCompresorVolumetrico*> InsRoot;
86  vector<TCCUnionEntreDepositos*> InsConnection;
87  vector<TWasteGate*> InsWasteGate;
88  vector<TLamina*> InsReedValve;
89  vector<TSensor*> InsSensor;
90  vector<TController*> InsController;
91  vector<TDPF*> InsDPF;
92 
93  stringstream FInsOutput;
94  fstream FFileIns;
95  char FInsFilename[300];
96 
97  char FFileCountC[10];
98  int FFileCountI;
99  int FCharacters;
100 
101  vector<TTubo*> STPipe;
102  vector<TDeposito*> STPlenum;
103  vector<TCilindro*> STCylinder;
104 
105  iVector FParameterSpaceTime;
106 
107  FILE *FileOutPressure; // !< Pointers to files for space time results.
108  FILE *FileOutTemp; // !< Pointers to files for space time results.
109  FILE *FileOutVel; // !< Pointers to files for space time results.
110  FILE *FileOutFlow; // !< Pointers to files for space time results.
111  FILE *FOutYO2; // !< Pointers to files for space time results.
112  FILE *FOutYN2; // !< Pointers to files for space time results.
113  FILE *FOutYCO2; // !< Pointers to files for space time results.
114  FILE *FOutYH2O; // !< Pointers to files for space time results.
115  FILE *FOutYCO; // !< Pointers to files for space time results.
116  FILE *FOutYNOx; // !< Pointers to files for space time results.
117  FILE *FOutYSoot; // !< Pointers to files for space time results.
118  FILE *FOutYHC; // !< Pointers to files for space time results.
119  FILE *FOutYFuel; // !< Pointers to files for space time results.
120  FILE *FOutYFreshAir; // !< Pointers to files for space time results.
121  FILE *FOutYBurntGas; // !< Pointers to files for space time results.
122  FILE *FOutFlowO2; // !< Pointers to files for space time results.
123  FILE *FOutFlowN2; // !< Pointers to files for space time results.
124  FILE *FOutFlowCO2; // !< Pointers to files for space time results.
125  FILE *FOutFlowH2O; // !< Pointers to files for space time results.
126  FILE *FOutFlowCO; // !< Pointers to files for space time results.
127  FILE *FOutFlowNOx; // !< Pointers to files for space time results.
128  FILE *FOutFlowSoot; // !< Pointers to files for space time results.
129  FILE *FOutFlowHC; // !< Pointers to files for space time results.
130  FILE *FOutFlowFuel; // !< Pointers to files for space time results.
131  FILE *FOutFlowFreshAir; // !< Pointers to files for space time results.
132  FILE *FOutFlowBurntGas; // !< Pointers to files for space time results.
133 
134  char salpre[300];
135  char saltem[300];
136  char salvel[300];
137  char salair[300];
138  char salYO2[300];
139  char salYN2[300];
140  char salYCO2[300];
141  char salYH2O[300];
142  char salYCO[300];
143  char salYNOx[300];
144  char salYSoot[300];
145  char salYHC[300];
146  char salYCombustible[300];
147  char salYAireFresco[300];
148  char salYGasQuemado[300];
149  char salGastoO2[300];
150  char salGastoN2[300];
151  char salGastoCO2[300];
152  char salGastoH2O[300];
153  char salGastoCO[300];
154  char salGastoNOx[300];
155  char salGastoSoot[300];
156  char salGastoHC[300];
157  char salGastoCombustible[300];
158  char salGastoAireFresco[300];
159  char salGastoGasQuemado[300];
160 
161  void ConvertCharacter(int confile, char confile1[], int Characters);
162 
163  public:
164  TOutputResults();
165 
166  ~TOutputResults();
167 
168  double GetFControlAngle1() {
169  return FControlAngle1;
170  }
171  ;
172 
173  void ReadAverageResults(const char* FileWAM, fpos_t& filepos, TTubo** Pipe, bool EngineBlock, TBloqueMotor** Engine,
174  TDeposito **Plenum, TEjeTurbogrupo** Axis, TCompresor** Compressor, TTurbina** Turbine, TCondicionContorno** BC,
175  TDPF** DPF, TCCCompresorVolumetrico** Root, TVenturi** Venturi, TSensor** Sensor, TController** Controller,
176  int TotalCycles, char* ModelName);
177 
178  void HeaderAverageResults(stEspecies *SpeciesName, TCalculoExtern* EXTERN, bool ThereIsDLL);
179 
180  void OutputAverageResults(double AcumulatedTime, TCalculoExtern* EXTERN, bool ThereIsDLL);
181 
182  void CopyAverageResultsToFile(int mode);
183 
184  void CopyInstananeousResultsToFile(int mode);
185 
186  void ReadInstantaneousResults(const char* FileWAM, fpos_t &filepos, TBloqueMotor** Engine, TDeposito** Plenum,
187  TTubo** Pipe, TVenturi** Venturi, TCondicionContorno** BC, TDPF** DPF, TEjeTurbogrupo** Turbo, TCompresor** Compressor,
188  TTurbina** Turbine, TCCCompresorVolumetrico** Root, TCondicionContorno** BCWasteGate, int NumberOfWasteGates,
189  TCondicionContorno** BCReedValve, int NumberOfReedValves, TSensor** Sensor, TController** Controller, char* ModelName);
190 
191  void ReadSpaceTimeResults(const char* FileWAM, fpos_t &filepos, TTubo** Pipe, TBloqueMotor** Engine,
192  TDeposito **Plenum);
193 
194  void DoSpaceTimeFiles(int SpeciesNumber);
195 
196  void HeaderSpaceTimeResults(double thmax, double grmax, double agincr, int SpeciesNumber);
197 
198  void PrintSpaceTimeResults(bool EngineBlock, double Theta, double SimulationDuration, TBloqueMotor **Engine,
199  int SpeciesNumber);
200 
201  void HeaderInstantaneousResults(TCalculoExtern *EXTERN, bool ThereIsDLL, bool EngineBlock, stEspecies *SpeciesName);
202 
203  void PlotThisCycle(TBloqueMotor* Engine, int TotalCycles);
204 
205  void OutputInstantaneousResults(TCalculoExtern *EXTERN, bool ThereIsDLL, bool EngineBlock, double Theta,
206  TBloqueMotor* Engine, double Time);
207 
208  void PlotControl(double Theta0, double Theta, double CycleDuration);
209 
210  void WriteInstantaneous(bool EngineBlock, double Angle, double AngStep, TBloqueMotor* Engine, int TotalCycles);
211 
212  void WriteSpaceTime(bool EngineBlock, TBloqueMotor* Engine, int TotalCycles);
213 
214  void PutInsPeriod(double agincr) {
215  FInsPeriod = agincr;
216  }
217  ;
218 
219 };
220 #endif
stEspecies
Definition: Globales.h:297
TEjeTurbogrupo
Definition: TEjeTurbogrupo.h:47
TTubo
a Finite differences pipe.
Definition: TTubo.h:116
TController
Definition: TController.h:37
TTurbina
Definition: TTurbina.h:41
TCCCompresorVolumetrico
Definition: TCCCompresorVolumetrico.h:37
TDPF
Definition: TDPF.h:45
iVector
std::vector< int > iVector
Integer vector.
Definition: Math_wam.h:72
TCalculoExtern
Definition: TCalculoExtern.h:190
TCompresor
Definition: TCompresor.h:47
TCondicionContorno
Definition: TCondicionContorno.h:54
TDeposito
Definition: TDeposito.h:44
TVenturi
Definition: TVenturi.h:33
TTubo.h
TBloqueMotor
Definition: TBloqueMotor.h:43
TSensor
Definition: TSensor.h:42
TOutputResults
Definition: TOutputResults.h:34