v2206: New and improved usability

Improved compiler support

TOP
  • Added new make rules for ARM64 Nvidia compilers
  • Dropped wmake rules for the PGI compiler (defunct)
  • Optional control to use clang lld and the mold linkers, e.g.:

    export WM_COMPILER=Clang140
    export WM_COMPILE_CONTROL="version=14.0 +lld"
  • Improved flexibility of local debug builds. When developing code, it can be useful to combine with FULLDEBUG and possibly with different optimisation levels. Can now conveniently combine both directly from the wmake call, without editing any files, e.g.:

    wmake -debug-O1 src/OpenFOAM
  • The FOAM_EXTRA_CXXFLAGS are now added last in the compile line for easier overrides.

Simpler definition of coordinate rotations

TOP

It is now possible to specify the rotation type using an inline definition for more readability and less typing, e.g.:

transform
{
    origin  (0 0 0);
    rotation axisAngle;
    axis    (0 0 1);
    angle   45;
}

As well as the longer form:

transform
{
    origin  (0 0 0);
    rotation
    {
        type  axisAngle;
        axis  (0 0 1);
        angle 45;
    }
}

The old coordinateRotation keyword (OpenFOAM-v1806 and earlier) is now verbosely deprecated in favour of rotation.

Support roll-pitch-yaw/yaw-pitch-roll specification

TOP

For some applications roll-pitch-yaw is a natural representation for orientation so it is now directly supported as part of the Euler specification, e.g.:


rotation
{
    type    euler;
    order   rollPitchYaw;
    angles  (0 20 45);
}

Very simple rotations (-rotate-x, -rotate-y, -rotate-z) are now accepted directly for transformPoints and surfaceTransformPoints.

Simpler definition of planes

TOP

In many cases, the most natural way to specify a plane is by a reference point and its normal. The dictionary entry planeType has thus become optional. If not specified, the point/normal definition is assumed and the pointAndNormalDict sub-entry is optional.

This change makes is possible to specify more naturally. For example, for a sampled cutting plane:

slice
{
    type        cuttingPlane;
    point       (0 0 0);
    normal      (0 0 1);
    interpolate true;
}

instead of

slice
{
    type        cuttingPlane;
    planeType   pointAndNormal;
    pointAndNormalDict
    {
        point   (0 0 0);
        normal  (0 0 1);
    }
    interpolate true;
}