diff --git a/.github/workflows/release-management.yml b/.github/workflows/release-management.yml
index d07819a6d4e..adba5b895b5 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 }}
@@ -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
diff --git a/AUTHORS.md b/AUTHORS.md
index 17d7bed4b80..23e1854ef8a 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -126,6 +126,7 @@ TobiKattmann
Trent Lukaczyk
VivaanKhatri
Wally Maier
+Zan Xu
aaronyicongfu
aeroamit
anilvar
diff --git a/Common/doc/docmain.hpp b/Common/doc/docmain.hpp
deleted file mode 100644
index c7a937d8180..00000000000
--- a/Common/doc/docmain.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*!
- * \file docmain.hpp
- * \brief This file contains documentation for Doxygen and does not have any significance with respect to C++.
- * \author F. Palacios
- * \version 7.4.0 "Blackbird"
- *
- * SU2 Project Website: https://su2code.github.io
- *
- * The SU2 Project is maintained by the SU2 Foundation
- * (http://su2foundation.org)
- *
- * Copyright 2012-2022, SU2 Contributors (cf. AUTHORS.md)
- *
- * SU2 is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * SU2 is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with SU2. If not, see .
- */
-
-/*!
- * \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
- * 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.
- */
-
-/*!
- * \defgroup Config Descriptions of Configuration Options.
- * \brief Group of variables that can be set using the configuration file.
- */
-
-/*!
- * \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
- * systems of equations.
- */
-
-/*!
- * \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
- * systems of equations.
- */
-
-/*!
- * \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
- * systems of equations.
- */
-
-/*!
- * \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.
- * \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.
- * \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.
- * \brief Group of classes which define the turbulence model in
- * three formulations: direct, adjoint, and linearized.
- */
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/basic_types/datatype_structure.hpp b/Common/include/basic_types/datatype_structure.hpp
index df3f872b28b..8b708830820 100644
--- a/Common/include/basic_types/datatype_structure.hpp
+++ b/Common/include/basic_types/datatype_structure.hpp
@@ -114,6 +114,21 @@ namespace SU2_TYPE {
FORCEINLINE void SetDerivative(su2double &, const passivedouble &) {}
#endif
+ /*!
+ * \brief Get the passive value of any variable. For most types return directly,
+ * specialize for su2double to call GetValue.
+ * \note This is a struct instead of a function because the return type of the
+ * su2double specialization changes.
+ */
+ template
+ struct Passive {
+ FORCEINLINE static T Value(const T& val) {return val;}
+ };
+ template <>
+ struct Passive {
+ FORCEINLINE static passivedouble Value(const su2double& val) {return GetValue(val);}
+ };
+
/*!
* \brief Casts the primitive value to int (uses GetValue, already implemented for each type).
* \param[in] data - The non-primitive datatype.
diff --git a/Common/include/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 46ff1d947d8..a394e37426d 100644
--- a/Common/include/linear_algebra/vector_expressions.hpp
+++ b/Common/include/linear_algebra/vector_expressions.hpp
@@ -33,11 +33,15 @@
#include
#include
#include
+#include
namespace VecExpr {
+/// \addtogroup 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
@@ -157,21 +161,28 @@ FORCEINLINE auto FUN(decay_t u, const CVecExpr& v) \
RETURNS( EXPR,V,S>(Bcast(u), v.derived()) \
) \
-/*--- std::max/min have issues (maybe because they return by reference).
- * For AD codi::max/min need to be used to avoid issues in debug builds. ---*/
-
-#if defined(CODI_REVERSE_TYPE) || defined(CODI_FORWARD_TYPE)
-#define max_impl math::max
-#define min_impl math::min
-#else
-#define max_impl(a,b) a=b)
-#define eq_impl(a,b) Scalar(a==b)
-#define ne_impl(a,b) Scalar(a!=b)
-#define lt_impl(a,b) Scalar(ab)
+/*--- Relational operators need to be cast to the scalar type to allow vectorization.
+ * TO_PASSIVE is used to convert active scalars to passive, which CoDi will then capture
+ * by value in its expressions, and thus dangling references are avoided. No AD info
+ * is lost since these operators are non-differentiable. ---*/
+
+#define TO_PASSIVE(IMPL) SU2_TYPE::Passive::Value(IMPL)
+#define le_impl(a,b) TO_PASSIVE(a<=b)
+#define ge_impl(a,b) TO_PASSIVE(a>=b)
+#define eq_impl(a,b) TO_PASSIVE(a==b)
+#define ne_impl(a,b) TO_PASSIVE(a!=b)
+#define lt_impl(a,b) TO_PASSIVE(ab)
MAKE_BINARY_FUN(operator<=, le_, le_impl)
MAKE_BINARY_FUN(operator>=, ge_, ge_impl)
MAKE_BINARY_FUN(operator==, eq_, eq_impl)
MAKE_BINARY_FUN(operator!=, ne_, ne_impl)
MAKE_BINARY_FUN(operator<, lt_, lt_impl)
MAKE_BINARY_FUN(operator>, gt_, gt_impl)
+#undef TO_PASSIVE
#undef le_impl
#undef ge_impl
#undef eq_impl
@@ -213,4 +229,5 @@ MAKE_BINARY_FUN(operator>, gt_, gt_impl)
#undef MAKE_BINARY_FUN
+/// @}
} // end namespace
diff --git a/Common/include/parallelization/special_vectorization.hpp b/Common/include/parallelization/special_vectorization.hpp
index 1697ec1fc32..9e4d74da021 100644
--- a/Common/include/parallelization/special_vectorization.hpp
+++ b/Common/include/parallelization/special_vectorization.hpp
@@ -27,6 +27,9 @@
// no #pragma once, header needs to be included once per specialization.
+/// \addtogroup SIMD
+/// @{
+
/*!
* \brief Symbols that need to be defined before including this header:
* \param[in] ARRAY_T - The desired specialization of simd::Array.
@@ -126,8 +129,8 @@ MAKE_BINARY_FUN(operator==, eq_p)
MAKE_BINARY_FUN(operator!=, ne_p)
MAKE_BINARY_FUN(operator<=, le_p)
MAKE_BINARY_FUN(operator>=, ge_p)
-MAKE_BINARY_FUN(max, max_p)
-MAKE_BINARY_FUN(min, min_p)
+MAKE_BINARY_FUN(fmax, max_p)
+MAKE_BINARY_FUN(fmin, min_p)
#undef MAKE_BINARY_FUN
@@ -168,3 +171,5 @@ MAKE_BINARY_FUN(pow, ::pow)
#undef SCALAR_T
#undef REGISTER_T
#undef SIZE_TAG
+
+/// @}
\ No newline at end of file
diff --git a/Common/include/parallelization/vectorization.hpp b/Common/include/parallelization/vectorization.hpp
index 364ba790b36..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;
@@ -58,7 +60,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
@@ -304,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..d5222b4437c 100644
--- a/Common/include/toolboxes/CQuasiNewtonInvLeastSquares.hpp
+++ b/Common/include/toolboxes/CQuasiNewtonInvLeastSquares.hpp
@@ -37,13 +37,14 @@
#include "CSymmetricMatrix.hpp"
/*!
- * \class A quasi-Newton fixed-point (FP) accelerator based on IQN-ILS.
+ * \brief A quasi-Newton fixed-point (FP) accelerator based on IQN-ILS.
* \note The implementation prioritizes storage, the LS problem is solved
* via the normal equations as that is easy to make parallel over MPI, it
* may however be unstable with large sample sizes (compared to QR decomp).
* 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/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 {
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/Docs/docmain.hpp b/Docs/docmain.hpp
new file mode 100644
index 00000000000..aa13b120141
--- /dev/null
+++ b/Docs/docmain.hpp
@@ -0,0 +1,220 @@
+/*!
+ * \file docmain.hpp
+ * \brief This file contains documentation for Doxygen and does not have any significance with respect to C++.
+ * \author F. Palacios
+ * \version 7.4.0 "Blackbird"
+ *
+ * SU2 Project Website: https://su2code.github.io
+ *
+ * The SU2 Project is maintained by the SU2 Foundation
+ * (http://su2foundation.org)
+ *
+ * Copyright 2012-2022, SU2 Contributors (cf. AUTHORS.md)
+ *
+ * SU2 is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SU2 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with SU2. If not, see .
+ */
+
+/*!
+ * \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. 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.
+ * 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).
+ *
+ * ### Good practices when documenting classes and functions
+ *
+ * The groups and subgroups defined in this file form a hierarchy of doxygen modules, when documenting a
+ * class or free function it should be added to a group (member functions belong to the group of the class
+ * by default), otherwise it will be difficult to navigate to the documentation of the class or function.
+ * Therefore, all classes and functions should have a doxygen documentation block with at least \\brief and
+ * \\ingroup properties.
+ *
+ * Note that this is a work in progress and not all classes and functions are currently inserted into groups.
+ */
+
+/*!
+ * \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
+ * \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
+ * systems of equations.
+ */
+
+/*!
+ * \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
+ * systems of equations.
+ */
+
+/*!
+ * \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
+ * systems of 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
+ * \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 model equations
+ * \brief Group of classes which define the turbulence model in
+ * three formulations: direct, adjoint, and linearized.
+ */
+
+/*!
+ * \defgroup Scalar_Transport Solving scalar transport equations
+ * \brief Classes to solve scalar transport equations.
+ */
+
+/*!
+ * \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 Output Screen, history, and file output
+ * \brief Classes used to define the output of the solvers in SU2.
+ */
+
+/*!
+ * \defgroup DiscAdj Discrete Adjoint
+ * \brief Classes and functions used to solve discrete adjoint equations.
+ */
+
+/*!
+ * \defgroup GradSmooth Gradient Smoothing
+ * \brief Classes and functions used to smooth gradients from the discrete adjoint method.
+ * \ingroup DiscAdj
+ */
+
+/*!
+ * \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 VecExpr Vector math expression templates
+ * \brief Expression templates for level-1 BLAS operations.
+ * \ingroup BLAS
+ */
+
+/*!
+ * \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/doc/logoSU2small.png b/Docs/logoSU2small.png
similarity index 100%
rename from Common/doc/logoSU2small.png
rename to Docs/logoSU2small.png
diff --git a/README.md b/README.md
index 14f2217d5dd..b092a036f17 100644
--- a/README.md
+++ b/README.md
@@ -91,3 +91,7 @@ We follow the popular "GitFlow" branching model for scalable development. In the
SU2 is being developed by individuals and organized teams all around the world.
A list of current contributors can be found in the AUTHORS.md file.
+
+## Documentation
+
+Code documentation can be generated by calling doxygen from the root of the project, then open Docs/html/index.html in a browser to consult the documentation.
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/CGradSmoothing.hpp b/SU2_CFD/include/numerics/CGradSmoothing.hpp
index 3c4804f4019..2590601bbb8 100644
--- a/SU2_CFD/include/numerics/CGradSmoothing.hpp
+++ b/SU2_CFD/include/numerics/CGradSmoothing.hpp
@@ -32,8 +32,8 @@
/*!
* \class CGradSmoothing
- * \brief Class for computing the stiffness matrix of the sobolev problem
- * \ingroup Grad_Smooth
+ * \brief Class for computing the stiffness matrix of the Sobolev problem
+ * \ingroup GradSmooth
* \author T. Dick
*/
class CGradSmoothing final : public CNumerics {
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/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/numerics_simd/CNumericsSIMD.cpp b/SU2_CFD/include/numerics_simd/CNumericsSIMD.cpp
index e930f214db0..80513392056 100644
--- a/SU2_CFD/include/numerics_simd/CNumericsSIMD.cpp
+++ b/SU2_CFD/include/numerics_simd/CNumericsSIMD.cpp
@@ -130,9 +130,12 @@ CNumericsSIMD* createNumerics(const CConfig& config, int iMesh, const CVariable*
* numerical methods.
*/
CNumericsSIMD* CNumericsSIMD::CreateNumerics(const CConfig& config, int nDim, int iMesh, const CVariable* turbVars) {
+#ifndef CODI_REVERSE_TYPE
if ((Double::Size < 4) && (SU2_MPI::GetRank() == MASTER_NODE)) {
- cout << "WARNING: SU2 was not compiled for an AVX-capable architecture." << endl;
+ cout << "WARNING: SU2 was not compiled for an AVX-capable architecture. Performance could be better,\n"
+ " see https://su2code.github.io/docs_v7/Build-SU2-Linux-MacOS/#compiler-optimizations" << endl;
}
+#endif
if (nDim == 2) return createNumerics<2>(config, iMesh, turbVars);
if (nDim == 3) return createNumerics<3>(config, iMesh, turbVars);
diff --git a/SU2_CFD/include/numerics_simd/CNumericsSIMD.hpp b/SU2_CFD/include/numerics_simd/CNumericsSIMD.hpp
index f22f4a35f15..3339dada920 100644
--- a/SU2_CFD/include/numerics_simd/CNumericsSIMD.hpp
+++ b/SU2_CFD/include/numerics_simd/CNumericsSIMD.hpp
@@ -58,6 +58,7 @@ using SparseMatrixType = CSysMatrix;
/*!
* \class CNumericsSIMD
+ * \ingroup ConvDiscr
* \brief Base class to define the interface.
* \note See CNumericsEmptyDecorator.
*/
diff --git a/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp b/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp
index 365314ca1a1..ab8487275c8 100644
--- a/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp
+++ b/SU2_CFD/include/numerics_simd/flow/convection/centered.hpp
@@ -36,6 +36,7 @@
/*!
* \class CCenteredBase
+ * \ingroup ConvDiscr
* \brief Base class for Centered schemes, derived classes implement
* the dissipation term in a const "finalizeFlux" method.
* \note See CRoeBase for the role of Base.
@@ -186,6 +187,7 @@ class CCenteredBase : public Base {
/*!
* \class CJSTScheme
+ * \ingroup ConvDiscr
* \brief Classical JST scheme with scalar dissipation.
*/
template
@@ -243,7 +245,7 @@ class CJSTScheme : public CCenteredBase,Decorator> {
const auto si = gatherVariables(iPoint, solution.GetSensor());
const auto sj = gatherVariables(jPoint, solution.GetSensor());
const Double eps2 = kappa2 * 0.5*(si+sj) * sc2;
- const Double eps4 = max(0.0, kappa4-eps2) * sc4;
+ const Double eps4 = fmax(0.0, kappa4-eps2) * sc4;
/*--- Update flux and Jacobians with dissipation terms. ---*/
@@ -265,6 +267,7 @@ class CJSTScheme : public CCenteredBase,Decorator> {
/*!
* \class CJSTmatScheme
+ * \ingroup ConvDiscr
* \brief JST scheme with matrix dissipation.
*/
template
@@ -321,7 +324,7 @@ class CJSTmatScheme : public CCenteredBase,Decorator> {
const auto si = gatherVariables(iPoint, solution.GetSensor());
const auto sj = gatherVariables(jPoint, solution.GetSensor());
const Double eps2 = kappa2 * 0.5*(si+sj) * sc2;
- const Double eps4 = max(0.0, kappa4-eps2) * sc4;
+ const Double eps4 = fmax(0.0, kappa4-eps2) * sc4;
const auto lapl_i = gatherVariables(iPoint, solution.GetUndivided_Laplacian());
const auto lapl_j = gatherVariables(jPoint, solution.GetUndivided_Laplacian());
@@ -357,10 +360,10 @@ class CJSTmatScheme : public CCenteredBase,Decorator> {
lambda(nDim) = projVel + avgV.speedSound()*area;
lambda(nDim+1) = projVel - avgV.speedSound()*area;
- const Double maxLambda = max(lambda(nDim), -lambda(nDim+1));
+ const Double maxLambda = fmax(lambda(nDim), -lambda(nDim+1));
for (size_t iVar = 0; iVar < nVar; ++iVar) {
- lambda(iVar) = max(abs(lambda(iVar)), entropyFix*maxLambda);
+ lambda(iVar) = fmax(abs(lambda(iVar)), entropyFix*maxLambda);
}
/*--- Update flux and Jacobians with scaled dissipation terms. ---*/
@@ -391,6 +394,7 @@ class CJSTmatScheme : public CCenteredBase,Decorator> {
/*!
* \class CJSTkeScheme
+ * \ingroup ConvDiscr
* \brief JST scheme without 4th order dissipation.
*/
template
@@ -461,6 +465,7 @@ class CJSTkeScheme : public CCenteredBase,Decorator> {
/*!
* \class CLaxScheme
+ * \ingroup ConvDiscr
* \brief Lax–Friedrichs 1st order scheme.
*/
template
diff --git a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp
index b0f5634bce3..10f245c5243 100644
--- a/SU2_CFD/include/numerics_simd/flow/convection/common.hpp
+++ b/SU2_CFD/include/numerics_simd/flow/convection/common.hpp
@@ -93,15 +93,16 @@ FORCEINLINE void musclEdgeLimited(Int iPoint,
/*!
* \brief Retrieve primitive variables for points i/j, reconstructing them if needed.
- * \param[in] iPoint, jPoint - Nodes of the edge.
+ * \param[in] iEdge, iPoint, jPoint - Edge and its nodes.
* \param[in] muscl - If true, reconstruct, else simply fetch.
+ * \param[in] V1st - Pair of compressible flow primitives for nodes i,j.
* \param[in] vector_ij - Distance vector from i to j.
* \param[in] solution - Entire solution container (a derived CVariable).
* \return Pair of primitive variables.
*/
template
-FORCEINLINE CPair reconstructPrimitives(Int iPoint, Int jPoint, bool muscl,
- LIMITER limiterType,
+FORCEINLINE CPair reconstructPrimitives(Int iEdge, Int iPoint, Int jPoint,
+ bool muscl, LIMITER limiterType,
const CPair& V1st,
const VectorDbl& vector_ij,
const VariableType& solution) {
@@ -131,7 +132,31 @@ FORCEINLINE CPair reconstructPrimitives(Int iPoint, Int jPoint, bo
musclPointLimited(jPoint, vector_ij,-0.5, limiters, gradients, V.j.all);
break;
}
- /// TODO: Extra reconstruction checks needed.
+ /*--- Detect a non-physical reconstruction based on negative pressure or density. ---*/
+ const Double neg_p_or_rho = fmax(fmin(V.i.pressure(), V.j.pressure()) < 0.0,
+ fmin(V.i.density(), V.j.density()) < 0.0);
+ /*--- Test the sign of the Roe-averaged speed of sound. ---*/
+ const Double R = sqrt(abs(V.j.density() / V.i.density()));
+ /*--- Delay dividing by R+1 until comparing enthalpy and velocity magnitude. ---*/
+ const Double enthalpy = R*V.j.enthalpy() + V.i.enthalpy();
+ Double v_squared = 0.0;
+ for (size_t iDim = 0; iDim < nDim; ++iDim) {
+ v_squared += pow(R*V.j.velocity(iDim) + V.i.velocity(iDim), 2);
+ }
+ /*--- Multiply enthalpy by R+1 since v^2 was not divided by (R+1)^2.
+ * Note: a = sqrt((gamma-1) * (H - 0.5 * v^2)) ---*/
+ const Double neg_sound_speed = enthalpy * (R+1) < 0.5 * v_squared;
+
+ /*--- Revert to first order if the state is non-physical. ---*/
+ Double bad_recon = fmax(neg_p_or_rho, neg_sound_speed);
+ /*--- Handle SIMD dimensions 1 by 1. ---*/
+ for (size_t k = 0; k < Double::Size; ++k) {
+ bad_recon[k] = solution.UpdateNonPhysicalEdgeCounter(iEdge[k], bad_recon[k]);
+ }
+ for (size_t iVar = 0; iVar < ReconVarType::nVar; ++iVar) {
+ V.i.all(iVar) = bad_recon * V1st.i.all(iVar) + (1-bad_recon) * V.i.all(iVar);
+ V.j.all(iVar) = bad_recon * V1st.j.all(iVar) + (1-bad_recon) * V.j.all(iVar);
+ }
}
return V;
}
@@ -347,21 +372,21 @@ FORCEINLINE Double roeDissipation(Int iPoint,
switch (type) {
case FD:
case FD_DUCROS: {
- Double d = max(minDissip, 1.0 - avgDissip);
+ Double d = fmax(minDissip, 1.0 - avgDissip);
if (type == FD_DUCROS) {
/*--- See Jonhsen et al. JCP 229 (2010) pag. 1234 ---*/
- d = max(d, 0.05 + 0.95*(avgSensor > 0.65));
+ d = fmax(d, 0.05 + 0.95*(avgSensor > 0.65));
}
return d;
}
case NTS:
- return max(minDissip, avgDissip);
+ return fmax(minDissip, avgDissip);
case NTS_DUCROS:
/*--- See Xiao et al. INT J HEAT FLUID FL 51 (2015) pag. 141
* https://doi.org/10.1016/j.ijheatfluidflow.2014.10.007 ---*/
- return max(minDissip, avgSensor+avgDissip - avgSensor*avgDissip);
+ return fmax(minDissip, avgSensor+avgDissip - avgSensor*avgDissip);
default:
assert(false);
diff --git a/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp b/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp
index cc544fe5b98..f3e3defc844 100644
--- a/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp
+++ b/SU2_CFD/include/numerics_simd/flow/convection/roe.hpp
@@ -36,6 +36,7 @@
/*!
* \class CRoeBase
+ * \ingroup ConvDiscr
* \brief Base class for Roe schemes, derived classes implement
* the dissipation term in a const "finalizeFlux" method.
* A base class implementing "viscousTerms" is accepted as template parameter.
@@ -116,7 +117,7 @@ class CRoeBase : public Base {
V1st.j.all = gatherVariables(jPoint, solution.GetPrimitive());
auto V = reconstructPrimitives >(
- iPoint, jPoint, muscl, typeLimiter, V1st, vector_ij, solution);
+ iEdge, iPoint, jPoint, muscl, typeLimiter, V1st, vector_ij, solution);
/*--- Compute conservative variables. ---*/
@@ -157,7 +158,7 @@ class CRoeBase : public Base {
Double maxLambda = abs(projVel) + roeAvg.speedSound;
for (size_t iVar = 0; iVar < nVar; ++iVar) {
- lambda(iVar) = max(abs(lambda(iVar)), entropyFix*maxLambda);
+ lambda(iVar) = fmax(abs(lambda(iVar)), entropyFix*maxLambda);
}
/*--- Inviscid fluxes and Jacobians. ---*/
@@ -215,6 +216,7 @@ class CRoeBase : public Base {
/*!
* \class CRoeScheme
+ * \ingroup ConvDiscr
* \brief Classical Roe scheme.
*/
template
diff --git a/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp b/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp
index e7be7c72be7..9484315d6ab 100644
--- a/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp
+++ b/SU2_CFD/include/numerics_simd/flow/diffusion/common.hpp
@@ -130,7 +130,7 @@ FORCEINLINE void addQCR(const MatrixType& grad, MatrixDbl& tau) {
for (size_t jDim = 0; jDim < nDim; ++jDim)
denom += grad(iDim+1,jDim) * grad(iDim+1,jDim);
- const Double factor = 1 / sqrt(max(denom,1e-10));
+ const Double factor = 1 / sqrt(fmax(denom,1e-10));
/*--- Compute the QCR term, and update the stress tensor. ---*/
MatrixDbl qcr;
@@ -159,8 +159,8 @@ FORCEINLINE void addTauWall(Int iPoint, Int jPoint,
const VectorDbl& unitNormal,
MatrixDbl& tau) {
- Double tauWall_i = max(gatherVariables(iPoint, tauWall), 0.0);
- Double tauWall_j = max(gatherVariables(jPoint, tauWall), 0.0);
+ Double tauWall_i = fmax(gatherVariables(iPoint, tauWall), 0.0);
+ Double tauWall_j = fmax(gatherVariables(jPoint, tauWall), 0.0);
Double isWall_i = tauWall_i > 0.0;
Double isWall_j = tauWall_j > 0.0;
@@ -171,7 +171,8 @@ FORCEINLINE void addTauWall(Int iPoint, Int jPoint,
Double tauWall_ij = (tauWall_i+tauWall_j) * isNormalEdge;
/*--- Scale is 1 for those edges, i.e. tau is not changed. ---*/
- Double scale = tauWall_ij / norm(tangentProjection(tau,unitNormal)) + (1.0-isNormalEdge);
+ Double scale =
+ tauWall_ij / fmax(norm(tangentProjection(tau,unitNormal)), EPS) + (1.0-isNormalEdge);
for (size_t iDim = 0; iDim < nDim; ++iDim)
for (size_t jDim = 0; jDim < nDim; ++jDim)
diff --git a/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp b/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp
index 1e0f40917de..39e6b508974 100644
--- a/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp
+++ b/SU2_CFD/include/numerics_simd/flow/diffusion/viscous_fluxes.hpp
@@ -34,6 +34,7 @@
/*!
* \class CNoViscousFlux
+ * \ingroup ViscDiscr
* \brief Numerics classes that accept a compile-time decorator should use this
* class template as a "do-nothing" decorator and as a link to the interface when
* they are not being decorated.
@@ -63,6 +64,7 @@ class CNoViscousFlux : public CNumericsSIMD {
/*!
* \class CCompressibleViscousFluxBase
+ * \ingroup ViscDiscr
* \brief Decorator class to add viscous fluxes (compressible flow).
*/
template
@@ -248,6 +250,7 @@ class CCompressibleViscousFluxBase : public CNumericsSIMD {
/*!
* \class CCompressibleViscousFlux
+ * \ingroup ViscDiscr
* \brief Decorator class to add viscous fluxes (compressible flow, ideal gas).
*/
template
@@ -306,6 +309,7 @@ class CCompressibleViscousFlux : public CCompressibleViscousFluxBase
diff --git a/SU2_CFD/include/output/COutput.hpp b/SU2_CFD/include/output/COutput.hpp
index 73661f54c8a..6caefdca1a4 100644
--- a/SU2_CFD/include/output/COutput.hpp
+++ b/SU2_CFD/include/output/COutput.hpp
@@ -58,9 +58,9 @@ class CConfig;
using namespace std;
/*!
- * \class COutput
* \brief Class for writing the convergence history and to write solution data to file.
* \author T.Albring
+ * \ingroup Output
*/
class COutput {
protected:
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/solvers/CEulerSolver.hpp b/SU2_CFD/include/solvers/CEulerSolver.hpp
index e1aaf1602ff..ef8c6b6af05 100644
--- a/SU2_CFD/include/solvers/CEulerSolver.hpp
+++ b/SU2_CFD/include/solvers/CEulerSolver.hpp
@@ -32,6 +32,7 @@
/*!
* \class CEulerSolver
+ * \ingroup Euler_Equations
* \brief Class for compressible inviscid flow problems, serves as base for Navier-Stokes/RANS.
* \author F. Palacios
*/
@@ -43,8 +44,6 @@ class CEulerSolver : public CFVMFlowSolverBase NonPhysicalEdgeCounter; /*!< \brief Non-physical reconstruction counter for each edge. */
-
su2double AllBound_CEquivArea_Inv=0.0; /*!< \brief equivalent area coefficient (inviscid contribution) for all the boundaries. */
vector CEquivArea_Mnt; /*!< \brief Equivalent area (inviscid contribution) for each boundary. */
vector CEquivArea_Inv; /*!< \brief Equivalent area (inviscid contribution) for each boundary. */
diff --git a/SU2_CFD/include/solvers/CFEASolver.hpp b/SU2_CFD/include/solvers/CFEASolver.hpp
index 19adf59f0cd..ae06c383e3d 100644
--- a/SU2_CFD/include/solvers/CFEASolver.hpp
+++ b/SU2_CFD/include/solvers/CFEASolver.hpp
@@ -31,6 +31,7 @@
/*!
* \class CFEASolver
+ * \ingroup Elasticity_Equations
* \brief Main class for defining a FEM solver for elastic structural problems.
* \author R. Sanchez.
*/
diff --git a/SU2_CFD/include/solvers/CFEASolverBase.hpp b/SU2_CFD/include/solvers/CFEASolverBase.hpp
index 59ba222495b..ba40652e750 100644
--- a/SU2_CFD/include/solvers/CFEASolverBase.hpp
+++ b/SU2_CFD/include/solvers/CFEASolverBase.hpp
@@ -33,6 +33,11 @@
#include "../../../Common/include/geometry/elements/CElement.hpp"
#include "../../../Common/include/parallelization/omp_structure.hpp"
+/*!
+ * \class CFEASolverBase
+ * \ingroup Elasticity_Equations
+ * \brief Base class for FEM elasticity solvers.
+ */
class CFEASolverBase : public CSolver {
public:
enum : size_t {MAXNNODE_2D = 4};
diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp b/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp
index cbf932a0bb6..dfcf1b055d8 100644
--- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp
+++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp
@@ -269,13 +269,50 @@ class CFVMFlowSolverBase : public CSolver {
/*!
* \brief Method to compute convective and viscous residual contribution using vectorized numerics.
*/
- void EdgeFluxResidual(const CGeometry *geometry, const CSolver* const* solvers, const CConfig *config);
+ void EdgeFluxResidual(const CGeometry *geometry, const CSolver* const* solvers, CConfig *config);
/*!
* \brief Sum the edge fluxes for each cell to populate the residual vector, only used on coarse grids.
*/
void SumEdgeFluxes(const CGeometry* geometry);
+ /*!
+ * \brief Sums edge fluxes (if required) and computes the global error counter.
+ * \param[in] pausePreacc - Whether preaccumulation was paused durin.
+ * \param[in] localCounter - Thread-local error counter.
+ * \param[in,out] config - Used to set the global error counter.
+ */
+ inline void FinalizeResidualComputation(const CGeometry *geometry, bool pausePreacc,
+ unsigned long localCounter, CConfig* config) {
+
+ /*--- Restore preaccumulation and adjoint evaluation state. ---*/
+ AD::ResumePreaccumulation(pausePreacc);
+ if (!ReducerStrategy) AD::EndNoSharedReading();
+
+ if (ReducerStrategy) {
+ SumEdgeFluxes(geometry);
+ if (config->GetKind_TimeIntScheme() == EULER_IMPLICIT) {
+ Jacobian.SetDiagonalAsColumnSum();
+ }
+ }
+
+ /*--- Warning message about non-physical reconstructions. ---*/
+ if ((MGLevel == MESH_0) && (config->GetComm_Level() == COMM_FULL)) {
+ /*--- Add counter results for all threads. ---*/
+ SU2_OMP_ATOMIC
+ ErrorCounter += localCounter;
+
+ /*--- Add counter results for all ranks. ---*/
+ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS
+ {
+ localCounter = ErrorCounter;
+ SU2_MPI::Reduce(&localCounter, &ErrorCounter, 1, MPI_UNSIGNED_LONG, MPI_SUM, MASTER_NODE, SU2_MPI::GetComm());
+ config->SetNonphysical_Reconstr(ErrorCounter);
+ }
+ END_SU2_OMP_SAFE_GLOBAL_ACCESS
+ }
+ }
+
/*!
* \brief Computes and sets the required auxilliary vars (and gradients) for axisymmetric flow.
*/
diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl
index d7fcda4d62a..1e84b6efae5 100644
--- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl
+++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl
@@ -325,12 +325,6 @@ void CFVMFlowSolverBase::HybridParallelInitialization(const CConfig& confi
#endif
<< endl;
}
-
- if (config.GetUseVectorization() && (omp_get_max_threads() > 1) &&
- (config.GetEdgeColoringGroupSize() % Double::Size != 0)) {
- SU2_MPI::Error("When using vectorization, the EDGE_COLORING_GROUP_SIZE must be divisible "
- "by the SIMD length (2, 4, or 8).", CURRENT_FUNCTION);
- }
}
if (ReducerStrategy) EdgeFluxes.Initialize(geometry.GetnEdge(), geometry.GetnEdge(), nVar, nullptr);
@@ -1575,11 +1569,22 @@ void CFVMFlowSolverBase::BC_Custom(CGeometry* geometry, CSolver** solver_c
template
void CFVMFlowSolverBase::EdgeFluxResidual(const CGeometry *geometry,
const CSolver* const* solvers,
- const CConfig *config) {
+ CConfig *config) {
if (!edgeNumerics) {
+ if (!ReducerStrategy && (omp_get_max_threads() > 1) &&
+ (config->GetEdgeColoringGroupSize() % Double::Size != 0)) {
+ SU2_MPI::Error("When using vectorization, the EDGE_COLORING_GROUP_SIZE must be divisible "
+ "by the SIMD length (2, 4, or 8).", CURRENT_FUNCTION);
+ }
InstantiateEdgeNumerics(solvers, config);
}
+ /*--- Non-physical counter. ---*/
+ unsigned long counterLocal = 0;
+ SU2_OMP_MASTER
+ ErrorCounter = 0;
+ END_SU2_OMP_MASTER
+
/*--- For hybrid parallel AD, pause preaccumulation if there is shared reading of
* variables, otherwise switch to the faster adjoint evaluation mode. ---*/
bool pausePreacc = false;
@@ -1604,20 +1609,15 @@ void CFVMFlowSolverBase::EdgeFluxResidual(const CGeometry *geometry,
} else {
edgeNumerics->ComputeFlux(iEdge, *config, *geometry, *nodes, UpdateType::COLORING, mask, LinSysRes, Jacobian);
}
+ if (MGLevel == MESH_0) {
+ for (auto j = 0ul; j < Double::Size; ++j)
+ counterLocal += (nodes->NonPhysicalEdgeCounter[iEdge[j]] > 0);
+ }
}
END_SU2_OMP_FOR
}
- /*--- Restore preaccumulation and adjoint evaluation state. ---*/
- AD::ResumePreaccumulation(pausePreacc);
- if (!ReducerStrategy) AD::EndNoSharedReading();
-
- if (ReducerStrategy) {
- SumEdgeFluxes(geometry);
- if (config->GetKind_TimeIntScheme() == EULER_IMPLICIT) {
- Jacobian.SetDiagonalAsColumnSum();
- }
- }
+ FinalizeResidualComputation(geometry, pausePreacc, counterLocal, config);
}
template
diff --git a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp
index 62f53cb94fe..a3733c3d1f8 100644
--- a/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp
+++ b/SU2_CFD/include/solvers/CGradientSmoothingSolver.hpp
@@ -32,9 +32,10 @@
#include "../variables/CSobolevSmoothingVariable.hpp"
#include "CFEASolverBase.hpp"
-/*! \class CGradientSmoothingSolver
- * \brief Main class for defining a gradient smoothing.
- * \author T. Dick.
+/*!
+ * \brief Main class for defining a Sobolev-based gradient smoothing.
+ * \author T. Dick.
+ * \ingroup GradSmooth
*/
class CGradientSmoothingSolver final : public CFEASolverBase {
public:
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/solvers/CMeshSolver.hpp b/SU2_CFD/include/solvers/CMeshSolver.hpp
index 5d50d4ba9b9..e50611b4c4b 100644
--- a/SU2_CFD/include/solvers/CMeshSolver.hpp
+++ b/SU2_CFD/include/solvers/CMeshSolver.hpp
@@ -32,6 +32,10 @@
#include "../variables/CMeshBoundVariable.hpp"
#include "../variables/CMeshElement.hpp"
+/*!
+ * \brief Mesh deformation solver (pseudo elasticity).
+ * \ingroup Elasticity_Equations
+ */
class CMeshSolver final : public CFEASolver {
protected:
diff --git a/SU2_CFD/include/solvers/CScalarSolver.hpp b/SU2_CFD/include/solvers/CScalarSolver.hpp
index c8d8071b016..053f7704e04 100644
--- a/SU2_CFD/include/solvers/CScalarSolver.hpp
+++ b/SU2_CFD/include/solvers/CScalarSolver.hpp
@@ -33,9 +33,9 @@
#include "CSolver.hpp"
/*!
- * \class CScalarSolver
* \brief Main class for defining a scalar solver.
* \tparam VariableType - Class of variable used by the solver inheriting from this template.
+ * \ingroup Scalar_Transport
*/
template
class CScalarSolver : public CSolver {
diff --git a/SU2_CFD/include/solvers/CSpeciesSolver.hpp b/SU2_CFD/include/solvers/CSpeciesSolver.hpp
index 91a18425855..6c1294fd64e 100644
--- a/SU2_CFD/include/solvers/CSpeciesSolver.hpp
+++ b/SU2_CFD/include/solvers/CSpeciesSolver.hpp
@@ -32,9 +32,9 @@
#include "CScalarSolver.hpp"
/*!
- * \class CSpeciesSolver
* \brief Main class for defining the species transport solver.
* \author T. Kattmann.
+ * \ingroup Scalar_Transport
*/
class CSpeciesSolver : public CScalarSolver {
protected:
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/CFlowVariable.hpp b/SU2_CFD/include/variables/CFlowVariable.hpp
index 9426dbef8d5..501b0fd4a1f 100644
--- a/SU2_CFD/include/variables/CFlowVariable.hpp
+++ b/SU2_CFD/include/variables/CFlowVariable.hpp
@@ -66,6 +66,23 @@ class CFlowVariable : public CVariable {
unsigned long nprimvargrad, const CConfig* config);
public:
+ mutable su2vector NonPhysicalEdgeCounter; /*!< \brief Non-physical reconstruction counter for each edge. */
+ /*!
+ * \brief Updates the non-physical counter of an edge.
+ * \param[in] iEdge - Edge index.
+ * \param[in] isNonPhys - Should be 1 (true) if a non-physical reconstruction was occurred.
+ * \return Whether the reconstruction should be limited to first order, based on the counter.
+ */
+ template
+ inline T UpdateNonPhysicalEdgeCounter(unsigned long iEdge, const T& isNonPhys) const {
+ if (isNonPhys != 0) {
+ /*--- Force 1st order for this edge for at least 20 iterations. ---*/
+ NonPhysicalEdgeCounter[iEdge] = 21;
+ }
+ NonPhysicalEdgeCounter[iEdge] = std::max(0, NonPhysicalEdgeCounter[iEdge] - 1);
+ return static_cast(NonPhysicalEdgeCounter[iEdge] > 0);
+ }
+
/*!
* \brief Get a primitive variable.
* \param[in] iPoint - Point index.
diff --git a/SU2_CFD/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();
diff --git a/SU2_CFD/src/output/CFlowCompFEMOutput.cpp b/SU2_CFD/src/output/CFlowCompFEMOutput.cpp
index 30f53891692..4a3626172fe 100644
--- a/SU2_CFD/src/output/CFlowCompFEMOutput.cpp
+++ b/SU2_CFD/src/output/CFlowCompFEMOutput.cpp
@@ -255,9 +255,9 @@ void CFlowCompFEMOutput::LoadHistoryData(CConfig *config, CGeometry *geometry, C
SetHistoryOutputValue("AOA", config->GetAoA());
SetHistoryOutputValue("CFL_NUMBER", config->GetCFL(MESH_0));
- /*--- Set the analyse surface history values --- */
-
- SetAnalyzeSurface(solver, geometry, config, false);
+ if (config->GetnMarker_Analyze() > 0) {
+ SU2_MPI::Error("SetAnalyzeSurface is not implemented for FEM-DG solver.", CURRENT_FUNCTION);
+ }
/*--- Set aeroydnamic coefficients --- */
diff --git a/SU2_CFD/src/solvers/CEulerSolver.cpp b/SU2_CFD/src/solvers/CEulerSolver.cpp
index 8563cf52d01..81e81fe660b 100644
--- a/SU2_CFD/src/solvers/CEulerSolver.cpp
+++ b/SU2_CFD/src/solvers/CEulerSolver.cpp
@@ -148,8 +148,6 @@ CEulerSolver::CEulerSolver(CGeometry *geometry, CConfig *config,
Allocate(*config);
- NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0;
-
/*--- MPI + OpenMP initialization. ---*/
HybridParallelInitialization(*config, *geometry);
@@ -282,6 +280,10 @@ CEulerSolver::CEulerSolver(CGeometry *geometry, CConfig *config,
}
SetBaseClassPointerToNodes();
+ if (iMesh == MESH_0) {
+ nodes->NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0;
+ }
+
/*--- Check that the initial solution is physical, report any non-physical nodes ---*/
counter_local = 0;
@@ -1663,17 +1665,19 @@ void CEulerSolver::Centered_Residual(CGeometry *geometry, CSolver **solver_conta
void CEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_container,
CNumerics **numerics_container, CConfig *config, unsigned short iMesh) {
- if (config->GetUseVectorization()) {
+ const bool ideal_gas = (config->GetKind_FluidModel() == STANDARD_AIR) ||
+ (config->GetKind_FluidModel() == IDEAL_GAS);
+ const bool low_mach_corr = config->Low_Mach_Correction();
+
+ /*--- Use vectorization if the scheme supports it. ---*/
+ if (config->GetKind_Upwind_Flow() == ROE && ideal_gas && !low_mach_corr) {
EdgeFluxResidual(geometry, solver_container, config);
return;
}
const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT);
- const bool ideal_gas = (config->GetKind_FluidModel() == STANDARD_AIR) ||
- (config->GetKind_FluidModel() == IDEAL_GAS);
const bool roe_turkel = (config->GetKind_Upwind_Flow() == TURKEL);
- const bool low_mach_corr = config->Low_Mach_Correction();
const auto kind_dissipation = config->GetKind_RoeLowDiss();
const bool muscl = (config->GetMUSCL_Flow() && (iMesh == MESH_0));
@@ -1816,13 +1820,7 @@ void CEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_contain
const bool neg_sound_speed = ((Gamma-1)*(RoeEnthalpy-0.5*sq_vel) < 0.0);
bool bad_recon = neg_sound_speed || neg_pres_or_rho_i || neg_pres_or_rho_j;
- if (bad_recon) {
- /*--- Force 1st order for this edge for at least 20 iterations. ---*/
- NonPhysicalEdgeCounter[iEdge] = 20;
- } else if (NonPhysicalEdgeCounter[iEdge] > 0) {
- --NonPhysicalEdgeCounter[iEdge];
- bad_recon = true;
- }
+ bad_recon = nodes->UpdateNonPhysicalEdgeCounter(iEdge, bad_recon);
counter_local += bad_recon;
numerics->SetPrimitive(bad_recon? V_i : Primitive_i, bad_recon? V_j : Primitive_j);
@@ -1881,33 +1879,7 @@ void CEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_contain
END_SU2_OMP_FOR
} // end color loop
- /*--- Restore preaccumulation and adjoint evaluation state. ---*/
- AD::ResumePreaccumulation(pausePreacc);
- if (!ReducerStrategy) AD::EndNoSharedReading();
-
- if (ReducerStrategy) {
- SumEdgeFluxes(geometry);
- if (implicit)
- Jacobian.SetDiagonalAsColumnSum();
- }
-
- /*--- Warning message about non-physical reconstructions. ---*/
-
- if ((iMesh == MESH_0) && (config->GetComm_Level() == COMM_FULL)) {
- /*--- Add counter results for all threads. ---*/
- SU2_OMP_ATOMIC
- ErrorCounter += counter_local;
-
- /*--- Add counter results for all ranks. ---*/
- BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS
- {
- counter_local = ErrorCounter;
- SU2_MPI::Reduce(&counter_local, &ErrorCounter, 1, MPI_UNSIGNED_LONG, MPI_SUM, MASTER_NODE, SU2_MPI::GetComm());
- config->SetNonphysical_Reconstr(ErrorCounter);
- }
- END_SU2_OMP_SAFE_GLOBAL_ACCESS
- }
-
+ FinalizeResidualComputation(geometry, pausePreacc, counter_local, config);
}
void CEulerSolver::ComputeConsistentExtrapolation(CFluidModel *fluidModel, unsigned short nDim,
diff --git a/SU2_CFD/src/solvers/CIncEulerSolver.cpp b/SU2_CFD/src/solvers/CIncEulerSolver.cpp
index 82a0e4ce033..face27fefa0 100644
--- a/SU2_CFD/src/solvers/CIncEulerSolver.cpp
+++ b/SU2_CFD/src/solvers/CIncEulerSolver.cpp
@@ -149,8 +149,6 @@ CIncEulerSolver::CIncEulerSolver(CGeometry *geometry, CConfig *config, unsigned
Allocate(*config);
- NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0;
-
/*--- MPI + OpenMP initialization. ---*/
HybridParallelInitialization(*config, *geometry);
@@ -216,6 +214,10 @@ CIncEulerSolver::CIncEulerSolver(CGeometry *geometry, CConfig *config, unsigned
}
SetBaseClassPointerToNodes();
+ if (iMesh == MESH_0) {
+ nodes->NonPhysicalEdgeCounter.resize(geometry->GetnEdge()) = 0;
+ }
+
/*--- Initial comms. ---*/
CommunicateInitialState(geometry, config);
@@ -1247,13 +1249,7 @@ void CIncEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_cont
const bool neg_density_j = (Primitive_j[prim_idx.Density()] < 0.0);
bool bad_recon = neg_temperature_i || neg_temperature_j || neg_density_i || neg_density_j;
- if (bad_recon) {
- /*--- Force 1st order for this edge for at least 20 iterations. ---*/
- NonPhysicalEdgeCounter[iEdge] = 20;
- } else if (NonPhysicalEdgeCounter[iEdge] > 0) {
- --NonPhysicalEdgeCounter[iEdge];
- bad_recon = true;
- }
+ bad_recon = nodes->UpdateNonPhysicalEdgeCounter(iEdge, bad_recon);
counter_local += bad_recon;
if (bad_recon) {
@@ -1302,33 +1298,7 @@ void CIncEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_cont
END_SU2_OMP_FOR
} // end color loop
- /*--- Restore preaccumulation and adjoint evaluation state. ---*/
- AD::ResumePreaccumulation(pausePreacc);
- if (!ReducerStrategy) AD::EndNoSharedReading();
-
- if (ReducerStrategy) {
- SumEdgeFluxes(geometry);
- if (implicit)
- Jacobian.SetDiagonalAsColumnSum();
- }
-
- /*--- Warning message about non-physical reconstructions. ---*/
-
- if ((iMesh == MESH_0) && (config->GetComm_Level() == COMM_FULL)) {
- /*--- Add counter results for all threads. ---*/
- SU2_OMP_ATOMIC
- ErrorCounter += counter_local;
-
- /*--- Add counter results for all ranks. ---*/
- BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS
- {
- counter_local = ErrorCounter;
- SU2_MPI::Reduce(&counter_local, &ErrorCounter, 1, MPI_UNSIGNED_LONG, MPI_SUM, MASTER_NODE, SU2_MPI::GetComm());
- config->SetNonphysical_Reconstr(ErrorCounter);
- }
- END_SU2_OMP_SAFE_GLOBAL_ACCESS
- }
-
+ FinalizeResidualComputation(geometry, pausePreacc, counter_local, config);
}
void CIncEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_container,
diff --git a/SU2_GEO/src/SU2_GEO.cpp b/SU2_GEO/src/SU2_GEO.cpp
index 911747af469..509778f251d 100644
--- a/SU2_GEO/src/SU2_GEO.cpp
+++ b/SU2_GEO/src/SU2_GEO.cpp
@@ -677,6 +677,8 @@ int main(int argc, char *argv[]) {
for (iFFDBox = 0; iFFDBox < surface_movement->GetnFFDBox(); iFFDBox++) {
+ Local_MoveSurface = false;
+
switch ( config_container[ZONE_0]->GetDesign_Variable(iDV) ) {
case FFD_CONTROL_POINT_2D : Local_MoveSurface = surface_movement->SetFFDCPChange_2D(geometry_container[ZONE_0], config_container[ZONE_0], FFDBox[iFFDBox], FFDBox, iDV, true); break;
case FFD_CAMBER_2D : Local_MoveSurface = surface_movement->SetFFDCamber_2D(geometry_container[ZONE_0], config_container[ZONE_0], FFDBox[iFFDBox], FFDBox, iDV, true); break;
diff --git a/TestCases/cont_adj_euler/naca0012/of_grad_cd_disc.dat.ref b/TestCases/cont_adj_euler/naca0012/of_grad_cd_disc.dat.ref
index b471e28d314..272a21372a2 100644
--- a/TestCases/cont_adj_euler/naca0012/of_grad_cd_disc.dat.ref
+++ b/TestCases/cont_adj_euler/naca0012/of_grad_cd_disc.dat.ref
@@ -1,39 +1,39 @@
VARIABLES="VARIABLE" , "GRADIENT" , "FINDIFF_STEP"
- 0 , -2654.17 , 0.001
- 1 , -12995.5 , 0.001
- 2 , -21781.7 , 0.001
- 3 , -27675.9 , 0.001
- 4 , -30438.6 , 0.001
- 5 , -30444.6 , 0.001
- 6 , -28343.8 , 0.001
- 7 , -24794.9 , 0.001
- 8 , -20330.1 , 0.001
- 9 , -15377.4 , 0.001
- 10 , -10418.8 , 0.001
- 11 , -6202.42 , 0.001
- 12 , -3878.85 , 0.001
- 13 , -4911.73 , 0.001
- 14 , -10574.3 , 0.001
- 15 , -20611.7 , 0.001
- 16 , -30111.5 , 0.001
- 17 , -26295.8 , 0.001
- 18 , -62395.3 , 0.001
- 19 , -2807.68 , 0.001
- 20 , -838.255 , 0.001
- 21 , -672.494 , 0.001
- 22 , -1776.6 , 0.001
- 23 , -5721.22 , 0.001
- 24 , -13719.0 , 0.001
- 25 , -25698.8 , 0.001
- 26 , -40060.1 , 0.001
- 27 , -53726.4 , 0.001
- 28 , -62410.5 , 0.001
- 29 , -61286.9 , 0.001
- 30 , -46498.5 , 0.001
- 31 , -17834.2 , 0.001
- 32 , 18190.2 , 0.001
- 33 , 48451.4 , 0.001
+ 0 , -2656.96 , 0.001
+ 1 , -12995.9 , 0.001
+ 2 , -21781.3 , 0.001
+ 3 , -27675.3 , 0.001
+ 4 , -30437.9 , 0.001
+ 5 , -30443.9 , 0.001
+ 6 , -28343.1 , 0.001
+ 7 , -24794.2 , 0.001
+ 8 , -20329.4 , 0.001
+ 9 , -15376.6 , 0.001
+ 10 , -10418.0 , 0.001
+ 11 , -6201.67 , 0.001
+ 12 , -3878.08 , 0.001
+ 13 , -4910.93 , 0.001
+ 14 , -10573.5 , 0.001
+ 15 , -20610.7 , 0.001
+ 16 , -30110.4 , 0.001
+ 17 , -26294.5 , 0.001
+ 18 , -62393.8 , 0.001
+ 19 , -2797.26 , 0.001
+ 20 , -832.067 , 0.001
+ 21 , -668.081 , 0.001
+ 22 , -1773.25 , 0.001
+ 23 , -5718.86 , 0.001
+ 24 , -13717.8 , 0.001
+ 25 , -25699.0 , 0.001
+ 26 , -40061.9 , 0.001
+ 27 , -53729.8 , 0.001
+ 28 , -62415.6 , 0.001
+ 29 , -61293.4 , 0.001
+ 30 , -46505.9 , 0.001
+ 31 , -17841.7 , 0.001
+ 32 , 18183.8 , 0.001
+ 33 , 48447.5 , 0.001
34 , 62322.0 , 0.001
- 35 , 64135.8 , 0.001
- 36 , 54563.9 , 0.001
- 37 , 64854.5 , 0.001
+ 35 , 64139.5 , 0.001
+ 36 , 54568.2 , 0.001
+ 37 , 64856.8 , 0.001
diff --git a/TestCases/disc_adj_fsi/dyn_fsi/grad_dv.opt.ref b/TestCases/disc_adj_fsi/dyn_fsi/grad_dv.opt.ref
index c380783455e..0bab88b33d0 100644
--- a/TestCases/disc_adj_fsi/dyn_fsi/grad_dv.opt.ref
+++ b/TestCases/disc_adj_fsi/dyn_fsi/grad_dv.opt.ref
@@ -1,9 +1,9 @@
INDEX GRAD
-0 -3.461460562561343e-03
-1 -1.841786233479942e-03
-2 -7.915535761739026e-04
-3 -2.739621893483675e-04
-4 -2.734869271695357e-04
-5 -7.881162914578071e-04
-6 -1.828978375508056e-03
-7 -3.427219521629237e-03
+0 -3.461460630332286e-03
+1 -1.841786279602490e-03
+2 -7.915536035493717e-04
+3 -2.739622003666185e-04
+4 -2.734869244046031e-04
+5 -7.881162775931060e-04
+6 -1.828978353197476e-03
+7 -3.427219493292633e-03
diff --git a/TestCases/disc_adj_rans/naca0012/turb_NACA0012_sst.cfg b/TestCases/disc_adj_rans/naca0012/turb_NACA0012_sst.cfg
index 48ccf097633..ae362b476ec 100644
--- a/TestCases/disc_adj_rans/naca0012/turb_NACA0012_sst.cfg
+++ b/TestCases/disc_adj_rans/naca0012/turb_NACA0012_sst.cfg
@@ -143,7 +143,6 @@ MG_DAMP_PROLONGATION= 0.75
% Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC,
% TURKEL_PREC, MSW)
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
%
% Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER)
MUSCL_FLOW= YES
diff --git a/TestCases/hybrid_regression.py b/TestCases/hybrid_regression.py
index de1463a59b3..13be88ee444 100644
--- a/TestCases/hybrid_regression.py
+++ b/TestCases/hybrid_regression.py
@@ -100,7 +100,7 @@ def main():
flatplate.cfg_dir = "navierstokes/flatplate"
flatplate.cfg_file = "lam_flatplate.cfg"
flatplate.test_iter = 100
- flatplate.test_vals = [-9.154121, -3.663159, 0.001112, 0.036277, 2.361500, -2.325300, -2.278800, -2.278800]
+ flatplate.test_vals = [-9.154121, -3.663180, 0.001112, 0.036277, 2.361500, -2.325300, -2.278800, -2.278800]
flatplate.test_vals_aarch64 = [-9.154130, -3.663197, 0.001112, 0.036277, 2.361500, -2.325300, -2.278800, -2.278800]
test_list.append(flatplate)
@@ -109,7 +109,7 @@ def main():
cylinder.cfg_dir = "navierstokes/cylinder"
cylinder.cfg_file = "lam_cylinder.cfg"
cylinder.test_iter = 25
- cylinder.test_vals = [-6.765429, -1.297425, 0.019571, 0.310232, 0.123270]
+ cylinder.test_vals = [-6.765429, -1.297425, 0.019571, 0.310230, 0.123270]
cylinder.test_vals_aarch64 = [-6.765429, -1.297425, 0.019571, 0.310231, 0.123270]
test_list.append(cylinder)
@@ -118,7 +118,7 @@ def main():
cylinder_lowmach.cfg_dir = "navierstokes/cylinder"
cylinder_lowmach.cfg_file = "cylinder_lowmach.cfg"
cylinder_lowmach.test_iter = 25
- cylinder_lowmach.test_vals = [-6.850130, -1.388096, -0.056036, 108.140811, 0.007988]
+ cylinder_lowmach.test_vals = [-6.850130, -1.388096, -0.056036, 108.140806, 0.007988]
cylinder_lowmach.test_vals_aarch64 = [-6.850130, -1.388096, -0.056036, 108.140813, 0.007988]
test_list.append(cylinder_lowmach)
@@ -127,7 +127,7 @@ def main():
poiseuille.cfg_dir = "navierstokes/poiseuille"
poiseuille.cfg_file = "lam_poiseuille.cfg"
poiseuille.test_iter = 10
- poiseuille.test_vals = [-5.048282, 0.650814, 0.008714, 13.677678, -2.054800]
+ poiseuille.test_vals = [-5.048283, 0.650813, 0.008713, 13.677671, -2.054800]
poiseuille.test_vals_aarch64 = [-5.048282, 0.650814, 0.008713, 13.677691, -2.054800]
test_list.append(poiseuille)
@@ -136,7 +136,7 @@ def main():
poiseuille_profile.cfg_dir = "navierstokes/poiseuille"
poiseuille_profile.cfg_file = "profile_poiseuille.cfg"
poiseuille_profile.test_iter = 10
- poiseuille_profile.test_vals = [-12.494712, -7.710813, -0.000000, 2.085796]
+ poiseuille_profile.test_vals = [-12.494719, -7.711541, -0.000000, 2.085796]
poiseuille_profile.test_vals_aarch64 = [-12.494672, -7.709812, -0.000000, 2.085796]
test_list.append(poiseuille_profile)
@@ -145,7 +145,7 @@ def main():
periodic2d.cfg_dir = "navierstokes/periodic2D"
periodic2d.cfg_file = "config.cfg"
periodic2d.test_iter = 1400
- periodic2d.test_vals = [-10.818511, -8.363385, -8.287482, -5.334813, -1.087926, -2945.2]
+ periodic2d.test_vals = [-10.818509, -8.363386, -8.287481, -5.334812, -1.087925, -2945.200000]
periodic2d.test_vals_aarch64 = [-10.818510, -8.363388, -8.287480, -5.334814, -1.087922, -2945.2]
test_list.append(periodic2d)
@@ -198,7 +198,7 @@ def main():
turb_naca0012_sa.cfg_dir = "rans/naca0012"
turb_naca0012_sa.cfg_file = "turb_NACA0012_sa.cfg"
turb_naca0012_sa.test_iter = 10
- turb_naca0012_sa.test_vals = [-8.627052, -10.377936, 1.064491, 0.019710, 20.000000, -1.763095, 20.000000, -4.794176, -46.506000]
+ turb_naca0012_sa.test_vals = [-8.627052, -10.377936, 1.064491, 0.019710, 20.000000, -1.763092, 20.000000, -4.794204, -46.506000]
turb_naca0012_sa.test_vals_aarch64 = [-8.627052, -10.377936, 1.064491, 0.019710, 20.000000, -1.763093, 20.000000, -4.794073, -46.506000]
test_list.append(turb_naca0012_sa)
@@ -207,7 +207,7 @@ def main():
turb_naca0012_sst.cfg_dir = "rans/naca0012"
turb_naca0012_sst.cfg_file = "turb_NACA0012_sst.cfg"
turb_naca0012_sst.test_iter = 10
- turb_naca0012_sst.test_vals = [-11.450475, -12.797872, -5.863655, 1.049989, 0.019163, -1.856263, -38.694000]
+ turb_naca0012_sst.test_vals = [-11.450472, -12.797872, -5.863655, 1.049989, 0.019163, -1.856265, -38.694000]
turb_naca0012_sst.test_vals_aarch64 = [-11.450473, -12.797872, -5.863655, 1.049989, 0.019163, -1.856266, -38.694000]
test_list.append(turb_naca0012_sst)
@@ -216,7 +216,7 @@ def main():
turb_naca0012_sst_sust.cfg_dir = "rans/naca0012"
turb_naca0012_sst_sust.cfg_file = "turb_NACA0012_sst_sust.cfg"
turb_naca0012_sst_sust.test_iter = 10
- turb_naca0012_sst_sust.test_vals = [-11.367051, -12.640670, -5.746919, 1.005233, 0.019017, -1.913905]
+ turb_naca0012_sst_sust.test_vals = [-11.367052, -12.640670, -5.746919, 1.005233, 0.019017, -1.913902]
turb_naca0012_sst_sust.test_vals_aarch64 = [-11.367052, -12.640670, -5.746919, 1.005233, 0.019017, -1.913907]
test_list.append(turb_naca0012_sst_sust)
@@ -254,7 +254,7 @@ def main():
axi_rans_air_nozzle.cfg_dir = "axisymmetric_rans/air_nozzle"
axi_rans_air_nozzle.cfg_file = "air_nozzle.cfg"
axi_rans_air_nozzle.test_iter = 10
- axi_rans_air_nozzle.test_vals = [-12.093575, -6.630426, -8.798725, -2.399130, -1938.200000]
+ axi_rans_air_nozzle.test_vals = [-12.093553, -6.630383, -8.798737, -2.399130, -1938.200000]
axi_rans_air_nozzle.test_vals_aarch64 = [-12.093539, -6.630357, -8.798732, -2.399130, -1938.200000]
test_list.append(axi_rans_air_nozzle)
@@ -289,7 +289,7 @@ def main():
turb_naca0012_2c.cfg_dir = "rans_uq/naca0012"
turb_naca0012_2c.cfg_file = "turb_NACA0012_uq_2c.cfg"
turb_naca0012_2c.test_iter = 10
- turb_naca0012_2c.test_vals = [-5.483337, 0.968887, 0.212057, -0.120310]
+ turb_naca0012_2c.test_vals = [-5.483318, 0.968892, 0.212994, -0.120007]
turb_naca0012_2c.test_vals_aarch64 = [-5.483392, 0.968865, 0.211814, -0.120382]
test_list.append(turb_naca0012_2c)
@@ -298,7 +298,7 @@ def main():
turb_naca0012_3c.cfg_dir = "rans_uq/naca0012"
turb_naca0012_3c.cfg_file = "turb_NACA0012_uq_3c.cfg"
turb_naca0012_3c.test_iter = 10
- turb_naca0012_3c.test_vals = [-5.584300, 0.931383, 0.205113, -0.120892]
+ turb_naca0012_3c.test_vals = [-5.584300, 0.931383, 0.205114, -0.120892]
turb_naca0012_3c.test_vals_aarch64 = [-5.584300, 0.931383, 0.205116, -0.120891]
test_list.append(turb_naca0012_3c)
@@ -307,7 +307,7 @@ def main():
turb_naca0012_p1c1.cfg_dir = "rans_uq/naca0012"
turb_naca0012_p1c1.cfg_file = "turb_NACA0012_uq_p1c1.cfg"
turb_naca0012_p1c1.test_iter = 10
- turb_naca0012_p1c1.test_vals = [-5.133233, 1.075372, 0.337556, -0.077868]
+ turb_naca0012_p1c1.test_vals = [-5.132760, 1.075858, 0.333412, -0.078553]
turb_naca0012_p1c1.test_vals_aarch64 = [-5.132779, 1.075950, 0.333311, -0.078596]
test_list.append(turb_naca0012_p1c1)
@@ -316,7 +316,7 @@ def main():
turb_naca0012_p1c2.cfg_dir = "rans_uq/naca0012"
turb_naca0012_p1c2.cfg_file = "turb_NACA0012_uq_p1c2.cfg"
turb_naca0012_p1c2.test_iter = 10
- turb_naca0012_p1c2.test_vals = [-5.554619, 0.943693, 0.226386, -0.116553]
+ turb_naca0012_p1c2.test_vals = [-5.554392, 0.943810, 0.226719, -0.116439]
turb_naca0012_p1c2.test_vals_aarch64 = [-5.554530, 0.943735, 0.226407, -0.116548]
test_list.append(turb_naca0012_p1c2)
@@ -436,7 +436,7 @@ def main():
cavity.cfg_dir = "moving_wall/cavity"
cavity.cfg_file = "lam_cavity.cfg"
cavity.test_iter = 25
- cavity.test_vals = [-5.627934, -0.164469, 0.052000, 2.547063]
+ cavity.test_vals = [-5.627934, -0.164469, 0.052000, 2.547062]
test_list.append(cavity)
# Spinning cylinder
@@ -444,7 +444,7 @@ def main():
spinning_cylinder.cfg_dir = "moving_wall/spinning_cylinder"
spinning_cylinder.cfg_file = "spinning_cylinder.cfg"
spinning_cylinder.test_iter = 25
- spinning_cylinder.test_vals = [-8.001289, -2.607956, 1.501322, 1.488559]
+ spinning_cylinder.test_vals = [-8.001290, -2.607958, 1.501321, 1.488559]
spinning_cylinder.test_vals_aarch64 = [-8.001291, -2.607959, 1.501321, 1.488559]
test_list.append(spinning_cylinder)
@@ -457,7 +457,7 @@ def main():
square_cylinder.cfg_dir = "unsteady/square_cylinder"
square_cylinder.cfg_file = "turb_square.cfg"
square_cylinder.test_iter = 3
- square_cylinder.test_vals = [-2.558087, -1.162564, 0.066401, 1.399788, 2.220402, 1.399743, 2.218603, -0.453110]
+ square_cylinder.test_vals = [-2.558001, -1.162564, 0.066372, 1.399788, 2.220402, 1.399743, 2.218603, -0.453110]
square_cylinder.unsteady = True
test_list.append(square_cylinder)
@@ -525,7 +525,7 @@ def main():
edge_PPR.cfg_dir = "nicf/edge"
edge_PPR.cfg_file = "edge_PPR.cfg"
edge_PPR.test_iter = 100
- edge_PPR.test_vals = [-5.401601, 0.738205, -0.000035, 0.000000]
+ edge_PPR.test_vals = [-5.401597, 0.738210, -0.000035, 0.000000]
edge_PPR.test_vals_aarch64 = [-5.401642, 0.738164, -0.000035, 0.000000]
test_list.append(edge_PPR)
@@ -556,7 +556,7 @@ def main():
axial_stage2D.cfg_dir = "turbomachinery/axial_stage_2D"
axial_stage2D.cfg_file = "Axial_stage2D.cfg"
axial_stage2D.test_iter = 20
- axial_stage2D.test_vals = [-1.933139, 5.380376, 73.357910, 0.925874]
+ axial_stage2D.test_vals = [-1.933115, 5.365584, 73.354510, 0.925901]
axial_stage2D.test_vals_aarch64 = [-1.933139, 5.380373, 73.357910, 0.925874]
axial_stage2D.new_output = False
test_list.append(axial_stage2D)
@@ -576,7 +576,7 @@ def main():
transonic_stator_rst.cfg_dir = "turbomachinery/transonic_stator_2D"
transonic_stator_rst.cfg_file = "transonic_stator_rst.cfg"
transonic_stator_rst.test_iter = 20
- transonic_stator_rst.test_vals = [-6.619122, -0.615716, 5.002986, 0.002951]
+ transonic_stator_rst.test_vals = [-6.619122, -0.615690, 5.002986, 0.002951]
transonic_stator_rst.test_vals_aarch64 = [-6.619122, -0.615705, 5.002986, 0.002951]
transonic_stator_rst.new_output = False
test_list.append(transonic_stator_rst)
@@ -590,7 +590,7 @@ def main():
uniform_flow.cfg_dir = "sliding_interface/uniform_flow"
uniform_flow.cfg_file = "uniform_NN.cfg"
uniform_flow.test_iter = 5
- uniform_flow.test_vals = [5.000000, 0.000000, -0.188748, -10.631524]
+ uniform_flow.test_vals = [5.000000, 0.000000, -0.188748, -10.631533]
uniform_flow.unsteady = True
uniform_flow.multizone = True
test_list.append(uniform_flow)
@@ -600,7 +600,7 @@ def main():
channel_2D.cfg_dir = "sliding_interface/channel_2D"
channel_2D.cfg_file = "channel_2D_WA.cfg"
channel_2D.test_iter = 2
- channel_2D.test_vals = [2.000000, 0.000000, 0.397972, 0.352756, 0.405398]
+ channel_2D.test_vals = [2.000000, 0.000000, 0.397975, 0.352765, 0.405420]
channel_2D.unsteady = True
channel_2D.multizone = True
test_list.append(channel_2D)
@@ -610,7 +610,7 @@ def main():
channel_3D.cfg_dir = "sliding_interface/channel_3D"
channel_3D.cfg_file = "channel_3D_WA.cfg"
channel_3D.test_iter = 2
- channel_3D.test_vals = [2.000000, 0.000000, 0.620171, 0.505178, 0.415313]
+ channel_3D.test_vals = [2.000000, 0.000000, 0.620170, 0.505179, 0.415317]
channel_3D.test_vals_aarch64 = [2.000000, 0.000000, 0.620189, 0.505311, 0.415246]
channel_3D.unsteady = True
channel_3D.multizone = True
@@ -641,7 +641,7 @@ def main():
supersonic_vortex_shedding.cfg_dir = "sliding_interface/supersonic_vortex_shedding"
supersonic_vortex_shedding.cfg_file = "sup_vor_shed_WA.cfg"
supersonic_vortex_shedding.test_iter = 5
- supersonic_vortex_shedding.test_vals = [5.000000, 0.000000, 1.214350, 1.663911]
+ supersonic_vortex_shedding.test_vals = [5.000000, 0.000000, 1.214344, 1.663912]
supersonic_vortex_shedding.unsteady = True
supersonic_vortex_shedding.multizone = True
test_list.append(supersonic_vortex_shedding)
@@ -702,7 +702,7 @@ def main():
stat_fsi.cfg_dir = "fea_fsi/stat_fsi"
stat_fsi.cfg_file = "config.cfg"
stat_fsi.test_iter = 7
- stat_fsi.test_vals = [-5.403596, -5.722583, 0.000000, 10.000000]
+ stat_fsi.test_vals = [-5.397954, -5.719688, 0.000000, 10.000000]
stat_fsi.test_vals_aarch64 = [-5.423016, -5.753459, 0.000000, 10.000000]
stat_fsi.multizone = True
test_list.append(stat_fsi)
@@ -712,7 +712,7 @@ def main():
dyn_fsi.cfg_dir = "fea_fsi/dyn_fsi"
dyn_fsi.cfg_file = "config.cfg"
dyn_fsi.test_iter = 4
- dyn_fsi.test_vals = [-4.355806, -4.060582, 0.000000, 102.000000]
+ dyn_fsi.test_vals = [-4.355806, -4.060582, 0.000000, 103.000000]
dyn_fsi.test_vals_aarch64 = [-4.355806, -4.060582, 0.000000, 103.000000]
dyn_fsi.multizone = True
dyn_fsi.unsteady = True
@@ -723,7 +723,7 @@ def main():
stat_fsi_restart.cfg_dir = "fea_fsi/stat_fsi"
stat_fsi_restart.cfg_file = "config_restart.cfg"
stat_fsi_restart.test_iter = 1
- stat_fsi_restart.test_vals = [-3.474082, -4.242343, 0.000000, 37.000000]
+ stat_fsi_restart.test_vals = [-3.474078, -4.242240, 0.000000, 36.000000]
stat_fsi_restart.test_vals_aarch64 = [-3.474081, -4.242372, 0.000000, 37.000000]
stat_fsi_restart.multizone = True
test_list.append(stat_fsi_restart)
diff --git a/TestCases/incomp_navierstokes/streamwise_periodic/chtPinArray_2d/of_grad_findiff.csv.ref b/TestCases/incomp_navierstokes/streamwise_periodic/chtPinArray_2d/of_grad_findiff.csv.ref
index c8d39589b77..86d281a78f4 100644
--- a/TestCases/incomp_navierstokes/streamwise_periodic/chtPinArray_2d/of_grad_findiff.csv.ref
+++ b/TestCases/incomp_navierstokes/streamwise_periodic/chtPinArray_2d/of_grad_findiff.csv.ref
@@ -1,2 +1,2 @@
"VARIABLE" , "AVG_DENSITY[0]", "AVG_ENTHALPY[0]", "AVG_NORMALVEL[0]", "DRAG[0]" , "EFFICIENCY[0]" , "FORCE_X[0]" , "FORCE_Y[0]" , "FORCE_Z[0]" , "LIFT[0]" , "MOMENT_X[0]" , "MOMENT_Y[0]" , "MOMENT_Z[0]" , "SIDEFORCE[0]" , "SURFACE_MACH[0]", "SURFACE_MASSFLOW[0]", "SURFACE_MOM_DISTORTION[0]", "SURFACE_PRESSURE_DROP[0]", "SURFACE_SECONDARY[0]", "SURFACE_SECOND_OVER_UNIFORM[0]", "SURFACE_STATIC_PRESSURE[0]", "SURFACE_STATIC_TEMPERATURE[0]", "SURFACE_TOTAL_PRESSURE[0]", "SURFACE_TOTAL_TEMPERATURE[0]", "SURFACE_UNIFORMITY[0]", "AVG_TEMPERATURE[1]", "MAXIMUM_HEATFLUX[1]", "TOTAL_HEATFLUX[1]", "FINDIFF_STEP"
-0 , 0.0 , -199999.9862164259, -2.2204999999731917e-08, 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , -0.04999999997368221, -2.2200000003768e-08, -2.0599999983605954 , 0.0 , 2.1199999991616814 , 3.6999999980524834 , 330.00000030369847 , -30.00000106112566 , 314.000000400938 , -30.00000106112566 , -1.3999999826097564 , -139.99999737279722, 0.0 , -509.99999530176865, 1e-08
+0 , 0.0 , -99999.96982514858, -2.2204000000409886e-08, 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , 0.0 , -0.04000000053405728, 0.0 , -2.060000001136153 , 0.0 , 2.12000000054946 , 3.700000000828041 , 330.00000030369847 , -30.00000106112566 , 314.99999977313564 , -30.00000106112566 , -1.400000004814217 , -140.0000030571391, 0.0 , -509.99999530176865, 1e-08
diff --git a/TestCases/multiple_ffd/naca0012/of_grad_cd.dat.ref b/TestCases/multiple_ffd/naca0012/of_grad_cd.dat.ref
index 42013415280..81759ef4cd7 100644
--- a/TestCases/multiple_ffd/naca0012/of_grad_cd.dat.ref
+++ b/TestCases/multiple_ffd/naca0012/of_grad_cd.dat.ref
@@ -1,3 +1,3 @@
VARIABLES="VARIABLE" , "GRADIENT" , "FINDIFF_STEP"
- 0 , 0.076707 , 0.001
- 1 , -0.113016 , 0.001
+ 0 , 0.0767137 , 0.001
+ 1 , -0.113024 , 0.001
diff --git a/TestCases/navierstokes/flatplate/lam_flatplate.cfg b/TestCases/navierstokes/flatplate/lam_flatplate.cfg
index bc7dcec9836..226aadbd7e3 100644
--- a/TestCases/navierstokes/flatplate/lam_flatplate.cfg
+++ b/TestCases/navierstokes/flatplate/lam_flatplate.cfg
@@ -69,7 +69,6 @@ MG_DAMP_PROLONGATION= 0.75
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
%
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
MUSCL_FLOW= YES
SLOPE_LIMITER_FLOW= NONE
TIME_DISCRE_FLOW= EULER_IMPLICIT
diff --git a/TestCases/navierstokes/flatplate/lam_flatplate_unst.cfg b/TestCases/navierstokes/flatplate/lam_flatplate_unst.cfg
index c49db9abb89..6c8028fb76c 100644
--- a/TestCases/navierstokes/flatplate/lam_flatplate_unst.cfg
+++ b/TestCases/navierstokes/flatplate/lam_flatplate_unst.cfg
@@ -69,7 +69,6 @@ LINEAR_SOLVER_ITER= 2
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
%
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
MUSCL_FLOW= YES
SLOPE_LIMITER_FLOW= NONE
diff --git a/TestCases/navierstokes/periodic2D/config.cfg b/TestCases/navierstokes/periodic2D/config.cfg
index 1048e311b86..7e8184b9835 100644
--- a/TestCases/navierstokes/periodic2D/config.cfg
+++ b/TestCases/navierstokes/periodic2D/config.cfg
@@ -55,7 +55,6 @@ LINEAR_SOLVER_ITER= 4
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
%
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
MUSCL_FLOW= YES
SLOPE_LIMITER_FLOW= VENKATAKRISHNAN_WANG
VENKAT_LIMITER_COEFF= 0.05
diff --git a/TestCases/parallel_regression.py b/TestCases/parallel_regression.py
index edea1f86b49..0b13608d4fe 100644
--- a/TestCases/parallel_regression.py
+++ b/TestCases/parallel_regression.py
@@ -189,7 +189,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]
test_list.append(flatplate_udobj)
# Laminar cylinder (steady)
@@ -222,7 +222,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]
test_list.append(poiseuille_profile)
@@ -284,7 +284,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.timeout = 600
turb_oneram6_nk.tol = 0.0001
test_list.append(turb_oneram6_nk)
@@ -303,7 +303,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.timeout = 3200
test_list.append(turb_naca0012_sst)
@@ -312,7 +312,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.timeout = 3200
test_list.append(turb_naca0012_sst_sust)
@@ -371,7 +371,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.tol = 0.0001
test_list.append(axi_rans_air_nozzle)
@@ -668,7 +668,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]
test_list.append(contadj_ns_cylinder)
# Adjoint laminar naca0012 subsonic
@@ -733,7 +733,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]
test_list.append(turb_naca0012_2c)
@@ -750,7 +750,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]
test_list.append(turb_naca0012_p1c1)
@@ -759,7 +759,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]
test_list.append(turb_naca0012_p1c2)
@@ -781,7 +781,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.new_output = False
test_list.append(hb_rans_preconditioning)
@@ -831,7 +831,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.unsteady = True
test_list.append(sine_gust)
@@ -909,7 +909,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.new_output = False
test_list.append(Jones_tc_rst)
@@ -918,7 +918,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.new_output = False
test_list.append(axial_stage2D)
@@ -949,7 +949,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.unsteady = True
uniform_flow.multizone = True
test_list.append(uniform_flow)
@@ -959,7 +959,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.timeout = 100
channel_2D.unsteady = True
@@ -992,7 +992,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.unsteady = True
rotating_cylinders.multizone = True
test_list.append(rotating_cylinders)
@@ -1002,7 +1002,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.unsteady = True
supersonic_vortex_shedding.multizone = True
test_list.append(supersonic_vortex_shedding)
@@ -1012,7 +1012,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.command = TestCase.Command(exec = "SU2_CFD")
bars_SST_2D.multizone = True
test_list.append(bars_SST_2D)
@@ -1158,7 +1158,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.multizone = True
test_list.append(sp_pinArray_cht_2d_dp_hf)
@@ -1190,7 +1190,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.command = TestCase.Command("mpirun -np 2", "SU2_CFD.py", "--parallel -f")
pywrapper_turb_naca0012_sst.timeout = 3200
test_list.append(pywrapper_turb_naca0012_sst)
@@ -1231,7 +1231,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.command = TestCase.Command("mpirun -np 2", "python", "launch_unsteady_CHT_FlatPlate.py --parallel -f")
pywrapper_unsteadyCHT.unsteady = True
pywrapper_unsteadyCHT.new_output = True
@@ -1326,7 +1326,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.new_output = True
test_list.append(species2_primitiveVenturi_mixingmodel_viscosity)
diff --git a/TestCases/parallel_regression_AD.py b/TestCases/parallel_regression_AD.py
index d5f7414c0be..2b39bab3ad4 100644
--- a/TestCases/parallel_regression_AD.py
+++ b/TestCases/parallel_regression_AD.py
@@ -276,7 +276,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.tol = 1e-16
test_list.append(discadj_fsi2)
diff --git a/TestCases/py_wrapper/translating_NACA0012/config.cfg b/TestCases/py_wrapper/translating_NACA0012/config.cfg
index 92425cb0c8e..22b9f55cf83 100644
--- a/TestCases/py_wrapper/translating_NACA0012/config.cfg
+++ b/TestCases/py_wrapper/translating_NACA0012/config.cfg
@@ -50,7 +50,6 @@ VENKAT_LIMITER_COEFF= 0.1
% SOLUTION ACCELERATION
%
-USE_VECTORIZATION= YES
CFL_NUMBER= 1e3
CFL_ADAPT= NO
%
diff --git a/TestCases/rans/naca0012/turb_NACA0012_sa.cfg b/TestCases/rans/naca0012/turb_NACA0012_sa.cfg
index 3bb0ed08c1c..050baad4de2 100644
--- a/TestCases/rans/naca0012/turb_NACA0012_sa.cfg
+++ b/TestCases/rans/naca0012/turb_NACA0012_sa.cfg
@@ -145,7 +145,6 @@ MG_DAMP_PROLONGATION= 0.75
% Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC,
% TURKEL_PREC, MSW)
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
%
% Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER)
MUSCL_FLOW= YES
diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst.cfg
index 0438a50246a..b50c913304c 100644
--- a/TestCases/rans/naca0012/turb_NACA0012_sst.cfg
+++ b/TestCases/rans/naca0012/turb_NACA0012_sst.cfg
@@ -147,7 +147,6 @@ MG_DAMP_PROLONGATION= 0.75
% Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC,
% TURKEL_PREC, MSW)
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
%
% Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER)
MUSCL_FLOW= YES
diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst_1994-KLm.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst_1994-KLm.cfg
index f4428ef25d1..2359d135979 100644
--- a/TestCases/rans/naca0012/turb_NACA0012_sst_1994-KLm.cfg
+++ b/TestCases/rans/naca0012/turb_NACA0012_sst_1994-KLm.cfg
@@ -65,7 +65,6 @@ LINEAR_SOLVER_ITER= 20
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
%
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
MUSCL_FLOW= YES
SLOPE_LIMITER_FLOW= NONE
JST_SENSOR_COEFF= ( 0.5, 0.02 )
diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst_2003-Vm.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst_2003-Vm.cfg
index 563bc6cd898..499db596789 100644
--- a/TestCases/rans/naca0012/turb_NACA0012_sst_2003-Vm.cfg
+++ b/TestCases/rans/naca0012/turb_NACA0012_sst_2003-Vm.cfg
@@ -65,7 +65,6 @@ LINEAR_SOLVER_ITER= 20
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
%
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
MUSCL_FLOW= YES
SLOPE_LIMITER_FLOW= NONE
JST_SENSOR_COEFF= ( 0.5, 0.02 )
diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst_2003m.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst_2003m.cfg
index faa62eacc01..da762b74974 100644
--- a/TestCases/rans/naca0012/turb_NACA0012_sst_2003m.cfg
+++ b/TestCases/rans/naca0012/turb_NACA0012_sst_2003m.cfg
@@ -62,7 +62,6 @@ LINEAR_SOLVER_ITER= 20
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
%
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
MUSCL_FLOW= YES
SLOPE_LIMITER_FLOW= NONE
TIME_DISCRE_FLOW= EULER_IMPLICIT
diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst_expliciteuler.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst_expliciteuler.cfg
index cd2ec0c94b3..dac10deebea 100644
--- a/TestCases/rans/naca0012/turb_NACA0012_sst_expliciteuler.cfg
+++ b/TestCases/rans/naca0012/turb_NACA0012_sst_expliciteuler.cfg
@@ -43,7 +43,6 @@ ITER= 99999
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
MUSCL_FLOW= YES
SLOPE_LIMITER_FLOW= NONE
TIME_DISCRE_FLOW= EULER_EXPLICIT
diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst_fixedvalues.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst_fixedvalues.cfg
index dd472d25429..ceef756604b 100644
--- a/TestCases/rans/naca0012/turb_NACA0012_sst_fixedvalues.cfg
+++ b/TestCases/rans/naca0012/turb_NACA0012_sst_fixedvalues.cfg
@@ -56,7 +56,6 @@ LINEAR_SOLVER_ITER= 20
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
MUSCL_FLOW= YES
SLOPE_LIMITER_FLOW= NONE
TIME_DISCRE_FLOW= EULER_IMPLICIT
diff --git a/TestCases/rans/naca0012/turb_NACA0012_sst_sust.cfg b/TestCases/rans/naca0012/turb_NACA0012_sst_sust.cfg
index f094448ba92..54fccbf622a 100644
--- a/TestCases/rans/naca0012/turb_NACA0012_sst_sust.cfg
+++ b/TestCases/rans/naca0012/turb_NACA0012_sst_sust.cfg
@@ -119,7 +119,6 @@ LINEAR_SOLVER_ITER= 20
% Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC,
% TURKEL_PREC, MSW)
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
%
% Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER)
MUSCL_FLOW= YES
diff --git a/TestCases/rans/oneram6/turb_ONERAM6_nk.cfg b/TestCases/rans/oneram6/turb_ONERAM6_nk.cfg
index b6d15feffb1..e42f83fd2ed 100644
--- a/TestCases/rans/oneram6/turb_ONERAM6_nk.cfg
+++ b/TestCases/rans/oneram6/turb_ONERAM6_nk.cfg
@@ -38,7 +38,6 @@ CFL_ADAPT_PARAM= ( 0.8, 1.1, 5, 1000 ) % no point using NK with low CFL values
% It is important (more than usual) to have similar magnitude variables
REF_DIMENSIONALIZATION= FREESTREAM_VEL_EQ_MACH
-USE_VECTORIZATION= YES % compile the code for AVX and mixed precision or it will be slow!
TIME_DISCRE_FLOW= EULER_IMPLICIT % what else
LINEAR_SOLVER_PREC= ILU % or LU_SGS
diff --git a/TestCases/rans_uq/naca0012/turb_NACA0012_uq_1c.cfg b/TestCases/rans_uq/naca0012/turb_NACA0012_uq_1c.cfg
index a2d924bd29b..da8ba37a00d 100644
--- a/TestCases/rans_uq/naca0012/turb_NACA0012_uq_1c.cfg
+++ b/TestCases/rans_uq/naca0012/turb_NACA0012_uq_1c.cfg
@@ -158,7 +158,6 @@ MG_DAMP_PROLONGATION= 0.75
% Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC,
% TURKEL_PREC, MSW)
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
%
% Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER)
MUSCL_FLOW= YES
diff --git a/TestCases/serial_regression.py b/TestCases/serial_regression.py
index 7476f86d83d..9192e0aeb01 100644
--- a/TestCases/serial_regression.py
+++ b/TestCases/serial_regression.py
@@ -208,7 +208,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.new_output = True
test_list.append(poiseuille_profile)
@@ -264,7 +264,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
test_list.append(turb_wallfunction_flatplate_sst)
# FLAT PLATE, WALL FUNCTIONS, COMPRESSIBLE SA
@@ -729,7 +729,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.new_output = True
test_list.append(turb_naca0012_2c)
@@ -748,7 +748,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.new_output = True
test_list.append(turb_naca0012_p1c1)
@@ -758,7 +758,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.new_output = True
test_list.append(turb_naca0012_p1c2)
@@ -937,7 +937,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.new_output = False
test_list.append(axial_stage2D)
@@ -976,7 +976,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.tol = 0.000001
uniform_flow.unsteady = True
@@ -988,7 +988,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.timeout = 100
channel_2D.unsteady = True
@@ -1139,7 +1139,7 @@ def main():
dyn_fsi.cfg_dir = "fea_fsi/dyn_fsi"
dyn_fsi.cfg_file = "config.cfg"
dyn_fsi.test_iter = 4
- dyn_fsi.test_vals = [-4.355809, -4.060588, 0.000000, 85.000000] #last 4 columns
+ dyn_fsi.test_vals = [-4.355809, -4.060588, 0.000000, 87.000000] #last 4 columns
dyn_fsi.test_vals_aarch64 = [-4.355809, -4.060588, 0.000000, 86.000000] #last 4 columns
dyn_fsi.multizone = True
dyn_fsi.unsteady = True
diff --git a/TestCases/user_defined_functions/lam_flatplate.cfg b/TestCases/user_defined_functions/lam_flatplate.cfg
index 3eb230d4ce2..fadc6404de5 100644
--- a/TestCases/user_defined_functions/lam_flatplate.cfg
+++ b/TestCases/user_defined_functions/lam_flatplate.cfg
@@ -104,7 +104,6 @@ LINEAR_SOLVER_ITER= 5
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
%
CONV_NUM_METHOD_FLOW= ROE
-USE_VECTORIZATION= YES
MUSCL_FLOW= YES
SLOPE_LIMITER_FLOW= NONE
diff --git a/TestCases/vandv.py b/TestCases/vandv.py
index 1b5bc6f1e0b..62427b24cdb 100644
--- a/TestCases/vandv.py
+++ b/TestCases/vandv.py
@@ -54,7 +54,7 @@ def main():
flatplate_sst1994m.cfg_dir = "vandv/rans/flatplate"
flatplate_sst1994m.cfg_file = "turb_flatplate_sst.cfg"
flatplate_sst1994m.test_iter = 5
- flatplate_sst1994m.test_vals = [-13.023889, -10.035602, -5.142403, -0.002535, 0.002809]
+ flatplate_sst1994m.test_vals = [-13.022725, -10.035608, -5.142378, -0.002535, 0.002809]
flatplate_sst1994m.test_vals_aarch64 = [-13.022223, -10.035608, -5.142357, -0.002535, 0.002809]
test_list.append(flatplate_sst1994m)
@@ -63,7 +63,7 @@ def main():
bump_sst1994m.cfg_dir = "vandv/rans/bump_in_channel"
bump_sst1994m.cfg_file = "turb_bump_sst.cfg"
bump_sst1994m.test_iter = 5
- bump_sst1994m.test_vals = [-13.075256, -10.325338, -5.558893, 0.024576, 0.004967]
+ bump_sst1994m.test_vals = [-13.033896, -10.325323, -5.558745, 0.024576, 0.004967]
bump_sst1994m.test_vals_aarch64 = [-13.057600, -10.325331, -5.558653, 0.024576, 0.004967]
test_list.append(bump_sst1994m)
diff --git a/TestCases/vandv/rans/30p30n/config.cfg b/TestCases/vandv/rans/30p30n/config.cfg
index 067f93c3fb1..b3dbee99ca2 100644
--- a/TestCases/vandv/rans/30p30n/config.cfg
+++ b/TestCases/vandv/rans/30p30n/config.cfg
@@ -57,7 +57,6 @@ MUSCL_TURB= NO
%
% ---------- PSEUDOTIME INTEGRATION / CONVERGENCE ACCELERATION ---------- %
%
-USE_VECTORIZATION= YES
TIME_DISCRE_FLOW= EULER_IMPLICIT
TIME_DISCRE_TURB= EULER_IMPLICIT
%
diff --git a/TestCases/vandv/rans/swbli/config_sa.cfg b/TestCases/vandv/rans/swbli/config_sa.cfg
index 6d4638468dc..93ad793255c 100644
--- a/TestCases/vandv/rans/swbli/config_sa.cfg
+++ b/TestCases/vandv/rans/swbli/config_sa.cfg
@@ -63,7 +63,6 @@ MUSCL_TURB= NO
%
% ---------- PSEUDOTIME INTEGRATION / CONVERGENCE ACCELERATION ---------- %
%
-USE_VECTORIZATION= YES
TIME_DISCRE_FLOW= EULER_IMPLICIT
TIME_DISCRE_TURB= EULER_IMPLICIT
%
diff --git a/TestCases/vandv/rans/swbli/config_sst.cfg b/TestCases/vandv/rans/swbli/config_sst.cfg
index 5ed0a98448e..f2af3e18ec0 100644
--- a/TestCases/vandv/rans/swbli/config_sst.cfg
+++ b/TestCases/vandv/rans/swbli/config_sst.cfg
@@ -65,7 +65,6 @@ MUSCL_TURB= NO
%
% ---------- PSEUDOTIME INTEGRATION / CONVERGENCE ACCELERATION ---------- %
%
-USE_VECTORIZATION= YES
TIME_DISCRE_FLOW= EULER_IMPLICIT
TIME_DISCRE_TURB= EULER_IMPLICIT
%
diff --git a/UnitTests/Common/vectorization.cpp b/UnitTests/Common/vectorization.cpp
index 6aa538d25f6..ac35ccd0bc0 100644
--- a/UnitTests/Common/vectorization.cpp
+++ b/UnitTests/Common/vectorization.cpp
@@ -41,7 +41,7 @@ template
struct logicFun {
static T f(T A, T B, T C, T D, U x, U y) {
// (B < A || B >= C) && ...
- return max(B < A, B >= min(C,-D)) * (abs(A) == abs(x)) * (abs(C) != abs(y));
+ return fmax(B < A, B >= fmin(C,-D)) * (abs(A) == abs(x)) * (abs(C) != abs(y));
}
};
diff --git a/config_template.cfg b/config_template.cfg
index 6611c9c445a..7c1e7c2f440 100644
--- a/config_template.cfg
+++ b/config_template.cfg
@@ -1207,7 +1207,8 @@ USE_ACCURATE_FLUX_JACOBIANS= NO
%
% Use the vectorized version of the selected numerical method (available for JST family and Roe).
% SU2 should be compiled for an AVX or AVX512 architecture for best performance.
-USE_VECTORIZATION= NO
+% NOTE: Currently vectorization always used for schemes that support it.
+USE_VECTORIZATION= YES
%
% Entropy fix coefficient (0.0 implies no entropy fixing, 1.0 implies scalar
% artificial dissipation)
diff --git a/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..89643a0cc9e
--- 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
-# , /