From 6c533816c587a9234616c40aa42074e48c0f12c1 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Sat, 10 Sep 2022 22:01:07 +0100 Subject: [PATCH 01/35] use the non physical counter in SIMD numerics --- .../numerics_simd/flow/convection/common.hpp | 32 +++++++++++++-- .../numerics_simd/flow/convection/roe.hpp | 2 +- SU2_CFD/include/solvers/CEulerSolver.hpp | 2 - .../include/solvers/CFVMFlowSolverBase.hpp | 39 +++++++++++++++++- .../include/solvers/CFVMFlowSolverBase.inl | 22 +++++----- SU2_CFD/include/solvers/CIncEulerSolver.hpp | 2 - SU2_CFD/include/variables/CFlowVariable.hpp | 17 ++++++++ SU2_CFD/src/solvers/CEulerSolver.cpp | 40 +++---------------- SU2_CFD/src/solvers/CIncEulerSolver.cpp | 40 +++---------------- SU2_GEO/src/SU2_GEO.cpp | 2 + 10 files changed, 107 insertions(+), 91 deletions(-) diff --git a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp index b0f5634bce3..99b6455755c 100644 --- a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp +++ b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp @@ -93,15 +93,15 @@ 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] 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 +131,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 = max(min(V.i.pressure(), V.j.pressure()) < 0.0, + min(V.i.density(), V.j.density()) < 0.0); + /*--- Test the sign of the Roe-averaged speed of sound. ---*/ + const Double R = sqrt(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 = max(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; } diff --git a/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp b/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp index cc544fe5b98..ad803dad548 100644 --- a/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp +++ b/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp @@ -116,7 +116,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. ---*/ diff --git a/SU2_CFD/include/solvers/CEulerSolver.hpp b/SU2_CFD/include/solvers/CEulerSolver.hpp index e1aaf1602ff..c7b1a191cc1 100644 --- a/SU2_CFD/include/solvers/CEulerSolver.hpp +++ b/SU2_CFD/include/solvers/CEulerSolver.hpp @@ -43,8 +43,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/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..cf4beab882b 100644 --- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl +++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl @@ -1575,11 +1575,17 @@ 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) { 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 +1610,14 @@ void CFVMFlowSolverBase::EdgeFluxResidual(const CGeometry *geometry, } else { edgeNumerics->ComputeFlux(iEdge, *config, *geometry, *nodes, UpdateType::COLORING, mask, LinSysRes, Jacobian); } + 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..91259166f73 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) { + /*--- 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 4aa56d8281e..fcc3ae12f89 100644 --- a/SU2_CFD/src/solvers/CEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CEulerSolver.cpp @@ -148,7 +148,9 @@ CEulerSolver::CEulerSolver(CGeometry *geometry, CConfig *config, Allocate(*config); - NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0; + if (iMesh == MESH_0) { + nodes->NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0; + } /*--- MPI + OpenMP initialization. ---*/ @@ -1816,13 +1818,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 +1877,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..62e075f082e 100644 --- a/SU2_CFD/src/solvers/CIncEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CIncEulerSolver.cpp @@ -149,7 +149,9 @@ CIncEulerSolver::CIncEulerSolver(CGeometry *geometry, CConfig *config, unsigned Allocate(*config); - NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0; + if (iMesh == MESH_0) { + nodes->NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0; + } /*--- MPI + OpenMP initialization. ---*/ @@ -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; From 2edca53f700fe6b26c7f8ece7a71ebba8b2bb06f Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Sun, 11 Sep 2022 11:45:53 +0100 Subject: [PATCH 02/35] automatically use vectorized Roe when possible --- SU2_CFD/include/solvers/CFVMFlowSolverBase.inl | 11 +++++------ SU2_CFD/src/solvers/CEulerSolver.cpp | 10 ++++++---- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl index cf4beab882b..61c2354f886 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); @@ -1577,6 +1571,11 @@ void CFVMFlowSolverBase::EdgeFluxResidual(const CGeometry *geometry, const CSolver* const* solvers, 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); } diff --git a/SU2_CFD/src/solvers/CEulerSolver.cpp b/SU2_CFD/src/solvers/CEulerSolver.cpp index fcc3ae12f89..09f9e6a8cd2 100644 --- a/SU2_CFD/src/solvers/CEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CEulerSolver.cpp @@ -1665,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)); From 5f0e319d407861f2a73745a50b5c4bf054c69e78 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Sun, 11 Sep 2022 14:19:19 +0100 Subject: [PATCH 03/35] fix build and some doxygen cleanup --- Common/doc/docmain.hpp | 27 +++++++++---------- .../numerics/elasticity/CFEAElasticity.hpp | 2 +- .../elasticity/CFEALinearElasticity.hpp | 4 +-- .../elasticity/CFEANonlinearElasticity.hpp | 2 +- .../numerics/elasticity/nonlinear_models.hpp | 8 +++--- .../flow/convection/centered.hpp | 5 ++++ .../numerics_simd/flow/convection/roe.hpp | 2 ++ .../flow/diffusion/viscous_fluxes.hpp | 4 +++ SU2_CFD/include/solvers/CEulerSolver.hpp | 1 + SU2_CFD/include/solvers/CFEASolver.hpp | 1 + SU2_CFD/include/solvers/CFEASolverBase.hpp | 5 ++++ SU2_CFD/include/variables/CFlowVariable.hpp | 2 +- 12 files changed, 40 insertions(+), 23 deletions(-) diff --git a/Common/doc/docmain.hpp b/Common/doc/docmain.hpp index c7a937d8180..b0b35b8e48d 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/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/flow/convection/centered.hpp b/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp index 365314ca1a1..665362545ea 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 @@ -265,6 +267,7 @@ class CJSTScheme : public CCenteredBase,Decorator> { /*! * \class CJSTmatScheme + * \ingroup ConvDiscr * \brief JST scheme with matrix dissipation. */ template @@ -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/roe.hpp b/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp index ad803dad548..cda595e6d46 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. @@ -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/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 c7b1a191cc1..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 */ 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/variables/CFlowVariable.hpp b/SU2_CFD/include/variables/CFlowVariable.hpp index 91259166f73..760157ea1a5 100644 --- a/SU2_CFD/include/variables/CFlowVariable.hpp +++ b/SU2_CFD/include/variables/CFlowVariable.hpp @@ -75,7 +75,7 @@ class CFlowVariable : public CVariable { */ template inline T UpdateNonPhysicalEdgeCounter(unsigned long iEdge, const T& isNonPhys) const { - if (isNonPhys) { + if (isNonPhys > 0) { /*--- Force 1st order for this edge for at least 20 iterations. ---*/ NonPhysicalEdgeCounter[iEdge] = 21; } From c84150908ca263a5d6de18c6dbff34944c92351d Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Sun, 11 Sep 2022 15:04:56 +0100 Subject: [PATCH 04/35] proper fix --- Common/doc/docmain.hpp | 2 +- SU2_CFD/include/numerics_simd/CNumericsSIMD.hpp | 1 + SU2_CFD/include/numerics_simd/flow/convection/common.hpp | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Common/doc/docmain.hpp b/Common/doc/docmain.hpp index b0b35b8e48d..1e0382e6215 100644 --- a/Common/doc/docmain.hpp +++ b/Common/doc/docmain.hpp @@ -73,7 +73,7 @@ */ /*! - * \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. */ 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/common.hpp b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp index 99b6455755c..8206f333855 100644 --- a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp +++ b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp @@ -132,8 +132,8 @@ FORCEINLINE CPair reconstructPrimitives(Int iEdge, Int iPoint, Int break; } /*--- Detect a non-physical reconstruction based on negative pressure or density. ---*/ - const Double neg_p_or_rho = max(min(V.i.pressure(), V.j.pressure()) < 0.0, - min(V.i.density(), V.j.density()) < 0.0); + const Double neg_p_or_rho = VecExpr::max(VecExpr::min(V.i.pressure(), V.j.pressure()) < 0.0, + VecExpr::min(V.i.density(), V.j.density()) < 0.0); /*--- Test the sign of the Roe-averaged speed of sound. ---*/ const Double R = sqrt(V.j.density() / V.i.density()); /*--- Delay dividing by R+1 until comparing enthalpy and velocity magnitude. ---*/ @@ -147,7 +147,7 @@ FORCEINLINE CPair reconstructPrimitives(Int iEdge, Int iPoint, Int 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 = max(neg_p_or_rho, neg_sound_speed); + Double bad_recon = VecExpr::max(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]); From 3f6af89048cd812209bd259df473464b6a767731 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Sun, 11 Sep 2022 18:57:31 +0100 Subject: [PATCH 05/35] this is what "using namespace std" does --- .../include/linear_algebra/vector_expressions.hpp | 4 ++-- .../parallelization/special_vectorization.hpp | 4 ++-- .../numerics_simd/flow/convection/centered.hpp | 8 ++++---- .../numerics_simd/flow/convection/common.hpp | 14 +++++++------- .../include/numerics_simd/flow/convection/roe.hpp | 2 +- .../numerics_simd/flow/diffusion/common.hpp | 6 +++--- SU2_CFD/include/variables/CFlowVariable.hpp | 2 +- UnitTests/Common/vectorization.cpp | 2 +- 8 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Common/include/linear_algebra/vector_expressions.hpp b/Common/include/linear_algebra/vector_expressions.hpp index 46ff1d947d8..b1929e6860d 100644 --- a/Common/include/linear_algebra/vector_expressions.hpp +++ b/Common/include/linear_algebra/vector_expressions.hpp @@ -167,8 +167,8 @@ FORCEINLINE auto FUN(decay_t u, const CVecExpr& v) \ #define max_impl(a,b) a=, 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/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp b/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp index 665362545ea..ab8487275c8 100644 --- a/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp +++ b/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp @@ -245,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. ---*/ @@ -324,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()); @@ -360,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. ---*/ diff --git a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp index 8206f333855..e88aeec91af 100644 --- a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp +++ b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp @@ -132,8 +132,8 @@ FORCEINLINE CPair reconstructPrimitives(Int iEdge, Int iPoint, Int break; } /*--- Detect a non-physical reconstruction based on negative pressure or density. ---*/ - const Double neg_p_or_rho = VecExpr::max(VecExpr::min(V.i.pressure(), V.j.pressure()) < 0.0, - VecExpr::min(V.i.density(), V.j.density()) < 0.0); + 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(V.j.density() / V.i.density()); /*--- Delay dividing by R+1 until comparing enthalpy and velocity magnitude. ---*/ @@ -147,7 +147,7 @@ FORCEINLINE CPair reconstructPrimitives(Int iEdge, Int iPoint, Int 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 = VecExpr::max(neg_p_or_rho, neg_sound_speed); + 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]); @@ -371,21 +371,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 cda595e6d46..f3e3defc844 100644 --- a/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp +++ b/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp @@ -158,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. ---*/ diff --git a/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp b/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp index e7be7c72be7..308545780cd 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; diff --git a/SU2_CFD/include/variables/CFlowVariable.hpp b/SU2_CFD/include/variables/CFlowVariable.hpp index 760157ea1a5..501b0fd4a1f 100644 --- a/SU2_CFD/include/variables/CFlowVariable.hpp +++ b/SU2_CFD/include/variables/CFlowVariable.hpp @@ -75,7 +75,7 @@ class CFlowVariable : public CVariable { */ template inline T UpdateNonPhysicalEdgeCounter(unsigned long iEdge, const T& isNonPhys) const { - if (isNonPhys > 0) { + if (isNonPhys != 0) { /*--- Force 1st order for this edge for at least 20 iterations. ---*/ NonPhysicalEdgeCounter[iEdge] = 21; } 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)); } }; From 004b67bd1922ecb9670b59c0805d2767aa65efc4 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Sun, 11 Sep 2022 21:20:30 +0100 Subject: [PATCH 06/35] fix leak --- SU2_CFD/src/solvers/CEulerSolver.cpp | 8 ++++---- SU2_CFD/src/solvers/CIncEulerSolver.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/SU2_CFD/src/solvers/CEulerSolver.cpp b/SU2_CFD/src/solvers/CEulerSolver.cpp index 09f9e6a8cd2..4446856f1d7 100644 --- a/SU2_CFD/src/solvers/CEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CEulerSolver.cpp @@ -148,10 +148,6 @@ CEulerSolver::CEulerSolver(CGeometry *geometry, CConfig *config, Allocate(*config); - if (iMesh == MESH_0) { - nodes->NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0; - } - /*--- MPI + OpenMP initialization. ---*/ HybridParallelInitialization(*config, *geometry); @@ -284,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; diff --git a/SU2_CFD/src/solvers/CIncEulerSolver.cpp b/SU2_CFD/src/solvers/CIncEulerSolver.cpp index 62e075f082e..face27fefa0 100644 --- a/SU2_CFD/src/solvers/CIncEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CIncEulerSolver.cpp @@ -149,10 +149,6 @@ CIncEulerSolver::CIncEulerSolver(CGeometry *geometry, CConfig *config, unsigned Allocate(*config); - if (iMesh == MESH_0) { - nodes->NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0; - } - /*--- MPI + OpenMP initialization. ---*/ HybridParallelInitialization(*config, *geometry); @@ -218,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); From b8515c7b04fa4aad1409a3a87d623946ac8d5096 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Sun, 11 Sep 2022 23:00:11 +0100 Subject: [PATCH 07/35] MG segfault --- SU2_CFD/include/solvers/CFVMFlowSolverBase.inl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl index 61c2354f886..1e84b6efae5 100644 --- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl +++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl @@ -1609,8 +1609,9 @@ void CFVMFlowSolverBase::EdgeFluxResidual(const CGeometry *geometry, } else { edgeNumerics->ComputeFlux(iEdge, *config, *geometry, *nodes, UpdateType::COLORING, mask, LinSysRes, Jacobian); } - for (auto j = 0ul; j < Double::Size; ++j) { - counterLocal += (nodes->NonPhysicalEdgeCounter[iEdge[j]] > 0); + if (MGLevel == MESH_0) { + for (auto j = 0ul; j < Double::Size; ++j) + counterLocal += (nodes->NonPhysicalEdgeCounter[iEdge[j]] > 0); } } END_SU2_OMP_FOR From 41aa1d8150a96de0fe2879dc4719b9822e5a9d47 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 12 Sep 2022 11:54:21 +0100 Subject: [PATCH 08/35] prevent nans with wall functions --- SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp b/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp index 308545780cd..9484315d6ab 100644 --- a/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp +++ b/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp @@ -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) From ac58780f518550adae4f29cba66223931f6a7e3c Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 12 Sep 2022 12:31:03 +0100 Subject: [PATCH 09/35] update hybrid regression --- TestCases/hybrid_regression.py | 54 +++++++++++++++++----------------- 1 file changed, 27 insertions(+), 27 deletions(-) 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) From c808e8d4eefd19eda9ccb83eda3cd8d434bec704 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 12 Sep 2022 12:41:00 +0100 Subject: [PATCH 10/35] update parallel regression --- TestCases/parallel_regression.py | 46 ++++++++++++++++---------------- 1 file changed, 23 insertions(+), 23 deletions(-) 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 From b063be569630b82bfc9b7410b53ad82b666d0062 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Sep 2022 17:32:12 +0000 Subject: [PATCH 11/35] Bump actions/upload-release-asset from 1.0.1 to 1.0.2 Bumps [actions/upload-release-asset](https://github.com/actions/upload-release-asset) from 1.0.1 to 1.0.2. - [Release notes](https://github.com/actions/upload-release-asset/releases) - [Commits](https://github.com/actions/upload-release-asset/compare/v1.0.1...v1.0.2) --- updated-dependencies: - dependency-name: actions/upload-release-asset dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/release-management.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-management.yml b/.github/workflows/release-management.yml index dfe9a0f0436..d07819a6d4e 100644 --- a/.github/workflows/release-management.yml +++ b/.github/workflows/release-management.yml @@ -57,7 +57,7 @@ jobs: # Upload binaries as assets to draft release - name: Upload Release Asset id: upload-release-asset - uses: actions/upload-release-asset@v1.0.1 + uses: actions/upload-release-asset@v1.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: From 108699a3fde6422564834726e328cc44947e1353 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Sep 2022 17:32:15 +0000 Subject: [PATCH 12/35] Bump actions/cache from 1 to 3 Bumps [actions/cache](https://github.com/actions/cache) from 1 to 3. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v1...v3) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release-management.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-management.yml b/.github/workflows/release-management.yml index dfe9a0f0436..d23fcae7e32 100644 --- a/.github/workflows/release-management.yml +++ b/.github/workflows/release-management.yml @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cache Object Files - uses: actions/cache@v1 + uses: actions/cache@v3 with: path: ccache key: ${{ matrix.os_bin }}-${{ github.sha }} From 3538194fb416e78443a2a7b7be27f6c3bef67784 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Sep 2022 17:32:18 +0000 Subject: [PATCH 13/35] Bump actions/upload-artifact from 1 to 3 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 1 to 3. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v1...v3) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/release-management.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-management.yml b/.github/workflows/release-management.yml index dfe9a0f0436..11584433e8a 100644 --- a/.github/workflows/release-management.yml +++ b/.github/workflows/release-management.yml @@ -44,7 +44,7 @@ jobs: zip -r ../${{matrix.os_bin}}.zip bin/* # Uploads binaries as artifacts (just as a backup) - name: Upload Binaries - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v3 with: name: ${{matrix.os_bin}} path: ${{matrix.os_bin}}.zip From 11664973d1c4d64f13e598e55f0def92c79d8879 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 12 Sep 2022 18:33:51 +0100 Subject: [PATCH 14/35] serial and v&v tests --- TestCases/serial_regression.py | 20 ++++++++++---------- TestCases/vandv.py | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/TestCases/serial_regression.py b/TestCases/serial_regression.py index 7bcf0eb1b04..3e07db5b812 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 @@ -336,7 +336,7 @@ def main(): turb_wallfunction_flatplate_sa.cfg_dir = "wallfunctions/flatplate/compressible_SA" turb_wallfunction_flatplate_sa.cfg_file = "turb_SA_flatplate.cfg" turb_wallfunction_flatplate_sa.test_iter = 10 - turb_wallfunction_flatplate_sa.test_vals = [-4.436048, -2.044706, -2.114644, 0.979771, -5.393729, 10, -1.589465, 0.069744, 0.002686] #last 9 columns + turb_wallfunction_flatplate_sa.test_vals = [-4.684321, -2.249602, -2.229407, 0.779062, -5.306220, 10, -1.984965, 0.069232, 0.002496] #last 9 columns turb_wallfunction_flatplate_sa.su2_exec = "SU2_CFD" turb_wallfunction_flatplate_sa.timeout = 1600 turb_wallfunction_flatplate_sa.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/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) From 6a680ecbeffc4789155f0e603a44a1e887f1037a Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Wed, 14 Sep 2022 21:45:47 +0100 Subject: [PATCH 15/35] work around some forward mode issues --- SU2_CFD/include/numerics_simd/flow/convection/common.hpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp index e88aeec91af..8795638f690 100644 --- a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp +++ b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp @@ -132,10 +132,12 @@ FORCEINLINE CPair reconstructPrimitives(Int iEdge, Int iPoint, Int break; } /*--- 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); + /*--- Some weird issues with forward AD if this is all done in one line. ---*/ + const Double neg_p = fmin(V.i.pressure(), V.j.pressure()) < 0.0; + const Double neg_rho = fmin(V.i.density(), V.j.density()) < 0.0; + const Double neg_p_or_rho = fmax(neg_p, neg_rho); /*--- Test the sign of the Roe-averaged speed of sound. ---*/ - const Double R = sqrt(V.j.density() / V.i.density()); + 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; From 4357145b41ef1097c6daa1c615767ca3c1e82228 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Sun, 18 Sep 2022 21:24:46 +0100 Subject: [PATCH 16/35] regression updates and SIMD size 1 for reverse AD --- Common/include/parallelization/vectorization.hpp | 12 +++++++++++- SU2_CFD/include/numerics_simd/CNumericsSIMD.cpp | 5 ++++- .../chtPinArray_2d/of_grad_findiff.csv.ref | 2 +- TestCases/serial_regression.py | 2 +- 4 files changed, 17 insertions(+), 4 deletions(-) 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_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/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/serial_regression.py b/TestCases/serial_regression.py index 3e07db5b812..1ad947e880d 100644 --- a/TestCases/serial_regression.py +++ b/TestCases/serial_regression.py @@ -336,7 +336,7 @@ def main(): turb_wallfunction_flatplate_sa.cfg_dir = "wallfunctions/flatplate/compressible_SA" turb_wallfunction_flatplate_sa.cfg_file = "turb_SA_flatplate.cfg" turb_wallfunction_flatplate_sa.test_iter = 10 - turb_wallfunction_flatplate_sa.test_vals = [-4.684321, -2.249602, -2.229407, 0.779062, -5.306220, 10, -1.984965, 0.069232, 0.002496] #last 9 columns + turb_wallfunction_flatplate_sa.test_vals = [-4.436048, -2.044706, -2.114644, 0.979771, -5.393729, 10, -1.589465, 0.069744, 0.002686] #last 9 columns turb_wallfunction_flatplate_sa.su2_exec = "SU2_CFD" turb_wallfunction_flatplate_sa.timeout = 1600 turb_wallfunction_flatplate_sa.tol = 0.00001 From 37b4f582eb14a444559879ceb7aefb9c927ad2a0 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Mon, 19 Sep 2022 12:39:15 +0100 Subject: [PATCH 17/35] updates after simd size of 1 for reverse AD --- .../naca0012/of_grad_cd_disc.dat.ref | 74 +++++++++---------- .../disc_adj_fsi/dyn_fsi/grad_dv.opt.ref | 16 ++-- .../multiple_ffd/naca0012/of_grad_cd.dat.ref | 4 +- TestCases/parallel_regression_AD.py | 2 +- 4 files changed, 48 insertions(+), 48 deletions(-) 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/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/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 From 87f451ecfd8c191a9b4d91e446134dfd3ac5c747 Mon Sep 17 00:00:00 2001 From: Pedro Gomes <38071223+pcarruscag@users.noreply.github.com> Date: Mon, 19 Sep 2022 12:41:17 +0100 Subject: [PATCH 18/35] Update SU2_CFD/include/numerics_simd/flow/convection/common.hpp Co-authored-by: Nijso --- SU2_CFD/include/numerics_simd/flow/convection/common.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp index 8795638f690..b0e130f36e8 100644 --- a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp +++ b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp @@ -95,6 +95,7 @@ FORCEINLINE void musclEdgeLimited(Int iPoint, * \brief Retrieve primitive variables for points i/j, reconstructing them if needed. * \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. From 9a7c03811dd60668b3ac9b5c3bb483f75d1b7e83 Mon Sep 17 00:00:00 2001 From: Nijso Date: Tue, 20 Sep 2022 16:22:44 +0200 Subject: [PATCH 19/35] FFD box fix for nonplanar faces (#1742) * FFD box uses supporting point in the middle of the face to avoid ambiguous definition of nonplanar faces * implementation of github review comments (formatting and deleting memory) * Apply suggestions from code review Co-authored-by: Pedro Gomes <38071223+pcarruscag@users.noreply.github.com> --- Common/src/grid_movement/CFreeFormDefBox.cpp | 136 +++++++++---------- 1 file changed, 61 insertions(+), 75 deletions(-) diff --git a/Common/src/grid_movement/CFreeFormDefBox.cpp b/Common/src/grid_movement/CFreeFormDefBox.cpp index 3ec628aa45b..9a817df8ea3 100644 --- a/Common/src/grid_movement/CFreeFormDefBox.cpp +++ b/Common/src/grid_movement/CFreeFormDefBox.cpp @@ -102,19 +102,34 @@ CFreeFormDefBox::CFreeFormDefBox(const unsigned short Degree[], unsigned short B CFreeFormDefBox::~CFreeFormDefBox(void) { unsigned short iOrder, jOrder, kOrder, iCornerPoints, iDim; - for (iOrder = 0; iOrder < lOrder; iOrder++) - for (jOrder = 0; jOrder < mOrder; jOrder++) + for (iOrder = 0; iOrder < lOrder; iOrder++) { + for (jOrder = 0; jOrder < mOrder; jOrder++) { for (kOrder = 0; kOrder < nOrder; kOrder++) { delete [] Coord_Control_Points[iOrder][jOrder][kOrder]; delete [] ParCoord_Control_Points[iOrder][jOrder][kOrder]; delete [] Coord_Control_Points_Copy[iOrder][jOrder][kOrder]; + if (Coord_SupportCP != nullptr) delete [] Coord_SupportCP[iOrder][jOrder][kOrder]; } + delete [] Coord_Control_Points[iOrder][jOrder]; + delete [] ParCoord_Control_Points[iOrder][jOrder]; + delete [] Coord_Control_Points_Copy[iOrder][jOrder]; + if (Coord_SupportCP != nullptr) delete [] Coord_SupportCP[iOrder][jOrder]; + } + delete [] Coord_Control_Points[iOrder]; + delete [] ParCoord_Control_Points[iOrder]; + delete [] Coord_Control_Points_Copy[iOrder]; + if (Coord_SupportCP != nullptr) delete [] Coord_SupportCP[iOrder]; + } + delete [] Coord_Control_Points; delete [] ParCoord_Control_Points; delete [] Coord_Control_Points_Copy; + delete [] Coord_SupportCP; delete [] ParamCoord; + delete [] ParamCoord_; delete [] cart_coord; + delete [] cart_coord_; delete [] Gradient; for (iCornerPoints = 0; iCornerPoints < nCornerPoints; iCornerPoints++) @@ -969,26 +984,37 @@ su2double *CFreeFormDefBox::GetParametricCoord_Iterative(unsigned long iPoint, s } bool CFreeFormDefBox::GetPointFFD(CGeometry *geometry, CConfig *config, unsigned long iPoint) const { - su2double Coord[3] = {0.0, 0.0, 0.0}; - unsigned short iVar, jVar, iDim; - su2double X_0, Y_0, Z_0, Xbar, Ybar, Zbar; - bool Inside = false; + bool Inside = true; bool cylindrical = (config->GetFFD_CoordSystem() == CYLINDRICAL); bool spherical = (config->GetFFD_CoordSystem() == SPHERICAL); bool polar = (config->GetFFD_CoordSystem() == POLAR); - unsigned short Index[5][7] = { - {0, 1, 2, 5, 0, 1, 2}, - {0, 2, 7, 5, 0, 2, 7}, - {0, 2, 3, 7, 0, 2, 3}, - {0, 5, 7, 4, 0, 5, 7}, - {2, 7, 5, 6, 2, 7, 5}}; + /*--- indices of the FFD box. Note that the front face is labelled 0,1,2,3 and the back face is 4,5,6,7 ---*/ + + unsigned short Index[6][5] = { + {0,1,2,3,0}, // front side + {1,5,6,2,1}, // right side + {2,6,7,3,2}, // top side + {3,7,4,0,3}, // left side + {4,5,1,0,4}, // bottom side + {4,7,6,5,4}}; // back side + + /*--- The current approach is to subdivide each of the 6 faces of the hexahedral FFD box into 4 triangles + by defining a supporting middle point. This allows nonplanar FFD boxes. + Note that the definition of the FFD box is as follows: the FFD box is a 6-sided die and we are looking at the side "1". + The opposite side is side "6". + If we are looking at side "1", we define the nodes counterclockwise. + If we are looking at side "6", we define the face clockwise ---*/ + unsigned short nDim = geometry->GetnDim(); - for (iDim = 0; iDim < nDim; iDim++) + su2double Coord[3] = {0.0, 0.0, 0.0}; + for (unsigned short iDim = 0; iDim < nDim; iDim++) Coord[iDim] = geometry->nodes->GetCoord(iPoint, iDim); + su2double X_0, Y_0, Z_0, Xbar, Ybar, Zbar; + if (cylindrical) { X_0 = config->GetFFD_Axis(0); Y_0 = config->GetFFD_Axis(1); Z_0 = config->GetFFD_Axis(2); @@ -1013,78 +1039,38 @@ bool CFreeFormDefBox::GetPointFFD(CGeometry *geometry, CConfig *config, unsigned } - /*--- 1st tetrahedron {V0, V1, V2, V5} - 2nd tetrahedron {V0, V2, V7, V5} - 3th tetrahedron {V0, V2, V3, V7} - 4th tetrahedron {V0, V5, V7, V4} - 5th tetrahedron {V2, V7, V5, V6} ---*/ + /*--- loop over the faces of the FFD box ---*/ + + for (unsigned short iVar = 0; iVar < 6; iVar++) { + + su2double P[3] = {0.0, 0.0, 0.0}; + + /*--- every face needs an interpolated middle point for the triangles ---*/ + + for (int p = 0; p < 4; p++){ + P[0] += 0.25*Coord_Corner_Points[Index[iVar][p]][0]; + P[1] += 0.25*Coord_Corner_Points[Index[iVar][p]][1]; + P[2] += 0.25*Coord_Corner_Points[Index[iVar][p]][2]; + } + + /*--- loop over the 4 triangles making up the FFD box. The sign is equal for all distances ---*/ - for (iVar = 0; iVar < 5; iVar++) { - Inside = true; - for (jVar = 0; jVar < 4; jVar++) { + for (unsigned short jVar = 0; jVar < 4; jVar++) { su2double Distance_Point = geometry->Point2Plane_Distance(Coord, + Coord_Corner_Points[Index[iVar][jVar]], Coord_Corner_Points[Index[iVar][jVar+1]], - Coord_Corner_Points[Index[iVar][jVar+2]], - Coord_Corner_Points[Index[iVar][jVar+3]]); - - su2double Distance_Vertex = geometry->Point2Plane_Distance(Coord_Corner_Points[Index[iVar][jVar]], - Coord_Corner_Points[Index[iVar][jVar+1]], - Coord_Corner_Points[Index[iVar][jVar+2]], - Coord_Corner_Points[Index[iVar][jVar+3]]); - if (Distance_Point*Distance_Vertex < 0.0) Inside = false; + P); + if (Distance_Point < 0) { + Inside = false; + return Inside; + } } - if (Inside) break; } return Inside; } -void CFreeFormDefBox::SetDeformationZone(CGeometry *geometry, CConfig *config, unsigned short iFFDBox) const { - su2double *Coord; - unsigned short iMarker, iVar, jVar; - unsigned long iVertex, iPoint; - bool Inside = false; - - unsigned short Index[5][7] = { - {0, 1, 2, 5, 0, 1, 2}, - {0, 2, 7, 5, 0, 2, 7}, - {0, 2, 3, 7, 0, 2, 3}, - {0, 5, 7, 4, 0, 5, 7}, - {2, 7, 5, 6, 2, 7, 5}}; - - for (iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { - if (config->GetMarker_All_DV(iMarker) == YES) { - for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { - iPoint = geometry->vertex[iMarker][iVertex]->GetNode(); - - Coord = geometry->nodes->GetCoord(iPoint); - - /*--- 1st tetrahedron {V0, V1, V2, V5} - 2nd tetrahedron {V0, V2, V7, V5} - 3th tetrahedron {V0, V2, V3, V7} - 4th tetrahedron {V0, V5, V7, V4} - 5th tetrahedron {V2, V7, V5, V6} ---*/ - - for (iVar = 0; iVar < 5; iVar++) { - Inside = true; - for (jVar = 0; jVar < 4; jVar++) { - su2double Distance_Point = geometry->Point2Plane_Distance(Coord, - Coord_Corner_Points[Index[iVar][jVar+1]], - Coord_Corner_Points[Index[iVar][jVar+2]], - Coord_Corner_Points[Index[iVar][jVar+3]]); - su2double Distance_Vertex = geometry->Point2Plane_Distance(Coord_Corner_Points[Index[iVar][jVar]], - Coord_Corner_Points[Index[iVar][jVar+1]], - Coord_Corner_Points[Index[iVar][jVar+2]], - Coord_Corner_Points[Index[iVar][jVar+3]]); - if (Distance_Point*Distance_Vertex < 0.0) Inside = false; - } - if (Inside) break; - } - } - } - } -} su2double CFreeFormDefBox::GetDerivative1(su2double *uvw, unsigned short val_diff, unsigned short *ijk, unsigned short *lmn) const { From 735abb66aaf858f2231009a083cf70248d0d0436 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Tue, 20 Sep 2022 19:35:19 +0100 Subject: [PATCH 20/35] add groups for a bunch of stuff --- Common/doc/docmain.hpp | 106 +++++++++++++++++- Common/include/adt/CADTBaseClass.hpp | 1 + Common/include/adt/CADTComparePointClass.hpp | 1 + Common/include/adt/CADTElemClass.hpp | 1 + Common/include/adt/CADTNodeClass.hpp | 1 + Common/include/adt/CADTPointsOnlyClass.hpp | 1 + Common/include/adt/CBBoxTargetClass.hpp | 1 + Common/include/containers/C2DContainer.hpp | 5 + .../containers/CFastFindAndEraseQueue.hpp | 1 + Common/include/containers/CFileReaderLUT.hpp | 4 + Common/include/containers/CLookUpTable.hpp | 4 + Common/include/containers/CTrapezoidalMap.hpp | 1 + Common/include/containers/CVertexMap.hpp | 1 + .../containers/container_decorators.hpp | 5 + Common/include/geometry/elements/CElement.hpp | 14 ++- .../geometry/elements/CElementProperty.hpp | 2 + .../geometry/elements/CGaussVariable.hpp | 1 + Common/include/graph_coloring_structure.hpp | 13 +-- .../interface_interpolation/CInterpolator.hpp | 1 + .../CInterpolatorFactory.hpp | 9 +- .../CIsoparametric.hpp | 1 + .../interface_interpolation/CMirror.hpp | 1 + .../CNearestNeighbor.hpp | 3 +- .../CRadialBasisFunction.hpp | 1 + .../interface_interpolation/CSlidingMesh.hpp | 1 + .../linear_algebra/CMatrixVectorProduct.hpp | 2 + .../include/linear_algebra/CPastixWrapper.hpp | 1 + .../linear_algebra/CPreconditioner.hpp | 5 + Common/include/linear_algebra/CSysMatrix.hpp | 5 + Common/include/linear_algebra/CSysSolve.hpp | 1 + Common/include/linear_algebra/CSysVector.hpp | 1 + .../include/linear_algebra/blas_structure.hpp | 6 +- .../linear_algebra/vector_expressions.hpp | 1 + .../include/parallelization/vectorization.hpp | 3 + Common/include/toolboxes/C1DInterpolation.hpp | 20 +++- .../toolboxes/CQuasiNewtonInvLeastSquares.hpp | 1 + Common/include/toolboxes/CSquareMatrixCM.hpp | 1 + Common/include/toolboxes/CSymmetricMatrix.hpp | 1 + Common/include/toolboxes/geometry_toolbox.hpp | 4 +- Common/include/toolboxes/graph_toolbox.hpp | 5 + Common/include/toolboxes/ndflattener.hpp | 5 + Common/src/graph_coloring_structure.cpp | 6 - Common/src/linear_algebra/blas_structure.cpp | 3 - .../drivers/CDiscAdjMultizoneDriver.hpp | 4 + .../drivers/CDiscAdjSinglezoneDriver.hpp | 1 + SU2_CFD/include/drivers/CDriver.hpp | 4 + SU2_CFD/include/drivers/CDummyDriver.hpp | 1 + SU2_CFD/include/drivers/CMultizoneDriver.hpp | 1 + SU2_CFD/include/drivers/CSinglezoneDriver.hpp | 1 + .../gradients/computeGradientsGreenGauss.hpp | 2 + .../computeGradientsLeastSquares.hpp | 10 +- .../integration/CFEM_DG_Integration.hpp | 1 + SU2_CFD/include/integration/CIntegration.hpp | 1 + .../integration/CIntegrationFactory.hpp | 8 +- .../integration/CMultiGridIntegration.hpp | 1 + .../integration/CNewtonIntegration.hpp | 2 + .../integration/CSingleGridIntegration.hpp | 1 + .../integration/CStructuralIntegration.hpp | 1 + SU2_CFD/include/interfaces/CInterface.hpp | 1 + .../cfd/CConservativeVarsInterface.hpp | 4 + .../interfaces/cfd/CMixingPlaneInterface.hpp | 4 + .../interfaces/cfd/CSlidingInterface.hpp | 4 + .../cht/CConjugateHeatInterface.hpp | 4 + .../fsi/CDiscAdjFlowTractionInterface.hpp | 5 + .../fsi/CDisplacementsInterface.hpp | 4 + .../interfaces/fsi/CFlowTractionInterface.hpp | 4 + .../include/iteration/CAdjFluidIteration.hpp | 1 + .../iteration/CDiscAdjFEAIteration.hpp | 1 + .../iteration/CDiscAdjFluidIteration.hpp | 1 + .../iteration/CDiscAdjHeatIteration.hpp | 1 + SU2_CFD/include/iteration/CFEAIteration.hpp | 1 + .../include/iteration/CFEMFluidIteration.hpp | 1 + SU2_CFD/include/iteration/CFluidIteration.hpp | 1 + SU2_CFD/include/iteration/CHeatIteration.hpp | 1 + SU2_CFD/include/iteration/CIteration.hpp | 1 + .../include/iteration/CIterationFactory.hpp | 4 + SU2_CFD/include/iteration/CTurboIteration.hpp | 1 + SU2_CFD/include/limiters/CLimiterDetails.hpp | 7 ++ SU2_CFD/include/limiters/computeLimiters.hpp | 1 + .../include/limiters/computeLimiters_impl.hpp | 1 + .../numerics/turbulent/turb_sources.hpp | 40 ++++--- SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp | 2 +- .../include/solvers/CDiscAdjMeshSolver.hpp | 2 +- SU2_CFD/include/solvers/CDiscAdjSolver.hpp | 2 +- .../variables/CDiscAdjFEABoundVariable.hpp | 2 +- .../variables/CDiscAdjMeshBoundVariable.hpp | 4 + .../include/variables/CDiscAdjVariable.hpp | 2 +- SU2_CFD/include/variables/CVariable.hpp | 1 + SU2_CFD/src/iteration/CFluidIteration.cpp | 2 +- 89 files changed, 334 insertions(+), 66 deletions(-) diff --git a/Common/doc/docmain.hpp b/Common/doc/docmain.hpp index 1e0382e6215..a0a538d1bca 100644 --- a/Common/doc/docmain.hpp +++ b/Common/doc/docmain.hpp @@ -31,10 +31,22 @@ * 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 - * open-source license. - * - * The following technical documentation describes the structure and details of the source code for developers. + * flows, and many others. SU2 is released under an open-source license. + * + * The following technical documentation describes the structure and details of the source code for developers. + * Each module groups classes and functions dedicated to major areas or features of the code base. + * This documentation helps awnsering questions such as + * - What are the major classes of the code (architecture)? + * - How do those classes interact with each other? + * - What low-level functionality is already implemented that can be re-used? + * + * Given the use of polymorphism in SU2, it is usefull to start studying each module from the base class + * (which usually has a generic name), this will show the inheritance diagram for that family. Moreover, + * many important functions (defining the interactions between families) are implemented at the base level, + * the "call graph" of a function will show these interactions (derived classes only specialize certain details). + * Alternatively, "caller graphs" can be used to navigate to the larger classes that use smaller ones, and + * thus navigate the architecture from the bottom up (note that this will also be more effective if done + * for base classes). */ /*! @@ -88,3 +100,89 @@ * \defgroup Elasticity_Equations Solving the elasticity equations * \brief Group of classes to solve solid deformation problems. */ + +/*! + * \defgroup Interfaces Multiphysics interfaces + * \brief Classes for data transfer and interpolation across interfaces between zones. + */ + +/*! + * \defgroup Drivers Iterative solution strategy + * \brief Group of classes which define the iterative process used to converge + * the equations (fluid, turbulence, elasticity, FSI, CHT, etc.). + * In general, "Driver" classes use "Iteration" classes to advance one inner + * iteration, in turn "Iteration" classes use "Integration" classes to perform + * space and time integration. The latter use mostly the "Solvers". + */ + +/*! + * \defgroup Variable Storing solution variables + * \brief Classes used to store and access the solution variables of all types of problems. + */ + +/*! + * \defgroup DiscAdj Discrete Adjoint + * \brief Classes and functions used to solve discrete adjoint equations. + */ + +/*! + * \defgroup SpLinSys Sparse linear systems + * \brief Classes and function to represent and solve large distributed sparse linear systems. + */ + +/*! + * \defgroup FvmAlgos General FVM algorithms + * \brief Common algorithms used in FVM implementations. + */ + +/*! + * \defgroup FemAlgos General FEM algorithms + * \brief Common algorithms used in FEM implementations. + */ + +/*! + * \defgroup Toolboxes Utility classes and functions + * \brief Several classes and functions that implement common operations. + */ + +/*! + * \defgroup GeometryToolbox Geometry toolbox + * \brief Common geometry operations. + * \ingroup Toolboxes + */ + +/*! + * \defgroup Containers Data containers + * \brief Container classes (vectors, matrices, ND-arrays, etc.). + * \ingroup Toolboxes + */ + +/*! + * \defgroup LookUpInterp Look up and interpolation + * \brief Data look up and interpolation. + * \ingroup Toolboxes + */ + +/*! + * \defgroup ADT Alternating Digital Tree + * \brief Tree-based searches (minimum distance, containment, etc.). + * \ingroup Toolboxes + */ + +/*! + * \defgroup BLAS Dense linear algebra + * \brief Linear algebra functions and classes. + * \ingroup Toolboxes + */ + +/*! + * \defgroup Graph Graph operations + * \brief Classes to represent graphs and functions to manipulate them (coloring, etc.). + * \ingroup Toolboxes + */ + +/*! + * \defgroup SIMD Vectorization (SIMD) + * \brief Classes for explicit (done by the programmer) vectorization (SIMD) of computations. + * \ingroup Toolboxes + */ \ No newline at end of file diff --git a/Common/include/adt/CADTBaseClass.hpp b/Common/include/adt/CADTBaseClass.hpp index 845f9741807..92f7977a748 100644 --- a/Common/include/adt/CADTBaseClass.hpp +++ b/Common/include/adt/CADTBaseClass.hpp @@ -38,6 +38,7 @@ using namespace std; /*! * \class CADTBaseClass + * \ingroup ADT * \brief Base class for storing an ADT in an arbitrary number of dimensions. * \author E. van der Weide */ diff --git a/Common/include/adt/CADTComparePointClass.hpp b/Common/include/adt/CADTComparePointClass.hpp index 03e899092c0..f1b5ffc1662 100644 --- a/Common/include/adt/CADTComparePointClass.hpp +++ b/Common/include/adt/CADTComparePointClass.hpp @@ -30,6 +30,7 @@ /*! * \class CADTComparePointClass + * \ingroup ADT * \brief Functor, used for the sorting of the points when building an ADT. * \author E. van der Weide */ diff --git a/Common/include/adt/CADTElemClass.hpp b/Common/include/adt/CADTElemClass.hpp index 9870eafffe6..8fbb97b8696 100644 --- a/Common/include/adt/CADTElemClass.hpp +++ b/Common/include/adt/CADTElemClass.hpp @@ -33,6 +33,7 @@ /*! * \class CADTElemClass + * \ingroup ADT * \brief Class for storing an ADT of (linear) elements in an arbitrary number of dimensions. * \author E. van der Weide * \version 7.4.0 "Blackbird" diff --git a/Common/include/adt/CADTNodeClass.hpp b/Common/include/adt/CADTNodeClass.hpp index 66b08c4e65f..c6f5a565628 100644 --- a/Common/include/adt/CADTNodeClass.hpp +++ b/Common/include/adt/CADTNodeClass.hpp @@ -30,6 +30,7 @@ /*! * \class CADTNodeClass + * \ingroup ADT * \brief Class for storing the information needed in a node of an ADT. * \author E. van der Weide */ diff --git a/Common/include/adt/CADTPointsOnlyClass.hpp b/Common/include/adt/CADTPointsOnlyClass.hpp index 7e93f8b322e..7d73582b6a5 100644 --- a/Common/include/adt/CADTPointsOnlyClass.hpp +++ b/Common/include/adt/CADTPointsOnlyClass.hpp @@ -30,6 +30,7 @@ /*! * \class CADTPointsOnlyClass + * \ingroup ADT * \brief Class for storing an ADT of only points in an arbitrary number of dimensions. * \author E. van der Weide */ diff --git a/Common/include/adt/CBBoxTargetClass.hpp b/Common/include/adt/CBBoxTargetClass.hpp index 6a08e8e60a5..27d539b0660 100644 --- a/Common/include/adt/CBBoxTargetClass.hpp +++ b/Common/include/adt/CBBoxTargetClass.hpp @@ -31,6 +31,7 @@ /*! * \class CBBoxTargetClass + * \ingroup ADT * \brief Class for storing the information of a possible bounding box candidate during a minimum distance search. * \author E. van der Weide diff --git a/Common/include/containers/C2DContainer.hpp b/Common/include/containers/C2DContainer.hpp index c1d5657bf94..5ad79a52d70 100644 --- a/Common/include/containers/C2DContainer.hpp +++ b/Common/include/containers/C2DContainer.hpp @@ -34,6 +34,9 @@ #include #include +/// \addtogroup Containers +/// @{ + /*! * \enum StorageType * \brief Supported ways to flatten a matrix into an array. @@ -635,3 +638,5 @@ using su2activematrix = su2matrix; using su2passivevector = su2vector; using su2passivematrix = su2matrix; + +/// @} \ No newline at end of file diff --git a/Common/include/containers/CFastFindAndEraseQueue.hpp b/Common/include/containers/CFastFindAndEraseQueue.hpp index 98e6f157db2..d021fe62bc7 100644 --- a/Common/include/containers/CFastFindAndEraseQueue.hpp +++ b/Common/include/containers/CFastFindAndEraseQueue.hpp @@ -35,6 +35,7 @@ /*! * \class CFastFindAndEraseQueue + * \ingroup Containers * \brief A queue-type container (push back, pop front), but with * fast deletion of arbitrary items (possibly in the middle). * \param[in] ItemType_ - Type of the stored items. diff --git a/Common/include/containers/CFileReaderLUT.hpp b/Common/include/containers/CFileReaderLUT.hpp index 37853e7bcf4..e7498142554 100644 --- a/Common/include/containers/CFileReaderLUT.hpp +++ b/Common/include/containers/CFileReaderLUT.hpp @@ -34,6 +34,10 @@ #include "../../../Common/include/linear_algebra/blas_structure.hpp" #include "../../../Common/include/toolboxes/CSquareMatrixCM.hpp" +/*! + * \brief File reader for look up tables. + * \ingroup LookUpInterp + */ class CFileReaderLUT { protected: int rank; diff --git a/Common/include/containers/CLookUpTable.hpp b/Common/include/containers/CLookUpTable.hpp index 9592e962cb4..ecb59c97aa1 100644 --- a/Common/include/containers/CLookUpTable.hpp +++ b/Common/include/containers/CLookUpTable.hpp @@ -36,6 +36,10 @@ #include "CFileReaderLUT.hpp" #include "CTrapezoidalMap.hpp" +/*! + * \brief Look up table. + * \ingroup LookUpInterp + */ class CLookUpTable { protected: int rank; /*!< \brief MPI Rank. */ diff --git a/Common/include/containers/CTrapezoidalMap.hpp b/Common/include/containers/CTrapezoidalMap.hpp index 3c2d1f0b1d3..284c2c9d88a 100644 --- a/Common/include/containers/CTrapezoidalMap.hpp +++ b/Common/include/containers/CTrapezoidalMap.hpp @@ -35,6 +35,7 @@ /*! * \class CTrapezoidalMap + * \ingroup LookUpInterp * \brief Construction of trapezoidal map for tabulated lookup * \author: D. Mayer, T. Economon * \version 7.4.0 "Blackbird" diff --git a/Common/include/containers/CVertexMap.hpp b/Common/include/containers/CVertexMap.hpp index 595279fd9e8..46975b3bc62 100644 --- a/Common/include/containers/CVertexMap.hpp +++ b/Common/include/containers/CVertexMap.hpp @@ -33,6 +33,7 @@ /*! * \class CVertexMap + * \ingroup Containers * \brief A lookup type map, maps indices in a large range to indices in a smaller one. * * The usage case is: diff --git a/Common/include/containers/container_decorators.hpp b/Common/include/containers/container_decorators.hpp index e32cfa33c77..da40ee702b3 100644 --- a/Common/include/containers/container_decorators.hpp +++ b/Common/include/containers/container_decorators.hpp @@ -30,6 +30,9 @@ #include "C2DContainer.hpp" +/// \addtogroup Containers +/// @{ + /*! * \brief Class to represent a matrix (without owning the data, this just wraps a pointer). */ @@ -283,3 +286,5 @@ inline void AllocVectorOfMatrices(const IndexVector& N, size_t P, VectorOfMatrix auto M = N.size(); AllocVectorOfMatrices(M, N, P, X, val); } + +/// @} \ No newline at end of file diff --git a/Common/include/geometry/elements/CElement.hpp b/Common/include/geometry/elements/CElement.hpp index 5315ad22c6b..9b34b73935a 100644 --- a/Common/include/geometry/elements/CElement.hpp +++ b/Common/include/geometry/elements/CElement.hpp @@ -34,6 +34,7 @@ /*! * \class CElement + * \ingroup FemAlgos * \brief Abstract class for defining finite elements. * \note Usage: Element instances are used to compute gradients (in reference or current * coordinates), element matrices (stiffness, mass, etc.), and nodal residuals. @@ -555,6 +556,7 @@ class CElement { /*! * \class CElementWithKnownSizes + * \ingroup FemAlgos * \brief Templated class to implement the computation of gradients for specific element sizes. * \author P. Gomes, R. Sanchez */ @@ -793,6 +795,7 @@ class CElementWithKnownSizes : public CElement { /*! * \class CTRIA1 + * \ingroup FemAlgos * \brief Tria element with 1 Gauss Points * \author R. Sanchez */ @@ -819,6 +822,7 @@ class CTRIA1 final : public CElementWithKnownSizes<1,3,2> { /*! * \class CQUAD4 + * \ingroup FemAlgos * \brief Quadrilateral element with 4 Gauss Points * \author R. Sanchez */ @@ -865,6 +869,7 @@ class CQUAD4 final : public CElementWithKnownSizes<4,4,2> { /*! * \class CTETRA1 + * \ingroup FemAlgos * \brief Tetrahedral element with 1 Gauss Point * \author R. Sanchez */ @@ -890,6 +895,7 @@ class CTETRA1 final : public CElementWithKnownSizes<1,4,3> { /*! * \class CHEXA8 + * \ingroup FemAlgos * \brief Hexahedral element with 8 Gauss Points * \author R. Sanchez */ @@ -916,6 +922,7 @@ class CHEXA8 final : public CElementWithKnownSizes<8,8,3> { /*! * \class CPYRAM5 + * \ingroup FemAlgos * \brief Pyramid element with 5 Gauss Points * \author R. Sanchez, F. Palacios, A. Bueno, T. Economon, S. Padron. */ @@ -942,6 +949,7 @@ class CPYRAM5 final : public CElementWithKnownSizes<5,5,3> { /*! * \class CPRISM6 + * \ingroup FemAlgos * \brief Prism element with 6 Gauss Points * \author R. Sanchez, F. Palacios, A. Bueno, T. Economon, S. Padron. * \version 7.4.0 "Blackbird" @@ -969,6 +977,7 @@ class CPRISM6 final : public CElementWithKnownSizes<6,6,3> { /*! * \class CTRIA3 + * \ingroup FemAlgos * \brief Tria element with 3 Gauss Points * \author T.Dick */ @@ -995,6 +1004,7 @@ class CTRIA3 final : public CElementWithKnownSizes<3,3,2> { /*! * \class CTETRA4 + * \ingroup FemAlgos * \brief Tetrahedral element with 4 Gauss Points * \author T.Dick */ @@ -1021,6 +1031,7 @@ class CTETRA4 final : public CElementWithKnownSizes<4,4,3> { /*! * \class CPYRAM6 + * \ingroup FemAlgos * \brief Pyramid element with 6 Gauss Points * \author T.Dick */ @@ -1047,7 +1058,8 @@ class CPYRAM6 final : public CElementWithKnownSizes<6,5,3> { /*! * \class CLINE - * \brief line element with 2 Gauss Points + * \ingroup FemAlgos + * \brief Line element with 2 Gauss Points * \author T.Dick */ class CLINE final : public CElementWithKnownSizes<2,2,1> { diff --git a/Common/include/geometry/elements/CElementProperty.hpp b/Common/include/geometry/elements/CElementProperty.hpp index 9b3b48da5b7..380eb55e677 100644 --- a/Common/include/geometry/elements/CElementProperty.hpp +++ b/Common/include/geometry/elements/CElementProperty.hpp @@ -29,6 +29,7 @@ /*! * \class CProperty + * \ingroup Elasticity_Equations * \brief Base class for defining element properties. * \author R. Sanchez * \version 7.4.0 "Blackbird" @@ -104,6 +105,7 @@ class CProperty { /*! * \class CElementProperty + * \ingroup Elasticity_Equations * \brief Class for defining element properties for the structural solver. * \author R. Sanchez * \version 7.4.0 "Blackbird" diff --git a/Common/include/geometry/elements/CGaussVariable.hpp b/Common/include/geometry/elements/CGaussVariable.hpp index 982581266af..235ae4eb6d4 100644 --- a/Common/include/geometry/elements/CGaussVariable.hpp +++ b/Common/include/geometry/elements/CGaussVariable.hpp @@ -31,6 +31,7 @@ /*! * \class CGaussVariable + * \ingroup FemAlgos * \brief Main class for defining the gaussian points. * \version 7.4.0 "Blackbird" */ diff --git a/Common/include/graph_coloring_structure.hpp b/Common/include/graph_coloring_structure.hpp index b7b29833c98..197c01baa28 100644 --- a/Common/include/graph_coloring_structure.hpp +++ b/Common/include/graph_coloring_structure.hpp @@ -38,22 +38,13 @@ using namespace std; /*! * \class CGraphColoringStructure - * \brief Class, which provides graph coloring algorithms. + * \ingroup Graph + * \brief Class, which provides distributed graph coloring algorithms. * \author: E. van der Weide * \version 7.4.0 "Blackbird" */ class CGraphColoringStructure { public: - /*! - * \brief Constructor of the class. Nothing to be done. - */ - CGraphColoringStructure(void); - - /*! - * \brief Constructor of the class. Nothing to be done. - */ - ~CGraphColoringStructure(void); - /*! * \brief Function, which determines the colors for the vertices of the given graph. * \param[in] config - Definition of the particular problem. diff --git a/Common/include/interface_interpolation/CInterpolator.hpp b/Common/include/interface_interpolation/CInterpolator.hpp index a7a3119e73a..f4aa4fd71a3 100644 --- a/Common/include/interface_interpolation/CInterpolator.hpp +++ b/Common/include/interface_interpolation/CInterpolator.hpp @@ -39,6 +39,7 @@ using namespace std; /*! * \class CInterpolator + * \ingroup Interfaces * \brief Main class for defining the interpolator, it requires * a child class for each particular interpolation method. * \author H. Kline diff --git a/Common/include/interface_interpolation/CInterpolatorFactory.hpp b/Common/include/interface_interpolation/CInterpolatorFactory.hpp index 21fa5a6542b..922bb647b13 100644 --- a/Common/include/interface_interpolation/CInterpolatorFactory.hpp +++ b/Common/include/interface_interpolation/CInterpolatorFactory.hpp @@ -29,14 +29,10 @@ class CConfig; class CGeometry; class CInterpolator; -/*! - * \namespace CInterpolatorFactory - * \brief Factory methods for CInterpolator objects. - */ namespace CInterpolatorFactory { - /*! - * \brief The factory method. + * \brief Factory method for CInterpolator objects. + * \ingroup Interfaces * \param[in] geometry_container - Geometrical definition of the problem. * \param[in] config - Definition of the particular problem. * \param[in] transpInterpolator - Transpose interpolator. @@ -50,5 +46,4 @@ CInterpolator* CreateInterpolator(CGeometry ****geometry_container, const CInterpolator* transpInterpolator, unsigned iZone, unsigned jZone, bool verbose = true); - } diff --git a/Common/include/interface_interpolation/CIsoparametric.hpp b/Common/include/interface_interpolation/CIsoparametric.hpp index c600a850c7d..bf43b5990ec 100644 --- a/Common/include/interface_interpolation/CIsoparametric.hpp +++ b/Common/include/interface_interpolation/CIsoparametric.hpp @@ -30,6 +30,7 @@ /*! * \brief Isoparametric interpolation. + * \ingroup Interfaces */ class CIsoparametric final : public CInterpolator { private: diff --git a/Common/include/interface_interpolation/CMirror.hpp b/Common/include/interface_interpolation/CMirror.hpp index ffbb977d6ca..d537f3c12b9 100644 --- a/Common/include/interface_interpolation/CMirror.hpp +++ b/Common/include/interface_interpolation/CMirror.hpp @@ -31,6 +31,7 @@ /*! * \brief Mirror interpolation, transpose interpolation matrix of opposing mesh. * \note Requires that the opposing mesh has already run interpolation (jZone > iZone), otherwise throws. + * \ingroup Interfaces */ class CMirror final : public CInterpolator { private: diff --git a/Common/include/interface_interpolation/CNearestNeighbor.hpp b/Common/include/interface_interpolation/CNearestNeighbor.hpp index 9dc5717a5c2..437218f60af 100644 --- a/Common/include/interface_interpolation/CNearestNeighbor.hpp +++ b/Common/include/interface_interpolation/CNearestNeighbor.hpp @@ -32,7 +32,8 @@ * \brief Nearest Neighbor(s) interpolation. * \note The closest k neighbors are used for IDW interpolation, the computational * cost of setting up the interpolation is O(N^2 log(k)), this can be improved - * by using a kd-tree. + * by using an ADT. + * \ingroup Interfaces */ class CNearestNeighbor final : public CInterpolator { private: diff --git a/Common/include/interface_interpolation/CRadialBasisFunction.hpp b/Common/include/interface_interpolation/CRadialBasisFunction.hpp index f6e8a3e1813..9f9d3d957fc 100644 --- a/Common/include/interface_interpolation/CRadialBasisFunction.hpp +++ b/Common/include/interface_interpolation/CRadialBasisFunction.hpp @@ -32,6 +32,7 @@ /*! * \brief Radial basis function interpolation. + * \ingroup Interfaces */ class CRadialBasisFunction final : public CInterpolator { static_assert(su2passivematrix::IsRowMajor, "This class relies on row major storage throughout."); diff --git a/Common/include/interface_interpolation/CSlidingMesh.hpp b/Common/include/interface_interpolation/CSlidingMesh.hpp index a4a90ee4028..df7eef3ae04 100644 --- a/Common/include/interface_interpolation/CSlidingMesh.hpp +++ b/Common/include/interface_interpolation/CSlidingMesh.hpp @@ -32,6 +32,7 @@ * \brief Sliding mesh approach. * \note The algorithm is based on Rinaldi et al. "Flux-conserving treatment of non-conformal interfaces * for finite-volume discritization of conservation laws" 2015, Comp. Fluids, 120, pp 126-139 + * \ingroup Interfaces */ class CSlidingMesh final : public CInterpolator { public: diff --git a/Common/include/linear_algebra/CMatrixVectorProduct.hpp b/Common/include/linear_algebra/CMatrixVectorProduct.hpp index a53d7c925ec..5b851f3ab3d 100644 --- a/Common/include/linear_algebra/CMatrixVectorProduct.hpp +++ b/Common/include/linear_algebra/CMatrixVectorProduct.hpp @@ -36,6 +36,7 @@ /*! * \class CMatrixVectorProduct + * \ingroup SpLinSys * \brief Abstract base class for defining matrix-vector products * \author J. Hicken. * @@ -63,6 +64,7 @@ CMatrixVectorProduct::~CMatrixVectorProduct() {} /*! * \class CSysMatrixVectorProduct + * \ingroup SpLinSys * \brief Specialization of matrix-vector product that uses CSysMatrix class */ template diff --git a/Common/include/linear_algebra/CPastixWrapper.hpp b/Common/include/linear_algebra/CPastixWrapper.hpp index 7c33592b400..82dd0c0c4f4 100644 --- a/Common/include/linear_algebra/CPastixWrapper.hpp +++ b/Common/include/linear_algebra/CPastixWrapper.hpp @@ -48,6 +48,7 @@ class CGeometry; /*! * \class CPastixWrapper + * \ingroup SpLinSys * \brief Wrapper class that converts between SU2 sparse format and PaStiX * format and simplifies calls to the external solver. */ diff --git a/Common/include/linear_algebra/CPreconditioner.hpp b/Common/include/linear_algebra/CPreconditioner.hpp index cd1ec7a6bad..722e8e312aa 100644 --- a/Common/include/linear_algebra/CPreconditioner.hpp +++ b/Common/include/linear_algebra/CPreconditioner.hpp @@ -33,6 +33,9 @@ #include "CSysVector.hpp" #include "CSysMatrix.hpp" +/// \addtogroup SpLinSys +/// @{ + /*! * \class CPreconditioner * \brief Abstract base class for defining a preconditioning operation. @@ -353,3 +356,5 @@ CPreconditioner* CPreconditioner::Create(ENUM_LINEAR_SOL return prec; } + +/// @} \ No newline at end of file diff --git a/Common/include/linear_algebra/CSysMatrix.hpp b/Common/include/linear_algebra/CSysMatrix.hpp index 18ac67a5cc1..230328451c9 100644 --- a/Common/include/linear_algebra/CSysMatrix.hpp +++ b/Common/include/linear_algebra/CSysMatrix.hpp @@ -73,6 +73,10 @@ struct mkl_jit_wrapper { class CGeometry; +/*! + * \brief Helper to communicate distributed vectors. + * \ingroup SpLinSys + */ struct CSysMatrixComms { /*! * \brief Routine to load a vector quantity into the data structures for MPI point-to-point @@ -101,6 +105,7 @@ struct CSysMatrixComms { /*! * \class CSysMatrix + * \ingroup SpLinSys * \brief Main class for defining block-compressed-row-storage sparse matrices. */ template diff --git a/Common/include/linear_algebra/CSysSolve.hpp b/Common/include/linear_algebra/CSysSolve.hpp index e47255c6823..0007865bb03 100644 --- a/Common/include/linear_algebra/CSysSolve.hpp +++ b/Common/include/linear_algebra/CSysSolve.hpp @@ -52,6 +52,7 @@ enum class LinearToleranceType {RELATIVE, ABSOLUTE}; /*! * \class CSysSolve + * \ingroup SpLinSys * \brief Class for solving linear systems using classical and Krylov-subspace iterative methods * * The individual solvers could be stand-alone subroutines, but by diff --git a/Common/include/linear_algebra/CSysVector.hpp b/Common/include/linear_algebra/CSysVector.hpp index 3bb142f6609..c41cd4ce930 100644 --- a/Common/include/linear_algebra/CSysVector.hpp +++ b/Common/include/linear_algebra/CSysVector.hpp @@ -57,6 +57,7 @@ /*! * \class CSysVector + * \ingroup SpLinSys * \brief Class for holding and manipulating vectors needed by linear solvers. */ template diff --git a/Common/include/linear_algebra/blas_structure.hpp b/Common/include/linear_algebra/blas_structure.hpp index b371d35b1dc..da1f57d2cbe 100644 --- a/Common/include/linear_algebra/blas_structure.hpp +++ b/Common/include/linear_algebra/blas_structure.hpp @@ -38,6 +38,7 @@ class CConfig; /*! * \class CBlasStructure + * \ingroup BLAS * \brief Class, which serves as an interface to the BLAS functionalities needed. * \author: E. van der Weide * \version 7.4.0 "Blackbird" @@ -49,11 +50,6 @@ class CBlasStructure { */ CBlasStructure(void); - /*! - * \brief Constructor of the class. Nothing to be done. - */ - ~CBlasStructure(void); - /*! * \brief Function, which carries out a dense matrix product. It is a limited version of the BLAS gemm functionality.. diff --git a/Common/include/linear_algebra/vector_expressions.hpp b/Common/include/linear_algebra/vector_expressions.hpp index b1929e6860d..9d81e494f7d 100644 --- a/Common/include/linear_algebra/vector_expressions.hpp +++ b/Common/include/linear_algebra/vector_expressions.hpp @@ -38,6 +38,7 @@ namespace VecExpr { /*! * \brief Base vector expression class. + * \ingroup BLAS * \param[in] Derived - The class that inherits from this one to use the expressions. * \param[in] Scalar - Associated scalar type, prevents implicit conversions between exprs. * \note Derived classes must implement operator[], and at least operator= with diff --git a/Common/include/parallelization/vectorization.hpp b/Common/include/parallelization/vectorization.hpp index 7c097b5473b..d90b0afb8f0 100644 --- a/Common/include/parallelization/vectorization.hpp +++ b/Common/include/parallelization/vectorization.hpp @@ -37,6 +37,8 @@ #endif namespace simd { +/// \addtogroup SIMD +/// @{ using namespace VecExpr; @@ -314,4 +316,5 @@ FORCEINLINE __m512d sign_p(__m512d x) { return _mm512_or_pd(ones_8d, _mm512_and_ #undef ARRAY_BOILERPLATE +/// @} } // namespace diff --git a/Common/include/toolboxes/C1DInterpolation.hpp b/Common/include/toolboxes/C1DInterpolation.hpp index 108ae2b1d29..263f9f1f962 100644 --- a/Common/include/toolboxes/C1DInterpolation.hpp +++ b/Common/include/toolboxes/C1DInterpolation.hpp @@ -32,6 +32,10 @@ #include #include "../option_structure.hpp" +/*! + * \brief Base class for 1D interpolation. + * \ingroup LookUpInterp + */ class C1DInterpolation { protected: std::vector x, y; /*!< \brief Data points. */ @@ -80,6 +84,10 @@ class C1DInterpolation { }; +/*! + * \brief Akima 1D interpolation. + * \ingroup LookUpInterp + */ class CAkimaInterpolation: public C1DInterpolation{ protected: std::vector b,c,d; /*!< \brief local variables for Akima spline cooefficients */ @@ -107,6 +115,10 @@ class CAkimaInterpolation: public C1DInterpolation{ su2double EvaluateSpline(su2double Point_Interp) const final; }; +/*! + * \brief Cubic spline interpolation. + * \ingroup LookUpInterp + */ class CCubicSpline final: public CAkimaInterpolation { public: enum END_TYPE {SECOND, FIRST}; @@ -143,6 +155,10 @@ class CCubicSpline final: public CAkimaInterpolation { void SetSpline(const std::vector &X, const std::vector &Data) override; }; +/*! + * \brief Linear interpolation. + * \ingroup LookUpInterp + */ class CLinearInterpolation final: public C1DInterpolation { public: CLinearInterpolation() = default; @@ -163,7 +179,7 @@ class CLinearInterpolation final: public C1DInterpolation { }; /*! - * \brief to correct for interpolation type. + * \brief Corrects for interpolation type. * \param[in] Inlet_Interpolated - the interpolated data after spline evaluation. * \param[in] Theta - the angle of the vertex (in xy plane). * \param[in] nDim - the dimensions of the case. @@ -180,7 +196,7 @@ std::vector CorrectedInletValues(const std::vector &Inlet_ INLET_INTERP_TYPE Interpolation_Type); /*! - * \brief to print the Inlet Interpolated Data + * \brief Prints the Inlet Interpolated Data * \param[in] Inlet_Interpolated_Interpolated - the final std::vector for the interpolated data * \param[in] Marker - name of the inlet marker * \param[in] nVertex - total number of vertexes. diff --git a/Common/include/toolboxes/CQuasiNewtonInvLeastSquares.hpp b/Common/include/toolboxes/CQuasiNewtonInvLeastSquares.hpp index 0927eedfb7b..bf40281ca22 100644 --- a/Common/include/toolboxes/CQuasiNewtonInvLeastSquares.hpp +++ b/Common/include/toolboxes/CQuasiNewtonInvLeastSquares.hpp @@ -44,6 +44,7 @@ * Usage: Allocate, store the initial solution (operator (i,j), default is 0), * run the FP, store its result ("FPresult"), compute new solution, use it * as the new input of the FP, run the FP, etc. + * \ingroup BLAS */ template class CQuasiNewtonInvLeastSquares { diff --git a/Common/include/toolboxes/CSquareMatrixCM.hpp b/Common/include/toolboxes/CSquareMatrixCM.hpp index 70de5a1ea7d..39836fafaca 100644 --- a/Common/include/toolboxes/CSquareMatrixCM.hpp +++ b/Common/include/toolboxes/CSquareMatrixCM.hpp @@ -34,6 +34,7 @@ * \brief Class to store a dense general square matrix that uses the Column * Major order storage format. The code should be compiled with * LAPACK to use optimized matrix inversion and multiplication routines. + * \ingroup BLAS */ class CSquareMatrixCM { static_assert(ColMajorMatrix::Storage == StorageType::ColumnMajor, diff --git a/Common/include/toolboxes/CSymmetricMatrix.hpp b/Common/include/toolboxes/CSymmetricMatrix.hpp index aa8e4c82086..ba5f83ee368 100644 --- a/Common/include/toolboxes/CSymmetricMatrix.hpp +++ b/Common/include/toolboxes/CSymmetricMatrix.hpp @@ -33,6 +33,7 @@ * \brief The matrix is symmetric but full storage is used as that gives much better * performance for some BLAS libraries (notably OpenBLAS). The code should be compiled * with LAPACK to use optimized matrix inversion and multiplication routines. + * \ingroup BLAS */ class CSymmetricMatrix { static_assert(su2passivematrix::IsRowMajor, "Row major storage is assumed for LAPACK."); diff --git a/Common/include/toolboxes/geometry_toolbox.hpp b/Common/include/toolboxes/geometry_toolbox.hpp index ef2d6a444e8..d1ed11250e5 100644 --- a/Common/include/toolboxes/geometry_toolbox.hpp +++ b/Common/include/toolboxes/geometry_toolbox.hpp @@ -29,6 +29,8 @@ #include namespace GeometryToolbox { +/// \addtogroup GeometryToolbox +/// @{ /*! \return ||a-b||^2 */ template @@ -204,5 +206,5 @@ inline void TangentProjection(Int nDim, const Mat& tensor, const Scalar* vector, for (Int iDim = 0; iDim < nDim; iDim++) proj[iDim] -= normalProj * vector[iDim]; } - +/// @} } diff --git a/Common/include/toolboxes/graph_toolbox.hpp b/Common/include/toolboxes/graph_toolbox.hpp index 4410ae96fe2..87a45720b3a 100644 --- a/Common/include/toolboxes/graph_toolbox.hpp +++ b/Common/include/toolboxes/graph_toolbox.hpp @@ -37,6 +37,9 @@ #include #include +/// \addtogroup Graph +/// @{ + /*! * \enum ConnectivityType * \brief In FVM points are connected by the edges (faces) of the grid. @@ -717,3 +720,5 @@ su2double coloringEfficiency(const SparsePattern& coloring, int numThreads, int return ideal / real; } + +/// @} \ No newline at end of file diff --git a/Common/include/toolboxes/ndflattener.hpp b/Common/include/toolboxes/ndflattener.hpp index f90ff476f76..88382a85a70 100644 --- a/Common/include/toolboxes/ndflattener.hpp +++ b/Common/include/toolboxes/ndflattener.hpp @@ -36,6 +36,9 @@ #include "../containers/C2DContainer.hpp" #include "../parallelization/mpi_structure.hpp" +/// \addtogroup Containers +/// @{ + // --- Usage /*! \page ndflattener_usage NdFlattener usage * @@ -826,3 +829,5 @@ class NdFlattener<1, Data_t_, Index_t_> { const Data_t* data() const { return data_.data(); } }; + +/// @} \ No newline at end of file diff --git a/Common/src/graph_coloring_structure.cpp b/Common/src/graph_coloring_structure.cpp index f2eb3d1e5c7..d9599f8e59e 100644 --- a/Common/src/graph_coloring_structure.cpp +++ b/Common/src/graph_coloring_structure.cpp @@ -27,12 +27,6 @@ #include "../include/graph_coloring_structure.hpp" -/* Constructor. Nothing to be done. */ -CGraphColoringStructure::CGraphColoringStructure(void) {} - -/* Destructor. Nothing to be done. */ -CGraphColoringStructure::~CGraphColoringStructure(void) {} - /* Function, which determines the colors for the vertices of the given graph. */ void CGraphColoringStructure::GraphVertexColoring( CConfig *config, diff --git a/Common/src/linear_algebra/blas_structure.cpp b/Common/src/linear_algebra/blas_structure.cpp index 593265e9dc5..896523fe47f 100644 --- a/Common/src/linear_algebra/blas_structure.cpp +++ b/Common/src/linear_algebra/blas_structure.cpp @@ -51,9 +51,6 @@ CBlasStructure::CBlasStructure(void) #endif {} -/* Destructor. Nothing to be done. */ -CBlasStructure::~CBlasStructure(void) {} - /* Dense matrix multiplication, gemm functionality. */ void CBlasStructure::gemm(const int M, const int N, const int K, const su2double *A, const su2double *B, su2double *C, diff --git a/SU2_CFD/include/drivers/CDiscAdjMultizoneDriver.hpp b/SU2_CFD/include/drivers/CDiscAdjMultizoneDriver.hpp index 786a6591b56..f3ee345adc4 100644 --- a/SU2_CFD/include/drivers/CDiscAdjMultizoneDriver.hpp +++ b/SU2_CFD/include/drivers/CDiscAdjMultizoneDriver.hpp @@ -32,6 +32,10 @@ #include "../../../Common/include/linear_algebra/CMatrixVectorProduct.hpp" #include "../../../Common/include/linear_algebra/CSysSolve.hpp" +/*! + * \brief Block Gauss-Seidel driver for multizone / multiphysics discrete adjoint problems. + * \ingroup DiscAdj + */ class CDiscAdjMultizoneDriver : public CMultizoneDriver { protected: diff --git a/SU2_CFD/include/drivers/CDiscAdjSinglezoneDriver.hpp b/SU2_CFD/include/drivers/CDiscAdjSinglezoneDriver.hpp index cfec35f5c8a..8aec81d2e0e 100644 --- a/SU2_CFD/include/drivers/CDiscAdjSinglezoneDriver.hpp +++ b/SU2_CFD/include/drivers/CDiscAdjSinglezoneDriver.hpp @@ -31,6 +31,7 @@ /*! * \class CDiscAdjSinglezoneDriver + * \ingroup DiscAdj * \brief Class for driving single-zone adjoint solvers. * \author R. Sanchez * \version 7.4.0 "Blackbird" diff --git a/SU2_CFD/include/drivers/CDriver.hpp b/SU2_CFD/include/drivers/CDriver.hpp index 1a28cf3077d..e8c9060b165 100644 --- a/SU2_CFD/include/drivers/CDriver.hpp +++ b/SU2_CFD/include/drivers/CDriver.hpp @@ -45,6 +45,7 @@ class COutput; /*! * \class CDriver + * \ingroup Drivers * \brief Parent class for driving an iteration of a single or multi-zone problem. * \author T. Economon */ @@ -785,6 +786,7 @@ class CDriver { /*! * \class CFluidDriver + * \ingroup Drivers * \brief Class for driving an iteration of the physics within multiple zones. * \author T. Economon, G. Gori */ @@ -857,6 +859,7 @@ class CFluidDriver : public CDriver { /*! * \class CTurbomachineryDriver + * \ingroup Drivers * \brief Class for driving an iteration for turbomachinery flow analysis. * \author S. Vitale */ @@ -910,6 +913,7 @@ class CTurbomachineryDriver : public CFluidDriver { /*! * \class CHBDriver + * \ingroup Drivers * \brief Class for driving an iteration of Harmonic Balance (HB) method problem using multiple time zones. * \author T. Economon */ diff --git a/SU2_CFD/include/drivers/CDummyDriver.hpp b/SU2_CFD/include/drivers/CDummyDriver.hpp index fcd58700efb..7d71a39c586 100644 --- a/SU2_CFD/include/drivers/CDummyDriver.hpp +++ b/SU2_CFD/include/drivers/CDummyDriver.hpp @@ -31,6 +31,7 @@ /*! * \brief CDummyDriver class that constructs the driver without running a solver. + * \ingroup Drivers */ class CDummyDriver : public CDriver { diff --git a/SU2_CFD/include/drivers/CMultizoneDriver.hpp b/SU2_CFD/include/drivers/CMultizoneDriver.hpp index e5c0e270d45..c743be2c8f0 100644 --- a/SU2_CFD/include/drivers/CMultizoneDriver.hpp +++ b/SU2_CFD/include/drivers/CMultizoneDriver.hpp @@ -32,6 +32,7 @@ /*! * \class CMultizoneDriver + * \ingroup Drivers * \brief Class for driving zone-specific iterations. * \author R. Sanchez, O. Burghardt * \version 7.4.0 "Blackbird" diff --git a/SU2_CFD/include/drivers/CSinglezoneDriver.hpp b/SU2_CFD/include/drivers/CSinglezoneDriver.hpp index f12c10abbcd..50e65f35abf 100644 --- a/SU2_CFD/include/drivers/CSinglezoneDriver.hpp +++ b/SU2_CFD/include/drivers/CSinglezoneDriver.hpp @@ -31,6 +31,7 @@ /*! * \class CSinglezoneDriver + * \ingroup Drivers * \brief Class for driving single-zone solvers. * \author R. Sanchez * \version 7.4.0 "Blackbird" diff --git a/SU2_CFD/include/gradients/computeGradientsGreenGauss.hpp b/SU2_CFD/include/gradients/computeGradientsGreenGauss.hpp index 715410d75c0..f475e986935 100644 --- a/SU2_CFD/include/gradients/computeGradientsGreenGauss.hpp +++ b/SU2_CFD/include/gradients/computeGradientsGreenGauss.hpp @@ -33,6 +33,7 @@ namespace detail { /*! * \brief Compute the gradient of a field using the Green-Gauss theorem. + * \ingroup FvmAlgos * \note Template nDim to allow efficient unrolling of inner loops. * \note Gradients can be computed only for a contiguous range of variables, defined * by [varBegin, varEnd[ (e.g. 0,1 computes the gradient of the 1st variable). @@ -189,6 +190,7 @@ void computeGradientsGreenGauss(CSolver* solver, /*! * \brief Instantiations for 2D and 3D. + * \ingroup FvmAlgos */ template void computeGradientsGreenGauss(CSolver* solver, diff --git a/SU2_CFD/include/gradients/computeGradientsLeastSquares.hpp b/SU2_CFD/include/gradients/computeGradientsLeastSquares.hpp index ff0dcb365fa..c4540ea0a8a 100644 --- a/SU2_CFD/include/gradients/computeGradientsLeastSquares.hpp +++ b/SU2_CFD/include/gradients/computeGradientsLeastSquares.hpp @@ -32,7 +32,8 @@ namespace detail { /*! - * \brief Prepare Smatrix for 2D or 3D + * \brief Prepare Smatrix for 2D. + * \ingroup FvmAlgos */ FORCEINLINE void computeSmatrix(su2double r11, su2double r12, su2double r13, su2double r22, su2double r23, su2double r33, @@ -42,6 +43,10 @@ FORCEINLINE void computeSmatrix(su2double r11, su2double r12, su2double r13, Smatrix[1][1] = r11*r11/detR2; } +/*! + * \brief Prepare Smatrix for 3D. + * \ingroup FvmAlgos + */ FORCEINLINE void computeSmatrix(su2double r11, su2double r12, su2double r13, su2double r22, su2double r23, su2double r33, su2double detR2, su2double Smatrix[][3]) { @@ -62,6 +67,7 @@ FORCEINLINE void computeSmatrix(su2double r11, su2double r12, su2double r13, /*! * \brief Solve the least-squares problem for one point. + * \ingroup FvmAlgos * \note See detail::computeGradientsLeastSquares for the * purpose of template "nDim" and "periodic". */ @@ -158,6 +164,7 @@ FORCEINLINE void solveLeastSquares(size_t iPoint, /*! * \brief Compute the gradient of a field using inverse-distance-weighted or * unweighted Least-Squares approximation. + * \ingroup FvmAlgos * \note See notes from computeGradientsGreenGauss.hpp. * \param[in] solver - Optional, solver associated with the field (used only for MPI). * \param[in] kindMpiComm - Type of MPI communication required. @@ -320,6 +327,7 @@ void computeGradientsLeastSquares(CSolver* solver, /*! * \brief Instantiations for 2D and 3D. + * \ingroup FvmAlgos */ template void computeGradientsLeastSquares(CSolver* solver, diff --git a/SU2_CFD/include/integration/CFEM_DG_Integration.hpp b/SU2_CFD/include/integration/CFEM_DG_Integration.hpp index e4adde40025..6ff988d5192 100644 --- a/SU2_CFD/include/integration/CFEM_DG_Integration.hpp +++ b/SU2_CFD/include/integration/CFEM_DG_Integration.hpp @@ -29,6 +29,7 @@ /*! * \class CFEM_DG_Integration + * \ingroup Drivers * \brief Class for integration with the FEM DG solver. * \author E. van der Weide, T. Economon * \version 7.4.0 "Blackbird" diff --git a/SU2_CFD/include/integration/CIntegration.hpp b/SU2_CFD/include/integration/CIntegration.hpp index 835ec3ff5e8..ab34ad16164 100644 --- a/SU2_CFD/include/integration/CIntegration.hpp +++ b/SU2_CFD/include/integration/CIntegration.hpp @@ -39,6 +39,7 @@ using namespace std; /*! * \class CIntegration + * \ingroup Drivers * \brief Main class for doing the space integration, time integration, and monitoring * of a system of Partial Differential Equations (PDE). * \author F. Palacios diff --git a/SU2_CFD/include/integration/CIntegrationFactory.hpp b/SU2_CFD/include/integration/CIntegrationFactory.hpp index 5b98bf9d933..9d709823e3a 100644 --- a/SU2_CFD/include/integration/CIntegrationFactory.hpp +++ b/SU2_CFD/include/integration/CIntegrationFactory.hpp @@ -31,10 +31,12 @@ class CIntegration; class CConfig; +/*! + * \brief Factory for integration classes. + * \ingroup Drivers + */ class CIntegrationFactory{ - -public: - + public: /*! * \brief Deleted constructor to avoid creating instances of this class */ diff --git a/SU2_CFD/include/integration/CMultiGridIntegration.hpp b/SU2_CFD/include/integration/CMultiGridIntegration.hpp index 59bdb8ef491..63b060cb0ea 100644 --- a/SU2_CFD/include/integration/CMultiGridIntegration.hpp +++ b/SU2_CFD/include/integration/CMultiGridIntegration.hpp @@ -29,6 +29,7 @@ /*! * \class CMultiGridIntegration + * \ingroup Drivers * \brief Class for time integration using a multigrid method. * \author F. Palacios */ diff --git a/SU2_CFD/include/integration/CNewtonIntegration.hpp b/SU2_CFD/include/integration/CNewtonIntegration.hpp index 0ad2bc5c49b..1b4ff748b9a 100644 --- a/SU2_CFD/include/integration/CNewtonIntegration.hpp +++ b/SU2_CFD/include/integration/CNewtonIntegration.hpp @@ -45,8 +45,10 @@ /*! * \class CNewtonIntegration + * \ingroup Drivers * \brief Class for time integration using a Newton-Krylov method, based * on matrix-free products with the true Jacobian via finite differences. + * \author P. Gomes */ class CNewtonIntegration final : public CIntegration { public: diff --git a/SU2_CFD/include/integration/CSingleGridIntegration.hpp b/SU2_CFD/include/integration/CSingleGridIntegration.hpp index cbed042edcf..764017cbcd4 100644 --- a/SU2_CFD/include/integration/CSingleGridIntegration.hpp +++ b/SU2_CFD/include/integration/CSingleGridIntegration.hpp @@ -29,6 +29,7 @@ /*! * \class CSingleGridIntegration + * \ingroup Drivers * \brief Class for numerical integration of fine grid-only problems (e.g. turbulence). * \author A. Bueno. */ diff --git a/SU2_CFD/include/integration/CStructuralIntegration.hpp b/SU2_CFD/include/integration/CStructuralIntegration.hpp index 938e52d30a2..707840c92c9 100644 --- a/SU2_CFD/include/integration/CStructuralIntegration.hpp +++ b/SU2_CFD/include/integration/CStructuralIntegration.hpp @@ -29,6 +29,7 @@ /*! * \class CStructuralIntegration + * \ingroup Drivers * \brief Class for numerical integration of structural problems. * \author R. Sanchez. */ diff --git a/SU2_CFD/include/interfaces/CInterface.hpp b/SU2_CFD/include/interfaces/CInterface.hpp index dbe45b4aa86..ddf2ccc36e2 100644 --- a/SU2_CFD/include/interfaces/CInterface.hpp +++ b/SU2_CFD/include/interfaces/CInterface.hpp @@ -48,6 +48,7 @@ using namespace std; /*! * \class CInterface + * \ingroup Interfaces * \brief Main class for defining the physical transfer of information. * \author R. Sanchez * \version 7.4.0 "Blackbird" diff --git a/SU2_CFD/include/interfaces/cfd/CConservativeVarsInterface.hpp b/SU2_CFD/include/interfaces/cfd/CConservativeVarsInterface.hpp index 9cb16dbd0fe..6e97ddd3d36 100644 --- a/SU2_CFD/include/interfaces/cfd/CConservativeVarsInterface.hpp +++ b/SU2_CFD/include/interfaces/cfd/CConservativeVarsInterface.hpp @@ -30,6 +30,10 @@ #include "../CInterface.hpp" +/*! + * \brief Transfers conservative variables. + * \ingroup Interfaces + */ class CConservativeVarsInterface : public CInterface { public: /*! diff --git a/SU2_CFD/include/interfaces/cfd/CMixingPlaneInterface.hpp b/SU2_CFD/include/interfaces/cfd/CMixingPlaneInterface.hpp index 24414e6dd1a..1cf12088232 100644 --- a/SU2_CFD/include/interfaces/cfd/CMixingPlaneInterface.hpp +++ b/SU2_CFD/include/interfaces/cfd/CMixingPlaneInterface.hpp @@ -30,6 +30,10 @@ #include "../CInterface.hpp" +/*! + * \brief Mixing plane interface for turbomachinery. + * \ingroup Interfaces + */ class CMixingPlaneInterface : public CInterface { public: /*! diff --git a/SU2_CFD/include/interfaces/cfd/CSlidingInterface.hpp b/SU2_CFD/include/interfaces/cfd/CSlidingInterface.hpp index d59191bd595..8bcaf560731 100644 --- a/SU2_CFD/include/interfaces/cfd/CSlidingInterface.hpp +++ b/SU2_CFD/include/interfaces/cfd/CSlidingInterface.hpp @@ -30,6 +30,10 @@ #include "../CInterface.hpp" +/*! + * \brief Fluid-fluid interface. + * \ingroup Interfaces + */ class CSlidingInterface : public CInterface { public: /*! diff --git a/SU2_CFD/include/interfaces/cht/CConjugateHeatInterface.hpp b/SU2_CFD/include/interfaces/cht/CConjugateHeatInterface.hpp index afe06f6cec3..002dcd01308 100644 --- a/SU2_CFD/include/interfaces/cht/CConjugateHeatInterface.hpp +++ b/SU2_CFD/include/interfaces/cht/CConjugateHeatInterface.hpp @@ -30,6 +30,10 @@ #include "../CInterface.hpp" +/*! + * \brief Fluid-heat interface (and v.v.). + * \ingroup Interfaces + */ class CConjugateHeatInterface : public CInterface { public: /*! diff --git a/SU2_CFD/include/interfaces/fsi/CDiscAdjFlowTractionInterface.hpp b/SU2_CFD/include/interfaces/fsi/CDiscAdjFlowTractionInterface.hpp index 823a80e7f47..8f7a822ebc4 100644 --- a/SU2_CFD/include/interfaces/fsi/CDiscAdjFlowTractionInterface.hpp +++ b/SU2_CFD/include/interfaces/fsi/CDiscAdjFlowTractionInterface.hpp @@ -30,6 +30,11 @@ #include "CFlowTractionInterface.hpp" +/*! + * \brief Fluid-structure interface (forces or tractions) for discrete adjoint problems. + * \note This is a small specialization of CFlowTractionInterface that ommits load ramping. + * \ingroup Interfaces + */ class CDiscAdjFlowTractionInterface : public CFlowTractionInterface { public: /*! diff --git a/SU2_CFD/include/interfaces/fsi/CDisplacementsInterface.hpp b/SU2_CFD/include/interfaces/fsi/CDisplacementsInterface.hpp index 6c26bc13991..c61cebfb302 100644 --- a/SU2_CFD/include/interfaces/fsi/CDisplacementsInterface.hpp +++ b/SU2_CFD/include/interfaces/fsi/CDisplacementsInterface.hpp @@ -30,6 +30,10 @@ #include "../CInterface.hpp" +/*! + * \brief Structure-fluid interface (displacements). + * \ingroup Interfaces + */ class CDisplacementsInterface : public CInterface { public: /*! diff --git a/SU2_CFD/include/interfaces/fsi/CFlowTractionInterface.hpp b/SU2_CFD/include/interfaces/fsi/CFlowTractionInterface.hpp index d89b7c60e78..6f3f4370988 100644 --- a/SU2_CFD/include/interfaces/fsi/CFlowTractionInterface.hpp +++ b/SU2_CFD/include/interfaces/fsi/CFlowTractionInterface.hpp @@ -31,6 +31,10 @@ #include "../CInterface.hpp" #include +/*! + * \brief Fluid-structure interface (forces or tractions). + * \ingroup Interfaces + */ class CFlowTractionInterface : public CInterface { protected: const bool conservative; diff --git a/SU2_CFD/include/iteration/CAdjFluidIteration.hpp b/SU2_CFD/include/iteration/CAdjFluidIteration.hpp index 692dccaa540..7b0cdbff1ee 100644 --- a/SU2_CFD/include/iteration/CAdjFluidIteration.hpp +++ b/SU2_CFD/include/iteration/CAdjFluidIteration.hpp @@ -32,6 +32,7 @@ /*! * \class CAdjFluidIteration + * \ingroup Drivers * \brief Class for driving an iteration of the adjoint fluid system. * \author T. Economon */ diff --git a/SU2_CFD/include/iteration/CDiscAdjFEAIteration.hpp b/SU2_CFD/include/iteration/CDiscAdjFEAIteration.hpp index 63e005b0a12..7064932a7ff 100644 --- a/SU2_CFD/include/iteration/CDiscAdjFEAIteration.hpp +++ b/SU2_CFD/include/iteration/CDiscAdjFEAIteration.hpp @@ -34,6 +34,7 @@ class CFEAIteration; /*! * \class CDiscAdjFEAIteration + * \ingroup DiscAdj * \brief Class for driving an iteration of the discrete adjoint FEM system. * \author R. Sanchez */ diff --git a/SU2_CFD/include/iteration/CDiscAdjFluidIteration.hpp b/SU2_CFD/include/iteration/CDiscAdjFluidIteration.hpp index 943d1947d7a..8a4cebaf00b 100644 --- a/SU2_CFD/include/iteration/CDiscAdjFluidIteration.hpp +++ b/SU2_CFD/include/iteration/CDiscAdjFluidIteration.hpp @@ -34,6 +34,7 @@ class CFluidIteration; /*! * \class CDiscAdjFluidIteration + * \ingroup DiscAdj * \brief Class for driving an iteration of the discrete adjoint fluid system. * \author T. Economon */ diff --git a/SU2_CFD/include/iteration/CDiscAdjHeatIteration.hpp b/SU2_CFD/include/iteration/CDiscAdjHeatIteration.hpp index 9020b0e99f2..054e83f225d 100644 --- a/SU2_CFD/include/iteration/CDiscAdjHeatIteration.hpp +++ b/SU2_CFD/include/iteration/CDiscAdjHeatIteration.hpp @@ -32,6 +32,7 @@ /*! * \class CDiscAdjHeatIteration + * \ingroup DiscAdj * \brief Class for driving an iteration of the discrete adjoint heat equation. * \author O. Burghardt */ diff --git a/SU2_CFD/include/iteration/CFEAIteration.hpp b/SU2_CFD/include/iteration/CFEAIteration.hpp index d3fe197b753..17c81e56235 100644 --- a/SU2_CFD/include/iteration/CFEAIteration.hpp +++ b/SU2_CFD/include/iteration/CFEAIteration.hpp @@ -32,6 +32,7 @@ /*! * \class CFEAIteration + * \ingroup Drivers * \brief Class for driving an iteration of structural analysis. * \author R. Sanchez * \version 7.4.0 "Blackbird" diff --git a/SU2_CFD/include/iteration/CFEMFluidIteration.hpp b/SU2_CFD/include/iteration/CFEMFluidIteration.hpp index 8314d961cb6..4d550c7e102 100644 --- a/SU2_CFD/include/iteration/CFEMFluidIteration.hpp +++ b/SU2_CFD/include/iteration/CFEMFluidIteration.hpp @@ -32,6 +32,7 @@ /*! * \class CFEMFluidIteration + * \ingroup Drivers * \brief Class for driving an iteration of the finite element flow system. * \author T. Economon, E. van der Weide * \version 7.4.0 "Blackbird" diff --git a/SU2_CFD/include/iteration/CFluidIteration.hpp b/SU2_CFD/include/iteration/CFluidIteration.hpp index d14436bf067..93c0f11043f 100644 --- a/SU2_CFD/include/iteration/CFluidIteration.hpp +++ b/SU2_CFD/include/iteration/CFluidIteration.hpp @@ -32,6 +32,7 @@ /*! * \class CFluidIteration + * \ingroup Drivers * \brief Class for driving an iteration of the fluid system. * \author T. Economon */ diff --git a/SU2_CFD/include/iteration/CHeatIteration.hpp b/SU2_CFD/include/iteration/CHeatIteration.hpp index 58694b2ad04..6cd1cf80a34 100644 --- a/SU2_CFD/include/iteration/CHeatIteration.hpp +++ b/SU2_CFD/include/iteration/CHeatIteration.hpp @@ -32,6 +32,7 @@ /*! * \class CHeatIteration + * \ingroup Drivers * \brief Class for driving an iteration of the heat system. * \author T. Economon */ diff --git a/SU2_CFD/include/iteration/CIteration.hpp b/SU2_CFD/include/iteration/CIteration.hpp index 98245b1de3d..dc3fa290813 100644 --- a/SU2_CFD/include/iteration/CIteration.hpp +++ b/SU2_CFD/include/iteration/CIteration.hpp @@ -42,6 +42,7 @@ class COutput; /*! * \class CIteration + * \ingroup Drivers * \brief Parent class for defining a single iteration of a physics problem. * \author T. Economon */ diff --git a/SU2_CFD/include/iteration/CIterationFactory.hpp b/SU2_CFD/include/iteration/CIterationFactory.hpp index 08fc9de4cc8..bc587680b76 100644 --- a/SU2_CFD/include/iteration/CIterationFactory.hpp +++ b/SU2_CFD/include/iteration/CIterationFactory.hpp @@ -30,6 +30,10 @@ #include "CIteration.hpp" +/*! + * \brief Creates a new iteration instance based on the current main solver. + * \ingroup Drivers + */ class CIterationFactory { public: /*! diff --git a/SU2_CFD/include/iteration/CTurboIteration.hpp b/SU2_CFD/include/iteration/CTurboIteration.hpp index 94cc9b68e4b..f9f75363995 100644 --- a/SU2_CFD/include/iteration/CTurboIteration.hpp +++ b/SU2_CFD/include/iteration/CTurboIteration.hpp @@ -32,6 +32,7 @@ /*! * \class CTurboIteration + * \ingroup Drivers * \brief Class for driving an iteration for turbomachinery simulation. * \author T. Economon */ diff --git a/SU2_CFD/include/limiters/CLimiterDetails.hpp b/SU2_CFD/include/limiters/CLimiterDetails.hpp index a24bb5fcdf3..2a5c06c28dc 100644 --- a/SU2_CFD/include/limiters/CLimiterDetails.hpp +++ b/SU2_CFD/include/limiters/CLimiterDetails.hpp @@ -29,6 +29,7 @@ /*! * \brief A traits class for limiters, see notes for "computeLimiters_impl()". + * \ingroup FvmAlgos * \note There is no default implementation (the code will compile but not * link) specialization is mandatory. */ @@ -63,6 +64,7 @@ struct CLimiterDetails /*! * \brief Common small functions used by limiters. + * \ingroup FvmAlgos */ template struct LimiterHelpers @@ -90,6 +92,7 @@ struct LimiterHelpers /*! * \brief Barth-Jespersen specialization. + * \ingroup FvmAlgos */ template<> struct CLimiterDetails @@ -120,6 +123,7 @@ struct CLimiterDetails /*! * \brief Venkatakrishnan specialization. + * \ingroup FvmAlgos */ template<> struct CLimiterDetails @@ -157,6 +161,7 @@ struct CLimiterDetails /*! * \brief Venkatakrishnan-Wang specialization. + * \ingroup FvmAlgos */ template<> struct CLimiterDetails @@ -255,6 +260,7 @@ struct CLimiterDetails /*! * \brief Venkatakrishnan with sharp edge modification. + * \ingroup FvmAlgos */ template<> struct CLimiterDetails @@ -296,6 +302,7 @@ struct CLimiterDetails /*! * \brief Venkatakrishnan with wall distance modification. + * \ingroup FvmAlgos */ template<> struct CLimiterDetails diff --git a/SU2_CFD/include/limiters/computeLimiters.hpp b/SU2_CFD/include/limiters/computeLimiters.hpp index f13557b6d28..685f2fd786e 100644 --- a/SU2_CFD/include/limiters/computeLimiters.hpp +++ b/SU2_CFD/include/limiters/computeLimiters.hpp @@ -33,6 +33,7 @@ * on "LimiterKind". Those implementations are generated by instantiating * versions of "computeLimiters_impl" with appropriate specializations * of "CLimiterDetails". See corresponding hpp files for further details. + * \ingroup FvmAlgos */ template void computeLimiters(LIMITER LimiterKind, diff --git a/SU2_CFD/include/limiters/computeLimiters_impl.hpp b/SU2_CFD/include/limiters/computeLimiters_impl.hpp index 280d0805786..48a1dacbe2b 100644 --- a/SU2_CFD/include/limiters/computeLimiters_impl.hpp +++ b/SU2_CFD/include/limiters/computeLimiters_impl.hpp @@ -31,6 +31,7 @@ /*! * \brief Generic limiter computation for methods based on one limiter * value per point (as opposed to one per edge) and per variable. + * \ingroup FvmAlgos * \note This implementation can be used to derive most common methods * by specializing the limiter functions (e.g. Venkatakrishnan) * and the geometric modifications (e.g. sharp edges), this is done diff --git a/SU2_CFD/include/numerics/turbulent/turb_sources.hpp b/SU2_CFD/include/numerics/turbulent/turb_sources.hpp index 80adf90d7c8..d489a1c873d 100644 --- a/SU2_CFD/include/numerics/turbulent/turb_sources.hpp +++ b/SU2_CFD/include/numerics/turbulent/turb_sources.hpp @@ -31,6 +31,7 @@ /*! * \class CSAVariables + * \ingroup SourceDiscr * \brief Structure with SA common auxiliary functions and constants. */ struct CSAVariables { @@ -57,6 +58,7 @@ struct CSAVariables { /*! * \class CSourceBase_TurbSA + * \ingroup SourceDiscr * \brief Class for integrating the source terms of the Spalart-Allmaras turbulence model equation. * The variables that are subject to change in each variation/correction have their own class. * \note Additional source terms (e.g. compressibility) are implemented as decorators. @@ -218,13 +220,14 @@ namespace detail { * ============================================================================*/ /*! - * \brief Strain rate classes. + * \brief SA strain rate classes. + * \ingroup SourceDiscr * \param[in] vorticity: Vorticity array. * \param[in] nDim: Problem dimension. * \param[in] velocity_grad: Velocity gradients. * \param[out] var: Common SA variables struct (to set Omega). */ -namespace Omega { +struct Omega { /*! \brief Baseline. */ struct Bsl { @@ -250,13 +253,14 @@ struct Edw { var.Omega = sqrt(max(Sbar, 0.0)); } }; -} // namespace Omega +}; /*! - * \brief Classes to set the ft2 term and its derivative. + * \brief SA classes to set the ft2 term and its derivative. + * \ingroup SourceDiscr * \param[in,out] var: Common SA variables struct. */ -namespace ft2 { +struct ft2 { /*! \brief No-ft2 term. */ struct Zero { @@ -274,15 +278,16 @@ struct Nonzero { var.d_ft2 = -2.0 * var.ct4 * var.Ji * var.ft2 * var.d_Ji; } }; -} // namespace ft2 +}; /*! - * \brief Classes to compute the modified vorticity (\tilde{S}) and its derivative. + * \brief SA classes to compute the modified vorticity (\tilde{S}) and its derivative. + * \ingroup SourceDiscr * \param[in] nue: SA variable. * \param[in] nu: Laminar viscosity. * \param[in,out] var: Common SA variables struct. */ -namespace ModVort { +struct ModVort { /*! \brief Baseline. */ struct Bsl { @@ -327,14 +332,15 @@ struct Neg { * No need for Sbar ---*/ } }; -} // namespace ModVort +}; /*! - * \brief Auxiliary function r and its derivative. + * \brief SA auxiliary function r and its derivative. + * \ingroup SourceDiscr * \param[in] nue: SA variable. * \param[in,out] var: Common SA variables struct. */ -namespace r { +struct r { /*! \brief Baseline. */ struct Bsl { @@ -355,10 +361,11 @@ struct Edw { var.d_r = (1 - pow(tanh(var.r), 2.0)) * (var.d_r) / tanh(1.0); } }; -} // namespace r +}; /*! - * \brief Source terms classes: production, destruction and cross-productions term and their derivative. + * \brief SA source terms classes: production, destruction and cross-productions term and their derivative. + * \ingroup SourceDiscr * \param[in] nue: SA variable. * \param[in] var: Common SA variables struct. * \param[out] production: Production term. @@ -366,7 +373,7 @@ struct Edw { * \param[out] cross_production: CrossProduction term. * \param[out] jacobian: Derivative of the combined source term wrt nue. */ -namespace SourceTerms { +struct SourceTerms { /*! \brief Baseline (Original SA model). */ struct Bsl { @@ -432,7 +439,7 @@ struct Neg { Bsl::ComputeCrossProduction(nue, var, cross_production, jacobian); } }; -} // namespace SourceTerms +}; /* ============================================================================= * SPALART-ALLMARAS ADDITIONAL SOURCE TERMS DECORATORS @@ -440,6 +447,7 @@ struct Neg { /*! * \class CCompressibilityCorrection + * \ingroup SourceDiscr * \brief Mixing Layer Compressibility Correction (SA-comp). */ template @@ -539,6 +547,7 @@ CNumerics* SAFactoryImpl(bool use_ft2, Ts... args) { /*! * \brief Creates an SA source based on the version and modifications/correction in the config. + * \ingroup SourceDiscr */ template CNumerics* SAFactory(unsigned short nDim, const CConfig* config) { @@ -559,6 +568,7 @@ CNumerics* SAFactory(unsigned short nDim, const CConfig* config) { /*! * \class CSourcePieceWise_TurbSST + * \ingroup SourceDiscr * \brief Class for integrating the source terms of the Menter SST turbulence model equations. */ template diff --git a/SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp b/SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp index 15969f6798b..7906a54bb2d 100644 --- a/SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp +++ b/SU2_CFD/include/solvers/CDiscAdjFEASolver.hpp @@ -32,8 +32,8 @@ /*! * \class CDiscAdjFEASolver + * \ingroup DiscAdj * \brief Main class for defining the discrete adjoint solver for FE structural problems. - * \ingroup Discrete_Adjoint * \author R. Sanchez */ class CDiscAdjFEASolver final : public CSolver { diff --git a/SU2_CFD/include/solvers/CDiscAdjMeshSolver.hpp b/SU2_CFD/include/solvers/CDiscAdjMeshSolver.hpp index cf3c19f465a..ba77ac9d80b 100644 --- a/SU2_CFD/include/solvers/CDiscAdjMeshSolver.hpp +++ b/SU2_CFD/include/solvers/CDiscAdjMeshSolver.hpp @@ -33,8 +33,8 @@ /*! * \class CDiscAdjMeshSolver + * \ingroup DiscAdj * \brief Main class for defining the discrete adjoint solver for mesh deformation problems. - * \ingroup Discrete_Adjoint * \author R. Sanchez */ class CDiscAdjMeshSolver final : public CSolver { diff --git a/SU2_CFD/include/solvers/CDiscAdjSolver.hpp b/SU2_CFD/include/solvers/CDiscAdjSolver.hpp index dbf9e3f9bf9..dea2ee227ef 100644 --- a/SU2_CFD/include/solvers/CDiscAdjSolver.hpp +++ b/SU2_CFD/include/solvers/CDiscAdjSolver.hpp @@ -32,8 +32,8 @@ /*! * \class CDiscAdjSolver + * \ingroup DiscAdj * \brief Main class for defining the discrete adjoint solver. - * \ingroup Discrete_Adjoint * \author T. Albring */ class CDiscAdjSolver final : public CSolver { diff --git a/SU2_CFD/include/variables/CDiscAdjFEABoundVariable.hpp b/SU2_CFD/include/variables/CDiscAdjFEABoundVariable.hpp index 0db75b2d908..fd9516b51e7 100644 --- a/SU2_CFD/include/variables/CDiscAdjFEABoundVariable.hpp +++ b/SU2_CFD/include/variables/CDiscAdjFEABoundVariable.hpp @@ -32,8 +32,8 @@ /*! * \class CDiscAdjFEABoundVariable + * \ingroup DiscAdj * \brief Main class for defining the variables on the FEA boundaries for adjoint applications. - * \ingroup Discrete_Adjoint * \author R. Sanchez. * \version 7.4.0 "Blackbird" */ diff --git a/SU2_CFD/include/variables/CDiscAdjMeshBoundVariable.hpp b/SU2_CFD/include/variables/CDiscAdjMeshBoundVariable.hpp index 04fd29cfc6b..40ea701e37e 100644 --- a/SU2_CFD/include/variables/CDiscAdjMeshBoundVariable.hpp +++ b/SU2_CFD/include/variables/CDiscAdjMeshBoundVariable.hpp @@ -31,6 +31,10 @@ #include "CVariable.hpp" #include "../../../Common/include/containers/CVertexMap.hpp" +/*! + * \ingroup DiscAdj + * \brief Main class for defining the variables on the mesh deformation boundaries for adjoint applications. + */ class CDiscAdjMeshBoundVariable final : public CVariable { private: diff --git a/SU2_CFD/include/variables/CDiscAdjVariable.hpp b/SU2_CFD/include/variables/CDiscAdjVariable.hpp index 0a850df2278..8111fcc83b3 100644 --- a/SU2_CFD/include/variables/CDiscAdjVariable.hpp +++ b/SU2_CFD/include/variables/CDiscAdjVariable.hpp @@ -31,8 +31,8 @@ /*! * \class CDiscAdjVariable + * \ingroup DiscAdj * \brief Main class for defining the variables of the adjoint solver. - * \ingroup Discrete_Adjoint * \author T. Albring. */ class CDiscAdjVariable : public CVariable { diff --git a/SU2_CFD/include/variables/CVariable.hpp b/SU2_CFD/include/variables/CVariable.hpp index c3a7ef0a3d6..737783382e4 100644 --- a/SU2_CFD/include/variables/CVariable.hpp +++ b/SU2_CFD/include/variables/CVariable.hpp @@ -43,6 +43,7 @@ class CNEMOGas; /*! * \class CVariable + * \ingroup Variable * \brief Main class for defining the variables. * \author F. Palacios */ diff --git a/SU2_CFD/src/iteration/CFluidIteration.cpp b/SU2_CFD/src/iteration/CFluidIteration.cpp index ea5b93bbb63..1bf132c38c6 100644 --- a/SU2_CFD/src/iteration/CFluidIteration.cpp +++ b/SU2_CFD/src/iteration/CFluidIteration.cpp @@ -63,7 +63,7 @@ void CFluidIteration::Iterate(COutput* output, CIntegration**** integration, CGe (config[val_iZone]->GetDiscrete_Adjoint() && config[val_iZone]->GetFrozen_Visc_Disc()); const bool disc_adj = (config[val_iZone]->GetDiscrete_Adjoint()); - /* --- Setting up iteration values depending on if this is a + /*--- Setting up iteration values depending on if this is a steady or an unsteady simulation */ const auto InnerIter = config[val_iZone]->GetInnerIter(); From 750def191c5a1e14b5381f441bab081faf2320d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Bl=C3=BChdorn?= Date: Fri, 23 Sep 2022 14:57:35 +0200 Subject: [PATCH 21/35] CoDiPack update. --- externals/codi | 2 +- meson_scripts/init.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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' From 59b504169cef170a8c17ea4bf1afc0b108602392 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Sat, 24 Sep 2022 14:36:28 +0100 Subject: [PATCH 22/35] fix min/max problems? remove USE_VECTORIZATION from testcases --- .../linear_algebra/vector_expressions.hpp | 30 ++++++++++--------- .../numerics_simd/flow/convection/common.hpp | 6 ++-- .../naca0012/turb_NACA0012_sst.cfg | 1 - .../navierstokes/flatplate/lam_flatplate.cfg | 1 - .../flatplate/lam_flatplate_unst.cfg | 1 - TestCases/navierstokes/periodic2D/config.cfg | 1 - .../translating_NACA0012/config.cfg | 1 - TestCases/rans/naca0012/turb_NACA0012_sa.cfg | 1 - TestCases/rans/naca0012/turb_NACA0012_sst.cfg | 1 - .../naca0012/turb_NACA0012_sst_1994-KLm.cfg | 1 - .../naca0012/turb_NACA0012_sst_2003-Vm.cfg | 1 - .../rans/naca0012/turb_NACA0012_sst_2003m.cfg | 1 - .../turb_NACA0012_sst_expliciteuler.cfg | 1 - .../turb_NACA0012_sst_fixedvalues.cfg | 1 - .../rans/naca0012/turb_NACA0012_sst_sust.cfg | 1 - TestCases/rans/oneram6/turb_ONERAM6_nk.cfg | 1 - .../rans_uq/naca0012/turb_NACA0012_uq_1c.cfg | 1 - .../user_defined_functions/lam_flatplate.cfg | 1 - TestCases/vandv/rans/30p30n/config.cfg | 1 - TestCases/vandv/rans/swbli/config_sa.cfg | 1 - TestCases/vandv/rans/swbli/config_sst.cfg | 1 - config_template.cfg | 3 +- 22 files changed, 20 insertions(+), 38 deletions(-) diff --git a/Common/include/linear_algebra/vector_expressions.hpp b/Common/include/linear_algebra/vector_expressions.hpp index b1929e6860d..31e24ee26e6 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,22 @@ 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 reconstructPrimitives(Int iEdge, Int iPoint, Int break; } /*--- Detect a non-physical reconstruction based on negative pressure or density. ---*/ - /*--- Some weird issues with forward AD if this is all done in one line. ---*/ - const Double neg_p = fmin(V.i.pressure(), V.j.pressure()) < 0.0; - const Double neg_rho = fmin(V.i.density(), V.j.density()) < 0.0; - const Double neg_p_or_rho = fmax(neg_p, neg_rho); + 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. ---*/ 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/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/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/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/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/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) From 92bfafc4c4d6fda9fe5b962336e7a87f809605c3 Mon Sep 17 00:00:00 2001 From: Pedro Gomes Date: Sat, 24 Sep 2022 15:35:56 +0100 Subject: [PATCH 23/35] move doc files --- {Common/doc => Docs}/docmain.hpp | 0 {Common/doc => Docs}/logoSU2small.png | Bin Common/doc/su2_doxyfile => doxyfile | 4946 ++++++++++++------------- 3 files changed, 2454 insertions(+), 2492 deletions(-) rename {Common/doc => Docs}/docmain.hpp (100%) rename {Common/doc => Docs}/logoSU2small.png (100%) rename Common/doc/su2_doxyfile => doxyfile (94%) mode change 100644 => 100755 diff --git a/Common/doc/docmain.hpp b/Docs/docmain.hpp similarity index 100% rename from Common/doc/docmain.hpp rename to Docs/docmain.hpp diff --git a/Common/doc/logoSU2small.png b/Docs/logoSU2small.png similarity index 100% rename from Common/doc/logoSU2small.png rename to Docs/logoSU2small.png diff --git a/Common/doc/su2_doxyfile b/doxyfile old mode 100644 new mode 100755 similarity index 94% rename from Common/doc/su2_doxyfile rename to doxyfile index 58bec7c4ce8..ffe0c4c3161 --- a/Common/doc/su2_doxyfile +++ b/doxyfile @@ -1,2492 +1,2454 @@ -# Doxyfile 1.8.13 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all text -# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv -# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv -# for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = logoSU2_v3.3_small.jpeg - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 4 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines. - -ALIASES = - -# This tag can be used to specify a number of word-keyword mappings (TCL only). -# A mapping has the form "name=value". For example adding "class=itcl::class" -# will allow you to use the command class in the itcl::class meaning. - -TCL_SUBST = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, Javascript, -# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: -# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: -# Fortran. In the later case the parser tries to guess whether the code is fixed -# or free formatted code, this is the default for Fortran type files), VHDL. For -# instance to make doxygen treat .inc files as Fortran files (default is PHP), -# and .f files as C (default is Fortran), use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See http://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up -# to that level are automatically included in the table of contents, even if -# they do not have an id attribute. -# Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 0. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -TOC_INCLUDE_HEADINGS = 0 - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# (class|struct|union) declarations. If set to NO, these declarations will be -# included in the documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = ../ ../../SU2_CFD ../../SU2_GEO ../../SU2_DEF ../../SU2_SOL ../../SU2_MSH ../../SU2_DOT - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: http://www.gnu.org/software/libiconv) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, -# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf. - -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.idl \ - *.ddl \ - *.odl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.cs \ - *.d \ - *.php \ - *.php4 \ - *.php5 \ - *.phtml \ - *.inc \ - *.m \ - *.markdown \ - *.md \ - *.mm \ - *.dox \ - *.py \ - *.pyw \ - *.f90 \ - *.f95 \ - *.f03 \ - *.f08 \ - *.f \ - *.for \ - *.tcl \ - *.vhd \ - *.vhdl \ - *.ucf \ - *.qsf - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# function all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see http://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the config file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the -# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the -# cost of reduced performance. This can be particularly helpful with template -# rich C++ code for which doxygen's built-in parser lacks the necessary type -# information. -# Note: The availability of this option depends on whether or not doxygen was -# generated with the -Duse-libclang=ON option for CMake. -# The default value is: NO. - -CLANG_ASSISTED_PARSING = NO - -# If clang assisted parsing is enabled you can provide the compiler with command -# line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories -# specified with INPUT and INCLUDE_PATH. -# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. - -CLANG_OPTIONS = - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# http://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 227 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 118 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 119 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: http://developer.apple.com/tools/xcode/), introduced with -# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the master .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = YES - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# http://www.mathjax.org) which uses client side Javascript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = NO - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from http://www.mathjax.org before deployment. -# The default value is: http://cdn.mathjax.org/mathjax/latest. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /