Skip to content

Commit e1b1c2d

Browse files
committed
Changes for comments
1 parent 83719f8 commit e1b1c2d

File tree

7 files changed

+100
-104
lines changed

7 files changed

+100
-104
lines changed

Common/include/CConfig.hpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5191,9 +5191,9 @@ class CConfig {
51915191
* \brief General interface for accessing ramp coefficient information
51925192
* \return coeff for ramps
51935193
*/
5194-
su2double GetRamp_Coeff(TURBO_RAMP_TYPE ramp_flag, TURBO_RAMP_COEFF val_coeff) {
5195-
if (ramp_flag == TURBO_RAMP_TYPE::GRID) return rampMotionFrame_coeff[val_coeff];
5196-
else if (ramp_flag == TURBO_RAMP_TYPE::BOUNDARY) return rampOutlet_coeff[val_coeff];
5194+
su2double GetRamp_Coeff(RAMP_TYPE ramp_flag, RAMP_COEFF val_coeff) {
5195+
if (ramp_flag == RAMP_TYPE::GRID) return rampMotionFrame_coeff[val_coeff];
5196+
else if (ramp_flag == RAMP_TYPE::BOUNDARY) return rampOutlet_coeff[val_coeff];
51975197
else return 0;
51985198
};
51995199

@@ -6169,11 +6169,11 @@ class CConfig {
61696169
* \brief Generic interface for retrieving final value of a turbomachinery ramp
61706170
* \return Final value of a specified ramp
61716171
*/
6172-
su2double GetFinalValue(TURBO_RAMP_TYPE ramp_flag) {
6173-
if (ramp_flag == TURBO_RAMP_TYPE::GRID && RampRotatingFrame) return FinalRotation_Rate_Z;
6174-
else if (ramp_flag == TURBO_RAMP_TYPE::GRID && RampTranslationFrame) return FinalTranslation_Rate_Y;
6175-
else if (ramp_flag == TURBO_RAMP_TYPE::BOUNDARY && RampOutletPressure) return FinalOutletPressure;
6176-
else if (ramp_flag == TURBO_RAMP_TYPE::BOUNDARY && RampOutletMassFlow) return FinalOutletMassFlow;
6172+
su2double GetFinalValue(RAMP_TYPE ramp_flag) {
6173+
if (ramp_flag == RAMP_TYPE::GRID && RampRotatingFrame) return FinalRotation_Rate_Z;
6174+
else if (ramp_flag == RAMP_TYPE::GRID && RampTranslationFrame) return FinalTranslation_Rate_Y;
6175+
else if (ramp_flag == RAMP_TYPE::BOUNDARY && RampOutletPressure) return FinalOutletPressure;
6176+
else if (ramp_flag == RAMP_TYPE::BOUNDARY && RampOutletMassFlow) return FinalOutletMassFlow;
61776177
else return 0.0;
61786178
};
61796179

Common/include/option_structure.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1886,15 +1886,15 @@ enum TURBO_MARKER_TYPE{
18861886
OUTFLOW = 2 /*!< \brief flag for outflow marker for compute turboperformance. */
18871887
};
18881888

1889-
enum class TURBO_RAMP_TYPE{
1889+
enum class RAMP_TYPE{
18901890
GRID, /*!< \brief flag for rotational/translational ramps */
18911891
BOUNDARY /*!< \brief flag for pressure/mass flow ramps*/
18921892
};
18931893

18941894
/*!
18951895
* \brief Coefficients of the ramp specified in the config, ordered by index in the config
18961896
*/
1897-
enum TURBO_RAMP_COEFF{
1897+
enum RAMP_COEFF{
18981898
INITIAL_VALUE = 0, /*!< \brief intial value of the ramp */
18991899
UPDATE_FREQ = 1, /*<! \brief update frequency of the ramp */
19001900
FINAL_ITER = 2 /*<! \brief final iteration of the ramp */

Common/src/CConfig.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4373,6 +4373,8 @@ void CConfig::SetPostprocessing(SU2_COMPONENT val_software, unsigned short val_i
43734373
RampOutletPressure = true;
43744374
case MASS_FLOW_OUTLET:
43754375
RampOutletMassFlow = true;
4376+
default:
4377+
RampOutletMassFlow = false; RampOutletPressure = false;
43764378
}
43774379
}
43784380
}
@@ -4381,28 +4383,28 @@ void CConfig::SetPostprocessing(SU2_COMPONENT val_software, unsigned short val_i
43814383
if(GetGrid_Movement() && RampRotatingFrame && !DiscreteAdjoint){
43824384
FinalRotation_Rate_Z = Rotation_Rate[2];
43834385
if(abs(FinalRotation_Rate_Z) > 0.0){
4384-
Rotation_Rate[2] = rampMotionFrame_coeff[TURBO_RAMP_COEFF::INITIAL_VALUE];
4386+
Rotation_Rate[2] = rampMotionFrame_coeff[RAMP_COEFF::INITIAL_VALUE];
43854387
}
43864388
}
43874389

43884390
if(GetGrid_Movement() && RampTranslationFrame && !DiscreteAdjoint){
43894391
FinalTranslation_Rate_Y = Translation_Rate[1];
43904392
if(abs(FinalTranslation_Rate_Y) > 0.0){
4391-
Translation_Rate[1] = rampMotionFrame_coeff[TURBO_RAMP_COEFF::INITIAL_VALUE];
4393+
Translation_Rate[1] = rampMotionFrame_coeff[RAMP_COEFF::INITIAL_VALUE];
43924394
}
43934395
}
43944396

43954397
if(RampOutletPressure && !DiscreteAdjoint){
43964398
for (iMarker = 0; iMarker < nMarker_Giles; iMarker++){
43974399
if (Kind_Data_Giles[iMarker] == STATIC_PRESSURE || Kind_Data_Giles[iMarker] == STATIC_PRESSURE_1D || Kind_Data_Giles[iMarker] == RADIAL_EQUILIBRIUM ){
43984400
FinalOutletPressure = Giles_Var1[iMarker];
4399-
Giles_Var1[iMarker] = rampOutlet_coeff[TURBO_RAMP_COEFF::INITIAL_VALUE];
4401+
Giles_Var1[iMarker] = rampOutlet_coeff[RAMP_COEFF::INITIAL_VALUE];
44004402
}
44014403
}
44024404
for (iMarker = 0; iMarker < nMarker_Riemann; iMarker++){
44034405
if (Kind_Data_Riemann[iMarker] == STATIC_PRESSURE || Kind_Data_Riemann[iMarker] == RADIAL_EQUILIBRIUM){
44044406
FinalOutletPressure = Riemann_Var1[iMarker];
4405-
Riemann_Var1[iMarker] = rampOutlet_coeff[TURBO_RAMP_COEFF::INITIAL_VALUE];
4407+
Riemann_Var1[iMarker] = rampOutlet_coeff[RAMP_COEFF::INITIAL_VALUE];
44064408
}
44074409
}
44084410
}
@@ -4411,7 +4413,7 @@ void CConfig::SetPostprocessing(SU2_COMPONENT val_software, unsigned short val_i
44114413
for (iMarker = 0; iMarker < nMarker_Giles; iMarker++){
44124414
if (Kind_Data_Giles[iMarker] == MASS_FLOW_OUTLET){
44134415
FinalOutletMassFlow = Giles_Var1[iMarker];
4414-
Giles_Var1[iMarker] = rampOutlet_coeff[TURBO_RAMP_COEFF::INITIAL_VALUE];
4416+
Giles_Var1[iMarker] = rampOutlet_coeff[RAMP_COEFF::INITIAL_VALUE];
44154417
}
44164418
}
44174419
}

SU2_CFD/include/iteration/CFluidIteration.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,14 +108,14 @@ class CFluidIteration : public CIteration {
108108
unsigned short val_iInst) override;
109109

110110
/*!
111-
* \brief Monitors turbo computation ramps
111+
* \brief Monitors and updates ramps
112112
* \param[in] geometry_container - Geometrical definition of the problem
113113
* \param[in] config_container - Defintion of the particular problem
114114
* \param[in] ExtIter - The current iteration of the problem
115115
* \param[in] iZone - The current zone
116116
* \param[in] ramp_flag - Flag indicating type of ramp (grid or boundary)
117117
*/
118-
virtual void TurboRamp(CGeometry**** geometry_container, CConfig** config_container, unsigned long iter, unsigned short iZone, TURBO_RAMP_TYPE ramp_flag) {};
118+
void UpdateRamp(CGeometry**** geometry_container, CConfig** config_container, unsigned long iter, unsigned short iZone, RAMP_TYPE ramp_flag);
119119

120120
/*!
121121
* \brief Computes turboperformance.

SU2_CFD/include/iteration/CTurboIteration.hpp

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,4 @@ class CTurboIteration : public CFluidIteration {
6969
*/
7070
void InitTurboPerformance(CGeometry *geometry, CConfig** config, CFluidModel *fluid);
7171

72-
/*!
73-
* \brief Monitors turbo computation ramps
74-
* \param[in] geometry_container - Geometrical definition of the problem
75-
* \param[in] config_container - Defintion of the particular problem
76-
* \param[in] ExtIter - The current iteration of the problem
77-
* \param[in] iZone - The current zone
78-
* \param[in] ramp_flag - Flag indicating type of ramp (grid or boundary)
79-
*/
80-
void TurboRamp(CGeometry**** geometry_container, CConfig** config_container, unsigned long iter, unsigned short iZone, TURBO_RAMP_TYPE ramp_flag) override;
8172
};

SU2_CFD/src/iteration/CFluidIteration.cpp

Lines changed: 81 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,13 @@ bool CFluidIteration::Monitor(COutput* output, CIntegration**** integration, CGe
234234
}
235235
/*--- Update ramps, grid first then outlet boundary ---*/
236236
if (config[val_iZone]->GetRampMotionFrame())
237-
TurboRamp(geometry, config, config[val_iZone]->GetInnerIter(), val_iZone, TURBO_RAMP_TYPE::GRID);
238-
if (config[val_iZone]->GetRampOutflow())
239-
TurboRamp(geometry, config, config[val_iZone]->GetInnerIter(), val_iZone, TURBO_RAMP_TYPE::BOUNDARY);
237+
UpdateRamp(geometry, config, config[val_iZone]->GetInnerIter(), val_iZone, RAMP_TYPE::GRID);
240238
}
239+
240+
// Outside turbo scope as Riemann boundaries can be ramped (pressure only)
241+
if (config[val_iZone]->GetRampOutflow())
242+
UpdateRamp(geometry, config, config[val_iZone]->GetInnerIter(), val_iZone, RAMP_TYPE::BOUNDARY);
243+
241244
output->SetHistoryOutput(geometry[val_iZone][val_iInst][MESH_0], solver[val_iZone][val_iInst][MESH_0],
242245
config[val_iZone], config[val_iZone]->GetTimeIter(), config[val_iZone]->GetOuterIter(),
243246
config[val_iZone]->GetInnerIter());
@@ -254,6 +257,81 @@ bool CFluidIteration::Monitor(COutput* output, CIntegration**** integration, CGe
254257
return StopCalc;
255258
}
256259

260+
void CFluidIteration::UpdateRamp(CGeometry**** geometry_container, CConfig** config_container, unsigned long iter, unsigned short iZone, RAMP_TYPE ramp_flag) {
261+
/*--- Generic function for handling ramps ---*/
262+
// Grid updates (i.e. rotation/translation) handled seperately to boundary (i.e. pressure/mass flow) updates
263+
auto* config = config_container[iZone];
264+
auto* geometry = geometry_container[iZone][INST_0][ZONE_0];
265+
266+
std::string msg = "\nUpdated rotating frame grid velocities for zone ";
267+
if (ramp_flag == RAMP_TYPE::GRID && config->GetKind_GridMovement() == ENUM_GRIDMOVEMENT::STEADY_TRANSLATION)
268+
msg = "\nUpdated translation frame grid velocities for zone ";
269+
270+
if (config_container[ZONE_0]->GetMultizone_Problem())
271+
iter = config_container[ZONE_0]->GetOuterIter();
272+
273+
/*-- Update grid velocities (ROTATING_FRAME, STEADY_TRANSLATION)*/
274+
if (ramp_flag == RAMP_TYPE::GRID && config->GetGrid_Movement()) {
275+
const auto ini_vel = config->GetRamp_Coeff(ramp_flag, RAMP_COEFF::INITIAL_VALUE);
276+
const auto unsigned rampFreq = SU2_TYPE::Int(config->GetRamp_Coeff(ramp_flag, RAMP_COEFF::UPDATE_FREQ));
277+
const auto unsigned finalRamp_Iter = SU2_TYPE::Int(config->GetRamp_Coeff(ramp_flag, RAMP_COEFF::FINAL_ITER));
278+
279+
// Two options needed as if finalRamp_Iter % rampFreq != 0 final value is not set correctly
280+
if((iter % rampFreq == 0 && iter < finalRamp_Iter) || (iter == finalRamp_Iter)){
281+
const auto final_vel = config->GetFinalValue(ramp_flag);
282+
if(fabs(final_vel) > 0.0) {
283+
const auto vel = ini_vel + iter * (final_vel - ini_vel)/finalRamp_Iter;
284+
config->SetRate(vel);
285+
if (rank == MASTER_NODE && iter > 0) cout << msg << iZone << ".\n";
286+
geometry->SetVelocity(config, true);
287+
geometry->SetShroudVelocity(config);
288+
}
289+
// Update average turbo values
290+
geometry->SetAvgTurboValue(config, iZone, INFLOW, false);
291+
geometry->SetAvgTurboValue(config, iZone, OUTFLOW, false);
292+
geometry->GatherInOutAverageValues(config, false);
293+
294+
if (iZone < nZone - 1) {
295+
geometry_container[nZone-1][INST_0][MESH_0]->SetAvgTurboGeoValues(config ,geometry_container[iZone][INST_0][MESH_0], iZone);
296+
}
297+
}
298+
}
299+
300+
// Boundary ramps (pressure/mass flow)
301+
if (ramp_flag == RAMP_TYPE::BOUNDARY){
302+
const auto outVal_ini = config->GetRamp_Coeff(ramp_flag, RAMP_COEFF::INITIAL_VALUE);
303+
const long unsigned rampFreq = SU2_TYPE::Int(config->GetRamp_Coeff(ramp_flag, RAMP_COEFF::UPDATE_FREQ));
304+
const long unsigned finalRamp_Iter = SU2_TYPE::Int(config->GetRamp_Coeff(ramp_flag, RAMP_COEFF::FINAL_ITER));
305+
const auto outVal_final = config->GetFinalValue(ramp_flag);
306+
307+
if ((iter % rampFreq == 0 && iter < finalRamp_Iter) || (iter == finalRamp_Iter)) {
308+
const su2double outVal = outVal_ini + iter * (outVal_final - outVal_ini) / finalRamp_Iter;
309+
if (rank == MASTER_NODE) config->SetMonitorValue(outVal);
310+
311+
for (auto iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) {
312+
const auto KindBC = config->GetMarker_All_KindBC(iMarker);
313+
const auto Marker_Tag = config->GetMarker_All_TagBound(iMarker);
314+
unsigned short KindBCOption;
315+
switch (KindBC) {
316+
case RIEMANN_BOUNDARY:
317+
KindBCOption = config->GetKind_Data_Riemann(Marker_Tag);
318+
if (KindBCOption == STATIC_PRESSURE || KindBCOption == RADIAL_EQUILIBRIUM) {
319+
SU2_MPI::Error("Outlet pressure ramp only implemented for NRBC", CURRENT_FUNCTION);
320+
}
321+
break;
322+
case GILES_BOUNDARY:
323+
KindBCOption = config->GetKind_Data_Giles(Marker_Tag);
324+
if (KindBCOption == STATIC_PRESSURE || KindBCOption == STATIC_PRESSURE_1D ||
325+
KindBCOption == RADIAL_EQUILIBRIUM || KindBCOption == MASS_FLOW_OUTLET) {
326+
config->SetGiles_Var1(outVal, Marker_Tag);
327+
}
328+
break;
329+
}
330+
}
331+
}
332+
}
333+
}
334+
257335
void CFluidIteration::ComputeTurboPerformance(CSolver***** solver, CGeometry**** geometry_container, CConfig** config_container, unsigned long ExtIter) {
258336
unsigned short nDim = geometry_container[ZONE_0][INST_0][MESH_0]->GetnDim();
259337
unsigned short nBladesRow = config_container[ZONE_0]->GetnMarker_Turbomachinery();

SU2_CFD/src/iteration/CTurboIteration.cpp

Lines changed: 0 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -63,79 +63,4 @@ void CTurboIteration::Postprocess(COutput* output, CIntegration**** integration,
6363
void CTurboIteration::InitTurboPerformance(CGeometry* geometry, CConfig** config, CFluidModel* fluid) {
6464
TurbomachineryPerformance = std::make_shared<CTurboOutput>(config, *geometry, *fluid);
6565
TurbomachineryStagePerformance = std::make_shared<CTurbomachineryStagePerformance>(*fluid);
66-
}
67-
68-
void CTurboIteration::TurboRamp(CGeometry**** geometry_container, CConfig** config_container, unsigned long iter, unsigned short iZone, TURBO_RAMP_TYPE ramp_flag) {
69-
/*--- Generic function for handling turbomachinery ramps ---*/
70-
// Grid updates (i.e. rotation/translation) handled seperately to boundary (i.e. pressure/mass flow) updates
71-
auto* config = config_container[iZone];
72-
auto* geometry = geometry_container[iZone][INST_0][ZONE_0];
73-
74-
std::string msg = "\nUpdated rotating frame grid velocities for zone ";
75-
if (ramp_flag == TURBO_RAMP_TYPE::GRID && config->GetKind_GridMovement() == ENUM_GRIDMOVEMENT::STEADY_TRANSLATION)
76-
msg = "\nUpdated translation frame grid velocities for zone ";
77-
78-
if (config_container[ZONE_0]->GetMultizone_Problem())
79-
iter = config_container[ZONE_0]->GetOuterIter();
80-
81-
/*-- Update grid velocities (ROTATING_FRAME, STEADY_TRANSLATION)*/
82-
if (ramp_flag == TURBO_RAMP_TYPE::GRID && config->GetGrid_Movement()) {
83-
const auto ini_vel = config->GetRamp_Coeff(ramp_flag, TURBO_RAMP_COEFF::INITIAL_VALUE);
84-
const auto unsigned rampFreq = SU2_TYPE::Int(config->GetRamp_Coeff(ramp_flag, TURBO_RAMP_COEFF::UPDATE_FREQ));
85-
const auto unsigned finalRamp_Iter = SU2_TYPE::Int(config->GetRamp_Coeff(ramp_flag, TURBO_RAMP_COEFF::FINAL_ITER));
86-
87-
// Two options needed as if finalRamp_Iter % rampFreq != 0 final value is not set correctly
88-
if((iter % rampFreq == 0 && iter < finalRamp_Iter) || (iter == finalRamp_Iter)){
89-
const auto final_vel = config->GetFinalValue(ramp_flag);
90-
if(fabs(final_vel) > 0.0) {
91-
const auto vel = ini_vel + iter * (final_vel - ini_vel)/finalRamp_Iter;
92-
config->SetRate(vel);
93-
if (rank == MASTER_NODE && iter > 0) cout << msg << iZone << ".\n";
94-
geometry->SetVelocity(config, true);
95-
geometry->SetShroudVelocity(config);
96-
}
97-
// Update average turbo values
98-
geometry->SetAvgTurboValue(config, iZone, INFLOW, false);
99-
geometry->SetAvgTurboValue(config, iZone, OUTFLOW, false);
100-
geometry->GatherInOutAverageValues(config, false);
101-
102-
if (iZone < nZone - 1) {
103-
geometry_container[nZone-1][INST_0][MESH_0]->SetAvgTurboGeoValues(config ,geometry_container[iZone][INST_0][MESH_0], iZone);
104-
}
105-
}
106-
}
107-
108-
// Boundary ramps (pressure/mass flow)
109-
if (ramp_flag == TURBO_RAMP_TYPE::BOUNDARY){
110-
const auto outVal_ini = config->GetRamp_Coeff(ramp_flag, TURBO_RAMP_COEFF::INITIAL_VALUE);
111-
const long unsigned rampFreq = SU2_TYPE::Int(config->GetRamp_Coeff(ramp_flag, TURBO_RAMP_COEFF::UPDATE_FREQ));
112-
const long unsigned finalRamp_Iter = SU2_TYPE::Int(config->GetRamp_Coeff(ramp_flag, TURBO_RAMP_COEFF::FINAL_ITER));
113-
const auto outVal_final = config->GetFinalValue(ramp_flag);
114-
115-
if ((iter % rampFreq == 0 && iter < finalRamp_Iter) || (iter == finalRamp_Iter)) {
116-
const su2double outVal = outVal_ini + iter * (outVal_final - outVal_ini) / finalRamp_Iter;
117-
if (rank == MASTER_NODE) config->SetMonitorValue(outVal);
118-
119-
for (auto iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) {
120-
const auto KindBC = config->GetMarker_All_KindBC(iMarker);
121-
const auto Marker_Tag = config->GetMarker_All_TagBound(iMarker);
122-
unsigned short KindBCOption;
123-
switch (KindBC) {
124-
case RIEMANN_BOUNDARY:
125-
KindBCOption = config->GetKind_Data_Riemann(Marker_Tag);
126-
if (KindBCOption == STATIC_PRESSURE || KindBCOption == RADIAL_EQUILIBRIUM) {
127-
SU2_MPI::Error("Outlet pressure ramp only implemented for NRBC", CURRENT_FUNCTION);
128-
}
129-
break;
130-
case GILES_BOUNDARY:
131-
KindBCOption = config->GetKind_Data_Giles(Marker_Tag);
132-
if (KindBCOption == STATIC_PRESSURE || KindBCOption == STATIC_PRESSURE_1D ||
133-
KindBCOption == RADIAL_EQUILIBRIUM || KindBCOption == MASS_FLOW_OUTLET) {
134-
config->SetGiles_Var1(outVal, Marker_Tag);
135-
}
136-
break;
137-
}
138-
}
139-
}
140-
}
14166
}

0 commit comments

Comments
 (0)