nutUSpaldingWallFunction

- Note
*Under construction*- please check again later

- The
`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. - Using Spalding's law gives a continuous
`nut`

profile to the wall. - The
`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:

- Suffers from non-exact restart since
`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;

- The inherited wall-function blending methods are not available for this wall function.

Tutorial

Source code