From 7d47e259d58690b1e24870456cd775ea35660b4a Mon Sep 17 00:00:00 2001 From: Aaron Larsen Date: Thu, 20 Nov 2025 15:14:51 -0700 Subject: [PATCH 1/3] Changed 2T_NEWTON to MPP_TEMP_SOLVE_ROBUST. Add equilibrium model for M++ --- Common/include/CConfig.hpp | 4 ++-- Common/src/CConfig.cpp | 2 +- SU2_CFD/include/fluid/CMutationTCLib.hpp | 2 +- SU2_CFD/src/fluid/CMutationTCLib.cpp | 9 ++++++--- config_template.cfg | 4 ++-- 5 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Common/include/CConfig.hpp b/Common/include/CConfig.hpp index 9fb458a8bb85..97ee5facbe61 100644 --- a/Common/include/CConfig.hpp +++ b/Common/include/CConfig.hpp @@ -1255,7 +1255,7 @@ class CConfig { string GasModel, /*!< \brief Gas Model. */ *Wall_Catalytic; /*!< \brief Pointer to catalytic walls. */ string NoneqStateModel; /*!< \brief Nonequilibrium State Model. */ - bool Newton_2T; /*!< \brief M++ derivative vs. Perturbation Method for Newton's Method. */ + bool Mpp_Temp_Solve_Robust; /*!< \brief M++ derivative vs. Perturbation Method for Newton's Method. */ TRANSCOEFFMODEL Kind_TransCoeffModel; /*!< \brief Transport coefficient Model for NEMO solver. */ su2double CatalyticEfficiency; /*!< \brief Wall catalytic efficiency. */ su2double *Inlet_MassFrac; /*!< \brief Specified Mass fraction vectors for NEMO inlet boundaries. */ @@ -3960,7 +3960,7 @@ class CConfig { * \brief 2T Nonequilibrium numerical method to solve for temperatures. * \return Bool to use M++ implementation vs. Perturbation Method. */ - bool Get2TNewton(void) const {return Newton_2T;} + bool Get_Mpp_Temp_Solve_Robust(void) const {return Mpp_Temp_Solve_Robust;} /*! diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index a9c03c26afcc..84e858e095fd 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -1243,7 +1243,7 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Specify Nonequilibrium Temperature Model */ addStringOption("NONEQ_STATE_MODEL", NoneqStateModel, string("2T")); /* DESCRIPTION: Specify M++ Derivative vs. Perturbation Method for Newton's Method solving for temperatures */ - addBoolOption("2T_NEWTON", Newton_2T, true); + addBoolOption("MPP_TEMP_SOLVE_ROBUST", Mpp_Temp_Solve_Robust, true); /* DESCRIPTION: Specify transport coefficient model for multi-species simulations */ addEnumOption("TRANSPORT_COEFF_MODEL", Kind_TransCoeffModel, TransCoeffModel_Map, TRANSCOEFFMODEL::WILKE); /* DESCRIPTION: Specify mass fraction of each species */ diff --git a/SU2_CFD/include/fluid/CMutationTCLib.hpp b/SU2_CFD/include/fluid/CMutationTCLib.hpp index c0dde5457161..fa66cf042982 100644 --- a/SU2_CFD/include/fluid/CMutationTCLib.hpp +++ b/SU2_CFD/include/fluid/CMutationTCLib.hpp @@ -58,7 +58,7 @@ class CMutationTCLib : public CNEMOGas { su2double Tref; /*!< \brief Reference temperature. */ - bool NEWTON; /*!< \brief Boolean to use Newton-Raphson h/cp or Perturbation Method to calculate Jacobian. */ + bool NEWTON_ROBUST; /*!< \brief Boolean to use Newton-Raphson h/cp or Perturbation Method to calculate Jacobian. */ public: diff --git a/SU2_CFD/src/fluid/CMutationTCLib.cpp b/SU2_CFD/src/fluid/CMutationTCLib.cpp index 514a1bcdd6e8..6a6dac86c58d 100644 --- a/SU2_CFD/src/fluid/CMutationTCLib.cpp +++ b/SU2_CFD/src/fluid/CMutationTCLib.cpp @@ -56,13 +56,16 @@ CMutationTCLib::CMutationTCLib(const CConfig* config, unsigned short val_nDim): else if (Kind_TransCoeffModel == TRANSCOEFFMODEL::CHAPMANN_ENSKOG) transport_model = "Chapmann-Enskog_LDLT"; - NEWTON = config->Get2TNewton(); + NEWTON_ROBUST = config->Get_Mpp_Temp_Solve_Robust(); if (NoneqStateModel == "2T") { opt.setStateModel("ChemNonEqTTv"); } else if (NoneqStateModel == "1T"){ opt.setStateModel("ChemNonEq1T"); } + else if (NoneqStateModel == "EQUILIBRIUM"){ + opt.setStateModel("Equil"); + } if (frozen) opt.setMechanism("none"); @@ -138,7 +141,7 @@ void CMutationTCLib::SetTDStateRhosTTv(vector& val_rhos, su2double va Pressure = ComputePressure(); - mix->setState(rhos.data(), temperatures.data(), 1, NEWTON); + mix->setState(rhos.data(), temperatures.data(), 1, NEWTON_ROBUST); } @@ -296,7 +299,7 @@ vector& CMutationTCLib::ComputeTemperatures(vector& val_rh energies[0] = rhoE - rhoEvel; energies[1] = rhoEve; - mix->setState(rhos.data(), energies.data(), 0, NEWTON); + mix->setState(rhos.data(), energies.data(), 0, NEWTON_ROBUST); mix->getTemperatures(temperatures.data()); diff --git a/config_template.cfg b/config_template.cfg index 996500a649ea..e3e4fcf8e10a 100644 --- a/config_template.cfg +++ b/config_template.cfg @@ -440,8 +440,8 @@ GAS_COMPOSITION= (0.77, 0.23, 0.0, 0.0, 0.0) FROZEN_MIXTURE= NO % 1-Temperature vs. 2-Temperature Model for Mutation++ NONEQ_STATE_MODEL= 2T -% Use Mutationpp h/cp relation for solving for 2T temperatures vs. Perturbation Method -2T_NEWTON= YES +% Use Perturbation Method vs. Mutationpp h/cp relation for solving for 2T temperatures +Mpp_Temp_Solve_Robust= YES % % Datadriven fluid model % For data-driven fluid models, an interpolation algorithm is used to retrieve the thermodynamic state for a given density and internal energy From 888429e4152bb9b105b407b091a8ff6f306da908 Mon Sep 17 00:00:00 2001 From: Aaron Larsen Date: Thu, 20 Nov 2025 15:15:05 -0700 Subject: [PATCH 2/3] Changed 2T_NEWTON to MPP_TEMP_SOLVE_ROBUST --- config_template.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config_template.cfg b/config_template.cfg index e3e4fcf8e10a..e79b87baa47c 100644 --- a/config_template.cfg +++ b/config_template.cfg @@ -441,7 +441,7 @@ FROZEN_MIXTURE= NO % 1-Temperature vs. 2-Temperature Model for Mutation++ NONEQ_STATE_MODEL= 2T % Use Perturbation Method vs. Mutationpp h/cp relation for solving for 2T temperatures -Mpp_Temp_Solve_Robust= YES +MPP_TEMP_SOLVE_ROBUST= YES % % Datadriven fluid model % For data-driven fluid models, an interpolation algorithm is used to retrieve the thermodynamic state for a given density and internal energy From 39752ee805edaa2296f330e66ecf6ddb7ec71140 Mon Sep 17 00:00:00 2001 From: Aaron Larsen Date: Mon, 2 Feb 2026 15:29:23 -0700 Subject: [PATCH 3/3] Update default temperature solver --- Common/src/CConfig.cpp | 2 +- config_template.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 84e858e095fd..96fa80b439c9 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -1243,7 +1243,7 @@ void CConfig::SetConfig_Options() { /* DESCRIPTION: Specify Nonequilibrium Temperature Model */ addStringOption("NONEQ_STATE_MODEL", NoneqStateModel, string("2T")); /* DESCRIPTION: Specify M++ Derivative vs. Perturbation Method for Newton's Method solving for temperatures */ - addBoolOption("MPP_TEMP_SOLVE_ROBUST", Mpp_Temp_Solve_Robust, true); + addBoolOption("MPP_TEMP_SOLVE_ROBUST", Mpp_Temp_Solve_Robust, false); /* DESCRIPTION: Specify transport coefficient model for multi-species simulations */ addEnumOption("TRANSPORT_COEFF_MODEL", Kind_TransCoeffModel, TransCoeffModel_Map, TRANSCOEFFMODEL::WILKE); /* DESCRIPTION: Specify mass fraction of each species */ diff --git a/config_template.cfg b/config_template.cfg index e79b87baa47c..610ecffbe57a 100644 --- a/config_template.cfg +++ b/config_template.cfg @@ -441,7 +441,7 @@ FROZEN_MIXTURE= NO % 1-Temperature vs. 2-Temperature Model for Mutation++ NONEQ_STATE_MODEL= 2T % Use Perturbation Method vs. Mutationpp h/cp relation for solving for 2T temperatures -MPP_TEMP_SOLVE_ROBUST= YES +MPP_TEMP_SOLVE_ROBUST= NO % % Datadriven fluid model % For data-driven fluid models, an interpolation algorithm is used to retrieve the thermodynamic state for a given density and internal energy