RETURN
Simulation
October 2021

FreeFem on Qarnot Cloud

FreeFEM is an open source finite element software used to solve partial differential equations. It can be used to simulate all kind of physics and even multi physics problems. A user should have a good understanding of the different integral formulations, as the FreeFEM code is very close to mathematics. Running your FreeFEM simulation on Qarnot is as easy as uploading your case and launching a script. Here’s a walk-through of the different steps.

Version

The test case uses FreeFEM 4.4-1, released in 2020.

If you are interested in another version, please send us an email at qlab@qarnot.com.

Test case

Please ensure that you have created a Qarnot account.

This test case is based on the Projection Algorithm for the Navier-Stokes Equations example. You can download the case folder here, which contains the case script. You should put it at the same folder level as the script to launch the calculation. Please note that it needs to be unzipped before it can be used on Qarnot.

Launching the case

Before starting a calculation with the Python SDK, a few steps are required:

Note: in addition to the Python SDK, Qarnot provides C# and Node.js SDKs and a Command Line.
Once everything is set up, the following script needs to be used to start the calculation.

Be sure you have copied your authentication token in the script (instead of <<<MY_SECRET_TOKEN>>>) to be able to launch the task on Qarnot.

freefem.py

#!/usr/bin/env python

# Import the Qarnot SDK
import qarnot

# Create a connection, from which all other objects will be derived
# Enter client token here
conn = qarnot.connection.Connection(client_token='<<<MY_SECRET_TOKEN>>>')

# Create the task
task = conn.create_task("Hello World - FreeFEM", "docker-batch", 1)

# Create the input bucket and synchronize with a local folder
# Insert a local folder directory
input_bucket = conn.create_bucket("freefem-in")
input_bucket.sync_directory("navierstokes")

# Attach the bucket to the task
task.resources.append(input_bucket)

# Create a result bucket and attach it to the task
task.results = conn.create_bucket("freefem-out")

# Define the Docker image and the command to be run in the container
task.constants["DOCKER_HOST"] = "localhost"
task.constants["DOCKER_REPO"] = "qarnotlab/freefem"
task.constants["DOCKER_TAG"] = "4.4-1"
task.constants["DOCKER_CMD"] = "bash -c '/usr/freefem/bin/ff-mpirun -np \$((\$(nproc)/2)) navierstokes.edp'"

# Submit the task
task.run(output_dir="freefem_results")

To launch this script, simply copy the preceding code in a Python script, put at the same level as the navierstokes folder and execute python3 freefem.py & in your terminal. You should copy the gist code (as shown here) and not the raw code.

Results

At any given time, you can monitor the status of your task on the general web interface Console. When the simulation is completed, all its numerical results are available in the output bucket. You can force preview as an image both .eps files to show the results.

You should also now have a result folder on your computer containing all the numerical results.

Wrapping up

That’s it! If you have any questions, please contact qlab@qarnot.com and we will help you with pleasure!

Return

Our articles