Skip to content

Commit d43fef5

Browse files
author
Joshua Kelly
committed
Singlezone working with validated gradients and turbo obj funcs. Need to run in quasi-MZ approach. (NEEDS CLEANING)
1 parent 1614784 commit d43fef5

18 files changed

+145
-102
lines changed

SU2_CFD/include/iteration/CIteration.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,10 +302,10 @@ class CIteration {
302302
/*!
303303
* \brief Computes turboperformance.
304304
*/
305-
virtual void ComputeTurboPerformance(CSolver***** solver, CGeometry**** geometry_container, CConfig** config_container){}
305+
void ComputeTurboPerformance(CSolver***** solver, CGeometry**** geometry_container, CConfig** config_container);
306306

307307
/*!
308308
* \brief Initialises turboperformance classes.
309309
*/
310-
virtual void InitTurboPerformance(CGeometry *geometry, CConfig** config, CFluidModel *fluid){};
310+
void InitTurboPerformance(CGeometry *geometry, CConfig** config, CFluidModel *fluid);
311311
};

SU2_CFD/include/iteration/CTurboIteration.hpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,4 @@ class CTurboIteration : public CFluidIteration {
6363
CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement,
6464
CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone,
6565
unsigned short val_iInst) override;
66-
67-
/*!
68-
* \brief Initialises turboperformance classes.
69-
*/
70-
void InitTurboPerformance(CGeometry *geometry, CConfig** config, CFluidModel *fluid) override;
71-
72-
/*!
73-
* \brief Computes turboperformance.
74-
*/
75-
void ComputeTurboPerformance(CSolver***** solver, CGeometry**** geometry_container, CConfig** config_container) override;
7666
};

SU2_CFD/include/output/CFlowCompOutput.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ class CFlowCompOutput final: public CFlowOutput {
7474
*/
7575
void SetHistoryOutputFields(CConfig *config) override;
7676

77+
void SetTurbomachineryObjectiveFunctions(CSolver *solver, CConfig *config);
78+
7779
/*!
7880
* \brief Check whether the base values for relative residuals should be initialized
7981
* \param[in] config - Definition of the particular problem.

SU2_CFD/include/output/CTurboOutput.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ class CTurbomachineryState {
9696

9797
CTurbomachineryState(unsigned short nDim, su2double area, su2double radius);
9898

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+
99104
void ComputeState(CFluidModel& fluidModel, const CTurbomachineryPrimitiveState& primitiveState);
100105

101106
const su2double& GetDensity() const { return Density; }

SU2_CFD/include/solvers/CDiscAdjSolver.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,15 @@ class CDiscAdjSolver final : public CSolver {
106106
*/
107107
void RegisterOutput(CGeometry *geometry, CConfig *config) override;
108108

109+
/*!
110+
* \brief performs the preprocessing of the adjoint AD-based solver.
111+
* Registers the normals at turbomachinery boundaries of interest on the tape
112+
* Called while tape is active.
113+
* \param[in] geometry - the geometrical definition of the problem
114+
* \param[in] config - the particular config
115+
*/
116+
void Register_VertexNormals(CGeometry *geometry, CConfig *config, bool input) override;
117+
109118
/*!
110119
* \brief Sets the adjoint values of the output of the flow (+turb.) iteration
111120
* before evaluation of the tape.

SU2_CFD/include/solvers/CSolver.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3517,6 +3517,14 @@ class CSolver {
35173517
*/
35183518
inline virtual void RegisterOutput(CGeometry *geometry_container, CConfig *config) { }
35193519

3520+
/*!
3521+
* \brief A vritual member
3522+
* \param[in] geometry - the geometrical definition of the problem
3523+
* \param[in] config - the particular config
3524+
* \param[in] input - Boolean whether In- or Output should be registered
3525+
*/
3526+
inline virtual void Register_VertexNormals(CGeometry *geometry, CConfig *config, bool input) { };
3527+
35203528
/*!
35213529
* \brief A virtual member.
35223530
* \param[in] input - Boolean whether In- or Output should be registered.

SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,11 @@ void CDiscAdjMultizoneDriver::DirectIteration(unsigned short iZone, RECORDING ki
690690
solver_container, numerics_container, config_container,
691691
surface_movement, grid_movement, FFDBox, iZone, INST_0);
692692

693+
// /*--- Turbo Specific Post-Procesisng ---*/
694+
// if (config_container[iZone]->GetBoolTurbomachinery()){
695+
// direct_iteration[iZone][INST_0]->Postprocess(output_container[iZone], integration_container, geometry_container, solver_container, numerics_container, config_container, surface_movement, grid_movement, FFDBox, iZone, INST_0);
696+
// }
697+
693698
}
694699

