Star-CCM+

Revision as of 21:40, 2 June 2023 by Diane27 (talk | contribs)
Other languages:

STAR-CCM+ est une suite logicielle de simulation utilisée dans plusieurs spécialités de génie. Elle permet la modélisation dans des domaines variés dont l'acoustique, la dynamique des fluides, le transfert thermique, la rhéologie, l'écoulement polyphasique, le flux de particules, la mécanique des solides, les fluides réactifs, l'électrochimie et l'électromagnétisme.

Limites de la licence

Les binaires STAR-CCM+ sont installés sur nos serveurs, mais nous n'avons pas de licence pour utilisation générale; vous devez donc posséder votre propre licence. Vous pouvez acheter une licence POD (Power On Demand) directement de Siemens. Autrement, vous pouvez utiliser une licence locale hébergée par votre établissement pourvu que le pare-feu permette à la grappe où les tâches seront exécutées d'y accéder.

Utilisation de votre propre serveur de licence

Afin de configurer votre compte pour utiliser votre propre serveur de licence, créez le fichier $HOME/.licenses/starccm.lic qui contient

File : starccm.lic

SERVER IP ANY PORT
USE_SERVER


IP et PORT sont l'adresse IP et le port de votre serveur de licence.

Fichier pour une licence POD

Si vous disposez d'une licence POD de Siemens configurez le fichier $HOME/.licenses/starccm.lic sur la ou les grappes où les tâches seront exécutées.

File : starccm.lic

SERVER flex.cd-adapco.com ANY 1999
USE_SERVER


Soumettre des tâches en lot sur nos grappes

Sélectionnez l’un des modules disponibles, selon vos besoins :

  • starccm pour le format double précision,
  • starccm-mixed pour le format précision mixte.

Vous devrez aussi configurer votre environnement pour l’utilisation de votre licence. Cette opération est plutôt simple si vous utilisez le serveur CD-adapco qui vous permet de payer uniquement pour votre consommation. Par contre, si vous utilisez un serveur de licence interne, contactez le soutien technique pour obtenir de l'aide.

Sur Niagara, les nœuds de calcul configurent le système de fichiers $HOME en lecture seule (read only). Il est donc important de définir la variable d'environnement $STARCCM_TMP et de la diriger vers $SCRATCH, ce qui est unique à la version de StarCCM+. Autrement, StarCCM+ tente de créer le répertoire dans $HOME et se termine de façon anormale.


File : starccm_job.sh

#!/bin/bash
#SBATCH --account=def-group   # indiquez le nom du compte
#SBATCH --time=00-01:00       # indiquez la limite de temps (jj-hh:mm)
#SBATCH --nodes=1             # indiquez 1 ou plusieurs nœuds
#SBATCH --cpus-per-task=40    # demandez tous les cœurs par nœud
#SBATCH --mem=0               # demandez toute la mémoire par nœud
#SBATCH --ntasks-per-node=1   # ne pas modifier

module load StdEnv/2020       # ne pas modifier

# chargez le module starccm/18.02.008-R8
module load starccm-mixed/18.02.008

export LM_PROJECT='YOUR CD-ADAPCO PROJECT ID GOES HERE'
export CDLMD_LICENSE_FILE="1999@flex.cd-adapco.com"

export STARCCM_TMP="${SCRATCH}/.starccm-${EBVERSIONSTARCCM}"
mkdir -p "$STARCCM_TMP"

slurm_hl2hl.py --format STAR-CCM+ > machinefile-$SLURM_JOB_ID

NCORE=$((SLURM_NTASKS * SLURM_CPUS_PER_TASK))

starccm+ -batch -power -np $NCORE -podkey $LM_PROJECT -licpath $CDLMD_LICENSE_FILE -machinefile $PWD/machinefile-$SLURM_JOB_ID $PWD/your-file.sim
File : starccm_job.sh

#!/bin/bash
#SBATCH --account=def-group   # indiquez le nom du compte
#SBATCH --time=00-01:00       # indiquez la limite de temps (jj-hh:mm)
#SBATCH --nodes=1             # indiquez 1 ou plusieurs nœuds
#SBATCH --cpus-per-task=48    # (ou 32) demandez tous les cœurs par nœud
#SBATCH --mem=0               # demandez toute la mémoire par nœud
#SBATCH --ntasks-per-node=1   # ne pas modifier

