Retour
Simulation
Septembre 2022

Star-CCM+ sur Qarnot Cloud

Star-CCM+ est un logiciel multiphysique pour la simulation de produits dans des conditions réelles. Simcenter STAR-CCM+ apporte une approche unique d'exploration de conception et d'optimisation automatisée aux outils de simulation CFD de chaque ingénieur.

Voici un guide rapide, étape par étape, pour vous accompagner dans les différentes phases de l'exécution d'un cas test Star-CCM+ sur Qarnot. Suivez le guide !

Licence

Pour lancer une simulation Star-CCM+ sur Qarnot, vous devez nous autoriser à accéder à votre licence. Pour plus de détails, veuillez contacter notre équipe à qlab@qarnot-computing.com.

Nous supposerons, à partir de maintenant, que votre configuration de licence avec nous est déjà terminée.

Versions

Voici les versions actuellement disponibles sur Qarnot : (dual lorsque les précisions mixte et double sont disponibles).

Si vous souhaitez une autre version, veuillez nous envoyer un e-mail à qlab@qarnot-computing.com.

Prérequis

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

Note : en plus du Python SDK, Qarnot propose également des SDKs pour C# et Node.js, ainsi qu'une ligne de commande (CLI).

Cas test

Ce cas test vous montrera comment lancer le modèle cylindre_complet_extrusion_both_demi_DP_reconstruit_init sur Star-CCM+. Les fichiers d'entrée peuvent être téléchargés depuis l'archive suivante.

cylindre_complet_extrusion_both_demi_DP_reconstruit_init.sim

Une fois le fichier téléchargé, placez-le dans un répertoire nommé input.

Lancer le cas test

Une fois que tout est configuré, utilisez le script run-starccm.py ci-dessous pour lancer le calcul sur Qarnot.

"""Script to run a STAR-CCM sample computation on Qarnot cloud"""

import qarnot
from qarnot.scheduling_type import OnDemandScheduling

# =============================== Setup Variables =============================== #
# To change
CLIENT_TOKEN="MY_SECRET_TOKEN"
PROFILE="YOUR_PROFILE"

# If needed
TASK_NAME='RUN SAMPLE - STARCCM'
STARCCM_VERSION="19.04.009"
NB_INSTANCES = 1
STARCCM_CMD="starccm+ -power -batch run cylindre_complet_extrusion_both_demi_DP_reconstruit_init_c4056f43d7.sim"

# Optional - Multi node simulation
# NB_INSTANCES = 2
# STARCCM_CMD="starccm+ -power -batch -mpi openmpi -mpiflags \"--mca btl ^openib,tcp --mca pml ucx --mca osc ucx\" -machinefile /job/mpihosts run cylindre_complet_extrusion_both_demi_DP_reconstruit_init_c4056f43d7.sim"

# =============================================================================== #

# Create a connection, from which all other objects will be derived
conn = qarnot.connection.Connection(client_token=CLIENT_TOKEN)

# Create task
task = conn.create_task(TASK_NAME, PROFILE, NB_INSTANCES)

# Create the input bucket and synchronize with a local folder
input_bucket = conn.create_bucket('starccm-in')
input_bucket.sync_directory('input')
task.resources.append(input_bucket)

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

# Configure task parameters
task.constants['STARCCM_CMD'] = STARCCM_CMD
task.constants['DOCKER_TAG'] = STARCCM_VERSION

# Optional parameters
# Number of processes per node in the mpihost file, e.g. "26" out of 28 cores.
# task.constants['SETUP_CLUSTER_NB_SLOTS'] = "26"

# Define interval time in seconds when your simulation will be saved to your bucket.
# task.snapshot(900)

# OnDemand setup
# task.scheduling_type=OnDemandScheduling()

task.submit()

# ---------- Optional ----------

OUTPUT_DIR="cylindre-out"

# The following will download result to the OUTPUT_DIR 
# It will also print the state of the task to your console
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 == 'Success':
        task.download_results(OUTPUT_DIR, True)
        SSH_TUNNELING_DONE = True

    # Display errors on failure
    if task.state == 'Failure':
        print(f"** Errors: {task.errors[0]}")
        SSH_TUNNELING_DONE = True

Pour lancer le calcul sur Qarnot, enregistrez le code ci-dessus en tant que script Python dans votre répertoire de travail. Avant de l'exécuter, assurez-vous de mettre à jour les constantes suivantes au début du script :

