nutUSpaldingWallFunction
boundary condition provides a wall constraint on the turbulent viscosity, i.e. nut
, based on velocity, i.e. U
for low- and high-Reynolds number turbulence models.nut
profile to the wall.nutUSpaldingWallFunction
condition inherits the traits of the nutWallFunction boundary condition.Required fields:
nut | Turbulent viscosity [m2/s]
The model expressions:
\[ \nu_t = \max(0, \frac{u_{\tau^*}^2}{|\grad{\u}| + \zeta} -\nu_w) \]
with
\[ y^+ = u^+ + \frac{1}{E} \left[exp(\kappa u^+) - 1 - \kappa u^+\, - 0.5 (\kappa u^+)^2 - \frac{1}{6} (\kappa u^+)^3\right] \]
where
\( \nu_t \) | = | Turbulent viscosity [m2/s] |
\( \nu_w \) | = | Kinematic viscosity of fluid near wall [m2/s] |
\( y^+ \) | = | Estimated wall-normal height of the cell centre in wall units |
\( u^+ \) | = | Velocity near wall in wall units |
\( \kappa \) | = | von Kármán constant [-] |
\( E \) | = | Wall roughness parameter [-] |
\( C_\mu \) | = | Empirical model constant [-] |
\( y \) | = | Wall-normal height [m] |
Example of the boundary condition specification:
<patchName> { // Mandatory entries (unmodifiable) type nutUSpaldingWallFunction; // Optional entries (unmodifiable) maxIter 10; tolerance 0.0001; // Optional (inherited) entries ... }
where the entries mean:
Property | Description | Type | Required | Default |
---|---|---|---|---|
type | Type name: nutUSpaldingWallFunction | word | yes | - |
maxIter | Number of Newton-Raphson iterations | label | no | 10 |
tolerance | Convergence tolerance | scalar | no | 0.0001 |
The inherited entries are elaborated in:
correctNut()
(called through turbulence->validate
) returns a slightly different value every time it is called. This is since the seed for the Newton-Raphson iteration uses the current value of *this
(=nut
).This can be avoided by overriding the tolerance. This also switches on a pre-detection whether the current nut already satisfies the turbulence conditions and if so does not change it at all. This means that the nut only changes if it 'has really changed'. This probably should be used with a tight tolerance, to make sure to kick every iteration, e.g.
maxIter 100; tolerance 1e-7;
Tutorial
Source code