Retour
Simulation
Octobre 2021

FEniCS sur Qarnot Cloud

FEniCS est un logiciel libre d'éléments finis utilisé pour résoudre des équations aux dérivées partielles. Les équations et les physiques sont transcrites dans le langage FEniCS implémenté en Python. L'exécution de votre simulation FEniCS sur Qarnot est aussi simple que de télécharger votre cas et de lancer un script. Voici un aperçu des différentes étapes.

Version

Le cas de test utilise FEniCS 2019.2.0, sorti en 2019.

Si une autre version vous intéresse, n'hésitez pas à nous envoyer un e-mail à qlab@qarnot.com.

Cas de test

Veuillez vous assurer que vous avez créé un compte Qarnot.

Ce cas de test est basé sur l'équation de Poisson 2-D sur une unité carrée. L'équation est largement utilisée en physique et est une forme générale de l'équation de Laplace. Pour rendre notre problème unique, nous devons également choisir un domaine (un simple carré) et quelques conditions aux limites, qui sont présentées ci-dessous.

Vous pouvez téléchargder le dossier du cas ici, qui contient le cas de test sous forme de code dans un fichier Python. Vous devez le placer au même niveau que le script de lancement du calcul. Veuillez noter qu'il doit être décompressé avant de pouvoir être utilisé sur Qarnot.

Lancement du cas

Avant de commencer un calcul avec le SDK Python, quelques étapes sont nécessaires :

Remarque : en plus du SDK Python, Qarnot fournit des SDK C# et Node.js, ainsi qu'une ligne de commande.

Une fois que tout est configuré, le script suivant doit être utilisé pour démarrer le calcul. Assurez-vous d'avoir copié votre jeton d'authentification dans le script (à la place de <<<MY_SECRET_TOKEN>>>) pour pouvoir lancer la tâche sur Qarnot.

fenics.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 - FEniCS", "docker-batch", 1)

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

# 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("fenics-out")

# Define the Docker image and the command to be run in the container
task.constants["DOCKER_REPO"] = "qarnotlab/fenics"
task.constants["DOCKER_TAG"] = "2019.2.0"
task.constants["DOCKER_CMD"] = "bash -c 'mpirun -np \$((\$(nproc)/2)) python3 ft01_poisson.py'"

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

Pour lancer ce script, copiez simplement le code précédent dans un script Python, placez-le au même niveau que le dossier poisson et exécutez python3 fenics.py & dans votre terminal. Vous devez copier le code du gist (affiché ici) et non le code brut.

Résultats

À tout moment, vous pouvez surveiller l'état de votre tâche sur l'interface web générale de la Console.

Vous devriez également avoir maintenant un dossier de résultats dans le bucket de sortie et sur votre ordinateur, contenant tous les résultats numériques. Vous pouvez ouvrir le fichier solution000000.vtu (dans le dossier poisson) dans Paraview ou tout autre visualiseur. Vous pouvez aussi utiliser notre payload Paraview Web pour visualiser les résultats en ligne si nécessaire. Pour activer la vue 3D dans Paraview, allez dans l'onglet Filters, puis dans Alphabetical et choisissez Warp By Scalar.

Conclusion

Et voilà ! Si vous avez des questions, veuillez contacter qlab@qarnot.com et nous vous aiderons avec plaisir !

Retour

Nos articles