OpenWAM
TCCCilindro.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 TCCCilindroH
30 #define TCCCilindroH
31 
32 #include "TCondicionContorno.h"
33 
34 #include <cstdio>
35 #include <iostream>
36 
37 // ---------------------------------------------------------------------------
38 // ---------------------------------------------------------------------------
39 
40 class TBloqueMotor;
41 class TCilindro;
42 
47  private:
48 
49  TTipoValvula *FValvula;
50  TCilindro *FCilindro;
51  TBloqueMotor *FMotor;
52  int FNumeroCilindro;
53 
54  double FPref; // Pressure de referencia
55 
56  double FCDEntrada; // Coeficiente de descarga a la entrada
57  double FCDSalida; // Coeficiente de descarga a la salida
58  double FCTorbellino; // Coeficiente de torbellino
59 
60  double FSeccionEficaz; // Seccion eficaz de la valvula
61  double FGasto; // Massflow en el extremo del tubo.
62  double FMomento;
63  double FVelocity; // Velocity en el extremo del tubo
64  double FSonido; // Velocity del sonido en el extremo del tubo
65  double FVelocidadGarganta; // Velocity en la garganta
66  double FMachGarganta; // Numero de Mach en la garganta.
67  double FGastoGarganta; // Massflow en la garganta.
68  double FRelacionPresionGarganta;
69  double FAd;
70 
71  double FSeccionValvula; // Seccion en la garganta
72  double FSeccionTubo; // Seccion en el extremo del tubo
73 
74  double FCarrera;
75  double Fk; // Relacion entre la seccion del tubo en el extremo y la seccion eficaz de la valvula.
76  double Fcc; // Variable auxiliar utilizada para el calculo de el caso saliente supercritico.
77 
78  nmTipoValv FTipoValv;
79  nmCaso FCaso;
80 
81  int FNodoFin; // Nodo del tubo en el extremo del tubo.
82  int FIndiceCC; // Posicion del vector para tomar datos del tubo para la BC (0 Nodo izquierdo; 1 Nodo derecho)
83  double *FCC; // Caracteristica conocida del tubo.
84  double *FCD; // Caracteristica desconocida del tubo.
85 
86  nmSentidoFlujo FSentidoFlujo;
87 
88  double FGamma1;
89  double FGamma2;
90  double FGamma3;
91  double FGamma4;
92  double FGamma5;
93  double FGamma6;
94 
95  // FUNCIONES
96 
97  void FlujoEntranteCilindro();
98 
99  void FlujoSalienteCilindro();
100 
101  void Resolucion(double ext1, double ext2, nmCaso Caso, double *u2t, double *a2t);
102 
103  // void FESubcritico(double vel_son_supuesta,double *u2_1,double *u2_2);
104  //
105  // void FESupercritico(double mach_supuesto,double *miembro1,double *xx2);
106  //
107  // void FSSubcritico(double vel_son_supuesta,double *error,double *miembro2);
108  //
109  // void FSSupercritico(double vel_supuesta,double *a2_1,double *a2_2);
110 
111  public:
112 
118  double getSeccionEficaz() {
119  return FSeccionEficaz;
120  }
121  ;
122 
123  double getMassflow() {
124  return FGasto;
125  }
126  ;
127 
128  double getMomento() {
129  return FMomento;
130  }
131  ;
132 
133  double getVelocity() {
134  return FVelocity;
135  }
136  ;
137 
138  double getSpeedsound() {
139  return FSonido;
140  }
141  ;
142 
143  double getMach() {
144  return FMachGarganta;
145  }
146  ;
147 
148  double getVelocidadGarganta() {
149  return FVelocidadGarganta;
150  }
151  ;
152 
153  double getMachGarganta() {
154  return FMachGarganta;
155  }
156  ;
157 
158  double getGastoGarganta() {
159  return FGastoGarganta;
160  }
161  ;
162 
163  double getRelacionPresionGarganta() {
164  return FRelacionPresionGarganta;
165  }
166  ;
167 
168  int getNumeroCilindro() {
169  return FNumeroCilindro;
170  }
171  ;
172 
173  TTipoValvula* getValvula() {
174  return FValvula;
175  }
176  ;
177 
178  nmSentidoFlujo getSentidoFlujo() {
179  return FSentidoFlujo;
180  }
181  ;
182 
183  TCCCilindro(nmTypeBC TipoCC, int numCC, nmTipoCalculoEspecies SpeciesModel, int numeroespecies,
184  nmCalculoGamma GammaCalculation, bool ThereIsEGR);
185 
186  ~TCCCilindro();
187 
188  void ReadBoundaryData(const char *FileWAM, fpos_t &filepos, int NumberOfPipes, TTubo **Pipe, int nDPF, TDPF **DPF);
189 
190  void CalculaCondicionContorno(double Time);
191 
192  void AsignaTipoValvula(TTipoValvula **Origen, int Valv, int i);
193 
194  void AsignaCilindro(TBloqueMotor *EngineBlock);
195 
196  void ActualizaAnguloValvula(double TiempoActual, double Regimen);
197 
198  void TuboCalculandose(int TuboActual) {
199  }
200  ;
201 };
202 
203 #endif
TTubo
a Finite differences pipe.
Definition: TTubo.h:116
TCilindro
Definition: TCilindro.h:59
TCCCilindro::ActualizaAnguloValvula
void ActualizaAnguloValvula(double TiempoActual, double Regimen)
Definition: TCCCilindro.cpp:660
TTipoValvula
Definition: TTipoValvula.h:53
TDPF
Definition: TDPF.h:45
TCondicionContorno
Definition: TCondicionContorno.h:54
TCCCilindro
Foo.
Definition: TCCCilindro.h:46
TBloqueMotor
Definition: TBloqueMotor.h:43
TCCCilindro::getSeccionEficaz
double getSeccionEficaz()
Naniano.
Definition: TCCCilindro.h:118