OpenFOAM® Installation on Linux

OpenFOAM®  Installation on Linux

OpenCFD Limited uses Docker Hub to distribute pre-compiled versions of OpenFOAM+ for Linux, Mac OS X and Windows, including a complete development environment.

Docker containers enable binaries compiled on a given Linux environment to be run on other platforms without any performance degradation. Docker also operates on Windows and Mac OS X wrapped in a light-weight Virtual Box.

An image of OpenFOAM+ contains binaries and source code. The Docker environment provides:

  • A complete development environment to compile local modifications and create executables.
  • A consistent behaviour of the OpenFOAM+ across all platforms

Check if your (Linux or Windows or Mac OS X) system is supported by visiting https://docs.docker.com/engine/installation/

Installing Docker

  • Please follow the instructions on https://docs.docker.com/engine/installation/
  • On Ubuntu 15.10 (and above):

    sudo apt-get install docker-engine
    sudo service docker start
    Note: For Ubuntu 16.10, the docker-engine resides in the testing repository. Add the testing repository using:

    sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-yakkety main testing'
  • On OpenSUSE (Tumbleweed or Leap):

    sudo zypper in docker
    sudo systemctl start docker
  • Note: Make sure Docker is using storage driver ‘overlay’, ‘btrfs’ or ‘aufs’ by running

    docker info
    The settings can be changed in the configuration file: /etc/sysconfig/docker to include DOCKER_OPTS="-s overlay"
  • The Docker installation process should create a group docker. Add all users that need access to Docker to this group by running

    sudo gpasswd -a <user> docker
    where <user> will be the user name to add to the group. If the <user> is the currently logged user, activate the change by:

    newgrp docker
    or logout and login back again.

Installing and running OpenFOAM+

  • Make sure the user is in the group ‘docker’. This can be checked with

    id
    The list of groups should include docker.
  • Make sure the Docker daemon is running:

    docker info
  • Download the following scripts from the release instructions and put them in a local directory (e.g. home directory)
  • Make the install script executable

    chmod +x installOpenFOAM+
  • Download and create the Docker container for OpenFOAM+ by executing the first script

    ./installOpenFOAM+
  • This only needs to be done once per login. The first ever invocation will download the whole OpenFOAM+ installation so might take some time to finish. Any future invocations will take a few seconds only.
  • Make the start script executable

    chmod +x startOpenFOAM+
  • Start the Docker container with the second script:

    ./startOpenFOAM+
  • This will open a new shell with the OpenFOAM+ environment fully installed and ready to use, e.g.

    mkdir -p $FOAM_RUN
    run
    cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .
    cd cavity
    blockMesh
    icoFoam
  • All user files inside the Docker environment are available on the host inside the home directory.

Frequently Asked Questions

  • Is there any performance degradation when running via Docker?
    No performance penalties are expected. On Linux, OpenFOAM+ inside Docker should run as fast as natively compiled code. On Windows and Mac OS X there may be a slight performance penalty associated with I/O.
  • How do I check if the OpenFOAM+ image has been downloaded correctly?
    Type the command

    docker images
    to show the images available in Docker environment, e.g.

    REPOSITORY                         TAG       IMAGE ID        CREATED        VIRTUAL SIZE
    openfoamplus/of_v1612plus_rhel66   latest    88d542266184    4 hours ago    1.574 GB
    If you receive an error message about not being able to contact the Docker daemon check that
    • the Docker daemon is started at boot time
    • the user account is in the group ‘docker’
  • Where are my files?
    The user files inside Docker are visible (i.e. mounted) in your home area and can be operated on just like any other file.
  • Why doesn’t paraFoam display?
    • Make sure that your machine’s software is fully up-to-date. See if you can start a simple X-windows, non-graphics program, e.g.: xterm If this does not come up there may be a problem with the xhost access to the host screen. This is one of the steps inside the startOpenFOAM+ script.
    • An alternative remedy is to install the native ParaView version for your system, and use the built-in OpenFOAM reader and/or OpenFOAM data conversion tools.
  • How do I run parallel?
    Same as any other OpenFOAM+ installation, e.g.: mpirun -np 2 icoFoam -parallel
  • How do I run parallel on multiple computers?
    This is not trivial inside the Docker environment. Also you might want to include optimised communication libraries (MPI) so it probably makes more sense to perform a native compilation.
  • How do I compile code?
    The Docker environment contains a full OpenFOAM+ development environment so all Allwmake, wmake, wclean etc. commands work (it is running the actual environment OpenFOAM+ was compiled in!)
  • What does installOpenFOAM+ do?
    It downloads the OpenFOAM+ image from the Docker Hub and creates a specialised container. This container
    • mounts the home directory of the user with read/write access
    • optionally channels the graphics
    • sets up the OpenFOAM+ environment.

    The image itself was created from Centos 6.6. If you wish to install any additional tool in your docker container, start it as usual via the startOpenFOAM+ script, login as root (it expects your system root password) and use e.g. yum.

  • I still have questions...
    The Docker route to OpenFOAM+ is new and still being refined. It you have comments/tips please mail them to: docker (at) opencfd.co.uk.