diff --git a/Common/doc/docmain.hpp b/Common/doc/docmain.hpp index c7a937d8180..1e0382e6215 100644 --- a/Common/doc/docmain.hpp +++ b/Common/doc/docmain.hpp @@ -28,7 +28,7 @@ /*! * \mainpage SU2 version 7.4.0 "Blackbird" * SU2 suite is an open-source collection of C++ based software tools - * to perform PDE analysis and PDE constrained optimization problems. The toolset is designed with + * to perform PDE analysis and PDE constrained optimization. The toolset is designed with * computational fluid dynamics and aerodynamic shape optimization in mind, but is extensible to * include other families of governing equations such as potential flow, electrodynamics, chemically reacting * flows, and many others. SU2 is released under an @@ -38,12 +38,12 @@ */ /*! - * \defgroup Config Descriptions of Configuration Options. + * \defgroup Config Description of the Configuration Options * \brief Group of variables that can be set using the configuration file. */ /*! - * \defgroup ConvDiscr Discretization of the convective terms. + * \defgroup ConvDiscr Discretization of the convective terms * \brief Group of classes which define the numerical methods for * discretizing the convective terms of a Partial Differential Equation. * There are methods for solving the direct, adjoint and linearized @@ -51,7 +51,7 @@ */ /*! - * \defgroup ViscDiscr Discretization of the viscous terms. + * \defgroup ViscDiscr Discretization of the viscous terms * \brief Group of classes which define the numerical methods for * discretizing the viscous terms of a Partial Differential Equation. * There are methods for solving the direct, adjoint and linearized @@ -59,7 +59,7 @@ */ /*! - * \defgroup SourceDiscr Discretization of the source terms. + * \defgroup SourceDiscr Discretization of the source terms * \brief Group of classes which define the numerical methods for * discretizing the source terms of a Partial Differential Equation. * There are methods for solving the direct, adjoint and linearized @@ -67,25 +67,24 @@ */ /*! - * \defgroup Potential_Flow_Equation Solving the potential flow equation. - * \brief Group of classes which define the system of Potential flow equation in - * three formulations: direct, adjoint, and linearized. - */ - -/*! - * \defgroup Euler_Equations Solving the Euler's equations. + * \defgroup Euler_Equations Solving the Euler equations * \brief Group of classes which define the system of Euler equations in * three formulations: direct, adjoint, and linearized. */ /*! - * \defgroup Navier_Stokes_Equations Solving the Navier-Stokes' equations. + * \defgroup Navier_Stokes_Equations Solving the Navier-Stokes equations * \brief Group of classes which define the system of Navier-Stokes equations in * three formulations: direct, adjoint, and linearized. */ /*! - * \defgroup Turbulence_Model Solving the turbulence models. + * \defgroup Turbulence_Model Solving the turbulence model equations * \brief Group of classes which define the turbulence model in * three formulations: direct, adjoint, and linearized. */ + +/*! + * \defgroup Elasticity_Equations Solving the elasticity equations + * \brief Group of classes to solve solid deformation problems. + */ diff --git a/Common/include/basic_types/datatype_structure.hpp b/Common/include/basic_types/datatype_structure.hpp index df3f872b28b..8b708830820 100644 --- a/Common/include/basic_types/datatype_structure.hpp +++ b/Common/include/basic_types/datatype_structure.hpp @@ -114,6 +114,21 @@ namespace SU2_TYPE { FORCEINLINE void SetDerivative(su2double &, const passivedouble &) {} #endif + /*! + * \brief Get the passive value of any variable. For most types return directly, + * specialize for su2double to call GetValue. + * \note This is a struct instead of a function because the return type of the + * su2double specialization changes. + */ + template + struct Passive { + FORCEINLINE static T Value(const T& val) {return val;} + }; + template <> + struct Passive { + FORCEINLINE static passivedouble Value(const su2double& val) {return GetValue(val);} + }; + /*! * \brief Casts the primitive value to int (uses GetValue, already implemented for each type). * \param[in] data - The non-primitive datatype. diff --git a/Common/include/linear_algebra/vector_expressions.hpp b/Common/include/linear_algebra/vector_expressions.hpp index 46ff1d947d8..995330d59f3 100644 --- a/Common/include/linear_algebra/vector_expressions.hpp +++ b/Common/include/linear_algebra/vector_expressions.hpp @@ -33,6 +33,7 @@ #include #include #include +#include namespace VecExpr { @@ -157,21 +158,28 @@ FORCEINLINE auto FUN(decay_t u, const CVecExpr& v) \ RETURNS( EXPR,V,S>(Bcast(u), v.derived()) \ ) \ -/*--- std::max/min have issues (maybe because they return by reference). - * For AD codi::max/min need to be used to avoid issues in debug builds. ---*/ - -#if defined(CODI_REVERSE_TYPE) || defined(CODI_FORWARD_TYPE) -#define max_impl math::max -#define min_impl math::min -#else -#define max_impl(a,b) a=b) -#define eq_impl(a,b) Scalar(a==b) -#define ne_impl(a,b) Scalar(a!=b) -#define lt_impl(a,b) Scalar(ab) +/*--- Relational operators need to be cast to the scalar type to allow vectorization. + * TO_PASSIVE is used to convert active scalars to passive, which CoDi will then capture + * by value in its expressions, and thus dangling references are avoided. No AD info + * is lost since these operators are non-differentiable. ---*/ + +#define TO_PASSIVE(IMPL) SU2_TYPE::Passive::Value(IMPL) +#define le_impl(a,b) TO_PASSIVE(a<=b) +#define ge_impl(a,b) TO_PASSIVE(a>=b) +#define eq_impl(a,b) TO_PASSIVE(a==b) +#define ne_impl(a,b) TO_PASSIVE(a!=b) +#define lt_impl(a,b) TO_PASSIVE(ab) MAKE_BINARY_FUN(operator<=, le_, le_impl) MAKE_BINARY_FUN(operator>=, ge_, ge_impl) MAKE_BINARY_FUN(operator==, eq_, eq_impl) MAKE_BINARY_FUN(operator!=, ne_, ne_impl) MAKE_BINARY_FUN(operator<, lt_, lt_impl) MAKE_BINARY_FUN(operator>, gt_, gt_impl) +#undef TO_PASSIVE #undef le_impl #undef ge_impl #undef eq_impl diff --git a/Common/include/parallelization/special_vectorization.hpp b/Common/include/parallelization/special_vectorization.hpp index 1697ec1fc32..a1e5e62ee66 100644 --- a/Common/include/parallelization/special_vectorization.hpp +++ b/Common/include/parallelization/special_vectorization.hpp @@ -126,8 +126,8 @@ MAKE_BINARY_FUN(operator==, eq_p) MAKE_BINARY_FUN(operator!=, ne_p) MAKE_BINARY_FUN(operator<=, le_p) MAKE_BINARY_FUN(operator>=, ge_p) -MAKE_BINARY_FUN(max, max_p) -MAKE_BINARY_FUN(min, min_p) +MAKE_BINARY_FUN(fmax, max_p) +MAKE_BINARY_FUN(fmin, min_p) #undef MAKE_BINARY_FUN diff --git a/Common/include/parallelization/vectorization.hpp b/Common/include/parallelization/vectorization.hpp index 364ba790b36..7c097b5473b 100644 --- a/Common/include/parallelization/vectorization.hpp +++ b/Common/include/parallelization/vectorization.hpp @@ -58,7 +58,17 @@ template constexpr size_t preferredLen() { return PREFERRED_SIZE / sizeof(T); } template<> -constexpr size_t preferredLen() { return PREFERRED_SIZE / sizeof(passivedouble); } +constexpr size_t preferredLen() { +#ifdef CODI_REVERSE_TYPE + /*--- Use a SIMD size of 1 for reverse AD, larger sizes increase + * the pre-accumulation time with no performance benefit. ---*/ + return 1; +#else + /*--- For forward AD there is a performance benefit. This covers + * forward AD and primal mode (su2double == passivedouble). ---*/ + return PREFERRED_SIZE / sizeof(passivedouble); +#endif +} /*! * \class Array diff --git a/SU2_CFD/include/numerics/elasticity/CFEAElasticity.hpp b/SU2_CFD/include/numerics/elasticity/CFEAElasticity.hpp index 4c30c529340..45156ccf858 100644 --- a/SU2_CFD/include/numerics/elasticity/CFEAElasticity.hpp +++ b/SU2_CFD/include/numerics/elasticity/CFEAElasticity.hpp @@ -32,11 +32,11 @@ /*! * \class CFEAElasticity + * \ingroup Elasticity_Equations * \brief Abstract class for computing the tangent matrix and the residual for structural problems. * \note At the next level of abstraction (linear or not) a class must define the constitutive term. * The methods we override in this class with an empty implementation are here just to better * document the public interface of this class hierarchy. - * \ingroup FEM_Discr * \author R.Sanchez * \version 7.4.0 "Blackbird" */ diff --git a/SU2_CFD/include/numerics/elasticity/CFEALinearElasticity.hpp b/SU2_CFD/include/numerics/elasticity/CFEALinearElasticity.hpp index 36f37de2e48..3b125593ae0 100644 --- a/SU2_CFD/include/numerics/elasticity/CFEALinearElasticity.hpp +++ b/SU2_CFD/include/numerics/elasticity/CFEALinearElasticity.hpp @@ -33,7 +33,7 @@ /*! * \class CFEALinearElasticity * \brief Class for computing the stiffness matrix of a linear, elastic problem. - * \ingroup FEM_Discr + * \ingroup Elasticity_Equations * \author R.Sanchez * \version 7.4.0 "Blackbird" */ @@ -88,7 +88,7 @@ class CFEALinearElasticity : public CFEAElasticity { /*! * \class CFEAMeshElasticity * \brief Particular case of linear elasticity used for mesh deformation. - * \ingroup FEM_Discr + * \ingroup Elasticity_Equations * \author R.Sanchez * \version 7.4.0 "Blackbird" */ diff --git a/SU2_CFD/include/numerics/elasticity/CFEANonlinearElasticity.hpp b/SU2_CFD/include/numerics/elasticity/CFEANonlinearElasticity.hpp index 1291aecd182..5a697f914d6 100644 --- a/SU2_CFD/include/numerics/elasticity/CFEANonlinearElasticity.hpp +++ b/SU2_CFD/include/numerics/elasticity/CFEANonlinearElasticity.hpp @@ -35,7 +35,7 @@ * This class does not implement a particular model, that will be done by its children. * \note In addition to Compute_Constitutive_Matrix, derived classes MUST further implement * Compute_Plane_Stress_Term and Compute_Stress_Tensor. - * \ingroup FEM_Discr + * \ingroup Elasticity_Equations * \author R.Sanchez * \version 7.4.0 "Blackbird" */ diff --git a/SU2_CFD/include/numerics/elasticity/nonlinear_models.hpp b/SU2_CFD/include/numerics/elasticity/nonlinear_models.hpp index 0265c612e55..e0aa7384614 100644 --- a/SU2_CFD/include/numerics/elasticity/nonlinear_models.hpp +++ b/SU2_CFD/include/numerics/elasticity/nonlinear_models.hpp @@ -33,7 +33,7 @@ /*! * \class CFEM_NeoHookean_Comp * \brief Class for computing the constitutive and stress tensors for a neo-Hookean material model, compressible. - * \ingroup FEM_Discr + * \ingroup Elasticity_Equations * \author R.Sanchez * \version 7.4.0 "Blackbird" */ @@ -81,7 +81,7 @@ class CFEM_NeoHookean_Comp final : public CFEANonlinearElasticity { /*! * \class CFEM_NeoHookean_Comp * \brief Constitutive and stress tensors for a Knowles stored-energy function, nearly incompressible. - * \ingroup FEM_Discr + * \ingroup Elasticity_Equations * \author R.Sanchez * \version 7.4.0 "Blackbird" */ @@ -132,7 +132,7 @@ class CFEM_Knowles_NearInc final : public CFEANonlinearElasticity { /*! * \class CFEM_DielectricElastomer * \brief Class for computing the constitutive and stress tensors for a dielectric elastomer. - * \ingroup FEM_Discr + * \ingroup Elasticity_Equations * \author R.Sanchez * \version 7.4.0 "Blackbird" */ @@ -180,7 +180,7 @@ class CFEM_DielectricElastomer final : public CFEANonlinearElasticity { /*! * \class CFEM_IdealDE * \brief Class for computing the constitutive and stress tensors for a nearly-incompressible ideal DE. - * \ingroup FEM_Discr + * \ingroup Elasticity_Equations * \author R.Sanchez * \version 7.4.0 "Blackbird" */ diff --git a/SU2_CFD/include/numerics_simd/CNumericsSIMD.cpp b/SU2_CFD/include/numerics_simd/CNumericsSIMD.cpp index e930f214db0..80513392056 100644 --- a/SU2_CFD/include/numerics_simd/CNumericsSIMD.cpp +++ b/SU2_CFD/include/numerics_simd/CNumericsSIMD.cpp @@ -130,9 +130,12 @@ CNumericsSIMD* createNumerics(const CConfig& config, int iMesh, const CVariable* * numerical methods. */ CNumericsSIMD* CNumericsSIMD::CreateNumerics(const CConfig& config, int nDim, int iMesh, const CVariable* turbVars) { +#ifndef CODI_REVERSE_TYPE if ((Double::Size < 4) && (SU2_MPI::GetRank() == MASTER_NODE)) { - cout << "WARNING: SU2 was not compiled for an AVX-capable architecture." << endl; + cout << "WARNING: SU2 was not compiled for an AVX-capable architecture. Performance could be better,\n" + " see https://su2code.github.io/docs_v7/Build-SU2-Linux-MacOS/#compiler-optimizations" << endl; } +#endif if (nDim == 2) return createNumerics<2>(config, iMesh, turbVars); if (nDim == 3) return createNumerics<3>(config, iMesh, turbVars); diff --git a/SU2_CFD/include/numerics_simd/CNumericsSIMD.hpp b/SU2_CFD/include/numerics_simd/CNumericsSIMD.hpp index f22f4a35f15..3339dada920 100644 --- a/SU2_CFD/include/numerics_simd/CNumericsSIMD.hpp +++ b/SU2_CFD/include/numerics_simd/CNumericsSIMD.hpp @@ -58,6 +58,7 @@ using SparseMatrixType = CSysMatrix; /*! * \class CNumericsSIMD + * \ingroup ConvDiscr * \brief Base class to define the interface. * \note See CNumericsEmptyDecorator. */ diff --git a/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp b/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp index 365314ca1a1..ab8487275c8 100644 --- a/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp +++ b/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp @@ -36,6 +36,7 @@ /*! * \class CCenteredBase + * \ingroup ConvDiscr * \brief Base class for Centered schemes, derived classes implement * the dissipation term in a const "finalizeFlux" method. * \note See CRoeBase for the role of Base. @@ -186,6 +187,7 @@ class CCenteredBase : public Base { /*! * \class CJSTScheme + * \ingroup ConvDiscr * \brief Classical JST scheme with scalar dissipation. */ template @@ -243,7 +245,7 @@ class CJSTScheme : public CCenteredBase,Decorator> { const auto si = gatherVariables(iPoint, solution.GetSensor()); const auto sj = gatherVariables(jPoint, solution.GetSensor()); const Double eps2 = kappa2 * 0.5*(si+sj) * sc2; - const Double eps4 = max(0.0, kappa4-eps2) * sc4; + const Double eps4 = fmax(0.0, kappa4-eps2) * sc4; /*--- Update flux and Jacobians with dissipation terms. ---*/ @@ -265,6 +267,7 @@ class CJSTScheme : public CCenteredBase,Decorator> { /*! * \class CJSTmatScheme + * \ingroup ConvDiscr * \brief JST scheme with matrix dissipation. */ template @@ -321,7 +324,7 @@ class CJSTmatScheme : public CCenteredBase,Decorator> { const auto si = gatherVariables(iPoint, solution.GetSensor()); const auto sj = gatherVariables(jPoint, solution.GetSensor()); const Double eps2 = kappa2 * 0.5*(si+sj) * sc2; - const Double eps4 = max(0.0, kappa4-eps2) * sc4; + const Double eps4 = fmax(0.0, kappa4-eps2) * sc4; const auto lapl_i = gatherVariables(iPoint, solution.GetUndivided_Laplacian()); const auto lapl_j = gatherVariables(jPoint, solution.GetUndivided_Laplacian()); @@ -357,10 +360,10 @@ class CJSTmatScheme : public CCenteredBase,Decorator> { lambda(nDim) = projVel + avgV.speedSound()*area; lambda(nDim+1) = projVel - avgV.speedSound()*area; - const Double maxLambda = max(lambda(nDim), -lambda(nDim+1)); + const Double maxLambda = fmax(lambda(nDim), -lambda(nDim+1)); for (size_t iVar = 0; iVar < nVar; ++iVar) { - lambda(iVar) = max(abs(lambda(iVar)), entropyFix*maxLambda); + lambda(iVar) = fmax(abs(lambda(iVar)), entropyFix*maxLambda); } /*--- Update flux and Jacobians with scaled dissipation terms. ---*/ @@ -391,6 +394,7 @@ class CJSTmatScheme : public CCenteredBase,Decorator> { /*! * \class CJSTkeScheme + * \ingroup ConvDiscr * \brief JST scheme without 4th order dissipation. */ template @@ -461,6 +465,7 @@ class CJSTkeScheme : public CCenteredBase,Decorator> { /*! * \class CLaxScheme + * \ingroup ConvDiscr * \brief Lax–Friedrichs 1st order scheme. */ template diff --git a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp index b0f5634bce3..10f245c5243 100644 --- a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp +++ b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp @@ -93,15 +93,16 @@ FORCEINLINE void musclEdgeLimited(Int iPoint, /*! * \brief Retrieve primitive variables for points i/j, reconstructing them if needed. - * \param[in] iPoint, jPoint - Nodes of the edge. + * \param[in] iEdge, iPoint, jPoint - Edge and its nodes. * \param[in] muscl - If true, reconstruct, else simply fetch. + * \param[in] V1st - Pair of compressible flow primitives for nodes i,j. * \param[in] vector_ij - Distance vector from i to j. * \param[in] solution - Entire solution container (a derived CVariable). * \return Pair of primitive variables. */ template -FORCEINLINE CPair reconstructPrimitives(Int iPoint, Int jPoint, bool muscl, - LIMITER limiterType, +FORCEINLINE CPair reconstructPrimitives(Int iEdge, Int iPoint, Int jPoint, + bool muscl, LIMITER limiterType, const CPair& V1st, const VectorDbl& vector_ij, const VariableType& solution) { @@ -131,7 +132,31 @@ FORCEINLINE CPair reconstructPrimitives(Int iPoint, Int jPoint, bo musclPointLimited(jPoint, vector_ij,-0.5, limiters, gradients, V.j.all); break; } - /// TODO: Extra reconstruction checks needed. + /*--- Detect a non-physical reconstruction based on negative pressure or density. ---*/ + const Double neg_p_or_rho = fmax(fmin(V.i.pressure(), V.j.pressure()) < 0.0, + fmin(V.i.density(), V.j.density()) < 0.0); + /*--- Test the sign of the Roe-averaged speed of sound. ---*/ + const Double R = sqrt(abs(V.j.density() / V.i.density())); + /*--- Delay dividing by R+1 until comparing enthalpy and velocity magnitude. ---*/ + const Double enthalpy = R*V.j.enthalpy() + V.i.enthalpy(); + Double v_squared = 0.0; + for (size_t iDim = 0; iDim < nDim; ++iDim) { + v_squared += pow(R*V.j.velocity(iDim) + V.i.velocity(iDim), 2); + } + /*--- Multiply enthalpy by R+1 since v^2 was not divided by (R+1)^2. + * Note: a = sqrt((gamma-1) * (H - 0.5 * v^2)) ---*/ + const Double neg_sound_speed = enthalpy * (R+1) < 0.5 * v_squared; + + /*--- Revert to first order if the state is non-physical. ---*/ + Double bad_recon = fmax(neg_p_or_rho, neg_sound_speed); + /*--- Handle SIMD dimensions 1 by 1. ---*/ + for (size_t k = 0; k < Double::Size; ++k) { + bad_recon[k] = solution.UpdateNonPhysicalEdgeCounter(iEdge[k], bad_recon[k]); + } + for (size_t iVar = 0; iVar < ReconVarType::nVar; ++iVar) { + V.i.all(iVar) = bad_recon * V1st.i.all(iVar) + (1-bad_recon) * V.i.all(iVar); + V.j.all(iVar) = bad_recon * V1st.j.all(iVar) + (1-bad_recon) * V.j.all(iVar); + } } return V; } @@ -347,21 +372,21 @@ FORCEINLINE Double roeDissipation(Int iPoint, switch (type) { case FD: case FD_DUCROS: { - Double d = max(minDissip, 1.0 - avgDissip); + Double d = fmax(minDissip, 1.0 - avgDissip); if (type == FD_DUCROS) { /*--- See Jonhsen et al. JCP 229 (2010) pag. 1234 ---*/ - d = max(d, 0.05 + 0.95*(avgSensor > 0.65)); + d = fmax(d, 0.05 + 0.95*(avgSensor > 0.65)); } return d; } case NTS: - return max(minDissip, avgDissip); + return fmax(minDissip, avgDissip); case NTS_DUCROS: /*--- See Xiao et al. INT J HEAT FLUID FL 51 (2015) pag. 141 * https://doi.org/10.1016/j.ijheatfluidflow.2014.10.007 ---*/ - return max(minDissip, avgSensor+avgDissip - avgSensor*avgDissip); + return fmax(minDissip, avgSensor+avgDissip - avgSensor*avgDissip); default: assert(false); diff --git a/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp b/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp index cc544fe5b98..f3e3defc844 100644 --- a/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp +++ b/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp @@ -36,6 +36,7 @@ /*! * \class CRoeBase + * \ingroup ConvDiscr * \brief Base class for Roe schemes, derived classes implement * the dissipation term in a const "finalizeFlux" method. * A base class implementing "viscousTerms" is accepted as template parameter. @@ -116,7 +117,7 @@ class CRoeBase : public Base { V1st.j.all = gatherVariables(jPoint, solution.GetPrimitive()); auto V = reconstructPrimitives >( - iPoint, jPoint, muscl, typeLimiter, V1st, vector_ij, solution); + iEdge, iPoint, jPoint, muscl, typeLimiter, V1st, vector_ij, solution); /*--- Compute conservative variables. ---*/ @@ -157,7 +158,7 @@ class CRoeBase : public Base { Double maxLambda = abs(projVel) + roeAvg.speedSound; for (size_t iVar = 0; iVar < nVar; ++iVar) { - lambda(iVar) = max(abs(lambda(iVar)), entropyFix*maxLambda); + lambda(iVar) = fmax(abs(lambda(iVar)), entropyFix*maxLambda); } /*--- Inviscid fluxes and Jacobians. ---*/ @@ -215,6 +216,7 @@ class CRoeBase : public Base { /*! * \class CRoeScheme + * \ingroup ConvDiscr * \brief Classical Roe scheme. */ template diff --git a/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp b/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp index e7be7c72be7..9484315d6ab 100644 --- a/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp +++ b/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp @@ -130,7 +130,7 @@ FORCEINLINE void addQCR(const MatrixType& grad, MatrixDbl& tau) { for (size_t jDim = 0; jDim < nDim; ++jDim) denom += grad(iDim+1,jDim) * grad(iDim+1,jDim); - const Double factor = 1 / sqrt(max(denom,1e-10)); + const Double factor = 1 / sqrt(fmax(denom,1e-10)); /*--- Compute the QCR term, and update the stress tensor. ---*/ MatrixDbl qcr; @@ -159,8 +159,8 @@ FORCEINLINE void addTauWall(Int iPoint, Int jPoint, const VectorDbl& unitNormal, MatrixDbl& tau) { - Double tauWall_i = max(gatherVariables(iPoint, tauWall), 0.0); - Double tauWall_j = max(gatherVariables(jPoint, tauWall), 0.0); + Double tauWall_i = fmax(gatherVariables(iPoint, tauWall), 0.0); + Double tauWall_j = fmax(gatherVariables(jPoint, tauWall), 0.0); Double isWall_i = tauWall_i > 0.0; Double isWall_j = tauWall_j > 0.0; @@ -171,7 +171,8 @@ FORCEINLINE void addTauWall(Int iPoint, Int jPoint, Double tauWall_ij = (tauWall_i+tauWall_j) * isNormalEdge; /*--- Scale is 1 for those edges, i.e. tau is not changed. ---*/ - Double scale = tauWall_ij / norm(tangentProjection(tau,unitNormal)) + (1.0-isNormalEdge); + Double scale = + tauWall_ij / fmax(norm(tangentProjection(tau,unitNormal)), EPS) + (1.0-isNormalEdge); for (size_t iDim = 0; iDim < nDim; ++iDim) for (size_t jDim = 0; jDim < nDim; ++jDim) 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 1e0f40917de..39e6b508974 100644 --- a/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp +++ b/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp @@ -34,6 +34,7 @@ /*! * \class CNoViscousFlux + * \ingroup ViscDiscr * \brief Numerics classes that accept a compile-time decorator should use this * class template as a "do-nothing" decorator and as a link to the interface when * they are not being decorated. @@ -63,6 +64,7 @@ class CNoViscousFlux : public CNumericsSIMD { /*! * \class CCompressibleViscousFluxBase + * \ingroup ViscDiscr * \brief Decorator class to add viscous fluxes (compressible flow). */ template @@ -248,6 +250,7 @@ class CCompressibleViscousFluxBase : public CNumericsSIMD { /*! * \class CCompressibleViscousFlux + * \ingroup ViscDiscr * \brief Decorator class to add viscous fluxes (compressible flow, ideal gas). */ template @@ -306,6 +309,7 @@ class CCompressibleViscousFlux : public CCompressibleViscousFluxBase diff --git a/SU2_CFD/include/solvers/CEulerSolver.hpp b/SU2_CFD/include/solvers/CEulerSolver.hpp index e1aaf1602ff..ef8c6b6af05 100644 --- a/SU2_CFD/include/solvers/CEulerSolver.hpp +++ b/SU2_CFD/include/solvers/CEulerSolver.hpp @@ -32,6 +32,7 @@ /*! * \class CEulerSolver + * \ingroup Euler_Equations * \brief Class for compressible inviscid flow problems, serves as base for Navier-Stokes/RANS. * \author F. Palacios */ @@ -43,8 +44,6 @@ class CEulerSolver : public CFVMFlowSolverBase NonPhysicalEdgeCounter; /*!< \brief Non-physical reconstruction counter for each edge. */ - su2double AllBound_CEquivArea_Inv=0.0; /*!< \brief equivalent area coefficient (inviscid contribution) for all the boundaries. */ vector CEquivArea_Mnt; /*!< \brief Equivalent area (inviscid contribution) for each boundary. */ vector CEquivArea_Inv; /*!< \brief Equivalent area (inviscid contribution) for each boundary. */ diff --git a/SU2_CFD/include/solvers/CFEASolver.hpp b/SU2_CFD/include/solvers/CFEASolver.hpp index 19adf59f0cd..ae06c383e3d 100644 --- a/SU2_CFD/include/solvers/CFEASolver.hpp +++ b/SU2_CFD/include/solvers/CFEASolver.hpp @@ -31,6 +31,7 @@ /*! * \class CFEASolver + * \ingroup Elasticity_Equations * \brief Main class for defining a FEM solver for elastic structural problems. * \author R. Sanchez. */ diff --git a/SU2_CFD/include/solvers/CFEASolverBase.hpp b/SU2_CFD/include/solvers/CFEASolverBase.hpp index 59ba222495b..ba40652e750 100644 --- a/SU2_CFD/include/solvers/CFEASolverBase.hpp +++ b/SU2_CFD/include/solvers/CFEASolverBase.hpp @@ -33,6 +33,11 @@ #include "../../../Common/include/geometry/elements/CElement.hpp" #include "../../../Common/include/parallelization/omp_structure.hpp" +/*! + * \class CFEASolverBase + * \ingroup Elasticity_Equations + * \brief Base class for FEM elasticity solvers. + */ class CFEASolverBase : public CSolver { public: enum : size_t {MAXNNODE_2D = 4}; diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp b/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp index cbf932a0bb6..dfcf1b055d8 100644 --- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp +++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp @@ -269,13 +269,50 @@ class CFVMFlowSolverBase : public CSolver { /*! * \brief Method to compute convective and viscous residual contribution using vectorized numerics. */ - void EdgeFluxResidual(const CGeometry *geometry, const CSolver* const* solvers, const CConfig *config); + void EdgeFluxResidual(const CGeometry *geometry, const CSolver* const* solvers, CConfig *config); /*! * \brief Sum the edge fluxes for each cell to populate the residual vector, only used on coarse grids. */ void SumEdgeFluxes(const CGeometry* geometry); + /*! + * \brief Sums edge fluxes (if required) and computes the global error counter. + * \param[in] pausePreacc - Whether preaccumulation was paused durin. + * \param[in] localCounter - Thread-local error counter. + * \param[in,out] config - Used to set the global error counter. + */ + inline void FinalizeResidualComputation(const CGeometry *geometry, bool pausePreacc, + unsigned long localCounter, CConfig* config) { + + /*--- Restore preaccumulation and adjoint evaluation state. ---*/ + AD::ResumePreaccumulation(pausePreacc); + if (!ReducerStrategy) AD::EndNoSharedReading(); + + if (ReducerStrategy) { + SumEdgeFluxes(geometry); + if (config->GetKind_TimeIntScheme() == EULER_IMPLICIT) { + Jacobian.SetDiagonalAsColumnSum(); + } + } + + /*--- Warning message about non-physical reconstructions. ---*/ + if ((MGLevel == MESH_0) && (config->GetComm_Level() == COMM_FULL)) { + /*--- Add counter results for all threads. ---*/ + SU2_OMP_ATOMIC + ErrorCounter += localCounter; + + /*--- Add counter results for all ranks. ---*/ + BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS + { + localCounter = ErrorCounter; + SU2_MPI::Reduce(&localCounter, &ErrorCounter, 1, MPI_UNSIGNED_LONG, MPI_SUM, MASTER_NODE, SU2_MPI::GetComm()); + config->SetNonphysical_Reconstr(ErrorCounter); + } + END_SU2_OMP_SAFE_GLOBAL_ACCESS + } + } + /*! * \brief Computes and sets the required auxilliary vars (and gradients) for axisymmetric flow. */ diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl index d7fcda4d62a..1e84b6efae5 100644 --- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl +++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl @@ -325,12 +325,6 @@ void CFVMFlowSolverBase::HybridParallelInitialization(const CConfig& confi #endif << endl; } - - if (config.GetUseVectorization() && (omp_get_max_threads() > 1) && - (config.GetEdgeColoringGroupSize() % Double::Size != 0)) { - SU2_MPI::Error("When using vectorization, the EDGE_COLORING_GROUP_SIZE must be divisible " - "by the SIMD length (2, 4, or 8).", CURRENT_FUNCTION); - } } if (ReducerStrategy) EdgeFluxes.Initialize(geometry.GetnEdge(), geometry.GetnEdge(), nVar, nullptr); @@ -1575,11 +1569,22 @@ void CFVMFlowSolverBase::BC_Custom(CGeometry* geometry, CSolver** solver_c template void CFVMFlowSolverBase::EdgeFluxResidual(const CGeometry *geometry, const CSolver* const* solvers, - const CConfig *config) { + CConfig *config) { if (!edgeNumerics) { + if (!ReducerStrategy && (omp_get_max_threads() > 1) && + (config->GetEdgeColoringGroupSize() % Double::Size != 0)) { + SU2_MPI::Error("When using vectorization, the EDGE_COLORING_GROUP_SIZE must be divisible " + "by the SIMD length (2, 4, or 8).", CURRENT_FUNCTION); + } InstantiateEdgeNumerics(solvers, config); } + /*--- Non-physical counter. ---*/ + unsigned long counterLocal = 0; + SU2_OMP_MASTER + ErrorCounter = 0; + END_SU2_OMP_MASTER + /*--- For hybrid parallel AD, pause preaccumulation if there is shared reading of * variables, otherwise switch to the faster adjoint evaluation mode. ---*/ bool pausePreacc = false; @@ -1604,20 +1609,15 @@ void CFVMFlowSolverBase::EdgeFluxResidual(const CGeometry *geometry, } else { edgeNumerics->ComputeFlux(iEdge, *config, *geometry, *nodes, UpdateType::COLORING, mask, LinSysRes, Jacobian); } + if (MGLevel == MESH_0) { + for (auto j = 0ul; j < Double::Size; ++j) + counterLocal += (nodes->NonPhysicalEdgeCounter[iEdge[j]] > 0); + } } END_SU2_OMP_FOR } - /*--- Restore preaccumulation and adjoint evaluation state. ---*/ - AD::ResumePreaccumulation(pausePreacc); - if (!ReducerStrategy) AD::EndNoSharedReading(); - - if (ReducerStrategy) { - SumEdgeFluxes(geometry); - if (config->GetKind_TimeIntScheme() == EULER_IMPLICIT) { - Jacobian.SetDiagonalAsColumnSum(); - } - } + FinalizeResidualComputation(geometry, pausePreacc, counterLocal, config); } template diff --git a/SU2_CFD/include/solvers/CIncEulerSolver.hpp b/SU2_CFD/include/solvers/CIncEulerSolver.hpp index bc3f0962dae..e6916932e62 100644 --- a/SU2_CFD/include/solvers/CIncEulerSolver.hpp +++ b/SU2_CFD/include/solvers/CIncEulerSolver.hpp @@ -41,8 +41,6 @@ class CIncEulerSolver : public CFVMFlowSolverBase FluidModel; /*!< \brief fluid model used in the solver. */ StreamwisePeriodicValues SPvals, SPvalsUpdated; - su2vector NonPhysicalEdgeCounter; /*!< \brief Non-physical reconstruction counter for each edge. */ - /*! * \brief Preprocessing actions common to the Euler and NS solvers. * \param[in] geometry - Geometrical definition of the problem. diff --git a/SU2_CFD/include/variables/CFlowVariable.hpp b/SU2_CFD/include/variables/CFlowVariable.hpp index 9426dbef8d5..501b0fd4a1f 100644 --- a/SU2_CFD/include/variables/CFlowVariable.hpp +++ b/SU2_CFD/include/variables/CFlowVariable.hpp @@ -66,6 +66,23 @@ class CFlowVariable : public CVariable { unsigned long nprimvargrad, const CConfig* config); public: + mutable su2vector NonPhysicalEdgeCounter; /*!< \brief Non-physical reconstruction counter for each edge. */ + /*! + * \brief Updates the non-physical counter of an edge. + * \param[in] iEdge - Edge index. + * \param[in] isNonPhys - Should be 1 (true) if a non-physical reconstruction was occurred. + * \return Whether the reconstruction should be limited to first order, based on the counter. + */ + template + inline T UpdateNonPhysicalEdgeCounter(unsigned long iEdge, const T& isNonPhys) const { + if (isNonPhys != 0) { + /*--- Force 1st order for this edge for at least 20 iterations. ---*/ + NonPhysicalEdgeCounter[iEdge] = 21; + } + NonPhysicalEdgeCounter[iEdge] = std::max(0, NonPhysicalEdgeCounter[iEdge] - 1); + return static_cast(NonPhysicalEdgeCounter[iEdge] > 0); + } + /*! * \brief Get a primitive variable. * \param[in] iPoint - Point index. diff --git a/SU2_CFD/src/solvers/CEulerSolver.cpp b/SU2_CFD/src/solvers/CEulerSolver.cpp index 8563cf52d01..81e81fe660b 100644 --- a/SU2_CFD/src/solvers/CEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CEulerSolver.cpp @@ -148,8 +148,6 @@ CEulerSolver::CEulerSolver(CGeometry *geometry, CConfig *config, Allocate(*config); - NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0; - /*--- MPI + OpenMP initialization. ---*/ HybridParallelInitialization(*config, *geometry); @@ -282,6 +280,10 @@ CEulerSolver::CEulerSolver(CGeometry *geometry, CConfig *config, } SetBaseClassPointerToNodes(); + if (iMesh == MESH_0) { + nodes->NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0; + } + /*--- Check that the initial solution is physical, report any non-physical nodes ---*/ counter_local = 0; @@ -1663,17 +1665,19 @@ void CEulerSolver::Centered_Residual(CGeometry *geometry, CSolver **solver_conta void CEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { - if (config->GetUseVectorization()) { + const bool ideal_gas = (config->GetKind_FluidModel() == STANDARD_AIR) || + (config->GetKind_FluidModel() == IDEAL_GAS); + const bool low_mach_corr = config->Low_Mach_Correction(); + + /*--- Use vectorization if the scheme supports it. ---*/ + if (config->GetKind_Upwind_Flow() == ROE && ideal_gas && !low_mach_corr) { EdgeFluxResidual(geometry, solver_container, config); return; } const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); - const bool ideal_gas = (config->GetKind_FluidModel() == STANDARD_AIR) || - (config->GetKind_FluidModel() == IDEAL_GAS); const bool roe_turkel = (config->GetKind_Upwind_Flow() == TURKEL); - const bool low_mach_corr = config->Low_Mach_Correction(); const auto kind_dissipation = config->GetKind_RoeLowDiss(); const bool muscl = (config->GetMUSCL_Flow() && (iMesh == MESH_0)); @@ -1816,13 +1820,7 @@ void CEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_contain const bool neg_sound_speed = ((Gamma-1)*(RoeEnthalpy-0.5*sq_vel) < 0.0); bool bad_recon = neg_sound_speed || neg_pres_or_rho_i || neg_pres_or_rho_j; - if (bad_recon) { - /*--- Force 1st order for this edge for at least 20 iterations. ---*/ - NonPhysicalEdgeCounter[iEdge] = 20; - } else if (NonPhysicalEdgeCounter[iEdge] > 0) { - --NonPhysicalEdgeCounter[iEdge]; - bad_recon = true; - } + bad_recon = nodes->UpdateNonPhysicalEdgeCounter(iEdge, bad_recon); counter_local += bad_recon; numerics->SetPrimitive(bad_recon? V_i : Primitive_i, bad_recon? V_j : Primitive_j); @@ -1881,33 +1879,7 @@ void CEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_contain END_SU2_OMP_FOR } // end color loop - /*--- Restore preaccumulation and adjoint evaluation state. ---*/ - AD::ResumePreaccumulation(pausePreacc); - if (!ReducerStrategy) AD::EndNoSharedReading(); - - if (ReducerStrategy) { - SumEdgeFluxes(geometry); - if (implicit) - Jacobian.SetDiagonalAsColumnSum(); - } - - /*--- Warning message about non-physical reconstructions. ---*/ - - if ((iMesh == MESH_0) && (config->GetComm_Level() == COMM_FULL)) { - /*--- Add counter results for all threads. ---*/ - SU2_OMP_ATOMIC - ErrorCounter += counter_local; - - /*--- Add counter results for all ranks. ---*/ - BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS - { - counter_local = ErrorCounter; - SU2_MPI::Reduce(&counter_local, &ErrorCounter, 1, MPI_UNSIGNED_LONG, MPI_SUM, MASTER_NODE, SU2_MPI::GetComm()); - config->SetNonphysical_Reconstr(ErrorCounter); - } - END_SU2_OMP_SAFE_GLOBAL_ACCESS - } - + FinalizeResidualComputation(geometry, pausePreacc, counter_local, config); } void CEulerSolver::ComputeConsistentExtrapolation(CFluidModel *fluidModel, unsigned short nDim, diff --git a/SU2_CFD/src/solvers/CIncEulerSolver.cpp b/SU2_CFD/src/solvers/CIncEulerSolver.cpp index 82a0e4ce033..face27fefa0 100644 --- a/SU2_CFD/src/solvers/CIncEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CIncEulerSolver.cpp @@ -149,8 +149,6 @@ CIncEulerSolver::CIncEulerSolver(CGeometry *geometry, CConfig *config, unsigned Allocate(*config); - NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0; - /*--- MPI + OpenMP initialization. ---*/ HybridParallelInitialization(*config, *geometry); @@ -216,6 +214,10 @@ CIncEulerSolver::CIncEulerSolver(CGeometry *geometry, CConfig *config, unsigned } SetBaseClassPointerToNodes(); + if (iMesh == MESH_0) { + nodes->NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0; + } + /*--- Initial comms. ---*/ CommunicateInitialState(geometry, config); @@ -1247,13 +1249,7 @@ void CIncEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_cont const bool neg_density_j = (Primitive_j[prim_idx.Density()] < 0.0); bool bad_recon = neg_temperature_i || neg_temperature_j || neg_density_i || neg_density_j; - if (bad_recon) { - /*--- Force 1st order for this edge for at least 20 iterations. ---*/ - NonPhysicalEdgeCounter[iEdge] = 20; - } else if (NonPhysicalEdgeCounter[iEdge] > 0) { - --NonPhysicalEdgeCounter[iEdge]; - bad_recon = true; - } + bad_recon = nodes->UpdateNonPhysicalEdgeCounter(iEdge, bad_recon); counter_local += bad_recon; if (bad_recon) { @@ -1302,33 +1298,7 @@ void CIncEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_cont END_SU2_OMP_FOR } // end color loop - /*--- Restore preaccumulation and adjoint evaluation state. ---*/ - AD::ResumePreaccumulation(pausePreacc); - if (!ReducerStrategy) AD::EndNoSharedReading(); - - if (ReducerStrategy) { - SumEdgeFluxes(geometry); - if (implicit) - Jacobian.SetDiagonalAsColumnSum(); - } - - /*--- Warning message about non-physical reconstructions. ---*/ - - if ((iMesh == MESH_0) && (config->GetComm_Level() == COMM_FULL)) { - /*--- Add counter results for all threads. ---*/ - SU2_OMP_ATOMIC - ErrorCounter += counter_local; - - /*--- Add counter results for all ranks. ---*/ - BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS - { - counter_local = ErrorCounter; - SU2_MPI::Reduce(&counter_local, &ErrorCounter, 1, MPI_UNSIGNED_LONG, MPI_SUM, MASTER_NODE, SU2_MPI::GetComm()); - config->SetNonphysical_Reconstr(ErrorCounter); - } - END_SU2_OMP_SAFE_GLOBAL_ACCESS - } - + FinalizeResidualComputation(geometry, pausePreacc, counter_local, config); } void CIncEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, diff --git a/SU2_GEO/src/SU2_GEO.cpp b/SU2_GEO/src/SU2_GEO.cpp index 911747af469..509778f251d 100644 --- a/SU2_GEO/src/SU2_GEO.cpp +++ b/SU2_GEO/src/SU2_GEO.cpp @@ -677,6 +677,8 @@ int main(int argc, char *argv[]) { for (iFFDBox = 0; iFFDBox < surface_movement->GetnFFDBox(); iFFDBox++) { + Local_MoveSurface = false; + switch ( config_container[ZONE_0]->GetDesign_Variable(iDV) ) { case FFD_CONTROL_POINT_2D : Local_MoveSurface = surface_movement->SetFFDCPChange_2D(geometry_container[ZONE_0], config_container[ZONE_0], FFDBox[iFFDBox], FFDBox, iDV, true); break; case FFD_CAMBER_2D : Local_MoveSurface = surface_movement->SetFFDCamber_2D(geometry_container[ZONE_0], config_container[ZONE_0], FFDBox[iFFDBox], FFDBox, iDV, true); break; diff --git a/TestCases/cont_adj_euler/naca0012/of_grad_cd_disc.dat.ref b/TestCases/cont_adj_euler/naca0012/of_grad_cd_disc.dat.ref index b471e28d314..272a21372a2 100644 --- a/TestCases/cont_adj_euler/naca0012/of_grad_cd_disc.dat.ref +++ b/TestCases/cont_adj_euler/naca0012/of_grad_cd_disc.dat.ref @@ -1,39 +1,39 @@ VARIABLES="VARIABLE" , "GRADIENT" , "FINDIFF_STEP" - 0 , -2654.17 , 0.001 - 1 , -12995.5 , 0.001 - 2 , -21781.7 , 0.001 - 3 , -27675.9 , 0.001 - 4 , -30438.6 , 0.001 - 5 , -30444.6 , 0.001 - 6 , -28343.8 , 0.001 - 7 , -24794.9 , 0.001 - 8 , -20330.1 , 0.001 - 9 , -15377.4 , 0.001 - 10 , -10418.8 , 0.001 - 11 , -6202.42 , 0.001 - 12 , -3878.85 , 0.001 - 13 , -4911.73 , 0.001 - 14 , -10574.3 , 0.001 - 15 , -20611.7 , 0.001 - 16 , -30111.5 , 0.001 - 17 , -26295.8 , 0.001 - 18 , -62395.3 , 0.001 - 19 , -2807.68 , 0.001 - 20 , -838.255 , 0.001 - 21 , -672.494 , 0.001 - 22 , -1776.6 , 0.001 - 23 , -5721.22 , 0.001 - 24 , -13719.0 , 0.001 - 25 , -25698.8 , 0.001 - 26 , -40060.1 , 0.001 - 27 , -53726.4 , 0.001 - 28 , -62410.5 , 0.001 - 29 , -61286.9 , 0.001 - 30 , -46498.5 , 0.001 - 31 , -17834.2 , 0.001 - 32 , 18190.2 , 0.001 - 33 , 48451.4 , 0.001 + 0 , -2656.96 , 0.001 + 1 , -12995.9 , 0.001 + 2 , -21781.3 , 0.001 + 3 , -27675.3 , 0.001 + 4 , -30437.9 , 0.001 + 5 , -30443.9 , 0.001 + 6 , -28343.1 , 0.001 + 7 , -24794.2 , 0.001 + 8 , -20329.4 , 0.001 + 9 , -15376.6 , 0.001 + 10 , -10418.0 , 0.001 + 11 , -6201.67 , 0.001 + 12 , -3878.08 , 0.001 + 13 , -4910.93 , 0.001 + 14 , -10573.5 , 0.001 + 15 , -20610.7 , 0.001 + 16 , -30110.4 , 0.001 + 17 , -26294.5 , 0.001 + 18 , -62393.8 , 0.001 + 19 , -2797.26 , 0.001 + 20 , -832.067 , 0.001 + 21 , -668.081 , 0.001 + 22 , -1773.25 , 0.001 + 23 , -5718.86 , 0.001 + 24 , -13717.8 , 0.001 + 25 , -25699.0 , 0.001 + 26 , -40061.9 , 0.001 + 27 , -53729.8 , 0.001 + 28 , -62415.6 , 0.001 + 29 , -61293.4 , 0.001 + 30 , -46505.9 , 0.001 + 31 , -17841.7 , 0.001 + 32 , 18183.8 , 0.001 + 33 , 48447.5 , 0.001 34 , 62322.0 , 0.001 - 35 , 64135.8 , 0.001 - 36 , 54563.9 , 0.001 - 37 , 64854.5 , 0.001 + 35 , 64139.5 , 0.001 + 36 , 54568.2 , 0.001 + 37 , 64856.8 , 0.001 diff --git a/TestCases/disc_adj_fsi/dyn_fsi/grad_dv.opt.ref b/TestCases/disc_adj_fsi/dyn_fsi/grad_dv.opt.ref index c380783455e..0bab88b33d0 100644 --- a/TestCases/disc_adj_fsi/dyn_fsi/grad_dv.opt.ref +++ b/TestCases/disc_adj_fsi/dyn_fsi/grad_dv.opt.ref @@ -1,9 +1,9 @@ INDEX GRAD -0 -3.461460562561343e-03 -1 -1.841786233479942e-03 -2 -7.915535761739026e-04 -3 -2.739621893483675e-04 -4 -2.734869271695357e-04 -5 -7.881162914578071e-04 -6 -1.828978375508056e-03 -7 -3.427219521629237e-03 +0 -3.461460630332286e-03 +1 -1.841786279602490e-03 +2 -7.915536035493717e-04 +3 -2.739622003666185e-04 +4 -2.734869244046031e-04 +5 -7.881162775931060e-04 +6 -1.828978353197476e-03 +7 -3.427219493292633e-03 diff --git a/TestCases/disc_adj_rans/naca0012/turb_NACA0012_sst.cfg b/TestCases/disc_adj_rans/naca0012/turb_NACA0012_sst.cfg index 48ccf097633..ae362b476ec 100644 --- a/TestCases/disc_adj_rans/naca0012/turb_NACA0012_sst.cfg +++ b/TestCases/disc_adj_rans/naca0012/turb_NACA0012_sst.cfg @@ -143,7 +143,6 @@ MG_DAMP_PROLONGATION= 0.75 % Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC, % TURKEL_PREC, MSW) CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES % % Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER) MUSCL_FLOW= YES diff --git a/TestCases/hybrid_regression.py b/TestCases/hybrid_regression.py index 365eff0c3fa..49858180ddc 100644 --- a/TestCases/hybrid_regression.py +++ b/TestCases/hybrid_regression.py @@ -100,7 +100,7 @@ def main(): flatplate.cfg_dir = "navierstokes/flatplate" flatplate.cfg_file = "lam_flatplate.cfg" flatplate.test_iter = 100 - flatplate.test_vals = [-9.154121, -3.663159, 0.001112, 0.036277, 2.361500, -2.325300, -2.278800, -2.278800] + flatplate.test_vals = [-9.154121, -3.663180, 0.001112, 0.036277, 2.361500, -2.325300, -2.278800, -2.278800] flatplate.test_vals_aarch64 = [-9.154130, -3.663197, 0.001112, 0.036277, 2.361500, -2.325300, -2.278800, -2.278800] test_list.append(flatplate) @@ -109,7 +109,7 @@ def main(): cylinder.cfg_dir = "navierstokes/cylinder" cylinder.cfg_file = "lam_cylinder.cfg" cylinder.test_iter = 25 - cylinder.test_vals = [-6.765429, -1.297425, 0.019571, 0.310232, 0.123270] + cylinder.test_vals = [-6.765429, -1.297425, 0.019571, 0.310230, 0.123270] cylinder.test_vals_aarch64 = [-6.765429, -1.297425, 0.019571, 0.310231, 0.123270] test_list.append(cylinder) @@ -118,7 +118,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.850130, -1.388096, -0.056036, 108.140811, 0.007988] + cylinder_lowmach.test_vals = [-6.850130, -1.388096, -0.056036, 108.140806, 0.007988] cylinder_lowmach.test_vals_aarch64 = [-6.850130, -1.388096, -0.056036, 108.140813, 0.007988] test_list.append(cylinder_lowmach) @@ -127,7 +127,7 @@ def main(): poiseuille.cfg_dir = "navierstokes/poiseuille" poiseuille.cfg_file = "lam_poiseuille.cfg" poiseuille.test_iter = 10 - poiseuille.test_vals = [-5.048282, 0.650814, 0.008714, 13.677678, -2.054800] + poiseuille.test_vals = [-5.048283, 0.650813, 0.008713, 13.677671, -2.054800] poiseuille.test_vals_aarch64 = [-5.048282, 0.650814, 0.008713, 13.677691, -2.054800] test_list.append(poiseuille) @@ -136,7 +136,7 @@ def main(): poiseuille_profile.cfg_dir = "navierstokes/poiseuille" poiseuille_profile.cfg_file = "profile_poiseuille.cfg" poiseuille_profile.test_iter = 10 - poiseuille_profile.test_vals = [-12.494712, -7.710813, -0.000000, 2.085796] + poiseuille_profile.test_vals = [-12.494719, -7.711541, -0.000000, 2.085796] poiseuille_profile.test_vals_aarch64 = [-12.494672, -7.709812, -0.000000, 2.085796] test_list.append(poiseuille_profile) @@ -145,7 +145,7 @@ def main(): periodic2d.cfg_dir = "navierstokes/periodic2D" periodic2d.cfg_file = "config.cfg" periodic2d.test_iter = 1400 - periodic2d.test_vals = [-10.818511, -8.363385, -8.287482, -5.334813, -1.087926, -2945.2] + periodic2d.test_vals = [-10.818509, -8.363386, -8.287481, -5.334812, -1.087925, -2945.200000] periodic2d.test_vals_aarch64 = [-10.818510, -8.363388, -8.287480, -5.334814, -1.087922, -2945.2] test_list.append(periodic2d) @@ -198,7 +198,7 @@ def main(): turb_naca0012_sa.cfg_dir = "rans/naca0012" turb_naca0012_sa.cfg_file = "turb_NACA0012_sa.cfg" turb_naca0012_sa.test_iter = 10 - turb_naca0012_sa.test_vals = [-8.627052, -10.377936, 1.064491, 0.019710, 20.000000, -1.763095, 20.000000, -4.794176, -46.506000] + turb_naca0012_sa.test_vals = [-8.627052, -10.377936, 1.064491, 0.019710, 20.000000, -1.763092, 20.000000, -4.794204, -46.506000] turb_naca0012_sa.test_vals_aarch64 = [-8.627052, -10.377936, 1.064491, 0.019710, 20.000000, -1.763093, 20.000000, -4.794073, -46.506000] test_list.append(turb_naca0012_sa) @@ -207,7 +207,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 = [-11.450475, -12.797872, -5.863655, 1.049989, 0.019163, -1.856263, -38.694000] + turb_naca0012_sst.test_vals = [-11.450472, -12.797872, -5.863655, 1.049989, 0.019163, -1.856265, -38.694000] turb_naca0012_sst.test_vals_aarch64 = [-11.450473, -12.797872, -5.863655, 1.049989, 0.019163, -1.856266, -38.694000] test_list.append(turb_naca0012_sst) @@ -216,7 +216,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 = [-11.367051, -12.640670, -5.746919, 1.005233, 0.019017, -1.913905] + turb_naca0012_sst_sust.test_vals = [-11.367052, -12.640670, -5.746919, 1.005233, 0.019017, -1.913902] turb_naca0012_sst_sust.test_vals_aarch64 = [-11.367052, -12.640670, -5.746919, 1.005233, 0.019017, -1.913907] test_list.append(turb_naca0012_sst_sust) @@ -254,7 +254,7 @@ def main(): axi_rans_air_nozzle.cfg_dir = "axisymmetric_rans/air_nozzle" axi_rans_air_nozzle.cfg_file = "air_nozzle.cfg" axi_rans_air_nozzle.test_iter = 10 - axi_rans_air_nozzle.test_vals = [-12.093575, -6.630426, -8.798725, -2.399130, -1938.200000] + axi_rans_air_nozzle.test_vals = [-12.093553, -6.630383, -8.798737, -2.399130, -1938.200000] axi_rans_air_nozzle.test_vals_aarch64 = [-12.093539, -6.630357, -8.798732, -2.399130, -1938.200000] test_list.append(axi_rans_air_nozzle) @@ -289,7 +289,7 @@ def main(): turb_naca0012_2c.cfg_dir = "rans_uq/naca0012" turb_naca0012_2c.cfg_file = "turb_NACA0012_uq_2c.cfg" turb_naca0012_2c.test_iter = 10 - turb_naca0012_2c.test_vals = [-5.483337, 0.968887, 0.212057, -0.120310] + turb_naca0012_2c.test_vals = [-5.483318, 0.968892, 0.212994, -0.120007] turb_naca0012_2c.test_vals_aarch64 = [-5.483392, 0.968865, 0.211814, -0.120382] test_list.append(turb_naca0012_2c) @@ -298,7 +298,7 @@ def main(): turb_naca0012_3c.cfg_dir = "rans_uq/naca0012" turb_naca0012_3c.cfg_file = "turb_NACA0012_uq_3c.cfg" turb_naca0012_3c.test_iter = 10 - turb_naca0012_3c.test_vals = [-5.584300, 0.931383, 0.205113, -0.120892] + turb_naca0012_3c.test_vals = [-5.584300, 0.931383, 0.205114, -0.120892] turb_naca0012_3c.test_vals_aarch64 = [-5.584300, 0.931383, 0.205116, -0.120891] test_list.append(turb_naca0012_3c) @@ -307,7 +307,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.133233, 1.075372, 0.337556, -0.077868] + turb_naca0012_p1c1.test_vals = [-5.132760, 1.075858, 0.333412, -0.078553] turb_naca0012_p1c1.test_vals_aarch64 = [-5.132779, 1.075950, 0.333311, -0.078596] test_list.append(turb_naca0012_p1c1) @@ -316,7 +316,7 @@ def main(): turb_naca0012_p1c2.cfg_dir = "rans_uq/naca0012" turb_naca0012_p1c2.cfg_file = "turb_NACA0012_uq_p1c2.cfg" turb_naca0012_p1c2.test_iter = 10 - turb_naca0012_p1c2.test_vals = [-5.554619, 0.943693, 0.226386, -0.116553] + turb_naca0012_p1c2.test_vals = [-5.554392, 0.943810, 0.226719, -0.116439] turb_naca0012_p1c2.test_vals_aarch64 = [-5.554530, 0.943735, 0.226407, -0.116548] test_list.append(turb_naca0012_p1c2) @@ -436,7 +436,7 @@ def main(): cavity.cfg_dir = "moving_wall/cavity" cavity.cfg_file = "lam_cavity.cfg" cavity.test_iter = 25 - cavity.test_vals = [-5.627934, -0.164469, 0.052000, 2.547063] + cavity.test_vals = [-5.627934, -0.164469, 0.052000, 2.547062] test_list.append(cavity) # Spinning cylinder @@ -444,7 +444,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 = [-8.001289, -2.607956, 1.501322, 1.488559] + spinning_cylinder.test_vals = [-8.001290, -2.607958, 1.501321, 1.488559] spinning_cylinder.test_vals_aarch64 = [-8.001291, -2.607959, 1.501321, 1.488559] test_list.append(spinning_cylinder) @@ -457,7 +457,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.558087, -1.162564, 0.066401, 1.399788, 2.220402, 1.399743, 2.218603, -0.453110] + square_cylinder.test_vals = [-2.558001, -1.162564, 0.066372, 1.399788, 2.220402, 1.399743, 2.218603, -0.453110] square_cylinder.unsteady = True test_list.append(square_cylinder) @@ -525,7 +525,7 @@ def main(): edge_PPR.cfg_dir = "nicf/edge" edge_PPR.cfg_file = "edge_PPR.cfg" edge_PPR.test_iter = 100 - edge_PPR.test_vals = [-5.401601, 0.738205, -0.000035, 0.000000] + edge_PPR.test_vals = [-5.401597, 0.738210, -0.000035, 0.000000] edge_PPR.test_vals_aarch64 = [-5.401642, 0.738164, -0.000035, 0.000000] test_list.append(edge_PPR) @@ -556,7 +556,7 @@ def main(): axial_stage2D.cfg_dir = "turbomachinery/axial_stage_2D" axial_stage2D.cfg_file = "Axial_stage2D.cfg" axial_stage2D.test_iter = 20 - axial_stage2D.test_vals = [-1.933139, 5.380376, 73.357910, 0.925874] + axial_stage2D.test_vals = [-1.933115, 5.365584, 73.354510, 0.925901] axial_stage2D.test_vals_aarch64 = [-1.933139, 5.380373, 73.357910, 0.925874] axial_stage2D.new_output = False test_list.append(axial_stage2D) @@ -576,7 +576,7 @@ def main(): transonic_stator_rst.cfg_dir = "turbomachinery/transonic_stator_2D" transonic_stator_rst.cfg_file = "transonic_stator_rst.cfg" transonic_stator_rst.test_iter = 20 - transonic_stator_rst.test_vals = [-6.619122, -0.615716, 5.002986, 0.002951] + transonic_stator_rst.test_vals = [-6.619122, -0.615690, 5.002986, 0.002951] transonic_stator_rst.test_vals_aarch64 = [-6.619122, -0.615705, 5.002986, 0.002951] transonic_stator_rst.new_output = False test_list.append(transonic_stator_rst) @@ -590,7 +590,7 @@ def main(): uniform_flow.cfg_dir = "sliding_interface/uniform_flow" uniform_flow.cfg_file = "uniform_NN.cfg" uniform_flow.test_iter = 5 - uniform_flow.test_vals = [5.000000, 0.000000, -0.188748, -10.631524] + uniform_flow.test_vals = [5.000000, 0.000000, -0.188748, -10.631533] uniform_flow.unsteady = True uniform_flow.multizone = True test_list.append(uniform_flow) @@ -600,7 +600,7 @@ def main(): channel_2D.cfg_dir = "sliding_interface/channel_2D" channel_2D.cfg_file = "channel_2D_WA.cfg" channel_2D.test_iter = 2 - channel_2D.test_vals = [2.000000, 0.000000, 0.397972, 0.352756, 0.405398] + channel_2D.test_vals = [2.000000, 0.000000, 0.397975, 0.352765, 0.405420] channel_2D.unsteady = True channel_2D.multizone = True test_list.append(channel_2D) @@ -610,7 +610,7 @@ def main(): channel_3D.cfg_dir = "sliding_interface/channel_3D" channel_3D.cfg_file = "channel_3D_WA.cfg" channel_3D.test_iter = 2 - channel_3D.test_vals = [2.000000, 0.000000, 0.620171, 0.505178, 0.415313] + channel_3D.test_vals = [2.000000, 0.000000, 0.620170, 0.505179, 0.415317] channel_3D.test_vals_aarch64 = [2.000000, 0.000000, 0.620189, 0.505311, 0.415246] channel_3D.unsteady = True channel_3D.multizone = True @@ -641,7 +641,7 @@ def main(): supersonic_vortex_shedding.cfg_dir = "sliding_interface/supersonic_vortex_shedding" supersonic_vortex_shedding.cfg_file = "sup_vor_shed_WA.cfg" supersonic_vortex_shedding.test_iter = 5 - supersonic_vortex_shedding.test_vals = [5.000000, 0.000000, 1.214350, 1.663911] + supersonic_vortex_shedding.test_vals = [5.000000, 0.000000, 1.214344, 1.663912] supersonic_vortex_shedding.unsteady = True supersonic_vortex_shedding.multizone = True test_list.append(supersonic_vortex_shedding) @@ -702,7 +702,7 @@ def main(): stat_fsi.cfg_dir = "fea_fsi/stat_fsi" stat_fsi.cfg_file = "config.cfg" stat_fsi.test_iter = 7 - stat_fsi.test_vals = [-5.403596, -5.722583, 0.000000, 10.000000] + stat_fsi.test_vals = [-5.397954, -5.719688, 0.000000, 10.000000] stat_fsi.test_vals_aarch64 = [-5.423016, -5.753459, 0.000000, 10.000000] stat_fsi.multizone = True test_list.append(stat_fsi) @@ -712,7 +712,7 @@ def main(): dyn_fsi.cfg_dir = "fea_fsi/dyn_fsi" dyn_fsi.cfg_file = "config.cfg" dyn_fsi.test_iter = 4 - dyn_fsi.test_vals = [-4.355806, -4.060582, 0.000000, 102.000000] + dyn_fsi.test_vals = [-4.355806, -4.060582, 0.000000, 103.000000] dyn_fsi.test_vals_aarch64 = [-4.355806, -4.060582, 0.000000, 103.000000] dyn_fsi.multizone = True dyn_fsi.unsteady = True @@ -723,7 +723,7 @@ def main(): stat_fsi_restart.cfg_dir = "fea_fsi/stat_fsi" stat_fsi_restart.cfg_file = "config_restart.cfg" stat_fsi_restart.test_iter = 1 - stat_fsi_restart.test_vals = [-3.474082, -4.242343, 0.000000, 37.000000] + stat_fsi_restart.test_vals = [-3.474078, -4.242240, 0.000000, 36.000000] stat_fsi_restart.test_vals_aarch64 = [-3.474081, -4.242372, 0.000000, 37.000000] stat_fsi_restart.multizone = True test_list.append(stat_fsi_restart) diff --git a/TestCases/incomp_navierstokes/streamwise_periodic/chtPinArray_2d/of_grad_findiff.csv.ref b/TestCases/incomp_navierstokes/streamwise_periodic/chtPinArray_2d/of_grad_findiff.csv.ref index c8d39589b77..86d281a78f4 100644 --- a/TestCases/incomp_navierstokes/streamwise_periodic/chtPinArray_2d/of_grad_findiff.csv.ref +++ b/TestCases/incomp_navierstokes/streamwise_periodic/chtPinArray_2d/of_grad_findiff.csv.ref @@ -1,2 +1,2 @@ "VARIABLE" , "AVG_DENSITY[0]", "AVG_ENTHALPY[0]", "AVG_NORMALVEL[0]", "DRAG[0]" , "EFFICIENCY[0]" , "FORCE_X[0]" , "FORCE_Y[0]" , "FORCE_Z[0]" , "LIFT[0]" , "MOMENT_X[0]" , "MOMENT_Y[0]" , "MOMENT_Z[0]" , "SIDEFORCE[0]" , "SURFACE_MACH[0]", "SURFACE_MASSFLOW[0]", "SURFACE_MOM_DISTORTION[0]", "SURFACE_PRESSURE_DROP[0]", "SURFACE_SECONDARY[0]", "SURFACE_SECOND_OVER_UNIFORM[0]", "SURFACE_STATIC_PRESSURE[0]", "SURFACE_STATIC_TEMPERATURE[0]", "SURFACE_TOTAL_PRESSURE[0]", "SURFACE_TOTAL_TEMPERATURE[0]", "SURFACE_UNIFORMITY[0]", "AVG_TEMPERATURE[1]", "MAXIMUM_HEATFLUX[1]", "TOTAL_HEATFLUX[1]", "FINDIFF_STEP" -0 , 0.0 , -199999.9862164259, -2.2204999999731917e-08, 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , -0.04999999997368221, -2.2200000003768e-08, -2.0599999983605954 , 0.0 , 2.1199999991616814 , 3.6999999980524834 , 330.00000030369847 , -30.00000106112566 , 314.000000400938 , -30.00000106112566 , -1.3999999826097564 , -139.99999737279722, 0.0 , -509.99999530176865, 1e-08 +0 , 0.0 , -99999.96982514858, -2.2204000000409886e-08, 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , -0.04000000053405728, 0.0 , -2.060000001136153 , 0.0 , 2.12000000054946 , 3.700000000828041 , 330.00000030369847 , -30.00000106112566 , 314.99999977313564 , -30.00000106112566 , -1.400000004814217 , -140.0000030571391, 0.0 , -509.99999530176865, 1e-08 diff --git a/TestCases/multiple_ffd/naca0012/of_grad_cd.dat.ref b/TestCases/multiple_ffd/naca0012/of_grad_cd.dat.ref index 42013415280..81759ef4cd7 100644 --- a/TestCases/multiple_ffd/naca0012/of_grad_cd.dat.ref +++ b/TestCases/multiple_ffd/naca0012/of_grad_cd.dat.ref @@ -1,3 +1,3 @@ VARIABLES="VARIABLE" , "GRADIENT" , "FINDIFF_STEP" - 0 , 0.076707 , 0.001 - 1 , -0.113016 , 0.001 + 0 , 0.0767137 , 0.001 + 1 , -0.113024 , 0.001 diff --git a/TestCases/navierstokes/flatplate/lam_flatplate.cfg b/TestCases/navierstokes/flatplate/lam_flatplate.cfg index bc7dcec9836..226aadbd7e3 100644 --- a/TestCases/navierstokes/flatplate/lam_flatplate.cfg +++ b/TestCases/navierstokes/flatplate/lam_flatplate.cfg @@ -69,7 +69,6 @@ MG_DAMP_PROLONGATION= 0.75 % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% % CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES MUSCL_FLOW= YES SLOPE_LIMITER_FLOW= NONE TIME_DISCRE_FLOW= EULER_IMPLICIT diff --git a/TestCases/navierstokes/flatplate/lam_flatplate_unst.cfg b/TestCases/navierstokes/flatplate/lam_flatplate_unst.cfg index c49db9abb89..6c8028fb76c 100644 --- a/TestCases/navierstokes/flatplate/lam_flatplate_unst.cfg +++ b/TestCases/navierstokes/flatplate/lam_flatplate_unst.cfg @@ -69,7 +69,6 @@ LINEAR_SOLVER_ITER= 2 % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% % CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES MUSCL_FLOW= YES SLOPE_LIMITER_FLOW= NONE diff --git a/TestCases/navierstokes/periodic2D/config.cfg b/TestCases/navierstokes/periodic2D/config.cfg index 1048e311b86..7e8184b9835 100644 --- a/TestCases/navierstokes/periodic2D/config.cfg +++ b/TestCases/navierstokes/periodic2D/config.cfg @@ -55,7 +55,6 @@ LINEAR_SOLVER_ITER= 4 % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% % CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES MUSCL_FLOW= YES SLOPE_LIMITER_FLOW= VENKATAKRISHNAN_WANG VENKAT_LIMITER_COEFF= 0.05 diff --git a/TestCases/parallel_regression.py b/TestCases/parallel_regression.py index 582c8bd53d8..12ddf26db06 100644 --- a/TestCases/parallel_regression.py +++ b/TestCases/parallel_regression.py @@ -232,7 +232,7 @@ def main(): flatplate_udobj.cfg_dir = "user_defined_functions" flatplate_udobj.cfg_file = "lam_flatplate.cfg" flatplate_udobj.test_iter = 20 - flatplate_udobj.test_vals = [-6.653803, -1.181430, -0.794886, 0.000611, -3.6850e-04, 7.3568e-04, -1.1042e-03, 5.9669e+02, 2.9980e+02, 2.9689e+02, 2.1492e+01, 5.6399e-01, 2.2787] + flatplate_udobj.test_vals = [-6.653802, -1.181430, -0.794887, 0.000611, -0.000369, 0.000736, -0.001104, 596.690000, 299.800000, 296.890000, 21.492000, 0.563990, 2.278700] flatplate_udobj.su2_exec = "mpirun -n 2 SU2_CFD" flatplate_udobj.timeout = 1600 flatplate_udobj.tol = 0.00001 @@ -276,7 +276,7 @@ def main(): poiseuille_profile.cfg_dir = "navierstokes/poiseuille" poiseuille_profile.cfg_file = "profile_poiseuille.cfg" poiseuille_profile.test_iter = 10 - poiseuille_profile.test_vals = [-12.492859, -7.672756, -0.000000, 2.085796] + poiseuille_profile.test_vals = [-12.492870, -7.672494, -0.000000, 2.085796] poiseuille_profile.test_vals_aarch64 = [-12.492934, -7.673424, -0.000000, 2.085796] poiseuille_profile.su2_exec = "parallel_computation.py -f" poiseuille_profile.timeout = 1600 @@ -358,7 +358,7 @@ def main(): turb_oneram6_nk.cfg_dir = "rans/oneram6" turb_oneram6_nk.cfg_file = "turb_ONERAM6_nk.cfg" turb_oneram6_nk.test_iter = 20 - turb_oneram6_nk.test_vals = [-4.892257, -4.514011, -11.432312, 0.221025, 0.045570, 2, -0.899459, 3.1384e+01] + turb_oneram6_nk.test_vals = [-4.892253, -4.514006, -11.432312, 0.221026, 0.045570, 2.000000, -0.899460, 31.384000] turb_oneram6_nk.su2_exec = "mpirun -n 2 SU2_CFD" turb_oneram6_nk.timeout = 600 turb_oneram6_nk.tol = 0.0001 @@ -380,7 +380,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 = [-11.456387, -12.800055, -5.865784, 1.049989, 0.019163, -1.838252, -38.694000] + turb_naca0012_sst.test_vals = [-11.456386, -12.800055, -5.865784, 1.049989, 0.019163, -1.838252, -38.694000] turb_naca0012_sst.su2_exec = "parallel_computation.py -f" turb_naca0012_sst.timeout = 3200 turb_naca0012_sst.tol = 0.00001 @@ -391,7 +391,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 = [-11.370785, -12.641676, -5.748419, 1.005233, 0.019017, -2.057144] + turb_naca0012_sst_sust.test_vals = [-11.370789, -12.641676, -5.748419, 1.005233, 0.019017, -2.057142] turb_naca0012_sst_sust.su2_exec = "parallel_computation.py -f" turb_naca0012_sst_sust.timeout = 3200 turb_naca0012_sst_sust.tol = 0.00001 @@ -462,7 +462,7 @@ def main(): axi_rans_air_nozzle.cfg_dir = "axisymmetric_rans/air_nozzle" axi_rans_air_nozzle.cfg_file = "air_nozzle.cfg" axi_rans_air_nozzle.test_iter = 10 - axi_rans_air_nozzle.test_vals = [-12.096377, -6.636625, -8.786639, -2.399099, -1938.200000] + axi_rans_air_nozzle.test_vals = [-12.096361, -6.636587, -8.786643, -2.399099, -1938.200000] axi_rans_air_nozzle.su2_exec = "mpirun -n 2 SU2_CFD" axi_rans_air_nozzle.timeout = 1600 axi_rans_air_nozzle.tol = 0.0001 @@ -842,7 +842,7 @@ def main(): contadj_ns_cylinder.cfg_dir = "cont_adj_navierstokes/cylinder" contadj_ns_cylinder.cfg_file = "lam_cylinder.cfg" contadj_ns_cylinder.test_iter = 20 - contadj_ns_cylinder.test_vals = [-3.651435, -9.113086, 2.056700, -0.000000] + contadj_ns_cylinder.test_vals = [-3.651430, -9.113079, 2.056700, -0.000000] contadj_ns_cylinder.su2_exec = "parallel_computation.py -f" contadj_ns_cylinder.timeout = 1600 contadj_ns_cylinder.tol = 0.00001 @@ -928,7 +928,7 @@ def main(): turb_naca0012_2c.cfg_dir = "rans_uq/naca0012" turb_naca0012_2c.cfg_file = "turb_NACA0012_uq_2c.cfg" turb_naca0012_2c.test_iter = 10 - turb_naca0012_2c.test_vals = [-5.483311, 0.968826, 0.303278, -0.113945] + turb_naca0012_2c.test_vals = [-5.483323, 0.968820, 0.304757, -0.113468] turb_naca0012_2c.test_vals_aarch64 = [-5.483337, 0.968818, 0.304518, -0.113538] turb_naca0012_2c.su2_exec = "parallel_computation.py -f" turb_naca0012_2c.timeout = 1600 @@ -951,7 +951,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.128788, 1.077306, 0.584228, -0.048152] + turb_naca0012_p1c1.test_vals = [-5.128867, 1.077141, 0.586532, -0.047632] turb_naca0012_p1c1.test_vals_aarch64 = [-5.129768, 1.077086, 0.585381, -0.047974] turb_naca0012_p1c1.su2_exec = "parallel_computation.py -f" turb_naca0012_p1c1.timeout = 1600 @@ -963,7 +963,7 @@ def main(): turb_naca0012_p1c2.cfg_dir = "rans_uq/naca0012" turb_naca0012_p1c2.cfg_file = "turb_NACA0012_uq_p1c2.cfg" turb_naca0012_p1c2.test_iter = 10 - turb_naca0012_p1c2.test_vals = [-5.554534, 0.943774, 0.400400, -0.095514] + turb_naca0012_p1c2.test_vals = [-5.554659, 0.943705, 0.399234, -0.095799] turb_naca0012_p1c2.test_vals_aarch64 = [-5.554700, 0.943679, 0.399796, -0.095762] turb_naca0012_p1c2.su2_exec = "parallel_computation.py -f" turb_naca0012_p1c2.timeout = 1600 @@ -991,7 +991,7 @@ def main(): hb_rans_preconditioning.cfg_dir = "harmonic_balance/hb_rans_preconditioning" hb_rans_preconditioning.cfg_file = "davis.cfg" hb_rans_preconditioning.test_iter = 25 - hb_rans_preconditioning.test_vals = [-1.902099, -5.949279, 0.007768, 0.128062] + hb_rans_preconditioning.test_vals = [-1.902098, -5.949275, 0.007768, 0.128061] hb_rans_preconditioning.su2_exec = "parallel_computation.py -f" hb_rans_preconditioning.timeout = 1600 hb_rans_preconditioning.tol = 0.00001 @@ -1056,7 +1056,7 @@ def main(): sine_gust.cfg_dir = "gust" sine_gust.cfg_file = "inv_gust_NACA0012.cfg" sine_gust.test_iter = 5 - sine_gust.test_vals = [-1.977520, 3.481804, -0.012378, -0.007388] + sine_gust.test_vals = [-1.977520, 3.481804, -0.012377, -0.007389] sine_gust.su2_exec = "parallel_computation.py -f" sine_gust.timeout = 1600 sine_gust.tol = 0.00001 @@ -1158,7 +1158,7 @@ def main(): Jones_tc_rst.cfg_dir = "turbomachinery/APU_turbocharger" Jones_tc_rst.cfg_file = "Jones_rst.cfg" Jones_tc_rst.test_iter = 5 - Jones_tc_rst.test_vals = [-4.625153, -1.568706, 33.994680, 10.181950] + Jones_tc_rst.test_vals = [-4.625155, -1.568708, 33.994680, 10.181950] Jones_tc_rst.su2_exec = "parallel_computation.py -f" Jones_tc_rst.timeout = 1600 Jones_tc_rst.new_output = False @@ -1170,7 +1170,7 @@ def main(): axial_stage2D.cfg_dir = "turbomachinery/axial_stage_2D" axial_stage2D.cfg_file = "Axial_stage2D.cfg" axial_stage2D.test_iter = 20 - axial_stage2D.test_vals = [-1.933143, 5.379977, 73.357940, 0.925863] + axial_stage2D.test_vals = [-1.933119, 5.365091, 73.354540, 0.925889] axial_stage2D.su2_exec = "parallel_computation.py -f" axial_stage2D.timeout = 1600 axial_stage2D.new_output = False @@ -1210,7 +1210,7 @@ def main(): uniform_flow.cfg_dir = "sliding_interface/uniform_flow" uniform_flow.cfg_file = "uniform_NN.cfg" uniform_flow.test_iter = 5 - uniform_flow.test_vals = [5.000000, 0.000000, -0.188747, -10.631534] #last 4 columns + uniform_flow.test_vals = [5.000000, 0.000000, -0.188747, -10.631538] uniform_flow.su2_exec = "parallel_computation.py -f" uniform_flow.timeout = 1600 uniform_flow.tol = 0.00001 @@ -1223,7 +1223,7 @@ def main(): channel_2D.cfg_dir = "sliding_interface/channel_2D" channel_2D.cfg_file = "channel_2D_WA.cfg" channel_2D.test_iter = 2 - channel_2D.test_vals = [2.000000, 0.000000, 0.398052, 0.352783, 0.405462] + channel_2D.test_vals = [2.000000, 0.000000, 0.398011, 0.352778, 0.405461] channel_2D.test_vals_aarch64 = [2.000000, 0.000000, 0.398036, 0.352783, 0.405462] channel_2D.su2_exec = "parallel_computation.py -f" channel_2D.timeout = 100 @@ -1264,7 +1264,7 @@ def main(): rotating_cylinders.cfg_dir = "sliding_interface/rotating_cylinders" rotating_cylinders.cfg_file = "rot_cylinders_WA.cfg" rotating_cylinders.test_iter = 3 - rotating_cylinders.test_vals = [3.000000, 0.000000, 0.777575, 1.134804, 1.224136] #last 4 columns + rotating_cylinders.test_vals = [3.000000, 0.000000, 0.777572, 1.134804, 1.224137] rotating_cylinders.su2_exec = "parallel_computation.py -f" rotating_cylinders.timeout = 1600 rotating_cylinders.tol = 0.00001 @@ -1277,7 +1277,7 @@ def main(): supersonic_vortex_shedding.cfg_dir = "sliding_interface/supersonic_vortex_shedding" supersonic_vortex_shedding.cfg_file = "sup_vor_shed_WA.cfg" supersonic_vortex_shedding.test_iter = 5 - supersonic_vortex_shedding.test_vals = [5.000000, 0.000000, 1.214356, 1.663914] #last 4 columns + supersonic_vortex_shedding.test_vals = [5.000000, 0.000000, 1.214350, 1.663914] supersonic_vortex_shedding.su2_exec = "parallel_computation.py -f" supersonic_vortex_shedding.timeout = 1600 supersonic_vortex_shedding.tol = 0.00001 @@ -1290,7 +1290,7 @@ def main(): bars_SST_2D.cfg_dir = "sliding_interface/bars_SST_2D" bars_SST_2D.cfg_file = "bars.cfg" bars_SST_2D.test_iter = 13 - bars_SST_2D.test_vals = [13.000000, -0.619686, -1.564594] + bars_SST_2D.test_vals = [13.000000, -0.619686, -1.564595] bars_SST_2D.su2_exec = "SU2_CFD" bars_SST_2D.timeout = 1600 bars_SST_2D.tol = 0.00001 @@ -1465,7 +1465,7 @@ def main(): sp_pinArray_cht_2d_dp_hf.cfg_dir = "incomp_navierstokes/streamwise_periodic/chtPinArray_2d" sp_pinArray_cht_2d_dp_hf.cfg_file = "configMaster.cfg" sp_pinArray_cht_2d_dp_hf.test_iter = 100 - sp_pinArray_cht_2d_dp_hf.test_vals = [0.246951, -0.811811, -0.962123, -0.753322, 208.023676, 350.000000, -0.000000, -0.753320, 0.753320] + sp_pinArray_cht_2d_dp_hf.test_vals = [0.246954, -0.811809, -0.962122, -0.753321, 208.023676, 350.000000, -0.000000, -0.753320, 0.753320] sp_pinArray_cht_2d_dp_hf.su2_exec = "mpirun -n 2 SU2_CFD" sp_pinArray_cht_2d_dp_hf.timeout = 1600 sp_pinArray_cht_2d_dp_hf.tol = 0.00001 @@ -1505,7 +1505,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 = [-11.456387, -12.800055, -5.865784, 1.049989, 0.019163, -1.838252, -38.694000] + pywrapper_turb_naca0012_sst.test_vals = [-11.456386, -12.800055, -5.865784, 1.049989, 0.019163, -1.838252, -38.694000] pywrapper_turb_naca0012_sst.su2_exec = "mpirun -np 2 SU2_CFD.py --parallel -f" pywrapper_turb_naca0012_sst.timeout = 3200 pywrapper_turb_naca0012_sst.tol = 0.00001 @@ -1553,7 +1553,7 @@ def main(): pywrapper_unsteadyCHT.cfg_dir = "py_wrapper/flatPlate_unsteady_CHT" pywrapper_unsteadyCHT.cfg_file = "unsteady_CHT_FlatPlate_Conf.cfg" pywrapper_unsteadyCHT.test_iter = 5 - pywrapper_unsteadyCHT.test_vals = [-1.614167, 2.245726, -0.001240, 0.175715] + pywrapper_unsteadyCHT.test_vals = [-1.614167, 2.245726, -0.001241, 0.175715] pywrapper_unsteadyCHT.su2_exec = "mpirun -np 2 python launch_unsteady_CHT_FlatPlate.py --parallel -f" pywrapper_unsteadyCHT.timeout = 1600 pywrapper_unsteadyCHT.tol = 0.00001 @@ -1664,7 +1664,7 @@ def main(): species2_primitiveVenturi_mixingmodel_viscosity.cfg_dir = "species_transport/venturi_primitive_3species" species2_primitiveVenturi_mixingmodel_viscosity.cfg_file = "species2_primitiveVenturi_mixingmodel_viscosity.cfg" species2_primitiveVenturi_mixingmodel_viscosity.test_iter = 50 - species2_primitiveVenturi_mixingmodel_viscosity.test_vals = [-5.157644, -4.362599, -4.283857, -5.463199, 0.081487, -5.318959, 5.000000, -2.004281, 5.000000, -5.185921, 5.000000, -1.245597, 2.408977, 0.958168, 0.605425, 0.845384] + species2_primitiveVenturi_mixingmodel_viscosity.test_vals = [-5.157644, -4.362599, -4.283856, -5.463200, 0.081487, -5.318960, 5.000000, -2.004278, 5.000000, -5.185927, 5.000000, -1.245596, 2.408977, 0.958168, 0.605425, 0.845383] species2_primitiveVenturi_mixingmodel_viscosity.su2_exec = "mpirun -n 2 SU2_CFD" species2_primitiveVenturi_mixingmodel_viscosity.timeout = 1600 species2_primitiveVenturi_mixingmodel_viscosity.new_output = True diff --git a/TestCases/parallel_regression_AD.py b/TestCases/parallel_regression_AD.py index c41ad81385c..70a68ff25b9 100644 --- a/TestCases/parallel_regression_AD.py +++ b/TestCases/parallel_regression_AD.py @@ -334,7 +334,7 @@ def main(): discadj_fsi2.cfg_dir = "disc_adj_fsi/Airfoil_2d" discadj_fsi2.cfg_file = "config.cfg" discadj_fsi2.test_iter = 8 - discadj_fsi2.test_vals = [-3.479486, 0.122216, -1.303589, 7.5407e-09, 2.3244] + discadj_fsi2.test_vals = [-3.479484, 0.127482, -1.303589, 7.5407e-09, 2.3244] discadj_fsi2.test_vals_aarch64 = [-3.479505, 0.127953, -1.303589, 7.5407e-09, 2.3244] discadj_fsi2.su2_exec = "mpirun -n 2 SU2_CFD_AD" discadj_fsi2.timeout = 1600 diff --git a/TestCases/py_wrapper/translating_NACA0012/config.cfg b/TestCases/py_wrapper/translating_NACA0012/config.cfg index 92425cb0c8e..22b9f55cf83 100644 --- a/TestCases/py_wrapper/translating_NACA0012/config.cfg +++ b/TestCases/py_wrapper/translating_NACA0012/config.cfg @@ -50,7 +50,6 @@ VENKAT_LIMITER_COEFF= 0.1 % SOLUTION ACCELERATION % -USE_VECTORIZATION= YES CFL_NUMBER= 1e3 CFL_ADAPT= NO % diff --git a/TestCases/rans/naca0012/turb_NACA0012_sa.cfg b/TestCases/rans/naca0012/turb_NACA0012_sa.cfg index 3bb0ed08c1c..050baad4de2 100644 --- a/TestCases/rans/naca0012/turb_NACA0012_sa.cfg +++ b/TestCases/rans/naca0012/turb_NACA0012_sa.cfg @@ -145,7 +145,6 @@ MG_DAMP_PROLONGATION= 0.75 % Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC, % TURKEL_PREC, MSW) CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES % % Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER) MUSCL_FLOW= YES diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst.cfg index 0438a50246a..b50c913304c 100644 --- a/TestCases/rans/naca0012/turb_NACA0012_sst.cfg +++ b/TestCases/rans/naca0012/turb_NACA0012_sst.cfg @@ -147,7 +147,6 @@ MG_DAMP_PROLONGATION= 0.75 % Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC, % TURKEL_PREC, MSW) CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES % % Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER) MUSCL_FLOW= YES diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst_1994-KLm.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst_1994-KLm.cfg index f4428ef25d1..2359d135979 100644 --- a/TestCases/rans/naca0012/turb_NACA0012_sst_1994-KLm.cfg +++ b/TestCases/rans/naca0012/turb_NACA0012_sst_1994-KLm.cfg @@ -65,7 +65,6 @@ LINEAR_SOLVER_ITER= 20 % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% % CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES MUSCL_FLOW= YES SLOPE_LIMITER_FLOW= NONE JST_SENSOR_COEFF= ( 0.5, 0.02 ) diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst_2003-Vm.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst_2003-Vm.cfg index 563bc6cd898..499db596789 100644 --- a/TestCases/rans/naca0012/turb_NACA0012_sst_2003-Vm.cfg +++ b/TestCases/rans/naca0012/turb_NACA0012_sst_2003-Vm.cfg @@ -65,7 +65,6 @@ LINEAR_SOLVER_ITER= 20 % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% % CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES MUSCL_FLOW= YES SLOPE_LIMITER_FLOW= NONE JST_SENSOR_COEFF= ( 0.5, 0.02 ) diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst_2003m.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst_2003m.cfg index faa62eacc01..da762b74974 100644 --- a/TestCases/rans/naca0012/turb_NACA0012_sst_2003m.cfg +++ b/TestCases/rans/naca0012/turb_NACA0012_sst_2003m.cfg @@ -62,7 +62,6 @@ LINEAR_SOLVER_ITER= 20 % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% % CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES MUSCL_FLOW= YES SLOPE_LIMITER_FLOW= NONE TIME_DISCRE_FLOW= EULER_IMPLICIT diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst_expliciteuler.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst_expliciteuler.cfg index cd2ec0c94b3..dac10deebea 100644 --- a/TestCases/rans/naca0012/turb_NACA0012_sst_expliciteuler.cfg +++ b/TestCases/rans/naca0012/turb_NACA0012_sst_expliciteuler.cfg @@ -43,7 +43,6 @@ ITER= 99999 % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES MUSCL_FLOW= YES SLOPE_LIMITER_FLOW= NONE TIME_DISCRE_FLOW= EULER_EXPLICIT diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst_fixedvalues.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst_fixedvalues.cfg index dd472d25429..ceef756604b 100644 --- a/TestCases/rans/naca0012/turb_NACA0012_sst_fixedvalues.cfg +++ b/TestCases/rans/naca0012/turb_NACA0012_sst_fixedvalues.cfg @@ -56,7 +56,6 @@ LINEAR_SOLVER_ITER= 20 % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES MUSCL_FLOW= YES SLOPE_LIMITER_FLOW= NONE TIME_DISCRE_FLOW= EULER_IMPLICIT diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst_sust.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst_sust.cfg index f094448ba92..54fccbf622a 100644 --- a/TestCases/rans/naca0012/turb_NACA0012_sst_sust.cfg +++ b/TestCases/rans/naca0012/turb_NACA0012_sst_sust.cfg @@ -119,7 +119,6 @@ LINEAR_SOLVER_ITER= 20 % Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC, % TURKEL_PREC, MSW) CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES % % Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER) MUSCL_FLOW= YES diff --git a/TestCases/rans/oneram6/turb_ONERAM6_nk.cfg b/TestCases/rans/oneram6/turb_ONERAM6_nk.cfg index b6d15feffb1..e42f83fd2ed 100644 --- a/TestCases/rans/oneram6/turb_ONERAM6_nk.cfg +++ b/TestCases/rans/oneram6/turb_ONERAM6_nk.cfg @@ -38,7 +38,6 @@ CFL_ADAPT_PARAM= ( 0.8, 1.1, 5, 1000 ) % no point using NK with low CFL values % It is important (more than usual) to have similar magnitude variables REF_DIMENSIONALIZATION= FREESTREAM_VEL_EQ_MACH -USE_VECTORIZATION= YES % compile the code for AVX and mixed precision or it will be slow! TIME_DISCRE_FLOW= EULER_IMPLICIT % what else LINEAR_SOLVER_PREC= ILU % or LU_SGS diff --git a/TestCases/rans_uq/naca0012/turb_NACA0012_uq_1c.cfg b/TestCases/rans_uq/naca0012/turb_NACA0012_uq_1c.cfg index a2d924bd29b..da8ba37a00d 100644 --- a/TestCases/rans_uq/naca0012/turb_NACA0012_uq_1c.cfg +++ b/TestCases/rans_uq/naca0012/turb_NACA0012_uq_1c.cfg @@ -158,7 +158,6 @@ MG_DAMP_PROLONGATION= 0.75 % Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC, % TURKEL_PREC, MSW) CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES % % Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER) MUSCL_FLOW= YES diff --git a/TestCases/serial_regression.py b/TestCases/serial_regression.py index 7bcf0eb1b04..1ad947e880d 100644 --- a/TestCases/serial_regression.py +++ b/TestCases/serial_regression.py @@ -253,7 +253,7 @@ def main(): poiseuille_profile.cfg_dir = "navierstokes/poiseuille" poiseuille_profile.cfg_file = "profile_poiseuille.cfg" poiseuille_profile.test_iter = 10 - poiseuille_profile.test_vals = [-12.494715, -7.711824, -0.000000, 2.085796] #last 4 columns + poiseuille_profile.test_vals = [-12.494757, -7.713330, -0.000000, 2.085796] #last 4 columns poiseuille_profile.test_vals_aarch64 = [-12.494695, -7.711914, -0.000000, 2.085796] #last 4 columns poiseuille_profile.su2_exec = "SU2_CFD" poiseuille_profile.new_output = True @@ -325,7 +325,7 @@ def main(): turb_wallfunction_flatplate_sst.cfg_dir = "wallfunctions/flatplate/compressible_SST" turb_wallfunction_flatplate_sst.cfg_file = "turb_SST_flatplate.cfg" turb_wallfunction_flatplate_sst.test_iter = 10 - turb_wallfunction_flatplate_sst.test_vals = [-4.229955, -1.930560, -1.998477, 1.250383, -1.635663, 1.462396, 10.000000, -2.151959, 0.072873, 0.002514] #last 10 columns + turb_wallfunction_flatplate_sst.test_vals = [-4.229955, -1.930560, -1.998477, 1.250383, -1.635663, 1.462396, 10, -2.151959, 0.072873, 0.002514] #last 10 columns turb_wallfunction_flatplate_sst.su2_exec = "SU2_CFD" turb_wallfunction_flatplate_sst.timeout = 1600 turb_wallfunction_flatplate_sst.tol = 0.00001 @@ -906,7 +906,7 @@ def main(): turb_naca0012_2c.cfg_dir = "rans_uq/naca0012" turb_naca0012_2c.cfg_file = "turb_NACA0012_uq_2c.cfg" turb_naca0012_2c.test_iter = 10 - turb_naca0012_2c.test_vals = [-5.483374, 0.968842, 0.255857, -0.109404] #last 4 columns + turb_naca0012_2c.test_vals = [-5.483297, 0.968867, 0.255779, -0.109417] #last 4 columns turb_naca0012_2c.test_vals_aarch64 = [-5.483375, 0.968843, 0.255870, -0.109398] #last 4 columns turb_naca0012_2c.su2_exec = "SU2_CFD" turb_naca0012_2c.new_output = True @@ -931,7 +931,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.127531, 1.077321, 0.543822, -0.018663] #last 4 columns + turb_naca0012_p1c1.test_vals = [-5.127470, 1.077450, 0.544081, -0.018573] #last 4 columns turb_naca0012_p1c1.test_vals_aarch64 = [-5.127470, 1.077487, 0.543977, -0.018609] #last 4 columns turb_naca0012_p1c1.su2_exec = "SU2_CFD" turb_naca0012_p1c1.new_output = True @@ -944,7 +944,7 @@ def main(): turb_naca0012_p1c2.cfg_dir = "rans_uq/naca0012" turb_naca0012_p1c2.cfg_file = "turb_NACA0012_uq_p1c2.cfg" turb_naca0012_p1c2.test_iter = 10 - turb_naca0012_p1c2.test_vals = [-5.554491, 0.943648, 0.320568, -0.091089] #last 4 columns + turb_naca0012_p1c2.test_vals = [-5.554427, 0.943668, 0.320426, -0.091140] #last 4 columns turb_naca0012_p1c2.test_vals_aarch64 = [-5.554486, 0.943644, 0.320343, -0.091167] #last 4 columns turb_naca0012_p1c2.su2_exec = "SU2_CFD" turb_naca0012_p1c2.new_output = True @@ -1173,7 +1173,7 @@ def main(): axial_stage2D.cfg_dir = "turbomachinery/axial_stage_2D" axial_stage2D.cfg_file = "Axial_stage2D.cfg" axial_stage2D.test_iter = 20 - axial_stage2D.test_vals = [-1.933153, 5.379657, 73.357940, 0.925870] #last 4 columns + axial_stage2D.test_vals = [-1.933127, 5.364763, 73.354550, 0.925896] #last 4 columns axial_stage2D.su2_exec = "SU2_CFD" axial_stage2D.new_output = False axial_stage2D.timeout = 1600 @@ -1222,7 +1222,7 @@ def main(): uniform_flow.cfg_dir = "sliding_interface/uniform_flow" uniform_flow.cfg_file = "uniform_NN.cfg" uniform_flow.test_iter = 2 - uniform_flow.test_vals = [2.000000, 0.000000, -0.205134, -13.250406] #last 4 columns + uniform_flow.test_vals = [2.000000, 0.000000, -0.205134, -13.251542] #last 4 columns uniform_flow.test_vals_aarch64 = [2.000000, 0.000000, -0.205134, -13.253776] #last 4 columns uniform_flow.su2_exec = "SU2_CFD" uniform_flow.timeout = 1600 @@ -1236,7 +1236,7 @@ def main(): channel_2D.cfg_dir = "sliding_interface/channel_2D" channel_2D.cfg_file = "channel_2D_WA.cfg" channel_2D.test_iter = 2 - channel_2D.test_vals = [2.000000, 0.000000, 0.398005, 0.352783, 0.405475] #last 5 columns + channel_2D.test_vals = [2.000000, 0.000000, 0.397995, 0.352789, 0.405474] #last 5 columns channel_2D.test_vals_aarch64 = [2.000000, 0.000000, 0.397977, 0.352782, 0.405474] #last 5 columns channel_2D.su2_exec = "SU2_CFD" channel_2D.timeout = 100 @@ -1426,7 +1426,7 @@ def main(): dyn_fsi.cfg_dir = "fea_fsi/dyn_fsi" dyn_fsi.cfg_file = "config.cfg" dyn_fsi.test_iter = 4 - dyn_fsi.test_vals = [-4.355809, -4.060588, 0.000000, 85.000000] #last 4 columns + dyn_fsi.test_vals = [-4.355809, -4.060588, 0.000000, 87.000000] #last 4 columns dyn_fsi.test_vals_aarch64 = [-4.355809, -4.060588, 0.000000, 86.000000] #last 4 columns dyn_fsi.multizone = True dyn_fsi.unsteady = True diff --git a/TestCases/user_defined_functions/lam_flatplate.cfg b/TestCases/user_defined_functions/lam_flatplate.cfg index 3eb230d4ce2..fadc6404de5 100644 --- a/TestCases/user_defined_functions/lam_flatplate.cfg +++ b/TestCases/user_defined_functions/lam_flatplate.cfg @@ -104,7 +104,6 @@ LINEAR_SOLVER_ITER= 5 % -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------% % CONV_NUM_METHOD_FLOW= ROE -USE_VECTORIZATION= YES MUSCL_FLOW= YES SLOPE_LIMITER_FLOW= NONE diff --git a/TestCases/vandv.py b/TestCases/vandv.py index 57a05136000..cd72c0b8ae8 100644 --- a/TestCases/vandv.py +++ b/TestCases/vandv.py @@ -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.023889, -10.035602, -5.142403, -0.002535, 0.002809] + flatplate_sst1994m.test_vals = [-13.022725, -10.035608, -5.142378, -0.002535, 0.002809] flatplate_sst1994m.test_vals_aarch64 = [-13.022223, -10.035608, -5.142357, -0.002535, 0.002809] 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.075256, -10.325338, -5.558893, 0.024576, 0.004967] + bump_sst1994m.test_vals = [-13.033896, -10.325323, -5.558745, 0.024576, 0.004967] bump_sst1994m.test_vals_aarch64 = [-13.057600, -10.325331, -5.558653, 0.024576, 0.004967] test_list.append(bump_sst1994m) diff --git a/TestCases/vandv/rans/30p30n/config.cfg b/TestCases/vandv/rans/30p30n/config.cfg index 067f93c3fb1..b3dbee99ca2 100644 --- a/TestCases/vandv/rans/30p30n/config.cfg +++ b/TestCases/vandv/rans/30p30n/config.cfg @@ -57,7 +57,6 @@ MUSCL_TURB= NO % % ---------- PSEUDOTIME INTEGRATION / CONVERGENCE ACCELERATION ---------- % % -USE_VECTORIZATION= YES TIME_DISCRE_FLOW= EULER_IMPLICIT TIME_DISCRE_TURB= EULER_IMPLICIT % diff --git a/TestCases/vandv/rans/swbli/config_sa.cfg b/TestCases/vandv/rans/swbli/config_sa.cfg index 6d4638468dc..93ad793255c 100644 --- a/TestCases/vandv/rans/swbli/config_sa.cfg +++ b/TestCases/vandv/rans/swbli/config_sa.cfg @@ -63,7 +63,6 @@ MUSCL_TURB= NO % % ---------- PSEUDOTIME INTEGRATION / CONVERGENCE ACCELERATION ---------- % % -USE_VECTORIZATION= YES TIME_DISCRE_FLOW= EULER_IMPLICIT TIME_DISCRE_TURB= EULER_IMPLICIT % diff --git a/TestCases/vandv/rans/swbli/config_sst.cfg b/TestCases/vandv/rans/swbli/config_sst.cfg index 5ed0a98448e..f2af3e18ec0 100644 --- a/TestCases/vandv/rans/swbli/config_sst.cfg +++ b/TestCases/vandv/rans/swbli/config_sst.cfg @@ -65,7 +65,6 @@ MUSCL_TURB= NO % % ---------- PSEUDOTIME INTEGRATION / CONVERGENCE ACCELERATION ---------- % % -USE_VECTORIZATION= YES TIME_DISCRE_FLOW= EULER_IMPLICIT TIME_DISCRE_TURB= EULER_IMPLICIT % diff --git a/UnitTests/Common/vectorization.cpp b/UnitTests/Common/vectorization.cpp index 6aa538d25f6..ac35ccd0bc0 100644 --- a/UnitTests/Common/vectorization.cpp +++ b/UnitTests/Common/vectorization.cpp @@ -41,7 +41,7 @@ template struct logicFun { static T f(T A, T B, T C, T D, U x, U y) { // (B < A || B >= C) && ... - return max(B < A, B >= min(C,-D)) * (abs(A) == abs(x)) * (abs(C) != abs(y)); + return fmax(B < A, B >= fmin(C,-D)) * (abs(A) == abs(x)) * (abs(C) != abs(y)); } }; diff --git a/config_template.cfg b/config_template.cfg index 6611c9c445a..7c1e7c2f440 100644 --- a/config_template.cfg +++ b/config_template.cfg @@ -1207,7 +1207,8 @@ USE_ACCURATE_FLUX_JACOBIANS= NO % % Use the vectorized version of the selected numerical method (available for JST family and Roe). % SU2 should be compiled for an AVX or AVX512 architecture for best performance. -USE_VECTORIZATION= NO +% NOTE: Currently vectorization always used for schemes that support it. +USE_VECTORIZATION= YES % % Entropy fix coefficient (0.0 implies no entropy fixing, 1.0 implies scalar % artificial dissipation) diff --git a/externals/codi b/externals/codi index b576224d5ea..96ac78ec5bc 160000 --- a/externals/codi +++ b/externals/codi @@ -1 +1 @@ -Subproject commit b576224d5ea686fb8385b7ba6b5df0743d2be8aa +Subproject commit 96ac78ec5bcc5ac25b785e79b16ed76fca22d736 diff --git a/meson_scripts/init.py b/meson_scripts/init.py index 67e90709e54..3326cf113f7 100755 --- a/meson_scripts/init.py +++ b/meson_scripts/init.py @@ -44,7 +44,7 @@ def init_submodules(method = 'auto'): # This information of the modules is used if projects was not cloned using git # The sha tag must be maintained manually to point to the correct commit - sha_version_codi = 'b576224d5ea686fb8385b7ba6b5df0743d2be8aa' + sha_version_codi = '96ac78ec5bcc5ac25b785e79b16ed76fca22d736' github_repo_codi = 'https://github.com/scicompkl/CoDiPack' sha_version_medi = '6aef76912e7099c4f08c9705848797ca9e8070da' github_repo_medi = 'https://github.com/SciCompKL/MeDiPack'