OpenWAM
Public Member Functions | Public Attributes | List of all members
TCCCompresorVolumetrico Class Reference
Inheritance diagram for TCCCompresorVolumetrico:
[legend]
Collaboration diagram for TCCCompresorVolumetrico:
[legend]

Public Member Functions

void PutNumeroCV (int valor)
 
int getNumeroCV ()
 
double getPotenciaCV ()
 
 TCCCompresorVolumetrico (nmTypeBC TipoCC, int numCC, nmTipoCalculoEspecies SpeciesModel, int numeroespecies, nmCalculoGamma GammaCalculation, bool ThereIsEGR)
 
void CalculaCondicionContorno (double Time)
 
void LeeCCCompresorVol (const char *FileWAM, fpos_t &filepos, int NumberOfPipes, TTubo **Pipe, bool HayMotor)
 
void ObtencionValoresInstantaneos (double ene)
 
void ReadAverageResultsCV (const char *FileWAM, fpos_t &filepos)
 
void CabeceraResultadosMedCV (stringstream &medoutput)
 
void ImprimeResultadosMedCV (stringstream &medoutput)
 
void ResultadosMediosCV ()
 
void AcumulaResultadosMediosCV (double Actual)
 
void LeeResultadosInstantCV (const char *FileWAM, fpos_t &filepos)
 
void CabeceraResultadosInstantCV (stringstream &insoutput)
 
void ImprimeResultadosInstantCV (stringstream &insoutput)
 
void ResultadosInstantCV ()
 
void IniciaMedias ()
 
- Public Member Functions inherited from TCondicionContorno
nmTypeBC getTipoCC ()
 
int getNumeroCC ()
 
int getNumeroTubosCC ()
 
bool getUnionDPF ()
 
stTuboExtremo GetTuboExtremo (int i)
 
double GetLanda (int i)
 
double GetBeta (int i)
 
double GetEntropia (int i)
 
void PutBeta (int i, double valor)
 
void PutEntropia (int i, double valor)
 
void PutLanda (int i, double valor)
 
void PutPosicionNodo (double valor)
 
double getPosicionNodo ()
 
double getGamma ()
 
double getR ()
 
double GetFraccionMasicaEspecie (int i)
 
 TCondicionContorno (nmTypeBC Tipo, int numCC, nmTipoCalculoEspecies SpeciesModel, int numeroespecies, nmCalculoGamma GammaCalculation, bool ThereIsEGR)
 
virtual void CalculaCaracteristicas (double Time)
 
virtual void TuboCalculandose (int i)
 
virtual void ReadBoundaryData (const char *FileWAM, fpos_t &filepos, int NumberOfPipes, TTubo **Pipe, int nDPF, TDPF **DPF)
 
virtual void AsignAmbientConditions (double Tamb, double Pamb, double *AtmosphericComposition)
 
virtual void AsignaTubos (int NumberOfPipes, TTubo **Pipe)
 

Public Attributes

int FNumeroCV
 
- Public Attributes inherited from TCondicionContorno
double FPosicionNodo
 

Additional Inherited Members

- Protected Attributes inherited from TCondicionContorno
nmTypeBC FTipoCC
 
stTuboExtremoFTuboExtremo
 
int FNumeroCC
 
int FNumeroTubosCC
 
double FTime0
 
double FTime1
 
double FDeltaT
 
double FDeltaAngulo
 
double FAnguloAnterior
 
double FAnguloActual
 
int FNumeroEspecies
 
nmTipoCalculoEspecies FCalculoEspecies
 
nmCalculoGamma FCalculoGamma
 
double FGamma
 
double FRMezcla
 
double FCvMezcla
 
double FCpMezcla
 
double * FFraccionMasicaEspecie
 
bool FHayEGR
 
int FIntEGR
 
bool FUnionDPF
 

Detailed Description

Definition at line 37 of file TCCCompresorVolumetrico.h.

Member Function Documentation

◆ CalculaCondicionContorno()

void TCCCompresorVolumetrico::CalculaCondicionContorno ( double  Time)
virtual

Acotacion del intervalo donde esta U

Implements TCondicionContorno.

Definition at line 201 of file TCCCompresorVolumetrico.cpp.

