OpenWAM
TDeposito.h
1 /* --------------------------------------------------------------------------------*\
2 ==========================|
3  |\\ /\ /\ // O pen | OpenWAM: The Open Source 1D Gas-Dynamic Code
4  | \\ | X | // W ave |
5  | \\ \/_\/ // A ction | CMT-Motores Termicos / Universidad Politecnica Valencia
6  | \\/ \// M odel |
7  ----------------------------------------------------------------------------------
8  License
9 
10  This file is part of OpenWAM.
11 
12  OpenWAM is free software: you can redistribute it and/or modify
13  it under the terms of the GNU General Public License as published by
14  the Free Software Foundation, either version 3 of the License, or
15  (at your option) any later version.
16 
17  OpenWAM is distributed in the hope that it will be useful,
18  but WITHOUT ANY WARRANTY; without even the implied warranty of
19  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20  GNU General Public License for more details.
21 
22  You should have received a copy of the GNU General Public License
23  along with OpenWAM. If not, see <http://www.gnu.org/licenses/>.
24 
25 
26  \*-------------------------------------------------------------------------------- */
27 
28 // ---------------------------------------------------------------------------
29 #ifndef TDepositoH
30 #define TDepositoH
31 #include <iostream>
32 #ifdef __BORLANDC__
33 #include <vcl.h>
34 #endif
35 //#include <cmath>
36 #include <vector>
37 #include <cstdio>
38 
39 #include "Globales.h"
40 
41 class TCondicionContorno;
42 class TCompresor;
43 
44 class TDeposito {
45  protected:
46  // ---------------------------------------------------------------------------
47  // VARIABLES PRIVADAS
48  // ---------------------------------------------------------------------------
49 
50  TCondicionContorno **FCCDeposito;
51  TCondicionContorno **FCCUnionEntreDep;
52 
53  // Constantes termodinamicas
54 
55  double FPresRef;
56 
57  // Variables geometricas
58 
59  int FNumeroDeposito;
60  double FVolumen0;
61  double FVolumen;
62  nmVolumenDeposito FVolumenDeposito;
63  nmTipoDeposito FTipoDeposito;
64  int *FUnion;
65  bool asgFUnion;
66  bool asgFNumUniones;
67  int *FNumConductos;
68  bool asgFNumConductos;
69  int *FNumNodos;
70  bool asgFNumNodos;
71  int *FSentidoFlujo;
72  bool asgFSentidoFlujo;
73 
74  int FNUnionesED;
75  int FNumeroUnionesED;
76 
77  // La crea pedro. la otra desaparecera
78  std::vector<int> FUnionED;
79  std::vector<int> FSentidoUED;
80 
81  bool FHayCompresor;
82  int FNumeroCompresor;
83  int FCompresorSentido;
84 
85  // Variables termodinamicas
86 
87  double FTemperature;
88  double FPressure;
89  double FPresionIsen;
90  double FDensidad;
91  double FAsonido;
92  double FMasa0;
93  double FMasa;
94 
95  double FHeatPower;
96 
97  // Variables temporales
98 
99  double FTime;
100  // bool FUpdated;
101 
102  // Salida grafica
103 
104  int FNumResMed;
105 
106  stResInstantDep FResInstantDep;
107  stResMediosDep FResMediosDep;
108 
109  // Sensores
110 
111  stSensoresDep FSensorDep;
112 
113  // Compressor acoplado (si hay)
114 
115  TCompresor *FCompresor;
116 
117  nmSentidoFlujo FSentidoGasto;
118 
119  // Estudio de Estabilidad
120 
121  // bool FEstudioEstabilidadRealizado;
122  // bool FCalculadoPaso;
123 
124  // Variables del transporte de especies.
125  int FNumeroEspecies;
126  nmTipoCalculoEspecies FCalculoEspecies;
127  nmCalculoGamma FCalculoGamma;
128  double *FFraccionMasicaEspecie;
129  double *FMasaEspecie;
130  double FCpMezcla;
131  double FCvMezcla;
132  double FRMezcla;
133  double FGamma;
134  double FGamma1;
135  double FGamma2;
136  double FGamma3;
137  double FGamma5;
138  double FGamma6;
139  bool FHayEGR;
140  int FIntEGR;
141  double FFraccionMasicaEspecieFuel; // Para calculo completo de especies
142 
143  // ---------------------------------------------------------------------------
144  // FUNCIONES PRIVADAS
145  // ---------------------------------------------------------------------------
146 
147  // void PutNUniones(int value);
148 
149  double EntalpiaEntrada(double ASonidoE, double VelocidadE, double MasaE, double ASonidoD, double MasaD, double Gamma);
150 
151  // void PutCalculadoPaso(bool valor);
152 
153  public:
154  // ---------------------------------------------------------------------------
155  // VARIABLES PUBLICAS
156  // ---------------------------------------------------------------------------
157 
158  int FNumeroUniones;
159 
160  void PutNUniones(int value);
161 
162  int getNUniones() {
163  return FNumeroUniones;
164  }
165 
166  // Numero de uniones total del deposito.
167  int getNumeroDeposito() {
168  return FNumeroDeposito;
169  }
170  ;
171 
172  int getNUnionesED() {
173  return FNumeroUnionesED;
174  }
175  ;
176 
177  double getMasa() {
178  return FMasa;
179  }
180  ;
181 
182  double getPressure() {
183  return FPressure;
184  }
185  ;
186 
187  double getPresionIs() {
188  return FPresionIsen;
189  }
190  ;
191 
192  double getSpeedsound() {
193  return FAsonido;
194  }
195  ;
196 
197  double getTemperature() {
198  return FTemperature;
199  }
200  ;
201 
202  TCondicionContorno* GetCCUnionEntreDep(int i);
203 
204  TCondicionContorno* GetCCDeposito(int i);
205  double GetFraccionMasicaEspecie(int i);
206 
207  // ---------------------------------------------------------------------------
208  // ---------------------------------------------------------------------------
209  double getR() {
210  return FRMezcla;
211  }
212  ;
213 
214  double getGamma() {
215  return FGamma;
216  }
217  ;
218 
219  double getTiempo() {
220  return FTime;
221  }
222  ;
223 
224  void PutUnion(int indice, int valor); // Asigna los numeros de las uniones a depositos del deposito
225 
226  void PutNumConductos(int indice, int valor); // Asigna los numeros de los tubos que descargan al deposito
227 
228  void PutNumNodos(int indice, int valor); // Asigna los numeros de los nodos que descargan al deposito
229 
230  void PutSentidoFlujo(int indice, int valor); // Asigna el sentido del flujo de cada union
231 
232  nmTipoDeposito getTipoDeposito() {
233  return FTipoDeposito;
234  }
235  ;
236 
237  bool FUpdated;
238 
239  bool getUpdated() {
240  return FUpdated;
241  }
242 
243  void PutUpdate(bool valor) {
244  FUpdated = valor;
245  }
246 
247  bool FEstudioEstabilidadRealizado;
248 
249  bool getEstudioEstabilidadRealizado() {
250  return FEstudioEstabilidadRealizado;
251  }
252 
253  void PutRealizado(bool valor) {
254  FEstudioEstabilidadRealizado = valor;
255  }
256 
257  void PutCalculadoPaso(bool valor) {
258  FCalculadoPaso = valor;
259  }
260 
261  bool FCalculadoPaso;
262 
263  bool getCalculadoPaso() {
264  return FCalculadoPaso;
265  }
266 
267  // ---------------------------------------------------------------------------
268  // FUNCIONES PUBLICAS
269  // ---------------------------------------------------------------------------
270 
271  TDeposito(int i, nmTipoDeposito TipoDeposito, nmTipoCalculoEspecies SpeciesModel, int numeroespecies,
272  nmCalculoGamma GammaCalculation, bool ThereIsEGR);
273 
274  virtual ~TDeposito() = 0;
275 
276  virtual void ActualizaPropiedades(double TimeCalculo) = 0;
277 
278  void ReadInstantaneousResultsDep(const char *FileWAM, fpos_t &filepos);
279 
280  void HeaderInstantaneousResultsDep(std::stringstream& insoutput, stEspecies *DatosEspecies);
281 
282  void ImprimeResultadosInstantaneosDep(std::stringstream& insoutput);
283 
284  void ResultadosInstantaneosDep();
285 
286  void ReadAverageResultsDep(const char *FileWAM, fpos_t &filepos);
287 
288  void HeaderAverageResultsDep(std::stringstream& medoutput, stEspecies *DatosEspecies);
289 
290  void ImprimeResultadosMediosDep(std::stringstream& medoutput);
291 
292  void AcumulaResultadosMedios(double Actual);
293 
294  void ResultadosMediosDep();
295 
296  double CriterioEstabilidad(double TMinimo);
297 
298  void SalidaGeneralDep(stEspecies *DatosEspecies);
299 
300  void CreaUnionED(int numero, int sentido);
301 
302  void AsignaCompresor(TCompresor *Compressor, int sentido);
303 
304  void AsignacionCC(TCondicionContorno **BC, int numCC);
305 
306  void LeeDatosGeneralesDepositos(const char *FileWAM, fpos_t &filepos);
307 
308  void ActualizaTiempo(double TiempoActual);
309 
310  virtual void UpdateProperties0DModel(double Time) {
311  }
312  ;
313 
314  void PutHeatPower(double Power) {
315  FHeatPower = Power;
316  }
317  ;
318 
319 };
320 
321 // ---------------------------------------------------------------------------
322 #endif
323 
stEspecies
Definition: Globales.h:297
stResMediosDep
Definition: Globales.h:470
TCompresor
Definition: TCompresor.h:47
TCondicionContorno
Definition: TCondicionContorno.h:54
TDeposito
Definition: TDeposito.h:44
stSensoresDep
Definition: Globales.h:487
stResInstantDep
Definition: Globales.h:452