Class SpaldingExplicitLawOfTheWall

Inheritance Relationships

Base Type

Class Documentation

class SpaldingExplicitLawOfTheWall : public ExplicitLawOfTheWall

An explicit approximation of Spalding’s law.

\[ y^+ = u^+ + \exp(-\kappa B) \left( \exp (\kappa B) - 1 - \kappa u^+ - \frac{1}{2}(\kappa u^+)^2 - \frac{1}{6}(\kappa u^+)^3 \right) \]

Spalding’s law is implicit in the wall stress. In a wall model this means that every wall face requires an iterative solve for \(u_\tau\) at every update. This class replaces that nonlinear solve by the explicit approximation of Nuca, Mukha, and Parsani. The approximation is constructed by adding a Gaussian perturbation to the explicit law of Cai and Sagaut, which makes the wall-stress evaluation algebraic while retaining the accuracy of the original implicit Spalding relation.

The approximation coefficients depend on the logarithmic-law constants. The approximant entry controls which coefficient set is used:

        auto       Select highRe for kappa=0.387, B=4.21;
                   select classical for kappa=0.4, B=5.5;
                   otherwise select global.
        highRe     Fixed three-Gaussian fit for high-Re constants
                   kappa=0.387, B=4.21. The reported maximum relative
                   error with respect to the original Spalding law is
                   below 0.04%.
        classical  Fixed three-Gaussian fit for classical constants
                   kappa=0.4, B=5.5. The reported maximum relative
                   error with respect to the original Spalding law is
                   below 0.04%.
        global     One-Gaussian regression in kappa and B for other constants.
                   This is the fallback for user-selected constants and is
                   constructed to remain within the 1% relative-error target.

The errors above are relative to the wall stress obtained from the original implicit Spalding relation solved iteratively.

Usage:

    Law
    {
        type        Spalding;
        kappa     value; (default 0.4)
        B         value; (default 5.5)
        approximant auto; (default auto; highRe, classical or global)
    }

Reference for the original law:

        Spalding, D. B. (1961).
        A single formula for the 'law of the wall'.
        Journal of Applied Mechanics,
        28(3), 455-458.

Reference for the explicit approximation:

        Nuca, R., Mukha, T., and Parsani, M. (2025).
        Explicit formulations of widely used wall models for large-eddy
        simulation.
        Physics of Fluids, 37, 035215.
        https://doi.org/10.1063/5.0253882

Contributors/Copyright: 2024-2026 Timofey Mukha

Source files

Public Functions

SpaldingExplicitLawOfTheWall(const dictionary&)

Construct provided dictionary.

SpaldingExplicitLawOfTheWall(const word &lawname, const dictionary&)

Construct provided TypeName and dictionary.

SpaldingExplicitLawOfTheWall(const scalar kappa, const scalar B)

Construct from model constants.

SpaldingExplicitLawOfTheWall(const SpaldingExplicitLawOfTheWall&) = default

Copy constructor.

SpaldingExplicitLawOfTheWall &operator=(const SpaldingExplicitLawOfTheWall&) = default

Assignment.

inline virtual autoPtr<ExplicitLawOfTheWall> clone() const override

Clone.

inline virtual ~SpaldingExplicitLawOfTheWall()
inline scalar kappa() const

Return the kappa constant.

inline scalar B() const

Return the B constant.

inline word approximant() const

Return the selected approximant.

inline scalar p() const

Return the Cai-Sagaut p coefficient.

inline scalar s() const

Return the Cai-Sagaut s coefficient.

virtual void printCoeffs() const override

Print info to terminal.

virtual scalar uTau(const SingleCellSampler &sampler, label index, scalar nu) const override

Return the value of the implicit function defining the law.