-
Notifications
You must be signed in to change notification settings - Fork 86
[WIP] Add documentation #59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
190fa5f
e9ee5fa
19a4bf5
ded75ba
3a31e8f
694e88c
bfc9fb6
63a9358
a0f4c66
22dbc60
f979f9b
26cac3c
980c332
0f79ed3
cb6c0d4
f763787
f5a9a4a
62dd0cd
ad7dab6
39ad150
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,39 @@ | ||||||
| --- | ||||||
| title: Gradients and Limiters | ||||||
| permalink: /docs_v7/Gradients-Limiters/ | ||||||
| --- | ||||||
|
|
||||||
| This page lists the gradient computation methods and the limiter functions in SU2 as well as their associated options, it is not meant as a detailed theory guide but some application guidance is given nonetheless. The options listed here do not apply to the high order DG solver.? | ||||||
|
|
||||||
| --- | ||||||
|
|
||||||
|
|
||||||
| --- | ||||||
|
|
||||||
| ## Gradient Computation ## | ||||||
| The numerical method for the spatial gradients computation is specified by the `NUM_METHOD_GRAD` field. The list of availabel options is given below. | ||||||
suargi marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
| `GREEN_GAUSS`: classic gradient reconstruction based on the Green-Gauss theorem. | ||||||
suargi marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
| `LEAST_SQUARES`: Compute the gradient of a field using unweighted Least- Squares approximation. | ||||||
suargi marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
| `WEIGHTED_LEAST_SQUARES`: Compute the gradient of a field using inverse-distance-weighted approximation. | ||||||
| The default option is set to `WEIGHTED_LEAST_SQUARES`. | ||||||
|
|
||||||
| The spatial gradients method used only for upwind reconstruction is pecified by the `NUM_METHOD_GRAD_RECON` field. | ||||||
suargi marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
|
|
||||||
| Thin Shear Layer gradient reconstruction is always used for the construction of the Jacobian. | ||||||
|
Comment on lines
+20
to
+21
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
That would be "fluxes" theory. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You are right in the sense that the Jacobian construction belongs to a "fluxes" section. However the discussion on which gradient computation method is used for its construction might belong to the "Gradients" section. |
||||||
|
|
||||||
| ## Limiters ## | ||||||
| SU2 implements limiter functions to prevent the generation of oscillations when using upwind spatial discretisations. These are specified by the config field `SLOPE_LIMITER_FLOW`. The available options are: | ||||||
| - `NONE` - No limiter | ||||||
| - `VENKATAKRISHNAN` - Slope limiter using Venkatakrisnan method. | ||||||
| - `VENKATAKRISHNAN_WANG` - Slope limiter using Venkatakrisnan method, eps based on solution. EPS is...? | ||||||
suargi marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
| - `BARTH_JESPERSEN` - Slope limiter using Barth-Jespersen method. | ||||||
| - `VAN_ALBADA_EDGE` - Slope limiter using Van Albada method. | ||||||
| - `SHARP_EDGES` - Slope limiter using sharp edges. | ||||||
| - `WALL_DISTANCE` - Slope limiter using wall distance. | ||||||
suargi marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
| The default option is set to `VENKATAKRISHNAN`. | ||||||
|
|
||||||
| * \n DESCRIPTION: Coefficient for the limiter. DEFAULT value 0.5. Larger values decrease the extent of limiting, values approaching zero cause lower-order approximation to the solution. \ingroup Config */ | ||||||
| addDoubleOption("VENKAT_LIMITER_COEFF", Venkat_LimiterCoeff, 0.05); | ||||||
|
|
||||||
|
|
||||||
| The option `LIMITER_ITER` specifies the number of iterations afterFreeze the value of the limiter after a number of iterations. DEFAULT value $999999$. | ||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -61,14 +61,16 @@ For all Finite Volume (FVM) solvers, i.e. not the `FEM_*` solvers, its implement | |
| MARKER_SYM = (Symmetry_Wall1, Symmetry_Wall2, ...) | ||
| ``` | ||
|
|
||
| The negative Sapalart-Allmaras model implements the same boundary conditions as for the standard/standalone version. | ||
suargi marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
|
|
||
| ## Constant Heatflux (no-slip) Wall ## | ||
|
|
||
| | Solver | Version | | ||
| | --- | --- | | ||
| | `NAVIER_STOKES`, `RANS`, `INC_NAVIER_STOKES`, `INC_RANS`, `FEM_NAVIER_STOKES`, `HEAT_EQUATION_FVM` | 7.0.0 | | ||
|
|
||
|
|
||
| A wall with a prescribed constant heatflux is defined with the `MARKER_HEATFLUX` option. The option format is the marker name followed by the value of the heatflux (in Watts per square meter `[W/m^2],[J/(s*m^2)]`), e.g. | ||
| A viscous wall with a prescribed constant heatflux is defined with the `MARKER_HEATFLUX` option. The option format is the marker name followed by the value of the heatflux (in Watts per square meter `[W/m^2],[J/(s*m^2)]`), e.g. | ||
| ``` | ||
| MARKER_HEATFLUX = (Wall1, 1e05, Wall2, 0.0) | ||
| ``` | ||
|
|
@@ -106,7 +108,7 @@ MARKER_ISOTHERMAL = (Wall1, 300.0, Wall2, 250.0) | |
| | --- | --- | | ||
| | `EULER`, `NAVIER_STOKES`, `RANS`, `INC_EULER`, `INC_NAVIER_STOKES`, `INC_RANS`, `FEM_EULER`, `FEM_NAVIER_STOKES` | 7.0.0 | | ||
|
|
||
| A marker can be defined as a Farfield boundary by addings its name to the `MARKER_FAR` option. No other values are necesseary for that option. The actual values which will be prescribed depend on the solver and other user input settings. More details can be found in the [Physical Definition](/docs_v7/Physical-Definition/) section. | ||
| A marker can be defined as a Farfield boundary by addings its name to the `MARKER_FAR` option. No other values are necesseary for that option. The actual values which will be prescribed depend on the solver and other user input settings. The implementation is based on the Riemann invariants of the Euler system calculated from the user input config file. More details can be found in the [Physical Definition](/docs_v7/Physical-Definition/) section. | ||
|
|
||
| ``` | ||
| MARKER_FAR= (farfield) | ||
|
|
@@ -172,7 +174,7 @@ MARKER_INLET = (inlet1, 300 , 1e6, 1.0, 0.0, 0.0, inlet2, 200, 1e6, 0.0, 1.0, 0. | |
|
|
||
| ## Outlet Boundary Condition ## | ||
|
|
||
| Outlet boundary conditions are set using the `MARKER_OUTLET` option. | ||
| Outlet boundary conditions are set using the `MARKER_OUTLET` option. These are prescribed by computing the Riemann invariants. | ||
|
|
||
| ### Pressure Outlet (Compressible) ### | ||
|
|
||
|
|
@@ -222,6 +224,12 @@ MARKER_OUTLET = (outlet, 1e1) | |
| | --- | --- | | ||
| | `NAVIER_STOKES`, `RANS`, `INC_NAVIER_STOKES`, `INC_RANS`, `FEM_NAVIER_STOKES` | 7.0.0 | | ||
|
|
||
| For two given periodic surfaces `periodic marker` and `donor marker` SU2 defines periodicity by | ||
| ``` | ||
| MARKER_PERIODIC= ( periodic marker, donor marker, rotation_center_x, rotation_center_y, rotation_center_z, rotation_angle_x-axis, rotation_angle_y-axis, rotation_angle_z-axis, translation_x, translation_y, translation_z, ... ) | ||
| ``` | ||
| The same number of points on both surfaces is assumed. Their orientation is specified by the additional set of parameters. Whereby `rotation_center_` specifies the coordinates of the center of rotation for the specified axis, `rotation_angle_` defines the rotation angle [in radians] between `periodic marker` and `donor marker` about the specified axis and `translation_` specifies the translation in space between `periodic marker` and `donor marker` about the specified axis. | ||
|
||
|
|
||
| ## Structural Boundary Conditions ## | ||
|
|
||
| ### Clamped Boundary ### | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -19,11 +19,11 @@ The key C++ and Python tools in the SU2 software suite are briefly described bel | |
|
|
||
| ## C++ Software Modules | ||
|
|
||
| - **SU2_CFD (Computational Fluid Dynamics Code)**: Solves direct, adjoint, and linearized problems for the Euler, Navier-Stokes, and Reynolds-Averaged Navier-Stokes (RANS) equation sets, among many others. SU2_CFD can be run serially or in parallel using MPI. It uses a Finite Volume Method (FVM), and an edge-based structure. A Discontinuous-Galerkin Finite Element Method solver is currently being completed and will be available to the public in an upcoming release. Explicit and implicit time integration methods are available with centered or upwinding spatial integration schemes. The software also has several advanced features to improve robustness and convergence, including residual smoothing, preconditioners, and agglomeration multigrid. | ||
| - **SU2_CFD (Computational Fluid Dynamics Code)**: Solves direct, adjoint (conitnuous?), and linearized problems for the Euler, Navier-Stokes, and Reynolds-Averaged Navier-Stokes (RANS) equation sets, among many others. SU2_CFD can be run serially or in parallel using MPI. It uses a Finite Volume Method (FVM), and an edge-based structure. A Discontinuous-Galerkin Finite Element Method solver is currently being completed and will be available to the public in an upcoming release. Explicit and implicit time integration methods are available with centered or upwinding spatial integration schemes. The software also has several advanced features to improve robustness and convergence, including residual smoothing, preconditioners, and agglomeration multigrid. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think that's what is meant by linearized, but you can also write as "direct, continuous and discrete adjoint problems There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. As far as I understood SU2_CFD cannot be used for the discrete adjoint. I do not know about the continuous. For the discrete one has to use the SU2_CFD_AD. |
||
| - **SU2_DOT (Gradient Projection Code)**: Computes the partial derivative of a functional with respect to variations in the aerodynamic surface. SU2_DOT uses the surface sensitivity, the flow solution, and the definition of the geometrical variable to evaluate the derivative of a particular functional (e.g. drag, lift, etc.). This is essentially a large dot product operation between the adjoint sensitivities and geometric sensitivities for the particular design variable parameterization. | ||
| - **SU2_DEF (Mesh Deformation Code)**: Computes the geometrical deformation of an aerodynamic surface and the surrounding volumetric grid. Once the type of deformation is defined, SU2_DEF performs the grid deformation by solving the linear elasticity equations on the volume grid. Three-dimensional geometry parameterization is defined using Free Form Deformation, while two-dimensional problems can be defined by both Free From Deformation or bump functions, such as Hicks-Henne. | ||
| - **SU2_MSH (Mesh Adaptation Code)**: Performs grid adaptation using various techniques based on an analysis of a converged flow solution, adjoint solution, and linearized problem to strategically refine the mesh about key flow features. This module also contains a preprocessor that creates the appropriate structures for periodic boundary conditions. | ||
| - **SU2_SOL (Solution Export Code)**: Generates the volumetric and surface solution files from SU2 restart files. | ||
| - **SU2_MSH (Mesh Adaptation Code)**: Performs grid adaptation using various techniques based on an analysis of a converged flow solution, adjoint solution, and linearized problem to strategically refine the mesh about key flow features. This module also contains a preprocessor that creates the appropriate structures for periodic boundary conditions. THIS DOES NOT LONGER EXIST?? | ||
| - **SU2_SOL (Solution Export Code)**: Generates the volumetric and surface solution files from SU2 restart files. HOW TO USE IT?? | ||
suargi marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - **SU2_GEO (Geometry Definition Code)**: Geometry preprocessing and definition code. In particular, this module performs the calculation of geometric constraints for shape optimization. | ||
|
|
||
| While they are not C++ modules, two other similar directories included in the source distribution should be mentioned. First, the **SU2_IDE** (Integrated Development Environment) directory contains files associated with various IDEs to aid developers (Eclipse, VisualStudio, Wing, Xcode). Second, the **SU2_PY** directory contains all of the files making up the Python framework, and some of these will be highlighted in a section below. | ||
|
|
@@ -33,6 +33,7 @@ While they are not C++ modules, two other similar directories included in the so | |
| SU2 includes integrated support for Algorithmic Differentiation (AD) based on Operator Overloading to compute arbitrary derivatives. One application of this feature is the discrete adjoint solver that is implemented in SU2. In contrast to the continuous adjoint method, special versions of the modules SU2_CFD and SU2_DOT are required to use this solver. | ||
|
|
||
| - **SU2_CFD_AD**: Solves the discrete adjoint equations using a consistent linearization of the flow solver with the help of AD. Although it has additionally the same features as SU2_CFD, using it for other solvers will result in a slight slow-down due to the AD overhead. | ||
| - **SU2_CFD_DIRECTDIFF**: Computes the gradients of an objective function by forward mode of AD. Although it has additionally the same features as SU2_CFD, using it for other solvers will result in a slight slow-down due to the AD overhead. | ||
suargi marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| - **SU2_DOT_AD**: The discrete adjoint formulation does not include the influence of the mesh deformation, therefore this module will compute the required partial derivative of the functional with respect to variations in the computational mesh. Instead of SU2_DOT, SU2_DOT_AD uses the volume sensitivities to evaluate the derivative. Finally, the resulting sensitivities on the aerodynamic surface are projected on to the particular design parameterization. | ||
|
|
||
| ## Python Scripts | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.