OpenFoam Foundation est le logiciel open source de référence pour les simulations de mécanique des fluides numérique (MFN). Bien qu'il soit principalement utilisé pour les simulations de fluides, il dispose également de solveurs pour toutes sortes de phénomènes physiques. Exécuter votre simulation OpenFoam-foundation sur Qarnot est aussi simple que de télécharger votre cas et de lancer un script. Voici un guide pas-à-pas des différentes étapes.
Le cas de test utilise OpenFoam-foundation 11, mais de nombreuses versions sont disponibles sur Qarnot, comme l'indique le tableau suivant. Pour en choisir une, il suffit de modifier la valeur de DOCKER_TAG
dans le script utilisé pour lancer le calcul.
Si une autre version vous intéresse, veuillez nous envoyer un e-mail à qlab@qarnot.com.
Avant de lancer le cas, assurez-vous que les prérequis suivants ont été remplis :
Ce cas de test est basé sur le tutoriel de simulation de la moto. Le cas de test présenté ci-dessous est basé sur le cas motorbike 11. Il contient les fichiers du maillage et de la configuration du cas.
Téléchargez-le, décompressez-le et déplacez le dossier MOTORBIKE-11 dans un dossier nommé "input".
Une fois le cas de la moto téléchargé, vous devriez être en mesure de lancer votre calcul de deux manières, présentées ci-dessous (mode batch ou mode SSH).
run-openfoam-foundation.py
#!/usr/bin/env python
# Import the Qarnot SDK
import qarnot
import os
# Create a connection, from which all other objects will be derived
# Enter client token here
conn = qarnot.connection.Connection(client_token="MY_SECRET_TOKEN")
# -------------------------------------------------------------------------- #
NB_NODES = 2
# -------------------------------------------------------------------------- #
# Create a task
task = conn.create_task("OpenFOAM Tests",
"openfoam-foundation", NB_NODES)
# Create the input bucket and synchronize with a local folder
# Insert a local folder directory
input_bucket = conn.retrieve_or_create_bucket("openfoam-in")
input_bucket.sync_directory("input")
# 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("openfoam-out")
task.constants['OPENFOAM_INPUT_DIRECTORY_NAME'] = 'MOTORBIKE-11'
task.constants['RUN_SCRIPT'] = "MOTORBIKE-11/Allrun"
task.constants['DOCKER_TAG'] = "11"
# Define checkpoint
task.snapshot(60)
# Submit the task
task.submit()
Pour lancer ce script, copiez simplement le code précédent dans un script Python, placez-le au même niveau que le dossier "input" et exécutez python3 run-openfoam-foundation.py &
dans votre terminal. 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.
Votre cas de test sera automatiquement lancé en utilisant le chemin de la commande RUN_SCRIPT défini dans le script run-openfoam-foundation.py
run-openfoam-foundation-ssh.py
#!/usr/bin/env python
# Import the Qarnot SDK
import qarnot
import os
# Create a connection, from which all other objects will be derived
# Enter client token here
conn = qarnot.connection.Connection(client_token="MY_SECRET_TOKEN")
# -------------------------------------------------------------------------- #
NB_NODES = 2
# -------------------------------------------------------------------------- #
# Create a task
task = conn.create_task("OpenFOAM-SSH Test",
"openfoam-foundation-ssh", NB_NODES)
# Create the input bucket and synchronize with a local folder
# Insert a local folder directory
input_bucket = conn.create_bucket("openfoam-in")
input_bucket.sync_directory("input")
# 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("openfoam-out")
task.constants['DOCKER_TAG'] = "11"
task.constants['DOCKER_SSH'] = ''
# Define checkpoint
task.snapshot(60)
# Submit the task
task.submit()
# The following will print the state of the task to your console
# It will also print the command to connect through ssh to the task when it's ready
LAST_STATE = ''
SSH_TUNNELING_DONE = False
while not SSH_TUNNELING_DONE:
if task.state != LAST_STATE:
LAST_STATE = task.state
print(f"** {LAST_STATE}")
# Wait for the task to be FullyExecuting
if task.state == 'FullyExecuting':
# If the ssh connexion was not done yet and the list active_forward is available (len!=0)
forward_list = task.status.running_instances_info.per_running_instance_info[0].active_forward
if not SSH_TUNNELING_DONE and len(forward_list) != 0:
ssh_forward_port = forward_list[0].forwarder_port
ssh_forward_host = forward_list[0].forwarder_host
cmd = f"ssh -o StrictHostKeyChecking=no openfoam@{ssh_forward_host} -p {ssh_forward_port}"
print(cmd)
SSH_TUNNELING_DONE = True
# Display errors on failure
if task.state == 'Failure':
print(f"** Errors: {task.errors[0]}")
SSH_TUNNELING_DONE = True
Le script ci-dessous vous permet de vous connecter à votre conteneur grâce au protocole SSH.
Pour le lancer, copiez simplement le code précédent dans un script Python, placez-le au même niveau que le dossier "input" et renseignez votre clé SSH dans le paramètre DOCKER_SSH. 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.
Exécutez python3 run-openfoam-foundation-ssh.py &
dans votre terminal.
Vous devriez maintenant pouvoir vous connecter à l'hôte en suivant les informations qui s'affichent dans votre console.
/!\ Veuillez noter que vous devez utiliser l'utilisateur openfoam
pour lancer votre cas.
Votre cas de test est disponible dans le répertoire /share.
Accédez au répertoire /share et vous serez maintenant en mesure de lancer votre cas de test avec la commande définie dans la variable RUN_SCRIPT.
cd /share
bash MOTORBIKE-11/Allrun
Pour en savoir plus sur les paramètres disponibles, consultez la section "Paramètres".
À tout moment, vous pouvez suivre le statut de votre tâche sur l'interface web générale Console. La figure suivante montre une simulation démo d'OpenFoam réussie sur la console de Qarnot.
Vous devriez également avoir 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 motorbike.foam
pour visualiser les résultats dans Paraview ou tout autre visualiseur. Vous pouvez également utiliser notre implémentation Paraview Web pour visualiser les résultats en ligne si nécessaire.
Paramètres disponibles :
C'est tout ! Si vous avez des questions, veuillez contacter qlab@qarnot.com et nous vous aiderons avec plaisir !