OpenFOAM® v1706: Improved usability


Bash shell completion

OpenFOAM v1706 adds bash command line completion for all OpenFOAM applications and utilities.

Command line tab completion of OpenFOAM applications presents users with selections that are tailored for the current action. For example, issuing

checkMesh <TAB> <TAB>

returns the list of available options for the checkMesh utility:

-allGeometry        -help               -noZero             -writeAllFields
-allTopology        -latestTime         -parallel           -writeFields
-case               -meshQuality        -region             -writeSets
-constant           -newTimes           -roots
-decomposeParDict   -noFunctionObjects  -srcDoc
-doc                -noTopology         -time

Many options require additional user input, shown by the -option <value> type entries when requesting help via the -help option.

If using the -time option, the completion will limit the options to the list of available times, e.g. after running the $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity tutorial:

checkMesh -time <TAB> <TAB>


0    0.1  0.2  0.3  0.4  0.5

Multi-region cases are notoriously complex to set-up and process. The -region option will limit the available options to the list of regions, e.g. applied to the $FOAM_TUTORIALS/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger tutorial

checkMesh -region <TAB> <TAB>


air     porous

The foamCreateBashCompletions script can be used to recreate the completions as required, and can also be used to process user applications to provide additional completions.

Note that completion is currently limited to the bash shell

Source code

Shell configuration

  • OpenFOAM now respects the name of an symbolically linked installation directory instead of using the physical location.
  • The mechanism for providing customization is now two-tiered. First a global file is used from $WM_PROJECT_DIR before any other user/group/site versions of the file. This ensures that values set by the cluster administrator, e.g., for compilers etc, will not be inadvertently masked by user files. Of course, the user still has the possibility of changing values, but the administrator can be assured that specific fall-back values will be seen.
  • The jobControl directory has moved to ~/.OpenFOAM/jobControl which enables this for individual users special permissions.

MPI configuration

  • permit SYSTEMMPI user adjustments via etc/config.csh,sh/mpi-system This can be a convenient place for setting up SYSTEMMPI for OpenFOAM without adjusting bashrc,
  • Added a USERMPI type. This represents any generic MPI implementation. The user is responsible for supplying an appropriate wmake/rules/General/mplibUSERMPI file and managing all settings.

This type of setup can be useful in combination with specific build systems (SPACK, EASYBUILD, etc.) or module systems for which the MPI variant is part of the installed configuration.