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 !
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.
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.
Avant de lancer un calcul avec le Python SDK, quelques étapes sont nécessaires :
starccm-e-corp
et starccm-e-corp-ssh
Note : en plus du Python SDK, Qarnot propose également des SDKs pour C# et Node.js, ainsi qu'une ligne de commande (CLI).
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
.
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 :
MY_SECRET_TOKEN
par votre jeton d'authentification réel.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.
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 :
MY_SECRET_TOKEN
par votre jeton d'authentification réel.SSH_PUBLIC_KEY
par votre clé SSH réelle.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
À 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".
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 :
download_results
du Python SDKC'est tout ! Si vous avez des questions, veuillez contacter qlab@qarnot-computing.com et nous vous aiderons avec plaisir !