module load StdEnv/2020       # ne pas modifier

# chargez le module starccm/18.02.008-R8
module load starccm-mixed/18.02.008

export LM_PROJECT='YOUR CD-ADAPCO PROJECT ID GOES HERE'
export CDLMD_LICENSE_FILE="1999@flex.cd-adapco.com"

export STARCCM_TMP="${SCRATCH}/.starccm-${EBVERSIONSTARCCM}"
mkdir -p "$STARCCM_TMP"

slurm_hl2hl.py --format STAR-CCM+ > machinefile-$SLURM_JOB_ID

NCORE=$((SLURM_NTASKS * SLURM_CPUS_PER_TASK))

starccm+ -batch -power -np $NCORE -podkey $LM_PROJECT -licpath $CDLMD_LICENSE_FILE -machinefile $PWD/machinefile-$SLURM_JOB_ID $PWD/your-file.sim -mpi intel -fabric psm2
File : starccm_job.sh

#!/bin/bash
#SBATCH --account=def-group   # indiquez le nom du compte
#SBATCH --time=00-01:00       # indiquez la limite de temps (jj-hh:mm)
#SBATCH --nodes=1             # indiquez 1 ou plusieurs nœuds
#SBATCH --cpus-per-task=32    # (ou 44) Request all cores per node
#SBATCH --mem=0               # demandez tous les cœurs par nœud
#SBATCH --ntasks-per-node=1   # ne pas modifier

module load StdEnv/2020       # Do not change

# module load starccm/18.02.008-R8
module load starccm-mixed/18.02.008

export LM_PROJECT='YOUR CD-ADAPCO PROJECT ID GOES HERE'
export CDLMD_LICENSE_FILE="1999@flex.cd-adapco.com"

export STARCCM_TMP="${SCRATCH}/.starccm-${EBVERSIONSTARCCM}"
mkdir -p "$STARCCM_TMP"

slurm_hl2hl.py --format STAR-CCM+ > machinefile-$SLURM_JOB_ID

NCORE=$((SLURM_NTASKS * SLURM_CPUS_PER_TASK))

# Remove "-podkey $LM_PROJECT" from next line if using an institutional server

starccm+ -jvmargs -Xmx4G -jvmargs -Djava.io.tmpdir=$SLURM_TMPDIR -batch -power -np $NCORE -podkey $LM_PROJECT -licpath $CDLMD_LICENSE_FILE -machinefile $PWD/machinefile-$SLURM_JOB_ID $PWD/your-file.sim -mpi intel -fabric psm2
File : starccm_job.sh

#!/bin/bash
#SBATCH --account=def-group   # indiquez le nom du compte
#SBATCH --time=00-01:00       # indiquez la limite de temps (jj-hh:mm)
#SBATCH --nodes=1             # indiquez 1 ou plusieurs nœuds
#SBATCH --cpus-per-task=64    # demandez tous les cœurs par nœud
#SBATCH --mem=0               # demandez toute la mémoire par nœud
#SBATCH --ntasks-per-node=1   # ne pas modifier

module load StdEnv/2020       # ne pas modifier

# chargez le module starccm/18.02.008-R8
module load starccm-mixed/18.02.008

export LM_PROJECT='YOUR CD-ADAPCO PROJECT ID GOES HERE'
export CDLMD_LICENSE_FILE="1999@flex.cd-adapco.com"

export STARCCM_TMP="${SCRATCH}/.starccm-${EBVERSIONSTARCCM}"
mkdir -p "$STARCCM_TMP"

slurm_hl2hl.py --format STAR-CCM+ > machinefile-$SLURM_JOB_ID

NCORE=$((SLURM_NTASKS * SLURM_CPUS_PER_TASK))

starccm+ -jvmargs -Xmx4G -jvmargs -Djava.io.tmpdir=$SLURM_TMPDIR -batch -power -np $NCORE -podkey $LM_PROJECT -licpath $CDLMD_LICENSE_FILE -machinefile $PWD/machinefile-$SLURM_JOB_ID $PWD/your-file.sim -mpi openmpi


