5 #include "TCCExternalConnectionVol.h"
10 TCCExternalConnectionVol::TCCExternalConnectionVol(nmTypeBC TipoCC,
int numCC, nmTipoCalculoEspecies SpeciesModel,
11 int numeroespecies, nmCalculoGamma GammaCalculation,
bool ThereIsEGR) :
12 TCondicionContorno(TipoCC, numCC, SpeciesModel, numeroespecies, GammaCalculation, ThereIsEGR) {
27 TCCExternalConnectionVol::~TCCExternalConnectionVol() {
30 void TCCExternalConnectionVol::UpdateCurrentExternalProperties(
double U0,
double T0,
double P0,
double t) {
39 void TCCExternalConnectionVol::AsignGeometricalData(
double D0,
double deltaX) {
42 FAExt = __geom::Circle_area(D0);
47 void TCCExternalConnectionVol::ExternalCharacteristics(
double Time) {
50 double x = 0., Px = 0., Tx = 0., Ux = 0., Ax = 0.;
53 double g = __Gamma::G;
54 double gg = __Gamma::G_5;
56 double A0 = sqrt(g * __R::Air * FTExt);
58 FA_AExt = A0 / pow(__units::PaToBar(FPExt), gg) / __cons::ARef;
60 FK_CExt = (A0 + (g - 1) / 2 * FUExt) / __cons::ARef;
64 void TCCExternalConnectionVol::CalculaCondicionContorno(
double Time) {
68 ExternalCharacteristics(Time);
70 flujo = (FK_CExt / FA_AExt) / (*FCC / FTuboExtremo[0].Entropia);
72 if(flujo < 0.999995) {
74 double A = FTuboExtremo[0].Entropia / (FTuboExtremo[0].Entropia + FA_AExt) * (*FCC + FK_CExt);
75 FT_Boundary =
pow2(A * __cons::ARef) / __R::Air / __Gamma::G;
76 FU_Boundary = (A - *FCC) / __Gamma::G_3;
77 *FCD = A + __Gamma::G_3 * FU_Boundary;
78 FU_Boundary *= __cons::ARef;
79 FP_Boundary = pow(A / FTuboExtremo[0].Entropia, __Gamma::G_4);
80 }
else if(flujo > 1.000005) {
81 double A = FA_AExt / (FTuboExtremo[0].Entropia + FA_AExt) * (*FCC + FK_CExt);
82 FT_Boundary =
pow2(A * __cons::ARef) / __R::Air / __Gamma::G;
83 FU_Boundary = (FK_CExt - A) / __Gamma::G_3;
84 *FCD = A + __Gamma::G_3 * FU_Boundary;
85 *FCC = A - __Gamma::G_3 * FU_Boundary;
86 FTuboExtremo[0].Entropia = FA_AExt;
87 FU_Boundary *= __cons::ARef;
88 FP_Boundary = pow(A / FTuboExtremo[0].Entropia, __Gamma::G_4);
92 FT_Boundary =
pow2(A * __cons::ARef) / __R::Air / __Gamma::G;
95 FP_Boundary = pow(A / FTuboExtremo[0].Entropia, __Gamma::G_4);
97 double deltat = Time - FTime0;
99 FT_BoundarySum = FT_Boundary * deltat;
100 FU_BoundarySum = FU_Boundary * deltat;
101 FP_BoundarySum = FP_Boundary * deltat;
109 void TCCExternalConnectionVol::ReadBoundaryData(
const char *FileWAM, fpos_t &filepos,
int NumberOfPipes,
TTubo **Pipe,
110 int nDPF,
TDPF **DPF) {
115 FTuboExtremo[0].Pipe = NULL;
117 while(FNumeroTubosCC < 1 && i < NumberOfPipes) {
118 if(Pipe[i]->getNodoIzq() == FNumeroCC) {
119 FTuboExtremo[FNumeroTubosCC].Pipe = Pipe[i];
120 FTuboExtremo[FNumeroTubosCC].TipoExtremo = nmLeft;
121 FCC = &(FTuboExtremo[FNumeroTubosCC].Beta);
122 FCD = &(FTuboExtremo[FNumeroTubosCC].Landa);
127 if(Pipe[i]->getNodoDer() == FNumeroCC) {
128 FTuboExtremo[FNumeroTubosCC].Pipe = Pipe[i];
129 FTuboExtremo[FNumeroTubosCC].TipoExtremo = nmRight;
130 FCC = &(FTuboExtremo[FNumeroTubosCC].Landa);
131 FCD = &(FTuboExtremo[FNumeroTubosCC].Beta);
132 FNodoFin = FTuboExtremo[FNumeroTubosCC].Pipe->getNin() - 1;
140 FFraccionMasicaEspecie =
new double[FNumeroEspecies - FIntEGR];
141 for(
int i = 0; i < FNumeroEspecies - FIntEGR; i++) {
145 FILE *fich = fopen(FileWAM,
"r");
146 fsetpos(fich, &filepos);
148 fscanf(fich,
"%d ", &FID);
150 fgetpos(fich, &filepos);
155 void TCCExternalConnectionVol::LoadNewData(
double* p,
double* T,
double* u) {
158 *p = FP_BoundarySum / FTimeSum;
159 *T = FT_BoundarySum / FTimeSum;
160 *u = FU_BoundarySum / FTimeSum;
174 #pragma package(smart_init)