Documentation 6b54b78464
Loading...
Searching...
No Matches
docmain.hpp
Go to the documentation of this file.
1/*!
2 * \file docmain.hpp
3 * \brief This file contains documentation for Doxygen and does not have any significance with respect to C++.
4 * \author F. Palacios
5 * \version 8.5.0 "Harrier"
6 *
7 * SU2 Project Website: https://su2code.github.io
8 *
9 * The SU2 Project is maintained by the SU2 Foundation
10 * (http://su2foundation.org)
11 *
12 * Copyright 2012-2026, SU2 Contributors (cf. AUTHORS.md)
13 *
14 * SU2 is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU Lesser General Public
16 * License as published by the Free Software Foundation; either
17 * version 2.1 of the License, or (at your option) any later version.
18 *
19 * SU2 is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 * Lesser General Public License for more details.
23 *
24 * You should have received a copy of the GNU Lesser General Public
25 * License along with SU2. If not, see <http://www.gnu.org/licenses/>.
26 */
27
28/*!
29 * \mainpage SU2 version 8.5.0 "Harrier"
30 * SU2 suite is an open-source collection of C++ based software tools
31 * to perform PDE analysis and PDE constrained optimization. The toolset is designed with
32 * computational fluid dynamics and aerodynamic shape optimization in mind, but is extensible to
33 * include other families of governing equations such as potential flow, electrodynamics, chemically reacting
34 * flows, and many others. SU2 is released under an open-source license.
35 *
36 * The following technical documentation describes the structure and details of the source code for developers.
37 * Each module groups classes and functions dedicated to major areas or features of the code base.
38 * This documentation helps awnsering questions such as
39 * - What are the major classes of the code (architecture)?
40 * - How do those classes interact with each other?
41 * - What low-level functionality is already implemented that can be re-used?
42 *
43 * Given the use of polymorphism in SU2, it is usefull to start studying each module from the base class
44 * (which usually has a generic name), this will show the inheritance diagram for that family. Moreover,
45 * many important functions (defining the interactions between families) are implemented at the base level,
46 * the "call graph" of a function will show these interactions (derived classes only specialize certain details).
47 * Alternatively, "caller graphs" can be used to navigate to the larger classes that use smaller ones, and
48 * thus navigate the architecture from the bottom up (note that this will also be more effective if done
49 * for base classes).
50 *
51 * ### Good practices when documenting classes and functions
52 *
53 * The groups and subgroups defined in this file form a hierarchy of doxygen modules, when documenting a
54 * class or free function it should be added to a group (member functions belong to the group of the class
55 * by default), otherwise it will be difficult to navigate to the documentation of the class or function.
56 * Therefore, all classes and functions should have a doxygen documentation block with at least \\brief and
57 * \\ingroup properties.
58 *
59 * Note that this is a work in progress and not all classes and functions are currently inserted into groups.
60 */
61
62/*!
63 * \defgroup Config Description of the Configuration Options
64 * \brief Group of variables that can be set using the configuration file.
65 */
66
67/*!
68 * \defgroup ConvDiscr Discretization of the convective terms
69 * \brief Group of classes which define the numerical methods for
70 * discretizing the convective terms of a Partial Differential Equation.
71 * There are methods for solving the direct, adjoint and linearized
72 * systems of equations.
73 */
74
75/*!
76 * \defgroup ViscDiscr Discretization of the viscous terms
77 * \brief Group of classes which define the numerical methods for
78 * discretizing the viscous terms of a Partial Differential Equation.
79 * There are methods for solving the direct, adjoint and linearized
80 * systems of equations.
81 */
82
83/*!
84 * \defgroup SourceDiscr Discretization of the source terms
85 * \brief Group of classes which define the numerical methods for
86 * discretizing the source terms of a Partial Differential Equation.
87 * There are methods for solving the direct, adjoint and linearized
88 * systems of equations.
89 */
90
91/*!
92 * \defgroup Euler_Equations Solving the Euler equations
93 * \brief Group of classes which define the system of Euler equations in
94 * three formulations: direct, adjoint, and linearized.
95 */
96
97/*!
98 * \defgroup Navier_Stokes_Equations Solving the Navier-Stokes equations
99 * \brief Group of classes which define the system of Navier-Stokes equations in
100 * three formulations: direct, adjoint, and linearized.
101 */
102
103/*!
104 * \defgroup Turbulence_Model Solving the turbulence model equations
105 * \brief Group of classes which define the turbulence model in
106 * three formulations: direct, adjoint, and linearized.
107 */
108
109/*!
110 * \defgroup Scalar_Transport Solving scalar transport equations
111 * \brief Classes to solve scalar transport equations.
112 */
113
114/*!
115 * \defgroup Elasticity_Equations Solving the elasticity equations
116 * \brief Group of classes to solve solid deformation problems.
117 */
118
119/*!
120 * \defgroup Interfaces Multiphysics interfaces
121 * \brief Classes for data transfer and interpolation across interfaces between zones.
122 */
123
124/*!
125 * \defgroup Drivers Iterative solution strategy
126 * \brief Group of classes which define the iterative process used to converge
127 * the equations (fluid, turbulence, elasticity, FSI, CHT, etc.).
128 * In general, "Driver" classes use "Iteration" classes to advance one inner
129 * iteration, in turn "Iteration" classes use "Integration" classes to perform
130 * space and time integration. The latter use mostly the "Solvers".
131 */
132
133/*!
134 * \defgroup PySU2 Python Wrapper functions
135 * \brief Functions of the driver classes (\ref Drivers) that can be used to customize SU2
136 * via Python. For example, set custom temperature distributions at boundaries,
137 * deform the mesh, etc.
138 */
139
140/*!
141 * \defgroup Variable Storing solution variables
142 * \brief Classes used to store and access the solution variables of all types of problems.
143 */
144
145/*!
146 * \defgroup Output Screen, history, and file output
147 * \brief Classes used to define the output of the solvers in SU2.
148 */
149
150/*!
151 * \defgroup DiscAdj Discrete Adjoint
152 * \brief Classes and functions used to solve discrete adjoint equations.
153 */
154
155/*!
156 * \defgroup GradSmooth Gradient Smoothing
157 * \brief Classes and functions used to smooth gradients from the discrete adjoint method.
158 * \ingroup DiscAdj
159 */
160
161/*!
162 * \defgroup SpLinSys Sparse linear systems
163 * \brief Classes and function to represent and solve large distributed sparse linear systems.
164 */
165
166/*!
167 * \defgroup FvmAlgos General FVM algorithms
168 * \brief Common algorithms used in FVM implementations.
169 */
170
171/*!
172 * \defgroup FemAlgos General FEM algorithms
173 * \brief Common algorithms used in FEM implementations.
174 */
175
176/*!
177 * \defgroup Toolboxes Utility classes and functions
178 * \brief Several classes and functions that implement common operations.
179 */
180
181/*!
182 * \defgroup GeometryToolbox Geometry toolbox
183 * \brief Common geometry operations.
184 * \ingroup Toolboxes
185 */
186
187/*!
188 * \defgroup Containers Data containers
189 * \brief Container classes (vectors, matrices, ND-arrays, etc.).
190 * \ingroup Toolboxes
191 */
192
193/*!
194 * \defgroup LookUpInterp Look up and interpolation
195 * \brief Data look up and interpolation.
196 * \ingroup Toolboxes
197 */
198
199/*!
200 * \defgroup ADT Alternating Digital Tree
201 * \brief Tree-based searches (minimum distance, containment, etc.).
202 * \ingroup Toolboxes
203 */
204
205/*!
206 * \defgroup BLAS Dense linear algebra
207 * \brief Linear algebra functions and classes.
208 * \ingroup Toolboxes
209 */
210
211/*!
212 * \defgroup VecExpr Vector math expression templates
213 * \brief Expression templates for level-1 BLAS operations.
214 * \ingroup BLAS
215 */
216
217/*!
218 * \defgroup Graph Graph operations
219 * \brief Classes to represent graphs and functions to manipulate them (coloring, etc.).
220 * \ingroup Toolboxes
221 */
222
223/*!
224 * \defgroup SIMD Vectorization (SIMD)
225 * \brief Classes for explicit (done by the programmer) vectorization (SIMD) of computations.
226 * \ingroup Toolboxes
227 */