Install Feel++ from Containers

The recommended way to start learning Feel++ consists in using container technologies. Containers provide an all-in one programming environment to start directly using Feel++. Feel++ is provided with two containers solutions currently:

Depending on your usage and your operating system, you might prefer using one of these previous solutions. On a laptop or workstation Docker and Singularity are preferred while on a cluster Singularity is preferred.

The next sub-sections describe how to obtain Feel++ images to begin with Feel++ programming.

Feel++ images provide either a compiling environment with all dependencies, executables or both.
Before going further you might want to install one of the previous solution. install docker or install singularity.

1. Docker

Using Feel++ inside Docker is the recommended and fastest way to use Feel++. The Docker chapter is dedicated to Docker and Feel++ containers chapter is dedicated to Feel++ in Docker. We strongly encourage you to follow these steps if you begin with Feel++ in particular as an end-user. Users who would like to develop with and in Feel++ should read through the remaining sections of this chapter.

To begin with Feel++ using docker, you need first to install docker to have a working docker environment on your machine following the official documentation with respect to your operating system. Then choose one of the Feel++ images available on the official repository dockerhub.

We provide currently two main images:

Table 1. Table of the current components of the FCS
Component Description Built From


Feel++ libraries and tools


Feel++ Toolboxes


1.1. Usage example

Via the command line and using the Feel++ toolboxes below, we get the image and create a new container.

docker pull feelpp/feelpp-toolboxes (1)
docker run -it -v ${HOME}/feel:/feel feelpp/feelpp-toolboxes (2)
1 fetch the latest feelpp/feelpp-toolboxes image
2 create a container associated to feelpp/feelpp-toolboxes, execute in interactive mode and mount $HOME/feel on /feel in Docker in order to access the simulation results outside the Docker image.

The -it option is used to place yourself inside the container in an interactive mode. You can start using Feel++ commands directly. Note that the -v option is used to share a folder between the host and the container.

Each container can be seen as an instance for the choosen image. You can create as many instance as you desire!

It is also possible to execute a Feel++ application or a command embedded in the container from the outside. For example

docker run feelpp/feelpp-toolboxes echo "Hello World!"
To keep your data in the container, you can use docker [start|stop] -i <container name>.

Many examples are available in the Feel++ tools and toolboxes. For example, once you are in Docker,

Run the CFD toolbox on the TurekHron benchmark
mpirun --bind-to core -np 10 feelpp_toolbox_fluid --case "github:{path:toolboxes/fluid/TurekHron}"

2. Singularity

singularity is another container technology initially developed to work with HPC infrastructure and solve some security problems in multi-users environment. Latest Feel++ singularity images can be found on our data management server (recommended) in the Feel++ collection. Future public Feel++ images will also be available on the official singularity hub website. We provide currently the same main images as for docker, but the suffix naming might vary depending on the image version.

Singularity works in a similar way as for docker. For example, you can download one of the image available on girder under the collection feelppsingularity_imagescifeelpp_feelpp-toolboxes-latest.simg click on download button.

Once downloaded you can place yourself in the container in interactive as for docker using the commandline

singularity shell -B ${HOME}/feel:/feel feelpp_feelpp-toolboxes-latest.simg
You can retrieve an image from singularity hub directly singularity pull shub://feelpp/singularity:feelpp-toolboxes-latest instead of girder and as for docker. Be aware that current images are currently older than the ones on girder!