Une fois cela fait, la structure de vos fichiers devrait ressembler à ceci :

├─ input/
│  ├─ cylindre_complet_extrusion_both_demi_DP_reconstruit_init_c4056f43d7.sim
├─ run-starccm.py

Pour lancer ce script, exécutez simplement python3 run-starccm.py dans votre terminal.

Lancer une tâche Star-CCM+ avec la connectivité SSH activée

Voici un exemple de la manière de lancer une simulation Star-CCM+ avec la connexion SSH activée sur la plateforme. Vous aurez besoin de :

"""Script to run a STAR-CCM sample with SSH connectivity on Qarnot cloud"""

import qarnot
from qarnot.scheduling_type import OnDemandScheduling

# =============================== Setup Variables =============================== #
# To change
CLIENT_TOKEN="MY_SECRET_TOKEN"
PROFILE="YOUR_SSH_PROFILE"
SSH_PUBLIC_KEY="YOUR_SSH_PUBLIC_KEY"

# If needed
TASK_NAME='RUN SAMPLE SSH - STARCCM'
STARCCM_VERSION="19.04.009"
NB_INSTANCES = 1
STARCCM_CMD="starccm+ -power -batch run cylindre_complet_extrusion_both_demi_DP_reconstruit_init_c4056f43d7.sim"

# Optional - Multi node simulation
# NB_INSTANCES = 2
# STARCCM_CMD="starccm+ -power -batch -mpi openmpi -mpiflags \"--mca btl ^openib,tcp --mca pml ucx --mca osc ucx\" -machinefile /job/mpihosts run cylindre_complet_extrusion_both_demi_DP_reconstruit_init_c4056f43d7.sim"

# =============================================================================== #

# Create a connection, from which all other objects will be derived
conn = qarnot.connection.Connection(client_token=CLIENT_TOKEN)

# Create task
task = conn.create_task(TASK_NAME, PROFILE, NB_INSTANCES)

# Create the input bucket and synchronize with a local folder
input_bucket = conn.create_bucket('starccm-in')
input_bucket.sync_directory('input')
task.resources.append(input_bucket)

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

# Configure task parameters
task.constants['STARCCM_CMD'] = STARCCM_CMD
task.constants['DOCKER_TAG'] = STARCCM_VERSION
task.constants['DOCKER_SSH'] = SSH_PUBLIC_KEY

# Optional parameters
# Set to 'true' to keep cluster alive once your simulation is done.
task.constants['NO_EXIT'] = "false" 

# Number of processes per node in the mpihost file, e.g. "26" out of 28 cores.
# task.constants['SETUP_CLUSTER_NB_SLOTS'] = "26"

# Define interval time in seconds when your simulation will be saved to your bucket.
# task.snapshot(900)

# OnDemand setup
# task.scheduling_type=OnDemandScheduling()

task.submit()

Pour lancer le calcul sur Qarnot, enregistrez le code ci-dessus en tant que script Python dans votre répertoire de travail. Avant de l'exécuter, assurez-vous de mettre à jour les constantes suivantes au début du script :

Et maintenant, vous pouvez exécuter python3 run-ssh.py.

Pour obtenir des détails sur l'utilisation de Star-CCM+ sur Qarnot, veuillez consulter notre documentation. Vous y trouverez des conseils utiles sur le clustering MPI et les paramètres disponibles

Suivi

À tout moment, vous pouvez suivre l'état de votre tâche sur Tasq.

Vous pouvez surveiller l'état de vos instances, les journaux (logs) ou le temps d'exécution, et vérifier la configuration de votre tâche, comme le nom du profil, la version de Star-CCM+ ou votre clé SSH.

Dans le cas d'une tâche SSH, l'adresse IP et le port se trouvent dans la section "Port Forward".

Résultats

Vous devriez maintenant avoir un dossier output dans votre répertoire de travail sur votre ordinateur et un bucket starccm_out dans Tasq contenant tous les fichiers de sortie.

Vous pouvez visualiser certaines images générées par la simulation qui se trouvent dans le répertoire images/ de votre bucket de sortie. Vous trouverez ci-dessous un aperçu de l'une d'entre elles.

Vos résultats seront stockés dans le bucket starccm-out et peuvent être récupérés de trois manières :

Conclusion

C'est tout ! Si vous avez des questions, veuillez contacter qlab@qarnot-computing.com et nous vous aiderons avec plaisir !

Source de la définition de Star-CCM+*

Retour

Nos articles