From d8c98d9fea754a14a84dad6de55dc3729671f8b6 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Tue, 14 Jan 2025 19:25:28 +0100 Subject: [PATCH 01/30] enable use of conductivity models for compressible flows --- Common/src/CConfig.cpp | 4 ---- .../include/numerics/flow/flow_diffusion.hpp | 21 +++++-------------- SU2_CFD/src/numerics/flow/flow_diffusion.cpp | 19 +++++------------ SU2_CFD/src/solvers/CAdjNSSolver.cpp | 7 ++----- SU2_CFD/src/solvers/CNSSolver.cpp | 5 +---- 5 files changed, 13 insertions(+), 43 deletions(-) diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 1ec938832e26..f4bd50a8b281 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -4162,10 +4162,6 @@ void CConfig::SetPostprocessing(SU2_COMPONENT val_software, unsigned short val_i SU2_MPI::Error("Only SUTHERLAND viscosity model can be used with US Measurement", CURRENT_FUNCTION); } } - if (Kind_ConductivityModel != CONDUCTIVITYMODEL::CONSTANT_PRANDTL) { - SU2_MPI::Error("Only CONSTANT_PRANDTL thermal conductivity model can be used with STANDARD_AIR and IDEAL_GAS", - CURRENT_FUNCTION); - } } /*--- Check for Boundary condition option agreement ---*/ if (Kind_InitOption == REYNOLDS){ diff --git a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp index 654bc91e6ac7..e431ee6850aa 100644 --- a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp +++ b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp @@ -355,15 +355,10 @@ class CGeneralAvgGrad_Flow final : public CAvgGrad_Base { * \brief Compute the heat flux due to molecular and turbulent diffusivity * \param[in] val_gradprimvar - Gradient of the primitive variables. * \param[in] val_laminar_viscosity - Laminar viscosity. - * \param[in] val_eddy_viscosity - Eddy viscosity. * \param[in] val_thermal_conductivity - Thermal Conductivity. - * \param[in] val_heat_capacity_cp - Heat Capacity at constant pressure. */ - void SetHeatFluxVector(const su2double* const *val_gradprimvar, - su2double val_laminar_viscosity, - su2double val_eddy_viscosity, - su2double val_thermal_conductivity, - su2double val_heat_capacity_cp); + void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_laminar_viscosity, + su2double val_thermal_conductivity); /*! * \brief Compute the Jacobian of the heat flux vector @@ -373,19 +368,13 @@ class CGeneralAvgGrad_Flow final : public CAvgGrad_Base { * * \param[in] val_Mean_PrimVar - Mean value of the primitive variables. * \param[in] val_Mean_SecVar - Mean value of the secondary variables. - * \param[in] val_eddy_viscosity - Value of the eddy viscosity. * \param[in] val_thermal_conductivity - Value of the thermal conductivity. - * \param[in] val_heat_capacity_cp - Value of the specific heat at constant pressure. * \param[in] val_dist_ij - Distance between the points. */ - void SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, - const su2double *val_Mean_SecVar, - su2double val_eddy_viscosity, - su2double val_thermal_conductivity, - su2double val_heat_capacity_cp, - su2double val_dist_ij); + void SetHeatFluxJacobian(const su2double* val_Mean_PrimVar, const su2double* val_Mean_SecVar, + su2double val_thermal_conductivity, su2double val_dist_ij); -public: + public: /*! * \brief Constructor of the class. diff --git a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp index a2cdb8935339..263b06cf162d 100644 --- a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp +++ b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp @@ -797,11 +797,9 @@ CGeneralAvgGrad_Flow::CGeneralAvgGrad_Flow(unsigned short val_nDim, void CGeneralAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradprimvar, const su2double val_laminar_viscosity, - const su2double val_eddy_viscosity, - const su2double val_thermal_conductivity, - const su2double val_heat_capacity_cp) { + const su2double val_thermal_conductivity) { - const su2double heat_flux_factor = val_thermal_conductivity + val_heat_capacity_cp*val_eddy_viscosity/Prandtl_Turb; + const su2double heat_flux_factor = val_thermal_conductivity; /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ for (unsigned short iDim = 0; iDim < nDim; iDim++) { @@ -811,9 +809,7 @@ void CGeneralAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradpri void CGeneralAvgGrad_Flow::SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, const su2double *val_Mean_SecVar, - const su2double val_eddy_viscosity, const su2double val_thermal_conductivity, - const su2double val_heat_capacity_cp, const su2double val_dist_ij) { /* Viscous flux Jacobians for arbitrary equations of state */ @@ -835,8 +831,7 @@ void CGeneralAvgGrad_Flow::SetHeatFluxJacobian(const su2double *val_Mean_PrimVar su2double dTdu1= dTde_rho*(-val_Mean_PrimVar[1])*(1/rho); su2double dTdu2= dTde_rho*(-val_Mean_PrimVar[2])*(1/rho); - su2double total_conductivity = val_thermal_conductivity + val_heat_capacity_cp*val_eddy_viscosity/Prandtl_Turb; - su2double factor2 = total_conductivity/val_dist_ij; + su2double factor2 = val_thermal_conductivity/val_dist_ij; heat_flux_jac_i[0] = factor2*dTdu0; heat_flux_jac_i[1] = factor2*dTdu1; @@ -903,7 +898,6 @@ CNumerics::ResidualType<> CGeneralAvgGrad_Flow::ComputeResidual(const CConfig* c Laminar_Viscosity_i = V_i[nDim+5]; Laminar_Viscosity_j = V_j[nDim+5]; Eddy_Viscosity_i = V_i[nDim+6]; Eddy_Viscosity_j = V_j[nDim+6]; Thermal_Conductivity_i = V_i[nDim+7]; Thermal_Conductivity_j = V_j[nDim+7]; - Cp_i = V_i[nDim+8]; Cp_j = V_j[nDim+8]; /*--- Mean secondary variables ---*/ @@ -917,7 +911,6 @@ CNumerics::ResidualType<> CGeneralAvgGrad_Flow::ComputeResidual(const CConfig* c Mean_Eddy_Viscosity = 0.5*(Eddy_Viscosity_i + Eddy_Viscosity_j); Mean_turb_ke = 0.5*(turb_ke_i + turb_ke_j); Mean_Thermal_Conductivity = 0.5*(Thermal_Conductivity_i + Thermal_Conductivity_j); - Mean_Cp = 0.5*(Cp_i + Cp_j); /*--- Mean gradient approximation ---*/ @@ -954,8 +947,7 @@ CNumerics::ResidualType<> CGeneralAvgGrad_Flow::ComputeResidual(const CConfig* c if (config->GetSAParsedOptions().qcr2000) AddQCR(nDim, &Mean_GradPrimVar[1], tau); if (Mean_TauWall > 0) AddTauWall(UnitNormal, Mean_TauWall); - SetHeatFluxVector(Mean_GradPrimVar, Mean_Laminar_Viscosity, - Mean_Eddy_Viscosity, Mean_Thermal_Conductivity, Mean_Cp); + SetHeatFluxVector(Mean_GradPrimVar, Mean_Laminar_Viscosity, Mean_Thermal_Conductivity); GetViscousProjFlux(Mean_PrimVar, Normal); @@ -975,8 +967,7 @@ CNumerics::ResidualType<> CGeneralAvgGrad_Flow::ComputeResidual(const CConfig* c SetTauJacobian(Mean_PrimVar, Mean_Laminar_Viscosity, Mean_Eddy_Viscosity, dist_ij, UnitNormal); - SetHeatFluxJacobian(Mean_PrimVar, Mean_SecVar, Mean_Eddy_Viscosity, - Mean_Thermal_Conductivity, Mean_Cp, dist_ij); + SetHeatFluxJacobian(Mean_PrimVar, Mean_SecVar, Mean_Thermal_Conductivity, dist_ij); GetViscousProjJacs(Mean_PrimVar, Area, Proj_Flux_Tensor, Jacobian_i, Jacobian_j); } diff --git a/SU2_CFD/src/solvers/CAdjNSSolver.cpp b/SU2_CFD/src/solvers/CAdjNSSolver.cpp index 54e6c717b270..fd379ad77e61 100644 --- a/SU2_CFD/src/solvers/CAdjNSSolver.cpp +++ b/SU2_CFD/src/solvers/CAdjNSSolver.cpp @@ -1641,10 +1641,8 @@ void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont } /*--- Get transport coefficient information ---*/ - Laminar_Viscosity = solver_container[FLOW_SOL]->GetNodes()->GetLaminarViscosity(iPoint); Eddy_Viscosity = solver_container[FLOW_SOL]->GetNodes()->GetEddyViscosity(iPoint); - Thermal_Conductivity = Cp * ( Laminar_Viscosity/Prandtl_Lam - +Eddy_Viscosity/Prandtl_Turb); + Thermal_Conductivity = solver_container[FLOW_SOL]-> GetNodes()->GetThermalConductivity(iPoint); // GradV = solver_container[FLOW_SOL]->GetNodes()->GetGradient_Primitive(iPoint); @@ -1660,8 +1658,7 @@ void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont GradT = solver_container[FLOW_SOL]->GetNodes()->GetGradient_Primitive(iPoint)[0]; kGTdotn = 0.0; for (iDim = 0; iDim < nDim; iDim++) - kGTdotn += Cp * Laminar_Viscosity/Prandtl_Lam*GradT[iDim]*Normal[iDim]/Area; - // Cp * Viscosity/Prandtl_Lam matches term used in solver_direct_mean + kGTdotn += (Thermal_Conductivity - Cp * Eddy_Viscosity/Prandtl_Turb) * GradT[iDim]*Normal[iDim]/Area; /*--- constant term to multiply max heat flux objective ---*/ Xi = solver_container[FLOW_SOL]->GetTotal_HeatFlux(); // versions for max heat flux Xi = pow(Xi, 1.0/pnorm-1.0)/pnorm; diff --git a/SU2_CFD/src/solvers/CNSSolver.cpp b/SU2_CFD/src/solvers/CNSSolver.cpp index 50f243c7f0cf..c15a5a3f424e 100644 --- a/SU2_CFD/src/solvers/CNSSolver.cpp +++ b/SU2_CFD/src/solvers/CNSSolver.cpp @@ -622,7 +622,6 @@ void CNSSolver::BC_Isothermal_Wall_Generic(CGeometry *geometry, CSolver **solver const su2double Prandtl_Lam = config->GetPrandtl_Lam(); const su2double Prandtl_Turb = config->GetPrandtl_Turb(); const su2double Gas_Constant = config->GetGas_ConstantND(); - const su2double Cp = (Gamma / Gamma_Minus_One) * Gas_Constant; /*--- Identify the boundary and retrieve the specified wall temperature from the config (for non-CHT problems) as well as the wall function treatment. ---*/ @@ -689,9 +688,7 @@ void CNSSolver::BC_Isothermal_Wall_Generic(CGeometry *geometry, CSolver **solver /*--- Get transport coefficients ---*/ - su2double laminar_viscosity = nodes->GetLaminarViscosity(iPoint); - su2double eddy_viscosity = nodes->GetEddyViscosity(iPoint); - su2double thermal_conductivity = Cp * (laminar_viscosity/Prandtl_Lam + eddy_viscosity/Prandtl_Turb); + su2double thermal_conductivity = nodes->GetThermalConductivity(iPoint); // work in progress on real-gases... //thermal_conductivity = nodes->GetThermalConductivity(iPoint); From 99cc0d60262a83c026cd8ff7b8d3e9701fe68dad Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Tue, 14 Jan 2025 20:00:12 +0100 Subject: [PATCH 02/30] removing unused variables --- SU2_CFD/src/solvers/CNSSolver.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/SU2_CFD/src/solvers/CNSSolver.cpp b/SU2_CFD/src/solvers/CNSSolver.cpp index c15a5a3f424e..f8bed9fc43c3 100644 --- a/SU2_CFD/src/solvers/CNSSolver.cpp +++ b/SU2_CFD/src/solvers/CNSSolver.cpp @@ -619,8 +619,6 @@ void CNSSolver::BC_Isothermal_Wall_Generic(CGeometry *geometry, CSolver **solver const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const su2double Temperature_Ref = config->GetTemperature_Ref(); - const su2double Prandtl_Lam = config->GetPrandtl_Lam(); - const su2double Prandtl_Turb = config->GetPrandtl_Turb(); const su2double Gas_Constant = config->GetGas_ConstantND(); /*--- Identify the boundary and retrieve the specified wall temperature from From d8225ed79c0722047de5357d1691260d8e98ddc5 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Wed, 19 Feb 2025 23:34:21 +0100 Subject: [PATCH 03/30] setting eddy viscosity in fluid model --- SU2_CFD/src/variables/CNSVariable.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SU2_CFD/src/variables/CNSVariable.cpp b/SU2_CFD/src/variables/CNSVariable.cpp index 5b67a0bdbb8e..fcfe320c845a 100644 --- a/SU2_CFD/src/variables/CNSVariable.cpp +++ b/SU2_CFD/src/variables/CNSVariable.cpp @@ -186,9 +186,10 @@ bool CNSVariable::SetPrimVar(unsigned long iPoint, su2double eddy_visc, su2doubl SetLaminarViscosity(iPoint, FluidModel->GetLaminarViscosity()); - /*--- Set eddy viscosity ---*/ + /*--- Set eddy viscosity locally and in the fluid model.---*/ SetEddyViscosity(iPoint, eddy_visc); + FluidModel->SetEddyViscosity(eddy_visc); /*--- Set thermal conductivity ---*/ From 5cef5ee83047344c25f5f8de300b921435db2cd0 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Thu, 20 Feb 2025 09:34:49 +0100 Subject: [PATCH 04/30] axisymmetric cleaning --- SU2_CFD/src/numerics/flow/flow_sources.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/SU2_CFD/src/numerics/flow/flow_sources.cpp b/SU2_CFD/src/numerics/flow/flow_sources.cpp index 6f8359a5f582..81d171027e94 100644 --- a/SU2_CFD/src/numerics/flow/flow_sources.cpp +++ b/SU2_CFD/src/numerics/flow/flow_sources.cpp @@ -140,10 +140,8 @@ void CSourceAxisymmetric_Flow::ResidualDiffusion(){ su2double laminar_viscosity_i = V_i[nDim+5]; su2double eddy_viscosity_i = V_i[nDim+6]; su2double thermal_conductivity_i = V_i[nDim+7]; - su2double heat_capacity_cp_i = V_i[nDim+8]; su2double total_viscosity_i = laminar_viscosity_i + eddy_viscosity_i; - su2double total_conductivity_i = thermal_conductivity_i + heat_capacity_cp_i*eddy_viscosity_i/Prandtl_Turb; su2double u = U_i[1]/U_i[0]; su2double v = U_i[2]/U_i[0]; @@ -156,7 +154,7 @@ void CSourceAxisymmetric_Flow::ResidualDiffusion(){ residual[3] -= Volume*(yinv*(total_viscosity_i*(u*(PrimVar_Grad_i[2][0]+PrimVar_Grad_i[1][1]) +v*TWO3*(2*PrimVar_Grad_i[2][1]-PrimVar_Grad_i[1][0] -v*yinv+U_i[0]*turb_ke_i)) - +total_conductivity_i*PrimVar_Grad_i[0][1]) + +thermal_conductivity_i*PrimVar_Grad_i[0][1]) -TWO3*(AuxVar_Grad_i[1][1]+AuxVar_Grad_i[2][0])); } From cb09c9f33386940fa3730902725eb5fa44a525b3 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Thu, 20 Feb 2025 10:35:21 +0100 Subject: [PATCH 05/30] updating residuals --- SU2_CFD/include/numerics/flow/flow_diffusion.hpp | 2 +- TestCases/hybrid_regression.py | 6 +++--- TestCases/parallel_regression.py | 4 ++-- TestCases/parallel_regression_AD.py | 4 ++-- TestCases/serial_regression.py | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp index e431ee6850aa..26cc6807ec95 100644 --- a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp +++ b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp @@ -374,7 +374,7 @@ class CGeneralAvgGrad_Flow final : public CAvgGrad_Base { void SetHeatFluxJacobian(const su2double* val_Mean_PrimVar, const su2double* val_Mean_SecVar, su2double val_thermal_conductivity, su2double val_dist_ij); - public: +public: /*! * \brief Constructor of the class. diff --git a/TestCases/hybrid_regression.py b/TestCases/hybrid_regression.py index da3af4f5c9dc..efea4b36f2d2 100644 --- a/TestCases/hybrid_regression.py +++ b/TestCases/hybrid_regression.py @@ -250,7 +250,7 @@ def main(): axi_rans_air_nozzle_restart.cfg_dir = "axisymmetric_rans/air_nozzle" axi_rans_air_nozzle_restart.cfg_file = "air_nozzle_restart.cfg" axi_rans_air_nozzle_restart.test_iter = 10 - axi_rans_air_nozzle_restart.test_vals = [-12.070954, -7.407644, -8.698118, -4.008751, 0] + axi_rans_air_nozzle_restart.test_vals = [-12.070958, -7.407694, -8.697876, -4.008653, 0] test_list.append(axi_rans_air_nozzle_restart) ################################# @@ -573,8 +573,8 @@ def main(): transonic_stator_restart.cfg_dir = "turbomachinery/transonic_stator_2D" transonic_stator_restart.cfg_file = "transonic_stator_restart.cfg" transonic_stator_restart.test_iter = 20 - transonic_stator_restart.test_vals = [-5.007735, -3.099310, -2.751696, 1.091966, -3.542819, 2.163237, -471630.000000, 94.866000, -0.035738] - transonic_stator_restart.test_vals_aarch64 = [-5.007735, -3.099310, -2.751696, 1.091966, -3.542819, 2.163237, -471630, 94.866, -0.035738] + transonic_stator_restart.test_vals = [-5.007734, -3.099310, -2.751691, 1.091967, -3.542819, 2.163237, -471630.000000, 94.866000, -0.036113] + transonic_stator_restart.test_vals_aarch64 = [-5.007734, -3.099310, -2.751691, 1.091967, -3.542818, 2.163238, -471630, 94.866, -0.036113] test_list.append(transonic_stator_restart) # Multiple turbomachinery interface restart diff --git a/TestCases/parallel_regression.py b/TestCases/parallel_regression.py index 530328b52a64..547209649ca7 100644 --- a/TestCases/parallel_regression.py +++ b/TestCases/parallel_regression.py @@ -1102,8 +1102,8 @@ def main(): transonic_stator_restart.cfg_dir = "turbomachinery/transonic_stator_2D" transonic_stator_restart.cfg_file = "transonic_stator_restart.cfg" transonic_stator_restart.test_iter = 20 - transonic_stator_restart.test_vals = [-5.011834, -3.091110, -2.757795, 1.087934, -3.544707, 2.166101, -471630, 94.868, -0.035888] - transonic_stator_restart.test_vals_aarch64 = [-5.011834, -3.091110, -2.757795, 1.087934, -3.544707, 2.166101, -471630, 94.868, -0.035888] + transonic_stator_restart.test_vals = [-5.011833, -3.091110, -2.757789, 1.087935, -3.544705, 2.166101, -471630, 94.868, -0.036253] + transonic_stator_restart.test_vals_aarch64 = [-5.011833, -3.091110, -2.757789, 1.087935, -3.544705, 2.166101, -471630, 94.868, -0.036253] test_list.append(transonic_stator_restart) # Multiple turbomachinery interface restart diff --git a/TestCases/parallel_regression_AD.py b/TestCases/parallel_regression_AD.py index f54849610f4a..80b863a7fa07 100644 --- a/TestCases/parallel_regression_AD.py +++ b/TestCases/parallel_regression_AD.py @@ -230,8 +230,8 @@ def main(): discadj_trans_stator.cfg_dir = "disc_adj_turbomachinery/transonic_stator_2D" discadj_trans_stator.cfg_file = "transonic_stator.cfg" discadj_trans_stator.test_iter = 79 - discadj_trans_stator.test_vals = [79, 0.769967, 0.374299, 0.474436, -0.996528, 2.154053, -4.446085] - discadj_trans_stator.test_vals_aarch64 = [79, 0.769967, 0.374299, 0.474436, -0.996528, 2.154053, -4.446085] + discadj_trans_stator.test_vals = [79, 0.769976, 0.374299, 0.474435, -0.9965283, 2.154068, -4.446072] + discadj_trans_stator.test_vals_aarch64 = [79, 0.769976, 0.374299, 0.474435, -0.996523, 2.154068, -4.446072] test_list.append(discadj_trans_stator) ################################### diff --git a/TestCases/serial_regression.py b/TestCases/serial_regression.py index b4b9cd473a9a..2f69750cbb4f 100644 --- a/TestCases/serial_regression.py +++ b/TestCases/serial_regression.py @@ -880,8 +880,8 @@ def main(): transonic_stator_restart.cfg_dir = "turbomachinery/transonic_stator_2D" transonic_stator_restart.cfg_file = "transonic_stator_restart.cfg" transonic_stator_restart.test_iter = 20 - transonic_stator_restart.test_vals = [-5.008547, -3.102420, -2.752033, 1.091152, -3.543849, 2.169844, -471630.000000, 94.866000, -0.035806] - transonic_stator_restart.test_vals_aarch64 = [-5.008547, -3.102420, -2.752033, 1.091152, -3.543849, 2.169844, -471630, 94.866, -0.035806] + transonic_stator_restart.test_vals = [-5.008546, -3.102411, -2.752033, 1.091152, -3.543849, 2.169844, -471630.000000, 94.866000, -0.036178] + transonic_stator_restart.test_vals_aarch64 = [-5.008546, -3.102411, -2.752027, 1.091153, -3.543849, 2.169844, -471630, 94.866, -0.036178] test_list.append(transonic_stator_restart) # Multiple turbomachinery interface restart From b753ad36902b3600998c2f43137f47583f3ee368 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Thu, 20 Feb 2025 10:40:58 +0100 Subject: [PATCH 06/30] fix --- TestCases/hybrid_regression.py | 2 +- TestCases/serial_regression.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/TestCases/hybrid_regression.py b/TestCases/hybrid_regression.py index efea4b36f2d2..05dc386bc92e 100644 --- a/TestCases/hybrid_regression.py +++ b/TestCases/hybrid_regression.py @@ -573,7 +573,7 @@ def main(): transonic_stator_restart.cfg_dir = "turbomachinery/transonic_stator_2D" transonic_stator_restart.cfg_file = "transonic_stator_restart.cfg" transonic_stator_restart.test_iter = 20 - transonic_stator_restart.test_vals = [-5.007734, -3.099310, -2.751691, 1.091967, -3.542819, 2.163237, -471630.000000, 94.866000, -0.036113] + transonic_stator_restart.test_vals = [-5.007734, -3.099310, -2.751691, 1.091967, -3.542818, 2.163238, -471630.000000, 94.866000, -0.036113] transonic_stator_restart.test_vals_aarch64 = [-5.007734, -3.099310, -2.751691, 1.091967, -3.542818, 2.163238, -471630, 94.866, -0.036113] test_list.append(transonic_stator_restart) diff --git a/TestCases/serial_regression.py b/TestCases/serial_regression.py index 2f69750cbb4f..2bfb5ebbffd0 100644 --- a/TestCases/serial_regression.py +++ b/TestCases/serial_regression.py @@ -880,7 +880,7 @@ def main(): transonic_stator_restart.cfg_dir = "turbomachinery/transonic_stator_2D" transonic_stator_restart.cfg_file = "transonic_stator_restart.cfg" transonic_stator_restart.test_iter = 20 - transonic_stator_restart.test_vals = [-5.008546, -3.102411, -2.752033, 1.091152, -3.543849, 2.169844, -471630.000000, 94.866000, -0.036178] + transonic_stator_restart.test_vals = [-5.008546, -3.102411, -2.752027, 1.091153, -3.543849, 2.169844, -471630.000000, 94.866000, -0.036178] transonic_stator_restart.test_vals_aarch64 = [-5.008546, -3.102411, -2.752027, 1.091153, -3.543849, 2.169844, -471630, 94.866, -0.036178] test_list.append(transonic_stator_restart) From ec47476af3a487cfc35aba051df87a7e09be44db Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Thu, 20 Feb 2025 11:22:38 +0100 Subject: [PATCH 07/30] fix parallel regression --- TestCases/parallel_regression.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TestCases/parallel_regression.py b/TestCases/parallel_regression.py index 547209649ca7..fe6f7a2674e0 100644 --- a/TestCases/parallel_regression.py +++ b/TestCases/parallel_regression.py @@ -1102,8 +1102,8 @@ def main(): transonic_stator_restart.cfg_dir = "turbomachinery/transonic_stator_2D" transonic_stator_restart.cfg_file = "transonic_stator_restart.cfg" transonic_stator_restart.test_iter = 20 - transonic_stator_restart.test_vals = [-5.011833, -3.091110, -2.757789, 1.087935, -3.544705, 2.166101, -471630, 94.868, -0.036253] - transonic_stator_restart.test_vals_aarch64 = [-5.011833, -3.091110, -2.757789, 1.087935, -3.544705, 2.166101, -471630, 94.868, -0.036253] + transonic_stator_restart.test_vals = [-5.011834, -3.091100, -2.757795, 1.087934, -3.544707, 2.166101, -471630, 94.868, -0.035888] + transonic_stator_restart.test_vals_aarch64 = [-5.011834, -3.091100, -2.757795, 1.087934, -3.544707, 2.166101, -471630, 94.868, -0.035888] test_list.append(transonic_stator_restart) # Multiple turbomachinery interface restart From c7b1750d81a93dbfc943d3f488d784f3522bd4e7 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Thu, 20 Feb 2025 13:01:38 +0100 Subject: [PATCH 08/30] fix --- TestCases/parallel_regression.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TestCases/parallel_regression.py b/TestCases/parallel_regression.py index fe6f7a2674e0..3072c2e4bdcf 100644 --- a/TestCases/parallel_regression.py +++ b/TestCases/parallel_regression.py @@ -1102,8 +1102,8 @@ def main(): transonic_stator_restart.cfg_dir = "turbomachinery/transonic_stator_2D" transonic_stator_restart.cfg_file = "transonic_stator_restart.cfg" transonic_stator_restart.test_iter = 20 - transonic_stator_restart.test_vals = [-5.011834, -3.091100, -2.757795, 1.087934, -3.544707, 2.166101, -471630, 94.868, -0.035888] - transonic_stator_restart.test_vals_aarch64 = [-5.011834, -3.091100, -2.757795, 1.087934, -3.544707, 2.166101, -471630, 94.868, -0.035888] + transonic_stator_restart.test_vals = [-5.011833, -3.091100, -2.757789, 1.087935, -3.544705, 2.166101, -471630, 94.868, -0.036253] + transonic_stator_restart.test_vals_aarch64 = [-5.011833, -3.091100, -2.757789, 1.087935, -3.544705, 2.166101, -471630, 94.868, -0.036253] test_list.append(transonic_stator_restart) # Multiple turbomachinery interface restart From 06bec59defad04e8ff2473bf4249534bbd083a55 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Sat, 22 Feb 2025 13:53:18 +0100 Subject: [PATCH 09/30] adding test case using CONSTANT_CONDUCTIVITY model --- TestCases/parallel_regression.py | 8 + ...SA_flatplate_species_ConstConductivity.cfg | 140 ++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 TestCases/rans/flatplate/turb_SA_flatplate_species_ConstConductivity.cfg diff --git a/TestCases/parallel_regression.py b/TestCases/parallel_regression.py index 3072c2e4bdcf..07dcfdc891ac 100644 --- a/TestCases/parallel_regression.py +++ b/TestCases/parallel_regression.py @@ -392,6 +392,14 @@ def main(): turb_flatplate_species.test_vals = [-4.243064, -0.634797, -1.706652, 1.231264, -3.266203, 9.000000, -6.632972, 5.000000, -6.985977, 10.000000, -6.007208, 0.996237, 0.996237] test_list.append(turb_flatplate_species) + # Flat plate (compressible) species transport using constant conductivity model + turb_flatplate_species = TestCase('turb_flatplate_species_ConstConductivity') + turb_flatplate_species.cfg_dir = "rans/flatplate" + turb_flatplate_species.cfg_file = "turb_SA_flatplate_species_ConstConductivity.cfg" + turb_flatplate_species.test_iter = 20 + turb_flatplate_species.test_vals = [-4.243064, -0.634797, -1.706652, 1.231264, -3.266203, 9.000000, -6.632972, 5.000000, -6.985977, 10.000000, -6.007208, 0.996237, 0.996237] + test_list.append(turb_flatplate_species) + # Flat plate SST compressibility correction Wilcox turb_flatplate_CC_Wilcox = TestCase('turb_flatplate_CC_Wilcox') turb_flatplate_CC_Wilcox.cfg_dir = "rans/flatplate" diff --git a/TestCases/rans/flatplate/turb_SA_flatplate_species_ConstConductivity.cfg b/TestCases/rans/flatplate/turb_SA_flatplate_species_ConstConductivity.cfg new file mode 100644 index 000000000000..ff4d16b82101 --- /dev/null +++ b/TestCases/rans/flatplate/turb_SA_flatplate_species_ConstConductivity.cfg @@ -0,0 +1,140 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% SU2 configuration file % +% Case description: Turbulent flow over flat plate with zero pressure gradient % +% using conductivity model CONSTANT_CONDUCTIVITY % +% Author: C. Morales Ubal % +% Institution: Eindhoven University of Technology % +% Date: 2025.02.22 % +% File Version 8.1.0 "Harrier" % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------% +% +SOLVER= RANS +KIND_TURB_MODEL= SA +MATH_PROBLEM= DIRECT +RESTART_SOL= NO + +% ----------- COMPRESSIBLE AND INCOMPRESSIBLE FREE-STREAM DEFINITION ----------% +% +MACH_NUMBER= 0.2 +AOA= 0.0 +SIDESLIP_ANGLE= 0.0 +FREESTREAM_TEMPERATURE= 300.0 +REYNOLDS_NUMBER= 5000000.0 +REYNOLDS_LENGTH= 1.0 + +% ---------------------- REFERENCE VALUE DEFINITION ---------------------------% +% +REF_ORIGIN_MOMENT_X = 0.25 +REF_ORIGIN_MOMENT_Y = 0.00 +REF_ORIGIN_MOMENT_Z = 0.00 +REF_LENGTH= 1.0 +REF_AREA= 2.0 + +% -------------------- FLUID PROPERTIES ------------------------------------- % +% +FLUID_MODEL= IDEAL_GAS +% +MOLECULAR_WEIGHT= 28.960 +% +SPECIFIC_HEAT_CP = 1009.39 +% +CONDUCTIVITY_MODEL= CONSTANT_CONDUCTIVITY +THERMAL_CONDUCTIVITY_CONSTANT= 0.0258 +% +PRANDTL_LAM= 0.72 +TURBULENT_CONDUCTIVITY_MODEL= CONSTANT_PRANDTL_TURB +PRANDTL_TURB= 0.90 +% +% --------------------------- VISCOSITY MODEL ---------------------------------% +% +VISCOSITY_MODEL= CONSTANT_VISCOSITY +% +MU_CONSTANT= 1.8551E-05 +% +% -------------------- BOUNDARY CONDITION DEFINITION --------------------------% +% +MARKER_HEATFLUX= ( wall, 0.0 ) +SPECIFIED_INLET_PROFILE= NO +INLET_FILENAME= inlet.dat +INC_INLET_TYPE= VELOCITY_INLET +MARKER_INLET= ( inlet, 302.4, 118309.784, 1.0, 0.0, 0.0 ) +MARKER_INLET_SPECIES= ( inlet, 1.0 ) +MARKER_OUTLET= ( outlet, 115056.0, farfield, 115056.0 ) +MARKER_SYM= ( symmetry ) +MARKER_PLOTTING= ( wall ) +MARKER_MONITORING= ( wall ) + +% -------------------- SCALAR TRANSPORT ---------------------------------------% +% +KIND_SCALAR_MODEL= SPECIES_TRANSPORT +DIFFUSIVITY_MODEL= CONSTANT_DIFFUSIVITY +DIFFUSIVITY_CONSTANT= 0.001 +CONV_NUM_METHOD_SPECIES= SCALAR_UPWIND +MUSCL_SPECIES= NO +SLOPE_LIMITER_SPECIES = NONE +TIME_DISCRE_SPECIES= EULER_IMPLICIT +SPECIES_INIT= 1.0 +SPECIES_CLIPPING= YES +SPECIES_CLIPPING_MIN= 0.0 +SPECIES_CLIPPING_MAX= 1.0 + +% ------------- COMMON PARAMETERS DEFINING THE NUMERICAL METHOD ---------------% +% +NUM_METHOD_GRAD= GREEN_GAUSS +CFL_NUMBER= 10.0 +CFL_ADAPT= YES +CFL_ADAPT_PARAM= ( 0.5, 2.0, 1.0, 1000.0 ) +ITER= 10000 +% ------------------------ LINEAR SOLVER DEFINITION ---------------------------% +% +LINEAR_SOLVER= FGMRES +LINEAR_SOLVER_PREC= ILU +LINEAR_SOLVER_ERROR= 1E-5 +LINEAR_SOLVER_ITER= 5 +% +% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% +% +CONV_NUM_METHOD_FLOW= ROE +MUSCL_FLOW= NO +SLOPE_LIMITER_FLOW= NONE +JST_SENSOR_COEFF= ( 0.5, 0.02 ) +TIME_DISCRE_FLOW= EULER_IMPLICIT + +% -------------------- TURBULENT NUMERICAL METHOD DEFINITION ------------------% +% +CONV_NUM_METHOD_TURB= SCALAR_UPWIND +MUSCL_TURB= NO +SLOPE_LIMITER_TURB= VENKATAKRISHNAN +TIME_DISCRE_TURB= EULER_IMPLICIT + +% --------------------------- CONVERGENCE PARAMETERS --------------------------% +CONV_RESIDUAL_MINVAL= -15 +CONV_STARTITER= 10 +CONV_CAUCHY_ELEMS= 100 +CONV_CAUCHY_EPS= 1E-6 + +% ------------------------- INPUT/OUTPUT INFORMATION --------------------------% +% +MESH_FILENAME= mesh_flatplate_turb_137x97.su2 +SCREEN_OUTPUT= INNER_ITER WALL_TIME \ + RMS_DENSITY RMS_MOMENTUM-X RMS_MOMENTUM-Y RMS_ENERGY RMS_TKE RMS_DISSIPATION RMS_SPECIES_0 \ + LINSOL_ITER LINSOL_RESIDUAL \ + LINSOL_ITER_TURB LINSOL_RESIDUAL_TURB \ + LINSOL_ITER_SPECIES LINSOL_RESIDUAL_SPECIES \ + SURFACE_SPECIES_0 +SCREEN_WRT_FREQ_INNER= 10 +HISTORY_OUTPUT= ITER RMS_RES LINSOL SPECIES_COEFF SPECIES_COEFF_SURF +CONV_FILENAME= history +MARKER_ANALYZE= outlet +MARKER_ANALYZE_AVERAGE= AREA +OUTPUT_FILES= RESTART_ASCII, PARAVIEW_MULTIBLOCK +VOLUME_OUTPUT= RESIDUAL, PRIMITIVE +OUTPUT_WRT_FREQ= 100 +READ_BINARY_RESTART= NO +RESTART_FILENAME= restart +SOLUTION_FILENAME= solution + From 6103be8b56a4feebd3bcf154324f3eee9a39a9b7 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Sat, 22 Feb 2025 13:57:13 +0100 Subject: [PATCH 10/30] rename --- TestCases/parallel_regression.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/TestCases/parallel_regression.py b/TestCases/parallel_regression.py index 07dcfdc891ac..6eed700502a1 100644 --- a/TestCases/parallel_regression.py +++ b/TestCases/parallel_regression.py @@ -393,12 +393,12 @@ def main(): test_list.append(turb_flatplate_species) # Flat plate (compressible) species transport using constant conductivity model - turb_flatplate_species = TestCase('turb_flatplate_species_ConstConductivity') - turb_flatplate_species.cfg_dir = "rans/flatplate" - turb_flatplate_species.cfg_file = "turb_SA_flatplate_species_ConstConductivity.cfg" - turb_flatplate_species.test_iter = 20 - turb_flatplate_species.test_vals = [-4.243064, -0.634797, -1.706652, 1.231264, -3.266203, 9.000000, -6.632972, 5.000000, -6.985977, 10.000000, -6.007208, 0.996237, 0.996237] - test_list.append(turb_flatplate_species) + turb_flatplate_species_ConstConductivity = TestCase('turb_flatplate_species_ConstConductivity') + turb_flatplate_species_ConstConductivity.cfg_dir = "rans/flatplate" + turb_flatplate_species_ConstConductivity.cfg_file = "turb_SA_flatplate_species_ConstConductivity.cfg" + turb_flatplate_species_ConstConductivity.test_iter = 20 + turb_flatplate_species_ConstConductivity.test_vals = [-4.243064, -0.634797, -1.706652, 1.231264, -3.266203, 9.000000, -6.632972, 5.000000, -6.985977, 10.000000, -6.007208, 0.996237, 0.996237] + test_list.append(turb_flatplate_species_ConstConductivity) # Flat plate SST compressibility correction Wilcox turb_flatplate_CC_Wilcox = TestCase('turb_flatplate_CC_Wilcox') From 3c527a171739eaeec41bb7b06b8e4d8a94b417fd Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Sat, 22 Feb 2025 14:55:00 +0100 Subject: [PATCH 11/30] update regression test --- TestCases/parallel_regression.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TestCases/parallel_regression.py b/TestCases/parallel_regression.py index 6eed700502a1..d37e5bf0ea22 100644 --- a/TestCases/parallel_regression.py +++ b/TestCases/parallel_regression.py @@ -397,7 +397,7 @@ def main(): turb_flatplate_species_ConstConductivity.cfg_dir = "rans/flatplate" turb_flatplate_species_ConstConductivity.cfg_file = "turb_SA_flatplate_species_ConstConductivity.cfg" turb_flatplate_species_ConstConductivity.test_iter = 20 - turb_flatplate_species_ConstConductivity.test_vals = [-4.243064, -0.634797, -1.706652, 1.231264, -3.266203, 9.000000, -6.632972, 5.000000, -6.985977, 10.000000, -6.007208, 0.996237, 0.996237] + turb_flatplate_species_ConstConductivity.test_vals = [-4.385761, -0.753729, -2.143649, 1.114937, -4.088701, 5.000000, -2.508344, 4.000000, -5.119461, 5.000000, -2.723197, 0.999990, 0.999990] test_list.append(turb_flatplate_species_ConstConductivity) # Flat plate SST compressibility correction Wilcox From f56f3c046d9cf277505c4c6c8783851cb425576b Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Thu, 31 Jul 2025 11:58:26 +0200 Subject: [PATCH 12/30] additional cleaning --- SU2_CFD/include/numerics/CNumerics.hpp | 1 - .../include/numerics/flow/flow_diffusion.hpp | 16 ++++----- .../include/solvers/CFVMFlowSolverBase.inl | 7 +--- .../cht/CConjugateHeatInterface.cpp | 9 +---- SU2_CFD/src/numerics/CNumerics.cpp | 1 - SU2_CFD/src/numerics/flow/flow_diffusion.cpp | 33 ++++++++----------- 6 files changed, 22 insertions(+), 45 deletions(-) diff --git a/SU2_CFD/include/numerics/CNumerics.hpp b/SU2_CFD/include/numerics/CNumerics.hpp index 2ad25b65f1b6..58cbe31d14e4 100644 --- a/SU2_CFD/include/numerics/CNumerics.hpp +++ b/SU2_CFD/include/numerics/CNumerics.hpp @@ -53,7 +53,6 @@ class CNumerics { su2double Gamma_Minus_One; /*!< \brief Fluids's Gamma - 1.0 . */ su2double Minf; /*!< \brief Free stream Mach number . */ su2double Gas_Constant; /*!< \brief Gas constant. */ - su2double Prandtl_Lam; /*!< \brief Laminar Prandtl's number. */ su2double Prandtl_Turb; /*!< \brief Turbulent Prandtl's number. */ su2double MassFlux; /*!< \brief Mass flux across edge. */ su2double diff --git a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp index 2a64c6fbcb77..d2a359d84e68 100644 --- a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp +++ b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp @@ -57,6 +57,7 @@ class CAvgGrad_Base : public CNumerics { su2double **Mean_GradPrimVar = nullptr, /*!< \brief Mean value of the gradient. */ Mean_Laminar_Viscosity, /*!< \brief Mean value of the viscosity. */ Mean_Eddy_Viscosity, /*!< \brief Mean value of the eddy viscosity. */ + Mean_Thermal_Conductivity, /*!< \brief Mean value of the thermal conductivity. */ Mean_turb_ke, /*!< \brief Mean value of the turbulent kinetic energy. */ Mean_TauWall, /*!< \brief Mean wall shear stress (wall functions). */ TauWall_i, TauWall_j, /*!< \brief Wall shear stress at point i and j (wall functions). */ @@ -251,12 +252,9 @@ class CAvgGrad_Flow final : public CAvgGrad_Base { /*! * \brief Compute the heat flux due to molecular and turbulent diffusivity * \param[in] val_gradprimvar - Gradient of the primitive variables. - * \param[in] val_laminar_viscosity - Laminar viscosity. - * \param[in] val_eddy_viscosity - Eddy viscosity. + * \param[in] val_thermal_conductivity - Thermal Conductivity. */ - void SetHeatFluxVector(const su2double* const *val_gradprimvar, - su2double val_laminar_viscosity, - su2double val_eddy_viscosity); + void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_thermal_conductivity); /*! * \brief Compute the Jacobian of the heat flux vector @@ -272,8 +270,8 @@ class CAvgGrad_Flow final : public CAvgGrad_Base { * \param[in] val_normal - Normal vector, the norm of the vector is the area of the face. */ void SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, - su2double val_laminar_viscosity, - su2double val_eddy_viscosity, + su2double val_heat_capacity, + su2double val_thermal_conductivity, su2double val_dist_ij, const su2double *val_normal); }; @@ -354,11 +352,9 @@ class CGeneralAvgGrad_Flow final : public CAvgGrad_Base { /*! * \brief Compute the heat flux due to molecular and turbulent diffusivity * \param[in] val_gradprimvar - Gradient of the primitive variables. - * \param[in] val_laminar_viscosity - Laminar viscosity. * \param[in] val_thermal_conductivity - Thermal Conductivity. */ - void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_laminar_viscosity, - su2double val_thermal_conductivity); + void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_thermal_conductivity); /*! * \brief Compute the Jacobian of the heat flux vector diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl index a0b6e6a30129..cd8e4986701b 100644 --- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl +++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl @@ -2402,7 +2402,6 @@ void CFVMFlowSolverBase::Friction_Forces(const CGeometry* geometr const su2double Gas_Constant = config->GetGas_ConstantND(); auto Origin = config->GetRefOriginMoment(0); - const su2double Prandtl_Lam = config->GetPrandtl_Lam(); const bool energy = config->GetEnergy_Equation(); const bool QCR = config->GetSAParsedOptions().qcr2000; const bool axisymmetric = config->GetAxisymmetric(); @@ -2543,11 +2542,7 @@ void CFVMFlowSolverBase::Friction_Forces(const CGeometry* geometr /*--- Compute total and maximum heat flux on the wall ---*/ if (!nemo) { - if (FlowRegime == ENUM_REGIME::COMPRESSIBLE) { - Cp = (Gamma / Gamma_Minus_One) * Gas_Constant; - thermal_conductivity = Cp * Viscosity / Prandtl_Lam; - } - if (FlowRegime == ENUM_REGIME::INCOMPRESSIBLE) { + if ((FlowRegime == ENUM_REGIME::COMPRESSIBLE) || (FlowRegime == ENUM_REGIME::INCOMPRESSIBLE)) { thermal_conductivity = nodes->GetThermalConductivity(iPoint); } diff --git a/SU2_CFD/src/interfaces/cht/CConjugateHeatInterface.cpp b/SU2_CFD/src/interfaces/cht/CConjugateHeatInterface.cpp index 15b10fcfdf2b..58d60d17d0c0 100644 --- a/SU2_CFD/src/interfaces/cht/CConjugateHeatInterface.cpp +++ b/SU2_CFD/src/interfaces/cht/CConjugateHeatInterface.cpp @@ -75,14 +75,7 @@ void CConjugateHeatInterface::GetDonor_Variable(CSolver *donor_solution, CGeomet if (compressible_flow) { - const su2double Gamma = donor_config->GetGamma(); - const su2double Gas_Constant = donor_config->GetGas_ConstantND(); - const su2double Cp = (Gamma / (Gamma - 1.0)) * Gas_Constant; - - const su2double Prandtl_Lam = donor_config->GetPrandtl_Lam(); - const su2double laminar_viscosity = donor_solution->GetNodes()->GetLaminarViscosity(Point_Donor); // TDE check for consistency - - const su2double thermal_conductivityND = Cp*(laminar_viscosity/Prandtl_Lam); + const su2double thermal_conductivityND = donor_solution->GetNodes()->GetThermalConductivity(Point_Donor); heat_flux_density = thermal_conductivityND*dTdn; if ((donor_config->GetKind_CHT_Coupling() == CHT_COUPLING::DIRECT_TEMPERATURE_ROBIN_HEATFLUX) || diff --git a/SU2_CFD/src/numerics/CNumerics.cpp b/SU2_CFD/src/numerics/CNumerics.cpp index 2633e79827bd..7f5b4be90d03 100644 --- a/SU2_CFD/src/numerics/CNumerics.cpp +++ b/SU2_CFD/src/numerics/CNumerics.cpp @@ -51,7 +51,6 @@ CNumerics::CNumerics(unsigned short val_nDim, unsigned short val_nVar, Gamma = config->GetGamma(); Gamma_Minus_One = Gamma - 1.0; - Prandtl_Lam = config->GetPrandtl_Lam(); Prandtl_Turb = config->GetPrandtl_Turb(); Gas_Constant = config->GetGas_ConstantND(); diff --git a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp index 4305dfe7d3ca..ded7c4787246 100644 --- a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp +++ b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp @@ -397,11 +397,13 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) Laminar_Viscosity_i = V_i[nDim+5]; Laminar_Viscosity_j = V_j[nDim+5]; Eddy_Viscosity_i = V_i[nDim+6]; Eddy_Viscosity_j = V_j[nDim+6]; + Thermal_Conductivity_i = V_i[nDim+7]; Thermal_Conductivity_j = V_j[nDim+7]; /*--- Mean Viscosities and turbulent kinetic energy---*/ Mean_Laminar_Viscosity = 0.5*(Laminar_Viscosity_i + Laminar_Viscosity_j); Mean_Eddy_Viscosity = 0.5*(Eddy_Viscosity_i + Eddy_Viscosity_j); + Mean_Thermal_Conductivity = 0.5*(Thermal_Conductivity_i + Thermal_Conductivity_j); Mean_turb_ke = 0.5*(turb_ke_i + turb_ke_j); /*--- Mean gradient approximation ---*/ @@ -439,8 +441,7 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) if (config->GetSAParsedOptions().qcr2000) AddQCR(nDim, &Mean_GradPrimVar[1], tau); if (Mean_TauWall > 0) AddTauWall(UnitNormal, Mean_TauWall); - SetHeatFluxVector(Mean_GradPrimVar, Mean_Laminar_Viscosity, - Mean_Eddy_Viscosity); + SetHeatFluxVector(Mean_GradPrimVar, Mean_Thermal_Conductivity); GetViscousProjFlux(Mean_PrimVar, Normal); @@ -459,8 +460,9 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) const su2double dist_ij = sqrt(dist_ij_2); SetTauJacobian(Mean_PrimVar, Mean_Laminar_Viscosity, Mean_Eddy_Viscosity, dist_ij, UnitNormal); - SetHeatFluxJacobian(Mean_PrimVar, Mean_Laminar_Viscosity, - Mean_Eddy_Viscosity, dist_ij, UnitNormal); + Cp_i = V_i[nDim + 8]; Cp_j = V_j[nDim + 8]; + const su2double Mean_Heat_Capacity = 0.5 * (Cp_i + Cp_j); + SetHeatFluxJacobian(Mean_PrimVar, Mean_Heat_Capacity, Mean_Thermal_Conductivity, dist_ij, UnitNormal); GetViscousProjJacs(Mean_PrimVar, Area, Proj_Flux_Tensor, Jacobian_i, Jacobian_j); } @@ -474,23 +476,19 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) } -void CAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradprimvar, - const su2double val_laminar_viscosity, - const su2double val_eddy_viscosity) { - - const su2double Cp = (Gamma / Gamma_Minus_One) * Gas_Constant; - const su2double heat_flux_factor = Cp * (val_laminar_viscosity/Prandtl_Lam + val_eddy_viscosity/Prandtl_Turb); +void CAvgGrad_Flow::SetHeatFluxVector(const su2double* const* val_gradprimvar, + const su2double val_thermal_conductivity) { /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ for (unsigned short iDim = 0; iDim < nDim; iDim++) { - heat_flux_vector[iDim] = heat_flux_factor*val_gradprimvar[0][iDim]; + heat_flux_vector[iDim] = val_thermal_conductivity*val_gradprimvar[0][iDim]; } } void CAvgGrad_Flow::SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, - const su2double val_laminar_viscosity, - const su2double val_eddy_viscosity, + const su2double val_heat_capacity, + const su2double val_thermal_conductivity, const su2double val_dist_ij, const su2double *val_normal) { su2double sqvel = 0.0; @@ -509,7 +507,7 @@ void CAvgGrad_Flow::SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, const su2double R_dTdu1 = -phi*val_Mean_PrimVar[1]; const su2double R_dTdu2 = -phi*val_Mean_PrimVar[2]; - const su2double heat_flux_factor = val_laminar_viscosity/Prandtl_Lam + val_eddy_viscosity/Prandtl_Turb; + const su2double heat_flux_factor = val_thermal_conductivity / val_heat_capacity; const su2double cpoR = Gamma/Gamma_Minus_One; // cp over R const su2double conductivity_over_Rd = cpoR*heat_flux_factor/val_dist_ij; @@ -796,14 +794,11 @@ CGeneralAvgGrad_Flow::CGeneralAvgGrad_Flow(unsigned short val_nDim, : CAvgGrad_Base(val_nDim, val_nVar, val_nDim+4, val_correct_grad, config) { } void CGeneralAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradprimvar, - const su2double val_laminar_viscosity, const su2double val_thermal_conductivity) { - const su2double heat_flux_factor = val_thermal_conductivity; - /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ for (unsigned short iDim = 0; iDim < nDim; iDim++) { - heat_flux_vector[iDim] = heat_flux_factor*val_gradprimvar[0][iDim]; + heat_flux_vector[iDim] = val_thermal_conductivity * val_gradprimvar[0][iDim]; } } @@ -947,7 +942,7 @@ CNumerics::ResidualType<> CGeneralAvgGrad_Flow::ComputeResidual(const CConfig* c if (config->GetSAParsedOptions().qcr2000) AddQCR(nDim, &Mean_GradPrimVar[1], tau); if (Mean_TauWall > 0) AddTauWall(UnitNormal, Mean_TauWall); - SetHeatFluxVector(Mean_GradPrimVar, Mean_Laminar_Viscosity, Mean_Thermal_Conductivity); + SetHeatFluxVector(Mean_GradPrimVar, Mean_Thermal_Conductivity); GetViscousProjFlux(Mean_PrimVar, Normal); From 484a3ee8b38afa33bd404512c5d6860f1afe9f70 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Fri, 1 Aug 2025 22:00:38 +0200 Subject: [PATCH 13/30] further cleaning --- Common/include/CConfig.hpp | 26 +++++++++++++++++++ Common/src/geometry/CPhysicalGeometryFEM.cpp | 5 ++-- .../include/solvers/CFVMFlowSolverBase.inl | 3 +-- SU2_CFD/include/solvers/CHeatSolver.hpp | 12 +++------ .../continuous_adjoint/adj_diffusion.cpp | 24 ++++++++--------- .../continuous_adjoint/adj_sources.cpp | 6 ++--- SU2_CFD/src/solvers/CAdjNSSolver.cpp | 24 +++++++---------- SU2_CFD/src/solvers/CEulerSolver.cpp | 10 +++++-- SU2_CFD/src/solvers/CHeatSolver.cpp | 18 ++++++------- SU2_CFD/src/solvers/CNSSolver.cpp | 2 +- 10 files changed, 75 insertions(+), 55 deletions(-) diff --git a/Common/include/CConfig.hpp b/Common/include/CConfig.hpp index 45c4618fa485..c2fd652f745d 100644 --- a/Common/include/CConfig.hpp +++ b/Common/include/CConfig.hpp @@ -899,6 +899,7 @@ class CConfig { ModVel_FreeStreamND, /*!< \brief Non-dimensional magnitude of the free-stream velocity of the fluid. */ Density_FreeStream, /*!< \brief Free-stream density of the fluid. */ Viscosity_FreeStream, /*!< \brief Free-stream viscosity of the fluid. */ + ThermalConductivity_FreeStream, /*!< \brief Free-stream thermal conductivity of the fluid. */ Tke_FreeStream, /*!< \brief Total turbulent kinetic energy of the fluid. */ Intermittency_FreeStream, /*!< \brief Freestream intermittency (for sagt transition model) of the fluid. */ ReThetaT_FreeStream, /*!< \brief Freestream Transition Momentum Thickness Reynolds Number (for LM transition model) of the fluid. */ @@ -940,6 +941,7 @@ class CConfig { Velocity_FreeStreamND[3], /*!< \brief Farfield velocity values (external flow). */ Energy_FreeStreamND, /*!< \brief Farfield energy value (external flow). */ Viscosity_FreeStreamND, /*!< \brief Farfield viscosity value (external flow). */ + ThermalConductivity_FreeStreamND, /*!< \brief Farfield thermal conductivity value (external flow). */ Tke_FreeStreamND, /*!< \brief Farfield kinetic energy (external flow). */ Omega_FreeStreamND, /*!< \brief Specific dissipation (external flow). */ Omega_FreeStream; /*!< \brief Specific dissipation (external flow). */ @@ -1753,6 +1755,12 @@ class CConfig { */ su2double GetViscosity_FreeStream(void) const { return Viscosity_FreeStream; } + /*! + * \brief Get the value of the freestream thermal conductivity. + * \return Freestream thermal conductivity. + */ + su2double GetThermalConductivity_FreeStream(void) const { return Viscosity_FreeStream; } + /*! * \brief Get the value of the freestream density. * \return Freestream density. @@ -1984,6 +1992,12 @@ class CConfig { */ su2double GetViscosity_FreeStreamND(void) const { return Viscosity_FreeStreamND; } + /*! + * \brief Get the value of the non-dimensionalized freestream thermal conductivity. + * \return Non-dimensionalized freestream thermal conductivity. + */ + su2double GetThermalConductivity_FreeStreamND(void) const { return ThermalConductivity_FreeStreamND; } + /*! * \brief Get the value of the non-dimensionalized freestream viscosity. * \return Non-dimensionalized freestream viscosity. @@ -2588,6 +2602,12 @@ class CConfig { */ void SetViscosity_FreeStream(su2double val_viscosity_freestream) { Viscosity_FreeStream = val_viscosity_freestream; } + /*! + * \brief Set the freestream thermal conductivity. + * \param[in] val_thermalconductivity_freestream - Value of the freestream thermal conductivity. + */ + void SetThermalConductivity_FreeStream(su2double val_thermalconductivity_freestream) { ThermalConductivity_FreeStream = val_thermalconductivity_freestream; } + /*! * \brief Set the magnitude of the free-stream velocity. * \param[in] val_modvel_freestream - Magnitude of the free-stream velocity. @@ -2650,6 +2670,12 @@ class CConfig { */ void SetViscosity_FreeStreamND(su2double val_viscosity_freestreamnd) { Viscosity_FreeStreamND = val_viscosity_freestreamnd; } + /*! + * \brief Set the non-dimensional free-stream thermal conductivity. + * \param[in] val_thermalconductivity_freestreamnd - Value of the non-dimensional free-stream thermal conductivity. + */ + void SetThermalConductivity_FreeStreamND(su2double val_thermalconductivity_freestreamnd) { ThermalConductivity_FreeStreamND = val_thermalconductivity_freestreamnd; } + /*! * \brief Set the non-dimensional freestream turbulent kinetic energy. * \param[in] val_tke_freestreamnd - Value of the non-dimensional freestream turbulent kinetic energy. diff --git a/Common/src/geometry/CPhysicalGeometryFEM.cpp b/Common/src/geometry/CPhysicalGeometryFEM.cpp index f56dbdaf019e..ffc9b10c50f1 100644 --- a/Common/src/geometry/CPhysicalGeometryFEM.cpp +++ b/Common/src/geometry/CPhysicalGeometryFEM.cpp @@ -2228,11 +2228,12 @@ void CPhysicalGeometry::DetermineTimeLevelElements(CConfig* config, const vector step is based on free stream values at the moment, but this is easy to change, if needed. ---*/ const su2double Gamma = config->GetGamma(); - const su2double Prandtl = config->GetPrandtl_Lam(); const su2double Density = config->GetDensity_FreeStreamND(); const su2double* Vel = config->GetVelocity_FreeStreamND(); const su2double Viscosity = config->GetViscosity_FreeStreamND(); + const su2double Thermal_Conductivity = config->GetThermalConductivity_FreeStreamND(); + const su2double Cp = config->GetSpecific_Heat_CpND(); su2double VelMag = 0.0; for (unsigned short iDim = 0; iDim < nDim; ++iDim) VelMag += Vel[iDim] * Vel[iDim]; @@ -2253,7 +2254,7 @@ void CPhysicalGeometry::DetermineTimeLevelElements(CConfig* config, const vector const su2double charVel = sqrt(charVel2); /* Also the viscous contribution to the time step is constant. Compute it. */ - const su2double factHeatFlux = Gamma / Prandtl; + const su2double factHeatFlux = (Thermal_Conductivity * Gamma) / (Cp * Viscosity); const su2double lambdaOverMu = -TWO3; const su2double radVisc = max(max(1.0, 2.0 + lambdaOverMu), factHeatFlux) * Viscosity / Density; diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl index cd8e4986701b..4f1811d23e3e 100644 --- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl +++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl @@ -2388,7 +2388,7 @@ void CFVMFlowSolverBase::Friction_Forces(const CGeometry* geometr unsigned long iVertex, iPoint, iPointNormal; unsigned short iMarker, iMarker_Monitoring, iDim, jDim; su2double Viscosity = 0.0, Area, Density = 0.0, FrictionVel, - UnitNormal[3] = {0.0}, TauElem[3] = {0.0}, Tau[3][3] = {{0.0}}, Cp, + UnitNormal[3] = {0.0}, TauElem[3] = {0.0}, Tau[3][3] = {{0.0}}, thermal_conductivity, MaxNorm = 8.0, Grad_Vel[3][3] = {{0.0}}, Grad_Temp[3] = {0.0}, Grad_Temp_ve[3] = {0.0}, AxiFactor; const su2double *Coord = nullptr, *Coord_Normal = nullptr, *Normal = nullptr; @@ -2399,7 +2399,6 @@ void CFVMFlowSolverBase::Friction_Forces(const CGeometry* geometr const su2double RefLength = config->GetRefLength(); const su2double RefHeatFlux = config->GetHeat_Flux_Ref(); const su2double RefTemperature = config->GetTemperature_Ref(); - const su2double Gas_Constant = config->GetGas_ConstantND(); auto Origin = config->GetRefOriginMoment(0); const bool energy = config->GetEnergy_Equation(); diff --git a/SU2_CFD/include/solvers/CHeatSolver.hpp b/SU2_CFD/include/solvers/CHeatSolver.hpp index 1a8f4e7e1d29..b86f319f2b20 100644 --- a/SU2_CFD/include/solvers/CHeatSolver.hpp +++ b/SU2_CFD/include/solvers/CHeatSolver.hpp @@ -67,7 +67,6 @@ class CHeatSolver final : public CScalarSolver { if (!geometry->nodes->GetDomain(iPoint)) return; const bool implicit = config->GetKind_TimeIntScheme() == EULER_IMPLICIT; - const su2double prandtl_lam = config->GetPrandtl_Lam(); const su2double const_diffusivity = config->GetThermalDiffusivity(); const auto Point_Normal = geometry->vertex[iMarker][iVertex]->GetNormal_Neighbor(); @@ -83,7 +82,8 @@ class CHeatSolver final : public CScalarSolver { su2double thermal_diffusivity = const_diffusivity; if (flow) { - thermal_diffusivity = flow_solver->GetNodes()->GetLaminarViscosity(iPoint) / prandtl_lam; + thermal_diffusivity = + flow_solver->GetNodes()->GetThermalConductivity(iPoint) / flow_solver->GetNodes()->GetSpecificHeatCp(iPoint); } LinSysRes(iPoint, 0) -= thermal_diffusivity * dTdn * Area; @@ -107,18 +107,14 @@ class CHeatSolver final : public CScalarSolver { const CVariable* flow_nodes = flow ? solver_container[FLOW_SOL]->GetNodes() : nullptr; const su2double const_diffusivity = config->GetThermalDiffusivity(); - const su2double pr_lam = config->GetPrandtl_Lam(); - const su2double pr_turb = config->GetPrandtl_Turb(); su2double thermal_diffusivity_i{}, thermal_diffusivity_j{}; /*--- Computes the thermal diffusivity to use in the viscous numerics. ---*/ auto compute_thermal_diffusivity = [&](unsigned long iPoint, unsigned long jPoint) { if (flow) { - thermal_diffusivity_i = flow_nodes->GetLaminarViscosity(iPoint) / pr_lam + - flow_nodes->GetEddyViscosity(iPoint) / pr_turb; - thermal_diffusivity_j = flow_nodes->GetLaminarViscosity(jPoint) / pr_lam + - flow_nodes->GetEddyViscosity(jPoint) / pr_turb; + thermal_diffusivity_i = flow_nodes->GetThermalConductivity(iPoint) / flow_nodes->GetSpecificHeatCp(iPoint); + thermal_diffusivity_j = flow_nodes->GetThermalConductivity(jPoint) / flow_nodes->GetSpecificHeatCp(jPoint); numerics->SetDiffusionCoeff(&thermal_diffusivity_i, &thermal_diffusivity_j); } else { diff --git a/SU2_CFD/src/numerics/continuous_adjoint/adj_diffusion.cpp b/SU2_CFD/src/numerics/continuous_adjoint/adj_diffusion.cpp index ab02add95881..0ec36a67c561 100644 --- a/SU2_CFD/src/numerics/continuous_adjoint/adj_diffusion.cpp +++ b/SU2_CFD/src/numerics/continuous_adjoint/adj_diffusion.cpp @@ -65,9 +65,6 @@ void CAvgGrad_AdjFlow::ComputeResidual(su2double *val_residual_i, su2double *val su2double sq_vel_j, ViscDens_j, XiDens_j; su2double dist_ij_2, dPhiE_dn; - su2double Prandtl_Lam = config->GetPrandtl_Lam(); - su2double Prandtl_Turb = config->GetPrandtl_Turb(); - /*--- States in point i ---*/ sq_vel_i = 0.0; @@ -84,9 +81,11 @@ void CAvgGrad_AdjFlow::ComputeResidual(su2double *val_residual_i, su2double *val Laminar_Viscosity_i = V_i[nDim+5]; Eddy_Viscosity_i = V_i[nDim+6]; + Thermal_Conductivity_i = V_i[nDim+7]; + Cp_i = V_i[nDim+8]; ViscDens_i = (Laminar_Viscosity_i + Eddy_Viscosity_i) / Density_i; - XiDens_i = Gamma*(Laminar_Viscosity_i/Prandtl_Lam + Eddy_Viscosity_i/Prandtl_Turb) / Density_i; + XiDens_i = (Gamma * Thermal_Conductivity_i) / (Density_i * Cp_i); /*--- States in point j ---*/ @@ -104,9 +103,11 @@ void CAvgGrad_AdjFlow::ComputeResidual(su2double *val_residual_i, su2double *val Laminar_Viscosity_j = V_j[nDim+5]; Eddy_Viscosity_j = V_j[nDim+6]; + Thermal_Conductivity_j = V_j[nDim+7]; + Cp_j = V_j[nDim+8]; ViscDens_j = (Laminar_Viscosity_j + Eddy_Viscosity_j) / Density_j; - XiDens_j = Gamma*(Laminar_Viscosity_j/Prandtl_Lam + Eddy_Viscosity_j/Prandtl_Turb) / Density_j; + XiDens_j = (Gamma * Thermal_Conductivity_j) / (Density_j * Cp_j); /*--- Compute vector going from iPoint to jPoint ---*/ @@ -197,9 +198,6 @@ void CAvgGradCorrected_AdjFlow::ComputeResidual(su2double *val_residual_i, su2double Density_j, sq_vel_j, Pressure_j, ViscDens_j, XiDens_j; su2double dist_ij_2, dPhiE_dn; - su2double Prandtl_Lam = config->GetPrandtl_Lam(); - su2double Prandtl_Turb = config->GetPrandtl_Turb(); - /*--- States in point i ---*/ sq_vel_i = 0.0; @@ -215,10 +213,11 @@ void CAvgGradCorrected_AdjFlow::ComputeResidual(su2double *val_residual_i, Laminar_Viscosity_i = V_i[nDim+5]; Eddy_Viscosity_i = V_i[nDim+6]; + Thermal_Conductivity_i = V_i[nDim+7]; + Cp_i = V_i[nDim+8]; ViscDens_i = (Laminar_Viscosity_i + Eddy_Viscosity_i) / Density_i; - XiDens_i = Gamma*(Laminar_Viscosity_i/Prandtl_Lam + - Eddy_Viscosity_i/Prandtl_Turb) / Density_i; + XiDens_i = (Gamma * Thermal_Conductivity_i) / (Density_i * Cp_i); /*--- States in point j ---*/ @@ -235,10 +234,11 @@ void CAvgGradCorrected_AdjFlow::ComputeResidual(su2double *val_residual_i, Laminar_Viscosity_j = V_j[nDim+5]; Eddy_Viscosity_j = V_j[nDim+6]; + Thermal_Conductivity_j = V_j[nDim+7]; + Cp_j = V_j[nDim+8]; ViscDens_j = (Laminar_Viscosity_j + Eddy_Viscosity_j) / Density_j; - XiDens_j = Gamma*(Laminar_Viscosity_j/Prandtl_Lam + - Eddy_Viscosity_j/Prandtl_Turb) / Density_j; + XiDens_j = (Gamma * Thermal_Conductivity_j) / (Density_j * Cp_j); /*--- Compute vector going from iPoint to jPoint ---*/ diff --git a/SU2_CFD/src/numerics/continuous_adjoint/adj_sources.cpp b/SU2_CFD/src/numerics/continuous_adjoint/adj_sources.cpp index 2c15b371cefc..79c2c18e6023 100644 --- a/SU2_CFD/src/numerics/continuous_adjoint/adj_sources.cpp +++ b/SU2_CFD/src/numerics/continuous_adjoint/adj_sources.cpp @@ -362,15 +362,15 @@ void CSourceViscous_AdjFlow::ComputeResidual (su2double *val_residual, CConfig * // su2double Enthalpy = V_i[nDim+3]; su2double Laminar_Viscosity = V_i[nDim+5]; su2double Eddy_Viscosity = V_i[nDim+6]; + su2double Thermal_Conductivity = V_i[nDim+7]; + su2double Cp = V_i[nDim+8]; // su2double Energy = Enthalpy - Pressure/Density; su2double invDensity = 1.0/Density; su2double invDensitysq = invDensity*invDensity; su2double invDensitycube = invDensitysq*invDensity; - su2double Prandtl_Lam = config->GetPrandtl_Lam(); - su2double Prandtl_Turb = config->GetPrandtl_Turb(); su2double mu_tot_1 = Laminar_Viscosity + Eddy_Viscosity; - su2double mu_tot_2 = Laminar_Viscosity/Prandtl_Lam + Eddy_Viscosity/Prandtl_Turb; + su2double mu_tot_2 = Thermal_Conductivity / Cp; // su2double Gas_Constant = config->GetGas_ConstantND(); /*--- Required gradients of the flow variables, point j ---*/ diff --git a/SU2_CFD/src/solvers/CAdjNSSolver.cpp b/SU2_CFD/src/solvers/CAdjNSSolver.cpp index b3668068ba21..b3961a518c28 100644 --- a/SU2_CFD/src/solvers/CAdjNSSolver.cpp +++ b/SU2_CFD/src/solvers/CAdjNSSolver.cpp @@ -618,8 +618,6 @@ void CAdjNSSolver::Viscous_Sensitivity(CGeometry *geometry, CSolver **solver_con su2double Mach_Motion = config->GetMach_Motion(); unsigned short ObjFunc = config->GetKind_ObjFunc(); su2double Gas_Constant = config->GetGas_ConstantND(); - su2double Cp = (Gamma / Gamma_Minus_One) * Gas_Constant; - su2double Prandtl_Lam = config->GetPrandtl_Lam(); if (config->GetSystemMeasurements() == US) scale = 1.0/12.0; else scale = 1.0; @@ -687,7 +685,7 @@ void CAdjNSSolver::Viscous_Sensitivity(CGeometry *geometry, CSolver **solver_con Laminar_Viscosity = solver_container[FLOW_SOL]->GetNodes()->GetLaminarViscosity(iPoint); - heat_flux_factor = Cp * Laminar_Viscosity / Prandtl_Lam; + heat_flux_factor = solver_container[FLOW_SOL]->GetNodes()->GetThermalConductivity(iPoint); /*--- Compute face area and the unit normal to the surface ---*/ @@ -1172,7 +1170,7 @@ void CAdjNSSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_contai su2double *d, l1psi, vartheta, Sigma_5, phi[3] = {}; su2double sq_vel, ProjGridVel, Enthalpy = 0.0, *GridVel; su2double ViscDens, XiDens, Density, Pressure = 0.0, dPhiE_dn; - su2double Laminar_Viscosity = 0.0, Eddy_Viscosity = 0.0; + su2double Laminar_Viscosity = 0.0, Eddy_Viscosity = 0.0, Thermal_Conductivity = 0.0, Cp = 0.0; su2double Sigma_xx, Sigma_yy, Sigma_zz, Sigma_xy, Sigma_xz, Sigma_yz; su2double Sigma_xx5, Sigma_yy5, Sigma_zz5, Sigma_xy5, Sigma_xz5; su2double Sigma_yz5, eta_xx, eta_yy, eta_zz, eta_xy, eta_xz, eta_yz; @@ -1185,9 +1183,6 @@ void CAdjNSSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_contai bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); bool grid_movement = config->GetGrid_Movement(); - su2double Prandtl_Lam = config->GetPrandtl_Lam(); - su2double Prandtl_Turb = config->GetPrandtl_Turb(); - auto *Psi = new su2double[nVar]; auto **Tau = new su2double*[nDim]; for (iDim = 0; iDim < nDim; iDim++) @@ -1282,9 +1277,11 @@ void CAdjNSSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_contai Enthalpy = solver_container[FLOW_SOL]->GetNodes()->GetEnthalpy(iPoint); Laminar_Viscosity = solver_container[FLOW_SOL]->GetNodes()->GetLaminarViscosity(iPoint); Eddy_Viscosity = solver_container[FLOW_SOL]->GetNodes()->GetEddyViscosity(iPoint); // Should be zero at the wall + Thermal_Conductivity = solver_container[FLOW_SOL]->GetNodes()->GetThermalConductivity(iPoint); + Cp = solver_container[FLOW_SOL]->GetNodes()->GetSpecificHeatCp(iPoint); ViscDens = (Laminar_Viscosity + Eddy_Viscosity) / Density; - XiDens = Gamma * (Laminar_Viscosity/Prandtl_Lam + Eddy_Viscosity/Prandtl_Turb) / Density; + XiDens = (Gamma * Thermal_Conductivity) / (Density * Cp); /*--- Compute projections, velocity squared divided by two, and other inner products. Note that we are imposing v = u_wall from @@ -1559,10 +1556,7 @@ void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont bool grid_movement = config->GetGrid_Movement(); bool heat_flux_obj; - su2double Prandtl_Lam = config->GetPrandtl_Lam(); - su2double Prandtl_Turb = config->GetPrandtl_Turb(); - su2double Gas_Constant = config->GetGas_ConstantND(); - su2double Cp = (Gamma / Gamma_Minus_One) * Gas_Constant; + su2double Cp; su2double Thermal_Conductivity; su2double invrho3; su2double Volume; @@ -1643,6 +1637,7 @@ void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont /*--- Get transport coefficient information ---*/ Eddy_Viscosity = solver_container[FLOW_SOL]->GetNodes()->GetEddyViscosity(iPoint); Thermal_Conductivity = solver_container[FLOW_SOL]-> GetNodes()->GetThermalConductivity(iPoint); + Cp = solver_container[FLOW_SOL]-> GetNodes()->GetSpecificHeatCp(iPoint); // GradV = solver_container[FLOW_SOL]->GetNodes()->GetGradient_Primitive(iPoint); @@ -1657,8 +1652,7 @@ void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont /*--- Temperature gradient term ---*/ GradT = solver_container[FLOW_SOL]->GetNodes()->GetGradient_Primitive(iPoint)[0]; kGTdotn = 0.0; - for (iDim = 0; iDim < nDim; iDim++) - kGTdotn += (Thermal_Conductivity - Cp * Eddy_Viscosity/Prandtl_Turb) * GradT[iDim]*Normal[iDim]/Area; + for (iDim = 0; iDim < nDim; iDim++) kGTdotn += Thermal_Conductivity * GradT[iDim] * Normal[iDim] / Area; /*--- constant term to multiply max heat flux objective ---*/ Xi = solver_container[FLOW_SOL]->GetTotal_HeatFlux(); // versions for max heat flux Xi = pow(Xi, 1.0/pnorm-1.0)/pnorm; @@ -1785,7 +1779,7 @@ void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont SoundSpeed = sqrt(Gamma*Gamma_Minus_One*(Energy-sq_vel)); Pressure = (SoundSpeed * SoundSpeed * Density) / Gamma; ViscDens = (Laminar_Viscosity + Eddy_Viscosity) / Density; - XiDens = Gamma * (Laminar_Viscosity/Prandtl_Lam + Eddy_Viscosity/Prandtl_Turb) / Density; + XiDens = (Gamma * Thermal_Conductivity) / (Density * Cp); /*--- Average of the derivatives of the adjoint variables ---*/ PsiVar_Grad = nodes->GetGradient(iPoint); diff --git a/SU2_CFD/src/solvers/CEulerSolver.cpp b/SU2_CFD/src/solvers/CEulerSolver.cpp index 6ed259a03523..3f9ccbe82934 100644 --- a/SU2_CFD/src/solvers/CEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CEulerSolver.cpp @@ -787,14 +787,14 @@ void CEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMes su2double Temperature_FreeStream = 0.0, Mach2Vel_FreeStream = 0.0, ModVel_FreeStream = 0.0, Energy_FreeStream = 0.0, ModVel_FreeStreamND = 0.0, Velocity_Reynolds = 0.0, - Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, + Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, Thermal_Conductivity_FreeStream = 0.0, Density_FreeStream = 0.0, Pressure_FreeStream = 0.0, Tke_FreeStream = 0.0, Re_ThetaT_FreeStream = 0.0, Length_Ref = 0.0, Density_Ref = 0.0, Pressure_Ref = 0.0, Velocity_Ref = 0.0, Temperature_Ref = 0.0, Time_Ref = 0.0, Omega_Ref = 0.0, Force_Ref = 0.0, Gas_Constant_Ref = 0.0, Viscosity_Ref = 0.0, Conductivity_Ref = 0.0, Energy_Ref= 0.0, Froude = 0.0, Pressure_FreeStreamND = 0.0, Density_FreeStreamND = 0.0, Temperature_FreeStreamND = 0.0, Gas_ConstantND = 0.0, - Velocity_FreeStreamND[3] = {0.0, 0.0, 0.0}, Viscosity_FreeStreamND = 0.0, + Velocity_FreeStreamND[3] = {0.0, 0.0, 0.0}, Viscosity_FreeStreamND = 0.0, Thermal_Conductivity_FreeStreamND = 0.0, Tke_FreeStreamND = 0.0, Energy_FreeStreamND = 0.0, Total_UnstTimeND = 0.0, Delta_UnstTimeND = 0.0, TgammaR = 0.0, Heat_Flux_Ref = 0.0; @@ -944,8 +944,10 @@ void CEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMes viscosity, depending on the input option.---*/ auxFluidModel->SetLaminarViscosityModel(config); + auxFluidModel->SetThermalConductivityModel(config); Viscosity_FreeStream = auxFluidModel->GetLaminarViscosity(); + Thermal_Conductivity_FreeStream = auxFluidModel->GetThermalConductivity(); config->SetViscosity_FreeStream(Viscosity_FreeStream); Density_FreeStream = Reynolds*Viscosity_FreeStream/(Velocity_Reynolds*config->GetLength_Reynolds()); @@ -962,7 +964,9 @@ void CEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMes else { auxFluidModel->SetLaminarViscosityModel(config); + auxFluidModel->SetThermalConductivityModel(config); Viscosity_FreeStream = auxFluidModel->GetLaminarViscosity(); + Thermal_Conductivity_FreeStream = auxFluidModel->GetThermalConductivity(); config->SetViscosity_FreeStream(Viscosity_FreeStream); Energy_FreeStream = auxFluidModel->GetStaticEnergy() + 0.5*ModVel_FreeStream*ModVel_FreeStream; @@ -1046,6 +1050,8 @@ void CEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMes ModVel_FreeStreamND = sqrt(ModVel_FreeStreamND); config->SetModVel_FreeStreamND(ModVel_FreeStreamND); Viscosity_FreeStreamND = Viscosity_FreeStream / Viscosity_Ref; config->SetViscosity_FreeStreamND(Viscosity_FreeStreamND); + Thermal_Conductivity_FreeStreamND = Thermal_Conductivity_FreeStream / Conductivity_Ref; + config->SetThermalConductivity_FreeStreamND(Thermal_Conductivity_FreeStreamND); Tke_FreeStream = 3.0/2.0*(ModVel_FreeStream*ModVel_FreeStream*config->GetTurbulenceIntensity_FreeStream()*config->GetTurbulenceIntensity_FreeStream()); config->SetTke_FreeStream(Tke_FreeStream); diff --git a/SU2_CFD/src/solvers/CHeatSolver.cpp b/SU2_CFD/src/solvers/CHeatSolver.cpp index 217baf8f8d4e..14980f141931 100644 --- a/SU2_CFD/src/solvers/CHeatSolver.cpp +++ b/SU2_CFD/src/solvers/CHeatSolver.cpp @@ -598,7 +598,7 @@ void CHeatSolver::Heat_Fluxes(CGeometry *geometry, CSolver **solver_container, C su2double *Coord, *Coord_Normal, *Normal, Area, dist, Twall, dTdn; string Marker_Tag, HeatFlux_Tag; - const su2double thermal_diffusivity = flow ? config->GetViscosity_FreeStreamND()/config->GetPrandtl_Lam() : + const su2double thermal_diffusivity = flow ? config->GetThermalConductivity_FreeStreamND()/config->GetSpecific_Heat_Cp() : config->GetThermalDiffusivity(); AllBound_HeatFlux = 0.0; @@ -713,8 +713,6 @@ void CHeatSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, (config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_2ND); const su2double K_v = 0.25; - const su2double prandtl_lam = config->GetPrandtl_Lam(); - const su2double prandtl_turb = config->GetPrandtl_Turb(); const su2double constant_thermal_diffusivity = config->GetThermalDiffusivity(); const CVariable* flow_nodes = solver_container[FLOW_SOL] ? solver_container[FLOW_SOL]->GetNodes() : nullptr; @@ -746,12 +744,12 @@ void CHeatSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, const su2double Area2 = GeometryToolbox::SquaredNorm(nDim, Normal); if (flow) { - const su2double laminar_viscosity = 0.5 * (flow_nodes->GetLaminarViscosity(iPoint) + - flow_nodes->GetLaminarViscosity(jPoint)); - const su2double eddy_viscosity = 0.5 * (flow_nodes->GetEddyViscosity(iPoint) + - flow_nodes->GetEddyViscosity(jPoint)); + const su2double thermal_conductivity = 0.5 * (flow_nodes->GetThermalConductivity(iPoint) + + flow_nodes->GetThermalConductivity(jPoint)); + const su2double Cp = 0.5 * (flow_nodes->GetSpecificHeatCp(iPoint) + + flow_nodes->GetSpecificHeatCp(jPoint)); - const su2double thermal_diffusivity = laminar_viscosity / prandtl_lam + eddy_viscosity / prandtl_turb; + const su2double thermal_diffusivity = thermal_conductivity / Cp; nodes->AddMax_Lambda_Visc(iPoint, thermal_diffusivity * Area2); } else { nodes->AddMax_Lambda_Visc(iPoint, constant_thermal_diffusivity * Area2); @@ -780,8 +778,8 @@ void CHeatSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, const su2double Area2 = GeometryToolbox::SquaredNorm(nDim, Normal); if (flow) { - const su2double thermal_diffusivity = flow_nodes->GetLaminarViscosity(iPoint) / prandtl_lam + - flow_nodes->GetEddyViscosity(iPoint) / prandtl_turb; + const su2double thermal_diffusivity = + flow_nodes->GetThermalConductivity(iPoint) / flow_nodes->GetSpecificHeatCp(iPoint); nodes->AddMax_Lambda_Visc(iPoint, thermal_diffusivity * Area2); } else { nodes->AddMax_Lambda_Visc(iPoint, constant_thermal_diffusivity * Area2); diff --git a/SU2_CFD/src/solvers/CNSSolver.cpp b/SU2_CFD/src/solvers/CNSSolver.cpp index b3bacd9a454e..5c4e9104ff19 100644 --- a/SU2_CFD/src/solvers/CNSSolver.cpp +++ b/SU2_CFD/src/solvers/CNSSolver.cpp @@ -786,7 +786,7 @@ void CNSSolver::SetTau_Wall_WF(CGeometry *geometry, CSolver **solver_container, unsigned long smallYPlusCounter = 0; /*--- counts the number of wall cells where y+ < 5 ---*/ const su2double Gas_Constant = config->GetGas_ConstantND(); - const su2double Cp = (Gamma / Gamma_Minus_One) * Gas_Constant; + const su2double Cp = config->GetSpecific_Heat_CpND(); const unsigned short max_iter = config->GetwallModel_MaxIter(); const su2double relax = config->GetwallModel_RelFac(); From c8fff398f16d8692812f667a1c855ccdbad47c2d Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Sat, 2 Aug 2025 09:42:07 +0200 Subject: [PATCH 14/30] making thermal conductivity only laminar --- .../include/numerics/flow/flow_diffusion.hpp | 12 +++++++--- SU2_CFD/include/solvers/CHeatSolver.hpp | 10 ++++---- .../continuous_adjoint/adj_diffusion.cpp | 14 +++++++---- .../continuous_adjoint/adj_sources.cpp | 3 ++- SU2_CFD/src/numerics/flow/flow_diffusion.cpp | 23 +++++++++++++------ SU2_CFD/src/numerics/flow/flow_sources.cpp | 4 +++- SU2_CFD/src/solvers/CAdjNSSolver.cpp | 14 +++++++---- SU2_CFD/src/solvers/CHeatSolver.cpp | 8 +++++-- SU2_CFD/src/solvers/CNSSolver.cpp | 5 +++- SU2_CFD/src/variables/CNSVariable.cpp | 3 +-- 10 files changed, 67 insertions(+), 29 deletions(-) diff --git a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp index d2a359d84e68..878c8ff31f34 100644 --- a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp +++ b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp @@ -253,8 +253,9 @@ class CAvgGrad_Flow final : public CAvgGrad_Base { * \brief Compute the heat flux due to molecular and turbulent diffusivity * \param[in] val_gradprimvar - Gradient of the primitive variables. * \param[in] val_thermal_conductivity - Thermal Conductivity. + * \param[in] val_eddy_viscosity - Eddy viscosity. */ - void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_thermal_conductivity); + void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_thermal_conductivity, su2double val_eddy_viscosity); /*! * \brief Compute the Jacobian of the heat flux vector @@ -272,6 +273,7 @@ class CAvgGrad_Flow final : public CAvgGrad_Base { void SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, su2double val_heat_capacity, su2double val_thermal_conductivity, + su2double val_eddy_viscosity, su2double val_dist_ij, const su2double *val_normal); }; @@ -367,8 +369,12 @@ class CGeneralAvgGrad_Flow final : public CAvgGrad_Base { * \param[in] val_thermal_conductivity - Value of the thermal conductivity. * \param[in] val_dist_ij - Distance between the points. */ - void SetHeatFluxJacobian(const su2double* val_Mean_PrimVar, const su2double* val_Mean_SecVar, - su2double val_thermal_conductivity, su2double val_dist_ij); + void SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, + const su2double *val_Mean_SecVar, + su2double val_eddy_viscosity, + su2double val_thermal_conductivity, + su2double val_heat_capacity_cp, + su2double val_dist_ij); public: diff --git a/SU2_CFD/include/solvers/CHeatSolver.hpp b/SU2_CFD/include/solvers/CHeatSolver.hpp index b86f319f2b20..ba7bfb381384 100644 --- a/SU2_CFD/include/solvers/CHeatSolver.hpp +++ b/SU2_CFD/include/solvers/CHeatSolver.hpp @@ -107,17 +107,19 @@ class CHeatSolver final : public CScalarSolver { const CVariable* flow_nodes = flow ? solver_container[FLOW_SOL]->GetNodes() : nullptr; const su2double const_diffusivity = config->GetThermalDiffusivity(); + const su2double pr_turb = config->GetPrandtl_Turb(); su2double thermal_diffusivity_i{}, thermal_diffusivity_j{}; /*--- Computes the thermal diffusivity to use in the viscous numerics. ---*/ auto compute_thermal_diffusivity = [&](unsigned long iPoint, unsigned long jPoint) { if (flow) { - thermal_diffusivity_i = flow_nodes->GetThermalConductivity(iPoint) / flow_nodes->GetSpecificHeatCp(iPoint); - thermal_diffusivity_j = flow_nodes->GetThermalConductivity(jPoint) / flow_nodes->GetSpecificHeatCp(jPoint); + thermal_diffusivity_i = flow_nodes->GetThermalConductivity(iPoint) / flow_nodes->GetSpecificHeatCp(iPoint) + + flow_nodes->GetEddyViscosity(iPoint) / pr_turb; + thermal_diffusivity_j = flow_nodes->GetThermalConductivity(jPoint) / flow_nodes->GetSpecificHeatCp(jPoint) + + +flow_nodes->GetEddyViscosity(jPoint) / pr_turb; numerics->SetDiffusionCoeff(&thermal_diffusivity_i, &thermal_diffusivity_j); - } - else { + } else { numerics->SetDiffusionCoeff(&const_diffusivity, &const_diffusivity); } }; diff --git a/SU2_CFD/src/numerics/continuous_adjoint/adj_diffusion.cpp b/SU2_CFD/src/numerics/continuous_adjoint/adj_diffusion.cpp index 0ec36a67c561..4ad8a63c2fd4 100644 --- a/SU2_CFD/src/numerics/continuous_adjoint/adj_diffusion.cpp +++ b/SU2_CFD/src/numerics/continuous_adjoint/adj_diffusion.cpp @@ -65,6 +65,8 @@ void CAvgGrad_AdjFlow::ComputeResidual(su2double *val_residual_i, su2double *val su2double sq_vel_j, ViscDens_j, XiDens_j; su2double dist_ij_2, dPhiE_dn; + su2double Prandtl_Turb = config->GetPrandtl_Turb(); + /*--- States in point i ---*/ sq_vel_i = 0.0; @@ -85,7 +87,7 @@ void CAvgGrad_AdjFlow::ComputeResidual(su2double *val_residual_i, su2double *val Cp_i = V_i[nDim+8]; ViscDens_i = (Laminar_Viscosity_i + Eddy_Viscosity_i) / Density_i; - XiDens_i = (Gamma * Thermal_Conductivity_i) / (Density_i * Cp_i); + XiDens_i = Gamma*(Thermal_Conductivity_i/Cp_i + Eddy_Viscosity_i/Prandtl_Turb) / Density_i; /*--- States in point j ---*/ @@ -107,7 +109,7 @@ void CAvgGrad_AdjFlow::ComputeResidual(su2double *val_residual_i, su2double *val Cp_j = V_j[nDim+8]; ViscDens_j = (Laminar_Viscosity_j + Eddy_Viscosity_j) / Density_j; - XiDens_j = (Gamma * Thermal_Conductivity_j) / (Density_j * Cp_j); + XiDens_j = Gamma*(Thermal_Conductivity_j/Cp_j + Eddy_Viscosity_j/Prandtl_Turb) / Density_j; /*--- Compute vector going from iPoint to jPoint ---*/ @@ -198,6 +200,8 @@ void CAvgGradCorrected_AdjFlow::ComputeResidual(su2double *val_residual_i, su2double Density_j, sq_vel_j, Pressure_j, ViscDens_j, XiDens_j; su2double dist_ij_2, dPhiE_dn; + su2double Prandtl_Turb = config->GetPrandtl_Turb(); + /*--- States in point i ---*/ sq_vel_i = 0.0; @@ -217,7 +221,8 @@ void CAvgGradCorrected_AdjFlow::ComputeResidual(su2double *val_residual_i, Cp_i = V_i[nDim+8]; ViscDens_i = (Laminar_Viscosity_i + Eddy_Viscosity_i) / Density_i; - XiDens_i = (Gamma * Thermal_Conductivity_i) / (Density_i * Cp_i); + XiDens_i = Gamma*(Thermal_Conductivity_i/Cp_i + + Eddy_Viscosity_i/Prandtl_Turb) / Density_i; /*--- States in point j ---*/ @@ -238,7 +243,8 @@ void CAvgGradCorrected_AdjFlow::ComputeResidual(su2double *val_residual_i, Cp_j = V_j[nDim+8]; ViscDens_j = (Laminar_Viscosity_j + Eddy_Viscosity_j) / Density_j; - XiDens_j = (Gamma * Thermal_Conductivity_j) / (Density_j * Cp_j); + XiDens_j = Gamma*(Thermal_Conductivity_j/Cp_j + + Eddy_Viscosity_j/Prandtl_Turb) / Density_j; /*--- Compute vector going from iPoint to jPoint ---*/ diff --git a/SU2_CFD/src/numerics/continuous_adjoint/adj_sources.cpp b/SU2_CFD/src/numerics/continuous_adjoint/adj_sources.cpp index 79c2c18e6023..18d15d030dd4 100644 --- a/SU2_CFD/src/numerics/continuous_adjoint/adj_sources.cpp +++ b/SU2_CFD/src/numerics/continuous_adjoint/adj_sources.cpp @@ -369,8 +369,9 @@ void CSourceViscous_AdjFlow::ComputeResidual (su2double *val_residual, CConfig * su2double invDensity = 1.0/Density; su2double invDensitysq = invDensity*invDensity; su2double invDensitycube = invDensitysq*invDensity; + su2double Prandtl_Turb = config->GetPrandtl_Turb(); su2double mu_tot_1 = Laminar_Viscosity + Eddy_Viscosity; - su2double mu_tot_2 = Thermal_Conductivity / Cp; + su2double mu_tot_2 = Thermal_Conductivity/Cp + Eddy_Viscosity/Prandtl_Turb; // su2double Gas_Constant = config->GetGas_ConstantND(); /*--- Required gradients of the flow variables, point j ---*/ diff --git a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp index ded7c4787246..663402962271 100644 --- a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp +++ b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp @@ -441,7 +441,7 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) if (config->GetSAParsedOptions().qcr2000) AddQCR(nDim, &Mean_GradPrimVar[1], tau); if (Mean_TauWall > 0) AddTauWall(UnitNormal, Mean_TauWall); - SetHeatFluxVector(Mean_GradPrimVar, Mean_Thermal_Conductivity); + SetHeatFluxVector(Mean_GradPrimVar, Mean_Thermal_Conductivity, Mean_Eddy_Viscosity); GetViscousProjFlux(Mean_PrimVar, Normal); @@ -462,7 +462,7 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) Cp_i = V_i[nDim + 8]; Cp_j = V_j[nDim + 8]; const su2double Mean_Heat_Capacity = 0.5 * (Cp_i + Cp_j); - SetHeatFluxJacobian(Mean_PrimVar, Mean_Heat_Capacity, Mean_Thermal_Conductivity, dist_ij, UnitNormal); + SetHeatFluxJacobian(Mean_PrimVar, Mean_Heat_Capacity, Mean_Thermal_Conductivity, Mean_Eddy_Viscosity, dist_ij, UnitNormal); GetViscousProjJacs(Mean_PrimVar, Area, Proj_Flux_Tensor, Jacobian_i, Jacobian_j); } @@ -476,8 +476,12 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) } -void CAvgGrad_Flow::SetHeatFluxVector(const su2double* const* val_gradprimvar, - const su2double val_thermal_conductivity) { +void CAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradprimvar, + const su2double val_thermal_conductivity, + const su2double val_eddy_viscosity) { + + const su2double Cp = (Gamma / Gamma_Minus_One) * Gas_Constant; + const su2double heat_flux_factor = val_thermal_conductivity + Cp * val_eddy_viscosity/Prandtl_Turb; /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ @@ -489,6 +493,7 @@ void CAvgGrad_Flow::SetHeatFluxVector(const su2double* const* val_gradprimvar, void CAvgGrad_Flow::SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, const su2double val_heat_capacity, const su2double val_thermal_conductivity, + const su2double val_eddy_viscosity, const su2double val_dist_ij, const su2double *val_normal) { su2double sqvel = 0.0; @@ -507,7 +512,7 @@ void CAvgGrad_Flow::SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, const su2double R_dTdu1 = -phi*val_Mean_PrimVar[1]; const su2double R_dTdu2 = -phi*val_Mean_PrimVar[2]; - const su2double heat_flux_factor = val_thermal_conductivity / val_heat_capacity; + const su2double heat_flux_factor = val_thermal_conductivity/val_heat_capacity + val_eddy_viscosity/Prandtl_Turb; const su2double cpoR = Gamma/Gamma_Minus_One; // cp over R const su2double conductivity_over_Rd = cpoR*heat_flux_factor/val_dist_ij; @@ -804,7 +809,9 @@ void CGeneralAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradpri void CGeneralAvgGrad_Flow::SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, const su2double *val_Mean_SecVar, + const su2double val_eddy_viscosity, const su2double val_thermal_conductivity, + const su2double val_heat_capacity_cp, const su2double val_dist_ij) { /* Viscous flux Jacobians for arbitrary equations of state */ @@ -826,7 +833,8 @@ void CGeneralAvgGrad_Flow::SetHeatFluxJacobian(const su2double *val_Mean_PrimVar su2double dTdu1= dTde_rho*(-val_Mean_PrimVar[1])*(1/rho); su2double dTdu2= dTde_rho*(-val_Mean_PrimVar[2])*(1/rho); - su2double factor2 = val_thermal_conductivity/val_dist_ij; + su2double total_conductivity = val_thermal_conductivity + val_heat_capacity_cp*val_eddy_viscosity/Prandtl_Turb; + su2double factor2 = total_conductivity/val_dist_ij; heat_flux_jac_i[0] = factor2*dTdu0; heat_flux_jac_i[1] = factor2*dTdu1; @@ -962,7 +970,8 @@ CNumerics::ResidualType<> CGeneralAvgGrad_Flow::ComputeResidual(const CConfig* c SetTauJacobian(Mean_PrimVar, Mean_Laminar_Viscosity, Mean_Eddy_Viscosity, dist_ij, UnitNormal); - SetHeatFluxJacobian(Mean_PrimVar, Mean_SecVar, Mean_Thermal_Conductivity, dist_ij); + SetHeatFluxJacobian(Mean_PrimVar, Mean_SecVar, Mean_Eddy_Viscosity, + Mean_Thermal_Conductivity, Mean_Cp, dist_ij); GetViscousProjJacs(Mean_PrimVar, Area, Proj_Flux_Tensor, Jacobian_i, Jacobian_j); } diff --git a/SU2_CFD/src/numerics/flow/flow_sources.cpp b/SU2_CFD/src/numerics/flow/flow_sources.cpp index ba091fd75f07..de53da968871 100644 --- a/SU2_CFD/src/numerics/flow/flow_sources.cpp +++ b/SU2_CFD/src/numerics/flow/flow_sources.cpp @@ -140,8 +140,10 @@ void CSourceAxisymmetric_Flow::ResidualDiffusion(){ su2double laminar_viscosity_i = V_i[nDim+5]; su2double eddy_viscosity_i = V_i[nDim+6]; su2double thermal_conductivity_i = V_i[nDim+7]; + su2double heat_capacity_cp_i = V_i[nDim+8]; su2double total_viscosity_i = laminar_viscosity_i + eddy_viscosity_i; + su2double total_conductivity_i = thermal_conductivity_i + heat_capacity_cp_i*eddy_viscosity_i/Prandtl_Turb; su2double u = U_i[1]/U_i[0]; su2double v = U_i[2]/U_i[0]; @@ -154,7 +156,7 @@ void CSourceAxisymmetric_Flow::ResidualDiffusion(){ residual[3] -= Volume*(yinv*(total_viscosity_i*(u*(PrimVar_Grad_i[2][0]+PrimVar_Grad_i[1][1]) +v*TWO3*(2*PrimVar_Grad_i[2][1]-PrimVar_Grad_i[1][0] -v*yinv+U_i[0]*turb_ke_i)) - +thermal_conductivity_i*PrimVar_Grad_i[0][1]) + +total_conductivity_i*PrimVar_Grad_i[0][1]) -TWO3*(AuxVar_Grad_i[1][1]+AuxVar_Grad_i[2][0])); } diff --git a/SU2_CFD/src/solvers/CAdjNSSolver.cpp b/SU2_CFD/src/solvers/CAdjNSSolver.cpp index b3961a518c28..21481d1f2d7f 100644 --- a/SU2_CFD/src/solvers/CAdjNSSolver.cpp +++ b/SU2_CFD/src/solvers/CAdjNSSolver.cpp @@ -1183,6 +1183,8 @@ void CAdjNSSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_contai bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); bool grid_movement = config->GetGrid_Movement(); + su2double Prandtl_Turb = config->GetPrandtl_Turb(); + auto *Psi = new su2double[nVar]; auto **Tau = new su2double*[nDim]; for (iDim = 0; iDim < nDim; iDim++) @@ -1281,7 +1283,7 @@ void CAdjNSSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_contai Cp = solver_container[FLOW_SOL]->GetNodes()->GetSpecificHeatCp(iPoint); ViscDens = (Laminar_Viscosity + Eddy_Viscosity) / Density; - XiDens = (Gamma * Thermal_Conductivity) / (Density * Cp); + XiDens = Gamma * (Thermal_Conductivity/Cp + Eddy_Viscosity/Prandtl_Turb) / Density; /*--- Compute projections, velocity squared divided by two, and other inner products. Note that we are imposing v = u_wall from @@ -1556,6 +1558,7 @@ void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont bool grid_movement = config->GetGrid_Movement(); bool heat_flux_obj; + su2double Prandtl_Turb = config->GetPrandtl_Turb(); su2double Cp; su2double Thermal_Conductivity; su2double invrho3; @@ -1636,10 +1639,11 @@ void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont /*--- Get transport coefficient information ---*/ Eddy_Viscosity = solver_container[FLOW_SOL]->GetNodes()->GetEddyViscosity(iPoint); - Thermal_Conductivity = solver_container[FLOW_SOL]-> GetNodes()->GetThermalConductivity(iPoint); Cp = solver_container[FLOW_SOL]-> GetNodes()->GetSpecificHeatCp(iPoint); + Thermal_Conductivity = + solver_container[FLOW_SOL]->GetNodes()->GetThermalConductivity(iPoint) + Cp * Eddy_Viscosity / Prandtl_Turb; -// GradV = solver_container[FLOW_SOL]->GetNodes()->GetGradient_Primitive(iPoint); + // GradV = solver_container[FLOW_SOL]->GetNodes()->GetGradient_Primitive(iPoint); /*--- Calculate Dirichlet condition for energy equation ---*/ if (!heat_flux_obj) { @@ -1652,7 +1656,9 @@ void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont /*--- Temperature gradient term ---*/ GradT = solver_container[FLOW_SOL]->GetNodes()->GetGradient_Primitive(iPoint)[0]; kGTdotn = 0.0; - for (iDim = 0; iDim < nDim; iDim++) kGTdotn += Thermal_Conductivity * GradT[iDim] * Normal[iDim] / Area; + for (iDim = 0; iDim < nDim; iDim++) + kGTdotn += solver_container[FLOW_SOL]->GetNodes()->GetThermalConductivity(iPoint) * GradT[iDim] * + Normal[iDim] / Area; /*--- constant term to multiply max heat flux objective ---*/ Xi = solver_container[FLOW_SOL]->GetTotal_HeatFlux(); // versions for max heat flux Xi = pow(Xi, 1.0/pnorm-1.0)/pnorm; diff --git a/SU2_CFD/src/solvers/CHeatSolver.cpp b/SU2_CFD/src/solvers/CHeatSolver.cpp index 14980f141931..72a6649a3d24 100644 --- a/SU2_CFD/src/solvers/CHeatSolver.cpp +++ b/SU2_CFD/src/solvers/CHeatSolver.cpp @@ -713,6 +713,7 @@ void CHeatSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, (config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_2ND); const su2double K_v = 0.25; + const su2double prandtl_turb = config->GetPrandtl_Turb(); const su2double constant_thermal_diffusivity = config->GetThermalDiffusivity(); const CVariable* flow_nodes = solver_container[FLOW_SOL] ? solver_container[FLOW_SOL]->GetNodes() : nullptr; @@ -748,8 +749,10 @@ void CHeatSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, flow_nodes->GetThermalConductivity(jPoint)); const su2double Cp = 0.5 * (flow_nodes->GetSpecificHeatCp(iPoint) + flow_nodes->GetSpecificHeatCp(jPoint)); + const su2double eddy_viscosity = 0.5 * (flow_nodes->GetEddyViscosity(iPoint) + + flow_nodes->GetEddyViscosity(jPoint)); - const su2double thermal_diffusivity = thermal_conductivity / Cp; + const su2double thermal_diffusivity = thermal_conductivity / Cp + eddy_viscosity / prandtl_turb; nodes->AddMax_Lambda_Visc(iPoint, thermal_diffusivity * Area2); } else { nodes->AddMax_Lambda_Visc(iPoint, constant_thermal_diffusivity * Area2); @@ -779,7 +782,8 @@ void CHeatSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, if (flow) { const su2double thermal_diffusivity = - flow_nodes->GetThermalConductivity(iPoint) / flow_nodes->GetSpecificHeatCp(iPoint); + flow_nodes->GetThermalConductivity(iPoint) / flow_nodes->GetSpecificHeatCp(iPoint) + + flow_nodes->GetEddyViscosity(iPoint) / prandtl_turb; nodes->AddMax_Lambda_Visc(iPoint, thermal_diffusivity * Area2); } else { nodes->AddMax_Lambda_Visc(iPoint, constant_thermal_diffusivity * Area2); diff --git a/SU2_CFD/src/solvers/CNSSolver.cpp b/SU2_CFD/src/solvers/CNSSolver.cpp index 5c4e9104ff19..bb3cc7014fdf 100644 --- a/SU2_CFD/src/solvers/CNSSolver.cpp +++ b/SU2_CFD/src/solvers/CNSSolver.cpp @@ -619,6 +619,7 @@ void CNSSolver::BC_Isothermal_Wall_Generic(CGeometry *geometry, CSolver **solver const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const su2double Temperature_Ref = config->GetTemperature_Ref(); + const su2double Prandtl_Turb = config->GetPrandtl_Turb(); const su2double Gas_Constant = config->GetGas_ConstantND(); /*--- Identify the boundary and retrieve the specified wall temperature from @@ -686,7 +687,9 @@ void CNSSolver::BC_Isothermal_Wall_Generic(CGeometry *geometry, CSolver **solver /*--- Get transport coefficients ---*/ - su2double thermal_conductivity = nodes->GetThermalConductivity(iPoint); + su2double Cp = nodes->GetSpecificHeatCp(iPoint); + su2double eddy_viscosity = nodes->GetEddyViscosity(iPoint); + su2double thermal_conductivity = nodes->GetThermalConductivity(iPoint) + Cp * eddy_viscosity / Prandtl_Turb; // work in progress on real-gases... //thermal_conductivity = nodes->GetThermalConductivity(iPoint); diff --git a/SU2_CFD/src/variables/CNSVariable.cpp b/SU2_CFD/src/variables/CNSVariable.cpp index 02d56565616c..a03c95124594 100644 --- a/SU2_CFD/src/variables/CNSVariable.cpp +++ b/SU2_CFD/src/variables/CNSVariable.cpp @@ -188,10 +188,9 @@ bool CNSVariable::SetPrimVar(unsigned long iPoint, su2double eddy_visc, su2doubl SetLaminarViscosity(iPoint, FluidModel->GetLaminarViscosity()); - /*--- Set eddy viscosity locally and in the fluid model.---*/ + /*--- Set eddy viscosity ---*/ SetEddyViscosity(iPoint, eddy_visc); - FluidModel->SetEddyViscosity(eddy_visc); /*--- Set thermal conductivity ---*/ From faebb7f722fd9f7fbacad9484502312921a8813b Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Sat, 2 Aug 2025 10:05:21 +0200 Subject: [PATCH 15/30] small fix --- SU2_CFD/src/numerics/flow/flow_diffusion.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp index 663402962271..6fa7bc7c55fa 100644 --- a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp +++ b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp @@ -486,7 +486,7 @@ void CAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradprimvar, /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ for (unsigned short iDim = 0; iDim < nDim; iDim++) { - heat_flux_vector[iDim] = val_thermal_conductivity*val_gradprimvar[0][iDim]; + heat_flux_vector[iDim] = heat_flux_factor*val_gradprimvar[0][iDim]; } } From 27ae8cfb73d248e7fe23503e86b63910e77b980c Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Sun, 3 Aug 2025 12:55:02 +0200 Subject: [PATCH 16/30] fix heatflux --- SU2_CFD/include/numerics/flow/flow_diffusion.hpp | 9 ++++++++- SU2_CFD/src/numerics/flow/flow_diffusion.cpp | 14 +++++++++++--- SU2_CFD/src/solvers/CAdjNSSolver.cpp | 2 +- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp index 878c8ff31f34..166617fad3b4 100644 --- a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp +++ b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp @@ -354,9 +354,16 @@ class CGeneralAvgGrad_Flow final : public CAvgGrad_Base { /*! * \brief Compute the heat flux due to molecular and turbulent diffusivity * \param[in] val_gradprimvar - Gradient of the primitive variables. + * \param[in] val_laminar_viscosity - Laminar viscosity. + * \param[in] val_eddy_viscosity - Eddy viscosity. * \param[in] val_thermal_conductivity - Thermal Conductivity. + * \param[in] val_heat_capacity_cp - Heat Capacity at constant pressure. */ - void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_thermal_conductivity); + void SetHeatFluxVector(const su2double* const *val_gradprimvar, + su2double val_laminar_viscosity, + su2double val_eddy_viscosity, + su2double val_thermal_conductivity, + su2double val_heat_capacity_cp); /*! * \brief Compute the Jacobian of the heat flux vector diff --git a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp index 6fa7bc7c55fa..37779b8ab356 100644 --- a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp +++ b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp @@ -799,11 +799,16 @@ CGeneralAvgGrad_Flow::CGeneralAvgGrad_Flow(unsigned short val_nDim, : CAvgGrad_Base(val_nDim, val_nVar, val_nDim+4, val_correct_grad, config) { } void CGeneralAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradprimvar, - const su2double val_thermal_conductivity) { + const su2double val_laminar_viscosity, + const su2double val_eddy_viscosity, + const su2double val_thermal_conductivity, + const su2double val_heat_capacity_cp) { + + const su2double heat_flux_factor = val_thermal_conductivity + val_heat_capacity_cp*val_eddy_viscosity/Prandtl_Turb; /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ for (unsigned short iDim = 0; iDim < nDim; iDim++) { - heat_flux_vector[iDim] = val_thermal_conductivity * val_gradprimvar[0][iDim]; + heat_flux_vector[iDim] = heat_flux_factor*val_gradprimvar[0][iDim]; } } @@ -901,6 +906,7 @@ CNumerics::ResidualType<> CGeneralAvgGrad_Flow::ComputeResidual(const CConfig* c Laminar_Viscosity_i = V_i[nDim+5]; Laminar_Viscosity_j = V_j[nDim+5]; Eddy_Viscosity_i = V_i[nDim+6]; Eddy_Viscosity_j = V_j[nDim+6]; Thermal_Conductivity_i = V_i[nDim+7]; Thermal_Conductivity_j = V_j[nDim+7]; + Cp_i = V_i[nDim+8]; Cp_j = V_j[nDim+8]; /*--- Mean secondary variables ---*/ @@ -914,6 +920,7 @@ CNumerics::ResidualType<> CGeneralAvgGrad_Flow::ComputeResidual(const CConfig* c Mean_Eddy_Viscosity = 0.5*(Eddy_Viscosity_i + Eddy_Viscosity_j); Mean_turb_ke = 0.5*(turb_ke_i + turb_ke_j); Mean_Thermal_Conductivity = 0.5*(Thermal_Conductivity_i + Thermal_Conductivity_j); + Mean_Cp = 0.5*(Cp_i + Cp_j); /*--- Mean gradient approximation ---*/ @@ -950,7 +957,8 @@ CNumerics::ResidualType<> CGeneralAvgGrad_Flow::ComputeResidual(const CConfig* c if (config->GetSAParsedOptions().qcr2000) AddQCR(nDim, &Mean_GradPrimVar[1], tau); if (Mean_TauWall > 0) AddTauWall(UnitNormal, Mean_TauWall); - SetHeatFluxVector(Mean_GradPrimVar, Mean_Thermal_Conductivity); + SetHeatFluxVector(Mean_GradPrimVar, Mean_Laminar_Viscosity, + Mean_Eddy_Viscosity, Mean_Thermal_Conductivity, Mean_Cp); GetViscousProjFlux(Mean_PrimVar, Normal); diff --git a/SU2_CFD/src/solvers/CAdjNSSolver.cpp b/SU2_CFD/src/solvers/CAdjNSSolver.cpp index 21481d1f2d7f..ac462df74cdf 100644 --- a/SU2_CFD/src/solvers/CAdjNSSolver.cpp +++ b/SU2_CFD/src/solvers/CAdjNSSolver.cpp @@ -1643,7 +1643,7 @@ void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont Thermal_Conductivity = solver_container[FLOW_SOL]->GetNodes()->GetThermalConductivity(iPoint) + Cp * Eddy_Viscosity / Prandtl_Turb; - // GradV = solver_container[FLOW_SOL]->GetNodes()->GetGradient_Primitive(iPoint); +// GradV = solver_container[FLOW_SOL]->GetNodes()->GetGradient_Primitive(iPoint); /*--- Calculate Dirichlet condition for energy equation ---*/ if (!heat_flux_obj) { From 26bb2cedb218f40a5088894c7bebff381eca4dd0 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Sun, 3 Aug 2025 15:27:03 +0200 Subject: [PATCH 17/30] fix --- SU2_CFD/include/solvers/CHeatSolver.hpp | 2 +- SU2_CFD/src/solvers/CAdjNSSolver.cpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/SU2_CFD/include/solvers/CHeatSolver.hpp b/SU2_CFD/include/solvers/CHeatSolver.hpp index ba7bfb381384..bcfd50cf0e94 100644 --- a/SU2_CFD/include/solvers/CHeatSolver.hpp +++ b/SU2_CFD/include/solvers/CHeatSolver.hpp @@ -117,7 +117,7 @@ class CHeatSolver final : public CScalarSolver { thermal_diffusivity_i = flow_nodes->GetThermalConductivity(iPoint) / flow_nodes->GetSpecificHeatCp(iPoint) + flow_nodes->GetEddyViscosity(iPoint) / pr_turb; thermal_diffusivity_j = flow_nodes->GetThermalConductivity(jPoint) / flow_nodes->GetSpecificHeatCp(jPoint) + - +flow_nodes->GetEddyViscosity(jPoint) / pr_turb; + flow_nodes->GetEddyViscosity(jPoint) / pr_turb; numerics->SetDiffusionCoeff(&thermal_diffusivity_i, &thermal_diffusivity_j); } else { numerics->SetDiffusionCoeff(&const_diffusivity, &const_diffusivity); diff --git a/SU2_CFD/src/solvers/CAdjNSSolver.cpp b/SU2_CFD/src/solvers/CAdjNSSolver.cpp index ac462df74cdf..ca3dece87fc0 100644 --- a/SU2_CFD/src/solvers/CAdjNSSolver.cpp +++ b/SU2_CFD/src/solvers/CAdjNSSolver.cpp @@ -1777,6 +1777,8 @@ void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont U = solver_container[FLOW_SOL]->GetNodes()->GetSolution(iPoint); Laminar_Viscosity = solver_container[FLOW_SOL]->GetNodes()->GetLaminarViscosity(iPoint); Eddy_Viscosity = solver_container[FLOW_SOL]->GetNodes()->GetEddyViscosity(iPoint); // Should be zero at the wall + Thermal_Conductivity = solver_container[FLOW_SOL]->GetNodes()->GetThermalConductivity(iPoint); + Cp = solver_container[FLOW_SOL]->GetNodes()->GetSpecificHeatCp(iPoint); Density = U[0]; for (iDim = 0; iDim < nDim; iDim++) { Velocity[iDim] = GridVel[iDim]; @@ -1785,7 +1787,7 @@ void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont SoundSpeed = sqrt(Gamma*Gamma_Minus_One*(Energy-sq_vel)); Pressure = (SoundSpeed * SoundSpeed * Density) / Gamma; ViscDens = (Laminar_Viscosity + Eddy_Viscosity) / Density; - XiDens = (Gamma * Thermal_Conductivity) / (Density * Cp); + XiDens = Gamma * (Thermal_Conductivity/Cp + Eddy_Viscosity/Prandtl_Turb) / Density; /*--- Average of the derivatives of the adjoint variables ---*/ PsiVar_Grad = nodes->GetGradient(iPoint); From 42ebba4fec3365759457e53178327394257cc61b Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Sun, 3 Aug 2025 15:45:38 +0200 Subject: [PATCH 18/30] setting reference values --- SU2_CFD/src/solvers/CEulerSolver.cpp | 2 ++ SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp | 12 ++++++++++-- SU2_CFD/src/solvers/CIncEulerSolver.cpp | 9 +++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/SU2_CFD/src/solvers/CEulerSolver.cpp b/SU2_CFD/src/solvers/CEulerSolver.cpp index 3f9ccbe82934..915fcb41bf1c 100644 --- a/SU2_CFD/src/solvers/CEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CEulerSolver.cpp @@ -949,6 +949,7 @@ void CEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMes Viscosity_FreeStream = auxFluidModel->GetLaminarViscosity(); Thermal_Conductivity_FreeStream = auxFluidModel->GetThermalConductivity(); config->SetViscosity_FreeStream(Viscosity_FreeStream); + config->SetThermalConductivity_FreeStream(Thermal_Conductivity_FreeStream); Density_FreeStream = Reynolds*Viscosity_FreeStream/(Velocity_Reynolds*config->GetLength_Reynolds()); config->SetDensity_FreeStream(Density_FreeStream); @@ -968,6 +969,7 @@ void CEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMes Viscosity_FreeStream = auxFluidModel->GetLaminarViscosity(); Thermal_Conductivity_FreeStream = auxFluidModel->GetThermalConductivity(); config->SetViscosity_FreeStream(Viscosity_FreeStream); + config->SetThermalConductivity_FreeStream(Thermal_Conductivity_FreeStream); Energy_FreeStream = auxFluidModel->GetStaticEnergy() + 0.5*ModVel_FreeStream*ModVel_FreeStream; /*--- Compute Reynolds number ---*/ diff --git a/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp b/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp index 723a363fc1b0..d431a864caf4 100644 --- a/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp +++ b/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp @@ -775,14 +775,14 @@ void CFEM_DG_EulerSolver::SetNondimensionalization(CConfig *config, su2double Temperature_FreeStream = 0.0, Mach2Vel_FreeStream = 0.0, ModVel_FreeStream = 0.0, Energy_FreeStream = 0.0, ModVel_FreeStreamND = 0.0, Velocity_Reynolds = 0.0, - Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, + Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, Thermal_Conductivity_FreeStream = 0.0, Density_FreeStream = 0.0, Pressure_FreeStream = 0.0, Tke_FreeStream = 0.0, Length_Ref = 0.0, Density_Ref = 0.0, Pressure_Ref = 0.0, Velocity_Ref = 0.0, Temperature_Ref = 0.0, Time_Ref = 0.0, Omega_Ref = 0.0, Force_Ref = 0.0, Gas_Constant_Ref = 0.0, Viscosity_Ref = 0.0, Conductivity_Ref = 0.0, Energy_Ref= 0.0, Froude = 0.0, Pressure_FreeStreamND = 0.0, Density_FreeStreamND = 0.0, Temperature_FreeStreamND = 0.0, Gas_ConstantND = 0.0, - Velocity_FreeStreamND[3] = {0.0, 0.0, 0.0}, Viscosity_FreeStreamND = 0.0, + Velocity_FreeStreamND[3] = {0.0, 0.0, 0.0}, Viscosity_FreeStreamND = 0.0, Thermal_Conductivity_FreeStreamND = 0.0, Tke_FreeStreamND = 0.0, Energy_FreeStreamND = 0.0, Total_UnstTimeND = 0.0, Delta_UnstTimeND = 0.0; @@ -955,9 +955,12 @@ void CFEM_DG_EulerSolver::SetNondimensionalization(CConfig *config, viscosity, depending on the input option.---*/ FluidModel->SetLaminarViscosityModel(config); + FluidModel->SetThermalConductivityModel(config); Viscosity_FreeStream = FluidModel->GetLaminarViscosity(); config->SetViscosity_FreeStream(Viscosity_FreeStream); + Thermal_Conductivity_FreeStream = FluidModel->GetThermalConductivity(); + config->SetThermalConductivity_FreeStream(Thermal_Conductivity_FreeStream); Density_FreeStream = Reynolds*Viscosity_FreeStream/(Velocity_Reynolds*config->GetLength_Reynolds()); config->SetDensity_FreeStream(Density_FreeStream); @@ -973,8 +976,11 @@ void CFEM_DG_EulerSolver::SetNondimensionalization(CConfig *config, else { FluidModel->SetLaminarViscosityModel(config); + FluidModel->SetThermalConductivityModel(config); Viscosity_FreeStream = FluidModel->GetLaminarViscosity(); config->SetViscosity_FreeStream(Viscosity_FreeStream); + Thermal_Conductivity_FreeStream = FluidModel->GetThermalConductivity(); + config->SetThermalConductivity_FreeStream(Thermal_Conductivity_FreeStream); Energy_FreeStream = FluidModel->GetStaticEnergy() + 0.5*ModVel_FreeStream*ModVel_FreeStream; } @@ -1053,6 +1059,8 @@ void CFEM_DG_EulerSolver::SetNondimensionalization(CConfig *config, ModVel_FreeStreamND = sqrt(ModVel_FreeStreamND); config->SetModVel_FreeStreamND(ModVel_FreeStreamND); Viscosity_FreeStreamND = Viscosity_FreeStream / Viscosity_Ref; config->SetViscosity_FreeStreamND(Viscosity_FreeStreamND); + Thermal_Conductivity_FreeStreamND = Thermal_Conductivity_FreeStream / Conductivity_Ref; + config->SetThermalConductivity_FreeStreamND(Thermal_Conductivity_FreeStreamND); Tke_FreeStream = 3.0/2.0*(ModVel_FreeStream*ModVel_FreeStream*config->GetTurbulenceIntensity_FreeStream()*config->GetTurbulenceIntensity_FreeStream()); config->SetTke_FreeStream(Tke_FreeStream); diff --git a/SU2_CFD/src/solvers/CIncEulerSolver.cpp b/SU2_CFD/src/solvers/CIncEulerSolver.cpp index b9bed47adab4..d6c792433194 100644 --- a/SU2_CFD/src/solvers/CIncEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CIncEulerSolver.cpp @@ -243,12 +243,12 @@ CIncEulerSolver::~CIncEulerSolver() { void CIncEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMesh) { su2double Temperature_FreeStream = 0.0, ModVel_FreeStream = 0.0,Energy_FreeStream = 0.0, - ModVel_FreeStreamND = 0.0, Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, + ModVel_FreeStreamND = 0.0, Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, Thermal_Conductivity_FreeStream = 0.0, Density_FreeStream = 0.0, Pressure_FreeStream = 0.0, Pressure_Thermodynamic = 0.0, Tke_FreeStream = 0.0, Length_Ref = 0.0, Density_Ref = 0.0, Pressure_Ref = 0.0, Temperature_Ref = 0.0, Velocity_Ref = 0.0, Time_Ref = 0.0, Gas_Constant_Ref = 0.0, Omega_Ref = 0.0, Force_Ref = 0.0, Viscosity_Ref = 0.0, Conductivity_Ref = 0.0, Heat_Flux_Ref = 0.0, Energy_Ref= 0.0, Pressure_FreeStreamND = 0.0, Pressure_ThermodynamicND = 0.0, Density_FreeStreamND = 0.0, Temperature_FreeStreamND = 0.0, Gas_ConstantND = 0.0, Specific_Heat_CpND = 0.0, Thermal_Expansion_CoeffND = 0.0, - Velocity_FreeStreamND[3] = {0.0, 0.0, 0.0}, Viscosity_FreeStreamND = 0.0, + Velocity_FreeStreamND[3] = {0.0, 0.0, 0.0}, Viscosity_FreeStreamND = 0.0, Thermal_Conductivity_FreeStreamND = 0.0, Tke_FreeStreamND = 0.0, Energy_FreeStreamND = 0.0, Total_UnstTimeND = 0.0, Delta_UnstTimeND = 0.0; @@ -356,8 +356,11 @@ void CIncEulerSolver::SetNondimensionalization(CConfig *config, unsigned short i /*--- Use the fluid model to compute the dimensional viscosity/conductivity. ---*/ auxFluidModel->SetLaminarViscosityModel(config); + auxFluidModel->SetThermalConductivityModel(config); Viscosity_FreeStream = auxFluidModel->GetLaminarViscosity(); config->SetViscosity_FreeStream(Viscosity_FreeStream); + Thermal_Conductivity_FreeStream = auxFluidModel->GetThermalConductivity(); + config->SetThermalConductivity_FreeStream(Thermal_Conductivity_FreeStream); Reynolds = Density_FreeStream*ModVel_FreeStream/Viscosity_FreeStream; config->SetReynolds(Reynolds); @@ -450,6 +453,8 @@ void CIncEulerSolver::SetNondimensionalization(CConfig *config, unsigned short i ModVel_FreeStreamND = sqrt(ModVel_FreeStreamND); config->SetModVel_FreeStreamND(ModVel_FreeStreamND); Viscosity_FreeStreamND = Viscosity_FreeStream / Viscosity_Ref; config->SetViscosity_FreeStreamND(Viscosity_FreeStreamND); + Thermal_Conductivity_FreeStreamND = Thermal_Conductivity_FreeStream / Conductivity_Ref; + config->SetThermalConductivity_FreeStreamND(Thermal_Conductivity_FreeStreamND); Tke_FreeStream = 3.0/2.0*(ModVel_FreeStream*ModVel_FreeStream*config->GetTurbulenceIntensity_FreeStream()*config->GetTurbulenceIntensity_FreeStream()); config->SetTke_FreeStream(Tke_FreeStream); From 8c80d89f547caab61d6f81cd7cdf917a56d0fba2 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Sun, 3 Aug 2025 16:21:21 +0200 Subject: [PATCH 19/30] fix ND heatSolver --- SU2_CFD/src/solvers/CHeatSolver.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SU2_CFD/src/solvers/CHeatSolver.cpp b/SU2_CFD/src/solvers/CHeatSolver.cpp index 72a6649a3d24..194dd64d5a0e 100644 --- a/SU2_CFD/src/solvers/CHeatSolver.cpp +++ b/SU2_CFD/src/solvers/CHeatSolver.cpp @@ -598,7 +598,7 @@ void CHeatSolver::Heat_Fluxes(CGeometry *geometry, CSolver **solver_container, C su2double *Coord, *Coord_Normal, *Normal, Area, dist, Twall, dTdn; string Marker_Tag, HeatFlux_Tag; - const su2double thermal_diffusivity = flow ? config->GetThermalConductivity_FreeStreamND()/config->GetSpecific_Heat_Cp() : + const su2double thermal_diffusivity = flow ? config->GetThermalConductivity_FreeStreamND()/config->GetSpecific_Heat_CpND() : config->GetThermalDiffusivity(); AllBound_HeatFlux = 0.0; From 013b62a01313222f75b41c574662050c182332bc Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Mon, 4 Aug 2025 14:22:06 +0200 Subject: [PATCH 20/30] freestream values --- Common/include/CConfig.hpp | 28 +++++++++++++++++++- Common/src/geometry/CPhysicalGeometryFEM.cpp | 2 +- SU2_CFD/src/solvers/CEulerSolver.cpp | 13 +++++++-- SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp | 12 +++++++-- SU2_CFD/src/solvers/CHeatSolver.cpp | 2 +- SU2_CFD/src/solvers/CIncEulerSolver.cpp | 10 +++++-- SU2_CFD/src/solvers/CNSSolver.cpp | 2 +- 7 files changed, 59 insertions(+), 10 deletions(-) diff --git a/Common/include/CConfig.hpp b/Common/include/CConfig.hpp index c2fd652f745d..e614207282f7 100644 --- a/Common/include/CConfig.hpp +++ b/Common/include/CConfig.hpp @@ -900,6 +900,7 @@ class CConfig { Density_FreeStream, /*!< \brief Free-stream density of the fluid. */ Viscosity_FreeStream, /*!< \brief Free-stream viscosity of the fluid. */ ThermalConductivity_FreeStream, /*!< \brief Free-stream thermal conductivity of the fluid. */ + SpecificHeatCp_FreeStream, /*!< \brief Free-stream specific heat capacity at constant pressure of the fluid. */ Tke_FreeStream, /*!< \brief Total turbulent kinetic energy of the fluid. */ Intermittency_FreeStream, /*!< \brief Freestream intermittency (for sagt transition model) of the fluid. */ ReThetaT_FreeStream, /*!< \brief Freestream Transition Momentum Thickness Reynolds Number (for LM transition model) of the fluid. */ @@ -942,6 +943,7 @@ class CConfig { Energy_FreeStreamND, /*!< \brief Farfield energy value (external flow). */ Viscosity_FreeStreamND, /*!< \brief Farfield viscosity value (external flow). */ ThermalConductivity_FreeStreamND, /*!< \brief Farfield thermal conductivity value (external flow). */ + SpecificHeatCp_FreeStreamND, /*!< \brief Farfield specific heat capacity at constant pressure value (external flow). */ Tke_FreeStreamND, /*!< \brief Farfield kinetic energy (external flow). */ Omega_FreeStreamND, /*!< \brief Specific dissipation (external flow). */ Omega_FreeStream; /*!< \brief Specific dissipation (external flow). */ @@ -1759,7 +1761,13 @@ class CConfig { * \brief Get the value of the freestream thermal conductivity. * \return Freestream thermal conductivity. */ - su2double GetThermalConductivity_FreeStream(void) const { return Viscosity_FreeStream; } + su2double GetThermalConductivity_FreeStream(void) const { return ThermalConductivity_FreeStream; } + + /*! + * \brief Get the value of the freestream heat capacity at constant pressure. + * \return Freestream heat capacity at constant pressure. + */ + su2double GetSpecificHeatCp_FreeStream(void) const { return SpecificHeatCp_FreeStream; } /*! * \brief Get the value of the freestream density. @@ -1998,6 +2006,12 @@ class CConfig { */ su2double GetThermalConductivity_FreeStreamND(void) const { return ThermalConductivity_FreeStreamND; } + /*! + * \brief Get the value of the non-dimensionalized freestream heat capacity at constant pressure. + * \return Non-dimensionalized freestream heat capacity at constant pressure. + */ + su2double GetSpecificHeatCp_FreeStreamND(void) const { return SpecificHeatCp_FreeStreamND; } + /*! * \brief Get the value of the non-dimensionalized freestream viscosity. * \return Non-dimensionalized freestream viscosity. @@ -2608,6 +2622,12 @@ class CConfig { */ void SetThermalConductivity_FreeStream(su2double val_thermalconductivity_freestream) { ThermalConductivity_FreeStream = val_thermalconductivity_freestream; } + /*! + * \brief Set the freestream specific heat capacity at constant pressure. + * \param[in] val_specificheatCp_freestream - Value of the freestream specific heat capacity at constant pressure. + */ + void SetSpecificHeatCp_FreeStream(su2double val_specificheatCp_freestream) { SpecificHeatCp_FreeStream = val_specificheatCp_freestream; } + /*! * \brief Set the magnitude of the free-stream velocity. * \param[in] val_modvel_freestream - Magnitude of the free-stream velocity. @@ -2676,6 +2696,12 @@ class CConfig { */ void SetThermalConductivity_FreeStreamND(su2double val_thermalconductivity_freestreamnd) { ThermalConductivity_FreeStreamND = val_thermalconductivity_freestreamnd; } + /*! + * \brief Set the non-dimensional free-stream specific heat capacity at constant pressure. + * \param[in] val_specificheatCp_freestreamnd - Value of the non-dimensional free-stream specific heat capacity at constant pressure. + */ + void SetSpecificHeatCp_FreeStreamND(su2double val_specificheatCp_freestreamnd) { SpecificHeatCp_FreeStreamND = val_specificheatCp_freestreamnd; } + /*! * \brief Set the non-dimensional freestream turbulent kinetic energy. * \param[in] val_tke_freestreamnd - Value of the non-dimensional freestream turbulent kinetic energy. diff --git a/Common/src/geometry/CPhysicalGeometryFEM.cpp b/Common/src/geometry/CPhysicalGeometryFEM.cpp index ffc9b10c50f1..1325b86b1ab4 100644 --- a/Common/src/geometry/CPhysicalGeometryFEM.cpp +++ b/Common/src/geometry/CPhysicalGeometryFEM.cpp @@ -2233,7 +2233,7 @@ void CPhysicalGeometry::DetermineTimeLevelElements(CConfig* config, const vector const su2double* Vel = config->GetVelocity_FreeStreamND(); const su2double Viscosity = config->GetViscosity_FreeStreamND(); const su2double Thermal_Conductivity = config->GetThermalConductivity_FreeStreamND(); - const su2double Cp = config->GetSpecific_Heat_CpND(); + const su2double Cp = config->GetSpecificHeatCp_FreeStreamND(); su2double VelMag = 0.0; for (unsigned short iDim = 0; iDim < nDim; ++iDim) VelMag += Vel[iDim] * Vel[iDim]; diff --git a/SU2_CFD/src/solvers/CEulerSolver.cpp b/SU2_CFD/src/solvers/CEulerSolver.cpp index 915fcb41bf1c..1a5fbfd83b66 100644 --- a/SU2_CFD/src/solvers/CEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CEulerSolver.cpp @@ -787,14 +787,16 @@ void CEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMes su2double Temperature_FreeStream = 0.0, Mach2Vel_FreeStream = 0.0, ModVel_FreeStream = 0.0, Energy_FreeStream = 0.0, ModVel_FreeStreamND = 0.0, Velocity_Reynolds = 0.0, - Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, Thermal_Conductivity_FreeStream = 0.0, + Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, + Thermal_Conductivity_FreeStream = 0.0, SpecificHeat_Cp_FreeStream = 0.0, Density_FreeStream = 0.0, Pressure_FreeStream = 0.0, Tke_FreeStream = 0.0, Re_ThetaT_FreeStream = 0.0, Length_Ref = 0.0, Density_Ref = 0.0, Pressure_Ref = 0.0, Velocity_Ref = 0.0, Temperature_Ref = 0.0, Time_Ref = 0.0, Omega_Ref = 0.0, Force_Ref = 0.0, Gas_Constant_Ref = 0.0, Viscosity_Ref = 0.0, Conductivity_Ref = 0.0, Energy_Ref= 0.0, Froude = 0.0, Pressure_FreeStreamND = 0.0, Density_FreeStreamND = 0.0, Temperature_FreeStreamND = 0.0, Gas_ConstantND = 0.0, - Velocity_FreeStreamND[3] = {0.0, 0.0, 0.0}, Viscosity_FreeStreamND = 0.0, Thermal_Conductivity_FreeStreamND = 0.0, + Velocity_FreeStreamND[3] = {0.0, 0.0, 0.0}, Viscosity_FreeStreamND = 0.0, + Thermal_Conductivity_FreeStreamND = 0.0, SpecificHeat_Cp_FreeStreamND = 0.0, Tke_FreeStreamND = 0.0, Energy_FreeStreamND = 0.0, Total_UnstTimeND = 0.0, Delta_UnstTimeND = 0.0, TgammaR = 0.0, Heat_Flux_Ref = 0.0; @@ -948,8 +950,11 @@ void CEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMes Viscosity_FreeStream = auxFluidModel->GetLaminarViscosity(); Thermal_Conductivity_FreeStream = auxFluidModel->GetThermalConductivity(); + SpecificHeat_Cp_FreeStream = auxFluidModel->GetCp(); + config->SetViscosity_FreeStream(Viscosity_FreeStream); config->SetThermalConductivity_FreeStream(Thermal_Conductivity_FreeStream); + config->SetSpecificHeatCp_FreeStream(SpecificHeat_Cp_FreeStream); Density_FreeStream = Reynolds*Viscosity_FreeStream/(Velocity_Reynolds*config->GetLength_Reynolds()); config->SetDensity_FreeStream(Density_FreeStream); @@ -968,8 +973,10 @@ void CEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMes auxFluidModel->SetThermalConductivityModel(config); Viscosity_FreeStream = auxFluidModel->GetLaminarViscosity(); Thermal_Conductivity_FreeStream = auxFluidModel->GetThermalConductivity(); + SpecificHeat_Cp_FreeStream = auxFluidModel->GetCp(); config->SetViscosity_FreeStream(Viscosity_FreeStream); config->SetThermalConductivity_FreeStream(Thermal_Conductivity_FreeStream); + config->SetSpecificHeatCp_FreeStream(SpecificHeat_Cp_FreeStream); Energy_FreeStream = auxFluidModel->GetStaticEnergy() + 0.5*ModVel_FreeStream*ModVel_FreeStream; /*--- Compute Reynolds number ---*/ @@ -1054,6 +1061,8 @@ void CEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMes Viscosity_FreeStreamND = Viscosity_FreeStream / Viscosity_Ref; config->SetViscosity_FreeStreamND(Viscosity_FreeStreamND); Thermal_Conductivity_FreeStreamND = Thermal_Conductivity_FreeStream / Conductivity_Ref; config->SetThermalConductivity_FreeStreamND(Thermal_Conductivity_FreeStreamND); + SpecificHeat_Cp_FreeStreamND = SpecificHeat_Cp_FreeStream / Gas_Constant_Ref; + config->SetSpecificHeatCp_FreeStreamND(SpecificHeat_Cp_FreeStreamND); Tke_FreeStream = 3.0/2.0*(ModVel_FreeStream*ModVel_FreeStream*config->GetTurbulenceIntensity_FreeStream()*config->GetTurbulenceIntensity_FreeStream()); config->SetTke_FreeStream(Tke_FreeStream); diff --git a/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp b/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp index d431a864caf4..e1000bfed7ed 100644 --- a/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp +++ b/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp @@ -775,14 +775,16 @@ void CFEM_DG_EulerSolver::SetNondimensionalization(CConfig *config, su2double Temperature_FreeStream = 0.0, Mach2Vel_FreeStream = 0.0, ModVel_FreeStream = 0.0, Energy_FreeStream = 0.0, ModVel_FreeStreamND = 0.0, Velocity_Reynolds = 0.0, - Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, Thermal_Conductivity_FreeStream = 0.0, + Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, + Thermal_Conductivity_FreeStream = 0.0, SpecificHeat_Cp_FreeStream = 0.0, Density_FreeStream = 0.0, Pressure_FreeStream = 0.0, Tke_FreeStream = 0.0, Length_Ref = 0.0, Density_Ref = 0.0, Pressure_Ref = 0.0, Velocity_Ref = 0.0, Temperature_Ref = 0.0, Time_Ref = 0.0, Omega_Ref = 0.0, Force_Ref = 0.0, Gas_Constant_Ref = 0.0, Viscosity_Ref = 0.0, Conductivity_Ref = 0.0, Energy_Ref= 0.0, Froude = 0.0, Pressure_FreeStreamND = 0.0, Density_FreeStreamND = 0.0, Temperature_FreeStreamND = 0.0, Gas_ConstantND = 0.0, - Velocity_FreeStreamND[3] = {0.0, 0.0, 0.0}, Viscosity_FreeStreamND = 0.0, Thermal_Conductivity_FreeStreamND = 0.0, + Velocity_FreeStreamND[3] = {0.0, 0.0, 0.0}, Viscosity_FreeStreamND = 0.0, + Thermal_Conductivity_FreeStreamND = 0.0, SpecificHeat_Cp_FreeStreamND = 0.0, Tke_FreeStreamND = 0.0, Energy_FreeStreamND = 0.0, Total_UnstTimeND = 0.0, Delta_UnstTimeND = 0.0; @@ -961,6 +963,8 @@ void CFEM_DG_EulerSolver::SetNondimensionalization(CConfig *config, config->SetViscosity_FreeStream(Viscosity_FreeStream); Thermal_Conductivity_FreeStream = FluidModel->GetThermalConductivity(); config->SetThermalConductivity_FreeStream(Thermal_Conductivity_FreeStream); + SpecificHeat_Cp_FreeStream = FluidModel->GetCp(); + config->SetSpecificHeatCp_FreeStream(SpecificHeat_Cp_FreeStream); Density_FreeStream = Reynolds*Viscosity_FreeStream/(Velocity_Reynolds*config->GetLength_Reynolds()); config->SetDensity_FreeStream(Density_FreeStream); @@ -981,6 +985,8 @@ void CFEM_DG_EulerSolver::SetNondimensionalization(CConfig *config, config->SetViscosity_FreeStream(Viscosity_FreeStream); Thermal_Conductivity_FreeStream = FluidModel->GetThermalConductivity(); config->SetThermalConductivity_FreeStream(Thermal_Conductivity_FreeStream); + SpecificHeat_Cp_FreeStream = FluidModel->GetCp(); + config->SetSpecificHeatCp_FreeStream(SpecificHeat_Cp_FreeStream); Energy_FreeStream = FluidModel->GetStaticEnergy() + 0.5*ModVel_FreeStream*ModVel_FreeStream; } @@ -1061,6 +1067,8 @@ void CFEM_DG_EulerSolver::SetNondimensionalization(CConfig *config, Viscosity_FreeStreamND = Viscosity_FreeStream / Viscosity_Ref; config->SetViscosity_FreeStreamND(Viscosity_FreeStreamND); Thermal_Conductivity_FreeStreamND = Thermal_Conductivity_FreeStream / Conductivity_Ref; config->SetThermalConductivity_FreeStreamND(Thermal_Conductivity_FreeStreamND); + SpecificHeat_Cp_FreeStreamND = SpecificHeat_Cp_FreeStream / Gas_Constant_Ref; + config->SetSpecificHeatCp_FreeStreamND(SpecificHeat_Cp_FreeStreamND); Tke_FreeStream = 3.0/2.0*(ModVel_FreeStream*ModVel_FreeStream*config->GetTurbulenceIntensity_FreeStream()*config->GetTurbulenceIntensity_FreeStream()); config->SetTke_FreeStream(Tke_FreeStream); diff --git a/SU2_CFD/src/solvers/CHeatSolver.cpp b/SU2_CFD/src/solvers/CHeatSolver.cpp index 194dd64d5a0e..b95e238225c5 100644 --- a/SU2_CFD/src/solvers/CHeatSolver.cpp +++ b/SU2_CFD/src/solvers/CHeatSolver.cpp @@ -598,7 +598,7 @@ void CHeatSolver::Heat_Fluxes(CGeometry *geometry, CSolver **solver_container, C su2double *Coord, *Coord_Normal, *Normal, Area, dist, Twall, dTdn; string Marker_Tag, HeatFlux_Tag; - const su2double thermal_diffusivity = flow ? config->GetThermalConductivity_FreeStreamND()/config->GetSpecific_Heat_CpND() : + const su2double thermal_diffusivity = flow ? config->GetThermalConductivity_FreeStreamND()/config->GetSpecificHeatCp_FreeStreamND() : config->GetThermalDiffusivity(); AllBound_HeatFlux = 0.0; diff --git a/SU2_CFD/src/solvers/CIncEulerSolver.cpp b/SU2_CFD/src/solvers/CIncEulerSolver.cpp index d6c792433194..a4b56a7c169d 100644 --- a/SU2_CFD/src/solvers/CIncEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CIncEulerSolver.cpp @@ -243,12 +243,14 @@ CIncEulerSolver::~CIncEulerSolver() { void CIncEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMesh) { su2double Temperature_FreeStream = 0.0, ModVel_FreeStream = 0.0,Energy_FreeStream = 0.0, - ModVel_FreeStreamND = 0.0, Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, Thermal_Conductivity_FreeStream = 0.0, + ModVel_FreeStreamND = 0.0, Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, + Thermal_Conductivity_FreeStream = 0.0, SpecificHeat_Cp_FreeStream = 0.0, Density_FreeStream = 0.0, Pressure_FreeStream = 0.0, Pressure_Thermodynamic = 0.0, Tke_FreeStream = 0.0, Length_Ref = 0.0, Density_Ref = 0.0, Pressure_Ref = 0.0, Temperature_Ref = 0.0, Velocity_Ref = 0.0, Time_Ref = 0.0, Gas_Constant_Ref = 0.0, Omega_Ref = 0.0, Force_Ref = 0.0, Viscosity_Ref = 0.0, Conductivity_Ref = 0.0, Heat_Flux_Ref = 0.0, Energy_Ref= 0.0, Pressure_FreeStreamND = 0.0, Pressure_ThermodynamicND = 0.0, Density_FreeStreamND = 0.0, Temperature_FreeStreamND = 0.0, Gas_ConstantND = 0.0, Specific_Heat_CpND = 0.0, Thermal_Expansion_CoeffND = 0.0, - Velocity_FreeStreamND[3] = {0.0, 0.0, 0.0}, Viscosity_FreeStreamND = 0.0, Thermal_Conductivity_FreeStreamND = 0.0, + Velocity_FreeStreamND[3] = {0.0, 0.0, 0.0}, Viscosity_FreeStreamND = 0.0, + Thermal_Conductivity_FreeStreamND = 0.0, SpecificHeat_Cp_FreeStreamND = 0.0, Tke_FreeStreamND = 0.0, Energy_FreeStreamND = 0.0, Total_UnstTimeND = 0.0, Delta_UnstTimeND = 0.0; @@ -361,6 +363,8 @@ void CIncEulerSolver::SetNondimensionalization(CConfig *config, unsigned short i config->SetViscosity_FreeStream(Viscosity_FreeStream); Thermal_Conductivity_FreeStream = auxFluidModel->GetThermalConductivity(); config->SetThermalConductivity_FreeStream(Thermal_Conductivity_FreeStream); + SpecificHeat_Cp_FreeStream = auxFluidModel->GetCp(); + config->SetSpecificHeatCp_FreeStream(SpecificHeat_Cp_FreeStream); Reynolds = Density_FreeStream*ModVel_FreeStream/Viscosity_FreeStream; config->SetReynolds(Reynolds); @@ -455,6 +459,8 @@ void CIncEulerSolver::SetNondimensionalization(CConfig *config, unsigned short i Viscosity_FreeStreamND = Viscosity_FreeStream / Viscosity_Ref; config->SetViscosity_FreeStreamND(Viscosity_FreeStreamND); Thermal_Conductivity_FreeStreamND = Thermal_Conductivity_FreeStream / Conductivity_Ref; config->SetThermalConductivity_FreeStreamND(Thermal_Conductivity_FreeStreamND); + SpecificHeat_Cp_FreeStreamND = SpecificHeat_Cp_FreeStream / Gas_Constant_Ref; + config->SetSpecificHeatCp_FreeStreamND(SpecificHeat_Cp_FreeStreamND); Tke_FreeStream = 3.0/2.0*(ModVel_FreeStream*ModVel_FreeStream*config->GetTurbulenceIntensity_FreeStream()*config->GetTurbulenceIntensity_FreeStream()); config->SetTke_FreeStream(Tke_FreeStream); diff --git a/SU2_CFD/src/solvers/CNSSolver.cpp b/SU2_CFD/src/solvers/CNSSolver.cpp index bb3cc7014fdf..421d6778205d 100644 --- a/SU2_CFD/src/solvers/CNSSolver.cpp +++ b/SU2_CFD/src/solvers/CNSSolver.cpp @@ -789,7 +789,7 @@ void CNSSolver::SetTau_Wall_WF(CGeometry *geometry, CSolver **solver_container, unsigned long smallYPlusCounter = 0; /*--- counts the number of wall cells where y+ < 5 ---*/ const su2double Gas_Constant = config->GetGas_ConstantND(); - const su2double Cp = config->GetSpecific_Heat_CpND(); + const su2double Cp = (Gamma / Gamma_Minus_One) * Gas_Constant; const unsigned short max_iter = config->GetwallModel_MaxIter(); const su2double relax = config->GetwallModel_RelFac(); From c1afb3c6eba3e8e7841ca686c77864ccad4ff6e9 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Tue, 5 Aug 2025 08:33:51 +0200 Subject: [PATCH 21/30] including Cp setHeatFluxVector --- SU2_CFD/include/numerics/flow/flow_diffusion.hpp | 8 +++++--- SU2_CFD/src/numerics/flow/flow_diffusion.cpp | 16 +++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp index 166617fad3b4..f312bd24a9a3 100644 --- a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp +++ b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp @@ -57,7 +57,8 @@ class CAvgGrad_Base : public CNumerics { su2double **Mean_GradPrimVar = nullptr, /*!< \brief Mean value of the gradient. */ Mean_Laminar_Viscosity, /*!< \brief Mean value of the viscosity. */ Mean_Eddy_Viscosity, /*!< \brief Mean value of the eddy viscosity. */ - Mean_Thermal_Conductivity, /*!< \brief Mean value of the thermal conductivity. */ + Mean_Thermal_Conductivity, /*!< \brief Mean value of the thermal conductivity. */ + Mean_Cp, /*!< \brief Mean value of the specific heat capacity at constant pressure. */ Mean_turb_ke, /*!< \brief Mean value of the turbulent kinetic energy. */ Mean_TauWall, /*!< \brief Mean wall shear stress (wall functions). */ TauWall_i, TauWall_j, /*!< \brief Wall shear stress at point i and j (wall functions). */ @@ -253,9 +254,11 @@ class CAvgGrad_Flow final : public CAvgGrad_Base { * \brief Compute the heat flux due to molecular and turbulent diffusivity * \param[in] val_gradprimvar - Gradient of the primitive variables. * \param[in] val_thermal_conductivity - Thermal Conductivity. + * \param[in] val_thermal_conductivity - Heat Capacity at constant pressure. * \param[in] val_eddy_viscosity - Eddy viscosity. */ - void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_thermal_conductivity, su2double val_eddy_viscosity); + void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_thermal_conductivity, + su2double val_heat_capacity_cp, su2double val_eddy_viscosity); /*! * \brief Compute the Jacobian of the heat flux vector @@ -360,7 +363,6 @@ class CGeneralAvgGrad_Flow final : public CAvgGrad_Base { * \param[in] val_heat_capacity_cp - Heat Capacity at constant pressure. */ void SetHeatFluxVector(const su2double* const *val_gradprimvar, - su2double val_laminar_viscosity, su2double val_eddy_viscosity, su2double val_thermal_conductivity, su2double val_heat_capacity_cp); diff --git a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp index 37779b8ab356..f87b63a71378 100644 --- a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp +++ b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp @@ -398,6 +398,7 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) Laminar_Viscosity_i = V_i[nDim+5]; Laminar_Viscosity_j = V_j[nDim+5]; Eddy_Viscosity_i = V_i[nDim+6]; Eddy_Viscosity_j = V_j[nDim+6]; Thermal_Conductivity_i = V_i[nDim+7]; Thermal_Conductivity_j = V_j[nDim+7]; + Cp_i = V_i[nDim + 8]; Cp_j = V_j[nDim + 8]; /*--- Mean Viscosities and turbulent kinetic energy---*/ @@ -405,6 +406,7 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) Mean_Eddy_Viscosity = 0.5*(Eddy_Viscosity_i + Eddy_Viscosity_j); Mean_Thermal_Conductivity = 0.5*(Thermal_Conductivity_i + Thermal_Conductivity_j); Mean_turb_ke = 0.5*(turb_ke_i + turb_ke_j); + Mean_Cp = 0.5 * (Cp_i + Cp_j); /*--- Mean gradient approximation ---*/ @@ -441,7 +443,7 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) if (config->GetSAParsedOptions().qcr2000) AddQCR(nDim, &Mean_GradPrimVar[1], tau); if (Mean_TauWall > 0) AddTauWall(UnitNormal, Mean_TauWall); - SetHeatFluxVector(Mean_GradPrimVar, Mean_Thermal_Conductivity, Mean_Eddy_Viscosity); + SetHeatFluxVector(Mean_GradPrimVar, Mean_Thermal_Conductivity,Mean_Cp, Mean_Eddy_Viscosity); GetViscousProjFlux(Mean_PrimVar, Normal); @@ -460,9 +462,7 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) const su2double dist_ij = sqrt(dist_ij_2); SetTauJacobian(Mean_PrimVar, Mean_Laminar_Viscosity, Mean_Eddy_Viscosity, dist_ij, UnitNormal); - Cp_i = V_i[nDim + 8]; Cp_j = V_j[nDim + 8]; - const su2double Mean_Heat_Capacity = 0.5 * (Cp_i + Cp_j); - SetHeatFluxJacobian(Mean_PrimVar, Mean_Heat_Capacity, Mean_Thermal_Conductivity, Mean_Eddy_Viscosity, dist_ij, UnitNormal); + SetHeatFluxJacobian(Mean_PrimVar, Mean_Cp, Mean_Thermal_Conductivity, Mean_Eddy_Viscosity, dist_ij, UnitNormal); GetViscousProjJacs(Mean_PrimVar, Area, Proj_Flux_Tensor, Jacobian_i, Jacobian_j); } @@ -478,10 +478,10 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) void CAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradprimvar, const su2double val_thermal_conductivity, + const su2double val_heat_capacity_cp, const su2double val_eddy_viscosity) { - const su2double Cp = (Gamma / Gamma_Minus_One) * Gas_Constant; - const su2double heat_flux_factor = val_thermal_conductivity + Cp * val_eddy_viscosity/Prandtl_Turb; + const su2double heat_flux_factor = val_thermal_conductivity + val_heat_capacity_cp * val_eddy_viscosity/Prandtl_Turb; /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ @@ -799,7 +799,6 @@ CGeneralAvgGrad_Flow::CGeneralAvgGrad_Flow(unsigned short val_nDim, : CAvgGrad_Base(val_nDim, val_nVar, val_nDim+4, val_correct_grad, config) { } void CGeneralAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradprimvar, - const su2double val_laminar_viscosity, const su2double val_eddy_viscosity, const su2double val_thermal_conductivity, const su2double val_heat_capacity_cp) { @@ -957,8 +956,7 @@ CNumerics::ResidualType<> CGeneralAvgGrad_Flow::ComputeResidual(const CConfig* c if (config->GetSAParsedOptions().qcr2000) AddQCR(nDim, &Mean_GradPrimVar[1], tau); if (Mean_TauWall > 0) AddTauWall(UnitNormal, Mean_TauWall); - SetHeatFluxVector(Mean_GradPrimVar, Mean_Laminar_Viscosity, - Mean_Eddy_Viscosity, Mean_Thermal_Conductivity, Mean_Cp); + SetHeatFluxVector(Mean_GradPrimVar, Mean_Eddy_Viscosity, Mean_Thermal_Conductivity, Mean_Cp); GetViscousProjFlux(Mean_PrimVar, Normal); From 5a80943609a159447c6b678091c9d3f28acd0880 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Fri, 8 Aug 2025 12:03:14 +0200 Subject: [PATCH 22/30] reformulating --- SU2_CFD/include/numerics/flow/flow_diffusion.hpp | 9 ++++----- SU2_CFD/src/numerics/flow/flow_diffusion.cpp | 14 +++++++------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp index f312bd24a9a3..15c8df4b36dc 100644 --- a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp +++ b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp @@ -253,12 +253,12 @@ class CAvgGrad_Flow final : public CAvgGrad_Base { /*! * \brief Compute the heat flux due to molecular and turbulent diffusivity * \param[in] val_gradprimvar - Gradient of the primitive variables. - * \param[in] val_thermal_conductivity - Thermal Conductivity. - * \param[in] val_thermal_conductivity - Heat Capacity at constant pressure. * \param[in] val_eddy_viscosity - Eddy viscosity. + * \param[in] val_thermal_conductivity - Thermal Conductivity. + * \param[in] val_heat_capacity_cp - Heat Capacity at constant pressure. */ - void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_thermal_conductivity, - su2double val_heat_capacity_cp, su2double val_eddy_viscosity); + void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_eddy_viscosity, + su2double val_thermal_conductivity, su2double val_heat_capacity_cp); /*! * \brief Compute the Jacobian of the heat flux vector @@ -357,7 +357,6 @@ class CGeneralAvgGrad_Flow final : public CAvgGrad_Base { /*! * \brief Compute the heat flux due to molecular and turbulent diffusivity * \param[in] val_gradprimvar - Gradient of the primitive variables. - * \param[in] val_laminar_viscosity - Laminar viscosity. * \param[in] val_eddy_viscosity - Eddy viscosity. * \param[in] val_thermal_conductivity - Thermal Conductivity. * \param[in] val_heat_capacity_cp - Heat Capacity at constant pressure. diff --git a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp index f87b63a71378..f3898955a8c3 100644 --- a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp +++ b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp @@ -443,7 +443,7 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) if (config->GetSAParsedOptions().qcr2000) AddQCR(nDim, &Mean_GradPrimVar[1], tau); if (Mean_TauWall > 0) AddTauWall(UnitNormal, Mean_TauWall); - SetHeatFluxVector(Mean_GradPrimVar, Mean_Thermal_Conductivity,Mean_Cp, Mean_Eddy_Viscosity); + SetHeatFluxVector(Mean_GradPrimVar, Mean_Eddy_Viscosity, Mean_Thermal_Conductivity, Mean_Cp); GetViscousProjFlux(Mean_PrimVar, Normal); @@ -477,11 +477,11 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) } void CAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradprimvar, + const su2double val_eddy_viscosity, const su2double val_thermal_conductivity, - const su2double val_heat_capacity_cp, - const su2double val_eddy_viscosity) { - - const su2double heat_flux_factor = val_thermal_conductivity + val_heat_capacity_cp * val_eddy_viscosity/Prandtl_Turb; + const su2double val_heat_capacity_cp) { + const su2double heat_flux_factor = + val_thermal_conductivity + val_heat_capacity_cp * val_eddy_viscosity / Prandtl_Turb; /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ @@ -802,8 +802,8 @@ void CGeneralAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradpri const su2double val_eddy_viscosity, const su2double val_thermal_conductivity, const su2double val_heat_capacity_cp) { - - const su2double heat_flux_factor = val_thermal_conductivity + val_heat_capacity_cp*val_eddy_viscosity/Prandtl_Turb; + const su2double heat_flux_factor = + val_thermal_conductivity + val_heat_capacity_cp * val_eddy_viscosity / Prandtl_Turb; /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ for (unsigned short iDim = 0; iDim < nDim; iDim++) { From a7b4c54eea7bca945802052b079113848ae65248 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Fri, 8 Aug 2025 13:50:04 +0200 Subject: [PATCH 23/30] moving up SetHeatFluxVector --- .../include/numerics/flow/flow_diffusion.hpp | 38 ++++++---------- SU2_CFD/src/numerics/flow/flow_diffusion.cpp | 43 +++++++------------ 2 files changed, 29 insertions(+), 52 deletions(-) diff --git a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp index 15c8df4b36dc..a6d308e9945d 100644 --- a/SU2_CFD/include/numerics/flow/flow_diffusion.hpp +++ b/SU2_CFD/include/numerics/flow/flow_diffusion.hpp @@ -216,6 +216,16 @@ class CAvgGrad_Base : public CNumerics { */ inline su2double GetStressTensor(unsigned short iDim, unsigned short jDim) const { return tau[iDim][jDim];} + /*! + * \brief Compute the heat flux due to molecular and turbulent diffusivity + * \param[in] val_gradprimvar - Gradient of the primitive variables. + * \param[in] val_eddy_viscosity - Eddy viscosity. + * \param[in] val_thermal_conductivity - Thermal Conductivity. + * \param[in] val_heat_capacity_cp - Heat Capacity at constant pressure. + */ + void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_eddy_viscosity, + su2double val_thermal_conductivity, su2double val_heat_capacity_cp); + /*! * \brief Get a component of the heat flux vector. * \param[in] iDim - The index of the component @@ -250,16 +260,6 @@ class CAvgGrad_Flow final : public CAvgGrad_Base { */ ResidualType<> ComputeResidual(const CConfig* config) override; - /*! - * \brief Compute the heat flux due to molecular and turbulent diffusivity - * \param[in] val_gradprimvar - Gradient of the primitive variables. - * \param[in] val_eddy_viscosity - Eddy viscosity. - * \param[in] val_thermal_conductivity - Thermal Conductivity. - * \param[in] val_heat_capacity_cp - Heat Capacity at constant pressure. - */ - void SetHeatFluxVector(const su2double* const* val_gradprimvar, su2double val_eddy_viscosity, - su2double val_thermal_conductivity, su2double val_heat_capacity_cp); - /*! * \brief Compute the Jacobian of the heat flux vector * @@ -268,13 +268,13 @@ class CAvgGrad_Flow final : public CAvgGrad_Base { * * \param[in] val_Mean_PrimVar - Mean value of the primitive variables. * \param[in] val_gradprimvar - Mean value of the gradient of the primitive variables. - * \param[in] val_laminar_viscosity - Value of the laminar viscosity. + * \param[in] val_heat_capacity_cp - Value of the heat capacity at constant pressure. * \param[in] val_eddy_viscosity - Value of the eddy viscosity. * \param[in] val_dist_ij - Distance between the points. * \param[in] val_normal - Normal vector, the norm of the vector is the area of the face. */ void SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, - su2double val_heat_capacity, + su2double val_heat_capacity_cp, su2double val_thermal_conductivity, su2double val_eddy_viscosity, su2double val_dist_ij, @@ -354,18 +354,6 @@ class CGeneralAvgGrad_Flow final : public CAvgGrad_Base { Mean_Thermal_Conductivity, /*!< \brief Mean value of the thermal conductivity. */ Mean_Cp; /*!< \brief Mean value of the Cp. */ - /*! - * \brief Compute the heat flux due to molecular and turbulent diffusivity - * \param[in] val_gradprimvar - Gradient of the primitive variables. - * \param[in] val_eddy_viscosity - Eddy viscosity. - * \param[in] val_thermal_conductivity - Thermal Conductivity. - * \param[in] val_heat_capacity_cp - Heat Capacity at constant pressure. - */ - void SetHeatFluxVector(const su2double* const *val_gradprimvar, - su2double val_eddy_viscosity, - su2double val_thermal_conductivity, - su2double val_heat_capacity_cp); - /*! * \brief Compute the Jacobian of the heat flux vector * @@ -374,7 +362,9 @@ class CGeneralAvgGrad_Flow final : public CAvgGrad_Base { * * \param[in] val_Mean_PrimVar - Mean value of the primitive variables. * \param[in] val_Mean_SecVar - Mean value of the secondary variables. + * \param[in] val_eddy_viscosity - Value of the eddy viscosity. * \param[in] val_thermal_conductivity - Value of the thermal conductivity. + * \param[in] val_heat_capacity_cp - Value of the specific heat at constant pressure. * \param[in] val_dist_ij - Distance between the points. */ void SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, diff --git a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp index f3898955a8c3..ea2d123b8809 100644 --- a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp +++ b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp @@ -144,6 +144,19 @@ void CAvgGrad_Base::SetStressTensor(const su2double *val_primvar, } } +void CAvgGrad_Base::SetHeatFluxVector(const su2double* const *val_gradprimvar, + const su2double val_eddy_viscosity, + const su2double val_thermal_conductivity, + const su2double val_heat_capacity_cp) { + const su2double heat_flux_factor = + val_thermal_conductivity + val_heat_capacity_cp * val_eddy_viscosity / Prandtl_Turb; + + /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ + for (unsigned short iDim = 0; iDim < nDim; iDim++) { + heat_flux_vector[iDim] = heat_flux_factor*val_gradprimvar[0][iDim]; + } +} + void CAvgGrad_Base::AddTauWall(const su2double *UnitNormal, const su2double TauWall) { @@ -476,22 +489,9 @@ CNumerics::ResidualType<> CAvgGrad_Flow::ComputeResidual(const CConfig* config) } -void CAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradprimvar, - const su2double val_eddy_viscosity, - const su2double val_thermal_conductivity, - const su2double val_heat_capacity_cp) { - const su2double heat_flux_factor = - val_thermal_conductivity + val_heat_capacity_cp * val_eddy_viscosity / Prandtl_Turb; - - /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ - - for (unsigned short iDim = 0; iDim < nDim; iDim++) { - heat_flux_vector[iDim] = heat_flux_factor*val_gradprimvar[0][iDim]; - } -} void CAvgGrad_Flow::SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, - const su2double val_heat_capacity, + const su2double val_heat_capacity_cp, const su2double val_thermal_conductivity, const su2double val_eddy_viscosity, const su2double val_dist_ij, @@ -512,7 +512,7 @@ void CAvgGrad_Flow::SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, const su2double R_dTdu1 = -phi*val_Mean_PrimVar[1]; const su2double R_dTdu2 = -phi*val_Mean_PrimVar[2]; - const su2double heat_flux_factor = val_thermal_conductivity/val_heat_capacity + val_eddy_viscosity/Prandtl_Turb; + const su2double heat_flux_factor = val_thermal_conductivity/val_heat_capacity_cp + val_eddy_viscosity/Prandtl_Turb; const su2double cpoR = Gamma/Gamma_Minus_One; // cp over R const su2double conductivity_over_Rd = cpoR*heat_flux_factor/val_dist_ij; @@ -798,19 +798,6 @@ CGeneralAvgGrad_Flow::CGeneralAvgGrad_Flow(unsigned short val_nDim, const CConfig* config) : CAvgGrad_Base(val_nDim, val_nVar, val_nDim+4, val_correct_grad, config) { } -void CGeneralAvgGrad_Flow::SetHeatFluxVector(const su2double* const *val_gradprimvar, - const su2double val_eddy_viscosity, - const su2double val_thermal_conductivity, - const su2double val_heat_capacity_cp) { - const su2double heat_flux_factor = - val_thermal_conductivity + val_heat_capacity_cp * val_eddy_viscosity / Prandtl_Turb; - - /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ - for (unsigned short iDim = 0; iDim < nDim; iDim++) { - heat_flux_vector[iDim] = heat_flux_factor*val_gradprimvar[0][iDim]; - } -} - void CGeneralAvgGrad_Flow::SetHeatFluxJacobian(const su2double *val_Mean_PrimVar, const su2double *val_Mean_SecVar, const su2double val_eddy_viscosity, From 52da9d44c45fef85aab7fc21906c97c6bf1467cf Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Wed, 3 Sep 2025 13:11:23 +0200 Subject: [PATCH 24/30] updating residual test case --- TestCases/parallel_regression.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TestCases/parallel_regression.py b/TestCases/parallel_regression.py index b89836d00c0d..3385fae8c947 100644 --- a/TestCases/parallel_regression.py +++ b/TestCases/parallel_regression.py @@ -397,7 +397,7 @@ def main(): turb_flatplate_species_ConstConductivity.cfg_dir = "rans/flatplate" turb_flatplate_species_ConstConductivity.cfg_file = "turb_SA_flatplate_species_ConstConductivity.cfg" turb_flatplate_species_ConstConductivity.test_iter = 20 - turb_flatplate_species_ConstConductivity.test_vals = [-4.385761, -0.753729, -2.143649, 1.114937, -4.088701, 5.000000, -2.508344, 4.000000, -5.119461, 5.000000, -2.723197, 0.999990, 0.999990] + turb_flatplate_species_ConstConductivity.test_vals = [-4.158585, -0.594886, -1.690809, 1.339778, -4.382069, 5.000000, -2.536527, 4.000000, -5.013900, 5.000000, -2.609968, 0.999982, 0.999982] test_list.append(turb_flatplate_species_ConstConductivity) # Flat plate SST compressibility correction Wilcox From f36dd0d1b4a56674ad7d1660160f625b4f9f30ef Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Mon, 15 Sep 2025 10:08:06 +0200 Subject: [PATCH 25/30] fixing missing thermalConductivity --- SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp b/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp index 27ab74eb256f..fd5adfd5c8b4 100644 --- a/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp +++ b/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp @@ -275,7 +275,7 @@ class CCompressibleViscousFlux : public CCompressibleViscousFluxBase FORCEINLINE Double thermalConductivity(const PrimitiveType& V) const { - return cp * (V.laminarVisc()/prandtlLam + V.eddyVisc()/prandtlTurb); + return V.thermalCond() + V.cp()*V.eddyVisc()/prandtlTurb; } /*! From 593ea9c13af78d74db97afdeedeca05f795c834c Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Mon, 15 Sep 2025 11:14:44 +0200 Subject: [PATCH 26/30] increasing nPrimVar and removing some variables --- .../numerics_simd/flow/diffusion/viscous_fluxes.hpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp b/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp index fd5adfd5c8b4..be271f7fd1c2 100644 --- a/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp +++ b/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp @@ -75,9 +75,7 @@ class CCompressibleViscousFluxBase : public CNumericsSIMD { const su2double gamma; const su2double gasConst; - const su2double prandtlLam; const su2double prandtlTurb; - const su2double cp; const bool correct; const bool useSA_QCR; const bool wallFun; @@ -97,9 +95,7 @@ class CCompressibleViscousFluxBase : public CNumericsSIMD { const CVariable* turbVars_, Ts&...) : gamma(config.GetGamma()), gasConst(config.GetGas_ConstantND()), - prandtlLam(config.GetPrandtl_Lam()), prandtlTurb(config.GetPrandtl_Turb()), - cp(gamma * gasConst / (gamma - 1)), correct(iMesh == MESH_0), useSA_QCR(config.GetSAParsedOptions().qcr2000), wallFun(config.GetWall_Functions()), @@ -256,13 +252,11 @@ class CCompressibleViscousFluxBase : public CNumericsSIMD { template class CCompressibleViscousFlux : public CCompressibleViscousFluxBase > { public: - static constexpr size_t nPrimVar = NDIM+7; + static constexpr size_t nPrimVar = NDIM+9; using Base = CCompressibleViscousFluxBase >; using Base::gamma; using Base::gasConst; - using Base::prandtlLam; using Base::prandtlTurb; - using Base::cp; /*! * \brief Constructor, initialize constants and booleans. @@ -275,7 +269,7 @@ class CCompressibleViscousFlux : public CCompressibleViscousFluxBase FORCEINLINE Double thermalConductivity(const PrimitiveType& V) const { - return V.thermalCond() + V.cp()*V.eddyVisc()/prandtlTurb; + return V.thermalCond() + V.cp() * V.eddyVisc() / prandtlTurb; } /*! From 86988eab1f6f53c2849f160fdbea150d0b3d1a13 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Mon, 15 Sep 2025 13:11:48 +0200 Subject: [PATCH 27/30] making LambdaVisc independent of prandtl laminar --- SU2_CFD/include/solvers/CEulerSolver.hpp | 1 - SU2_CFD/src/solvers/CEulerSolver.cpp | 21 +++++++++++++-------- SU2_CFD/src/solvers/CNSSolver.cpp | 1 - 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/SU2_CFD/include/solvers/CEulerSolver.hpp b/SU2_CFD/include/solvers/CEulerSolver.hpp index f85487ca5fe8..e3f029a37538 100644 --- a/SU2_CFD/include/solvers/CEulerSolver.hpp +++ b/SU2_CFD/include/solvers/CEulerSolver.hpp @@ -41,7 +41,6 @@ class CEulerSolver : public CFVMFlowSolverBase; su2double - Prandtl_Lam = 0.0, /*!< \brief Laminar Prandtl number. */ Prandtl_Turb = 0.0; /*!< \brief Turbulent Prandtl number. */ su2double AllBound_CEquivArea_Inv=0.0; /*!< \brief equivalent area coefficient (inviscid contribution) for all the boundaries. */ diff --git a/SU2_CFD/src/solvers/CEulerSolver.cpp b/SU2_CFD/src/solvers/CEulerSolver.cpp index cde3ac46aa86..5368c287fc6b 100644 --- a/SU2_CFD/src/solvers/CEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CEulerSolver.cpp @@ -1738,14 +1738,15 @@ void CEulerSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, /*--- Define an object to compute the viscous eigenvalue. ---*/ struct LambdaVisc { - const su2double gamma, prandtlLam, prandtlTurb; + const su2double gamma, prandtlTurb; - LambdaVisc(su2double g, su2double pl, su2double pt) : gamma(g), prandtlLam(pl), prandtlTurb(pt) {} + LambdaVisc(su2double g, su2double pt) : gamma(g), prandtlTurb(pt) {} - FORCEINLINE su2double lambda(su2double laminarVisc, su2double eddyVisc, su2double density) const { - su2double Lambda_1 = (4.0/3.0)*(laminarVisc + eddyVisc); + FORCEINLINE su2double lambda(su2double laminarVisc, su2double eddyVisc, su2double density, su2double cp, + su2double thermalCond) const { + su2double Lambda_1 = (4.0 / 3.0) * (laminarVisc + eddyVisc); /// TODO: (REAL_GAS) removing gamma as it cannot work with FLUIDPROP - su2double Lambda_2 = (1.0 + (prandtlLam/prandtlTurb)*(eddyVisc/laminarVisc))*(gamma*laminarVisc/prandtlLam); + su2double Lambda_2 = (thermalCond / cp + eddyVisc / prandtlTurb) * gamma; return (Lambda_1 + Lambda_2) / density; } @@ -1753,17 +1754,21 @@ void CEulerSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, su2double laminarVisc = 0.5*(nodes.GetLaminarViscosity(iPoint) + nodes.GetLaminarViscosity(jPoint)); su2double eddyVisc = 0.5*(nodes.GetEddyViscosity(iPoint) + nodes.GetEddyViscosity(jPoint)); su2double density = 0.5*(nodes.GetDensity(iPoint) + nodes.GetDensity(jPoint)); - return lambda(laminarVisc, eddyVisc, density); + su2double thermalCond = 0.5*(nodes.GetThermalConductivity(iPoint) + nodes.GetThermalConductivity(jPoint)); + su2double cp = 0.5*(nodes.GetSpecificHeatCp(iPoint) + nodes.GetSpecificHeatCp(jPoint)); + return lambda(laminarVisc, eddyVisc, density, cp, thermalCond); } FORCEINLINE su2double operator() (const CEulerVariable& nodes, unsigned long iPoint) const { su2double laminarVisc = nodes.GetLaminarViscosity(iPoint); su2double eddyVisc = nodes.GetEddyViscosity(iPoint); su2double density = nodes.GetDensity(iPoint); - return lambda(laminarVisc, eddyVisc, density); + su2double thermalCond = nodes.GetThermalConductivity(iPoint); + su2double cp = nodes.GetSpecificHeatCp(iPoint); + return lambda(laminarVisc, eddyVisc, density, cp, thermalCond); } - } lambdaVisc(Gamma, Prandtl_Lam, Prandtl_Turb); + } lambdaVisc(Gamma, Prandtl_Turb); /*--- Now instantiate the generic implementation with the two functors above. ---*/ diff --git a/SU2_CFD/src/solvers/CNSSolver.cpp b/SU2_CFD/src/solvers/CNSSolver.cpp index c2667a7fa277..c2206813fe21 100644 --- a/SU2_CFD/src/solvers/CNSSolver.cpp +++ b/SU2_CFD/src/solvers/CNSSolver.cpp @@ -51,7 +51,6 @@ CNSSolver::CNSSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) /*--- Read farfield conditions from config ---*/ Viscosity_Inf = config->GetViscosity_FreeStreamND(); - Prandtl_Lam = config->GetPrandtl_Lam(); Prandtl_Turb = config->GetPrandtl_Turb(); Tke_Inf = config->GetTke_FreeStreamND(); From e7d678648e771a86c92c4b16ec00f751dc2cb401 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Wed, 17 Sep 2025 11:00:08 +0200 Subject: [PATCH 28/30] addressing review comments --- SU2_CFD/src/numerics/flow/flow_diffusion.cpp | 8 +- SU2_CFD/src/solvers/CHeatSolver.cpp | 4 +- TestCases/parallel_regression.py | 8 - .../flatplate/turb_SA_flatplate_species.cfg | 16 +- ...SA_flatplate_species_ConstConductivity.cfg | 140 ------------------ 5 files changed, 20 insertions(+), 156 deletions(-) delete mode 100644 TestCases/rans/flatplate/turb_SA_flatplate_species_ConstConductivity.cfg diff --git a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp index 65df7c70352a..ed833df16a2f 100644 --- a/SU2_CFD/src/numerics/flow/flow_diffusion.cpp +++ b/SU2_CFD/src/numerics/flow/flow_diffusion.cpp @@ -144,16 +144,14 @@ void CAvgGrad_Base::SetStressTensor(const su2double *val_primvar, } } -void CAvgGrad_Base::SetHeatFluxVector(const su2double* const *val_gradprimvar, - const su2double val_eddy_viscosity, - const su2double val_thermal_conductivity, - const su2double val_heat_capacity_cp) { +void CAvgGrad_Base::SetHeatFluxVector(const su2double* const* val_gradprimvar, const su2double val_eddy_viscosity, + const su2double val_thermal_conductivity, const su2double val_heat_capacity_cp) { const su2double heat_flux_factor = val_thermal_conductivity + val_heat_capacity_cp * val_eddy_viscosity / Prandtl_Turb; /*--- Gradient of primitive variables -> [Temp vel_x vel_y vel_z Pressure] ---*/ for (unsigned short iDim = 0; iDim < nDim; iDim++) { - heat_flux_vector[iDim] = heat_flux_factor*val_gradprimvar[0][iDim]; + heat_flux_vector[iDim] = heat_flux_factor * val_gradprimvar[0][iDim]; } } diff --git a/SU2_CFD/src/solvers/CHeatSolver.cpp b/SU2_CFD/src/solvers/CHeatSolver.cpp index 1296cb567a54..547697690027 100644 --- a/SU2_CFD/src/solvers/CHeatSolver.cpp +++ b/SU2_CFD/src/solvers/CHeatSolver.cpp @@ -749,12 +749,12 @@ void CHeatSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, if (flow) { const su2double thermal_conductivity = 0.5 * (flow_nodes->GetThermalConductivity(iPoint) + flow_nodes->GetThermalConductivity(jPoint)); - const su2double Cp = 0.5 * (flow_nodes->GetSpecificHeatCp(iPoint) + + const su2double heat_capacity_cp = 0.5 * (flow_nodes->GetSpecificHeatCp(iPoint) + flow_nodes->GetSpecificHeatCp(jPoint)); const su2double eddy_viscosity = 0.5 * (flow_nodes->GetEddyViscosity(iPoint) + flow_nodes->GetEddyViscosity(jPoint)); - const su2double thermal_diffusivity = thermal_conductivity / Cp + eddy_viscosity / prandtl_turb; + const su2double thermal_diffusivity = thermal_conductivity / heat_capacity_cp + eddy_viscosity / prandtl_turb; nodes->AddMax_Lambda_Visc(iPoint, thermal_diffusivity * Area2); } else { nodes->AddMax_Lambda_Visc(iPoint, constant_thermal_diffusivity * Area2); diff --git a/TestCases/parallel_regression.py b/TestCases/parallel_regression.py index 3385fae8c947..63400350a11c 100644 --- a/TestCases/parallel_regression.py +++ b/TestCases/parallel_regression.py @@ -392,14 +392,6 @@ def main(): turb_flatplate_species.test_vals = [-4.249474, -0.634908, -1.716288, 1.223201, -3.307930, 9.000000, -6.634095, 5.000000, -6.986784, 10.000000, -6.255641, 0.999903, 0.999903] test_list.append(turb_flatplate_species) - # Flat plate (compressible) species transport using constant conductivity model - turb_flatplate_species_ConstConductivity = TestCase('turb_flatplate_species_ConstConductivity') - turb_flatplate_species_ConstConductivity.cfg_dir = "rans/flatplate" - turb_flatplate_species_ConstConductivity.cfg_file = "turb_SA_flatplate_species_ConstConductivity.cfg" - turb_flatplate_species_ConstConductivity.test_iter = 20 - turb_flatplate_species_ConstConductivity.test_vals = [-4.158585, -0.594886, -1.690809, 1.339778, -4.382069, 5.000000, -2.536527, 4.000000, -5.013900, 5.000000, -2.609968, 0.999982, 0.999982] - test_list.append(turb_flatplate_species_ConstConductivity) - # Flat plate SST compressibility correction Wilcox turb_flatplate_CC_Wilcox = TestCase('turb_flatplate_CC_Wilcox') turb_flatplate_CC_Wilcox.cfg_dir = "rans/flatplate" diff --git a/TestCases/rans/flatplate/turb_SA_flatplate_species.cfg b/TestCases/rans/flatplate/turb_SA_flatplate_species.cfg index 7a9119ba3bb0..6bbca0278fc4 100644 --- a/TestCases/rans/flatplate/turb_SA_flatplate_species.cfg +++ b/TestCases/rans/flatplate/turb_SA_flatplate_species.cfg @@ -33,7 +33,21 @@ REF_ORIGIN_MOMENT_Y = 0.00 REF_ORIGIN_MOMENT_Z = 0.00 REF_LENGTH= 1.0 REF_AREA= 2.0 - +% -------------------- FLUID PROPERTIES ------------------------------------- % +% +FLUID_MODEL= IDEAL_GAS +% +MOLECULAR_WEIGHT= 28.960 +% +SPECIFIC_HEAT_CP = 1009.39 +% +CONDUCTIVITY_MODEL= CONSTANT_CONDUCTIVITY +THERMAL_CONDUCTIVITY_CONSTANT= 0.0258 +% +PRANDTL_LAM= 0.72 +TURBULENT_CONDUCTIVITY_MODEL= CONSTANT_PRANDTL_TURB +PRANDTL_TURB= 0.90 +% % -------------------- BOUNDARY CONDITION DEFINITION --------------------------% % MARKER_HEATFLUX= ( wall, 0.0 ) diff --git a/TestCases/rans/flatplate/turb_SA_flatplate_species_ConstConductivity.cfg b/TestCases/rans/flatplate/turb_SA_flatplate_species_ConstConductivity.cfg deleted file mode 100644 index ff4d16b82101..000000000000 --- a/TestCases/rans/flatplate/turb_SA_flatplate_species_ConstConductivity.cfg +++ /dev/null @@ -1,140 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% SU2 configuration file % -% Case description: Turbulent flow over flat plate with zero pressure gradient % -% using conductivity model CONSTANT_CONDUCTIVITY % -% Author: C. Morales Ubal % -% Institution: Eindhoven University of Technology % -% Date: 2025.02.22 % -% File Version 8.1.0 "Harrier" % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------% -% -SOLVER= RANS -KIND_TURB_MODEL= SA -MATH_PROBLEM= DIRECT -RESTART_SOL= NO - -% ----------- COMPRESSIBLE AND INCOMPRESSIBLE FREE-STREAM DEFINITION ----------% -% -MACH_NUMBER= 0.2 -AOA= 0.0 -SIDESLIP_ANGLE= 0.0 -FREESTREAM_TEMPERATURE= 300.0 -REYNOLDS_NUMBER= 5000000.0 -REYNOLDS_LENGTH= 1.0 - -% ---------------------- REFERENCE VALUE DEFINITION ---------------------------% -% -REF_ORIGIN_MOMENT_X = 0.25 -REF_ORIGIN_MOMENT_Y = 0.00 -REF_ORIGIN_MOMENT_Z = 0.00 -REF_LENGTH= 1.0 -REF_AREA= 2.0 - -% -------------------- FLUID PROPERTIES ------------------------------------- % -% -FLUID_MODEL= IDEAL_GAS -% -MOLECULAR_WEIGHT= 28.960 -% -SPECIFIC_HEAT_CP = 1009.39 -% -CONDUCTIVITY_MODEL= CONSTANT_CONDUCTIVITY -THERMAL_CONDUCTIVITY_CONSTANT= 0.0258 -% -PRANDTL_LAM= 0.72 -TURBULENT_CONDUCTIVITY_MODEL= CONSTANT_PRANDTL_TURB -PRANDTL_TURB= 0.90 -% -% --------------------------- VISCOSITY MODEL ---------------------------------% -% -VISCOSITY_MODEL= CONSTANT_VISCOSITY -% -MU_CONSTANT= 1.8551E-05 -% -% -------------------- BOUNDARY CONDITION DEFINITION --------------------------% -% -MARKER_HEATFLUX= ( wall, 0.0 ) -SPECIFIED_INLET_PROFILE= NO -INLET_FILENAME= inlet.dat -INC_INLET_TYPE= VELOCITY_INLET -MARKER_INLET= ( inlet, 302.4, 118309.784, 1.0, 0.0, 0.0 ) -MARKER_INLET_SPECIES= ( inlet, 1.0 ) -MARKER_OUTLET= ( outlet, 115056.0, farfield, 115056.0 ) -MARKER_SYM= ( symmetry ) -MARKER_PLOTTING= ( wall ) -MARKER_MONITORING= ( wall ) - -% -------------------- SCALAR TRANSPORT ---------------------------------------% -% -KIND_SCALAR_MODEL= SPECIES_TRANSPORT -DIFFUSIVITY_MODEL= CONSTANT_DIFFUSIVITY -DIFFUSIVITY_CONSTANT= 0.001 -CONV_NUM_METHOD_SPECIES= SCALAR_UPWIND -MUSCL_SPECIES= NO -SLOPE_LIMITER_SPECIES = NONE -TIME_DISCRE_SPECIES= EULER_IMPLICIT -SPECIES_INIT= 1.0 -SPECIES_CLIPPING= YES -SPECIES_CLIPPING_MIN= 0.0 -SPECIES_CLIPPING_MAX= 1.0 - -% ------------- COMMON PARAMETERS DEFINING THE NUMERICAL METHOD ---------------% -% -NUM_METHOD_GRAD= GREEN_GAUSS -CFL_NUMBER= 10.0 -CFL_ADAPT= YES -CFL_ADAPT_PARAM= ( 0.5, 2.0, 1.0, 1000.0 ) -ITER= 10000 -% ------------------------ LINEAR SOLVER DEFINITION ---------------------------% -% -LINEAR_SOLVER= FGMRES -LINEAR_SOLVER_PREC= ILU -LINEAR_SOLVER_ERROR= 1E-5 -LINEAR_SOLVER_ITER= 5 -% -% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% -% -CONV_NUM_METHOD_FLOW= ROE -MUSCL_FLOW= NO -SLOPE_LIMITER_FLOW= NONE -JST_SENSOR_COEFF= ( 0.5, 0.02 ) -TIME_DISCRE_FLOW= EULER_IMPLICIT - -% -------------------- TURBULENT NUMERICAL METHOD DEFINITION ------------------% -% -CONV_NUM_METHOD_TURB= SCALAR_UPWIND -MUSCL_TURB= NO -SLOPE_LIMITER_TURB= VENKATAKRISHNAN -TIME_DISCRE_TURB= EULER_IMPLICIT - -% --------------------------- CONVERGENCE PARAMETERS --------------------------% -CONV_RESIDUAL_MINVAL= -15 -CONV_STARTITER= 10 -CONV_CAUCHY_ELEMS= 100 -CONV_CAUCHY_EPS= 1E-6 - -% ------------------------- INPUT/OUTPUT INFORMATION --------------------------% -% -MESH_FILENAME= mesh_flatplate_turb_137x97.su2 -SCREEN_OUTPUT= INNER_ITER WALL_TIME \ - RMS_DENSITY RMS_MOMENTUM-X RMS_MOMENTUM-Y RMS_ENERGY RMS_TKE RMS_DISSIPATION RMS_SPECIES_0 \ - LINSOL_ITER LINSOL_RESIDUAL \ - LINSOL_ITER_TURB LINSOL_RESIDUAL_TURB \ - LINSOL_ITER_SPECIES LINSOL_RESIDUAL_SPECIES \ - SURFACE_SPECIES_0 -SCREEN_WRT_FREQ_INNER= 10 -HISTORY_OUTPUT= ITER RMS_RES LINSOL SPECIES_COEFF SPECIES_COEFF_SURF -CONV_FILENAME= history -MARKER_ANALYZE= outlet -MARKER_ANALYZE_AVERAGE= AREA -OUTPUT_FILES= RESTART_ASCII, PARAVIEW_MULTIBLOCK -VOLUME_OUTPUT= RESIDUAL, PRIMITIVE -OUTPUT_WRT_FREQ= 100 -READ_BINARY_RESTART= NO -RESTART_FILENAME= restart -SOLUTION_FILENAME= solution - From dbcc048c921664d2d77f1af8f5027769c04e1233 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Fri, 19 Sep 2025 09:33:42 +0200 Subject: [PATCH 29/30] updating residuals regression cases --- TestCases/hybrid_regression.py | 14 +++++++------- TestCases/hybrid_regression_AD.py | 2 +- TestCases/parallel_regression.py | 26 +++++++++++++------------- TestCases/parallel_regression_AD.py | 10 +++++----- TestCases/serial_regression.py | 20 ++++++++++---------- TestCases/serial_regression_AD.py | 4 ++-- TestCases/tutorials.py | 6 +++--- TestCases/vandv.py | 12 ++++++------ 8 files changed, 47 insertions(+), 47 deletions(-) diff --git a/TestCases/hybrid_regression.py b/TestCases/hybrid_regression.py index 295307bd86d9..66cc54ecbd45 100644 --- a/TestCases/hybrid_regression.py +++ b/TestCases/hybrid_regression.py @@ -111,7 +111,7 @@ def main(): cylinder.cfg_dir = "navierstokes/cylinder" cylinder.cfg_file = "lam_cylinder.cfg" cylinder.test_iter = 25 - cylinder.test_vals = [-8.266513, -2.783904, -0.019899, 1.615668, 0] + cylinder.test_vals = [-8.266602, -2.784028, -0.019899, 1.615655, 0.000000] test_list.append(cylinder) # Laminar cylinder (low Mach correction) @@ -197,8 +197,8 @@ def main(): turb_naca0012_sa.cfg_dir = "rans/naca0012" turb_naca0012_sa.cfg_file = "turb_NACA0012_sa.cfg" turb_naca0012_sa.test_iter = 5 - turb_naca0012_sa.test_vals = [-12.050637, -16.149098, 1.058588, 0.022984, 20.000000, -2.832819, 0.000000, -14.067279, 0] - turb_naca0012_sa.test_vals_aarch64 = [-12.050637, -16.149098, 1.058588, 0.022984, 20.000000, -2.832819, 0.000000, -14.067279, 0] + turb_naca0012_sa.test_vals = [-12.050557, -16.149098, 1.058588, 0.022984, 20.000000, -2.832714, 0.000000, -14.067279, 0.000000] + turb_naca0012_sa.test_vals_aarch64 = [-12.050557, -16.149098, 1.058588, 0.022984, 20.000000, -2.832714, 0.000000, -14.067279, 0.000000] test_list.append(turb_naca0012_sa) # NACA0012 (SST, FUN3D finest grid results: CL=1.0840, CD=0.01253) @@ -206,7 +206,7 @@ def main(): turb_naca0012_sst.cfg_dir = "rans/naca0012" turb_naca0012_sst.cfg_file = "turb_NACA0012_sst.cfg" turb_naca0012_sst.test_iter = 10 - turb_naca0012_sst.test_vals = [-12.079595, -15.284132, -5.859466, 1.048053, 0.019238, -2.814059, 0.000000] + turb_naca0012_sst.test_vals = [-12.079119, -15.284130, -5.859467, 1.048053, 0.019238, -2.814455, 0.000000] test_list.append(turb_naca0012_sst) # NACA0012 (SST_SUST, FUN3D finest grid results: CL=1.0840, CD=0.01253) @@ -250,7 +250,7 @@ def main(): axi_rans_air_nozzle_restart.cfg_dir = "axisymmetric_rans/air_nozzle" axi_rans_air_nozzle_restart.cfg_file = "air_nozzle_restart.cfg" axi_rans_air_nozzle_restart.test_iter = 10 - axi_rans_air_nozzle_restart.test_vals = [-14.137579, -9.105575, -10.894183, -5.810269, 0.000000] + axi_rans_air_nozzle_restart.test_vals = [-14.137398, -9.107808, -10.879850, -5.806591, 0.000000] test_list.append(axi_rans_air_nozzle_restart) ################################# @@ -419,7 +419,7 @@ def main(): inc_weakly_coupled.cfg_dir = "disc_adj_heat" inc_weakly_coupled.cfg_file = "primal.cfg" inc_weakly_coupled.test_iter = 10 - inc_weakly_coupled.test_vals = [-18.095922, -16.331787, -16.514014, -13.703679, -18.203865, -14.053738, 5.545900] + inc_weakly_coupled.test_vals = [-18.095922, -16.331787, -16.514014, -9.756795, -18.203865, -14.053738, 5.550800] test_list.append(inc_weakly_coupled) ###################################### @@ -452,7 +452,7 @@ def main(): square_cylinder.cfg_dir = "unsteady/square_cylinder" square_cylinder.cfg_file = "turb_square.cfg" square_cylinder.test_iter = 3 - square_cylinder.test_vals = [-2.560838, -1.175929, 0.062081, 1.399401, 2.220361, 1.399349, 2.218600, 0.000000] + square_cylinder.test_vals = [-2.560665, -1.175915, 0.062109, 1.399401, 2.220361, 1.399349, 2.218600, 0.000000] square_cylinder.test_vals_aarch64 = [-2.557902, -1.173574, 0.058050, 1.399794, 2.220402, 1.399748, 2.218604, 0] square_cylinder.unsteady = True test_list.append(square_cylinder) diff --git a/TestCases/hybrid_regression_AD.py b/TestCases/hybrid_regression_AD.py index 102c330eb980..1107f9814eb3 100644 --- a/TestCases/hybrid_regression_AD.py +++ b/TestCases/hybrid_regression_AD.py @@ -86,7 +86,7 @@ def main(): discadj_rans_naca0012_sst.cfg_dir = "disc_adj_rans/naca0012" discadj_rans_naca0012_sst.cfg_file = "turb_NACA0012_sst.cfg" discadj_rans_naca0012_sst.test_iter = 10 - discadj_rans_naca0012_sst.test_vals = [-2.236574, -0.190312, 2.762800, -0.039660] + discadj_rans_naca0012_sst.test_vals = [-2.236564, -0.190312, 2.762900, -0.039660] test_list.append(discadj_rans_naca0012_sst) ####################################### diff --git a/TestCases/parallel_regression.py b/TestCases/parallel_regression.py index 63400350a11c..c3a209befbde 100644 --- a/TestCases/parallel_regression.py +++ b/TestCases/parallel_regression.py @@ -319,7 +319,7 @@ def main(): cylinder.cfg_dir = "navierstokes/cylinder" cylinder.cfg_file = "lam_cylinder.cfg" cylinder.test_iter = 25 - cylinder.test_vals = [-8.422091, -2.930561, -0.003396, 1.608418, 0.000000] + cylinder.test_vals = [-8.422012, -2.930518, -0.003394, 1.608420, 0.000000] test_list.append(cylinder) # Laminar cylinder (low Mach correction) @@ -327,7 +327,7 @@ def main(): cylinder_lowmach.cfg_dir = "navierstokes/cylinder" cylinder_lowmach.cfg_file = "cylinder_lowmach.cfg" cylinder_lowmach.test_iter = 25 - cylinder_lowmach.test_vals = [-6.841604, -1.379532, -1.266739, 76.118218, 0.000000] + cylinder_lowmach.test_vals = [-6.841606, -1.379533, -1.266782, 76.118168, 0.000000] test_list.append(cylinder_lowmach) # 2D Poiseuille flow (body force driven with periodic inlet / outlet) @@ -389,7 +389,7 @@ def main(): turb_flatplate_species.cfg_dir = "rans/flatplate" turb_flatplate_species.cfg_file = "turb_SA_flatplate_species.cfg" turb_flatplate_species.test_iter = 20 - turb_flatplate_species.test_vals = [-4.249474, -0.634908, -1.716288, 1.223201, -3.307930, 9.000000, -6.634095, 5.000000, -6.986784, 10.000000, -6.255641, 0.999903, 0.999903] + turb_flatplate_species.test_vals = [-4.249462, -0.634904, -1.716285, 1.223210, -3.307930, 9.000000, -6.633666, 5.000000, -6.986787, 10.000000, -6.255670, 0.999903, 0.9999033] test_list.append(turb_flatplate_species) # Flat plate SST compressibility correction Wilcox @@ -441,7 +441,7 @@ def main(): turb_naca0012_sa.cfg_dir = "rans/naca0012" turb_naca0012_sa.cfg_file = "turb_NACA0012_sa.cfg" turb_naca0012_sa.test_iter = 5 - turb_naca0012_sa.test_vals = [-12.050143, -16.185204, 1.058588, 0.022984, 20.000000, -1.562786, 20.000000, -3.900124, 0.000000] + turb_naca0012_sa.test_vals = [12.050132, -16.185205, 1.058588, 0.022984, 20.000000, -1.562866, 20.000000, -3.900107, 0.000000] turb_naca0012_sa.timeout = 3200 test_list.append(turb_naca0012_sa) @@ -450,7 +450,7 @@ def main(): turb_naca0012_sst.cfg_dir = "rans/naca0012" turb_naca0012_sst.cfg_file = "turb_NACA0012_sst.cfg" turb_naca0012_sst.test_iter = 10 - turb_naca0012_sst.test_vals = [-12.078661, -15.284104, -5.859484, 1.048053, 0.019238, -2.015232, 0.000000] + turb_naca0012_sst.test_vals = [-12.078069, -15.284102, -5.859484, 1.048053, 0.019238, -2.015780, 0.000000] turb_naca0012_sst.test_vals_aarch64 = [-12.232530, -14.435294, -6.037147, 1.047444, 0.019214, -1.704457, 0.000000] turb_naca0012_sst.timeout = 3200 test_list.append(turb_naca0012_sst) @@ -460,7 +460,7 @@ def main(): turb_naca0012_sst_sust.cfg_dir = "rans/naca0012" turb_naca0012_sst_sust.cfg_file = "turb_NACA0012_sst_sust.cfg" turb_naca0012_sst_sust.test_iter = 10 - turb_naca0012_sst_sust.test_vals = [-12.075115, -14.836721, -5.743103, 1.000050, 0.019144, -2.229293] + turb_naca0012_sst_sust.test_vals = [-12.075017, -14.836721, -5.743103, 1.000050, 0.019144, -2.229488] turb_naca0012_sst_sust.test_vals_aarch64 = [-12.146171, -14.781592, -6.358755, 1.000270, 0.019123, -1.593320] turb_naca0012_sst_sust.timeout = 3200 test_list.append(turb_naca0012_sst_sust) @@ -530,7 +530,7 @@ def main(): axi_rans_air_nozzle_restart.cfg_dir = "axisymmetric_rans/air_nozzle" axi_rans_air_nozzle_restart.cfg_file = "air_nozzle_restart.cfg" axi_rans_air_nozzle_restart.test_iter = 10 - axi_rans_air_nozzle_restart.test_vals = [-14.140338, -9.122501, -10.859866, -5.788769, 0.000000] + axi_rans_air_nozzle_restart.test_vals = [-14.140949, -9.128061, -10.858923, -5.788079, 0.000000] axi_rans_air_nozzle_restart.tol = 0.0001 test_list.append(axi_rans_air_nozzle_restart) @@ -740,7 +740,7 @@ def main(): turbmod_sa_neg_rae2822.cfg_dir = "turbulence_models/sa/rae2822" turbmod_sa_neg_rae2822.cfg_file = "turb_SA_NEG_RAE2822.cfg" turbmod_sa_neg_rae2822.test_iter = 10 - turbmod_sa_neg_rae2822.test_vals = [-1.345491, 1.448526, 1.208572, -0.846542, 1.263765, 0.494751, 0.000000] + turbmod_sa_neg_rae2822.test_vals = [-1.345531, 1.448387, 1.208638, -0.846585, 1.271362, 0.497475, 0.000000] turbmod_sa_neg_rae2822.test_vals_aarch64 = [-1.359612, 1.493629, 1.218367, -1.441703, 1.248499, 0.457987, 0] test_list.append(turbmod_sa_neg_rae2822) @@ -913,7 +913,7 @@ def main(): turb_naca0012_p1c1.cfg_dir = "rans_uq/naca0012" turb_naca0012_p1c1.cfg_file = "turb_NACA0012_uq_p1c1.cfg" turb_naca0012_p1c1.test_iter = 10 - turb_naca0012_p1c1.test_vals = [-5.122030, 1.284489, 0.608721, -0.008603] + turb_naca0012_p1c1.test_vals = [-5.122041, 1.284479, 0.608705, -0.008610] test_list.append(turb_naca0012_p1c1) # NACA0012 p1c2 @@ -970,7 +970,7 @@ def main(): spinning_cylinder.cfg_dir = "moving_wall/spinning_cylinder" spinning_cylinder.cfg_file = "spinning_cylinder.cfg" spinning_cylinder.test_iter = 25 - spinning_cylinder.test_vals = [-7.806056, -2.364884, 1.685228, 1.518276] + spinning_cylinder.test_vals = [-7.806025, -2.364860, 1.685247, 1.518292] test_list.append(spinning_cylinder) ###################################### @@ -982,7 +982,7 @@ def main(): square_cylinder.cfg_dir = "unsteady/square_cylinder" square_cylinder.cfg_file = "turb_square.cfg" square_cylinder.test_iter = 3 - square_cylinder.test_vals = [-1.175927, 0.062096, 1.399402, 2.220364, 1.399350, 2.218602, 0.000000] + square_cylinder.test_vals = [-1.175913, 0.062109, 1.399402, 2.220364, 1.399350, 2.218602, 0.000000] square_cylinder.unsteady = True test_list.append(square_cylinder) @@ -1387,7 +1387,7 @@ def main(): pywrapper_turb_naca0012_sst.cfg_dir = "rans/naca0012" pywrapper_turb_naca0012_sst.cfg_file = "turb_NACA0012_sst.cfg" pywrapper_turb_naca0012_sst.test_iter = 10 - pywrapper_turb_naca0012_sst.test_vals = [-12.078661, -15.284104, -5.859484, 1.048053, 0.019238, -2.015232, 0.000000] + pywrapper_turb_naca0012_sst.test_vals = [-12.078069, -15.284102, -5.859484, 1.048053, 0.019238, -2.015780, 0.000000] pywrapper_turb_naca0012_sst.test_vals_aarch64 = [-12.232530, -14.435294, -6.037147, 1.047444, 0.019214, -1.704457, 0.000000] pywrapper_turb_naca0012_sst.command = TestCase.Command("mpirun -np 2", "SU2_CFD.py", "--parallel -f") pywrapper_turb_naca0012_sst.timeout = 3200 @@ -1398,7 +1398,7 @@ def main(): pywrapper_square_cylinder.cfg_dir = "unsteady/square_cylinder" pywrapper_square_cylinder.cfg_file = "turb_square.cfg" pywrapper_square_cylinder.test_iter = 10 - pywrapper_square_cylinder.test_vals = [-1.178785, -0.349895, 1.401059, 2.358075, 1.401421, 2.301174, 0.000000] + pywrapper_square_cylinder.test_vals = [-1.178684, -0.349677, 1.401059, 2.358075, 1.401421, 2.301174, 0.000000] pywrapper_square_cylinder.command = TestCase.Command("mpirun -np 2", "SU2_CFD.py", "--parallel -f") pywrapper_square_cylinder.unsteady = True test_list.append(pywrapper_square_cylinder) diff --git a/TestCases/parallel_regression_AD.py b/TestCases/parallel_regression_AD.py index fa4e56e76153..b3cfea640a1c 100644 --- a/TestCases/parallel_regression_AD.py +++ b/TestCases/parallel_regression_AD.py @@ -230,8 +230,8 @@ def main(): discadj_trans_stator.cfg_dir = "disc_adj_turbomachinery/transonic_stator_2D" discadj_trans_stator.cfg_file = "transonic_stator.cfg" discadj_trans_stator.test_iter = 79 - discadj_trans_stator.test_vals = [79, 0.668058, 0.483608, 0.518789, -1.013227] - discadj_trans_stator.test_vals_aarch64 = [79, 0.668058, 0.483608, 0.518789, -1.013227] + discadj_trans_stator.test_vals = [79.000000, 0.667030, 0.483921, 0.518403, -1.013538] + discadj_trans_stator.test_vals_aarch64 = [79.000000, 0.667030, 0.483921, 0.518403, -1.013538] test_list.append(discadj_trans_stator) ################################### @@ -256,7 +256,7 @@ def main(): discadj_heat.cfg_dir = "disc_adj_heat" discadj_heat.cfg_file = "disc_adj_heat.cfg" discadj_heat.test_iter = 10 - discadj_heat.test_vals = [-1.999669, 0.657451, 0.000000, 0.006210] + discadj_heat.test_vals = [-2.001337, 0.655543, 0.000000, 0.006170] discadj_heat.test_vals_aarch64 = [-2.226539, 0.605868, 0.000000, -6.256400] test_list.append(discadj_heat) @@ -269,7 +269,7 @@ def main(): discadj_fsi.cfg_dir = "disc_adj_fsi" discadj_fsi.cfg_file = "config.cfg" discadj_fsi.test_iter = 6 - discadj_fsi.test_vals = [6.000000, -7.017319, -7.872545, 3.9968e-09, -2.4097e-05] + discadj_fsi.test_vals = [6.000000, -7.017369, -7.872619, 0.000000, -0.000024] test_list.append(discadj_fsi) # Multi physics framework @@ -512,7 +512,7 @@ def main(): pywrapper_wavy_wall_steady.cfg_dir = "py_wrapper/wavy_wall" pywrapper_wavy_wall_steady.cfg_file = "run_steady.py" pywrapper_wavy_wall_steady.test_iter = 100 - pywrapper_wavy_wall_steady.test_vals = [-1.352680, 2.579322, -2.898321] + pywrapper_wavy_wall_steady.test_vals = [-1.353007, 2.581051, -2.900574] pywrapper_wavy_wall_steady.command = TestCase.Command("mpirun -n 2", "python", "run_steady.py") pywrapper_wavy_wall_steady.timeout = 1600 pywrapper_wavy_wall_steady.tol = 0.00001 diff --git a/TestCases/serial_regression.py b/TestCases/serial_regression.py index 1d72f9045d1f..d25981898cb6 100644 --- a/TestCases/serial_regression.py +++ b/TestCases/serial_regression.py @@ -174,7 +174,7 @@ def main(): cylinder.cfg_dir = "navierstokes/cylinder" cylinder.cfg_file = "lam_cylinder.cfg" cylinder.test_iter = 25 - cylinder.test_vals = [-8.363995, -2.882536, -0.017780, 1.607979, 0] + cylinder.test_vals = [-8.363897, -2.882485, -0.017777, 1.607978, 0.000000] test_list.append(cylinder) # Laminar cylinder (low Mach correction) @@ -182,7 +182,7 @@ def main(): cylinder_lowmach.cfg_dir = "navierstokes/cylinder" cylinder_lowmach.cfg_file = "cylinder_lowmach.cfg" cylinder_lowmach.test_iter = 25 - cylinder_lowmach.test_vals = [-6.830989, -1.368842, -0.143838, 73.962440, 0] + cylinder_lowmach.test_vals = [-6.830989, -1.368842, -0.143868, 73.962350, 0.000000] test_list.append(cylinder_lowmach) # 2D Poiseuille flow (body force driven with periodic inlet / outlet) @@ -275,7 +275,7 @@ def main(): turb_naca0012_sa.cfg_dir = "rans/naca0012" turb_naca0012_sa.cfg_file = "turb_NACA0012_sa.cfg" turb_naca0012_sa.test_iter = 5 - turb_naca0012_sa.test_vals = [-12.049550, -16.193702, 1.058588, 0.022984, 20.000000, -3.437275, 20.000000, -4.705227, 0.000000] + turb_naca0012_sa.test_vals = [-12.049543, -16.193702, 1.058588, 0.022984, 20.000000, -3.435258, 20.000000, -4.705244, 0.000000] turb_naca0012_sa.timeout = 3200 test_list.append(turb_naca0012_sa) @@ -284,7 +284,7 @@ def main(): turb_naca0012_sst.cfg_dir = "rans/naca0012" turb_naca0012_sst.cfg_file = "turb_NACA0012_sst.cfg" turb_naca0012_sst.test_iter = 10 - turb_naca0012_sst.test_vals = [ -12.079361, -15.284135, -5.859500, 1.048053, 0.019238, -3.272617, 0.000000] + turb_naca0012_sst.test_vals = [ -12.078427, -15.284133, -5.859499, 1.048053, 0.019238, -3.274052, 0.000000] turb_naca0012_sst.test_vals_aarch64 = [-12.229890, -14.434837, -6.410709, 1.047444, 0.019214, -2.107944, 0.000000] turb_naca0012_sst.timeout = 3200 test_list.append(turb_naca0012_sst) @@ -303,7 +303,7 @@ def main(): turb_naca0012_sst_sust_restart.cfg_dir = "rans/naca0012" turb_naca0012_sst_sust_restart.cfg_file = "turb_NACA0012_sst_sust.cfg" turb_naca0012_sst_sust_restart.test_iter = 10 - turb_naca0012_sst_sust_restart.test_vals = [-12.075450, -14.836721, -5.743110, 1.000050, 0.019144, -3.329048] + turb_naca0012_sst_sust_restart.test_vals = [12.075358, -14.836721, -5.743110, 1.000050, 0.019144, -3.328948] turb_naca0012_sst_sust_restart.test_vals_aarch64 = [-12.157374, -14.782027, -6.726462, 1.000270, 0.019123, -1.780624] turb_naca0012_sst_sust_restart.timeout = 3200 test_list.append(turb_naca0012_sst_sust_restart) @@ -335,7 +335,7 @@ def main(): axi_rans_air_nozzle_restart.cfg_dir = "axisymmetric_rans/air_nozzle" axi_rans_air_nozzle_restart.cfg_file = "air_nozzle_restart.cfg" axi_rans_air_nozzle_restart.test_iter = 10 - axi_rans_air_nozzle_restart.test_vals = [-14.141446, -9.134033, -10.848810, -5.776634, 0.000000] + axi_rans_air_nozzle_restart.test_vals = [-14.141146, -9.130663, -10.848556, -5.776412, 0.000000] axi_rans_air_nozzle_restart.test_vals_aarch64 = [-12.067037, -6.840810, -8.843191, -3.783401, 0.000000] axi_rans_air_nozzle_restart.tol = 0.0001 test_list.append(axi_rans_air_nozzle_restart) @@ -701,7 +701,7 @@ def main(): turb_naca0012_p1c1.cfg_dir = "rans_uq/naca0012" turb_naca0012_p1c1.cfg_file = "turb_NACA0012_uq_p1c1.cfg" turb_naca0012_p1c1.test_iter = 10 - turb_naca0012_p1c1.test_vals = [-5.119755, 1.283950, 0.486285, -0.021511] + turb_naca0012_p1c1.test_vals = [-5.119769, 1.283940, 0.486285, -0.021511] test_list.append(turb_naca0012_p1c1) # NACA0012 p1c2 @@ -769,7 +769,7 @@ def main(): square_cylinder.cfg_dir = "unsteady/square_cylinder" square_cylinder.cfg_file = "turb_square.cfg" square_cylinder.test_iter = 3 - square_cylinder.test_vals = [-2.560839, -1.175927, 0.062095, 1.399401, 2.220371, 1.399349, 2.218609, 0.000000] + square_cylinder.test_vals = [-2.560665, -1.175914, 0.062108, 1.399401, 2.220371, 1.399349, 2.218609, 0.000000] square_cylinder.unsteady = True test_list.append(square_cylinder) @@ -1529,7 +1529,7 @@ def main(): pywrapper_turb_naca0012_sst.cfg_dir = "rans/naca0012" pywrapper_turb_naca0012_sst.cfg_file = "turb_NACA0012_sst.cfg" pywrapper_turb_naca0012_sst.test_iter = 10 - pywrapper_turb_naca0012_sst.test_vals = [-12.079361, -15.284135, -5.859500, 1.048053, 0.019238, -3.272617, 0.000000] + pywrapper_turb_naca0012_sst.test_vals = [-12.078427, -15.284133, -5.859499, 1.048053, 0.019238, -3.274052, 0.000000] pywrapper_turb_naca0012_sst.test_vals_aarch64 = [-12.229889, -14.434883, -6.037177, 1.047444, 0.019214, -2.108366, 0.000000] pywrapper_turb_naca0012_sst.command = TestCase.Command(exec = "SU2_CFD.py", param = "-f") pywrapper_turb_naca0012_sst.timeout = 3200 @@ -1543,7 +1543,7 @@ def main(): pywrapper_square_cylinder.cfg_dir = "unsteady/square_cylinder" pywrapper_square_cylinder.cfg_file = "turb_square.cfg" pywrapper_square_cylinder.test_iter = 3 - pywrapper_square_cylinder.test_vals = [-2.560839, -1.175927, 0.062095, 1.399401, 2.220371, 1.399349, 2.218609, 0.000000] + pywrapper_square_cylinder.test_vals = [2.560665, -1.175914, 0.062108, 1.399401, 2.220371, 1.399349, 2.218609, 0.000000] pywrapper_square_cylinder.command = TestCase.Command(exec = "SU2_CFD.py", param = "-f") pywrapper_square_cylinder.timeout = 1600 pywrapper_square_cylinder.tol = 0.00001 diff --git a/TestCases/serial_regression_AD.py b/TestCases/serial_regression_AD.py index 3f84782f2324..268a1cd78c4a 100644 --- a/TestCases/serial_regression_AD.py +++ b/TestCases/serial_regression_AD.py @@ -193,7 +193,7 @@ def main(): discadj_heat.cfg_dir = "disc_adj_heat" discadj_heat.cfg_file = "disc_adj_heat.cfg" discadj_heat.test_iter = 10 - discadj_heat.test_vals = [-2.174674, 0.581857, 0.000000, 0.008748] + discadj_heat.test_vals = [-2.178141, 0.578576, 0.000000, 0.008712] test_list.append(discadj_heat) ################################### @@ -205,7 +205,7 @@ def main(): discadj_fsi.cfg_dir = "disc_adj_fsi" discadj_fsi.cfg_file = "config.cfg" discadj_fsi.test_iter = 6 - discadj_fsi.test_vals = [6.000000, -8.928327, -10.009868, 3.1056e-11, -1.7613e-06] + discadj_fsi.test_vals = [6.000000, -8.929426, -10.024862, 0.000000, -0.000002] test_list.append(discadj_fsi) ################################### diff --git a/TestCases/tutorials.py b/TestCases/tutorials.py index 7912dd8e5e66..0d9dc7e4cbf0 100644 --- a/TestCases/tutorials.py +++ b/TestCases/tutorials.py @@ -236,7 +236,7 @@ def main(): tutorial_trans_flatplate_T3A.cfg_dir = "../Tutorials/compressible_flow/Transitional_Flat_Plate/Langtry_and_Menter/T3A" tutorial_trans_flatplate_T3A.cfg_file = "transitional_LM_model_ConfigFile.cfg" tutorial_trans_flatplate_T3A.test_iter = 20 - tutorial_trans_flatplate_T3A.test_vals = [-5.809004, -2.070606, -3.968979, -0.278178, -1.953095, 1.708529, -3.514939, 0.357469] + tutorial_trans_flatplate_T3A.test_vals = [-5.808996, -2.070606, -3.969766, -0.277943, -1.953109, 1.708472, -3.514943, 0.357411] tutorial_trans_flatplate_T3A.test_vals_aarch64 = [-5.837368, -2.092246, -3.984172, -0.302357, -1.928108, 1.667157, -3.496279, 0.391610] tutorial_trans_flatplate_T3A.no_restart = True test_list.append(tutorial_trans_flatplate_T3A) @@ -246,7 +246,7 @@ def main(): tutorial_trans_flatplate_T3Am.cfg_dir = "../Tutorials/compressible_flow/Transitional_Flat_Plate/Langtry_and_Menter/T3A-" tutorial_trans_flatplate_T3Am.cfg_file = "transitional_LM_model_ConfigFile.cfg" tutorial_trans_flatplate_T3Am.test_iter = 20 - tutorial_trans_flatplate_T3Am.test_vals = [-5.533828, -1.681628, -2.868711, -0.051877, -3.695533, 3.413630, -2.385344, 1.103633] + tutorial_trans_flatplate_T3Am.test_vals = [-5.538150, -1.681627, -2.877064, -0.055736, -3.695534, 3.413620, -2.385344, 1.103633] tutorial_trans_flatplate_T3Am.test_vals_aarch64 = [-6.063726, -1.945088, -3.946923, -0.549166, -3.863794, 2.664439, -2.517601, 1.112978] tutorial_trans_flatplate_T3Am.no_restart = True test_list.append(tutorial_trans_flatplate_T3Am) @@ -301,7 +301,7 @@ def main(): tutorial_unst_naca0012.cfg_dir = "../Tutorials/compressible_flow/Unsteady_NACA0012" tutorial_unst_naca0012.cfg_file = "unsteady_naca0012.cfg" tutorial_unst_naca0012.test_iter = 520 - tutorial_unst_naca0012.test_vals = [520.000000, 0.000000, -5.292632, 0.000000, 0.300303, 0.770888, 0.002399, 0.014070] + tutorial_unst_naca0012.test_vals = [520.000000, 0.000000, -5.295170, 0.000000, 0.318434, 0.813975, 0.002902, 0.015444] tutorial_unst_naca0012.test_vals_aarch64 = [520.000000, 0.000000, -5.298777, 0.000000, 0.288956, 0.736706, 0.002419, 0.007134] tutorial_unst_naca0012.unsteady = True test_list.append(tutorial_unst_naca0012) diff --git a/TestCases/vandv.py b/TestCases/vandv.py index c3f81b5ecac6..20aab18891c6 100644 --- a/TestCases/vandv.py +++ b/TestCases/vandv.py @@ -45,8 +45,8 @@ def main(): p30n30.cfg_dir = "vandv/rans/30p30n" p30n30.cfg_file = "config.cfg" p30n30.test_iter = 5 - p30n30.test_vals = [-11.502310, -11.511459, -11.981995, -11.704990, -14.235571, 0.052235, 2.830394, 1.318894, -0.291726] - p30n30.test_vals_aarch64 = [-11.502310, -11.511459, -11.981995, -11.704990, -14.235571, 0.052235, 2.830394, 1.318894, -0.291726] + p30n30.test_vals = [-11.498923, -11.508761, -11.978899, -11.700024, -14.235389, 0.052235, 2.830394, 1.318894, -0.289257] + p30n30.test_vals_aarch64 = [-11.498923, -11.508761, -11.978899, -11.700024, -14.235389, 0.052235, 2.830394, 1.318894, -0.289257] test_list.append(p30n30) # flat plate - sst-v1994m @@ -54,7 +54,7 @@ def main(): flatplate_sst1994m.cfg_dir = "vandv/rans/flatplate" flatplate_sst1994m.cfg_file = "turb_flatplate_sst.cfg" flatplate_sst1994m.test_iter = 5 - flatplate_sst1994m.test_vals = [-13.026564, -10.051540, -11.143266, -7.973816, -10.256359, -4.776048, 0.002796] + flatplate_sst1994m.test_vals = [-12.541748, -9.912501, -10.889821, -7.100437, -10.256867, -4.777032, 0.002796] flatplate_sst1994m.test_vals_aarch64 = [-13.024930, -9.634457, -10.707600, -7.558080, -9.926634, -4.910704, 0.002786] test_list.append(flatplate_sst1994m) @@ -63,7 +63,7 @@ def main(): bump_sst1994m.cfg_dir = "vandv/rans/bump_in_channel" bump_sst1994m.cfg_file = "turb_bump_sst.cfg" bump_sst1994m.test_iter = 5 - bump_sst1994m.test_vals = [-13.029401, -10.800439, -10.607178, -7.630108, -10.816234, -5.308533, 0.004911] + bump_sst1994m.test_vals = [-13.032111, -10.802810, -10.617420, -7.634902, -10.816229, -5.308348, 0.004911] bump_sst1994m.test_vals_aarch64 = [-13.025265, -10.669816, -10.615338, -7.577125, -10.709448, -5.453868, 0.004903] test_list.append(bump_sst1994m) @@ -90,7 +90,7 @@ def main(): dsma661_sa.cfg_dir = "vandv/rans/dsma661" dsma661_sa.cfg_file = "dsma661_sa_config.cfg" dsma661_sa.test_iter = 5 - dsma661_sa.test_vals = [-11.270155, -8.240208, -9.000574, -5.954878, -10.737828, 0.155687, 0.024232] + dsma661_sa.test_vals = [-11.260884, -8.242051, -8.967465, -5.944271, -10.737675, 0.155687, 0.024232] test_list.append(dsma661_sa) # DSMA661 - SST-V2003m @@ -98,7 +98,7 @@ def main(): dsma661_sst.cfg_dir = "vandv/rans/dsma661" dsma661_sst.cfg_file = "dsma661_sst_config.cfg" dsma661_sst.test_iter = 5 - dsma661_sst.test_vals = [-11.013080, -8.429715, -9.140952, -5.983576, -10.551096, -7.960479, 0.155875, 0.023353] + dsma661_sst.test_vals = [-10.974691, -8.400072, -8.768317, -5.796986, -10.519552, -7.346213, 0.155875, 0.023353] test_list.append(dsma661_sst) ########################## From f9ccedeb57b44ed96ce03d0c4077173c4f7451c2 Mon Sep 17 00:00:00 2001 From: Cristopher-Morales Date: Fri, 19 Sep 2025 10:15:29 +0200 Subject: [PATCH 30/30] fixing residuals --- Common/src/geometry/CPhysicalGeometryFEM.cpp | 2 +- TestCases/parallel_regression.py | 2 +- TestCases/serial_regression.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Common/src/geometry/CPhysicalGeometryFEM.cpp b/Common/src/geometry/CPhysicalGeometryFEM.cpp index 11cfae64de3c..a0360950240f 100644 --- a/Common/src/geometry/CPhysicalGeometryFEM.cpp +++ b/Common/src/geometry/CPhysicalGeometryFEM.cpp @@ -2254,7 +2254,7 @@ void CPhysicalGeometry::DetermineTimeLevelElements(CConfig* config, const vector const su2double charVel = sqrt(charVel2); /* Also the viscous contribution to the time step is constant. Compute it. */ - const su2double factHeatFlux = (Thermal_Conductivity * Gamma) / (Cp * Viscosity); + const su2double factHeatFlux = (Thermal_Conductivity * Gamma) / (Cp * Viscosity); const su2double lambdaOverMu = -TWO3; const su2double radVisc = max(max(1.0, 2.0 + lambdaOverMu), factHeatFlux) * Viscosity / Density; diff --git a/TestCases/parallel_regression.py b/TestCases/parallel_regression.py index c3a209befbde..71953365f3eb 100644 --- a/TestCases/parallel_regression.py +++ b/TestCases/parallel_regression.py @@ -441,7 +441,7 @@ def main(): turb_naca0012_sa.cfg_dir = "rans/naca0012" turb_naca0012_sa.cfg_file = "turb_NACA0012_sa.cfg" turb_naca0012_sa.test_iter = 5 - turb_naca0012_sa.test_vals = [12.050132, -16.185205, 1.058588, 0.022984, 20.000000, -1.562866, 20.000000, -3.900107, 0.000000] + turb_naca0012_sa.test_vals = [-12.050132, -16.185205, 1.058588, 0.022984, 20.000000, -1.562866, 20.000000, -3.900107, 0.000000] turb_naca0012_sa.timeout = 3200 test_list.append(turb_naca0012_sa) diff --git a/TestCases/serial_regression.py b/TestCases/serial_regression.py index d25981898cb6..38398445c53b 100644 --- a/TestCases/serial_regression.py +++ b/TestCases/serial_regression.py @@ -303,7 +303,7 @@ def main(): turb_naca0012_sst_sust_restart.cfg_dir = "rans/naca0012" turb_naca0012_sst_sust_restart.cfg_file = "turb_NACA0012_sst_sust.cfg" turb_naca0012_sst_sust_restart.test_iter = 10 - turb_naca0012_sst_sust_restart.test_vals = [12.075358, -14.836721, -5.743110, 1.000050, 0.019144, -3.328948] + turb_naca0012_sst_sust_restart.test_vals = [-12.075358, -14.836721, -5.743110, 1.000050, 0.019144, -3.328948] turb_naca0012_sst_sust_restart.test_vals_aarch64 = [-12.157374, -14.782027, -6.726462, 1.000270, 0.019123, -1.780624] turb_naca0012_sst_sust_restart.timeout = 3200 test_list.append(turb_naca0012_sst_sust_restart) @@ -1543,7 +1543,7 @@ def main(): pywrapper_square_cylinder.cfg_dir = "unsteady/square_cylinder" pywrapper_square_cylinder.cfg_file = "turb_square.cfg" pywrapper_square_cylinder.test_iter = 3 - pywrapper_square_cylinder.test_vals = [2.560665, -1.175914, 0.062108, 1.399401, 2.220371, 1.399349, 2.218609, 0.000000] + pywrapper_square_cylinder.test_vals = [-2.560665, -1.175914, 0.062108, 1.399401, 2.220371, 1.399349, 2.218609, 0.000000] pywrapper_square_cylinder.command = TestCase.Command(exec = "SU2_CFD.py", param = "-f") pywrapper_square_cylinder.timeout = 1600 pywrapper_square_cylinder.tol = 0.00001