Skip to content
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

Update documentation for Gradients and Limiters #83

Open
wants to merge 5 commits into
base: develop
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions _data/docs_v7.yml
Original file line number Diff line number Diff line change
@@ -40,6 +40,7 @@
- Physical-Definition
- Markers-and-BC
- Convective-Schemes
- Gradients-Limiters
- Custom-Output
- Linear-Solvers-and-Preconditioners
- Multizone
2 changes: 1 addition & 1 deletion _docs_v7/Convective-Schemes.md
Original file line number Diff line number Diff line change
@@ -24,7 +24,7 @@ The options listed here do not apply to the high order DG solver.
Convective schemes are used in the FVM discretization of convective fluxes through the faces of the dual-grid control volumes.
They are selected via option `CONV_NUM_METHOD_FLOW` and fall under the two broad categories of central and upwind.
Central schemes tend to be more robust whereas second order upwind schemes can be more accurate (i.e. less dissipative).
To achieve second order upwind schemes need to be used with MUSCL reconstruction (`MUSCL_FLOW = YES`), see the "gradients and limiters" page for the MUSCL-related options.
To achieve second order upwind schemes need to be used with MUSCL reconstruction (`MUSCL_FLOW = YES`), see the [Gradients and Limiters](/docs_v7/Gradients-Limiters) page for the MUSCL-related options.

**Note:** MUSCL options have no effect on central schemes or on coarse multigrid levels in general.

39 changes: 39 additions & 0 deletions _docs_v7/Gradients-Limiters.md
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 of the space 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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The start of this sentence is not very clear.


---


---

## Gradient Computation ##
The numerical method for the computation of the spatial gradients used for viscous fluxes and source terms is specified by the `NUM_METHOD_GRAD` field. The list of available options is given below:
- `GREEN_GAUSS`: Classic gradient reconstruction based on the Green-Gauss theorem (edge-based).
- `WEIGHTED_LEAST_SQUARES`: Compute the gradient of a field using inverse-distance-weighted approximation.
The default value is `WEIGHTED_LEAST_SQUARES`.

The spatial gradients method used only for upwind reconstruction is specified by the `NUM_METHOD_GRAD_RECON` field. An additional method is available:
- `LEAST_SQUARES`: Compute the gradient of a field using unweighted Least- Squares approximation.

If the `NUM_METHOD_GRAD_RECON` field is left empty or set to `NONE` it defaults to `NUM_METHOD_GRAD`.

Thin Shear Layer gradient reconstruction is always used for the construction of the Jacobian.

## Limiters ##
SU2 implements limiter functions to prevent the generation of oscillations when using second order 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, with reference length of 1.
- `VENKATAKRISHNAN_WANG` : Slope limiter using Venkatakrisnan method, with a small non-vanishing bias proportional to the min-to-max range of the solution, to avoid limiting in small regions.
- `BARTH_JESPERSEN` : Slope limiter using Barth-Jespersen method.
- `VAN_ALBADA_EDGE` : Slope limiter using Van Albada method.
- `SHARP_EDGES` : Slope limiter based on the distance to the nearest sharp edge.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This and wall distance should not be used for flow solvers

- `WALL_DISTANCE` : Slope limiter based on wall distance.
With `VENKATAKRISHNAN` being the default option.

The `VENKAT_LIMITER_COEFF` tunable field is used to compute the small non-vanishing bias to prevent divisions by zero, $\epsilon$. Depending on the limiter to be used this field has different interpretations. For the `VENKATAKRISHNAN` limiter it represents the constant $K$ in $\epsilon^2=\left(K\Delta x\right)^3$. We refer to [Venkatakrishnan](https://doi.org/10.1006/jcph.1995.1084) for further details. For the `VENKATAKRISHNAN_WANG` limiter it represents the constant $\epsilon^{\prime}$ in $\epsilon = \epsilon^{\prime}(q^{\text{\max}}-q^{\text{\min}})$. We refer to [Wang](https://doi.org/10.2514/6.1996-2091) for further details. For both limiters larger values of `VENKAT_LIMITER_COEFF` decrease the extent of limiting, while values approaching zero cause lower-order approximation to the solution. Larger values of `VENKAT_LIMITER_COEFF` will reduce the high frequency oscillations of the sulition making it more stable and attaining better convergence properties. On expense, the accuracy of the solution will be typycally affected. The dafault value is 0.05.
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have written the last part: "Larger values of VENKAT_LIMITER_COEFF will..." based on theory and my experience. Please correct it/me in case it is wrong.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a bit misleading. Specify that the oscillations are of the residuals (aka flip flopping).
More limiting can make convergence more difficult. But not enough limiting can make the solver diverge. It's a trade-off and it needs tuning. For example a finer mesh for the same problem needs a smaller value to be completely consistent.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adapt the divisions by zero according to my comment above, the true purpose is not to prevent div by 0


The value of the limiter can be frozen after a certain amount of iterations, which can be specified in the `LIMITER_ITER`. The default value is $999999$.