File : starccm_job.sh

#!/bin/bash

#SBATCH --time=0-00:30        # indiquez la limite de temps (jj-hh:mm)
#SBATCH --nodes=1             # indiquez 1 ou plusieurs nœuds
#SBATCH --cpus-per-task=40    # demandez tous les cœurs par nœud
#SBATCH --ntasks-per-node=1   # ne pas modifier
#SBATCH --mail-type=BEGIN
#SBATCH --mail-type=END
 
cd $SLURM_SUBMIT_DIR

ssh nia-gw -L 1999:flex.cd-adapco.com:1999 -L 2099:flex.cd-adapco.com:2099 -N -f
export LM_PROJECT='YOUR CD-ADAPCO PROJECT ID GOES HERE'
export CDLMD_LICENSE_FILE="1999@127.0.0.1"
 
module load CCEnv
module load StdEnv/2018.3
module load starccm/13.06.012-R8

slurm_hl2hl.py --format STAR-CCM+ > $SLURM_SUBMIT_DIR/machinefile_$SLURM_JOB_ID
 
NCORE=$((SLURM_NTASKS * SLURM_CPUS_PER_TASK))
 
# Workaround for license failures. 
# Try up to 5 times to get Star-CCM+ to start by checking exit status (throws 143 when fails, 0 when works).
i=1
RET=-1
while [ $i -le 5 ] && [ $RET -ne 0 ]; do
        [ $i -eq 1 ] || sleep 5
        echo "Attempt number: "$i
        starccm+ -batch -power -np $NCORE -podkey $LM_PROJECT -machinefile $SLURM_SUBMIT_DIR/machinefile_$SLURM_JOB_ID $SLURM_SUBMIT_DIR/your-simulation-file.java $SLURM_SUBMIT_DIR/your-simulation-file.sim > $SLURM_JOB_ID.results
        RET=$?
        i=$((i+1))
   done
exit $RET



Visualisation à distance

Préparation

Configurez votre compte pour visualiser à distance :

  1. Créez le fichier de licence ~/.licenses/starccm.lic comme décrit ci-dessus.
  2. Si vous avez une licence POD (Power-on-demand),
configurez export LM_PROJECT='CD-ADAPCO PROJECT ID' et
ajoutez -power aux autres options ligne de commande, comme montré ci-dessous.

Nœuds de calcul

Connectez-vous à un nœud avec TigerVNC et ouvrez une fenêtre de terminal, puis

STAR-CCM+ 15.04.010 (ou versions plus récentes)
module load StdEnv/2020
module load starccm-mixed/17.02.007 **OU** starccm/16.04.007-R8
starccm+
STAR-CCM+ 14.06.010, 14.04.013, 14.02.012
module load StdEnv/2016
module load starccm-mixed/14.06.010 **OU** starccm/14.06.010-R8
starccm+
STAR-CCM+ 13.06.012 (ou versions moins récentes)
module load StdEnv/2016
module load starccm-mixed/13.06.012 **OU** starccm/13.06.012-R8
starccm+ -mesa

Nœuds VDI

Connectez-vous à gra-vdi avec TigerVNC et ouvrez une fenêtre de terminal (Applications -> Systems Tools -> Mate Terminal), puis

STAR-CCM+ 15.04.010 (ou versions plus récentes)
module load CcEnv StdEnv/2020
module load starccm-mixed/17.02.007 **OU** starccm/17.02.007-R8
starccm+ -clientldpreload /usr/lib64/VirtualGL/libvglfaker.so
STAR-CCM+ 14.06.013 (pour cette version)
module load CcEnv StdEnv/2016
module load starccm-mixed/14.06.013 **OU** starccm/14.06.013-R8
starccm+ -clientldpreload /usr/lib64/VirtualGL/libvglfaker.so
STAR-CCM+ 13.06.012 (ou versions moins récentes)
module load CcEnv StdEnv/2016
module load starccm-mixed/13.06.012 **OU** starccm/13.06.012-R8
starccm+ -mesa