Attention

The ShARC HPC cluster was decommissioned on the 30th of November 2023 at 17:00. It is no longer possible for users to access that cluster.

OpenFOAM

OpenFOAM is leading software for computational fluid dynamics (CFD). It is licensed free and open source only under the GNU General Public Licence (GPL) by the OpenFOAM Foundation.

Usage

OpenFOAM can be activated using one of the module files below:

module load apps/openfoam/4.1/gcc-6.2-openmpi-2.0.1
module load apps/openfoam/8/gcc-8.2-openmpi-4.0.1
module load apps/openfoam/v2012/gcc-8.2-openmpi-4.0.3

OpenFOAM can be used in an interactive or batch job. OpenFOAM modules for version 8 and v2012 can be activated using the module file and sourcing the OpenFOAM environment script e.g.

module load apps/openfoam/8/gcc-8.2-openmpi-4.0.1
source $FOAM_BASH

OpenFOAM version 4.1 uses the module file to match the shell environment and can be loaded by simplying running:

module load apps/openfoam/4.1/gcc-6.2-openmpi-2.0.1

Hint

Users should investigate OpenFOAM documentation to determine which OpenFOAM executables are parallel compatible and which are serial only. Only the simpleFoam executable shown below is parallel compatible and is executed with srun in multiple core jobs.


Interactive Usage

The following is an example single core interactive session running the pitzDaily example model.

After connecting to ShARC (see Establishing a SSH connection), you can start an interactive graphical session. and assuming a single core request:

rm -r /fastdata/$USER/tests/openfoam/run/
mkdir -p /fastdata/$USER/tests/openfoam/run
cd /fastdata/$USER/tests/openfoam/run
module load apps/openfoam/8/gcc-8.2-openmpi-4.0.1
source $FOAM_BASH
cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily .
chmod 700 -R pitzDaily && cd pitzDaily
blockMesh
simpleFoam

Batch Usage

The following is an example batch job running the pitzDaily example model:

Important

You will need to supply a decomposeParDict in the system subdirectory of the case if using parallel processing - check the installation script for an example using the EOF method to add it :

#!/bin/bash
#$ -V
#$ -cwd
#$ -M a.person@sheffield.ac.uk
#$ -m abe
#$ -l h_rt=01:00:00
#$ -l rmem=2G
#$ -pe mpi 4
#$ -N test_OpenFOAM8_parallel-4

rm -r /fastdata/$USER/tests/openfoam/run/
mkdir -p /fastdata/$USER/tests/openfoam/run
cd /fastdata/$USER/tests/openfoam/run
module load apps/openfoam/8/gcc-8.2-openmpi-4.0.1
source $FOAM_BASH
cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily .
chmod 700 -R pitzDaily && cd pitzDaily
cp /fastdata/$USER/tests/openfoam/decomposeParDict system/decomposeParDict
blockMesh
decomposePar
mpirun -n $NSLOTS simpleFoam -parallel

Installation notes

OpenFOAM v2012

OpenFOAM v2012 was installed by Git cloning the requisite repositories from https://develop.openfoam.com/Development/openfoam/ and https://develop.openfoam.com/Development/ThirdParty-common/ followed by running the compileOFv2012.sge installation script. (Third party downloads may be necessary prior to compiling.)

Persistent configuration settings can be found in /usr/local/packages/apps/openfoam/v2012/OpenFOAM-v2012/etc/prefs.sh.

All available third party dependencies were also (manually in some cases) downloaded, compiled and installed.

The module file was built by observing shell environment changes / looking at the OpenFOAM documentation and can downloaded: gcc-8.2-openmpi-4.0.3.

The use of setenv  OMPI_MCA_btl_openib_allow_ib 1 in the module file is required in order to get the correct connectivity with the Omnipath interconnect.

Installation was tested as follows as above with the example batch script modified (Getting Started example from https://openfoam.org/download/8-source/) with the below decomposeParDict:

https://openfoamwiki.net/index.php/DecomposePar

Note

Note that OpenFOAM v2012 has been compiled with its own included OpenMPI 4.0.3.

OpenFOAM 8

OpenFOAM 8 was installed by Git cloning the requisite OpenFOAM-8 and ThirdParty-8 directories from https://github.com/OpenFOAM/OpenFOAM-8 followed by running the compileOF8pf.sge and compileOF8pf_Third_Party.sge installation scripts. (Third party downloads may be necessary prior to compiling.)

Persistent configuration settings can be found in /usr/local/packages/apps/openfoam/8/gcc-8.2-openmpi-4.0.1/site/8/prefs.sh.

All available third party dependencies were also (manually in some cases) downloaded, compiled and installed. FoamyHexMesh was enabled.

The module file was built by observing shell environment changes / looking at the OpenFOAM documentation and can downloaded: gcc-8.2-openmpi-4.0.1.

The use of setenv  OMPI_MCA_btl_openib_allow_ib 1 in the module file is required in order to get the correct connectivity with the Omnipath interconnect.

Installation was tested as follows as above with the example batch script modified (Getting Started example from https://openfoam.org/download/8-source/) with the below decomposeParDict:

https://openfoamwiki.net/index.php/DecomposePar

OpenFOAM 4.1

OpenFOAM 4.1 was installed using the install_openfoam.sh script, the module file is gcc-6.2-openmpi-2.0.1. The following optional dependencies were built as part of the installation process: Scotch/PT-Scotch v6.0.3 (located in /usr/local/packages/apps/openfoam/4.1/gcc-6.2-openmpi-2.0.1/ThirdParty-4.1). The following optional dependencies were not installed: ParaView and CGAL.

Installation was tested as follows (Getting Started example from https://openfoam.org/download/4-1-source/):

$ mkdir /data/$USER/tests/openfoam/run
$ cd /data/$USER/tests/openfoam/run
$ module load apps/openfoam/4.1/gcc-6.2-openmpi-2.0.1
$ cp -r $FOAM_TUTORIALS/incompressible/simpleFoam/pitzDaily .
$ cd pitzDaily
$ blockMesh
$ simpleFoam
$ paraFoam