Star-CCM+
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 nos utilisateurs; ceux-ci doivent donc posséder leur propre licence.
Utilisation de votre propre serveur de licence
Afin de configurer votre compte pour utiliser votre propre serveur de licence avec le module Star-CCM+ de Calcul Canada, créez le fichier de licence $HOME/.licenses/starccm.lic qui contient
SERVER IP ANY PORT
USE_SERVER
où IP et PORT sont l'adresse IP et le port de votre serveur de licence.
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.
Deux distributions MPI peuvent être employées :
- IBM Platform MPI est employée par défaut, mais n’est cependant pas compatible avec le réseau OmniPath sur Cedar;
- Intel MPI est indiquée avec l'option -mpi intel.
Étant donné que ces implémentations MPI ne sont pas complètement intégrées avec l’ordonnanceur Slurm, il faut préparer un fichier contenant la liste des serveurs que vous voulez utiliser. Pour ce faire, vous pouvez utiliser le script slurm_hl2hl.py qui, lancé avec l’option --format STAR-CCM+ fournira cette liste; copiez la liste dans un fichier qui pourra ensuite être lu par STAR-CCM+.
En raison de cette intégration limitée, il faut aussi utiliser les options --ntasks-per-node=1 et configurer --cpus-per-task=32 pour utiliser tous les cœurs, comme montré dans les scripts. En particulier, quand vous soumettez une tâche sur Cedar avec les modules des versions 14.02.012 ou 14.04.013, vous devez ajouter -fabric psm2
à la ligne de commande de starccm+ (dernière ligne de l'exemple de script sous l'onglet Cedar ci-dessous) pour que les tâches sur plusieurs nœuds s'effectuent sans problème, autrement aucun résultat ne sera produit.
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.
#!/bin/bash
#SBATCH --account=def-group # Specify some account
#SBATCH --time=00-01:00 # Time limit: dd-hh:mm
#SBATCH --nodes=2 # Specify 1 or more nodes
#SBATCH --cpus-per-task=40 # Request all cores per node
#SBATCH --mem=0 # Request all memory per node
#SBATCH --ntasks-per-node=1 # Do not change this value
# module load StdEnv/2016 # Uncomment for version 14.06.013 or older
# module load starccm/14.06.013-R8
# module load starccm-mixed/14.06.013
# module load starccm/17.02.007-R8
module load starccm-mixed/17.02.007
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
NCORE=$((SLURM_NTASKS * SLURM_CPUS_PER_TASK))
starccm+ -batch -power -np $NCORE -podkey $LM_PROJECT -licpath $CDLMD_LICENSE_FILE -machinefile $PWD/machinefile $PWD/your-file.sim
#!/bin/bash
#SBATCH --account=def-group # Specify some account
#SBATCH --time=00-01:00 # Time limit: dd-hh:mm
#SBATCH --nodes=2 # Specify 1 or more nodes
#SBATCH --cpus-per-task=48 # or 32 Request all cores per node
#SBATCH --mem=0 # Request all memory per node
#SBATCH --ntasks-per-node=1 # Do not change this value
# module load StdEnv/2016 # Uncomment for version 14.06.013 or older
# module load starccm/14.06.013-R8
# module load starccm-mixed/14.06.013
# module load starccm/17.02.007-R8
module load starccm-mixed/17.02.007
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
NCORE=$((SLURM_NTASKS * SLURM_CPUS_PER_TASK))
starccm+ -batch -power -np $NCORE -podkey $LM_PROJECT -licpath $CDLMD_LICENSE_FILE -machinefile $PWD/machinefile $PWD/your-file.sim -mpi intel
#!/bin/bash
#SBATCH --account=def-group # Specify some account
#SBATCH --time=00-01:00 # Time limit: dd-hh:mm
#SBATCH --nodes=2 # Specify 1 or more nodes
#SBATCH --cpus-per-task=32 # or 44 Request all cores per node
#SBATCH --mem=0 # Request all memory per node
#SBATCH --ntasks-per-node=1 # Do not change this value
# module load StdEnv/2016 # Uncomment for version 14.06.013 or older
# module load starccm/14.06.013-R8
# module load starccm-mixed/14.06.013
# module load starccm/17.02.007-R8
module load starccm-mixed/17.02.007
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))
# Append -fabric psm2 to next line when loading module versions 15.04.010 or newer ie)
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
#!/bin/bash
#SBATCH --account=def-group # Specify some account
#SBATCH --time=00-01:00 # Time limit: dd-hh:mm
#SBATCH --nodes=2 # Specify 1 or more nodes
#SBATCH --cpus-per-task=64 # Request all cores per node
#SBATCH --mem=0 # Request all memory per node
#SBATCH --ntasks-per-node=1 # Do not change this value
module load StdEnv/2020 # Do not change
# module load starccm/17.02.007-R8
module load starccm-mixed/17.02.007
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))
# Append -fabric ucx to next line when loading module versions 15.04.010
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
'"`UNIQ--pre-00000027-QINU`"'
Visualisation à distance
Préparation
Configurez votre compte pour visualiser à distance :
- Créez le fichier de licence
~/.licenses/starccm.lic
comme décrit ci-dessus. - 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.
- configurez
Nœuds de calcul
Connectez-vous à un nœud avec TigerVNC et ouvrez une fenêtre de terminal. Lancez les commandes suivantes, selon la version que vous utilisez :
- 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). Lancez les commandes suivantes, selon la version que vous utilisez :
- 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