From b39109c979b8e99d3b722e2b5fc02f25c8344031 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Sun, 17 Jan 2021 22:48:03 +0000 Subject: [PATCH 1/8] try to fix objective functions, #1075 --- Common/include/CConfig.hpp | 14 +- Common/include/option_structure.hpp | 4 +- Common/src/CConfig.cpp | 17 +- .../include/solvers/CFVMFlowSolverBase.hpp | 7 + .../include/solvers/CFVMFlowSolverBase.inl | 7 + SU2_CFD/include/solvers/CNSSolver.hpp | 2 +- SU2_CFD/include/solvers/CSolver.hpp | 7 - .../src/drivers/CDiscAdjMultizoneDriver.cpp | 91 +-- .../src/drivers/CDiscAdjSinglezoneDriver.cpp | 4 +- .../src/integration/CMultiGridIntegration.cpp | 6 - SU2_CFD/src/output/CFlowCompOutput.cpp | 25 +- SU2_CFD/src/output/CFlowIncOutput.cpp | 42 +- SU2_CFD/src/output/CFlowOutput.cpp | 98 +-- SU2_CFD/src/output/CHeatOutput.cpp | 4 +- SU2_CFD/src/output/CNEMOCompOutput.cpp | 21 +- .../src/output/output_structure_legacy.cpp | 4 +- SU2_CFD/src/solvers/CEulerSolver.cpp | 3 - SU2_CFD/src/solvers/CNSSolver.cpp | 19 +- SU2_PY/SU2/io/historyMap.py | 612 +++++++++--------- 19 files changed, 453 insertions(+), 534 deletions(-) diff --git a/Common/include/CConfig.hpp b/Common/include/CConfig.hpp index b85042d14ac4..9682fd95ad3e 100644 --- a/Common/include/CConfig.hpp +++ b/Common/include/CConfig.hpp @@ -141,8 +141,7 @@ class CConfig { Sens_Remove_Sharp, /*!< \brief Flag for removing or not the sharp edges from the sensitivity computation. */ Hold_GridFixed, /*!< \brief Flag hold fixed some part of the mesh during the deformation. */ Axisymmetric, /*!< \brief Flag for axisymmetric calculations */ - Integrated_HeatFlux, /*!< \brief Flag for heat flux BC whether it deals with integrated values.*/ - Buffet_Monitoring; /*!< \brief Flag for computing the buffet sensor.*/ + Integrated_HeatFlux; /*!< \brief Flag for heat flux BC whether it deals with integrated values.*/ su2double Buffet_k; /*!< \brief Sharpness coefficient for buffet sensor.*/ su2double Buffet_lambda; /*!< \brief Offset parameter for buffet sensor.*/ su2double Damp_Engine_Inflow; /*!< \brief Damping factor for the engine inlet. */ @@ -5034,11 +5033,6 @@ class CConfig { */ unsigned short GetKind_ObjFunc(unsigned short val_obj = 0) const { return Kind_ObjFunc[val_obj]; } - /*! - * \brief Similar to GetKind_ObjFunc but returns the corresponding string. - */ - string GetName_ObjFunc(unsigned short val_obj = 0) const; - /*! * \author H. Kline * \brief Get the weight of objective function. There are several options: Drag coefficient, @@ -5867,12 +5861,6 @@ class CConfig { */ unsigned short GetDesign_Variable(unsigned short val_dv) const { return Design_Variable[val_dv]; } - /*! - * \brief Provides the buffet monitoring information. - * \return Buffet monitoring information, if TRUE then the code will compute the buffet sensor. - */ - bool GetBuffet_Monitoring(void) const { return Buffet_Monitoring; } - /*! * \brief Get the buffet sensor sharpness coefficient. * \return Sharpness coefficient for buffet sensor. diff --git a/Common/include/option_structure.hpp b/Common/include/option_structure.hpp index 461df39ee198..c69c5f5d44ca 100644 --- a/Common/include/option_structure.hpp +++ b/Common/include/option_structure.hpp @@ -1485,7 +1485,7 @@ enum ENUM_OBJECTIVE { INVERSE_DESIGN_HEATFLUX = 6, /*!< \brief Heat flux objective function definition (inverse design). */ TOTAL_HEATFLUX = 7, /*!< \brief Total heat flux. */ MAXIMUM_HEATFLUX = 8, /*!< \brief Maximum heat flux. */ - TOTAL_AVG_TEMPERATURE = 70, /*!< \brief Total averaged temperature. */ + AVG_TEMPERATURE = 70, /*!< \brief Total averaged temperature. */ MOMENT_X_COEFFICIENT = 9, /*!< \brief Pitching moment objective function definition. */ MOMENT_Y_COEFFICIENT = 10, /*!< \brief Rolling moment objective function definition. */ MOMENT_Z_COEFFICIENT = 11, /*!< \brief Yawing objective function definition. */ @@ -1545,7 +1545,7 @@ static const MapType Objective_Map = { MakePair("TORQUE", TORQUE_COEFFICIENT) MakePair("TOTAL_HEATFLUX", TOTAL_HEATFLUX) MakePair("MAXIMUM_HEATFLUX", MAXIMUM_HEATFLUX) - MakePair("TOTAL_AVG_TEMPERATURE", TOTAL_AVG_TEMPERATURE) + MakePair("AVG_TEMPERATURE", AVG_TEMPERATURE) MakePair("FIGURE_OF_MERIT", FIGURE_OF_MERIT) MakePair("BUFFET", BUFFET_SENSOR) MakePair("SURFACE_TOTAL_PRESSURE", SURFACE_TOTAL_PRESSURE) diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 41b60c4dd0bd..dc370d2e843d 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -1594,8 +1594,6 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Evaluate a problem with engines */ addBoolOption("ENGINE", Engine, false); - /* DESCRIPTION: Compute buffet sensor */ - addBoolOption("BUFFET_MONITORING", Buffet_Monitoring, false); /* DESCRIPTION: Sharpness coefficient for the buffet sensor */ addDoubleOption("BUFFET_K", Buffet_k, 10.0); /* DESCRIPTION: Offset parameter for the buffet sensor */ @@ -3502,10 +3500,6 @@ void CConfig::SetPostprocessing(unsigned short val_software, unsigned short val_ SU2_MPI::Error("Harmonic Balance not yet implemented for the incompressible solver.", CURRENT_FUNCTION); } - if ((Kind_Solver != NAVIER_STOKES && Kind_Solver != RANS) && (Buffet_Monitoring == true)){ - SU2_MPI::Error("Buffet monitoring incompatible with solvers other than NAVIER_STOKES and RANS", CURRENT_FUNCTION); - } - /*--- Check for Fluid model consistency ---*/ if (standard_air) { @@ -7996,9 +7990,9 @@ string CConfig::GetObjFunc_Extension(string val_filename) const { case TORQUE_COEFFICIENT: AdjExt = "_cq"; break; case TOTAL_HEATFLUX: AdjExt = "_totheat"; break; case MAXIMUM_HEATFLUX: AdjExt = "_maxheat"; break; - case TOTAL_AVG_TEMPERATURE: AdjExt = "_avtp"; break; + case AVG_TEMPERATURE: AdjExt = "_avtp"; break; case FIGURE_OF_MERIT: AdjExt = "_merit"; break; - case BUFFET_SENSOR: AdjExt = "_buffet"; break; + case BUFFET_SENSOR: AdjExt = "_buffet"; break; case SURFACE_TOTAL_PRESSURE: AdjExt = "_pt"; break; case SURFACE_STATIC_PRESSURE: AdjExt = "_pe"; break; case SURFACE_MASSFLOW: AdjExt = "_mfr"; break; @@ -9305,13 +9299,6 @@ short CConfig::FindInterfaceMarker(unsigned short iInterface) const { return -1; } -string CConfig::GetName_ObjFunc(unsigned short val_obj) const { - for (auto item : Objective_Map) - if (item.second == static_cast(Kind_ObjFunc[val_obj])) - return item.first; - return string(); -} - void CConfig::Tick(double *val_start_time) { #ifdef PROFILE diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp b/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp index 068fc49c7e11..728eb8c84ad7 100644 --- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp +++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp @@ -1464,6 +1464,13 @@ class CFVMFlowSolverBase : public CSolver { */ void Friction_Forces(const CGeometry* geometry, const CConfig* config) final; + /*! + * \brief Compute the buffet sensor. + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] config - Definition of the particular problem. + */ + inline virtual void Buffet_Monitoring(const CGeometry *geometry, const CConfig *config) { } + /*! * \brief Allocates the final pointer of SlidingState depending on how many donor vertex donate to it. * That number is stored in SlidingStateNodes[val_marker][val_vertex]. diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl index 26b4bb7850b7..926885d3069c 100644 --- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl +++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl @@ -2487,6 +2487,10 @@ void CFVMFlowSolverBase::Friction_Forces(const CGeometry* geometr SurfaceCoeff.CMy[iMarker_Monitoring] += SurfaceViscCoeff.CMy[iMarker_Monitoring]; SurfaceCoeff.CMz[iMarker_Monitoring] += SurfaceViscCoeff.CMz[iMarker_Monitoring]; } + + + Buffet_Monitoring(geometry, config); + } template @@ -2586,6 +2590,9 @@ su2double CFVMFlowSolverBase::EvaluateCommonObjFunc(const CConfig& config) case SURFACE_SECOND_OVER_UNIFORM: objFun += weight * config.GetSurface_SecondOverUniform(0); break; + case SURFACE_PRESSURE_DROP: + objFun += weight * config.GetSurface_PressureDrop(0); + break; case CUSTOM_OBJFUNC: objFun += weight * Total_Custom_ObjFunc; break; diff --git a/SU2_CFD/include/solvers/CNSSolver.hpp b/SU2_CFD/include/solvers/CNSSolver.hpp index 25983027e6ac..0d4e59da0117 100644 --- a/SU2_CFD/include/solvers/CNSSolver.hpp +++ b/SU2_CFD/include/solvers/CNSSolver.hpp @@ -203,7 +203,7 @@ class CNSSolver final : public CEulerSolver { * \param[in] geometry - Geometrical definition of the problem. * \param[in] config - Definition of the particular problem. */ - void Buffet_Monitoring(CGeometry *geometry, CConfig *config) override; + void Buffet_Monitoring(const CGeometry *geometry, const CConfig *config) override; /*! * \brief Compute the viscous contribution for a particular edge. diff --git a/SU2_CFD/include/solvers/CSolver.hpp b/SU2_CFD/include/solvers/CSolver.hpp index fd37e55262b5..37c3ad6c4d6a 100644 --- a/SU2_CFD/include/solvers/CSolver.hpp +++ b/SU2_CFD/include/solvers/CSolver.hpp @@ -1638,13 +1638,6 @@ class CSolver { */ inline virtual void Friction_Forces(const CGeometry* geometry, const CConfig* config) { } - /*! - * \brief A virtual member. - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] config - Definition of the particular problem. - */ - inline virtual void Buffet_Monitoring(CGeometry *geometry, CConfig *config) { } - /*! * \brief A virtual member. * \param[in] geometry - Geometrical definition of the problem. diff --git a/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp b/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp index 61516cce31c2..338b6f58d8b9 100644 --- a/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp +++ b/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp @@ -654,9 +654,6 @@ void CDiscAdjMultizoneDriver::DirectIteration(unsigned short iZone, unsigned sho void CDiscAdjMultizoneDriver::SetObjFunction(unsigned short kind_recording) { ObjFunc = 0.0; - su2double Weight_ObjFunc; - - unsigned short iMarker_Analyze, nMarker_Analyze; /*--- Call objective function calculations. ---*/ @@ -678,14 +675,16 @@ void CDiscAdjMultizoneDriver::SetObjFunction(unsigned short kind_recording) { if(config->GetWeakly_Coupled_Heat()) { solvers[HEAT_SOL]->Heat_Fluxes(geometry, solvers, config); } + + direct_output[iZone]->SetHistory_Output(geometry, solvers, config); + solvers[FLOW_SOL]->Evaluate_ObjFunc(config); break; + case DISC_ADJ_HEAT: solvers[HEAT_SOL]->Heat_Fluxes(geometry, solvers, config); break; } - - direct_output[iZone]->SetHistory_Output(geometry, solvers, config); } /*--- Extract objective function values. ---*/ @@ -696,28 +695,9 @@ void CDiscAdjMultizoneDriver::SetObjFunction(unsigned short kind_recording) { auto solvers = solver_container[iZone][INST_0][MESH_0]; auto geometry = geometry_container[iZone][INST_0][MESH_0]; - nMarker_Analyze = config->GetnMarker_Analyze(); - - for (iMarker_Analyze = 0; iMarker_Analyze < nMarker_Analyze; iMarker_Analyze++) { - - Weight_ObjFunc = config->GetWeight_ObjFunc(iMarker_Analyze); - - switch (config->GetKind_Solver()) { - - case DISC_ADJ_EULER: case DISC_ADJ_NAVIER_STOKES: case DISC_ADJ_RANS: - // per-surface output to be added soon - break; - case HEAT_EQUATION: case DISC_ADJ_HEAT: - // per-surface output to be added soon - break; - default: - break; - } - } - /*--- Not-per-surface objective functions (shall not be included above) ---*/ - Weight_ObjFunc = config->GetWeight_ObjFunc(0); + const auto Weight_ObjFunc = config->GetWeight_ObjFunc(0); bool ObjectiveNotCovered = false; @@ -726,57 +706,20 @@ void CDiscAdjMultizoneDriver::SetObjFunction(unsigned short kind_recording) { case DISC_ADJ_EULER: case DISC_ADJ_NAVIER_STOKES: case DISC_ADJ_RANS: case DISC_ADJ_INC_EULER: case DISC_ADJ_INC_NAVIER_STOKES: case DISC_ADJ_INC_RANS: { - string FieldName; - - switch (config->GetKind_ObjFunc()) { - - // Aerodynamic coefficients - - case DRAG_COEFFICIENT: - case LIFT_COEFFICIENT: - case SIDEFORCE_COEFFICIENT: - case EFFICIENCY: - case MOMENT_X_COEFFICIENT: - case MOMENT_Y_COEFFICIENT: - case MOMENT_Z_COEFFICIENT: - case FORCE_X_COEFFICIENT: - case FORCE_Y_COEFFICIENT: - case FORCE_Z_COEFFICIENT: - FieldName = config->GetName_ObjFunc(); - break; - - // Other surface-related output values - // The names are different than in CConfig... - - case SURFACE_MASSFLOW: FieldName = "AVG_MASSFLOW"; break; - case SURFACE_MACH: FieldName = "AVG_MACH"; break; - case SURFACE_UNIFORMITY: FieldName = "UNIFORMITY"; break; - case SURFACE_SECONDARY: FieldName = "SECONDARY_STRENGTH"; break; - case SURFACE_MOM_DISTORTION: FieldName = "MOMENTUM_DISTORTION"; break; - case SURFACE_SECOND_OVER_UNIFORM: FieldName = "SECONDARY_OVER_UNIFORMITY"; break; - case TOTAL_AVG_TEMPERATURE: FieldName = "AVG_TOTALTEMP"; break; - case SURFACE_TOTAL_PRESSURE: FieldName = "AVG_TOTALPRESS"; break; - - // Not yet covered by new output structure. Be careful these use MARKER_MONITORING. - - case SURFACE_PRESSURE_DROP: - ObjFunc += config->GetSurface_PressureDrop(0)*Weight_ObjFunc; - break; - case SURFACE_STATIC_PRESSURE: - ObjFunc += config->GetSurface_Pressure(0)*Weight_ObjFunc; - break; - case TOTAL_HEATFLUX: - ObjFunc += solvers[FLOW_SOL]->GetTotal_HeatFlux()*Weight_ObjFunc; - break; + auto val = solvers[FLOW_SOL]->GetTotal_ComboObj(); - default: - ObjectiveNotCovered = true; - break; + if (config->GetWeakly_Coupled_Heat()) { + if (config->GetKind_ObjFunc() == TOTAL_HEATFLUX) { + val += solvers[HEAT_SOL]->GetTotal_HeatFlux(); + } + else if (config->GetKind_ObjFunc() == AVG_TEMPERATURE) { + val += solvers[HEAT_SOL]->GetTotal_AvgTemperature(); + } } + ObjFunc += val*Weight_ObjFunc; - if(!FieldName.empty()) - ObjFunc += direct_output[iZone]->GetHistoryFieldValue(FieldName)*Weight_ObjFunc; - + /*--- This is not ideal... ---*/ + ObjectiveNotCovered = (val==0.0); break; } case DISC_ADJ_HEAT: @@ -788,7 +731,7 @@ void CDiscAdjMultizoneDriver::SetObjFunction(unsigned short kind_recording) { case TOTAL_HEATFLUX: ObjFunc += solvers[HEAT_SOL]->GetTotal_HeatFlux()*Weight_ObjFunc; break; - case TOTAL_AVG_TEMPERATURE: + case AVG_TEMPERATURE: ObjFunc += solvers[HEAT_SOL]->GetTotal_AvgTemperature()*Weight_ObjFunc; break; diff --git a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp index b1561b048f94..068291318356 100644 --- a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp +++ b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp @@ -377,7 +377,7 @@ void CDiscAdjSinglezoneDriver::SetObjFunction(){ if (config->GetKind_ObjFunc() == TOTAL_HEATFLUX) { ObjFunc += solver[HEAT_SOL]->GetTotal_HeatFlux(); } - else if (config->GetKind_ObjFunc() == TOTAL_AVG_TEMPERATURE) { + else if (config->GetKind_ObjFunc() == AVG_TEMPERATURE) { ObjFunc += solver[HEAT_SOL]->GetTotal_AvgTemperature(); } } @@ -416,7 +416,7 @@ void CDiscAdjSinglezoneDriver::SetObjFunction(){ case TOTAL_HEATFLUX: ObjFunc = solver[HEAT_SOL]->GetTotal_HeatFlux(); break; - case TOTAL_AVG_TEMPERATURE: + case AVG_TEMPERATURE: ObjFunc = solver[HEAT_SOL]->GetTotal_AvgTemperature(); break; default: diff --git a/SU2_CFD/src/integration/CMultiGridIntegration.cpp b/SU2_CFD/src/integration/CMultiGridIntegration.cpp index 05188d343850..b4d628c0e74a 100644 --- a/SU2_CFD/src/integration/CMultiGridIntegration.cpp +++ b/SU2_CFD/src/integration/CMultiGridIntegration.cpp @@ -688,12 +688,6 @@ void CMultiGridIntegration::NonDimensional_Parameters(CGeometry **geometry, CSol solver_container[FinestMesh][FLOW_SOL]->Momentum_Forces(geometry[FinestMesh], config); solver_container[FinestMesh][FLOW_SOL]->Friction_Forces(geometry[FinestMesh], config); - /*--- Evaluate the buffet metric if requested ---*/ - - if(config->GetBuffet_Monitoring() || config->GetKind_ObjFunc() == BUFFET_SENSOR){ - solver_container[FinestMesh][FLOW_SOL]->Buffet_Monitoring(geometry[FinestMesh], config); - } - break; case RUNTIME_ADJFLOW_SYS: diff --git a/SU2_CFD/src/output/CFlowCompOutput.cpp b/SU2_CFD/src/output/CFlowCompOutput.cpp index e59202bf7aef..813563d79107 100644 --- a/SU2_CFD/src/output/CFlowCompOutput.cpp +++ b/SU2_CFD/src/output/CFlowCompOutput.cpp @@ -215,27 +215,29 @@ void CFlowCompOutput::SetHistoryOutputFields(CConfig *config){ /// BEGIN_GROUP: ROTATING_FRAME, DESCRIPTION: Coefficients related to a rotating frame of reference. /// DESCRIPTION: Merit - AddHistoryOutput("MERIT", "CMerit", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "Merit", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("FIGURE_OF_MERIT", "CMerit", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "Merit", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: CT - AddHistoryOutput("CT", "CT", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "CT", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("THRUST", "CT", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "CT", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: CQ - AddHistoryOutput("CQ", "CQ", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "CQ", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("TORQUE", "CQ", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "CQ", HistoryFieldType::COEFFICIENT); /// END_GROUP /// BEGIN_GROUP: EQUIVALENT_AREA, DESCRIPTION: Equivalent area. /// DESCRIPTION: Equivalent area AddHistoryOutput("EQUIV_AREA", "CEquiv_Area", ScreenOutputFormat::SCIENTIFIC, "EQUIVALENT_AREA", "Equivalent area", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Nearfield obj. function - AddHistoryOutput("NEARFIELD_OF", "CNearFieldOF", ScreenOutputFormat::SCIENTIFIC, "EQUIVALENT_AREA", "Nearfield obj. function ", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("NEARFIELD_OF", "CNearFieldOF", ScreenOutputFormat::SCIENTIFIC, "EQUIVALENT_AREA", "Nearfield obj. function", HistoryFieldType::COEFFICIENT); /// END_GROUP + if (config->GetKind_Solver() == RANS || config->GetKind_Solver() == NAVIER_STOKES){ + AddHistoryOutput("BUFFET", "Buffet", ScreenOutputFormat::SCIENTIFIC, "AERO_COEFF", "Buffet sensor", HistoryFieldType::COEFFICIENT); + } + /// /// BEGIN_GROUP: HEAT_COEFF, DESCRIPTION: Heat coefficients on all surfaces set with MARKER_MONITORING. /// DESCRIPTION: Total heatflux AddHistoryOutput("TOTAL_HEATFLUX", "HF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total heatflux on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Maximal heatflux - AddHistoryOutput("HEATFLUX_MAX", "maxHF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total maximum heatflux on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); - /// DESCRIPTION: Temperature - AddHistoryOutput("TEMPERATURE", "Temp", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total avg. temperature on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("MAXIMUM_HEATFLUX", "maxHF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total maximum heatflux on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); /// END_GROUP AddHistoryOutput("MIN_DELTA_TIME", "Min DT", ScreenOutputFormat::SCIENTIFIC, "CFL_NUMBER", "Current minimum local time step"); @@ -662,9 +664,12 @@ void CFlowCompOutput::LoadHistoryData(CConfig *config, CGeometry *geometry, CSol } } - SetHistoryOutputValue("TOTAL_HEATFLUX", flow_solver->GetTotal_HeatFlux()); - SetHistoryOutputValue("HEATFLUX_MAX", flow_solver->GetTotal_MaxHeatFlux()); - SetHistoryOutputValue("TEMPERATURE", flow_solver->GetTotal_AvgTemperature()); + if (config->GetKind_Solver() == RANS || config->GetKind_Solver() == NAVIER_STOKES){ + SetHistoryOutputValue("BUFFET", flow_solver->GetTotal_Buffet_Metric()); + } + + SetHistoryOutputValue("TOTAL_HEATFLUX", flow_solver->GetTotal_HeatFlux()); + SetHistoryOutputValue("MAXIMUM_HEATFLUX", flow_solver->GetTotal_MaxHeatFlux()); SetHistoryOutputValue("MIN_DELTA_TIME", flow_solver->GetMin_Delta_Time()); SetHistoryOutputValue("MAX_DELTA_TIME", flow_solver->GetMax_Delta_Time()); diff --git a/SU2_CFD/src/output/CFlowIncOutput.cpp b/SU2_CFD/src/output/CFlowIncOutput.cpp index 927cb743c8ff..992df9c8e527 100644 --- a/SU2_CFD/src/output/CFlowIncOutput.cpp +++ b/SU2_CFD/src/output/CFlowIncOutput.cpp @@ -183,20 +183,20 @@ void CFlowIncOutput::SetHistoryOutputFields(CConfig *config){ /// BEGIN_GROUP: ROTATING_FRAME, DESCRIPTION: Coefficients related to a rotating frame of reference. /// DESCRIPTION: Merit - AddHistoryOutput("MERIT", "CMerit", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "Merit", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("FIGURE_OF_MERIT", "CMerit", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "Merit", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: CT - AddHistoryOutput("CT", "CT", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "CT", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("THRUST", "CT", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "CT", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: CQ - AddHistoryOutput("CQ", "CQ", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "CQ", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("TORQUE", "CQ", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "CQ", HistoryFieldType::COEFFICIENT); /// END_GROUP /// BEGIN_GROUP: HEAT_COEFF, DESCRIPTION: Heat coefficients on all surfaces set with MARKER_MONITORING. /// DESCRIPTION: Total heatflux AddHistoryOutput("TOTAL_HEATFLUX", "HF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total heatflux on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Maximal heatflux - AddHistoryOutput("HEATFLUX_MAX", "maxHF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total maximum heatflux on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("MAXIMUM_HEATFLUX", "maxHF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total maximum heatflux on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Temperature - AddHistoryOutput("TEMPERATURE", "Temp", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total avg. temperature on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("AVG_TEMPERATURE", "Temp", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total avg. temperature on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); /// END_GROUP /// DESCRIPTION: Angle of attack @@ -293,25 +293,25 @@ void CFlowIncOutput::LoadHistoryData(CConfig *config, CGeometry *geometry, CSolv } if (weakly_coupled_heat){ - SetHistoryOutputValue("TOTAL_HEATFLUX", heat_solver->GetTotal_HeatFlux()); - SetHistoryOutputValue("HEATFLUX_MAX", heat_solver->GetTotal_MaxHeatFlux()); - SetHistoryOutputValue("TEMPERATURE", heat_solver->GetTotal_AvgTemperature()); - SetHistoryOutputValue("RMS_TEMPERATURE", log10(heat_solver->GetRes_RMS(0))); - SetHistoryOutputValue("MAX_TEMPERATURE", log10(heat_solver->GetRes_Max(0))); - if (multiZone) SetHistoryOutputValue("BGS_TEMPERATURE", log10(heat_solver->GetRes_BGS(0))); + SetHistoryOutputValue("TOTAL_HEATFLUX", heat_solver->GetTotal_HeatFlux()); + SetHistoryOutputValue("MAXIMUM_HEATFLUX", heat_solver->GetTotal_MaxHeatFlux()); + SetHistoryOutputValue("AVG_TEMPERATURE", heat_solver->GetTotal_AvgTemperature()); + SetHistoryOutputValue("RMS_TEMPERATURE", log10(heat_solver->GetRes_RMS(0))); + SetHistoryOutputValue("MAX_TEMPERATURE", log10(heat_solver->GetRes_Max(0))); + if (multiZone) SetHistoryOutputValue("BGS_TEMPERATURE", log10(heat_solver->GetRes_BGS(0))); } if (heat){ - SetHistoryOutputValue("TOTAL_HEATFLUX", flow_solver->GetTotal_HeatFlux()); - SetHistoryOutputValue("HEATFLUX_MAX", flow_solver->GetTotal_MaxHeatFlux()); - SetHistoryOutputValue("TEMPERATURE", flow_solver->GetTotal_AvgTemperature()); - if (nDim == 3) SetHistoryOutputValue("RMS_TEMPERATURE", log10(flow_solver->GetRes_RMS(4))); - else SetHistoryOutputValue("RMS_TEMPERATURE", log10(flow_solver->GetRes_RMS(3))); - - if (nDim == 3) SetHistoryOutputValue("MAX_TEMPERATURE", log10(flow_solver->GetRes_Max(4))); - else SetHistoryOutputValue("MAX_TEMPERATURE", log10(flow_solver->GetRes_Max(3))); + SetHistoryOutputValue("TOTAL_HEATFLUX", flow_solver->GetTotal_HeatFlux()); + SetHistoryOutputValue("MAXIMUM_HEATFLUX", flow_solver->GetTotal_MaxHeatFlux()); + SetHistoryOutputValue("AVG_TEMPERATURE", flow_solver->GetTotal_AvgTemperature()); + if (nDim == 3) SetHistoryOutputValue("RMS_TEMPERATURE", log10(flow_solver->GetRes_RMS(4))); + else SetHistoryOutputValue("RMS_TEMPERATURE", log10(flow_solver->GetRes_RMS(3))); + + if (nDim == 3) SetHistoryOutputValue("MAX_TEMPERATURE", log10(flow_solver->GetRes_Max(4))); + else SetHistoryOutputValue("MAX_TEMPERATURE", log10(flow_solver->GetRes_Max(3))); if (multiZone){ - if (nDim == 3) SetHistoryOutputValue("BGS_TEMPERATURE", log10(flow_solver->GetRes_BGS(4))); - else SetHistoryOutputValue("BGS_TEMPERATURE", log10(flow_solver->GetRes_BGS(3))); + if (nDim == 3) SetHistoryOutputValue("BGS_TEMPERATURE", log10(flow_solver->GetRes_BGS(4))); + else SetHistoryOutputValue("BGS_TEMPERATURE", log10(flow_solver->GetRes_BGS(3))); } } diff --git a/SU2_CFD/src/output/CFlowOutput.cpp b/SU2_CFD/src/output/CFlowOutput.cpp index f0038d1c6268..f3428d265ef2 100644 --- a/SU2_CFD/src/output/CFlowOutput.cpp +++ b/SU2_CFD/src/output/CFlowOutput.cpp @@ -41,13 +41,13 @@ void CFlowOutput::AddAnalyzeSurfaceOutput(CConfig *config){ /// DESCRIPTION: Average mass flow - AddHistoryOutput("AVG_MASSFLOW", "Avg_Massflow", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average mass flow on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("SURFACE_MASSFLOW", "Avg_Massflow", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average mass flow on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average Mach number - AddHistoryOutput("AVG_MACH", "Avg_Mach", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average mach number on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("SURFACE_MACH", "Avg_Mach", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average mach number on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average Temperature - AddHistoryOutput("AVG_TEMP", "Avg_Temp", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average temperature on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("SURFACE_STATIC_TEMPERATURE","Avg_Temp", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average temperature on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average Pressure - AddHistoryOutput("AVG_PRESS", "Avg_Press", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average pressure on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("SURFACE_STATIC_PRESSURE", "Avg_Press", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average pressure on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average Density AddHistoryOutput("AVG_DENSITY", "Avg_Density", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average density on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average Enthalpy @@ -55,19 +55,19 @@ void CFlowOutput::AddAnalyzeSurfaceOutput(CConfig *config){ /// DESCRIPTION: Average velocity in normal direction of the surface AddHistoryOutput("AVG_NORMALVEL", "Avg_NormalVel", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average normal velocity on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Flow uniformity - AddHistoryOutput("UNIFORMITY", "Uniformity", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total flow uniformity on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("SURFACE_UNIFORMITY", "Uniformity", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total flow uniformity on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Secondary strength - AddHistoryOutput("SECONDARY_STRENGTH", "Secondary_Strength", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total secondary strength on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("SURFACE_SECONDARY", "Secondary_Strength", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total secondary strength on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Momentum distortion - AddHistoryOutput("MOMENTUM_DISTORTION", "Momentum_Distortion", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total momentum distortion on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("SURFACE_MOM_DISTORTION", "Momentum_Distortion", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total momentum distortion on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Secondary over uniformity - AddHistoryOutput("SECONDARY_OVER_UNIFORMITY", "Secondary_Over_Uniformity", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total secondary over uniformity on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("SURFACE_SECOND_OVER_UNIFORM","Secondary_Over_Uniformity",ScreenOutputFormat::SCIENTIFIC,"FLOW_COEFF", "Total secondary over uniformity on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average total temperature - AddHistoryOutput("AVG_TOTALTEMP", "Avg_TotalTemp", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average total temperature all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("SURFACE_TOTAL_TEMPERATURE","Avg_TotalTemp", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average total temperature all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average total pressure - AddHistoryOutput("AVG_TOTALPRESS", "Avg_TotalPress", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average total pressure on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("SURFACE_TOTAL_PRESSURE", "Avg_TotalPress", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total average total pressure on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Pressure drop - AddHistoryOutput("PRESSURE_DROP", "Pressure_Drop", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total pressure drop on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("SURFACE_PRESSURE_DROP", "Pressure_Drop", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF", "Total pressure drop on all markers set in MARKER_ANALYZE", HistoryFieldType::COEFFICIENT); /// END_GROUP @@ -78,13 +78,13 @@ void CFlowOutput::AddAnalyzeSurfaceOutput(CConfig *config){ } /// DESCRIPTION: Average mass flow - AddHistoryOutputPerSurface("AVG_MASSFLOW", "Avg_Massflow", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); + AddHistoryOutputPerSurface("SURFACE_MASSFLOW", "Avg_Massflow", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average Mach number - AddHistoryOutputPerSurface("AVG_MACH", "Avg_Mach", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); + AddHistoryOutputPerSurface("SURFACE_MACH", "Avg_Mach", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average Temperature - AddHistoryOutputPerSurface("AVG_TEMP", "Avg_Temp", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); + AddHistoryOutputPerSurface("SURFACE_STATIC_TEMPERATURE","Avg_Temp", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average Pressure - AddHistoryOutputPerSurface("AVG_PRESS", "Avg_Press", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); + AddHistoryOutputPerSurface("SURFACE_STATIC_PRESSURE", "Avg_Press", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average Density AddHistoryOutputPerSurface("AVG_DENSITY", "Avg_Density", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average Enthalpy @@ -92,19 +92,19 @@ void CFlowOutput::AddAnalyzeSurfaceOutput(CConfig *config){ /// DESCRIPTION: Average velocity in normal direction of the surface AddHistoryOutputPerSurface("AVG_NORMALVEL", "Avg_NormalVel", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Flow uniformity - AddHistoryOutputPerSurface("UNIFORMITY", "Uniformity", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); + AddHistoryOutputPerSurface("SURFACE_UNIFORMITY", "Uniformity", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Secondary strength - AddHistoryOutputPerSurface("SECONDARY_STRENGTH", "Secondary_Strength", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); + AddHistoryOutputPerSurface("SURFACE_SECONDARY", "Secondary_Strength", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Momentum distortion - AddHistoryOutputPerSurface("MOMENTUM_DISTORTION", "Momentum_Distortion", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); + AddHistoryOutputPerSurface("SURFACE_MOM_DISTORTION", "Momentum_Distortion", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Secondary over uniformity - AddHistoryOutputPerSurface("SECONDARY_OVER_UNIFORMITY", "Secondary_Over_Uniformity", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); + AddHistoryOutputPerSurface("SURFACE_SECOND_OVER_UNIFORM","Secondary_Over_Uniformity",ScreenOutputFormat::SCIENTIFIC,"FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average total temperature - AddHistoryOutputPerSurface("AVG_TOTALTEMP", "Avg_TotalTemp", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); + AddHistoryOutputPerSurface("SURFACE_TOTAL_TEMPERATURE","Avg_TotalTemp", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Average total pressure - AddHistoryOutputPerSurface("AVG_TOTALPRESS", "Avg_TotalPress", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); + AddHistoryOutputPerSurface("SURFACE_TOTAL_PRESSURE", "Avg_TotalPress", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Pressure drop - AddHistoryOutputPerSurface("PRESSURE_DROP", "Pressure_Drop", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); + AddHistoryOutputPerSurface("SURFACE_PRESSURE_DROP", "Pressure_Drop", ScreenOutputFormat::SCIENTIFIC, "FLOW_COEFF_SURF", Marker_Analyze, HistoryFieldType::COEFFICIENT); /// END_GROUP } @@ -470,22 +470,22 @@ void CFlowOutput::SetAnalyzeSurface(CSolver *solver, CGeometry *geometry, CConfi su2double MassFlow = Surface_MassFlow_Total[iMarker_Analyze] * config->GetDensity_Ref() * config->GetVelocity_Ref(); if (config->GetSystemMeasurements() == US) MassFlow *= 32.174; - SetHistoryOutputPerSurfaceValue("AVG_MASSFLOW", MassFlow, iMarker_Analyze); + SetHistoryOutputPerSurfaceValue("SURFACE_MASSFLOW", MassFlow, iMarker_Analyze); Tot_Surface_MassFlow += MassFlow; config->SetSurface_MassFlow(iMarker_Analyze, MassFlow); su2double Mach = Surface_Mach_Total[iMarker_Analyze]; - SetHistoryOutputPerSurfaceValue("AVG_MACH", Mach, iMarker_Analyze); + SetHistoryOutputPerSurfaceValue("SURFACE_MACH", Mach, iMarker_Analyze); Tot_Surface_Mach += Mach; config->SetSurface_Mach(iMarker_Analyze, Mach); su2double Temperature = Surface_Temperature_Total[iMarker_Analyze] * config->GetTemperature_Ref(); - SetHistoryOutputPerSurfaceValue("AVG_TEMP", Temperature, iMarker_Analyze); + SetHistoryOutputPerSurfaceValue("SURFACE_STATIC_TEMPERATURE", Temperature, iMarker_Analyze); Tot_Surface_Temperature += Temperature; config->SetSurface_Temperature(iMarker_Analyze, Temperature); su2double Pressure = Surface_Pressure_Total[iMarker_Analyze] * config->GetPressure_Ref(); - SetHistoryOutputPerSurfaceValue("AVG_PRESS", Pressure, iMarker_Analyze); + SetHistoryOutputPerSurfaceValue("SURFACE_STATIC_PRESSURE", Pressure, iMarker_Analyze); Tot_Surface_Pressure += Pressure; config->SetSurface_Pressure(iMarker_Analyze, Pressure); @@ -505,32 +505,32 @@ void CFlowOutput::SetAnalyzeSurface(CSolver *solver, CGeometry *geometry, CConfi config->SetSurface_NormalVelocity(iMarker_Analyze, NormalVelocity); su2double Uniformity = sqrt(Surface_StreamVelocity2_Total[iMarker_Analyze]) * config->GetVelocity_Ref(); - SetHistoryOutputPerSurfaceValue("UNIFORMITY", Uniformity, iMarker_Analyze); + SetHistoryOutputPerSurfaceValue("SURFACE_UNIFORMITY", Uniformity, iMarker_Analyze); Tot_Surface_StreamVelocity2 += Uniformity; config->SetSurface_Uniformity(iMarker_Analyze, Uniformity); su2double SecondaryStrength = sqrt(Surface_TransvVelocity2_Total[iMarker_Analyze]) * config->GetVelocity_Ref(); - SetHistoryOutputPerSurfaceValue("SECONDARY_STRENGTH", SecondaryStrength, iMarker_Analyze); + SetHistoryOutputPerSurfaceValue("SURFACE_SECONDARY", SecondaryStrength, iMarker_Analyze); Tot_Surface_TransvVelocity2 += SecondaryStrength; config->SetSurface_SecondaryStrength(iMarker_Analyze, SecondaryStrength); su2double MomentumDistortion = Surface_MomentumDistortion_Total[iMarker_Analyze]; - SetHistoryOutputPerSurfaceValue("MOMENTUM_DISTORTION", MomentumDistortion, iMarker_Analyze); + SetHistoryOutputPerSurfaceValue("SURFACE_MOM_DISTORTION", MomentumDistortion, iMarker_Analyze); Tot_Momentum_Distortion += MomentumDistortion; config->SetSurface_MomentumDistortion(iMarker_Analyze, MomentumDistortion); su2double SecondOverUniform = SecondaryStrength/Uniformity; - SetHistoryOutputPerSurfaceValue("SECONDARY_OVER_UNIFORMITY", SecondOverUniform, iMarker_Analyze); + SetHistoryOutputPerSurfaceValue("SURFACE_SECOND_OVER_UNIFORM", SecondOverUniform, iMarker_Analyze); Tot_SecondOverUniformity += SecondOverUniform; config->SetSurface_SecondOverUniform(iMarker_Analyze, SecondOverUniform); su2double TotalTemperature = Surface_TotalTemperature_Total[iMarker_Analyze] * config->GetTemperature_Ref(); - SetHistoryOutputPerSurfaceValue("AVG_TOTALTEMP", TotalTemperature, iMarker_Analyze); + SetHistoryOutputPerSurfaceValue("SURFACE_TOTAL_TEMPERATURE", TotalTemperature, iMarker_Analyze); Tot_Surface_TotalTemperature += TotalTemperature; config->SetSurface_TotalTemperature(iMarker_Analyze, TotalTemperature); su2double TotalPressure = Surface_TotalPressure_Total[iMarker_Analyze] * config->GetPressure_Ref(); - SetHistoryOutputPerSurfaceValue("AVG_TOTALPRESS", TotalPressure, iMarker_Analyze); + SetHistoryOutputPerSurfaceValue("SURFACE_TOTAL_PRESSURE", TotalPressure, iMarker_Analyze); Tot_Surface_TotalPressure += TotalPressure; config->SetSurface_TotalPressure(iMarker_Analyze, TotalPressure); @@ -549,24 +549,24 @@ void CFlowOutput::SetAnalyzeSurface(CSolver *solver, CGeometry *geometry, CConfi Pressure_Drop = (Surface_Pressure_Total[1]-Surface_Pressure_Total[0]) * config->GetPressure_Ref(); config->SetSurface_PressureDrop(iMarker_Analyze, Pressure_Drop); } - SetHistoryOutputPerSurfaceValue("PRESSURE_DROP", Pressure_Drop, iMarker_Analyze); + SetHistoryOutputPerSurfaceValue("SURFACE_PRESSURE_DROP", Pressure_Drop, iMarker_Analyze); Tot_Surface_PressureDrop += Pressure_Drop; } - SetHistoryOutputValue("AVG_MASSFLOW", Tot_Surface_MassFlow); - SetHistoryOutputValue("AVG_MACH", Tot_Surface_Mach); - SetHistoryOutputValue("AVG_TEMP", Tot_Surface_Temperature); - SetHistoryOutputValue("AVG_PRESS", Tot_Surface_Pressure); + SetHistoryOutputValue("SURFACE_MASSFLOW", Tot_Surface_MassFlow); + SetHistoryOutputValue("SURFACE_MACH", Tot_Surface_Mach); + SetHistoryOutputValue("SURFACE_STATIC_TEMPERATURE", Tot_Surface_Temperature); + SetHistoryOutputValue("SURFACE_STATIC_PRESSURE", Tot_Surface_Pressure); SetHistoryOutputValue("AVG_DENSITY", Tot_Surface_Density); SetHistoryOutputValue("AVG_ENTHALPY", Tot_Surface_Enthalpy); SetHistoryOutputValue("AVG_NORMALVEL", Tot_Surface_Enthalpy); - SetHistoryOutputValue("UNIFORMITY", Tot_Surface_StreamVelocity2); - SetHistoryOutputValue("SECONDARY_STRENGTH", Tot_Surface_TransvVelocity2); - SetHistoryOutputValue("MOMENTUM_DISTORTION", Tot_Momentum_Distortion); - SetHistoryOutputValue("SECONDARY_OVER_UNIFORMITY", Tot_SecondOverUniformity); - SetHistoryOutputValue("AVG_TOTALTEMP", Tot_Surface_TotalTemperature); - SetHistoryOutputValue("AVG_TOTALPRESS", Tot_Surface_TotalPressure); - SetHistoryOutputValue("PRESSURE_DROP", Tot_Surface_PressureDrop); + SetHistoryOutputValue("SURFACE_UNIFORMITY", Tot_Surface_StreamVelocity2); + SetHistoryOutputValue("SURFACE_SECONDARY", Tot_Surface_TransvVelocity2); + SetHistoryOutputValue("SURFACE_MOM_DISTORTION", Tot_Momentum_Distortion); + SetHistoryOutputValue("SURFACE_SECOND_OVER_UNIFORM", Tot_SecondOverUniformity); + SetHistoryOutputValue("SURFACE_TOTAL_TEMPERATURE", Tot_Surface_TotalTemperature); + SetHistoryOutputValue("SURFACE_TOTAL_PRESSURE", Tot_Surface_TotalPressure); + SetHistoryOutputValue("SURFACE_PRESSURE_DROP", Tot_Surface_PressureDrop); if ((rank == MASTER_NODE) && !config->GetDiscrete_Adjoint() && output) { @@ -797,15 +797,15 @@ void CFlowOutput::SetAerodynamicCoefficients(CConfig *config, CSolver *flow_solv void CFlowOutput::SetRotatingFrameCoefficients(CConfig *config, CSolver *flow_solver) { - SetHistoryOutputValue("CT", flow_solver->GetTotal_CT()); - SetHistoryOutputValue("CQ", flow_solver->GetTotal_CQ()); - SetHistoryOutputValue("MERIT", flow_solver->GetTotal_CMerit()); + SetHistoryOutputValue("THRUST", flow_solver->GetTotal_CT()); + SetHistoryOutputValue("TORQUE", flow_solver->GetTotal_CQ()); + SetHistoryOutputValue("FIGURE_OF_MERIT", flow_solver->GetTotal_CMerit()); } void CFlowOutput::Add_CpInverseDesignOutput(CConfig *config){ - AddHistoryOutput("CP_DIFF", "Cp_Diff", ScreenOutputFormat::FIXED, "CP_DIFF", "Cp difference for inverse design"); + AddHistoryOutput("INVERSE_DESIGN_PRESSURE", "Cp_Diff", ScreenOutputFormat::FIXED, "CP_DIFF", "Cp difference for inverse design"); } @@ -929,7 +929,7 @@ void CFlowOutput::Set_CpInverseDesign(CSolver *solver, CGeometry *geometry, CCon solver->SetTotal_CpDiff(PressDiff); - SetHistoryOutputValue("CP_DIFF", PressDiff); + SetHistoryOutputValue("INVERSE_DESIGN_PRESSURE", PressDiff); } diff --git a/SU2_CFD/src/output/CHeatOutput.cpp b/SU2_CFD/src/output/CHeatOutput.cpp index 9d76e88542ea..7f6738fe000d 100644 --- a/SU2_CFD/src/output/CHeatOutput.cpp +++ b/SU2_CFD/src/output/CHeatOutput.cpp @@ -83,7 +83,7 @@ void CHeatOutput::LoadHistoryData(CConfig *config, CGeometry *geometry, CSolver CSolver* heat_solver = solver[HEAT_SOL]; SetHistoryOutputValue("TOTAL_HEATFLUX", heat_solver->GetTotal_HeatFlux()); - SetHistoryOutputValue("HEATFLUX_MAX", heat_solver->GetTotal_MaxHeatFlux()); + SetHistoryOutputValue("MAXIMUM_HEATFLUX", heat_solver->GetTotal_MaxHeatFlux()); SetHistoryOutputValue("AVG_TEMPERATURE", heat_solver->GetTotal_AvgTemperature()); SetHistoryOutputValue("RMS_TEMPERATURE", log10(heat_solver->GetRes_RMS(0))); SetHistoryOutputValue("MAX_TEMPERATURE", log10(heat_solver->GetRes_Max(0))); @@ -107,7 +107,7 @@ void CHeatOutput::SetHistoryOutputFields(CConfig *config){ AddHistoryOutput("BGS_TEMPERATURE", "bgs[T]", ScreenOutputFormat::FIXED, "BGS_RES", "Block-Gauss seidel residual of the temperature", HistoryFieldType::RESIDUAL); AddHistoryOutput("TOTAL_HEATFLUX", "HF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total heatflux on all surfaces defined in MARKER_MONITORING", HistoryFieldType::COEFFICIENT); - AddHistoryOutput("HEATFLUX_MAX", "MaxHF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total maximal heatflux on all surfaces defined in MARKER_MONITORING", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("MAXIMUM_HEATFLUX", "MaxHF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total maximal heatflux on all surfaces defined in MARKER_MONITORING", HistoryFieldType::COEFFICIENT); AddHistoryOutput("AVG_TEMPERATURE", "AvgTemp", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total average temperature on all surfaces defined in MARKER_MONITORING", HistoryFieldType::COEFFICIENT); AddHistoryOutput("CFL_NUMBER", "CFL number", ScreenOutputFormat::SCIENTIFIC, "CFL_NUMBER", "Current value of the CFL number"); diff --git a/SU2_CFD/src/output/CNEMOCompOutput.cpp b/SU2_CFD/src/output/CNEMOCompOutput.cpp index 836e78200254..763f9006af56 100644 --- a/SU2_CFD/src/output/CNEMOCompOutput.cpp +++ b/SU2_CFD/src/output/CNEMOCompOutput.cpp @@ -225,11 +225,11 @@ void CNEMOCompOutput::SetHistoryOutputFields(CConfig *config){ /// BEGIN_GROUP: ROTATING_FRAME, DESCRIPTION: Coefficients related to a rotating frame of reference. /// DESCRIPTION: Merit - AddHistoryOutput("MERIT", "CMerit", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "Merit", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("FIGURE_OF_MERIT", "CMerit", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "Merit", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: CT - AddHistoryOutput("CT", "CT", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "CT", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("THRUST", "CT", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "CT", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: CQ - AddHistoryOutput("CQ", "CQ", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "CQ", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("TORQUE", "CQ", ScreenOutputFormat::SCIENTIFIC, "ROTATING_FRAME", "CQ", HistoryFieldType::COEFFICIENT); /// END_GROUP /// BEGIN_GROUP: EQUIVALENT_AREA, DESCRIPTION: Equivalent area. @@ -241,11 +241,9 @@ void CNEMOCompOutput::SetHistoryOutputFields(CConfig *config){ /// /// BEGIN_GROUP: HEAT_COEFF, DESCRIPTION: Heat coefficients on all surfaces set with MARKER_MONITORING. /// DESCRIPTION: Total heatflux - AddHistoryOutput("HEATFLUX", "HF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total heatflux on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("TOTAL_HEATFLUX", "HF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total heatflux on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); /// DESCRIPTION: Maximal heatflux - AddHistoryOutput("HEATFLUX_MAX", "maxHF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total maximum heatflux on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); - /// DESCRIPTION: Temperature - AddHistoryOutput("TEMPERATURE", "Temp", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total avg. temperature on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("MAXIMUM_HEATFLUX", "maxHF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total maximum heatflux on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); /// END_GROUP AddHistoryOutput("CFL_NUMBER", "CFL number", ScreenOutputFormat::SCIENTIFIC, "CFL_NUMBER", "Current value of the CFL number"); @@ -441,7 +439,7 @@ void CNEMOCompOutput::LoadVolumeData(CConfig *config, CGeometry *geometry, CSolv SetVolumeOutputValue("COORD-Y", iPoint, Node_Geo->GetCoord(iPoint, 1)); if (nDim == 3) SetVolumeOutputValue("COORD-Z", iPoint, Node_Geo->GetCoord(iPoint, 2)); - + for(iSpecies = 0; iSpecies < nSpecies; iSpecies++) SetVolumeOutputValue("DENSITY_" + std::to_string(iSpecies), iPoint, Node_Flow->GetSolution(iPoint, iSpecies)); @@ -581,7 +579,7 @@ void CNEMOCompOutput::LoadHistoryData(CConfig *config, CGeometry *geometry, CSol for(iSpecies = 0; iSpecies < nSpecies; iSpecies++) SetHistoryOutputValue("RMS_DENSITY_" + std::to_string(iSpecies), log10(NEMO_solver->GetRes_RMS(iSpecies))); - + SetHistoryOutputValue("RMS_MOMENTUM-X", log10(NEMO_solver->GetRes_RMS(nSpecies))); SetHistoryOutputValue("RMS_MOMENTUM-Y", log10(NEMO_solver->GetRes_RMS(nSpecies+1))); if (nDim == 2){ @@ -649,9 +647,8 @@ void CNEMOCompOutput::LoadHistoryData(CConfig *config, CGeometry *geometry, CSol } } - SetHistoryOutputValue("HEATFLUX", NEMO_solver->GetTotal_HeatFlux()); - SetHistoryOutputValue("HEATFLUX_MAX", NEMO_solver->GetTotal_MaxHeatFlux()); - SetHistoryOutputValue("TEMPERATURE", NEMO_solver->GetTotal_AvgTemperature()); + SetHistoryOutputValue("TOTAL_HEATFLUX", NEMO_solver->GetTotal_HeatFlux()); + SetHistoryOutputValue("MAXIMUM_HEATFLUX", NEMO_solver->GetTotal_MaxHeatFlux()); SetHistoryOutputValue("CFL_NUMBER", config->GetCFL(MESH_0)); diff --git a/SU2_CFD/src/output/output_structure_legacy.cpp b/SU2_CFD/src/output/output_structure_legacy.cpp index 59b76a3aee8d..aca2fa2c602b 100644 --- a/SU2_CFD/src/output/output_structure_legacy.cpp +++ b/SU2_CFD/src/output/output_structure_legacy.cpp @@ -347,7 +347,7 @@ void COutputLegacy::SetConvHistory_Header(ofstream *ConvHist_file, CConfig *conf bool rotating_frame = config->GetRotating_Frame(); bool aeroelastic = config->GetAeroelastic_Simulation(); bool equiv_area = config->GetEquivArea(); - bool buffet = (config->GetBuffet_Monitoring() || config->GetKind_ObjFunc() == BUFFET_SENSOR); + bool buffet = (config->GetViscous() || config->GetKind_Regime() == COMPRESSIBLE); bool engine = ((config->GetnMarker_EngineInflow() != 0) || (config->GetnMarker_EngineExhaust() != 0)); bool actuator_disk = ((config->GetnMarker_ActDiskInlet() != 0) || (config->GetnMarker_ActDiskOutlet() != 0)); bool turbulent = ((config->GetKind_Solver() == RANS) || (config->GetKind_Solver() == ADJ_RANS) || @@ -760,7 +760,7 @@ void COutputLegacy::SetConvHistory_Body(ofstream *ConvHist_file, (config[val_iZone]->GetKind_Solver() == ADJ_NAVIER_STOKES) || (config[val_iZone]->GetKind_Solver() == ADJ_RANS) || (config[val_iZone]->GetKind_Solver() == INC_EULER) || (config[val_iZone]->GetKind_Solver() == INC_NAVIER_STOKES) || (config[val_iZone]->GetKind_Solver() == INC_RANS); - bool buffet = (config[val_iZone]->GetBuffet_Monitoring() || config[val_iZone]->GetKind_ObjFunc() == BUFFET_SENSOR); + bool buffet = (config[val_iZone]->GetViscous() || config[val_iZone]->GetKind_Regime() == COMPRESSIBLE); bool fem = ((config[val_iZone]->GetKind_Solver() == FEM_ELASTICITY) || // FEM structural solver. (config[val_iZone]->GetKind_Solver() == DISC_ADJ_FEM)); diff --git a/SU2_CFD/src/solvers/CEulerSolver.cpp b/SU2_CFD/src/solvers/CEulerSolver.cpp index d05bbfc0bc3a..b48efecbcefb 100644 --- a/SU2_CFD/src/solvers/CEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CEulerSolver.cpp @@ -5573,9 +5573,6 @@ void CEulerSolver::Evaluate_ObjFunc(CConfig *config) { case SURFACE_MACH: Total_ComboObj+=Weight_ObjFunc*config->GetSurface_Mach(0); break; - case TOTAL_AVG_TEMPERATURE: - Total_ComboObj+=Weight_ObjFunc*config->GetSurface_Temperature(0); - break; default: break; } diff --git a/SU2_CFD/src/solvers/CNSSolver.cpp b/SU2_CFD/src/solvers/CNSSolver.cpp index 7ff339bfcfed..b800300348e3 100644 --- a/SU2_CFD/src/solvers/CNSSolver.cpp +++ b/SU2_CFD/src/solvers/CNSSolver.cpp @@ -51,13 +51,9 @@ CNSSolver::CNSSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) /*--- Buffet sensor in all the markers and coefficients ---*/ - if (config->GetBuffet_Monitoring() || config->GetKind_ObjFunc() == BUFFET_SENSOR){ - - Alloc2D(nMarker, nVertex, Buffet_Sensor); - Buffet_Metric = new su2double[nMarker]; - Surface_Buffet_Metric = new su2double[config->GetnMarker_Monitoring()]; - - } + Alloc2D(nMarker, nVertex, Buffet_Sensor); + Buffet_Metric = new su2double[nMarker]; + Surface_Buffet_Metric = new su2double[config->GetnMarker_Monitoring()]; /*--- Read farfield conditions from config ---*/ @@ -304,14 +300,13 @@ void CNSSolver::Viscous_Residual(unsigned long iEdge, CGeometry *geometry, CSolv } -void CNSSolver::Buffet_Monitoring(CGeometry *geometry, CConfig *config) { +void CNSSolver::Buffet_Monitoring(const CGeometry *geometry, const CConfig *config) { unsigned long iVertex; unsigned short Boundary, Monitoring, iMarker, iMarker_Monitoring, iDim; - su2double *Vel_FS = config->GetVelocity_FreeStream(); + const su2double* Vel_FS = Velocity_Inf; su2double VelMag_FS = 0.0, SkinFrictionMag = 0.0, SkinFrictionDot = 0.0, *Normal, Area, Sref = config->GetRefArea(); - su2double k = config->GetBuffet_k(), - lam = config->GetBuffet_lambda(); + su2double k = config->GetBuffet_k(), lam = config->GetBuffet_lambda(); string Marker_Tag, Monitoring_Tag; for (iDim = 0; iDim < nDim; iDim++){ @@ -347,7 +342,7 @@ void CNSSolver::Buffet_Monitoring(CGeometry *geometry, CConfig *config) { SkinFrictionMag = 0.0; SkinFrictionDot = 0.0; for(iDim = 0; iDim < nDim; iDim++){ - SkinFrictionMag += CSkinFriction[iMarker][iDim][iVertex]*CSkinFriction[iMarker][iDim][iVertex]; + SkinFrictionMag += pow(CSkinFriction[iMarker][iDim][iVertex], 2); SkinFrictionDot += CSkinFriction[iMarker][iDim][iVertex]*Vel_FS[iDim]; } SkinFrictionMag = sqrt(SkinFrictionMag); diff --git a/SU2_PY/SU2/io/historyMap.py b/SU2_PY/SU2/io/historyMap.py index 080280e5c530..15a9101cb434 100644 --- a/SU2_PY/SU2/io/historyMap.py +++ b/SU2_PY/SU2/io/historyMap.py @@ -35,50 +35,35 @@ 'GROUP': 'FLOW_COEFF', 'HEADER': 'Avg_Enthalpy', 'TYPE': 'COEFFICIENT'}, - 'AVG_MACH': {'DESCRIPTION': 'Total average mach number on all markers set in ' - 'MARKER_ANALYZE', - 'GROUP': 'FLOW_COEFF', - 'HEADER': 'Avg_Mach', - 'TYPE': 'COEFFICIENT'}, - 'AVG_MASSFLOW': {'DESCRIPTION': 'Total average mass flow on all markers set ' - 'in MARKER_ANALYZE', - 'GROUP': 'FLOW_COEFF', - 'HEADER': 'Avg_Massflow', - 'TYPE': 'COEFFICIENT'}, 'AVG_NORMALVEL': {'DESCRIPTION': 'Total average normal velocity on all ' 'markers set in MARKER_ANALYZE', 'GROUP': 'FLOW_COEFF', 'HEADER': 'Avg_NormalVel', 'TYPE': 'COEFFICIENT'}, - 'AVG_PRESS': {'DESCRIPTION': 'Total average pressure on all markers set in ' - 'MARKER_ANALYZE', - 'GROUP': 'FLOW_COEFF', - 'HEADER': 'Avg_Press', - 'TYPE': 'COEFFICIENT'}, - 'AVG_TEMP': {'DESCRIPTION': 'Total average temperature on all markers set in ' - 'MARKER_ANALYZE', - 'GROUP': 'FLOW_COEFF', - 'HEADER': 'Avg_Temp', - 'TYPE': 'COEFFICIENT'}, 'AVG_TEMPERATURE': {'DESCRIPTION': 'Total average temperature on all surfaces ' 'defined in MARKER_MONITORING', 'GROUP': 'HEAT', 'HEADER': 'AvgTemp', 'TYPE': 'COEFFICIENT'}, - 'AVG_TOTALPRESS': {'DESCRIPTION': 'Total average total pressure on all ' - 'markers set in MARKER_ANALYZE', - 'GROUP': 'FLOW_COEFF', - 'HEADER': 'Avg_TotalPress', - 'TYPE': 'COEFFICIENT'}, - 'AVG_TOTALTEMP': {'DESCRIPTION': 'Total average total temperature all markers ' - 'set in MARKER_ANALYZE', - 'GROUP': 'FLOW_COEFF', - 'HEADER': 'Avg_TotalTemp', - 'TYPE': 'COEFFICIENT'}, 'BGS_ADJ_DENSITY': {'DESCRIPTION': 'BGS residual of the adjoint density.', 'GROUP': 'BGS_RES', 'HEADER': 'bgs[A_Rho]', 'TYPE': 'RESIDUAL'}, + 'BGS_ADJ_DISP_X': {'DESCRIPTION': 'BGS residual of the adjoint X ' + 'displacement.', + 'GROUP': 'BGS_RES', + 'HEADER': 'bgs[A_Ux]', + 'TYPE': 'RESIDUAL'}, + 'BGS_ADJ_DISP_Y': {'DESCRIPTION': 'BGS residual of the adjoint Y ' + 'displacement.', + 'GROUP': 'BGS_RES', + 'HEADER': 'bgs[A_Uy]', + 'TYPE': 'RESIDUAL'}, + 'BGS_ADJ_DISP_Z': {'DESCRIPTION': 'BGS residual of the adjoint Z ' + 'displacement.', + 'GROUP': 'BGS_RES', + 'HEADER': 'bgs[A_Uz]', + 'TYPE': 'RESIDUAL'}, 'BGS_ADJ_DISSIPATION': {'DESCRIPTION': 'BGS residual of the adjoint ' 'dissipation.', 'GROUP': 'BGS_RES', @@ -201,6 +186,10 @@ 'GROUP': 'BGS_RES', 'HEADER': 'bgs[W]', 'TYPE': 'RESIDUAL'}, + 'BUFFET': {'DESCRIPTION': 'Buffet sensor', + 'GROUP': 'AERO_COEFF', + 'HEADER': 'Buffet', + 'TYPE': 'COEFFICIENT'}, 'CFL_NUMBER': {'DESCRIPTION': 'Current value of the CFL number', 'GROUP': 'CFL_NUMBER', 'HEADER': 'CFL number', @@ -222,18 +211,6 @@ 'GROUP': 'COMBO', 'HEADER': 'ComboObj', 'TYPE': 'COEFFICIENT'}, - 'CP_DIFF': {'DESCRIPTION': 'Cp difference for inverse design', - 'GROUP': 'CP_DIFF', - 'HEADER': 'Cp_Diff', - 'TYPE': 'DEFAULT'}, - 'CQ': {'DESCRIPTION': 'CQ', - 'GROUP': 'ROTATING_FRAME', - 'HEADER': 'CQ', - 'TYPE': 'COEFFICIENT'}, - 'CT': {'DESCRIPTION': 'CT', - 'GROUP': 'ROTATING_FRAME', - 'HEADER': 'CT', - 'TYPE': 'COEFFICIENT'}, 'DEFORM_ITER': {'DESCRIPTION': 'Linear solver iterations for the mesh ' 'deformation', 'GROUP': 'DEFORM', @@ -273,54 +250,26 @@ 'GROUP': 'D_FLOW_COEFF', 'HEADER': 'd[Avg_Enthalpy]', 'TYPE': 'D_COEFFICIENT'}, - 'D_AVG_MACH': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_FLOW_COEFF', - 'HEADER': 'd[Avg_Mach]', - 'TYPE': 'D_COEFFICIENT'}, - 'D_AVG_MASSFLOW': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_FLOW_COEFF', - 'HEADER': 'd[Avg_Massflow]', - 'TYPE': 'D_COEFFICIENT'}, 'D_AVG_NORMALVEL': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_FLOW_COEFF', 'HEADER': 'd[Avg_NormalVel]', 'TYPE': 'D_COEFFICIENT'}, - 'D_AVG_PRESS': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_FLOW_COEFF', - 'HEADER': 'd[Avg_Press]', - 'TYPE': 'D_COEFFICIENT'}, - 'D_AVG_TEMP': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_FLOW_COEFF', - 'HEADER': 'd[Avg_Temp]', - 'TYPE': 'D_COEFFICIENT'}, 'D_AVG_TEMPERATURE': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_HEAT', 'HEADER': 'd[AvgTemp]', 'TYPE': 'D_COEFFICIENT'}, - 'D_AVG_TOTALPRESS': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_FLOW_COEFF', - 'HEADER': 'd[Avg_TotalPress]', - 'TYPE': 'D_COEFFICIENT'}, - 'D_AVG_TOTALTEMP': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_FLOW_COEFF', - 'HEADER': 'd[Avg_TotalTemp]', - 'TYPE': 'D_COEFFICIENT'}, + 'D_BUFFET': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_AERO_COEFF', + 'HEADER': 'd[Buffet]', + 'TYPE': 'D_COEFFICIENT'}, 'D_CIRCUMFERENTIAL_DISTORTION': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_ENGINE_OUTPUT', 'HEADER': 'd[Circumferential_Distortion]', 'TYPE': 'D_COEFFICIENT'}, 'D_COMBO': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_COMBO', - 'HEADER': 'd[ComboObj]', + 'HEADER': 'd[ObjFun]', 'TYPE': 'D_COEFFICIENT'}, - 'D_CQ': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_ROTATING_FRAME', - 'HEADER': 'd[CQ]', - 'TYPE': 'D_COEFFICIENT'}, - 'D_CT': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_ROTATING_FRAME', - 'HEADER': 'd[CT]', - 'TYPE': 'D_COEFFICIENT'}, 'D_DELTA_CL': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_FIXED_CL', 'HEADER': 'd[Delta_CL]', @@ -337,6 +286,10 @@ 'GROUP': 'D_EQUIVALENT_AREA', 'HEADER': 'd[CEquiv_Area]', 'TYPE': 'D_COEFFICIENT'}, + 'D_FIGURE_OF_MERIT': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_ROTATING_FRAME', + 'HEADER': 'd[CMerit]', + 'TYPE': 'D_COEFFICIENT'}, 'D_FORCE_X': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_AERO_COEFF', 'HEADER': 'd[CFx]', @@ -349,26 +302,14 @@ 'GROUP': 'D_AERO_COEFF', 'HEADER': 'd[CFz]', 'TYPE': 'D_COEFFICIENT'}, - 'D_HEATFLUX': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_HEAT', - 'HEADER': 'd[HF]', - 'TYPE': 'D_COEFFICIENT'}, - 'D_HEATFLUX_MAX': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_HEAT', - 'HEADER': 'd[MaxHF]', - 'TYPE': 'D_COEFFICIENT'}, 'D_LIFT': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_AERO_COEFF', 'HEADER': 'd[CL]', 'TYPE': 'D_COEFFICIENT'}, - 'D_MERIT': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_ROTATING_FRAME', - 'HEADER': 'd[CMerit]', - 'TYPE': 'D_COEFFICIENT'}, - 'D_MOMENTUM_DISTORTION': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_FLOW_COEFF', - 'HEADER': 'd[Momentum_Distortion]', - 'TYPE': 'D_COEFFICIENT'}, + 'D_MAXIMUM_HEATFLUX': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_HEAT', + 'HEADER': 'd[MaxHF]', + 'TYPE': 'D_COEFFICIENT'}, 'D_MOMENT_X': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_AERO_COEFF', 'HEADER': 'd[CMx]', @@ -385,22 +326,10 @@ 'GROUP': 'D_EQUIVALENT_AREA', 'HEADER': 'd[CNearFieldOF]', 'TYPE': 'D_COEFFICIENT'}, - 'D_PRESSURE_DROP': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_FLOW_COEFF', - 'HEADER': 'd[Pressure_Drop]', - 'TYPE': 'D_COEFFICIENT'}, 'D_RADIAL_DISTORTION': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_ENGINE_OUTPUT', 'HEADER': 'd[Radial_Distortion]', 'TYPE': 'D_COEFFICIENT'}, - 'D_SECONDARY_OVER_UNIFORMITY': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_FLOW_COEFF', - 'HEADER': 'd[Secondary_Over_Uniformity]', - 'TYPE': 'D_COEFFICIENT'}, - 'D_SECONDARY_STRENGTH': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_FLOW_COEFF', - 'HEADER': 'd[Secondary_Strength]', - 'TYPE': 'D_COEFFICIENT'}, 'D_SENS_AOA': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_SENSITIVITY', 'HEADER': 'd[Sens_AoA]', @@ -437,18 +366,62 @@ 'GROUP': 'D_ENGINE_OUTPUT', 'HEADER': 'd[SolidCDrag]', 'TYPE': 'D_COEFFICIENT'}, - 'D_TEMPERATURE': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_HEAT', - 'HEADER': 'd[Temp]', - 'TYPE': 'D_COEFFICIENT'}, + 'D_SURFACE_MACH': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_FLOW_COEFF', + 'HEADER': 'd[Avg_Mach]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_SURFACE_MASSFLOW': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_FLOW_COEFF', + 'HEADER': 'd[Avg_Massflow]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_SURFACE_MOM_DISTORTION': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_FLOW_COEFF', + 'HEADER': 'd[Momentum_Distortion]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_SURFACE_PRESSURE_DROP': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_FLOW_COEFF', + 'HEADER': 'd[Pressure_Drop]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_SURFACE_SECONDARY': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_FLOW_COEFF', + 'HEADER': 'd[Secondary_Strength]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_SURFACE_SECOND_OVER_UNIFORM': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_FLOW_COEFF', + 'HEADER': 'd[Secondary_Over_Uniformity]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_SURFACE_STATIC_PRESSURE': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_FLOW_COEFF', + 'HEADER': 'd[Avg_Press]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_SURFACE_STATIC_TEMPERATURE': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_FLOW_COEFF', + 'HEADER': 'd[Avg_Temp]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_SURFACE_TOTAL_PRESSURE': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_FLOW_COEFF', + 'HEADER': 'd[Avg_TotalPress]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_SURFACE_TOTAL_TEMPERATURE': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_FLOW_COEFF', + 'HEADER': 'd[Avg_TotalTemp]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_SURFACE_UNIFORMITY': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_FLOW_COEFF', + 'HEADER': 'd[Uniformity]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_THRUST': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_ROTATING_FRAME', + 'HEADER': 'd[CT]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_TORQUE': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_ROTATING_FRAME', + 'HEADER': 'd[CQ]', + 'TYPE': 'D_COEFFICIENT'}, 'D_TOTAL_HEATFLUX': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_HEAT', 'HEADER': 'd[HF]', 'TYPE': 'D_COEFFICIENT'}, - 'D_UNIFORMITY': {'DESCRIPTION': 'Derivative value', - 'GROUP': 'D_FLOW_COEFF', - 'HEADER': 'd[Uniformity]', - 'TYPE': 'D_COEFFICIENT'}, 'EFFICIENCY': {'DESCRIPTION': 'Total lift-to-drag ratio on all surfaces set ' 'with MARKER_MONITORING', 'GROUP': 'AERO_COEFF', @@ -458,6 +431,10 @@ 'GROUP': 'EQUIVALENT_AREA', 'HEADER': 'CEquiv_Area', 'TYPE': 'COEFFICIENT'}, + 'FIGURE_OF_MERIT': {'DESCRIPTION': 'Merit', + 'GROUP': 'ROTATING_FRAME', + 'HEADER': 'CMerit', + 'TYPE': 'COEFFICIENT'}, 'FORCE_X': {'DESCRIPTION': 'Total force x-component on all surfaces set with ' 'MARKER_MONITORING', 'GROUP': 'AERO_COEFF', @@ -473,16 +450,10 @@ 'GROUP': 'AERO_COEFF', 'HEADER': 'CFz', 'TYPE': 'COEFFICIENT'}, - 'HEATFLUX': {'DESCRIPTION': 'Total heatflux on all surfaces set with ' - 'MARKER_MONITORING.', - 'GROUP': 'HEAT', - 'HEADER': 'HF', - 'TYPE': 'COEFFICIENT'}, - 'HEATFLUX_MAX': {'DESCRIPTION': 'Total maximal heatflux on all surfaces ' - 'defined in MARKER_MONITORING', - 'GROUP': 'HEAT', - 'HEADER': 'MaxHF', - 'TYPE': 'COEFFICIENT'}, + 'INVERSE_DESIGN_PRESSURE': {'DESCRIPTION': 'Cp difference for inverse design', + 'GROUP': 'CP_DIFF', + 'HEADER': 'Cp_Diff', + 'TYPE': 'DEFAULT'}, 'LIFT': {'DESCRIPTION': 'Total lift coefficient on all surfaces set with ' 'MARKER_MONITORING', 'GROUP': 'AERO_COEFF', @@ -504,6 +475,11 @@ 'GROUP': '', 'HEADER': 'Load_Ramp', 'TYPE': 'DEFAULT'}, + 'MAXIMUM_HEATFLUX': {'DESCRIPTION': 'Total maximal heatflux on all surfaces ' + 'defined in MARKER_MONITORING', + 'GROUP': 'HEAT', + 'HEADER': 'MaxHF', + 'TYPE': 'COEFFICIENT'}, 'MAX_ADJ_DENSITY': {'DESCRIPTION': 'Maximum residual of the adjoint density.', 'GROUP': 'MAX_RES', 'HEADER': 'max[A_Rho]', @@ -628,10 +604,6 @@ 'GROUP': 'MAX_RES', 'HEADER': 'max[W]', 'TYPE': 'RESIDUAL'}, - 'MERIT': {'DESCRIPTION': 'Merit', - 'GROUP': 'ROTATING_FRAME', - 'HEADER': 'CMerit', - 'TYPE': 'COEFFICIENT'}, 'MIN_CFL': {'DESCRIPTION': 'Current minimum of the local CFL numbers', 'GROUP': 'CFL_NUMBER', 'HEADER': 'Min CFL', @@ -640,11 +612,6 @@ 'GROUP': 'CFL_NUMBER', 'HEADER': 'Min DT', 'TYPE': 'DEFAULT'}, - 'MOMENTUM_DISTORTION': {'DESCRIPTION': 'Total momentum distortion on all ' - 'markers set in MARKER_ANALYZE', - 'GROUP': 'FLOW_COEFF', - 'HEADER': 'Momentum_Distortion', - 'TYPE': 'COEFFICIENT'}, 'MOMENT_X': {'DESCRIPTION': 'Total momentum x-component on all surfaces set ' 'with MARKER_MONITORING', 'GROUP': 'AERO_COEFF', @@ -664,11 +631,6 @@ 'GROUP': 'EQUIVALENT_AREA', 'HEADER': 'CNearFieldOF', 'TYPE': 'COEFFICIENT'}, - 'PRESSURE_DROP': {'DESCRIPTION': 'Total pressure drop on all markers set in ' - 'MARKER_ANALYZE', - 'GROUP': 'FLOW_COEFF', - 'HEADER': 'Pressure_Drop', - 'TYPE': 'COEFFICIENT'}, 'PREV_AOA': {'DESCRIPTION': 'Angle of Attack at the previous iteration of the ' 'Fixed CL driver', 'GROUP': 'FIXED_CL', @@ -824,17 +786,6 @@ 'GROUP': 'RMS_RES', 'HEADER': 'rms[V]', 'TYPE': 'RESIDUAL'}, - 'SECONDARY_OVER_UNIFORMITY': {'DESCRIPTION': 'Total secondary over uniformity ' - 'on all markers set in ' - 'MARKER_ANALYZE', - 'GROUP': 'FLOW_COEFF', - 'HEADER': 'Secondary_Over_Uniformity', - 'TYPE': 'COEFFICIENT'}, - 'SECONDARY_STRENGTH': {'DESCRIPTION': 'Total secondary strength on all ' - 'markers set in MARKER_ANALYZE', - 'GROUP': 'FLOW_COEFF', - 'HEADER': 'Secondary_Strength', - 'TYPE': 'COEFFICIENT'}, 'SENS_AOA': {'DESCRIPTION': 'Sensitivity of the objective function with ' 'respect to the angle of attack (only for ' 'compressible solver).', @@ -889,6 +840,64 @@ 'GROUP': 'ENGINE_OUTPUT', 'HEADER': 'SolidCDrag', 'TYPE': 'COEFFICIENT'}, + 'SURFACE_MACH': {'DESCRIPTION': 'Total average mach number on all markers set ' + 'in MARKER_ANALYZE', + 'GROUP': 'FLOW_COEFF', + 'HEADER': 'Avg_Mach', + 'TYPE': 'COEFFICIENT'}, + 'SURFACE_MASSFLOW': {'DESCRIPTION': 'Total average mass flow on all markers ' + 'set in MARKER_ANALYZE', + 'GROUP': 'FLOW_COEFF', + 'HEADER': 'Avg_Massflow', + 'TYPE': 'COEFFICIENT'}, + 'SURFACE_MOM_DISTORTION': {'DESCRIPTION': 'Total momentum distortion on all ' + 'markers set in MARKER_ANALYZE', + 'GROUP': 'FLOW_COEFF', + 'HEADER': 'Momentum_Distortion', + 'TYPE': 'COEFFICIENT'}, + 'SURFACE_PRESSURE_DROP': {'DESCRIPTION': 'Total pressure drop on all markers ' + 'set in MARKER_ANALYZE', + 'GROUP': 'FLOW_COEFF', + 'HEADER': 'Pressure_Drop', + 'TYPE': 'COEFFICIENT'}, + 'SURFACE_SECONDARY': {'DESCRIPTION': 'Total secondary strength on all markers ' + 'set in MARKER_ANALYZE', + 'GROUP': 'FLOW_COEFF', + 'HEADER': 'Secondary_Strength', + 'TYPE': 'COEFFICIENT'}, + 'SURFACE_SECOND_OVER_UNIFORM': {'DESCRIPTION': 'Total secondary over ' + 'uniformity on all markers set ' + 'in MARKER_ANALYZE', + 'GROUP': 'FLOW_COEFF', + 'HEADER': 'Secondary_Over_Uniformity', + 'TYPE': 'COEFFICIENT'}, + 'SURFACE_STATIC_PRESSURE': {'DESCRIPTION': 'Total average pressure on all ' + 'markers set in MARKER_ANALYZE', + 'GROUP': 'FLOW_COEFF', + 'HEADER': 'Avg_Press', + 'TYPE': 'COEFFICIENT'}, + 'SURFACE_STATIC_TEMPERATURE': {'DESCRIPTION': 'Total average temperature on ' + 'all markers set in ' + 'MARKER_ANALYZE', + 'GROUP': 'FLOW_COEFF', + 'HEADER': 'Avg_Temp', + 'TYPE': 'COEFFICIENT'}, + 'SURFACE_TOTAL_PRESSURE': {'DESCRIPTION': 'Total average total pressure on ' + 'all markers set in MARKER_ANALYZE', + 'GROUP': 'FLOW_COEFF', + 'HEADER': 'Avg_TotalPress', + 'TYPE': 'COEFFICIENT'}, + 'SURFACE_TOTAL_TEMPERATURE': {'DESCRIPTION': 'Total average total temperature ' + 'all markers set in ' + 'MARKER_ANALYZE', + 'GROUP': 'FLOW_COEFF', + 'HEADER': 'Avg_TotalTemp', + 'TYPE': 'COEFFICIENT'}, + 'SURFACE_UNIFORMITY': {'DESCRIPTION': 'Total flow uniformity on all markers ' + 'set in MARKER_ANALYZE', + 'GROUP': 'FLOW_COEFF', + 'HEADER': 'Uniformity', + 'TYPE': 'COEFFICIENT'}, 'TAVG_AEROCDRAG': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_ENGINE_OUTPUT', 'HEADER': 'tavg[AeroCDrag]', @@ -901,38 +910,18 @@ 'GROUP': 'TAVG_FLOW_COEFF', 'HEADER': 'tavg[Avg_Enthalpy]', 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_AVG_MACH': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_FLOW_COEFF', - 'HEADER': 'tavg[Avg_Mach]', - 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_AVG_MASSFLOW': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_FLOW_COEFF', - 'HEADER': 'tavg[Avg_Massflow]', - 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_AVG_NORMALVEL': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_FLOW_COEFF', 'HEADER': 'tavg[Avg_NormalVel]', 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_AVG_PRESS': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_FLOW_COEFF', - 'HEADER': 'tavg[Avg_Press]', - 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_AVG_TEMP': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_FLOW_COEFF', - 'HEADER': 'tavg[Avg_Temp]', - 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_AVG_TEMPERATURE': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_HEAT', 'HEADER': 'tavg[AvgTemp]', 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_AVG_TOTALPRESS': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_FLOW_COEFF', - 'HEADER': 'tavg[Avg_TotalPress]', - 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_AVG_TOTALTEMP': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_FLOW_COEFF', - 'HEADER': 'tavg[Avg_TotalTemp]', - 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_BUFFET': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_AERO_COEFF', + 'HEADER': 'tavg[Buffet]', + 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_CIRCUMFERENTIAL_DISTORTION': {'DESCRIPTION': 'weighted time average ' 'value', 'GROUP': 'TAVG_ENGINE_OUTPUT', @@ -940,16 +929,8 @@ 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_COMBO': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_COMBO', - 'HEADER': 'tavg[ComboObj]', + 'HEADER': 'tavg[ObjFun]', 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_CQ': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_ROTATING_FRAME', - 'HEADER': 'tavg[CQ]', - 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_CT': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_ROTATING_FRAME', - 'HEADER': 'tavg[CT]', - 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_DELTA_CL': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_FIXED_CL', 'HEADER': 'tavg[Delta_CL]', @@ -971,43 +952,20 @@ 'GROUP': 'TAVG_D_FLOW_COEFF', 'HEADER': 'dtavg[Avg_Enthalpy]', 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_AVG_MACH': {'DESCRIPTION': 'weighted time average derivative value', - 'GROUP': 'TAVG_D_FLOW_COEFF', - 'HEADER': 'dtavg[Avg_Mach]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_AVG_MASSFLOW': {'DESCRIPTION': 'weighted time average derivative ' - 'value', - 'GROUP': 'TAVG_D_FLOW_COEFF', - 'HEADER': 'dtavg[Avg_Massflow]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_AVG_NORMALVEL': {'DESCRIPTION': 'weighted time average derivative ' 'value', 'GROUP': 'TAVG_D_FLOW_COEFF', 'HEADER': 'dtavg[Avg_NormalVel]', 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_AVG_PRESS': {'DESCRIPTION': 'weighted time average derivative value', - 'GROUP': 'TAVG_D_FLOW_COEFF', - 'HEADER': 'dtavg[Avg_Press]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_AVG_TEMP': {'DESCRIPTION': 'weighted time average derivative value', - 'GROUP': 'TAVG_D_FLOW_COEFF', - 'HEADER': 'dtavg[Avg_Temp]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_AVG_TEMPERATURE': {'DESCRIPTION': 'weighted time average derivative ' 'value', 'GROUP': 'TAVG_D_HEAT', 'HEADER': 'dtavg[AvgTemp]', 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_AVG_TOTALPRESS': {'DESCRIPTION': 'weighted time average derivative ' - 'value', - 'GROUP': 'TAVG_D_FLOW_COEFF', - 'HEADER': 'dtavg[Avg_TotalPress]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_AVG_TOTALTEMP': {'DESCRIPTION': 'weighted time average derivative ' - 'value', - 'GROUP': 'TAVG_D_FLOW_COEFF', - 'HEADER': 'dtavg[Avg_TotalTemp]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_BUFFET': {'DESCRIPTION': 'weighted time average derivative value', + 'GROUP': 'TAVG_D_AERO_COEFF', + 'HEADER': 'dtavg[Buffet]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_CIRCUMFERENTIAL_DISTORTION': {'DESCRIPTION': 'weighted time average ' 'derivative value', 'GROUP': 'TAVG_D_ENGINE_OUTPUT', @@ -1015,16 +973,8 @@ 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_COMBO': {'DESCRIPTION': 'weighted time average derivative value', 'GROUP': 'TAVG_D_COMBO', - 'HEADER': 'dtavg[ComboObj]', + 'HEADER': 'dtavg[ObjFun]', 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_CQ': {'DESCRIPTION': 'weighted time average derivative value', - 'GROUP': 'TAVG_D_ROTATING_FRAME', - 'HEADER': 'dtavg[CQ]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_CT': {'DESCRIPTION': 'weighted time average derivative value', - 'GROUP': 'TAVG_D_ROTATING_FRAME', - 'HEADER': 'dtavg[CT]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_DELTA_CL': {'DESCRIPTION': 'weighted time average derivative value', 'GROUP': 'TAVG_D_FIXED_CL', 'HEADER': 'dtavg[Delta_CL]', @@ -1041,6 +991,11 @@ 'GROUP': 'TAVG_D_EQUIVALENT_AREA', 'HEADER': 'dtavg[CEquiv_Area]', 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_FIGURE_OF_MERIT': {'DESCRIPTION': 'weighted time average derivative ' + 'value', + 'GROUP': 'TAVG_D_ROTATING_FRAME', + 'HEADER': 'dtavg[CMerit]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_FORCE_X': {'DESCRIPTION': 'weighted time average derivative value', 'GROUP': 'TAVG_D_AERO_COEFF', 'HEADER': 'dtavg[CFx]', @@ -1053,28 +1008,15 @@ 'GROUP': 'TAVG_D_AERO_COEFF', 'HEADER': 'dtavg[CFz]', 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_HEATFLUX': {'DESCRIPTION': 'weighted time average derivative value', - 'GROUP': 'TAVG_D_HEAT', - 'HEADER': 'dtavg[HF]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_HEATFLUX_MAX': {'DESCRIPTION': 'weighted time average derivative ' - 'value', - 'GROUP': 'TAVG_D_HEAT', - 'HEADER': 'dtavg[MaxHF]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_LIFT': {'DESCRIPTION': 'weighted time average derivative value', 'GROUP': 'TAVG_D_AERO_COEFF', 'HEADER': 'dtavg[CL]', 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_MERIT': {'DESCRIPTION': 'weighted time average derivative value', - 'GROUP': 'TAVG_D_ROTATING_FRAME', - 'HEADER': 'dtavg[CMerit]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_MOMENTUM_DISTORTION': {'DESCRIPTION': 'weighted time average ' - 'derivative value', - 'GROUP': 'TAVG_D_FLOW_COEFF', - 'HEADER': 'dtavg[Momentum_Distortion]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_MAXIMUM_HEATFLUX': {'DESCRIPTION': 'weighted time average derivative ' + 'value', + 'GROUP': 'TAVG_D_HEAT', + 'HEADER': 'dtavg[MaxHF]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_MOMENT_X': {'DESCRIPTION': 'weighted time average derivative value', 'GROUP': 'TAVG_D_AERO_COEFF', 'HEADER': 'dtavg[CMx]', @@ -1092,26 +1034,11 @@ 'GROUP': 'TAVG_D_EQUIVALENT_AREA', 'HEADER': 'dtavg[CNearFieldOF]', 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_PRESSURE_DROP': {'DESCRIPTION': 'weighted time average derivative ' - 'value', - 'GROUP': 'TAVG_D_FLOW_COEFF', - 'HEADER': 'dtavg[Pressure_Drop]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_RADIAL_DISTORTION': {'DESCRIPTION': 'weighted time average derivative ' 'value', 'GROUP': 'TAVG_D_ENGINE_OUTPUT', 'HEADER': 'dtavg[Radial_Distortion]', 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_SECONDARY_OVER_UNIFORMITY': {'DESCRIPTION': 'weighted time average ' - 'derivative value', - 'GROUP': 'TAVG_D_FLOW_COEFF', - 'HEADER': 'dtavg[Secondary_Over_Uniformity]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_SECONDARY_STRENGTH': {'DESCRIPTION': 'weighted time average ' - 'derivative value', - 'GROUP': 'TAVG_D_FLOW_COEFF', - 'HEADER': 'dtavg[Secondary_Strength]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_SENS_AOA': {'DESCRIPTION': 'weighted time average derivative value', 'GROUP': 'TAVG_D_SENSITIVITY', 'HEADER': 'dtavg[Sens_AoA]', @@ -1149,19 +1076,74 @@ 'GROUP': 'TAVG_D_ENGINE_OUTPUT', 'HEADER': 'dtavg[SolidCDrag]', 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_TEMPERATURE': {'DESCRIPTION': 'weighted time average derivative value', - 'GROUP': 'TAVG_D_HEAT', - 'HEADER': 'dtavg[Temp]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_SURFACE_MACH': {'DESCRIPTION': 'weighted time average derivative ' + 'value', + 'GROUP': 'TAVG_D_FLOW_COEFF', + 'HEADER': 'dtavg[Avg_Mach]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_SURFACE_MASSFLOW': {'DESCRIPTION': 'weighted time average derivative ' + 'value', + 'GROUP': 'TAVG_D_FLOW_COEFF', + 'HEADER': 'dtavg[Avg_Massflow]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_SURFACE_MOM_DISTORTION': {'DESCRIPTION': 'weighted time average ' + 'derivative value', + 'GROUP': 'TAVG_D_FLOW_COEFF', + 'HEADER': 'dtavg[Momentum_Distortion]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_SURFACE_PRESSURE_DROP': {'DESCRIPTION': 'weighted time average ' + 'derivative value', + 'GROUP': 'TAVG_D_FLOW_COEFF', + 'HEADER': 'dtavg[Pressure_Drop]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_SURFACE_SECONDARY': {'DESCRIPTION': 'weighted time average derivative ' + 'value', + 'GROUP': 'TAVG_D_FLOW_COEFF', + 'HEADER': 'dtavg[Secondary_Strength]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_SURFACE_SECOND_OVER_UNIFORM': {'DESCRIPTION': 'weighted time average ' + 'derivative value', + 'GROUP': 'TAVG_D_FLOW_COEFF', + 'HEADER': 'dtavg[Secondary_Over_Uniformity]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_SURFACE_STATIC_PRESSURE': {'DESCRIPTION': 'weighted time average ' + 'derivative value', + 'GROUP': 'TAVG_D_FLOW_COEFF', + 'HEADER': 'dtavg[Avg_Press]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_SURFACE_STATIC_TEMPERATURE': {'DESCRIPTION': 'weighted time average ' + 'derivative value', + 'GROUP': 'TAVG_D_FLOW_COEFF', + 'HEADER': 'dtavg[Avg_Temp]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_SURFACE_TOTAL_PRESSURE': {'DESCRIPTION': 'weighted time average ' + 'derivative value', + 'GROUP': 'TAVG_D_FLOW_COEFF', + 'HEADER': 'dtavg[Avg_TotalPress]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_SURFACE_TOTAL_TEMPERATURE': {'DESCRIPTION': 'weighted time average ' + 'derivative value', + 'GROUP': 'TAVG_D_FLOW_COEFF', + 'HEADER': 'dtavg[Avg_TotalTemp]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_SURFACE_UNIFORMITY': {'DESCRIPTION': 'weighted time average ' + 'derivative value', + 'GROUP': 'TAVG_D_FLOW_COEFF', + 'HEADER': 'dtavg[Uniformity]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_THRUST': {'DESCRIPTION': 'weighted time average derivative value', + 'GROUP': 'TAVG_D_ROTATING_FRAME', + 'HEADER': 'dtavg[CT]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_TORQUE': {'DESCRIPTION': 'weighted time average derivative value', + 'GROUP': 'TAVG_D_ROTATING_FRAME', + 'HEADER': 'dtavg[CQ]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_TOTAL_HEATFLUX': {'DESCRIPTION': 'weighted time average derivative ' 'value', 'GROUP': 'TAVG_D_HEAT', 'HEADER': 'dtavg[HF]', 'TYPE': 'TAVG_D_COEFFICIENT'}, - 'TAVG_D_UNIFORMITY': {'DESCRIPTION': 'weighted time average derivative value', - 'GROUP': 'TAVG_D_FLOW_COEFF', - 'HEADER': 'dtavg[Uniformity]', - 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_EFFICIENCY': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_AERO_COEFF', 'HEADER': 'tavg[CEff]', @@ -1170,6 +1152,10 @@ 'GROUP': 'TAVG_EQUIVALENT_AREA', 'HEADER': 'tavg[CEquiv_Area]', 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_FIGURE_OF_MERIT': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_ROTATING_FRAME', + 'HEADER': 'tavg[CMerit]', + 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_FORCE_X': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_AERO_COEFF', 'HEADER': 'tavg[CFx]', @@ -1182,26 +1168,14 @@ 'GROUP': 'TAVG_AERO_COEFF', 'HEADER': 'tavg[CFz]', 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_HEATFLUX': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_HEAT', - 'HEADER': 'tavg[HF]', - 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_HEATFLUX_MAX': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_HEAT', - 'HEADER': 'tavg[MaxHF]', - 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_LIFT': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_AERO_COEFF', 'HEADER': 'tavg[CL]', 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_MERIT': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_ROTATING_FRAME', - 'HEADER': 'tavg[CMerit]', - 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_MOMENTUM_DISTORTION': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_FLOW_COEFF', - 'HEADER': 'tavg[Momentum_Distortion]', - 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_MAXIMUM_HEATFLUX': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_HEAT', + 'HEADER': 'tavg[MaxHF]', + 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_MOMENT_X': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_AERO_COEFF', 'HEADER': 'tavg[CMx]', @@ -1218,23 +1192,10 @@ 'GROUP': 'TAVG_EQUIVALENT_AREA', 'HEADER': 'tavg[CNearFieldOF]', 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_PRESSURE_DROP': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_FLOW_COEFF', - 'HEADER': 'tavg[Pressure_Drop]', - 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_RADIAL_DISTORTION': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_ENGINE_OUTPUT', 'HEADER': 'tavg[Radial_Distortion]', 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_SECONDARY_OVER_UNIFORMITY': {'DESCRIPTION': 'weighted time average ' - 'value', - 'GROUP': 'TAVG_FLOW_COEFF', - 'HEADER': 'tavg[Secondary_Over_Uniformity]', - 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_SECONDARY_STRENGTH': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_FLOW_COEFF', - 'HEADER': 'tavg[Secondary_Strength]', - 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_SENS_AOA': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_SENSITIVITY', 'HEADER': 'tavg[Sens_AoA]', @@ -1271,33 +1232,78 @@ 'GROUP': 'TAVG_ENGINE_OUTPUT', 'HEADER': 'tavg[SolidCDrag]', 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_TEMPERATURE': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_HEAT', - 'HEADER': 'tavg[Temp]', - 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_SURFACE_MACH': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_FLOW_COEFF', + 'HEADER': 'tavg[Avg_Mach]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_SURFACE_MASSFLOW': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_FLOW_COEFF', + 'HEADER': 'tavg[Avg_Massflow]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_SURFACE_MOM_DISTORTION': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_FLOW_COEFF', + 'HEADER': 'tavg[Momentum_Distortion]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_SURFACE_PRESSURE_DROP': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_FLOW_COEFF', + 'HEADER': 'tavg[Pressure_Drop]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_SURFACE_SECONDARY': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_FLOW_COEFF', + 'HEADER': 'tavg[Secondary_Strength]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_SURFACE_SECOND_OVER_UNIFORM': {'DESCRIPTION': 'weighted time average ' + 'value', + 'GROUP': 'TAVG_FLOW_COEFF', + 'HEADER': 'tavg[Secondary_Over_Uniformity]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_SURFACE_STATIC_PRESSURE': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_FLOW_COEFF', + 'HEADER': 'tavg[Avg_Press]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_SURFACE_STATIC_TEMPERATURE': {'DESCRIPTION': 'weighted time average ' + 'value', + 'GROUP': 'TAVG_FLOW_COEFF', + 'HEADER': 'tavg[Avg_Temp]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_SURFACE_TOTAL_PRESSURE': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_FLOW_COEFF', + 'HEADER': 'tavg[Avg_TotalPress]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_SURFACE_TOTAL_TEMPERATURE': {'DESCRIPTION': 'weighted time average ' + 'value', + 'GROUP': 'TAVG_FLOW_COEFF', + 'HEADER': 'tavg[Avg_TotalTemp]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_SURFACE_UNIFORMITY': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_FLOW_COEFF', + 'HEADER': 'tavg[Uniformity]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_THRUST': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_ROTATING_FRAME', + 'HEADER': 'tavg[CT]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_TORQUE': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_ROTATING_FRAME', + 'HEADER': 'tavg[CQ]', + 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_TOTAL_HEATFLUX': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_HEAT', 'HEADER': 'tavg[HF]', 'TYPE': 'TAVG_COEFFICIENT'}, - 'TAVG_UNIFORMITY': {'DESCRIPTION': 'weighted time average value', - 'GROUP': 'TAVG_FLOW_COEFF', - 'HEADER': 'tavg[Uniformity]', - 'TYPE': 'TAVG_COEFFICIENT'}, - 'TEMPERATURE': {'DESCRIPTION': 'Total avg. temperature on all surfaces set ' - 'with MARKER_MONITORING.', - 'GROUP': 'HEAT', - 'HEADER': 'Temp', - 'TYPE': 'COEFFICIENT'}, + 'THRUST': {'DESCRIPTION': 'CT', + 'GROUP': 'ROTATING_FRAME', + 'HEADER': 'CT', + 'TYPE': 'COEFFICIENT'}, + 'TORQUE': {'DESCRIPTION': 'CQ', + 'GROUP': 'ROTATING_FRAME', + 'HEADER': 'CQ', + 'TYPE': 'COEFFICIENT'}, 'TOTAL_HEATFLUX': {'DESCRIPTION': 'Total heatflux on all surfaces defined in ' 'MARKER_MONITORING', 'GROUP': 'HEAT', 'HEADER': 'HF', 'TYPE': 'COEFFICIENT'}, - 'UNIFORMITY': {'DESCRIPTION': 'Total flow uniformity on all markers set in ' - 'MARKER_ANALYZE', - 'GROUP': 'FLOW_COEFF', - 'HEADER': 'Uniformity', - 'TYPE': 'COEFFICIENT'}, 'VMS': {'DESCRIPTION': 'VMS', 'GROUP': '', 'HEADER': 'VonMises', From 95cc5b1a230bb7ac8a607ef14ac34ee5204e5774 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 18 Jan 2021 11:35:30 +0000 Subject: [PATCH 2/8] fix order of BUFFET and COMBO header in hist map --- SU2_CFD/src/output/CFlowCompOutput.cpp | 16 ++++++++-------- SU2_PY/SU2/io/historyMap.py | 6 +++--- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/SU2_CFD/src/output/CFlowCompOutput.cpp b/SU2_CFD/src/output/CFlowCompOutput.cpp index 813563d79107..5face463a4e4 100644 --- a/SU2_CFD/src/output/CFlowCompOutput.cpp +++ b/SU2_CFD/src/output/CFlowCompOutput.cpp @@ -229,10 +229,6 @@ void CFlowCompOutput::SetHistoryOutputFields(CConfig *config){ AddHistoryOutput("NEARFIELD_OF", "CNearFieldOF", ScreenOutputFormat::SCIENTIFIC, "EQUIVALENT_AREA", "Nearfield obj. function", HistoryFieldType::COEFFICIENT); /// END_GROUP - if (config->GetKind_Solver() == RANS || config->GetKind_Solver() == NAVIER_STOKES){ - AddHistoryOutput("BUFFET", "Buffet", ScreenOutputFormat::SCIENTIFIC, "AERO_COEFF", "Buffet sensor", HistoryFieldType::COEFFICIENT); - } - /// /// BEGIN_GROUP: HEAT_COEFF, DESCRIPTION: Heat coefficients on all surfaces set with MARKER_MONITORING. /// DESCRIPTION: Total heatflux AddHistoryOutput("TOTAL_HEATFLUX", "HF", ScreenOutputFormat::SCIENTIFIC, "HEAT", "Total heatflux on all surfaces set with MARKER_MONITORING.", HistoryFieldType::COEFFICIENT); @@ -275,6 +271,10 @@ void CFlowCompOutput::SetHistoryOutputFields(CConfig *config){ AddAerodynamicCoefficients(config); + if (config->GetKind_Solver() == RANS || config->GetKind_Solver() == NAVIER_STOKES){ + AddHistoryOutput("BUFFET", "Buffet", ScreenOutputFormat::SCIENTIFIC, "AERO_COEFF", "Buffet sensor", HistoryFieldType::COEFFICIENT); + } + /*--- Add Cp diff fields ---*/ Add_CpInverseDesignOutput(config); @@ -664,10 +664,6 @@ void CFlowCompOutput::LoadHistoryData(CConfig *config, CGeometry *geometry, CSol } } - if (config->GetKind_Solver() == RANS || config->GetKind_Solver() == NAVIER_STOKES){ - SetHistoryOutputValue("BUFFET", flow_solver->GetTotal_Buffet_Metric()); - } - SetHistoryOutputValue("TOTAL_HEATFLUX", flow_solver->GetTotal_HeatFlux()); SetHistoryOutputValue("MAXIMUM_HEATFLUX", flow_solver->GetTotal_MaxHeatFlux()); @@ -704,6 +700,10 @@ void CFlowCompOutput::LoadHistoryData(CConfig *config, CGeometry *geometry, CSol SetAerodynamicCoefficients(config, flow_solver); + if (config->GetKind_Solver() == RANS || config->GetKind_Solver() == NAVIER_STOKES){ + SetHistoryOutputValue("BUFFET", flow_solver->GetTotal_Buffet_Metric()); + } + /*--- Set rotating frame coefficients --- */ SetRotatingFrameCoefficients(config, flow_solver); diff --git a/SU2_PY/SU2/io/historyMap.py b/SU2_PY/SU2/io/historyMap.py index 15a9101cb434..ef795d596879 100644 --- a/SU2_PY/SU2/io/historyMap.py +++ b/SU2_PY/SU2/io/historyMap.py @@ -268,7 +268,7 @@ 'TYPE': 'D_COEFFICIENT'}, 'D_COMBO': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_COMBO', - 'HEADER': 'd[ObjFun]', + 'HEADER': 'd[ComboObj]', 'TYPE': 'D_COEFFICIENT'}, 'D_DELTA_CL': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_FIXED_CL', @@ -929,7 +929,7 @@ 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_COMBO': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_COMBO', - 'HEADER': 'tavg[ObjFun]', + 'HEADER': 'tavg[ComboObj]', 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_DELTA_CL': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_FIXED_CL', @@ -973,7 +973,7 @@ 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_COMBO': {'DESCRIPTION': 'weighted time average derivative value', 'GROUP': 'TAVG_D_COMBO', - 'HEADER': 'dtavg[ObjFun]', + 'HEADER': 'dtavg[ComboObj]', 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_DELTA_CL': {'DESCRIPTION': 'weighted time average derivative value', 'GROUP': 'TAVG_D_FIXED_CL', From 7776bef046323603355d302305d4ab1dd858af46 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 18 Jan 2021 12:06:04 +0000 Subject: [PATCH 3/8] structural objective functions in history, delete a lot of unused stuff --- SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp | 13 --- SU2_CFD/include/solvers/CDiscAdjSolver.hpp | 13 --- SU2_CFD/include/solvers/CFEASolver.hpp | 16 ++-- SU2_CFD/include/solvers/CSolver.hpp | 53 ++--------- .../src/drivers/CDiscAdjMultizoneDriver.cpp | 5 +- .../src/drivers/CDiscAdjSinglezoneDriver.cpp | 4 +- .../src/iteration/CDiscAdjFEAIteration.cpp | 8 +- SU2_CFD/src/output/CAdjElasticityOutput.cpp | 4 - SU2_CFD/src/output/CElasticityOutput.cpp | 22 +++-- SU2_CFD/src/solvers/CDiscAdjFEASolver.cpp | 61 ------------- SU2_CFD/src/solvers/CDiscAdjSolver.cpp | 81 ----------------- SU2_CFD/src/solvers/CFEASolver.cpp | 44 +++++----- SU2_PY/SU2/io/historyMap.py | 87 ++++++++++++++++++- 13 files changed, 145 insertions(+), 266 deletions(-) diff --git a/SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp b/SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp index 48ea1e1909c4..797c2237e0a0 100644 --- a/SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp +++ b/SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp @@ -160,12 +160,6 @@ class CDiscAdjFEASolver final : public CSolver { */ void ExtractAdjoint_Solution(CGeometry *geometry, CConfig *config) override; - /*! - * \brief Register the objective function as output. - * \param[in] geometry - The geometrical definition of the problem. - */ - void RegisterObj_Func(CConfig *config) override; - /*! * \brief Set the surface sensitivity. * \param[in] geometry - Geometrical definition of the problem. @@ -180,13 +174,6 @@ class CDiscAdjFEASolver final : public CSolver { */ void SetSensitivity(CGeometry *geometry, CConfig *config, CSolver*) override; - /*! - * \brief Set the objective function. - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] config - Definition of the particular problem. - */ - void SetAdj_ObjFunc(CGeometry *geometry, CConfig* config) override; - /*! * \brief Provide the total Young's modulus sensitivity * \return Value of the total Young's modulus sensitivity diff --git a/SU2_CFD/include/solvers/CDiscAdjSolver.hpp b/SU2_CFD/include/solvers/CDiscAdjSolver.hpp index 52244aafd6cd..4f42850c98c9 100644 --- a/SU2_CFD/include/solvers/CDiscAdjSolver.hpp +++ b/SU2_CFD/include/solvers/CDiscAdjSolver.hpp @@ -140,12 +140,6 @@ class CDiscAdjSolver final : public CSolver { */ void ExtractAdjoint_Geometry(CGeometry *geometry, CConfig *config) override; - /*! - * \brief Register the objective function as output. - * \param[in] geometry - The geometrical definition of the problem. - */ - void RegisterObj_Func(CConfig *config) override; - /*! * \brief Set the surface sensitivity. * \param[in] geometry - Geometrical definition of the problem. @@ -160,13 +154,6 @@ class CDiscAdjSolver final : public CSolver { */ void SetSensitivity(CGeometry *geometry, CConfig *config, CSolver*) override; - /*! - * \brief Set the objective function. - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] config - Definition of the particular problem. - */ - void SetAdj_ObjFunc(CGeometry *geometry, CConfig* config) override; - /*! * \brief Provide the total shape sensitivity coefficient. * \return Value of the geometrical sensitivity coefficient diff --git a/SU2_CFD/include/solvers/CFEASolver.hpp b/SU2_CFD/include/solvers/CFEASolver.hpp index 6602d21ccbba..af2d903b03e2 100644 --- a/SU2_CFD/include/solvers/CFEASolver.hpp +++ b/SU2_CFD/include/solvers/CFEASolver.hpp @@ -67,8 +67,8 @@ class CFEASolver : public CSolver { su2double Total_OFRefGeom; /*!< \brief Total Objective Function: Reference Geometry. */ su2double Total_OFRefNode; /*!< \brief Total Objective Function: Reference Node. */ su2double Total_OFVolFrac; /*!< \brief Total Objective Function: Volume fraction (topology optimization). */ + su2double Total_OFDiscreteness; /*!< \brief Total Objective Function: Discreteness (topology optimization). */ su2double Total_OFCompliance; /*!< \brief Total Objective Function: Compliance (topology optimization). */ - su2double Total_OFCombo = 0.0; /*!< \brief One of the above, for output/history purposes. */ su2double Global_OFRefGeom; /*!< \brief Global Objective Function (added over time steps): Reference Geometry. */ su2double Global_OFRefNode; /*!< \brief Global Objective Function (added over time steps): Reference Node. */ @@ -541,33 +541,29 @@ class CFEASolver : public CSolver { /*! * \brief Retrieve the value of the objective function for a reference geometry - * \param[out] OFRefGeom - value of the objective function. */ inline su2double GetTotal_OFRefGeom(void) const final { return Total_OFRefGeom; } /*! * \brief Retrieve the value of the objective function for a reference node - * \param[out] OFRefNode - value of the objective function. */ inline su2double GetTotal_OFRefNode(void) const final { return Total_OFRefNode; } /*! * \brief Retrieve the value of the volume fraction objective function - * \param[out] OFVolFrac - value of the objective function. */ inline su2double GetTotal_OFVolFrac(void) const final { return Total_OFVolFrac; } /*! - * \brief Retrieve the value of the structural compliance objective function - * \return Value of the objective function. + * \brief Retrieve the value of the discreteness objective function */ - inline su2double GetTotal_OFCompliance(void) const final { return Total_OFCompliance; } + inline su2double GetTotal_OFDiscreteness(void) const final { return Total_OFDiscreteness; } /*! - * \brief Retrieve the value of the combined objective function - * \note For now there is no combination, this is just a seletion. + * \brief Retrieve the value of the structural compliance objective function + * \return Value of the objective function. */ - inline su2double GetTotal_ComboObj(void) const final { return Total_OFCombo; } + inline su2double GetTotal_OFCompliance(void) const final { return Total_OFCompliance; } /*! * \brief Determines whether there is an element-based file or not. diff --git a/SU2_CFD/include/solvers/CSolver.hpp b/SU2_CFD/include/solvers/CSolver.hpp index 37c3ad6c4d6a..c0158fc0c429 100644 --- a/SU2_CFD/include/solvers/CSolver.hpp +++ b/SU2_CFD/include/solvers/CSolver.hpp @@ -2465,6 +2465,11 @@ class CSolver { */ inline virtual su2double GetTotal_OFVolFrac() const { return 0; } + /*! + * \brief Retrieve the value of the discreteness objective function + */ + inline virtual su2double GetTotal_OFDiscreteness() const { return 0; } + /*! * \brief A virtual member. * \return Value of the objective function for the structural compliance. @@ -3630,41 +3635,6 @@ class CSolver { CConfig *config, int val_iter) { } - /*! - * \brief A virtual member. - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] solver_container - Container vector with all the solutions. - * \param[in] numerics - Description of the numerical method. - * \param[in] config - Definition of the particular problem. - */ - inline virtual void RefGeom_Sensitivity(CGeometry *geometry, - CSolver **solver_container, - CConfig *config){ } - - /*! - * \brief A virtual member. - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] solver_container - Container vector with all the solutions. - * \param[in] numerics - Description of the numerical method. - * \param[in] config - Definition of the particular problem. - */ - inline virtual void DE_Sensitivity(CGeometry *geometry, - CSolver **solver_container, - CNumerics **numerics_container, - CConfig *config) { } - - /*! - * \brief A virtual member. - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] solver_container - Container vector with all the solutions. - * \param[in] numerics - Description of the numerical method. - * \param[in] config - Definition of the particular problem. - */ - inline virtual void Stiffness_Sensitivity(CGeometry *geometry, - CSolver **solver_container, - CNumerics **numerics_container, - CConfig *config) { } - /*! * \brief A virtual member. * \param[in] iElem - element parameter. @@ -3777,12 +3747,6 @@ class CSolver { */ inline virtual void ExtractAdjoint_Geometry(CGeometry *geometry, CConfig *config) {} - /*! - * \brief A virtual member - * \param[in] geometry - The geometrical definition of the problem. - */ - inline virtual void RegisterObj_Func(CConfig *config){} - /*! * \brief A virtual member. * \param[in] geometry - Geometrical definition of the problem. @@ -3798,13 +3762,6 @@ class CSolver { */ inline virtual void SetSensitivity(CGeometry *geometry, CConfig *config, CSolver *target_solver = nullptr){ } - /*! - * \brief A virtual member. Extract and set the derivative of objective function. - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] config - Definition of the particular problem. - */ - inline virtual void SetAdj_ObjFunc(CGeometry *geometry, CConfig *config) { } - /*! * \brief A virtual member. * \param[in] Set value of interest: 0 - Initial value, 1 - Current value. diff --git a/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp b/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp index 338b6f58d8b9..f03ce70e7b2e 100644 --- a/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp +++ b/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp @@ -758,10 +758,13 @@ void CDiscAdjMultizoneDriver::SetObjFunction(unsigned short kind_recording) { ObjFunc += solvers[FEA_SOL]->GetTotal_OFCompliance()*Weight_ObjFunc; break; case VOLUME_FRACTION: - case TOPOL_DISCRETENESS: solvers[FEA_SOL]->Compute_OFVolFrac(geometry, config); ObjFunc += solvers[FEA_SOL]->GetTotal_OFVolFrac()*Weight_ObjFunc; break; + case TOPOL_DISCRETENESS: + solvers[FEA_SOL]->Compute_OFVolFrac(geometry, config); + ObjFunc += solvers[FEA_SOL]->GetTotal_OFDiscreteness()*Weight_ObjFunc; + break; default: ObjectiveNotCovered = true; diff --git a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp index 068291318356..4d405d94d10c 100644 --- a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp +++ b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp @@ -436,9 +436,11 @@ void CDiscAdjSinglezoneDriver::SetObjFunction(){ ObjFunc = solver[FEA_SOL]->GetTotal_OFCompliance(); break; case VOLUME_FRACTION: - case TOPOL_DISCRETENESS: ObjFunc = solver[FEA_SOL]->GetTotal_OFVolFrac(); break; + case TOPOL_DISCRETENESS: + ObjFunc = solver[FEA_SOL]->GetTotal_OFDiscreteness(); + break; default: ObjFunc = 0.0; // If the objective function is computed in a different physical problem break; diff --git a/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp b/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp index d889f036b4ce..d87acb2f6e0d 100644 --- a/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp +++ b/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp @@ -401,10 +401,6 @@ void CDiscAdjFEAIteration::RegisterOutput(CSolver***** solver, CGeometry**** geo void CDiscAdjFEAIteration::InitializeAdjoint(CSolver***** solver, CGeometry**** geometry, CConfig** config, unsigned short iZone, unsigned short iInst) { - /*--- Initialize the adjoint of the objective function (typically with 1.0) ---*/ - - solver[iZone][iInst][MESH_0][ADJFEA_SOL]->SetAdj_ObjFunc(geometry[iZone][iInst][MESH_0], config[iZone]); - /*--- Initialize the adjoints the conservative variables ---*/ solver[iZone][iInst][MESH_0][ADJFEA_SOL]->SetAdjoint_Output(geometry[iZone][iInst][MESH_0], config[iZone]); @@ -455,9 +451,11 @@ void CDiscAdjFEAIteration::Postprocess(COutput* output, CIntegration**** integra myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][FEA_SOL]->GetTotal_OFRefNode() << "\t"; break; case VOLUME_FRACTION: - case TOPOL_DISCRETENESS: myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][FEA_SOL]->GetTotal_OFVolFrac() << "\t"; break; + case TOPOL_DISCRETENESS: + myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][FEA_SOL]->GetTotal_OFDiscreteness() << "\t"; + break; case TOPOL_COMPLIANCE: myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][FEA_SOL]->GetTotal_OFCompliance() << "\t"; break; diff --git a/SU2_CFD/src/output/CAdjElasticityOutput.cpp b/SU2_CFD/src/output/CAdjElasticityOutput.cpp index 82e792fddb53..fcee50afc170 100644 --- a/SU2_CFD/src/output/CAdjElasticityOutput.cpp +++ b/SU2_CFD/src/output/CAdjElasticityOutput.cpp @@ -106,8 +106,6 @@ void CAdjElasticityOutput::SetHistoryOutputFields(CConfig *config){ AddHistoryOutput("SENS_E", "Sens[E]", ScreenOutputFormat::SCIENTIFIC, "SENSITIVITY", ""); AddHistoryOutput("SENS_NU","Sens[Nu]", ScreenOutputFormat::SCIENTIFIC, "SENSITIVITY", ""); - AddHistoryOutput("COMBO", "ObjFun", ScreenOutputFormat::SCIENTIFIC, "COMBO", "", HistoryFieldType::COEFFICIENT); - AddHistoryOutput("LINSOL_ITER", "LinSolIter", ScreenOutputFormat::INTEGER, "LINSOL", "Number of iterations of the linear solver."); AddHistoryOutput("LINSOL_RESIDUAL", "LinSolRes", ScreenOutputFormat::FIXED, "LINSOL", "Residual of the linear solver."); @@ -141,8 +139,6 @@ inline void CAdjElasticityOutput::LoadHistoryData(CConfig *config, CGeometry *ge SetHistoryOutputValue("SENS_E", Total_SensE); SetHistoryOutputValue("SENS_NU", Total_SensNu); - SetHistoryOutputValue("COMBO", solver[FEA_SOL]->GetTotal_ComboObj()); - SetHistoryOutputValue("LINSOL_ITER", solver[ADJFEA_SOL]->GetIterLinSolver()); SetHistoryOutputValue("LINSOL_RESIDUAL", log10(solver[ADJFEA_SOL]->GetResLinSolver())); diff --git a/SU2_CFD/src/output/CElasticityOutput.cpp b/SU2_CFD/src/output/CElasticityOutput.cpp index b5a8ae3bd243..179392effc40 100644 --- a/SU2_CFD/src/output/CElasticityOutput.cpp +++ b/SU2_CFD/src/output/CElasticityOutput.cpp @@ -134,7 +134,15 @@ void CElasticityOutput::LoadHistoryData(CConfig *config, CGeometry *geometry, CS SetHistoryOutputValue("LINSOL_ITER", fea_solver->GetIterLinSolver()); SetHistoryOutputValue("LINSOL_RESIDUAL", log10(fea_solver->GetResLinSolver())); - SetHistoryOutputValue("COMBO", fea_solver->GetTotal_ComboObj()); + SetHistoryOutputValue("REFERENCE_NODE", fea_solver->GetTotal_OFRefNode()); + SetHistoryOutputValue("TOPOL_COMPLIANCE", fea_solver->GetTotal_OFCompliance()); + if (config->GetRefGeom()) { + SetHistoryOutputValue("REFERENCE_GEOMETRY", fea_solver->GetTotal_OFRefGeom()); + } + if (config->GetTopology_Optimization()) { + SetHistoryOutputValue("VOLUME_FRACTION", fea_solver->GetTotal_OFVolFrac()); + SetHistoryOutputValue("TOPOL_DISCRETENESS", fea_solver->GetTotal_OFDiscreteness()); + } } @@ -158,10 +166,14 @@ void CElasticityOutput::SetHistoryOutputFields(CConfig *config){ AddHistoryOutput("BGS_DISP_Z", "bgs[DispZ]", ScreenOutputFormat::FIXED, "BGS_RES", "", HistoryFieldType::RESIDUAL); AddHistoryOutput("VMS", "VonMises", ScreenOutputFormat::SCIENTIFIC, "", "VMS"); - AddHistoryOutput("LOAD_INCREMENT", "Load[%]", ScreenOutputFormat::PERCENT, "", "LOAD_INCREMENT"); - AddHistoryOutput("LOAD_RAMP", "Load_Ramp", ScreenOutputFormat::FIXED, "", "LOAD_RAMP"); - - AddHistoryOutput("COMBO", "ObjFun", ScreenOutputFormat::SCIENTIFIC, "COMBO", "", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("LOAD_INCREMENT", "Load[%]", ScreenOutputFormat::PERCENT, "", "LOAD_INCREMENT"); + AddHistoryOutput("LOAD_RAMP", "Load_Ramp",ScreenOutputFormat::FIXED, "", "LOAD_RAMP"); + + AddHistoryOutput("REFERENCE_GEOMETRY", "RefGeom", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("REFERENCE_NODE", "RefNode", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("VOLUME_FRACTION", "VolFrac", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("TOPOL_DISCRETENESS", "TopDisc", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("TOPOL_COMPLIANCE", "TopComp", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); } diff --git a/SU2_CFD/src/solvers/CDiscAdjFEASolver.cpp b/SU2_CFD/src/solvers/CDiscAdjFEASolver.cpp index 1621d22f12f0..fdcb0df49219 100644 --- a/SU2_CFD/src/solvers/CDiscAdjFEASolver.cpp +++ b/SU2_CFD/src/solvers/CDiscAdjFEASolver.cpp @@ -462,67 +462,6 @@ void CDiscAdjFEASolver::RegisterOutput(CGeometry *geometry, CConfig *config){ } -void CDiscAdjFEASolver::RegisterObj_Func(CConfig *config){ - - /*--- Here we can add new (scalar) objective functions ---*/ - - switch (config->GetKind_ObjFunc()){ - case REFERENCE_GEOMETRY: - ObjFunc_Value = direct_solver->GetTotal_OFRefGeom(); - break; - case REFERENCE_NODE: - ObjFunc_Value = direct_solver->GetTotal_OFRefNode(); - break; - case VOLUME_FRACTION: - case TOPOL_DISCRETENESS: - ObjFunc_Value = direct_solver->GetTotal_OFVolFrac(); - break; - case TOPOL_COMPLIANCE: - ObjFunc_Value = direct_solver->GetTotal_OFCompliance(); - break; - default: - ObjFunc_Value = 0.0; // If the objective function is computed in a different physical problem - break; - /*--- Template for new objective functions where TemplateObjFunction() - * is the routine that returns the obj. function value. The computation - * must be done while the tape is active, i.e. between AD::StartRecording() and - * AD::StopRecording() in DiscAdjMeanFlowIteration::Iterate(). The best place is somewhere - * inside MeanFlowIteration::Iterate(). - * - * case TEMPLATE_OBJECTIVE: - * ObjFunc_Value = TemplateObjFunction(); - * break; - * ---*/ - } - if (rank == MASTER_NODE){ - AD::RegisterOutput(ObjFunc_Value); - } -} - - -void CDiscAdjFEASolver::SetAdj_ObjFunc(CGeometry *geometry, CConfig *config){ - - bool dynamic = (config->GetTime_Domain()); - unsigned long IterAvg_Obj = config->GetIter_Avg_Objective(); - unsigned long TimeIter = config->GetTimeIter(); - su2double seeding = 1.0; - - if (dynamic){ - if (TimeIter < IterAvg_Obj){ - seeding = 1.0/((su2double)IterAvg_Obj); - } - else{ - seeding = 0.0; - } - } - - if (rank == MASTER_NODE){ - SU2_TYPE::SetDerivative(ObjFunc_Value, SU2_TYPE::GetValue(seeding)); - } else { - SU2_TYPE::SetDerivative(ObjFunc_Value, 0.0); - } -} - void CDiscAdjFEASolver::ExtractAdjoint_Solution(CGeometry *geometry, CConfig *config){ bool dynamic = config->GetTime_Domain(); diff --git a/SU2_CFD/src/solvers/CDiscAdjSolver.cpp b/SU2_CFD/src/solvers/CDiscAdjSolver.cpp index de7eebe5d27e..de2de7f09c2e 100644 --- a/SU2_CFD/src/solvers/CDiscAdjSolver.cpp +++ b/SU2_CFD/src/solvers/CDiscAdjSolver.cpp @@ -394,87 +394,6 @@ void CDiscAdjSolver::RegisterOutput(CGeometry *geometry, CConfig *config) { direct_solver->GetNodes()->RegisterSolution(input, push_index); } -void CDiscAdjSolver::RegisterObj_Func(CConfig *config) { - - /*--- Here we can add new (scalar) objective functions ---*/ - if (config->GetnObj()==1) { - switch (config->GetKind_ObjFunc()) { - case DRAG_COEFFICIENT: - ObjFunc_Value = direct_solver->GetTotal_CD(); - if (config->GetFixed_CL_Mode()) ObjFunc_Value -= config->GetdCD_dCL() * direct_solver->GetTotal_CL(); - if (config->GetFixed_CM_Mode()) ObjFunc_Value -= config->GetdCD_dCMy() * direct_solver->GetTotal_CMy(); - break; - case LIFT_COEFFICIENT: - ObjFunc_Value = direct_solver->GetTotal_CL(); - break; - case SIDEFORCE_COEFFICIENT: - ObjFunc_Value = direct_solver->GetTotal_CSF(); - break; - case EFFICIENCY: - ObjFunc_Value = direct_solver->GetTotal_CEff(); - break; - case MOMENT_X_COEFFICIENT: - ObjFunc_Value = direct_solver->GetTotal_CMx(); - break; - case MOMENT_Y_COEFFICIENT: - ObjFunc_Value = direct_solver->GetTotal_CMy(); - break; - case MOMENT_Z_COEFFICIENT: - ObjFunc_Value = direct_solver->GetTotal_CMz(); - break; - case EQUIVALENT_AREA: - ObjFunc_Value = direct_solver->GetTotal_CEquivArea(); - break; - case BUFFET_SENSOR: - ObjFunc_Value = direct_solver->GetTotal_Buffet_Metric(); - break; - case TOTAL_HEATFLUX: - ObjFunc_Value = direct_solver->GetTotal_HeatFlux(); - break; - } - - /*--- Template for new objective functions where TemplateObjFunction() - * is the routine that returns the obj. function value. The computation - * must be done while the tape is active, i.e. between AD::StartRecording() and - * AD::StopRecording() in DiscAdjMeanFlowIteration::Iterate(). The best place is somewhere - * inside MeanFlowIteration::Iterate(). - * - * case TEMPLATE_OBJECTIVE: - * ObjFunc_Value = TemplateObjFunction(); - * break; - * ---*/ - } - else{ - ObjFunc_Value = direct_solver->GetTotal_ComboObj(); - } - if (rank == MASTER_NODE) { - AD::RegisterOutput(ObjFunc_Value); - } -} - -void CDiscAdjSolver::SetAdj_ObjFunc(CGeometry *geometry, CConfig *config) { - - bool time_stepping = config->GetTime_Marching() != STEADY; - unsigned long IterAvg_Obj = config->GetIter_Avg_Objective(); - unsigned long TimeIter = config->GetTimeIter(); - su2double seeding = 1.0; - - if (time_stepping) { - if (TimeIter < IterAvg_Obj) { - seeding = 1.0/((su2double)IterAvg_Obj); - } - else { - seeding = 0.0; - } - } - - if (rank == MASTER_NODE) { - SU2_TYPE::SetDerivative(ObjFunc_Value, SU2_TYPE::GetValue(seeding)); - } else { - SU2_TYPE::SetDerivative(ObjFunc_Value, 0.0); - } -} - void CDiscAdjSolver::ExtractAdjoint_Solution(CGeometry *geometry, CConfig *config){ const bool time_n1_needed = config->GetTime_Marching() == DT_STEPPING_2ND; diff --git a/SU2_CFD/src/solvers/CFEASolver.cpp b/SU2_CFD/src/solvers/CFEASolver.cpp index fe10390bf57c..c2aeb865ddec 100644 --- a/SU2_CFD/src/solvers/CFEASolver.cpp +++ b/SU2_CFD/src/solvers/CFEASolver.cpp @@ -194,7 +194,9 @@ CFEASolver::CFEASolver(CGeometry *geometry, CConfig *config) : CSolver() { /*--- Initialize the value of the total objective function ---*/ Total_OFRefGeom = 0.0; Total_OFRefNode = 0.0; - Total_OFVolFrac = 0.0; + Total_OFVolFrac = 1.0; + Total_OFDiscreteness = 0.0; + Total_OFCompliance = 0.0; /*--- Initialize the value of the global objective function ---*/ Global_OFRefGeom = 0.0; @@ -1928,12 +1930,22 @@ void CFEASolver::Postprocessing(CGeometry *geometry, CSolver **solver_container, Stiffness_Penalty(geometry, solver_container, numerics, config); } - switch (kindObjFunc) { - case REFERENCE_GEOMETRY: Compute_OFRefGeom(geometry, config); break; - case REFERENCE_NODE: Compute_OFRefNode(geometry, config); break; - case VOLUME_FRACTION: Compute_OFVolFrac(geometry, config); break; - case TOPOL_DISCRETENESS: Compute_OFVolFrac(geometry, config); break; - case TOPOL_COMPLIANCE: Compute_OFCompliance(geometry, config); break; + if (config->GetDiscrete_Adjoint()) { + /*--- Decide what needs to be computed based on the objective function. ---*/ + switch (kindObjFunc) { + case REFERENCE_GEOMETRY: Compute_OFRefGeom(geometry, config); break; + case REFERENCE_NODE: Compute_OFRefNode(geometry, config); break; + case VOLUME_FRACTION: Compute_OFVolFrac(geometry, config); break; + case TOPOL_DISCRETENESS: Compute_OFVolFrac(geometry, config); break; + case TOPOL_COMPLIANCE: Compute_OFCompliance(geometry, config); break; + } + } + else { + /*--- Compute what we can for monitoring/output. ---*/ + Compute_OFRefNode(geometry, config); + Compute_OFCompliance(geometry, config); + if (config->GetRefGeom()) Compute_OFRefGeom(geometry, config); + if (config->GetTopology_Optimization()) Compute_OFVolFrac(geometry, config); } if (nonlinear_analysis) { @@ -3006,9 +3018,6 @@ void CFEASolver::Compute_OFRefGeom(CGeometry *geometry, const CConfig *config){ Global_OFRefGeom += Total_OFRefGeom; - /*--- To be accessible from the output. ---*/ - Total_OFCombo = Total_OFRefGeom; - /// TODO: Temporary output files for the direct mode. if ((rank == MASTER_NODE) && (config->GetDirectDiff() != NO_DERIVATIVE)) { @@ -3052,9 +3061,6 @@ void CFEASolver::Compute_OFRefNode(CGeometry *geometry, const CConfig *config){ Global_OFRefNode += Total_OFRefNode; - /*--- To be accessible from the output. ---*/ - Total_OFCombo = Total_OFRefNode; - /// TODO: Temporary output files for the direct mode. if ((rank == MASTER_NODE) && (config->GetDirectDiff() != NO_DERIVATIVE)) { @@ -3109,13 +3115,8 @@ void CFEASolver::Compute_OFVolFrac(CGeometry *geometry, const CConfig *config) SU2_MPI::Allreduce(&discreteness,&tmp,1,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD); discreteness = tmp; - if (config->GetKind_ObjFunc() == TOPOL_DISCRETENESS) - Total_OFVolFrac = discreteness/total_volume; - else - Total_OFVolFrac = integral/total_volume; - - /*--- To be accessible from the output. ---*/ - Total_OFCombo = Total_OFVolFrac; + Total_OFDiscreteness = discreteness/total_volume; + Total_OFVolFrac = integral/total_volume; } @@ -3169,9 +3170,6 @@ void CFEASolver::Compute_OFCompliance(CGeometry *geometry, const CConfig *config SU2_MPI::Allreduce(&compliance, &Total_OFCompliance, 1,MPI_DOUBLE,MPI_SUM,MPI_COMM_WORLD); - /*--- To be accessible from the output. ---*/ - Total_OFCombo = Total_OFCompliance; - } void CFEASolver::Stiffness_Penalty(CGeometry *geometry, CSolver **solver, CNumerics **numerics, CConfig *config){ diff --git a/SU2_PY/SU2/io/historyMap.py b/SU2_PY/SU2/io/historyMap.py index ef795d596879..157218eaeaaf 100644 --- a/SU2_PY/SU2/io/historyMap.py +++ b/SU2_PY/SU2/io/historyMap.py @@ -330,6 +330,14 @@ 'GROUP': 'D_ENGINE_OUTPUT', 'HEADER': 'd[Radial_Distortion]', 'TYPE': 'D_COEFFICIENT'}, + 'D_REFERENCE_GEOMETRY': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_STRUCT_COEFF', + 'HEADER': 'd[RefGeom]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_REFERENCE_NODE': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_STRUCT_COEFF', + 'HEADER': 'd[RefNode]', + 'TYPE': 'D_COEFFICIENT'}, 'D_SENS_AOA': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_SENSITIVITY', 'HEADER': 'd[Sens_AoA]', @@ -414,6 +422,14 @@ 'GROUP': 'D_ROTATING_FRAME', 'HEADER': 'd[CT]', 'TYPE': 'D_COEFFICIENT'}, + 'D_TOPOL_COMPLIANCE': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_STRUCT_COEFF', + 'HEADER': 'd[TopComp]', + 'TYPE': 'D_COEFFICIENT'}, + 'D_TOPOL_DISCRETENESS': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_STRUCT_COEFF', + 'HEADER': 'd[TopDisc]', + 'TYPE': 'D_COEFFICIENT'}, 'D_TORQUE': {'DESCRIPTION': 'Derivative value', 'GROUP': 'D_ROTATING_FRAME', 'HEADER': 'd[CQ]', @@ -422,6 +438,10 @@ 'GROUP': 'D_HEAT', 'HEADER': 'd[HF]', 'TYPE': 'D_COEFFICIENT'}, + 'D_VOLUME_FRACTION': {'DESCRIPTION': 'Derivative value', + 'GROUP': 'D_STRUCT_COEFF', + 'HEADER': 'd[VolFrac]', + 'TYPE': 'D_COEFFICIENT'}, 'EFFICIENCY': {'DESCRIPTION': 'Total lift-to-drag ratio on all surfaces set ' 'with MARKER_MONITORING', 'GROUP': 'AERO_COEFF', @@ -640,6 +660,14 @@ 'GROUP': 'ENGINE_OUTPUT', 'HEADER': 'Radial_Distortion', 'TYPE': 'COEFFICIENT'}, + 'REFERENCE_GEOMETRY': {'DESCRIPTION': '', + 'GROUP': 'STRUCT_COEFF', + 'HEADER': 'RefGeom', + 'TYPE': 'COEFFICIENT'}, + 'REFERENCE_NODE': {'DESCRIPTION': '', + 'GROUP': 'STRUCT_COEFF', + 'HEADER': 'RefNode', + 'TYPE': 'COEFFICIENT'}, 'RMS_ADJ_DENSITY': {'DESCRIPTION': 'Root-mean square residual of the adjoint ' 'density.', 'GROUP': 'RMS_RES', @@ -1039,6 +1067,16 @@ 'GROUP': 'TAVG_D_ENGINE_OUTPUT', 'HEADER': 'dtavg[Radial_Distortion]', 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_REFERENCE_GEOMETRY': {'DESCRIPTION': 'weighted time average ' + 'derivative value', + 'GROUP': 'TAVG_D_STRUCT_COEFF', + 'HEADER': 'dtavg[RefGeom]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_REFERENCE_NODE': {'DESCRIPTION': 'weighted time average derivative ' + 'value', + 'GROUP': 'TAVG_D_STRUCT_COEFF', + 'HEADER': 'dtavg[RefNode]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_SENS_AOA': {'DESCRIPTION': 'weighted time average derivative value', 'GROUP': 'TAVG_D_SENSITIVITY', 'HEADER': 'dtavg[Sens_AoA]', @@ -1135,6 +1173,16 @@ 'GROUP': 'TAVG_D_ROTATING_FRAME', 'HEADER': 'dtavg[CT]', 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_TOPOL_COMPLIANCE': {'DESCRIPTION': 'weighted time average derivative ' + 'value', + 'GROUP': 'TAVG_D_STRUCT_COEFF', + 'HEADER': 'dtavg[TopComp]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_TOPOL_DISCRETENESS': {'DESCRIPTION': 'weighted time average ' + 'derivative value', + 'GROUP': 'TAVG_D_STRUCT_COEFF', + 'HEADER': 'dtavg[TopDisc]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_D_TORQUE': {'DESCRIPTION': 'weighted time average derivative value', 'GROUP': 'TAVG_D_ROTATING_FRAME', 'HEADER': 'dtavg[CQ]', @@ -1144,6 +1192,11 @@ 'GROUP': 'TAVG_D_HEAT', 'HEADER': 'dtavg[HF]', 'TYPE': 'TAVG_D_COEFFICIENT'}, + 'TAVG_D_VOLUME_FRACTION': {'DESCRIPTION': 'weighted time average derivative ' + 'value', + 'GROUP': 'TAVG_D_STRUCT_COEFF', + 'HEADER': 'dtavg[VolFrac]', + 'TYPE': 'TAVG_D_COEFFICIENT'}, 'TAVG_EFFICIENCY': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_AERO_COEFF', 'HEADER': 'tavg[CEff]', @@ -1196,6 +1249,14 @@ 'GROUP': 'TAVG_ENGINE_OUTPUT', 'HEADER': 'tavg[Radial_Distortion]', 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_REFERENCE_GEOMETRY': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_STRUCT_COEFF', + 'HEADER': 'tavg[RefGeom]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_REFERENCE_NODE': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_STRUCT_COEFF', + 'HEADER': 'tavg[RefNode]', + 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_SENS_AOA': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_SENSITIVITY', 'HEADER': 'tavg[Sens_AoA]', @@ -1283,6 +1344,14 @@ 'GROUP': 'TAVG_ROTATING_FRAME', 'HEADER': 'tavg[CT]', 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_TOPOL_COMPLIANCE': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_STRUCT_COEFF', + 'HEADER': 'tavg[TopComp]', + 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_TOPOL_DISCRETENESS': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_STRUCT_COEFF', + 'HEADER': 'tavg[TopDisc]', + 'TYPE': 'TAVG_COEFFICIENT'}, 'TAVG_TORQUE': {'DESCRIPTION': 'weighted time average value', 'GROUP': 'TAVG_ROTATING_FRAME', 'HEADER': 'tavg[CQ]', @@ -1291,10 +1360,22 @@ 'GROUP': 'TAVG_HEAT', 'HEADER': 'tavg[HF]', 'TYPE': 'TAVG_COEFFICIENT'}, + 'TAVG_VOLUME_FRACTION': {'DESCRIPTION': 'weighted time average value', + 'GROUP': 'TAVG_STRUCT_COEFF', + 'HEADER': 'tavg[VolFrac]', + 'TYPE': 'TAVG_COEFFICIENT'}, 'THRUST': {'DESCRIPTION': 'CT', 'GROUP': 'ROTATING_FRAME', 'HEADER': 'CT', 'TYPE': 'COEFFICIENT'}, + 'TOPOL_COMPLIANCE': {'DESCRIPTION': '', + 'GROUP': 'STRUCT_COEFF', + 'HEADER': 'TopComp', + 'TYPE': 'COEFFICIENT'}, + 'TOPOL_DISCRETENESS': {'DESCRIPTION': '', + 'GROUP': 'STRUCT_COEFF', + 'HEADER': 'TopDisc', + 'TYPE': 'COEFFICIENT'}, 'TORQUE': {'DESCRIPTION': 'CQ', 'GROUP': 'ROTATING_FRAME', 'HEADER': 'CQ', @@ -1307,4 +1388,8 @@ 'VMS': {'DESCRIPTION': 'VMS', 'GROUP': '', 'HEADER': 'VonMises', - 'TYPE': 'DEFAULT'}} + 'TYPE': 'DEFAULT'}, + 'VOLUME_FRACTION': {'DESCRIPTION': '', + 'GROUP': 'STRUCT_COEFF', + 'HEADER': 'VolFrac', + 'TYPE': 'COEFFICIENT'}} From 609e362e1cc65126459a6ff68972088b5eeb1bd3 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 18 Jan 2021 16:48:55 +0000 Subject: [PATCH 4/8] fix FEA examples --- SU2_CFD/src/output/CElasticityOutput.cpp | 15 ++++++----- SU2_PY/topology_optimization.py | 27 ++++++++++++------- TestCases/fea_fsi/MixElemsKnowles/config.cfg | 5 ++-- .../fea_topology/quick_start/settings.cfg | 2 +- .../quick_start/settings_compliance.cfg | 1 - .../quick_start/settings_volfrac.cfg | 1 - 6 files changed, 30 insertions(+), 21 deletions(-) diff --git a/SU2_CFD/src/output/CElasticityOutput.cpp b/SU2_CFD/src/output/CElasticityOutput.cpp index 179392effc40..0f7408b01166 100644 --- a/SU2_CFD/src/output/CElasticityOutput.cpp +++ b/SU2_CFD/src/output/CElasticityOutput.cpp @@ -169,12 +169,15 @@ void CElasticityOutput::SetHistoryOutputFields(CConfig *config){ AddHistoryOutput("LOAD_INCREMENT", "Load[%]", ScreenOutputFormat::PERCENT, "", "LOAD_INCREMENT"); AddHistoryOutput("LOAD_RAMP", "Load_Ramp",ScreenOutputFormat::FIXED, "", "LOAD_RAMP"); - AddHistoryOutput("REFERENCE_GEOMETRY", "RefGeom", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); - AddHistoryOutput("REFERENCE_NODE", "RefNode", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); - AddHistoryOutput("VOLUME_FRACTION", "VolFrac", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); - AddHistoryOutput("TOPOL_DISCRETENESS", "TopDisc", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); - AddHistoryOutput("TOPOL_COMPLIANCE", "TopComp", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); - + AddHistoryOutput("REFERENCE_NODE", "RefNode", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("TOPOL_COMPLIANCE", "TopComp", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); + if (config->GetRefGeom()) { + AddHistoryOutput("REFERENCE_GEOMETRY", "RefGeom", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); + } + if (config->GetTopology_Optimization()) { + AddHistoryOutput("VOLUME_FRACTION", "VolFrac", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); + AddHistoryOutput("TOPOL_DISCRETENESS", "TopDisc", ScreenOutputFormat::SCIENTIFIC, "STRUCT_COEFF", "", HistoryFieldType::COEFFICIENT); + } } void CElasticityOutput::LoadVolumeData(CConfig *config, CGeometry *geometry, CSolver **solver, unsigned long iPoint){ diff --git a/SU2_PY/topology_optimization.py b/SU2_PY/topology_optimization.py index 6bb590c5deca..d7ac5e492ca2 100755 --- a/SU2_PY/topology_optimization.py +++ b/SU2_PY/topology_optimization.py @@ -122,7 +122,12 @@ def obj_val(self,x): try: sp.call(self._objValCommand,shell=True) - fid = open(self._objValFile,"r"); val = float(fid.readlines()[1]); fid.close() + with open(self._objValFile,"r") as fid: + lines = fid.readlines() + for col,name in enumerate(lines[0].split(",")): + if "TopComp" in name: + val = float(lines[1].split(",")[col]) + break # the return code of mpirun is useless, we test the value of the function self._assert_isfinite(val) except: @@ -161,15 +166,13 @@ def obj_der(self,x): def con_val(self,x): # inputs written in obj_val_driver - # clear previous output and run solver - try: os.remove(self._conValFile) - except: pass - try: os.remove(self._conDerFile) - except: pass - try: - sp.call(self._conDerCommand,shell=True) - fid = open(self._conValFile,"r"); val = float(fid.readlines()[1]); fid.close() + with open(self._conValFile,"r") as fid: + lines = fid.readlines() + for col,name in enumerate(lines[0].split(",")): + if "VolFrac" in name: + val = float(lines[1].split(",")[col]) + break self._assert_isfinite(val) except: raise RuntimeError("Constraint function evaluation failed") @@ -181,12 +184,16 @@ def con_val(self,x): def con_der(self,x): # inputs written in obj_val_driver - # adjoint solver already ran + # clear previous output and run solver + try: os.remove(self._conDerFile) + except: pass N = x.shape[0] y = np.ndarray((N,)) # read result try: + sp.call(self._conDerCommand,shell=True) + fid = open(self._conDerFile,"r"); lines = fid.readlines(); fid.close() for i in range(N): val = float(lines[i][0:-1]) diff --git a/TestCases/fea_fsi/MixElemsKnowles/config.cfg b/TestCases/fea_fsi/MixElemsKnowles/config.cfg index d9fe420e0643..e233aa718f05 100644 --- a/TestCases/fea_fsi/MixElemsKnowles/config.cfg +++ b/TestCases/fea_fsi/MixElemsKnowles/config.cfg @@ -4,7 +4,7 @@ % Case description: Tip-loaded 3D cantilever beam, mix of element types, % % nonlinear elasticity with Knowles material model. % % Institution: Imperial College London % -% File Version 7.0.8 "Blackbird" % +% File Version 7.0.8 "Blackbird" % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -51,4 +51,5 @@ TABULAR_FORMAT= CSV RESTART_SOL= YES SOLUTION_FILENAME= solution_structure.dat -SCREEN_OUTPUT=(INNER_ITER, RMS_UTOL, RMS_RTOL, RMS_ETOL, COMBO, VMS) +HISTORY_OUTPUT= (ITER, RMS_RES, STRUCT_COEFF) +SCREEN_OUTPUT=(INNER_ITER, RMS_UTOL, RMS_RTOL, RMS_ETOL, REFERENCE_NODE, VMS) diff --git a/TestCases/fea_topology/quick_start/settings.cfg b/TestCases/fea_topology/quick_start/settings.cfg index e1ce988d48d3..44d8b3eafaff 100644 --- a/TestCases/fea_topology/quick_start/settings.cfg +++ b/TestCases/fea_topology/quick_start/settings.cfg @@ -46,4 +46,4 @@ TABULAR_FORMAT= CSV SOLUTION_FILENAME= direct.dat RESTART_FILENAME= direct.dat OUTPUT_FILES= RESTART, PARAVIEW -HISTORY_OUTPUT= COMBO +HISTORY_OUTPUT= STRUCT_COEFF diff --git a/TestCases/fea_topology/quick_start/settings_compliance.cfg b/TestCases/fea_topology/quick_start/settings_compliance.cfg index 6c7df4e5f55b..a535068f4bf2 100644 --- a/TestCases/fea_topology/quick_start/settings_compliance.cfg +++ b/TestCases/fea_topology/quick_start/settings_compliance.cfg @@ -48,5 +48,4 @@ TABULAR_FORMAT= CSV SOLUTION_FILENAME= direct.dat RESTART_FILENAME= direct.dat OUTPUT_FILES= PARAVIEW -HISTORY_OUTPUT= COMBO diff --git a/TestCases/fea_topology/quick_start/settings_volfrac.cfg b/TestCases/fea_topology/quick_start/settings_volfrac.cfg index 96dc122c3f66..2319a83c0410 100644 --- a/TestCases/fea_topology/quick_start/settings_volfrac.cfg +++ b/TestCases/fea_topology/quick_start/settings_volfrac.cfg @@ -48,5 +48,4 @@ TABULAR_FORMAT= CSV SOLUTION_FILENAME= direct.dat RESTART_FILENAME= direct.dat OUTPUT_FILES= PARAVIEW -HISTORY_OUTPUT= COMBO From 7932a508151d8c7095c3db1b3b5b567bd15b3ab6 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 18 Jan 2021 20:41:59 +0000 Subject: [PATCH 5/8] encapsulate OF computation and selection of the FEA solver --- SU2_CFD/include/solvers/CEulerSolver.hpp | 2 +- SU2_CFD/include/solvers/CFEASolver.hpp | 116 ++++++++++-------- SU2_CFD/include/solvers/CIncEulerSolver.hpp | 7 -- SU2_CFD/include/solvers/CNSSolver.hpp | 2 +- SU2_CFD/include/solvers/CSolver.hpp | 43 +------ .../src/drivers/CDiscAdjMultizoneDriver.cpp | 51 +------- .../src/drivers/CDiscAdjSinglezoneDriver.cpp | 23 +--- .../integration/CStructuralIntegration.cpp | 4 +- .../src/iteration/CDiscAdjFEAIteration.cpp | 21 +--- SU2_CFD/src/solvers/CEulerSolver.cpp | 2 +- SU2_CFD/src/solvers/CFEASolver.cpp | 32 ++--- SU2_CFD/src/solvers/CIncEulerSolver.cpp | 21 ---- SU2_CFD/src/solvers/CNSSolver.cpp | 2 +- 13 files changed, 102 insertions(+), 224 deletions(-) diff --git a/SU2_CFD/include/solvers/CEulerSolver.hpp b/SU2_CFD/include/solvers/CEulerSolver.hpp index f7f6af0ce5e8..5a28b6c2e783 100644 --- a/SU2_CFD/include/solvers/CEulerSolver.hpp +++ b/SU2_CFD/include/solvers/CEulerSolver.hpp @@ -474,7 +474,7 @@ class CEulerSolver : public CFVMFlowSolverBase { * \brief Compute weighted-sum "combo" objective output * \param[in] config - Definition of the particular problem. */ - void Evaluate_ObjFunc(CConfig *config) override; + void Evaluate_ObjFunc(const CConfig *config) override; /*! * \brief Impose the far-field boundary condition using characteristics. diff --git a/SU2_CFD/include/solvers/CFEASolver.hpp b/SU2_CFD/include/solvers/CFEASolver.hpp index af2d903b03e2..8556b14259a7 100644 --- a/SU2_CFD/include/solvers/CFEASolver.hpp +++ b/SU2_CFD/include/solvers/CFEASolver.hpp @@ -69,6 +69,7 @@ class CFEASolver : public CSolver { su2double Total_OFVolFrac; /*!< \brief Total Objective Function: Volume fraction (topology optimization). */ su2double Total_OFDiscreteness; /*!< \brief Total Objective Function: Discreteness (topology optimization). */ su2double Total_OFCompliance; /*!< \brief Total Objective Function: Compliance (topology optimization). */ + su2double ObjFunc; su2double Global_OFRefGeom; /*!< \brief Global Objective Function (added over time steps): Reference Geometry. */ su2double Global_OFRefNode; /*!< \brief Global Objective Function (added over time steps): Reference Node. */ @@ -198,6 +199,34 @@ class CFEASolver : public CSolver { su2double der, su2double der_avg) const; + /*! + * \brief Compute the objective function for a reference geometry + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] config - Definition of the particular problem. + */ + void Compute_OFRefGeom(CGeometry *geometry, const CConfig *config); + + /*! + * \brief Compute the objective function for a reference node + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] config - Definition of the particular problem. + */ + void Compute_OFRefNode(CGeometry *geometry, const CConfig *config); + + /*! + * \brief Compute the objective function for a volume fraction + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] config - Definition of the particular problem. + */ + void Compute_OFVolFrac(CGeometry *geometry, const CConfig *config); + + /*! + * \brief Compute the compliance objective function + * \param[in] geometry - Geometrical definition of the problem. + * \param[in] config - Definition of the particular problem. + */ + void Compute_OFCompliance(CGeometry *geometry, const CConfig *config); + public: /*! * \brief Constructor of the class. @@ -245,20 +274,6 @@ class CFEASolver : public CSolver { CConfig *config, unsigned long TimeIter) override; - /*! - * \brief Compute the time step for solving the FEM equations. - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] solver_container - Container vector with all the solutions. - * \param[in] config - Definition of the particular problem. - * \param[in] iMesh - Index of the mesh in multigrid computations. - * \param[in] Iteration - Index of the current iteration. - */ - inline void SetTime_Step(CGeometry *geometry, - CSolver **solver_container, - CConfig *config, - unsigned short iMesh, - unsigned long Iteration) override { } - /*! * \brief Get the value of the reference coordinate to set on the element structure. * \param[in] geometry - Geometrical definition of the problem. @@ -508,15 +523,14 @@ class CFEASolver : public CSolver { /*! * \brief Postprocessing. * \param[in] geometry - Geometrical definition of the problem. - * \param[in] solver_container - Container vector with all the solutions. * \param[in] config - Definition of the particular problem. - * \param[in] iMesh - Index of the mesh in multigrid computations. + * \param[in] numerics - Implementation of numerical method. + * \param[in] of_comp_mode - Mode to compute just the objective function. */ - void Postprocessing(CGeometry *geometry, - CSolver **solver_container, - CConfig *config, - CNumerics **numerics, - unsigned short iMesh) final; + inline void Postprocessing(CGeometry *geometry, + CConfig *config, + CNumerics **numerics, + bool of_comp_mode) final; /*! * \brief Routine to solve the Jacobian-Residual linearized system. @@ -565,6 +579,36 @@ class CFEASolver : public CSolver { */ inline su2double GetTotal_OFCompliance(void) const final { return Total_OFCompliance; } + /*! + * \brief Compute the objective function. + * \param[in] config - Definition of the problem. + */ + inline void Evaluate_ObjFunc(const CConfig *config) final { + ObjFunc = 0.0; + switch (config->GetKind_ObjFunc()) { + case REFERENCE_GEOMETRY: + ObjFunc = GetTotal_OFRefGeom(); + break; + case REFERENCE_NODE: + ObjFunc = GetTotal_OFRefNode(); + break; + case TOPOL_COMPLIANCE: + ObjFunc = GetTotal_OFCompliance(); + break; + case VOLUME_FRACTION: + ObjFunc = GetTotal_OFVolFrac(); + break; + case TOPOL_DISCRETENESS: + ObjFunc = GetTotal_OFDiscreteness(); + break; + } + } + + /*! + * \brief Provide the total "combo" objective (weighted sum of other values). + */ + inline su2double GetTotal_ComboObj() const final { return ObjFunc; } + /*! * \brief Determines whether there is an element-based file or not. * \return Bool that defines whether the solution has an element-based file or not @@ -652,43 +696,13 @@ class CFEASolver : public CSolver { */ void SetAitken_Relaxation(CGeometry *geometry, CConfig *config) final; - /*! - * \brief Compute the objective function for a reference geometry - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] config - Definition of the particular problem. - */ - void Compute_OFRefGeom(CGeometry *geometry, const CConfig *config) final; - - /*! - * \brief Compute the objective function for a reference node - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] config - Definition of the particular problem. - */ - void Compute_OFRefNode(CGeometry *geometry, const CConfig *config) final; - - /*! - * \brief Compute the objective function for a volume fraction - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] config - Definition of the particular problem. - */ - void Compute_OFVolFrac(CGeometry *geometry, const CConfig *config) final; - - /*! - * \brief Compute the compliance objective function - * \param[in] geometry - Geometrical definition of the problem. - * \param[in] config - Definition of the particular problem. - */ - void Compute_OFCompliance(CGeometry *geometry, const CConfig *config) final; - /*! * \brief Compute the penalty due to the stiffness increase * \param[in] geometry - Geometrical definition of the problem. - * \param[in] solver_container - Container vector with all the solutions. * \param[in] numerics - Description of the numerical method. * \param[in] config - Definition of the particular problem. */ void Stiffness_Penalty(CGeometry *geometry, - CSolver **solver_container, CNumerics **numerics_container, CConfig *config); diff --git a/SU2_CFD/include/solvers/CIncEulerSolver.hpp b/SU2_CFD/include/solvers/CIncEulerSolver.hpp index e53a7072a795..c41e28c34f69 100644 --- a/SU2_CFD/include/solvers/CIncEulerSolver.hpp +++ b/SU2_CFD/include/solvers/CIncEulerSolver.hpp @@ -213,13 +213,6 @@ class CIncEulerSolver : public CFVMFlowSolverBaseHeat_Fluxes(geometry, solvers, config); break; + + case DISC_ADJ_FEM: + solvers[FEA_SOL]->Postprocessing(geometry, config, numerics_container[iZone][INST_0][MESH_0][FEA_SOL], true); + break; } } @@ -693,14 +697,9 @@ void CDiscAdjMultizoneDriver::SetObjFunction(unsigned short kind_recording) { auto config = config_container[iZone]; auto solvers = solver_container[iZone][INST_0][MESH_0]; - auto geometry = geometry_container[iZone][INST_0][MESH_0]; - - /*--- Not-per-surface objective functions (shall not be included above) ---*/ const auto Weight_ObjFunc = config->GetWeight_ObjFunc(0); - bool ObjectiveNotCovered = false; - switch (config->GetKind_Solver()) { case DISC_ADJ_EULER: case DISC_ADJ_NAVIER_STOKES: case DISC_ADJ_RANS: @@ -717,67 +716,29 @@ void CDiscAdjMultizoneDriver::SetObjFunction(unsigned short kind_recording) { } } ObjFunc += val*Weight_ObjFunc; - - /*--- This is not ideal... ---*/ - ObjectiveNotCovered = (val==0.0); break; } case DISC_ADJ_HEAT: { switch(config->GetKind_ObjFunc()) { - - // Not yet covered by new output structure. Be careful these use MARKER_MONITORING. - case TOTAL_HEATFLUX: ObjFunc += solvers[HEAT_SOL]->GetTotal_HeatFlux()*Weight_ObjFunc; break; case AVG_TEMPERATURE: ObjFunc += solvers[HEAT_SOL]->GetTotal_AvgTemperature()*Weight_ObjFunc; break; - - default: - ObjectiveNotCovered = true; - break; } break; } case DISC_ADJ_FEM: { - switch(config->GetKind_ObjFunc()) { - - case REFERENCE_NODE: - solvers[FEA_SOL]->Compute_OFRefNode(geometry, config); - ObjFunc += solvers[FEA_SOL]->GetTotal_OFRefNode()*Weight_ObjFunc; - break; - case REFERENCE_GEOMETRY: - solvers[FEA_SOL]->Compute_OFRefGeom(geometry, config); - ObjFunc += solvers[FEA_SOL]->GetTotal_OFRefGeom()*Weight_ObjFunc; - break; - case TOPOL_COMPLIANCE: - solvers[FEA_SOL]->Compute_OFCompliance(geometry, config); - ObjFunc += solvers[FEA_SOL]->GetTotal_OFCompliance()*Weight_ObjFunc; - break; - case VOLUME_FRACTION: - solvers[FEA_SOL]->Compute_OFVolFrac(geometry, config); - ObjFunc += solvers[FEA_SOL]->GetTotal_OFVolFrac()*Weight_ObjFunc; - break; - case TOPOL_DISCRETENESS: - solvers[FEA_SOL]->Compute_OFVolFrac(geometry, config); - ObjFunc += solvers[FEA_SOL]->GetTotal_OFDiscreteness()*Weight_ObjFunc; - break; - - default: - ObjectiveNotCovered = true; - break; - } + solvers[FEA_SOL]->Evaluate_ObjFunc(config); + ObjFunc += solvers[FEA_SOL]->GetTotal_ComboObj()*Weight_ObjFunc; break; } default: break; } - - if (ObjectiveNotCovered && (rank == MASTER_NODE) && (kind_recording == SOLUTION_VARIABLES)) - cout << " Objective function not covered in Zone " << iZone << endl; } if (rank == MASTER_NODE) { diff --git a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp index 4d405d94d10c..a77d7a2a3484 100644 --- a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp +++ b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp @@ -425,26 +425,9 @@ void CDiscAdjSinglezoneDriver::SetObjFunction(){ break; case DISC_ADJ_FEM: - switch (config->GetKind_ObjFunc()){ - case REFERENCE_GEOMETRY: - ObjFunc = solver[FEA_SOL]->GetTotal_OFRefGeom(); - break; - case REFERENCE_NODE: - ObjFunc = solver[FEA_SOL]->GetTotal_OFRefNode(); - break; - case TOPOL_COMPLIANCE: - ObjFunc = solver[FEA_SOL]->GetTotal_OFCompliance(); - break; - case VOLUME_FRACTION: - ObjFunc = solver[FEA_SOL]->GetTotal_OFVolFrac(); - break; - case TOPOL_DISCRETENESS: - ObjFunc = solver[FEA_SOL]->GetTotal_OFDiscreteness(); - break; - default: - ObjFunc = 0.0; // If the objective function is computed in a different physical problem - break; - } + solver[FEA_SOL]->Postprocessing(geometry, config, numerics_container[ZONE_0][INST_0][MESH_0][FEA_SOL], true); + solver[FEA_SOL]->Evaluate_ObjFunc(config); + ObjFunc = solver[FEA_SOL]->GetTotal_ComboObj(); break; } diff --git a/SU2_CFD/src/integration/CStructuralIntegration.cpp b/SU2_CFD/src/integration/CStructuralIntegration.cpp index f366e77513b9..a2c7b9304e8a 100644 --- a/SU2_CFD/src/integration/CStructuralIntegration.cpp +++ b/SU2_CFD/src/integration/CStructuralIntegration.cpp @@ -62,10 +62,8 @@ void CStructuralIntegration::Structural_Iteration(CGeometry ****geometry, CSolve RunTime_EqSystem); solver->Postprocessing(geometry[iZone][iInst][MESH_0], - solver_container[iZone][iInst][MESH_0], config[iZone], - numerics_container[iZone][iInst][MESH_0][SolContainer_Position], - MESH_0); + numerics_container[iZone][iInst][MESH_0][SolContainer_Position]); } void CStructuralIntegration::Space_Integration_FEM(CGeometry *geometry, CSolver **solver_container, diff --git a/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp b/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp index d87acb2f6e0d..37418e7fd881 100644 --- a/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp +++ b/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp @@ -443,23 +443,8 @@ void CDiscAdjFEAIteration::Postprocess(COutput* output, CIntegration**** integra myfile_res << config[val_iZone]->GetTimeIter() << "\t"; - switch (config[val_iZone]->GetKind_ObjFunc()) { - case REFERENCE_GEOMETRY: - myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][FEA_SOL]->GetTotal_OFRefGeom() << "\t"; - break; - case REFERENCE_NODE: - myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][FEA_SOL]->GetTotal_OFRefNode() << "\t"; - break; - case VOLUME_FRACTION: - myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][FEA_SOL]->GetTotal_OFVolFrac() << "\t"; - break; - case TOPOL_DISCRETENESS: - myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][FEA_SOL]->GetTotal_OFDiscreteness() << "\t"; - break; - case TOPOL_COMPLIANCE: - myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][FEA_SOL]->GetTotal_OFCompliance() << "\t"; - break; - } + solver[val_iZone][val_iInst][MESH_0][FEA_SOL]->Evaluate_ObjFunc(config[val_iZone]); + myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][FEA_SOL]->GetTotal_ComboObj() << "\t"; for (iVar = 0; iVar < config[val_iZone]->GetnElasticityMod(); iVar++) myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][ADJFEA_SOL]->GetTotal_Sens_E(iVar) << "\t"; @@ -469,13 +454,11 @@ void CDiscAdjFEAIteration::Postprocess(COutput* output, CIntegration**** integra for (iVar = 0; iVar < config[val_iZone]->GetnMaterialDensity(); iVar++) myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][ADJFEA_SOL]->GetTotal_Sens_Rho(iVar) << "\t"; } - if (de_effects) { for (iVar = 0; iVar < config[val_iZone]->GetnElectric_Field(); iVar++) myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][ADJFEA_SOL]->GetTotal_Sens_EField(iVar) << "\t"; } - for (iVar = 0; iVar < solver[val_iZone][val_iInst][MESH_0][ADJFEA_SOL]->GetnDVFEA(); iVar++) { myfile_res << scientific << solver[val_iZone][val_iInst][MESH_0][ADJFEA_SOL]->GetTotal_Sens_DVFEA(iVar) << "\t"; } diff --git a/SU2_CFD/src/solvers/CEulerSolver.cpp b/SU2_CFD/src/solvers/CEulerSolver.cpp index b48efecbcefb..73806f978d92 100644 --- a/SU2_CFD/src/solvers/CEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CEulerSolver.cpp @@ -5522,7 +5522,7 @@ void CEulerSolver::UpdateCustomBoundaryConditions(CGeometry **geometry_container } } -void CEulerSolver::Evaluate_ObjFunc(CConfig *config) { +void CEulerSolver::Evaluate_ObjFunc(const CConfig *config) { unsigned short iMarker_Monitoring, Kind_ObjFunc; su2double Weight_ObjFunc; diff --git a/SU2_CFD/src/solvers/CFEASolver.cpp b/SU2_CFD/src/solvers/CFEASolver.cpp index c2aeb865ddec..fbe658436f48 100644 --- a/SU2_CFD/src/solvers/CFEASolver.cpp +++ b/SU2_CFD/src/solvers/CFEASolver.cpp @@ -1911,27 +1911,19 @@ CSysVector computeLinearResidual(const CSysMatrix& A, return r; } -void CFEASolver::Postprocessing(CGeometry *geometry, CSolver **solver_container, - CConfig *config, CNumerics **numerics, unsigned short iMesh) { +void CFEASolver::Postprocessing(CGeometry *geometry, CConfig *config, CNumerics **numerics, bool of_comp_mode) { - const bool nonlinear_analysis = (config->GetGeometricConditions() == LARGE_DEFORMATIONS); - - /*--- Compute stresses for monitoring and output. ---*/ - - Compute_NodalStress(geometry, numerics, config); - - /*--- Compute the objective function to be able to monitor it. ---*/ + /*--- Compute the objective function. ---*/ const auto kindObjFunc = config->GetKind_ObjFunc(); if (((kindObjFunc == REFERENCE_GEOMETRY) || (kindObjFunc == REFERENCE_NODE)) && ((config->GetDV_FEA() == YOUNG_MODULUS) || (config->GetDV_FEA() == DENSITY_VAL))) { - Stiffness_Penalty(geometry, solver_container, numerics, config); + Stiffness_Penalty(geometry, numerics, config); } - if (config->GetDiscrete_Adjoint()) { - /*--- Decide what needs to be computed based on the objective function. ---*/ + if (of_comp_mode) { switch (kindObjFunc) { case REFERENCE_GEOMETRY: Compute_OFRefGeom(geometry, config); break; case REFERENCE_NODE: Compute_OFRefNode(geometry, config); break; @@ -1939,16 +1931,24 @@ void CFEASolver::Postprocessing(CGeometry *geometry, CSolver **solver_container, case TOPOL_DISCRETENESS: Compute_OFVolFrac(geometry, config); break; case TOPOL_COMPLIANCE: Compute_OFCompliance(geometry, config); break; } + return; } - else { - /*--- Compute what we can for monitoring/output. ---*/ + + if (!config->GetDiscrete_Adjoint()) { + /*--- Compute stresses for monitoring and output. ---*/ + Compute_NodalStress(geometry, numerics, config); + + /*--- Compute functions for monitoring and output. ---*/ Compute_OFRefNode(geometry, config); Compute_OFCompliance(geometry, config); if (config->GetRefGeom()) Compute_OFRefGeom(geometry, config); if (config->GetTopology_Optimization()) Compute_OFVolFrac(geometry, config); } - if (nonlinear_analysis) { + /*--- Residuals do not have to be computed while recording. ---*/ + if (config->GetDiscrete_Adjoint() && AD::TapeActive()) return; + + if (config->GetGeometricConditions() == LARGE_DEFORMATIONS) { /*--- For nonlinear analysis we have 3 convergence criteria: ---*/ /*--- UTOL = norm(Delta_U(k)): ABSOLUTE, norm of the incremental displacements ---*/ @@ -3172,7 +3172,7 @@ void CFEASolver::Compute_OFCompliance(CGeometry *geometry, const CConfig *config } -void CFEASolver::Stiffness_Penalty(CGeometry *geometry, CSolver **solver, CNumerics **numerics, CConfig *config){ +void CFEASolver::Stiffness_Penalty(CGeometry *geometry, CNumerics **numerics, CConfig *config){ if (config->GetTotalDV_Penalty() == 0.0) { /*--- No need to go into expensive computations. ---*/ diff --git a/SU2_CFD/src/solvers/CIncEulerSolver.cpp b/SU2_CFD/src/solvers/CIncEulerSolver.cpp index 50c62b0635b6..06063ba959a5 100644 --- a/SU2_CFD/src/solvers/CIncEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CIncEulerSolver.cpp @@ -2189,27 +2189,6 @@ void CIncEulerSolver::ImplicitEuler_Iteration(CGeometry *geometry, CSolver **sol } -void CIncEulerSolver::Evaluate_ObjFunc(CConfig *config) { - - Total_ComboObj = EvaluateCommonObjFunc(*config); - - /*--- The following are not per-surface, and so to avoid that they are - double-counted when multiple surfaces are specified, they have been - placed outside of the loop above. In addition, multi-objective mode is - also disabled for these objective functions (error thrown at start). ---*/ - - const auto Weight_ObjFunc = config->GetWeight_ObjFunc(0); - const auto Kind_ObjFunc = config->GetKind_ObjFunc(0); - - switch(Kind_ObjFunc) { - case SURFACE_PRESSURE_DROP: - Total_ComboObj+=Weight_ObjFunc*config->GetSurface_PressureDrop(0); - break; - default: - break; - } -} - void CIncEulerSolver::SetBeta_Parameter(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh) { diff --git a/SU2_CFD/src/solvers/CNSSolver.cpp b/SU2_CFD/src/solvers/CNSSolver.cpp index b800300348e3..a648c30c47c2 100644 --- a/SU2_CFD/src/solvers/CNSSolver.cpp +++ b/SU2_CFD/src/solvers/CNSSolver.cpp @@ -409,7 +409,7 @@ void CNSSolver::Buffet_Monitoring(const CGeometry *geometry, const CConfig *conf } -void CNSSolver::Evaluate_ObjFunc(CConfig *config) { +void CNSSolver::Evaluate_ObjFunc(const CConfig *config) { unsigned short iMarker_Monitoring, Kind_ObjFunc; su2double Weight_ObjFunc; From e099ca25f7598ae4121ca39b9190b683faa54e25 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 18 Jan 2021 21:10:58 +0000 Subject: [PATCH 6/8] small fix --- SU2_CFD/include/solvers/CFEASolver.hpp | 5 +---- SU2_CFD/src/solvers/CFEASolver.cpp | 11 +++++------ 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/SU2_CFD/include/solvers/CFEASolver.hpp b/SU2_CFD/include/solvers/CFEASolver.hpp index 8556b14259a7..31ec0790bad5 100644 --- a/SU2_CFD/include/solvers/CFEASolver.hpp +++ b/SU2_CFD/include/solvers/CFEASolver.hpp @@ -527,10 +527,7 @@ class CFEASolver : public CSolver { * \param[in] numerics - Implementation of numerical method. * \param[in] of_comp_mode - Mode to compute just the objective function. */ - inline void Postprocessing(CGeometry *geometry, - CConfig *config, - CNumerics **numerics, - bool of_comp_mode) final; + void Postprocessing(CGeometry *geometry, CConfig *config, CNumerics **numerics, bool of_comp_mode) final; /*! * \brief Routine to solve the Jacobian-Residual linearized system. diff --git a/SU2_CFD/src/solvers/CFEASolver.cpp b/SU2_CFD/src/solvers/CFEASolver.cpp index fbe658436f48..f9afa46d1651 100644 --- a/SU2_CFD/src/solvers/CFEASolver.cpp +++ b/SU2_CFD/src/solvers/CFEASolver.cpp @@ -1916,14 +1916,12 @@ void CFEASolver::Postprocessing(CGeometry *geometry, CConfig *config, CNumerics /*--- Compute the objective function. ---*/ const auto kindObjFunc = config->GetKind_ObjFunc(); - - if (((kindObjFunc == REFERENCE_GEOMETRY) || (kindObjFunc == REFERENCE_NODE)) && - ((config->GetDV_FEA() == YOUNG_MODULUS) || (config->GetDV_FEA() == DENSITY_VAL))) { - - Stiffness_Penalty(geometry, numerics, config); - } + const bool penalty = ((kindObjFunc == REFERENCE_GEOMETRY) || (kindObjFunc == REFERENCE_NODE)) && + ((config->GetDV_FEA() == YOUNG_MODULUS) || (config->GetDV_FEA() == DENSITY_VAL)); if (of_comp_mode) { + if (penalty) Stiffness_Penalty(geometry, numerics, config); + switch (kindObjFunc) { case REFERENCE_GEOMETRY: Compute_OFRefGeom(geometry, config); break; case REFERENCE_NODE: Compute_OFRefNode(geometry, config); break; @@ -1939,6 +1937,7 @@ void CFEASolver::Postprocessing(CGeometry *geometry, CConfig *config, CNumerics Compute_NodalStress(geometry, numerics, config); /*--- Compute functions for monitoring and output. ---*/ + if (penalty) Stiffness_Penalty(geometry, numerics, config); Compute_OFRefNode(geometry, config); Compute_OFCompliance(geometry, config); if (config->GetRefGeom()) Compute_OFRefGeom(geometry, config); From 164bb5d3489ee12889d5390ac0e3565d99fed9f1 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 18 Jan 2021 23:30:31 +0000 Subject: [PATCH 7/8] deleted too much --- SU2_CFD/include/solvers/CIncEulerSolver.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/SU2_CFD/include/solvers/CIncEulerSolver.hpp b/SU2_CFD/include/solvers/CIncEulerSolver.hpp index c41e28c34f69..45a8db4b36ee 100644 --- a/SU2_CFD/include/solvers/CIncEulerSolver.hpp +++ b/SU2_CFD/include/solvers/CIncEulerSolver.hpp @@ -213,6 +213,15 @@ class CIncEulerSolver : public CFVMFlowSolverBase Date: Wed, 20 Jan 2021 11:23:49 +0000 Subject: [PATCH 8/8] remove a few HAVE_MPI's, address more than a few compiler warnings --- .../src/grid_movement/CVolumetricMovement.cpp | 7 ++++++- .../include/numerics/NEMO/NEMO_diffusion.hpp | 13 +++++-------- SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp | 1 - SU2_CFD/include/solvers/CDiscAdjMeshSolver.hpp | 1 - SU2_CFD/include/solvers/CDiscAdjSolver.hpp | 1 - .../include/variables/CNEMOEulerVariable.hpp | 16 ++++++++-------- SU2_CFD/src/SU2_CFD.cpp | 4 ---- SU2_CFD/src/solvers/CNEMOEulerSolver.cpp | 17 +++++++++-------- SU2_DEF/src/SU2_DEF.cpp | 7 ------- SU2_DOT/src/SU2_DOT.cpp | 14 ++------------ SU2_GEO/src/SU2_GEO.cpp | 7 ------- SU2_SOL/src/SU2_SOL.cpp | 7 ------- UnitTests/test_driver.cpp | 4 ---- 13 files changed, 30 insertions(+), 69 deletions(-) diff --git a/Common/src/grid_movement/CVolumetricMovement.cpp b/Common/src/grid_movement/CVolumetricMovement.cpp index 68b35eb613a1..0fb747fe1ab8 100644 --- a/Common/src/grid_movement/CVolumetricMovement.cpp +++ b/Common/src/grid_movement/CVolumetricMovement.cpp @@ -353,7 +353,7 @@ void CVolumetricMovement::ComputenNonconvexElements(CGeometry *geometry, bool Sc nNonconvexElements++; } } - } else { + } else if (false) { /*--- 3D elements ---*/ unsigned short iNode, iFace, nFaceNodes; @@ -371,6 +371,8 @@ void CVolumetricMovement::ComputenNonconvexElements(CGeometry *geometry, bool Sc face_point_i = geometry->elem[iElem]->GetNode(geometry->elem[iElem]->GetFaces(iFace, iNode)); + /// TODO: Faces may have up to 4 nodes, not all posibilities are covered + if (iNode == 0) { face_point_j = geometry->elem[iElem]->GetNode(geometry->elem[iElem]->GetFaces(iFace, nFaceNodes-1)); face_point_k = geometry->elem[iElem]->GetNode(geometry->elem[iElem]->GetFaces(iFace, iNode+1)); @@ -391,6 +393,9 @@ void CVolumetricMovement::ComputenNonconvexElements(CGeometry *geometry, bool Sc /*--- Calculate cross product of edge vectors and its length---*/ su2double crossProduct[3]; GeometryToolbox::CrossProduct(edgeVector_i, edgeVector_j, crossProduct); + + /// TODO: This logic is incorrect, the norm will never be less than 0 + crossProductLength = GeometryToolbox::Norm(nDim, crossProduct); /*--- Check if length is minimum or maximum ---*/ diff --git a/SU2_CFD/include/numerics/NEMO/NEMO_diffusion.hpp b/SU2_CFD/include/numerics/NEMO/NEMO_diffusion.hpp index b4048cbeccab..7f91243a70c3 100644 --- a/SU2_CFD/include/numerics/NEMO/NEMO_diffusion.hpp +++ b/SU2_CFD/include/numerics/NEMO/NEMO_diffusion.hpp @@ -38,8 +38,8 @@ */ class CAvgGrad_NEMO : public CNEMONumerics { private: - unsigned short iDim, iVar; /*!< \brief Iterators in dimension an variable. */ - su2double *Mean_PrimVar, /*!< \brief Mean primitive variables. */ + unsigned short iVar; /*!< \brief Iterators in dimension an variable. */ + su2double *Mean_PrimVar, /*!< \brief Mean primitive variables. */ *Mean_U, **Mean_GU, *Mean_dTdU, @@ -54,9 +54,8 @@ class CAvgGrad_NEMO : public CNEMONumerics { Mean_Eddy_Viscosity, /*!< \brief Mean value of the eddy viscosity. */ Mean_Thermal_Conductivity, /*!< \brief Mean value of the thermal conductivity. */ Mean_Thermal_Conductivity_ve, /*!< \brief Mean value of the vib-el. thermal conductivity. */ - *ProjFlux, /*!< \brief Projection of the viscous fluxes. */ dist_ij; /*!< \brief Length of the edge and face. */ - + public: /*! @@ -109,13 +108,11 @@ class CAvgGradCorrected_NEMO : public CNEMONumerics { Mean_Eddy_Viscosity, /*!< \brief Mean value of the eddy viscosity. */ Mean_Thermal_Conductivity, /*!< \brief Mean value of the thermal conductivity. */ Mean_Thermal_Conductivity_ve, /*!< \brief Mean value of the vib-el. thermal conductivity. */ - - *ProjFlux, /*!< \brief Projection of the viscous fluxes. */ dist_ij; /*!< \brief Length of the edge and face. */ bool implicit; /*!< \brief Implicit calculus. */ su2double* Flux = nullptr; /*!< \brief The flux / residual across the edge. */ - + public: /*! @@ -142,5 +139,5 @@ class CAvgGradCorrected_NEMO : public CNEMONumerics { * \param[in] config - Definition of the particular problem. */ ResidualType<> ComputeResidual(const CConfig* config) final; - + }; diff --git a/SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp b/SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp index 797c2237e0a0..91091a65b52e 100644 --- a/SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp +++ b/SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp @@ -48,7 +48,6 @@ class CDiscAdjFEASolver final : public CSolver { su2double *Solution_Vel = nullptr, /*!< \brief Velocity componenent of the solution. */ *Solution_Accel = nullptr; /*!< \brief Acceleration componenent of the solution. */ - su2double ObjFunc_Value = 0.0; /*!< \brief Value of the objective function. */ su2double *normalLoads = nullptr; /*!< \brief Values of the normal loads for each marker iMarker_nL. */ unsigned short nMPROP = 0; /*!< \brief Number of material properties */ diff --git a/SU2_CFD/include/solvers/CDiscAdjMeshSolver.hpp b/SU2_CFD/include/solvers/CDiscAdjMeshSolver.hpp index 1d926e81ab21..ae3216b705b1 100644 --- a/SU2_CFD/include/solvers/CDiscAdjMeshSolver.hpp +++ b/SU2_CFD/include/solvers/CDiscAdjMeshSolver.hpp @@ -39,7 +39,6 @@ */ class CDiscAdjMeshSolver final : public CSolver { private: - unsigned short KindDirect_Solver = 0; CSolver *direct_solver = nullptr; CDiscAdjMeshBoundVariable* nodes = nullptr; /*!< \brief Variables of the discrete adjoint mesh solver. */ diff --git a/SU2_CFD/include/solvers/CDiscAdjSolver.hpp b/SU2_CFD/include/solvers/CDiscAdjSolver.hpp index 4f42850c98c9..6b60189c7d97 100644 --- a/SU2_CFD/include/solvers/CDiscAdjSolver.hpp +++ b/SU2_CFD/include/solvers/CDiscAdjSolver.hpp @@ -49,7 +49,6 @@ class CDiscAdjSolver final : public CSolver { su2double Total_Sens_BPress; /*!< \brief Total sensitivity to outlet pressure. */ su2double Total_Sens_Density; /*!< \brief Total sensitivity to initial density (incompressible). */ su2double Total_Sens_ModVel; /*!< \brief Total sensitivity to inlet velocity (incompressible). */ - su2double ObjFunc_Value; /*!< \brief Value of the objective function. */ su2double Mach, Alpha, Beta, Pressure, Temperature, BPressure, ModVel; su2double TemperatureRad, Total_Sens_Temp_Rad; diff --git a/SU2_CFD/include/variables/CNEMOEulerVariable.hpp b/SU2_CFD/include/variables/CNEMOEulerVariable.hpp index 702fb993eeab..bacbd4008e4c 100644 --- a/SU2_CFD/include/variables/CNEMOEulerVariable.hpp +++ b/SU2_CFD/include/variables/CNEMOEulerVariable.hpp @@ -45,23 +45,23 @@ class CNEMOEulerVariable : public CVariable { bool ionization; /*!< \brief Presence of charged species in gas mixture. */ bool monoatomic = false; /*!< \brief Presence of single species gas. */ - + VectorType Velocity2; /*!< \brief Square of the velocity vector. */ MatrixType Precond_Beta; /*!< \brief Low Mach number preconditioner value, Beta. */ CVectorOfMatrix& Gradient_Reconstruction; /*!< \brief Reference to the gradient of the conservative variables for MUSCL reconstruction for the convective term */ CVectorOfMatrix Gradient_Aux; /*!< \brief Auxiliary structure to store a second gradient for reconstruction, if required. */ - + /*--- Primitive variable definition ---*/ MatrixType Primitive; /*!< \brief Primitive variables (rhos_s, T, Tve, ...) in compressible flows. */ MatrixType Primitive_Aux; /*!< \brief Primitive auxiliary variables (Y_s, T, Tve, ...) in compressible flows. */ CVectorOfMatrix Gradient_Primitive; /*!< \brief Gradient of the primitive variables (rhos_s, T, Tve, ...). */ MatrixType Limiter_Primitive; /*!< \brief Limiter of the primitive variables (rhos_s, T, Tve, ...). */ - + /*--- Secondary variable definition ---*/ MatrixType Secondary; /*!< \brief Primitive variables (T, vx, vy, vz, P, rho, h, c) in compressible flows. */ CVectorOfMatrix Gradient_Secondary; /*!< \brief Gradient of the primitive variables (T, vx, vy, vz, P, rho). */ - + /*--- New solution container for Classical RK4 ---*/ MatrixType Solution_New; /*!< \brief New solution container for Classical RK4. */ @@ -72,11 +72,11 @@ class CNEMOEulerVariable : public CVariable { MatrixType eves; /*!< \brief energy of vib-el mode w.r.t. species. */ MatrixType Cvves; /*!< \brief Specific heat of vib-el mode w.r.t. species. */ VectorType Gamma; /*!< \brief Ratio of specific heats. */ - + CNEMOGas *fluidmodel; /*!< \brief Index definition for NEMO pritimive variables. */ - unsigned long RHOS_INDEX, T_INDEX, TVE_INDEX, VEL_INDEX, P_INDEX, + unsigned long RHOS_INDEX, T_INDEX, TVE_INDEX, VEL_INDEX, P_INDEX, RHO_INDEX, H_INDEX, A_INDEX, RHOCVTR_INDEX, RHOCVVE_INDEX, LAM_VISC_INDEX, EDDY_VISC_INDEX, nSpecies; @@ -513,7 +513,7 @@ class CNEMOEulerVariable : public CVariable { * \param[in] val_Species - Index of species s. * \return Value of the mass fraction of species s. */ - inline su2double GetMassFraction(unsigned long iPoint, unsigned short val_Species) const { + inline su2double GetMassFraction(unsigned long iPoint, unsigned long val_Species) const override { return Primitive(iPoint,RHOS_INDEX+val_Species) / Primitive(iPoint,RHO_INDEX); } @@ -575,5 +575,5 @@ class CNEMOEulerVariable : public CVariable { * \brief Retrieves the value of the RhoCvve in the primitive variable vector. */ inline unsigned short GetRhoCvveIndex(void) { return RHOCVVE_INDEX; } - + }; diff --git a/SU2_CFD/src/SU2_CFD.cpp b/SU2_CFD/src/SU2_CFD.cpp index f94262364808..c5319ba59492 100644 --- a/SU2_CFD/src/SU2_CFD.cpp +++ b/SU2_CFD/src/SU2_CFD.cpp @@ -60,7 +60,6 @@ int main(int argc, char *argv[]) { /*--- MPI initialization, and buffer setting ---*/ -#ifdef HAVE_MPI #ifdef HAVE_OMP int required = use_thread_mult? MPI_THREAD_MULTIPLE : MPI_THREAD_FUNNELED; int provided; @@ -69,9 +68,6 @@ int main(int argc, char *argv[]) { SU2_MPI::Init(&argc, &argv); #endif SU2_Comm MPICommunicator(MPI_COMM_WORLD); -#else - SU2_Comm MPICommunicator(0); -#endif /*--- Uncomment the following line if runtime NaN catching is desired. ---*/ // feenableexcept(FE_INVALID | FE_OVERFLOW); diff --git a/SU2_CFD/src/solvers/CNEMOEulerSolver.cpp b/SU2_CFD/src/solvers/CNEMOEulerSolver.cpp index 787c60e90c03..188d26edbb26 100644 --- a/SU2_CFD/src/solvers/CNEMOEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CNEMOEulerSolver.cpp @@ -219,22 +219,22 @@ CNEMOEulerSolver::CNEMOEulerSolver(CGeometry *geometry, CConfig *config, counter_local = 0; for (iPoint = 0; iPoint < nPoint; iPoint++) { - + nonPhys = nodes->SetPrimVar(iPoint, FluidModel); - + /*--- Set mixture state ---*/ - FluidModel->SetTDStatePTTv(Pressure_Inf, MassFrac_Inf, Temperature_Inf, Temperature_ve_Inf); + FluidModel->SetTDStatePTTv(Pressure_Inf, MassFrac_Inf, Temperature_Inf, Temperature_ve_Inf); /*--- Compute other freestream quantities ---*/ Density_Inf = FluidModel->GetDensity(); Soundspeed_Inf = FluidModel->GetSoundSpeed(); - + sqvel = 0.0; for (iDim = 0; iDim < nDim; iDim++){ sqvel += Mvec_Inf[iDim]*Soundspeed_Inf * Mvec_Inf[iDim]*Soundspeed_Inf; } const auto& Energies_Inf = FluidModel->ComputeMixtureEnergies(); - + /*--- Initialize Solution & Solution_Old vectors ---*/ for (iSpecies = 0; iSpecies < nSpecies; iSpecies++) { Solution[iSpecies] = Density_Inf*MassFrac_Inf[iSpecies]; @@ -246,9 +246,9 @@ CNEMOEulerSolver::CNEMOEulerSolver(CGeometry *geometry, CConfig *config, Solution[nSpecies+nDim+1] = Density_Inf*Energies_Inf[1]; nodes->SetSolution(iPoint,Solution); nodes->SetSolution_Old(iPoint,Solution); - + if(nonPhys) - counter_local++; + counter_local++; } /*--- Warning message about non-physical points ---*/ @@ -614,6 +614,7 @@ void CNEMOEulerSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_contai SU2_OMP_MASTER if (config->GetComm_Level() == COMM_FULL) { su2double rbuf_time; + SU2_MPI::Allreduce(&Min_Delta_Time, &rbuf_time, 1, MPI_DOUBLE, MPI_MIN, MPI_COMM_WORLD); Min_Delta_Time = rbuf_time; SU2_MPI::Allreduce(&Max_Delta_Time, &rbuf_time, 1, MPI_DOUBLE, MPI_MAX, MPI_COMM_WORLD); @@ -1501,7 +1502,7 @@ void CNEMOEulerSolver::SetNondimensionalization(CConfig *config, unsigned short #else SU2_MPI::Error(string("Either 1) Mutation++ has not been configured/compiled (add '-Denable-mpp=true' to your meson string) or 2) CODI must be deactivated since it is not compatible with Mutation++."), CURRENT_FUNCTION); - #endif + #endif break; case SU2_NONEQ: FluidModel = new CSU2TCLib(config, nDim, viscous); diff --git a/SU2_DEF/src/SU2_DEF.cpp b/SU2_DEF/src/SU2_DEF.cpp index 225a74d42221..7514d1ee86cb 100644 --- a/SU2_DEF/src/SU2_DEF.cpp +++ b/SU2_DEF/src/SU2_DEF.cpp @@ -39,7 +39,6 @@ int main(int argc, char *argv[]) { /*--- MPI initialization ---*/ -#ifdef HAVE_MPI #ifdef HAVE_OMP int provided; SU2_MPI::Init_thread(&argc, &argv, MPI_THREAD_FUNNELED, &provided); @@ -47,9 +46,6 @@ int main(int argc, char *argv[]) { SU2_MPI::Init(&argc, &argv); #endif SU2_MPI::Comm MPICommunicator(MPI_COMM_WORLD); -#else - SU2_Comm MPICommunicator(0); -#endif rank = SU2_MPI::GetRank(); size = SU2_MPI::GetSize(); @@ -502,10 +498,7 @@ int main(int argc, char *argv[]) { cout << endl << "------------------------- Exit Success (SU2_DEF) ------------------------" << endl << endl; /*--- Finalize MPI parallelization ---*/ - -#ifdef HAVE_MPI SU2_MPI::Finalize(); -#endif return EXIT_SUCCESS; diff --git a/SU2_DOT/src/SU2_DOT.cpp b/SU2_DOT/src/SU2_DOT.cpp index 4960c2a40716..e1176a71ea74 100644 --- a/SU2_DOT/src/SU2_DOT.cpp +++ b/SU2_DOT/src/SU2_DOT.cpp @@ -38,7 +38,6 @@ int main(int argc, char *argv[]) { /*--- MPI initialization, and buffer setting ---*/ -#ifdef HAVE_MPI #ifdef HAVE_OMP int provided; SU2_MPI::Init_thread(&argc, &argv, MPI_THREAD_FUNNELED, &provided); @@ -46,9 +45,6 @@ int main(int argc, char *argv[]) { SU2_MPI::Init(&argc, &argv); #endif SU2_MPI::Comm MPICommunicator(MPI_COMM_WORLD); -#else - SU2_Comm MPICommunicator(0); -#endif const int rank = SU2_MPI::GetRank(); const int size = SU2_MPI::GetSize(); @@ -407,10 +403,7 @@ int main(int argc, char *argv[]) { cout << "\n------------------------- Exit Success (SU2_DOT) ------------------------\n" << endl; /*--- Finalize MPI parallelization ---*/ - -#ifdef HAVE_MPI SU2_MPI::Finalize(); -#endif return EXIT_SUCCESS; @@ -777,11 +770,8 @@ void SetProjection_AD(CGeometry *geometry, CConfig *config, CSurfaceMovement *su for (iDV_Value = 0; iDV_Value < nDV_Value; iDV_Value++){ DV_Value = config->GetDV_Value(iDV, iDV_Value); my_Gradient = SU2_TYPE::GetDerivative(DV_Value); -#ifdef HAVE_MPI - SU2_MPI::Allreduce(&my_Gradient, &localGradient, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); -#else - localGradient = my_Gradient; -#endif + SU2_MPI::Allreduce(&my_Gradient, &localGradient, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD); + /*--- Angle of Attack design variable (this is different, the value comes form the input file) ---*/ diff --git a/SU2_GEO/src/SU2_GEO.cpp b/SU2_GEO/src/SU2_GEO.cpp index 8ac58865cb9e..8a2c83a90716 100644 --- a/SU2_GEO/src/SU2_GEO.cpp +++ b/SU2_GEO/src/SU2_GEO.cpp @@ -58,12 +58,8 @@ int main(int argc, char *argv[]) { /*--- MPI initialization ---*/ -#ifdef HAVE_MPI SU2_MPI::Init(&argc,&argv); SU2_MPI::Comm MPICommunicator(MPI_COMM_WORLD); -#else - SU2_Comm MPICommunicator(0); -#endif rank = SU2_MPI::GetRank(); size = SU2_MPI::GetSize(); @@ -1292,10 +1288,7 @@ int main(int argc, char *argv[]) { /*--- Finalize MPI parallelization ---*/ - -#ifdef HAVE_MPI SU2_MPI::Finalize(); -#endif return EXIT_SUCCESS; diff --git a/SU2_SOL/src/SU2_SOL.cpp b/SU2_SOL/src/SU2_SOL.cpp index 24b569ff0c49..55e25e01b7ce 100644 --- a/SU2_SOL/src/SU2_SOL.cpp +++ b/SU2_SOL/src/SU2_SOL.cpp @@ -39,12 +39,8 @@ int main(int argc, char *argv[]) { /*--- MPI initialization ---*/ -#ifdef HAVE_MPI SU2_MPI::Init(&argc,&argv); SU2_MPI::Comm MPICommunicator(MPI_COMM_WORLD); -#else - SU2_Comm MPICommunicator(0); -#endif const int rank = SU2_MPI::GetRank(); const int size = SU2_MPI::GetSize(); @@ -785,10 +781,7 @@ int main(int argc, char *argv[]) { cout << endl <<"------------------------- Exit Success (SU2_SOL) ------------------------" << endl << endl; /*--- Finalize MPI parallelization ---*/ - -#ifdef HAVE_MPI SU2_MPI::Finalize(); -#endif return EXIT_SUCCESS; } diff --git a/UnitTests/test_driver.cpp b/UnitTests/test_driver.cpp index a93741c04e80..d53ef2b9063d 100644 --- a/UnitTests/test_driver.cpp +++ b/UnitTests/test_driver.cpp @@ -37,7 +37,6 @@ int main(int argc, char *argv[]) { /*--- Startup MPI, if supported ---*/ -#ifdef HAVE_MPI #ifdef HAVE_OMP int provided; SU2_MPI::Init_thread(&argc, &argv, MPI_THREAD_FUNNELED, &provided); @@ -45,9 +44,6 @@ int main(int argc, char *argv[]) { SU2_MPI::Init(&argc, &argv); #endif SU2_Comm MPICommunicator(MPI_COMM_WORLD); -#else - SU2_Comm MPICommunicator(0); -#endif /*--- Run the test driver supplied by Catch ---*/ int result = Catch::Session().run(argc, argv);