201  {
202  try {
203  double ei, ed, massflow, entropia, FraccionMasicaAcum = 0.;
204  int cd = 0;
205 
206  FGamma = FTuboExtremo[0].Pipe->GetGamma(FNodoFin);
207  FRMezcla = FTuboExtremo[0].Pipe->GetRMezcla(FNodoFin);
208  FGamma3 = __Gamma::G3(FGamma);
209  FGamma4 = __Gamma::G4(FGamma);
210 
211  /* Calculo del massflow volumetrico (l/s) */
212  massflow = FC1Caudal + FC2Caudal * FPressure + FC3Caudal * FRelacionVelocidadesCV * FRegimen;
213 
214  /* Calculo del massflow masico (kg/s) */
215  FDensidad = __units::BarToPa(FPresionCV) / (FRMezcla * __units::degCToK(FTemperaturaCV));
216  FGasto = massflow * FDensidad / 1000.;
217 
218  /* Temperature del gas entrante en grados centigrados */
219  FTemperature = FC1Temperatura * pow2(FPressure) + FC2Temperatura * FPressure + FC3Temperatura;
220 
221  /* Velocity del sonido en el tubo */
222  FSonido = sqrt(FGamma * __units::degCToK(FTemperature) * FRMezcla) / __cons::ARef;
223 
224  /* Potencia */
225  FPotencia = FC1Potencia * pow3(FPressure) + FC2Potencia * pow2(FPressure) + FC3Potencia * FPressure + FC4Potencia +
226  FC5Potencia * exp(FC6Potencia * FRelacionVelocidadesCV * FRegimen);
227 
229  ei = 0;
230  ed = FSonido;
231 
232  stComprVol CV(FTuboExtremo[0].Entropia, *FCC, FGamma, FSonido, FGasto, FSeccionTubo, __cons::PRef, __cons::ARef);
233  FVelocity = FindRoot(CV, ei, ed);
234 
235  /* printf("ERROR: TCCCompresorVolumetrico::CalculaCondicionContorno No hay convergencia en el compresor volumetrico en la condicion de contorno: %d.\n",FNumeroCC);
236  printf("Repasar los datos. El compresor esta en condiciones supersonicas.\n");
237  throw Exception("ERROR: TCCCompresorVolumetrico::CalculaCondicionContorno No hay convergencia en el compresor volumetrico.");*/
238 
239  /* Obtencion de las variables de Riemann */ // Tal y como esta planteada esta BC, el flujo siempre sera entrante al tubo.
240  FTuboExtremo[0].Entropia = CV.entropia;
241  *FCC = FSonido - FGamma3 * FVelocity;
242  *FCD = FSonido + FGamma3 * FVelocity;
243 
244 // Transporte de Especies Quimicas
245  if(*FCC > *FCD) { // Flujo saliente del tubo
246  for(int j = 0; j < FNumeroEspecies - 2; j++) {
247  FFraccionMasicaEspecie[j] = FTuboExtremo[0].Pipe->GetFraccionMasicaCC(FIndiceCC, j);
248  FraccionMasicaAcum += FFraccionMasicaEspecie[j];
249  }
250  FFraccionMasicaEspecie[FNumeroEspecies - 2] = 1. - FraccionMasicaAcum;
251  FFraccionMasicaEspecie[FNumeroEspecies - 1] = FTuboExtremo[0].Pipe->GetFraccionMasicaCC(FIndiceCC, FNumeroEspecies - 1);
252  } else if(*FCD > *FCC) { // Flujo entrante al tubo
253  for(int j = 0; j < FNumeroEspecies - FIntEGR; j++) {
254  FFraccionMasicaEspecie[j] = FComposicion[j];
255  }
256  }
257  /* La ultima opcion es que *FCC=*FCD. En este caso el flujo esta parado y la fraccion masica
258  de las especies permanece constante en dicho instante */
259 
260  AcumulaResultadosMediosCV(Time);
261 
262  } catch(exception &N) {
263  std::cout << "ERROR: TCCCompresorVolumetrico::CalculaCondicionContorno en la condicion de contorno: " << FNumeroCC <<
264  std::endl;
265  std::cout << "Tipo de error: " << N.what() << std::endl;
266  throw Exception(N.what());
267  }
268 }

References TTubo::GetGamma(), and TTubo::GetRMezcla().

Here is the call graph for this function:

The documentation for this class was generated from the following files:
TTubo::GetGamma
double GetGamma(int i) const
Gets the specific heat capacities ratio at a given cell.
Definition: TTubo.cpp:5444
FindRoot
double FindRoot(T &func, const double x1, const double x2)
Finds the root of a function.
Definition: Math_wam.h:459
pow3
T pow3(T x)
Returns x to the power of 3.
Definition: Math_wam.h:101
stComprVol
Definition: BoundaryFunctions.h:439
TTubo::GetFraccionMasicaCC
double GetFraccionMasicaCC(int j, int i)
Definition: TTubo.h:953
Exception
Custom exception class.
Definition: Exception.hpp:39
pow2
T pow2(T x)
Returns x to the power of 2.
Definition: Math_wam.h:88
TTubo::GetRMezcla
double GetRMezcla(int i) const
Gets the gas constant of the mixture at a given cell.
Definition: TTubo.cpp:5476