OpenWAM
TTurbina.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 TTurbinaH
30 #define TTurbinaH
31 #include <iostream>
32 #ifdef __BORLANDC__
33 #include <vcl.h>
34 #endif
35 #include "TDepVolCteBase.h"
36 #include "TTurbineMap.h"
37 #include "TController.h"
38 #include "TTC_HTM.h"
39 #include "TAcousticTurbine.h"
40 
41 class TTurbina: public TDepVolCteBase {
42  protected:
43  // ---------------------------------------------------------------------------
44  // VARIABLES PRIVADAS
45  // ---------------------------------------------------------------------------
46 
47  TCondicionContorno **FCCEntrada;
48  TCondicionContorno **FCCSalida;
49 
50  TTC_HTM *FHTM;
51 
52  TTurbineMap *FMapa;
53 
54  double FRack;
55  int FNumControlObject;
56  TController *FRackController;
57  bool FRackIsControlled;
58 
59  nmTipoGas FTipoGas;
60  int Fncilin;
61 
62  // int FNumeroTurbina;
63  int FNumeroEntradas;
64  int FNumeroTurbinaTGV;
65  int FNodoSalida;
66  int FTuboSalida;
67  int FExtremoSalida;
68  int FSentidoSalida;
69  int FTipoAjusteRdTurbina;
70  bool asgNumeroTurbina;
71  nmRendimientoTurbina FCalRendTurbina;
72  double FPresionSalida;
73  double FVelocidadSalida;
74  double FGastoSalida;
75  double FTempSalida;
76  double FAsonidoSalida;
77  double FRhoSalida;
78 
79  double FDiametroRodete;
80  double FDiametroTurbinaIn;
81  double FDiametroRodeteOut;
82  double FDiametroTuerca;
83 
84  double FTrabajoIsen;
85  double FTrabajoReal;
86  double FTrabajoRealPaso;
87  double FTrabajoTotal;
88  double FTrabajoFluido;
89  double FRendInstantaneo;
90  double *FRelacionCinAcum;
91  double FAjustRendTurb;
92  double FDeltaPaso;
93  double FTrabajoPaso;
94  double FRegimen;
95  stResMediosTurbina FResMediosTurbina;
96  stResInstantTurbina FResInstantTurbina;
97  int *FNodoEntrada;
98  int *FTuboEntrada;
99  int *FExtremoEntrada;
100  int *FSentidoEntrada;
101  double *FPresionEntrada;
102  double *FVelocidadEntrada;
103  double *FGastoEntrada;
104  double *FTempEntrada;
105  double *FAsonidoEntrada;
106  double *FRhoEntrada;
107  double *FTemp0Entrada;
108  double *FEntalpia0Entrada;
109  double *FPresion0Entrada;
110  double *FEntalpiaIsenSalida;
111  double *FRelacionCinematica;
112  double *FRendTurbina;
113  double *FRDTAjuste;
114  double FRcoptima;
115  double FRcmaxima;
116  double FRendmaximo;
117 
118  double FPotenciaPaso;
119  double FPotencia;
120  double FTrabajoIsenInstTotal;
121  double FRelacionCinGlobalAcum;
122  double *FPonderacionRelacionCinematica;
123 
124  double *FGastoCorregido;
125  double *FRegimenCorregido;
126  double *FRelacionExpansion;
127 
128  nmTurbineType FTipoTurbina;
129  stDatosTGV *FDatosTGV;
130 
131  double FTimeTurbina;
132  TAcousticTurbine* FAcTurb;
133  bool FIsAcoustic;
134 
135  // ---------------------------------------------------------------------------
136  // FUNCIONES PRIVADAS
137  // ---------------------------------------------------------------------------
138 
139  void TransformaContorno(double *L, double *B, double *E, double *a, double *v, double *p, int modo, double Gamma);
140 
141  // void PutNumeroTurbina(int NumeroTurbina);
142 
143  // void PutRegimen(double valor);
144 
145  double CpTurbineSimple(double Temperature, double YBurnt);
146 
147  double CpTurbineComplete(double YO2, double YCO2, double YH2O, double Temperature);
148 
149  public:
150  // ---------------------------------------------------------------------------
151  // VARIABLES PUBLICAS
152  // ---------------------------------------------------------------------------
153 
154  void PutNumeroTurbina(int NumeroTurbina) {
155  if(!asgNumeroTurbina) {
156  FNumeroTurbina = NumeroTurbina;
157  asgNumeroTurbina = true;
158  } else {
159  std::cout << "ERROR: Esta turbina ya tiene numero asignada" << std::endl;
160  throw Exception("");
161  }
162  }
163 
164  TTurbineMap* getMap() {
165  return FMapa;
166  }
167  ;
168 
169  int FNumeroTurbina;
170 
171  int getNumeroTurbina() {
172  return FNumeroTurbina;
173  }
174 
175  int getNumeroEntradas() {
176  return FNumeroEntradas;
177  }
178  ;
179 
180  void PutRegimen(double valor) {
181  FRegimen = valor;
182  }
183 
184  TCondicionContorno* GetCCEntrada(int i);
185 
186  TCondicionContorno* GetCCSalida(int i);
187 
188  double getPotenciaPaso() {
189  return FPotenciaPaso;
190  }
191  ;
192 
193  double GetRelacionCinematica(int i);
194 
195  virtual double GetEfficiency() = 0;
196 
197  // ---------------------------------------------------------------------------
198  // FUNCIONES PUBLICAS
199  // ---------------------------------------------------------------------------
200 
201  TTurbina(int i, nmTipoDeposito TipoDeposito, int nentradas, nmTipoCalculoEspecies SpeciesModel, int numeroespecies,
202  nmCalculoGamma GammaCalculation, bool ThereIsEGR);
203 
204  virtual ~TTurbina() = 0;
205 
206  void ActualizaPropiedades(double TimeCalculo);
207 
208  void LeeTurbina(const char *FileWAM, fpos_t &filepos);
209 
210  void AsignaDatosSalida(int nodsaltur, int tubsaltur, int extremo, int sentido);
211 
212  virtual void ReadAverageResultsTurb(const char *FileWAM, fpos_t &filepos) = 0;
213 
214  virtual void CabeceraResultadosMedTurb(stringstream& medoutput) = 0;
215 
216  virtual void ImprimeResultadosMedTurb(stringstream& medoutput) = 0;
217 
218  virtual void IniciaMedias() = 0;
219 
220  virtual void AcumulaMedias(double Tiempo) = 0;
221 
222  virtual void LeeResultadosInstantTurb(const char *FileWAM, fpos_t &filepos) = 0;
223 
224  virtual void CabeceraResultadosInstantTurb(stringstream& insoutput) = 0;
225 
226  virtual void ImprimeResultadosInstantTurb(stringstream& insoutput) = 0;
227 
228  virtual void ResultadosInstantTurb() = 0;
229 
230  virtual void CalculaResultadosMediosTurb() = 0;
231 
232  void AsignaDatosEntrada(int nodentur, int tubsaltur, int extremo, int sentido, int n);
233 
234  virtual void CalculaCondicionTurbina(double TimeCalculo) = 0;
235 
236  virtual void AsignaEntradaSalidaCC() = 0;
237 
238  void CalculoPotenciaPaso();
239 
240  virtual void ImprimeResultadosMediosPantalla() = 0;
241 
242  void AsignaRackController(TController **Controller);
243 
244  void AllocateDatosTGV(stDatosTGV *DatosTGV);
245 
246  void AsignTCHTM(TTC_HTM *HTM) {
247  FHTM = HTM;
248  }
249  ;
250 
251  void CalculateAdiabaticMap(double TinC);
252 
253  double TempMeasure() {
254  return FMapa->TempMeasure();
255  }
256  ;
257 
258  void AsignAcousticElements(TTubo **Pipe);
259 
260  TAcousticTurbine* AcousticT() {
261  return FAcTurb;
262  }
263  ;
264 
265 };
266 // ---------------------------------------------------------------------------
267 #endif
268 
TTubo
a Finite differences pipe.
Definition: TTubo.h:116
TController
Definition: TController.h:37
TTurbina
Definition: TTurbina.h:41
TTC_HTM
Definition: TTC_HTM.h:307
TAcousticTurbine
Definition: TAcousticTurbine.h:39
TDepVolCteBase
Definition: TDepVolCteBase.h:33
TCondicionContorno
Definition: TCondicionContorno.h:54
stDatosTGV
Definition: Globales.h:336
Exception
Custom exception class.
Definition: Exception.hpp:39
stResMediosTurbina
Definition: Globales.h:499
stResInstantTurbina
Definition: Globales.h:525
TAcousticTurbine.h
TTurbineMap
Definition: TTurbineMap.h:34