Documentation 6b54b78464
Loading...
Searching...
No Matches
CTurboOutput.hpp
Go to the documentation of this file.
1/*!
2 * \file CTurboOutput.hpp
3 * \brief Headers of the Turbomachinery Performance class.
4 * \author S. Vitale, N. Anand
5 * \version 7.5.1 "Blackbird"
6 *
7 * SU2 Project Website: https://su2code.github.io
8 *
9 * The SU2 Project is maintained by the SU2 Foundation
10 * (http://su2foundation.org)
11 *
12 * Copyright 2012-2026, SU2 Contributors (cf. AUTHORS.md)
13 *
14 * SU2 is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU Lesser General Public
16 * License as published by the Free Software Foundation; either
17 * version 2.1 of the License, or (at your option) any later version.
18 *
19 * SU2 is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 * Lesser General Public License for more details.
23 *
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with SU2. If not, see <http://www.gnu.org/licenses/>.
26 */
27
28#pragma once
29
30#include <vector>
31#include <memory>
32#include <algorithm>
33#include <iterator>
34#include <numeric>
35#include "../../../Common/include/geometry/CGeometry.hpp"
36#include "../../../Common/include/CConfig.hpp"
37#include "../fluid/CFluidModel.hpp"
38
39/*!
40 * \brief Class containing the required primitive variables for initiating a turboperformance calculation
41 * \author S. Vitale, N. Anand, J. Kelly
42 * \ingroup Output
43 */
45 private:
46 su2double Density, Pressure, TangVelocity;
47 vector<su2double> Velocity;
48
49 public:
51
52 CTurbomachineryPrimitiveState(vector<su2double> TurboPrimitives, unsigned short nDim, su2double tangVel);
53
54 const su2double& GetDensity() const { return Density; }
55
56 const su2double& GetPressure() const { return Pressure; }
57
58 const su2double& GetTangVelocity() const { return TangVelocity; }
59
60 const std::vector<su2double>& GetVelocity() const { return Velocity; }
61};
62
63/*!
64 * \brief Class containing the combined primitive inlet and outlet states for a given blade
65 * \author S. Vitale, N. Anand, J. Kelly
66 * \ingroup Output
67 */
69 private:
70 CTurbomachineryPrimitiveState InletPrimitiveState;
71 CTurbomachineryPrimitiveState OutletPrimitiveState;
72
73 public:
75 const CTurbomachineryPrimitiveState& outletPrimitiveState);
76
77 const CTurbomachineryPrimitiveState& GetInletPrimitiveState() const& { return InletPrimitiveState; }
78
79 const CTurbomachineryPrimitiveState& GetOutletPrimitiveState() const& { return OutletPrimitiveState; }
80};
81
82/*!
83 * \brief Class containing state information for a turbomachine
84 * \author S. Vitale, N. Anand, J. Kelly
85 * \ingroup Output
86 */
88 private:
89 su2double Density, Pressure, Entropy, Enthalpy, Temperature, TotalTemperature, TotalPressure, TotalEnthalpy;
90 su2double AbsFlowAngle, FlowAngle, MassFlow, Rothalpy, TangVelocity, TotalRelPressure;
91 vector<su2double> Velocity, RelVelocity, Mach, RelMach;
92 su2double Area, Radius;
93
94 public:
96
97 CTurbomachineryState(unsigned short nDim, su2double area, su2double radius);
98
99 inline void SetZeroValues() {
100 Density = Pressure = Entropy = Enthalpy = Temperature = TotalTemperature = TotalPressure = TotalEnthalpy = 0.0;
101 AbsFlowAngle = FlowAngle = MassFlow = Rothalpy = TotalRelPressure = 0.0;
102 }
103
104 void ComputeState(CFluidModel& fluidModel, const CTurbomachineryPrimitiveState& primitiveState);
105
106 const su2double& GetDensity() const { return Density; }
107
108 const su2double& GetPressure() const { return Pressure; }
109
110 const su2double& GetEntropy() const { return Entropy; }
111
112 const su2double& GetEnthalpy() const { return Enthalpy; }
113
114 const su2double& GetTemperature() const { return Temperature; }
115
116 const su2double& GetTotalTemperature() const { return TotalTemperature; }
117
118 const su2double& GetTotalPressure() const { return TotalPressure; }
119
120 const su2double& GetTotalRelPressure() const { return TotalRelPressure; }
121
122 const su2double& GetTotalEnthalpy() const { return TotalEnthalpy; }
123
124 const su2double& GetAbsFlowAngle() const { return AbsFlowAngle; }
125
126 const su2double& GetFlowAngle() const { return FlowAngle; }
127
128 const su2double& GetMassFlow() const { return MassFlow; }
129
130 const su2double& GetRothalpy() const { return Rothalpy; }
131
132 const su2double& GetTangVelocity() const { return TangVelocity; }
133
134 const vector<su2double>& GetVelocity() const { return Velocity; }
135
136 const vector<su2double>& GetMach() const { return Mach; }
137
138 su2double GetVelocityValue() const { return Norm(Velocity); }
139
140 su2double GetMachValue() const { return Norm(Mach); }
141
142 su2double GetRelVelocityValue() const { return Norm(RelVelocity); }
143
144 su2double GetRelMachValue() const { return Norm(RelMach); }
145
146 su2double Norm(const vector<su2double>& u) const {
147 su2double accum = 0.;
148 for (auto i = 0u; i < u.size(); ++i) {
149 accum += u[i] * u[i];
150 }
151 return sqrt(accum);
152 }
153};
154
155/*!
156 * \brief Class containing additional states and performance calculation routines for blades in different turbomachines
157 * \author S. Vitale, N. Anand, J. Kelly
158 * \ingroup Output
159 */
188
190 public:
191 CTurbineBladePerformance(CFluidModel& fluidModel, unsigned short nDim, su2double areaIn, su2double radiusIn, su2double areaOut, su2double radiusOut);
192
193 void ComputePerformance(const CTurbomachineryCombinedPrimitiveStates& primitives) override;
194};
195
197 public:
198 CCompressorBladePerformance(CFluidModel& fluidModel, unsigned short nDim, su2double areaIn, su2double radiusIn, su2double areaOut, su2double radiusOut);
199
200 void ComputePerformance(const CTurbomachineryCombinedPrimitiveStates& primitives) override;
201};
202
204 public:
205 CPropellorBladePerformance(CFluidModel& fluidModel, unsigned short nDim, su2double areaIn, su2double radiusIn, su2double areaOut, su2double radiusOut);
206
207 void ComputePerformance(const CTurbomachineryCombinedPrimitiveStates& primitives) override;
208};
209
210/*!
211 * \brief Class for computng full stage performance
212 * \author S. Vitale, N. Anand, J. Kelly
213 * \ingroup Output
214 */
247
248/*!
249 * \brief Class for handling the calculation of turboperformance variables across a blade, span and full machine
250 * \author S. Vitale, N. Anand, J. Kelly
251 * \ingroup Output
252 */
254 private:
255 vector<shared_ptr<CTurbomachineryBladePerformance>> BladesPerformances;
256
257 static void ComputePerBlade(vector<shared_ptr<CTurbomachineryBladePerformance>> const bladePerformances, vector<CTurbomachineryCombinedPrimitiveStates> const bladePrimitives);
258
259 static void ComputePerSpan(shared_ptr<CTurbomachineryBladePerformance> const spanPerformances, const CTurbomachineryCombinedPrimitiveStates& spanPrimitives);
260
261 public:
262 CTurboOutput(CConfig** config, const CGeometry& geometry, CFluidModel& fluidModel, unsigned short iBladeRow);
263
264 const vector<shared_ptr<CTurbomachineryBladePerformance>>& GetBladesPerformances() const { return BladesPerformances; }
265
266 void ComputeTurbomachineryPerformance(vector<CTurbomachineryCombinedPrimitiveStates> const primitives, unsigned short iBladeRow);
267
268 /*!
269 * \brief Returns true if the given objective function kind is a turbomachinery objective
270 * that can be evaluated via GetObjectiveValue.
271 * \param[in] kind - Objective function kind (ENUM_OBJECTIVE value).
272 */
273 static bool IsTurboObjective(unsigned short kind);
274
275 /*!
276 * \brief Get the value of a turbomachinery objective function from the tip span performance.
277 * \param[in] kind - Objective function kind (ENUM_OBJECTIVE value).
278 * \return The objective function value, or 0.0 for unrecognised kinds.
279 */
280 su2double GetObjectiveValue(unsigned short kind) const;
281};
Definition CTurboOutput.hpp:196
void ComputePerformance(const CTurbomachineryCombinedPrimitiveStates &primitives) override
Definition CTurboOutput.cpp:135
Main class for defining the problem; basically this class reads the configuration file,...
Definition CConfig.hpp:64
Main class for defining the Thermo-Physical Model.
Definition CFluidModel.hpp:47
Parent class for defining the geometry of the problem (complete geometry, multigrid agglomerated geom...
Definition CGeometry.hpp:75
Definition CTurboOutput.hpp:203
void ComputePerformance(const CTurbomachineryCombinedPrimitiveStates &primitives) override
Definition CTurboOutput.cpp:158
Definition CTurboOutput.hpp:189
void ComputePerformance(const CTurbomachineryCombinedPrimitiveStates &primitives) override
Definition CTurboOutput.cpp:112
Class for handling the calculation of turboperformance variables across a blade, span and full machin...
Definition CTurboOutput.hpp:253
su2double GetObjectiveValue(unsigned short kind) const
Get the value of a turbomachinery objective function from the tip span performance.
Definition CTurboOutput.cpp:220
static bool IsTurboObjective(unsigned short kind)
Returns true if the given objective function kind is a turbomachinery objective that can be evaluated...
Definition CTurboOutput.cpp:216
void ComputeTurbomachineryPerformance(vector< CTurbomachineryCombinedPrimitiveStates > const primitives, unsigned short iBladeRow)
Definition CTurboOutput.cpp:199
const vector< shared_ptr< CTurbomachineryBladePerformance > > & GetBladesPerformances() const
Definition CTurboOutput.hpp:264
Class containing additional states and performance calculation routines for blades in different turbo...
Definition CTurboOutput.hpp:160
const su2double & GetPressureRatio() const
Definition CTurboOutput.hpp:184
const CTurbomachineryState & GetInletState()
Definition CTurboOutput.hpp:174
const su2double & GetTotalPressureLoss() const
Definition CTurboOutput.hpp:180
const su2double & GetEulerianWork() const
Definition CTurboOutput.hpp:186
CTurbomachineryState InletState
Definition CTurboOutput.hpp:162
const CTurbomachineryState & GetOutletState()
Definition CTurboOutput.hpp:176
CTurbomachineryState OutletState
Definition CTurboOutput.hpp:163
virtual void ComputePerformance(const CTurbomachineryCombinedPrimitiveStates &primitives)
Definition CTurboOutput.hpp:172
su2double PressureRatio
Definition CTurboOutput.hpp:164
su2double EntropyGen
Definition CTurboOutput.hpp:164
su2double KineticEnergyLoss
Definition CTurboOutput.hpp:164
virtual ~CTurbomachineryBladePerformance()=default
const su2double & GetEntropyGen() const
Definition CTurboOutput.hpp:182
CFluidModel & FluidModel
Definition CTurboOutput.hpp:165
su2double TotalPressureLoss
Definition CTurboOutput.hpp:164
const su2double & GetKineticEnergyLoss() const
Definition CTurboOutput.hpp:178
su2double EulerianWork
Definition CTurboOutput.hpp:164
Class containing the combined primitive inlet and outlet states for a given blade.
Definition CTurboOutput.hpp:68
const CTurbomachineryPrimitiveState & GetInletPrimitiveState() const &
Definition CTurboOutput.hpp:77
const CTurbomachineryPrimitiveState & GetOutletPrimitiveState() const &
Definition CTurboOutput.hpp:79
Class containing the required primitive variables for initiating a turboperformance calculation.
Definition CTurboOutput.hpp:44
const su2double & GetTangVelocity() const
Definition CTurboOutput.hpp:58
const std::vector< su2double > & GetVelocity() const
Definition CTurboOutput.hpp:60
CTurbomachineryPrimitiveState()
Definition CTurboOutput.cpp:30
const su2double & GetPressure() const
Definition CTurboOutput.hpp:56
const su2double & GetDensity() const
Definition CTurboOutput.hpp:54
Class for computng full stage performance.
Definition CTurboOutput.hpp:215
su2double GetTotalTotalPressureRatio() const
Definition CTurboOutput.hpp:241
su2double GetTotalStaticEfficiency() const
Definition CTurboOutput.hpp:231
CFluidModel & fluidModel
Definition CTurboOutput.hpp:218
su2double TotalPressureLoss
Definition CTurboOutput.hpp:217
su2double GetTotalStaticPressureRatio() const
Definition CTurboOutput.hpp:239
su2double KineticEnergyLoss
Definition CTurboOutput.hpp:217
su2double GetNormEntropyGen() const
Definition CTurboOutput.hpp:237
virtual ~CTurbomachineryStagePerformance()=default
su2double TotalTotalPressureRatio
Definition CTurboOutput.hpp:217
virtual void ComputePerformanceStage(const CTurbomachineryState &InState, const CTurbomachineryState &OutState, const CConfig *config)
Definition CTurboOutput.cpp:234
su2double GetTotalPressureLoss() const
Definition CTurboOutput.hpp:243
su2double EulerianWork
Definition CTurboOutput.hpp:217
su2double TotalStaticEfficiency
Definition CTurboOutput.hpp:217
su2double GetTotalTotalEfficiency() const
Definition CTurboOutput.hpp:233
su2double TotalStaticPressureRatio
Definition CTurboOutput.hpp:217
su2double NormEntropyGen
Definition CTurboOutput.hpp:217
virtual void ComputeCompressorStagePerformance(const CTurbomachineryState &InState, const CTurbomachineryState &OutState)
Definition CTurboOutput.cpp:272
virtual void ComputeTurbineStagePerformance(const CTurbomachineryState &InState, const CTurbomachineryState &OutState)
Definition CTurboOutput.cpp:251
su2double TotalTotalEfficiency
Definition CTurboOutput.hpp:217
su2double GetKineticEnergyLoss() const
Definition CTurboOutput.hpp:245
su2double GetEulerianWork() const
Definition CTurboOutput.hpp:235
Class containing state information for a turbomachine.
Definition CTurboOutput.hpp:87
const su2double & GetDensity() const
Definition CTurboOutput.hpp:106
su2double GetRelMachValue() const
Definition CTurboOutput.hpp:144
const su2double & GetTangVelocity() const
Definition CTurboOutput.hpp:132
const su2double & GetAbsFlowAngle() const
Definition CTurboOutput.hpp:124
const su2double & GetTotalPressure() const
Definition CTurboOutput.hpp:118
const su2double & GetPressure() const
Definition CTurboOutput.hpp:108
const su2double & GetTotalTemperature() const
Definition CTurboOutput.hpp:116
const vector< su2double > & GetVelocity() const
Definition CTurboOutput.hpp:134
const su2double & GetTotalEnthalpy() const
Definition CTurboOutput.hpp:122
const su2double & GetTotalRelPressure() const
Definition CTurboOutput.hpp:120
void SetZeroValues()
Definition CTurboOutput.hpp:99
su2double GetMachValue() const
Definition CTurboOutput.hpp:140
const vector< su2double > & GetMach() const
Definition CTurboOutput.hpp:136
const su2double & GetMassFlow() const
Definition CTurboOutput.hpp:128
su2double GetVelocityValue() const
Definition CTurboOutput.hpp:138
su2double GetRelVelocityValue() const
Definition CTurboOutput.hpp:142
void ComputeState(CFluidModel &fluidModel, const CTurbomachineryPrimitiveState &primitiveState)
Definition CTurboOutput.cpp:56
su2double Norm(const vector< su2double > &u) const
Definition CTurboOutput.hpp:146
CTurbomachineryState()
Definition CTurboOutput.cpp:41
const su2double & GetEnthalpy() const
Definition CTurboOutput.hpp:112
const su2double & GetEntropy() const
Definition CTurboOutput.hpp:110
const su2double & GetTemperature() const
Definition CTurboOutput.hpp:114
const su2double & GetRothalpy() const
Definition CTurboOutput.hpp:130
const su2double & GetFlowAngle() const
Definition CTurboOutput.hpp:126
passivedouble su2double
Definition code_config.hpp:181
FORCEINLINE ARRAY_T sqrt(const ARRAY_T &x)
Definition special_vectorization.hpp:116