v2312: New and improved usability

New verification and validation public repository

TOP

A new public repository has been launched to host community contributions for the verification and validation of the OpenFOAM software: OpenFOAM Verification and Validation Repository.

The main goal of this repository is to provide a centralized platform for the OpenFOAM community to share, collaborate, and enhance the verification and validation aspects of the software. By bringing together the collective knowledge and expertise of the community, we aim to improve the overall quality of OpenFOAM simulations and promote best practices in numerical modeling.

In this release, the Taylor-Green vortex problem and circular Couette flow have been incorporated to show the practical application of the provided templates for the case setup and documentation.

Compilation

TOP

General

The C++ standard used in OpenFOAM has now been increased to c++14 for the GNU compilers as well. With this change the minimum recommended compiler version is now gcc-7.5.0.

To assist with future code migration, “stricter” deprecation warnings can now be enabled. These can be enabled globally with a +strict entry in the WM_COMPILE_CONTROL environment variable or on a one-time basis with wmake -strict. This can primarly be considered a developer option (it may generate lots of warnings), but can be useful and interesting when writing modules to be slightly more “future-proof”.

MacOS

This version includes several improvements for compilation and running on MacOS.

  • improve FPE handling for Apple and ARM64 (courtesy of Guanyang Xue)
  • rpath handling
  • xcrun support

For MacOS compilations, rpath support is now enabled by default, which should simplify running OpenFOAM on those systems with somewhat fewer workarounds for the Apple SIP (System Integrity Protection) effects. The rpath handling can be disabled by adding ~rpath into the WM_COMPILE_CONTROL environment variable.

The MacOS compilations now also support use of xcode tools (eg, xcrun). These are enabled by adding +xcrun into the WM_COMPILE_CONTROL environment variable. When found, these types of compilation rules will be used:

cc   := xcrun cc
CC   := xcrun c++ -std=c++14

Clang

For clang-based compilation it is now possible to explicitly specify that the ld linker should be used (note: it is installation dependent whether clang uses ld or lld). The linker selection is defined by corresponding entry in the WM_COMPILE_CONTROL environment variable:

- `+gold`    : use gold linker
- `+link-ld` : use   ld linker
- `+lld`     : use  lld linker
- `+mold`    : use mold linker

OpenMP

The handling of openmp vs no-openmp has been tightened. Higher precedence is given to “~openmp” (wmake -no-openmp) over “+openmp” (wmake -openmp).

This makes it robuster when specifying +openmp in general, but ~openmp for specific build components (eg, static libraries or MPI bridging code).

Profiling

TOP

This version includes hooks for Extrae profiling. By default, the hooks are always build with OpenFOAM but remain dormant until Extrae is actually loaded via an LD_PRELOAD. This enables Extrae tracing without needing to recompile OpenFOAM specifically for that purpose.

Code provide by Josep Pocurull (Barcelona Supercomputing Center) and used as part of the exaFOAM project.

Source code

Merge request

  • Merge request 652