9 TAcousticTurbine::TAcousticTurbine(
iVector InletPipeID,
iVector VoluteID,
int OutletPipeID) {
11 FInletPipeID.resize(InletPipeID.size());
12 FVoluteID.resize(InletPipeID.size());
13 FInletPipe.resize(InletPipeID.size());
14 FVolute.resize(InletPipeID.size());
16 for(
int i = 0; i < InletPipeID.size(); i++) {
17 FInletPipeID[i] = InletPipeID[i];
18 FVoluteID[i] = VoluteID[i];
20 FOutletPipeID = OutletPipeID;
23 TAcousticTurbine::TAcousticTurbine() {
26 TAcousticTurbine::~TAcousticTurbine() {
29 double TAcousticTurbine::T3(
int i) {
31 double a = FInletPipe[i]->GetAsonido(0) * __cons::ARef;
32 double g = FInletPipe[i]->GetGamma(0);
33 double R = FInletPipe[i]->GetRMezcla(0);
38 double TAcousticTurbine::T3() {
43 for(
int i = 0; i < FInletPipe.size(); i++) {
47 for(
int i = 0; i < FInletPipe.size(); i++) {
50 T3Sum /= FInletPipe.size();
52 for(
int i = 0; i < FInletPipe.size(); i++) {
53 T3Sum += T3(i) * MassIn(i);
60 double TAcousticTurbine::P3(
int i) {
62 return FInletPipe[i]->GetPresion(0);
65 double TAcousticTurbine::P3() {
68 for(
int i = 0; i < FInletPipe.size(); i++) {
71 P3Sum /= FInletPipe.size();
76 double TAcousticTurbine::P30(
int i) {
78 double p = FInletPipe[i]->GetPresion(0);
79 double a = FInletPipe[i]->GetAsonido(0) * __cons::ARef;
80 double v = FInletPipe[i]->GetVelocidad(0) * __cons::ARef;
81 double g = FInletPipe[i]->GetGamma(0);
83 double p3 = p * pow(1 + (g - 1) / 2 *
pow2(v / a), g / (g - 1));
88 double TAcousticTurbine::T30(
int i) {
89 double p = FInletPipe[i]->GetPresion(0);
90 double a = FInletPipe[i]->GetAsonido(0) * __cons::ARef;
91 double v = FInletPipe[i]->GetVelocidad(0) * __cons::ARef;
92 double g = FInletPipe[i]->GetGamma(0);
93 double R = FInletPipe[i]->GetRMezcla(0);
95 double T0 = (
pow2(a) + (g - 1) / 2 *
pow2(v)) / g / R;
100 double TAcousticTurbine::DiabEfficiency(
int i) {
101 double g = FInletPipe[i]->GetGamma(0);
102 double eff = (T30(i) - T4()) / (T30(i) * (1 - pow(1 / ExpRatio(i), (g - 1) / g)));
107 double TAcousticTurbine::ExpRatio(
int i) {
109 return P30(i) / P4();
113 double TAcousticTurbine::ExpRatio() {
116 for(
int i = 0; i < FInletPipe.size(); i++) {
117 ERSum += ExpRatio(i);
119 ERSum /= FInletPipe.size();
125 double TAcousticTurbine::P4() {
127 int n = FOutletPipe->getNin() - 1;
133 double TAcousticTurbine::T4() {
135 int n = FOutletPipe->getNin() - 1;
141 double TAcousticTurbine::MassIn(
int i) {
143 return FInletPipe[i]->GetDensidad(0) * FInletPipe[i]->GetVelocidad(0) * __cons::ARef * SIn(i);
146 double TAcousticTurbine::MassIn() {
149 for(
int i = 0; i < FInletPipe.size(); i++) {
156 double TAcousticTurbine::MassOut() {
158 int n = FOutletPipe->getNin() - 1;
163 double TAcousticTurbine::DIn() {
166 for(
int i = 0; i < FInletPipe.size(); i++) {
167 DInSum +=
pow2(DIn(i));
173 #pragma package(smart_init)
double GetGamma(int i) const
Gets the specific heat capacities ratio at a given cell.
double GetPresion(int i) const
Gets the fluid pressure.
T pow2(T x)
Returns x to the power of 2.
double GetVelocidad(int i) const
Gets the fluid speed.
double GetDensidad(int i) const
Gets the density.
double GetRMezcla(int i) const
Gets the gas constant of the mixture at a given cell.
double GetAsonido(int i) const
Gets the speed of sound.
std::vector< int > iVector
Integer vector.