v2512: New and improved solvers and physics

Turbulence: New two-layer wall treatment for kEpsilon model

TOP

The standard k-epsilon model is a high-Reynolds number model, meaning that the wall shear stress and heat flux predictions will be incorrect on a resolved grid, e.g., y+ < 11. A two-layer wall treatment approach has been introduced to tackle this problem. In the inner-layer closer to the wall, algebraic relations define νt and ε, whereas in the outer-layer they are obtained from the standard k-epsilon model.

This model can be activated through an optional flag – twoLayerTreatment. By default, this flag is turned off.

Below, one can see that the skin friction and Nusselt number prediction for a flow over a flat plate case is high on a y+ ∼ 1 grid. In contrast, with the twoLayerTreatment flag, the grid sensitivity has significantly reduced.

Source code

Merge request

Finite-area: New zonal dynamicContactAngle

TOP

The finite-area framework has been enhanced with zone-based contact angle specification, enabling spatially varying wetting properties across liquid film surfaces. This allows users to model complex scenarios where contact angles differ across regions, such as multi-material surfaces or chemically treated areas.

Contact angles fundamentally influence how liquid films spread and evolve on solid surfaces by affecting force balance calculations at contact lines. Previously, users could only specify a single contact angle value per finite-area surface, which limited the ability to capture heterogeneous wetting behaviour.

The dynamicContactAngle model now supports zone-based definitions through persistent field storage, whereby the setFields utility can be applied to derive spatially varying contact angle distributions.

Configure zone-based contact angles in your liquid film force models:

// Mandatory entries
forces (dynamicContactAngle);
dynamicContactAngleCoeffs
{
    // Mandatory entries
    Ccf             <scalar>;
    // Optional entries
    mode            <word>;
    hCrit           <scalar>;
    distribution    <subDict>;
    // Conditional entries
        // Option-1: when 'mode' is 'zonal'
        // 'dynamicContactAngleForce:theta' field can be set using 'setFields'
        // utility. If there is no such field, a zero field is assigned
        // to the entire finite-area surface, ie single zone. The units of
        // the 'dynamicContactAngleForce:theta' field is [deg].
        // Option-2: when 'mode' is 'filmSpeed'
        Utheta           <Function1<scalar>>;
        // Option-3: when 'mode' is 'filmTemperature'
        Ttheta           <Function1<scalar>>;
}

Source code

Finite-area: New Immersed Boundary Method (IBM)

TOP

This release adds a new immersed boundary method (IBM) capability to the finite area (FA) library. This enables more flexible modeling of thin film interactions with complex geometries without the need for boundary-conforming meshes.

The model is implemented as a new regionFaModel and activated by selecting the kinematicThinFilmIBM variant in the velocity boundary field configuration, e.g. for the new windshield tutorial, the U boundary condition:

myPatch
{
    type                velocityFilmShell;
    ...
    region              film;

    // New model: kinematicThinFilmIBM
    liquidFilmModel     kinematicThinFilmIBM;
}

This requires a <constant>/regionFaIBMProperties file where you will list each body, e.g.

IBM1
{
    surface             "<constant>/surface1.obj";

    solidBodyMotionFunction ...;

    // Motion properties for body IBM1
    ...
}
IBM2
{
    surface             "<constant>/surface2.obj";

    solidBodyMotionFunction ...;

    // Motion properties for body IBM2
    ...
}

Each obstacle is represented by a closed surface geometry file, where motion can be applied using a solidBodyMotionFunction.

Source code

Tutorial

Merge request