v2512: New and improved solvers and physics
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
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
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