695700
void CDiscAdjMultizoneDriver::SetObjFunction(RECORDING kind_recording) {
@@ -718,13 +723,6 @@ void CDiscAdjMultizoneDriver::SetObjFunction(RECORDING kind_recording) {
718723
}
719724

720725
direct_output[iZone]->SetHistoryOutput(geometry, solvers, config);
721-
// Need to evaluate turbomachinery objective functions here as they are only calculated in the final zone
722-
if (config->GetBoolTurbomachinery() && iZone == config->GetnZone()-1){
723-
direct_iteration[iZone][INST_0]->InitTurboPerformance(geometry, config_container, solvers[FLOW_SOL]->GetFluidModel());
724-
direct_iteration[iZone][INST_0]->ComputeTurboPerformance(solver_container, geometry_container, config_container);
725-
const auto weight = config->GetWeight_ObjFunc(0);
726-
ObjFunc += weight * solvers[FLOW_SOL]->GetTurboObjectiveFunction(config->GetKind_ObjFunc(), config_container[ZONE_0]->GetnMarker_Turbomachinery());
727-
}
728726
ObjFunc += solvers[FLOW_SOL]->GetTotal_ComboObj();
729727
break;
730728

SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ void CDiscAdjSinglezoneDriver::SetRecording(RECORDING kind_recording){
285285

286286
/*--- Set the dependencies of the iteration ---*/
287287

288-
iteration->SetDependencies(solver_container, geometry_container, numerics_container, config_container, ZONE_0,
288+
iteration->SetDependencies(solver_container, geometry_container, numerics_container, config_container, nullptr, ZONE_0,
289289
INST_0, kind_recording);
290290

291291
/*--- Do one iteration of the direct solver ---*/

SU2_CFD/src/drivers/CDriver.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ CDriverBase(confFile, val_nZone, MPICommunicator), StopCalc(false), fsi(false),
243243
}
244244
}
245245

246-
if (config_container[ZONE_0]->GetBoolTurbomachinery() && !config_container[ZONE_0]->GetDiscrete_Adjoint()){
246+
if (config_container[ZONE_0]->GetBoolTurbomachinery()){
247247
if (rank == MASTER_NODE)
248248
cout << endl <<"---------------------- Turbomachinery Preprocessing ---------------------" << endl;
249249

SU2_CFD/src/integration/CIntegration.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,14 @@ void CIntegration::Space_Integration(CGeometry *geometry,
8989
solver_container[MainSolver]->PreprocessBC_Giles(geometry, config, conv_bound_numerics, OUTFLOW);
9090
}
9191

92-
BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS {
93-
if (config->GetBoolTurbomachinery()){
94-
/*--- Average quantities at the inflow and outflow boundaries ---*/
95-
solver_container[MainSolver]->TurboAverageProcess(solver_container, geometry,config,INFLOW);
96-
solver_container[MainSolver]->TurboAverageProcess(solver_container, geometry, config, OUTFLOW);
97-
}
98-
}
99-
END_SU2_OMP_SAFE_GLOBAL_ACCESS
92+
// BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS {
93+
// if (config->GetBoolTurbomachinery()){
94+
// /*--- Average quantities at the inflow and outflow boundaries ---*/
95+
// solver_container[MainSolver]->TurboAverageProcess(solver_container, geometry,config,INFLOW);
96+
// solver_container[MainSolver]->TurboAverageProcess(solver_container, geometry, config, OUTFLOW);
97+
// }
98+
// }
99+
// END_SU2_OMP_SAFE_GLOBAL_ACCESS
100100

101101
/*--- Weak boundary conditions ---*/
102102

0 commit comments

Comments
 (0)