Star-CCM+/fr
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 ou Puissance sur demande) 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.
Configurer votre compte¶
Afin de configurer votre compte pour utiliser un serveur de licence avec le module Star-CCM+, créez le fichier ~/.licenses/starccm.lic comme suit :
serveur et port sont remplacés respectivement par le nom de l'hôte (ou l'adresse IP) et le port statique du fournisseur du serveur de licence. Il n'est pas nécessaire de définir manuellement CDLMD_LICENSE_FILE comme étant égal à <port>@<serveur> dans votre script Slurm; au lieu de cela, lorsqu'un module Star-CCM+ est chargé, cette variable est automatiquement spécifiée dans votre fichier ~/.licenses/starccm.lic.
Fichier pour une licence POD¶
Si vous avez acheté une licence POD de Siemens votre variable d'environnement LM_PROJECT doit être manuellement configurée comme étant égale à YOUR CD-ADAPCO PROJECT ID dans votre script Slurm. De plus, le fichier ~/.licenses/starccm.lic doit être configuré comme suit sur toutes les grappes.
Soumettre des tâches en lot sur nos grappes¶
Quand vous soumettez des tâches sur une grappe pour la première fois, vous devrez configurer votre environnement pour l’utilisation de votre licence. Si vous utilisez le serveur de licences distant de Siemens à paiement à l'usage (pay-on-usage), créez le fichier ~/.licenses/starccm.lic comme décrit ci-dessus dans Fichier pour une licence POD; ceci devrait fonctionner immédiatement. Par contre, si vous utilisez un serveur de licence de votre établissement, créez d'abord le fichier ~/.licenses/starccm.lic et soumettez une demande d'assistance au soutien technique. Nous vous aiderons à coordonner les modifications du pare-feu réseau nécessaires pour y accéder (en supposant que le serveur n'a jamais été configuré pour communiquer via la grappe de l'Alliance que vous voulez utiliser). Si vous rencontrez toujours des problèmes pour faire fonctionner la licence, essayez de supprimer ou de renommer le fichier ~/.flexlmrc car les chemins de recherche et/ou les paramètres précédents du serveur de licence pourraient y être stockés. Notez que des fichiers de sortie de tâches déjà exécutées peuvent s'accumuler dans des répertoires cachés nommés .star-version_number et consommer ainsi votre quota. Ceux-ci peuvent être supprimés périodiquement en exécutant rm -ri ~/.starccm* et en répondant oui à l'invite.
Scripts pour l'ordonnanceur¶
#!/bin/bash
#SBATCH --account=def-group # Spécifier un compte
#SBATCH --time=00-01:00 # Limite de temps : jj-hh:mm
#SBATCH --nodes=1 # Spécifier 1 ou plusieurs nœuds
#SBATCH --cpus-per-task=16 # Spécifier le nombre de cœurs par nœud (192 max)
#SBATCH --mem=64G # Spécifier la mémoire par nœud (0 max)
#SBATCH --ntasks-per-node=1 # Ne pas changer cette valeur
#SBATCH --constraint=granite # Utiliser les nœuds de calcul Intel (sans GPU)
#SBATCH --switches=1 # Utiliser 1 commutateur réseau (optionnel)
module load StdEnv/2023
#module load starccm/20.04.007-R8 # Spécifier 18.04.009, 18.06.007, 19.04.009,
module load starccm-mixed/20.04.007 # 19.06.009, 20.02.008, 20.04.007 ou plus récent
module list
SIM_FILE='mysample.sim' # Spécifier le nom de votre fichier d'entrée .sim
#JAVA_FILE='mymacros.java' # Décommenter pour spécifier le nom d'un fichier d'entrée .java
export STARCCM_TMP="${SCRATCH}/.starccm-${EBVERSIONSTARCCM}"
mkdir -p "$STARCCM_TMP"
slurm_hl2hl.py --format STAR-CCM+ > machinefile-$SLURM_JOB_ID
# Redirect from ~/.star-VERSION# to $SLURM_TMPDIR
export STARCCM_TMP="$SLURM_TMPDIR"
slurm_hl2hl.py --format STAR-CCM+ > $SLURM_TMPDIR/machinefile
NCORE=$((SLURM_NNODES * SLURM_CPUS_PER_TASK * SLURM_NTASKS_PER_NODE))
NCORE=$((SLURM_NTASKS * SLURM_CPUS_PER_TASK))
export FLEXIBLAS=StarMKL
echo "FLEXIBLAS=$FLEXIBLAS"
STAR_MPI="-mpi intel"
STAR_FABRIC="-fabric tcp"
if [ -n "$LM_PROJECT" ]; then
echo "Serveur de licences Siemens PoD..."
starccm+ -jvmargs -Xmx4G -jvmargs -Djava.io.tmpdir=$SLURM_TMPDIR -batch -power -podkey $LM_PROJECT -np $NCORE -nbuserdir $SLURM_TMPDIR -machinefile $SLURM_TMPDIR/machinefile $JAVA_FILE $SIM_FILE $STAR_MPI $STAR_FABRIC
else
echo "Serveur de licences institutionnel..."
[ $(command -v lmutil) ] && lmutil lmstat -c ~/.licenses/starccm.lic -a | egrep "license1|UP|use|$USER"; echo
starccm+ -jvmargs -Xmx4G -jvmargs -Djava.io.tmpdir=$SLURM_TMPDIR -batch -np $NCORE -nbuserdir $SLURM_TMPDIR -machinefile $SLURM_TMPDIR/machinefile $JAVA_FILE $SIM_FILE $STAR_MPI $STAR_FABRIC
fi
#!/bin/bash
#SBATCH --account=def-group # Spécifier un compte
#SBATCH --time=00-01:00 # Limite de temps : jj-hh:mm
#SBATCH --nodes=1 # Spécifier 1 ou plusieurs nœuds
#SBATCH --cpus-per-task=16 # Spécifier le nombre de cœurs par nœud (192 max)
#SBATCH --mem=64G # Spécifier la mémoire par nœud (0 max)
#SBATCH --ntasks-per-node=1 # Ne pas changer cette valeur
##SBATCH --constraint=genoa # Décommenter sur Rorqual (optionnel)
module load StdEnv/2023
#module load starccm/20.04.007-R8 # Spécifier 18.04.009, 18.06.007, 19.04.009,
module load starccm-mixed/20.04.007 # 19.06.009, 20.02.008, 20.04.007 ou plus récent
module list
SIM_FILE='mysample.sim' # Spécifier le nom de votre fichier d'entrée .sim
#JAVA_FILE='mymacros.java' # Décommenter pour spécifier le nom d'un fichier d'entrée .java
# Commenter la ligne suivante si vous utilisez un serveur de licences institutionnel
LM_PROJECT='my22digitpodkey' # Spécifier votre clé Siemens Power on Demand (PoD)
# ------- aucune modification requise après cette ligne --------
# Redirect from ~/.star-VERSION# to $SLURM_TMPDIR
export STARCCM_TMP="$SLURM_TMPDIR"
slurm_hl2hl.py --format STAR-CCM+ > $SLURM_TMPDIR/machinefile
NCORE=$((SLURM_NNODES * SLURM_CPUS_PER_TASK * SLURM_NTASKS_PER_NODE))
echo "Checking $CDLMD_LICENSE_FILE ..."
server=$(head -n1 $CDLMD_LICENSE_FILE | awk '{print $2}')
port=$(cat $CDLMD_LICENSE_FILE | grep -Eo '[0-9]+$')
nmap $server -Pn -p $port | grep -v '^$'; echo
export FLEXIBLAS=NETLIB
STAR_MPI="-mpi openmpi"
if [ "$RSNT_CPU_VENDOR_ID" == intel ]; then
export FLEXIBLAS=StarMKL
STAR_MPI="-mpi intel"
elif [ "$RSNT_CPU_VENDOR_ID" == amd ]; then
export FLEXIBLAS=StarAOCL
fi
echo "FLEXIBLAS=$FLEXIBLAS"
if [ "${EBVERSIONSTARCCM:0:2}" -lt 20 ]; then
STAR_UCX="-xsystemucx"
fi
if [ -n "$LM_PROJECT" ]; then
echo "Serveur de licences Siemens PoD..."
starccm+ -jvmargs -Xmx4G -jvmargs -Djava.io.tmpdir=$SLURM_TMPDIR -batch -power -podkey $LM_PROJECT -np $NCORE -nbuserdir $SLURM_TMPDIR -machinefile $SLURM_TMPDIR/machinefile $JAVA_FILE $SIM_FILE $STAR_MPI $STAR_FABRIC
else
echo "Serveur de licences institutionnel..."
[ $(command -v lmutil) ] && lmutil lmstat -c ~/.licenses/starccm.lic -a | egrep "license1|UP|use|$USER"; echo
starccm+ -jvmargs -Xmx4G -jvmargs -Djava.io.tmpdir=$SLURM_TMPDIR -batch -np $NCORE -nbuserdir $SLURM_TMPDIR -machinefile $SLURM_TMPDIR/machinefile $JAVA_FILE $SIM_FILE $STAR_MPI $STAR_FABRIC
fi
#!/bin/bash
#SBATCH --account=def-group # Spécifier un compte
#SBATCH --time=00-01:00 # Limite de temps : jj-hh:mm
#SBATCH --nodes=1 # Spécifier 1 ou plusieurs nœuds
#SBATCH --cpus-per-task=192 # Spécifier le nombre de cœurs par nœud (192 max)
#SBATCH --mem=0 # Spécifier la mémoire par nœud (0 max)
#SBATCH --ntasks-per-node=1 # Ne pas changer cette valeur
#!/bin/bash
module load StdEnv/2023
#module load starccm/20.04.007-R8 # Spécifier 18.04.009, 18.06.007, 19.04.009,
module load starccm-mixed/20.04.007 # 19.06.009, 20.02.008, 20.04.007 ou plus récent
module list
SIM_FILE='mysample.sim' # Spécifier le nom du fichier d'entrée .sim
#JAVA_FILE='mymacros.java' # Décommenter pour spécifier le nom d'un fichier d'entrée .java
# Commenter la ligne suivante si vous utilisez un serveur de licences institutionnel
LM_PROJECT='my22digitpodkey' # Spécifier votre clé Siemens Power on Demand (PoD)
# Ces paramètres sont utilisés à la place de votre ~/.licenses/starccm.lic
# (les paramètres affichés utiliseront le serveur de licences PoD de cd-adapco)
FLEXPORT=1999 # Spécifier le port statique flex du serveur
VENDPORT=2099 # Spécifier le port statique du fournisseur du serveur
LICSERVER=flex.cd-adapco.com # Spécifier le nom d'hôte du serveur de licences
# ------- aucune modification requise après cette ligne --------
# Redirect from ~/.star-VERSION# to $SLURM_TMPDIR
export STARCCM_TMP="$SLURM_TMPDIR"
export CDLMD_LICENSE_FILE="$FLEXPORT@127.0.0.1"
ssh tri-gw -L $FLEXPORT:$LICSERVER:$FLEXPORT -L $VENDPORT:$LICSERVER:$VENDPORT -N -f
slurm_hl2hl.py --format STAR-CCM+ > $SLURM_TMPDIR/machinefile
NCORE=$((SLURM_NNODES * SLURM_CPUS_PER_TASK * SLURM_NTASKS_PER_NODE))
export FLEXIBLAS=StarAOCL
echo "FLEXIBLAS=$FLEXIBLAS"
STAR_MPI="-mpi openmpi"
if [ "${EBVERSIONSTARCCM:0:2}" -lt 20 ]; then
STAR_UCX="-xsystemucx"
fi
# Contournement pour les échecs de licence :
# tant que le statut de sortie n'est pas égal à 0, nous essayons de lancer Star-CCM+ (ici, au moins 5 fois).
i=1
RET=-1
while [ $i -le 5 ] && [ $RET -ne 0 ]; do
[ $i -eq 1 ] || sleep 5
echo "Tentative numéro : "$i
if [ -n "$LM_PROJECT" ]; then
echo "Serveur de licences Siemens PoD..."
starccm+ -jvmargs "-Xmx4G -Djava.io.tmpdir=$SLURM_TMPDIR" -batch $BATCH_CMD -power -podkey $LM_PROJECT -np $NCORE -nbuserdir $SLURM_TMPDIR -machinefile $SLURM_TMPDIR/machinefile $SIM_FILE $STAR_MPI $STAR_UCX
else
echo "Serveur de licences institutionnel..."
starccm+ -jvmargs "-Xmx4G -Djava.io.tmpdir=$SLURM_TMPDIR" -batch $BATCH_CMD -np $NCORE -nbuserdir $SLURM_TMPDIR -machinefile $SLURM_TMPDIR/machinefile $SIM_FILE $STAR_MPI $STAR_UCX
fi
RET=$?
i=$((i+1))
done
exit $RET
Mode graphique¶
Pour travailler en mode graphique, nous recommandons d'utiliser un système OnDemand ou JupyterLab pour démarrer un bureau distant. En plus de configurer ~/.licenses/starccm.lic, les groupes qui possèdent une licence POD devraient aussi exécuter export LM_PROJECT='CD-ADAPCO PROJECT ID' avant starccm+, comme dans les exemples ci-dessous; selon le type de licence, il faut aussi ajouter d'autres options comme -power. La commande module avail starccm-mixed affiche les versions de starccm qui sont disponibles dans l'environnement standard (StdEnv) que vous avez chargé. Autrement, la commande module spider starccm-mixed affiche toutes les versions de modules qui sont disponibles dans toutes les versions de modules StdEnv.
OnDemand¶
- Sur votre ordinateur, connectez-vous à un système OnDemand en entrant une des adresses URL dans le navigateur :
- NIBI:
https://ondemand.sharcnet.ca - FIR:
https://jupyterhub.fir.alliancecan.ca - NARVAL:
https://portail.narval.calculquebec.ca/ - RORQUAL:
https://jupyterhub.rorqual.alliancecan.ca - TRILLIUM:
https://ondemand.scinet.utoronto.ca
- NIBI:
- Sur votre ordinateur, ouvrez une fenêtre de terminal avec une des commandes suivantes :
- STAR-CCM+ 18.04.008 (ou versions plus récentes)
module load StdEnv/2023(par défaut)module load starccm-mixed/20.04.007OUstarccm/20.04.007-R8starccm+ -rr server
- STAR-CCM+ 15.04.010 --> 18.02.008 (plages de versions)
module load StdEnv/2020(non pris en charge)module load starccm-mixed/15.04.010OUstarccm/15.04.010-R8starccm+ -mesa
- STAR-CCM+ 18.04.008 (ou versions plus récentes)
VncViewer¶
- Connectez-vous à un nœud de connexion ou un nœud de calcul avec TigerVNC.
- Sur votre ordinateur, ouvrez une nouvelle fenêtre de terminal et lancez une des commandes suivantes :
- STAR-CCM+ 18.04.008 (ou versions plus récentes)
module load StdEnv/2023(par défaut)module load starccm-mixed/20.04.007OUstarccm/20.04.007-R8starccm+ -rr server
- STAR-CCM+ 15.04.010 --> 18.02.008 (plage de versions)
module load StdEnv/2020(non pris en charge)module load starccm-mixed/17.02.007OUstarccm/17.02.007-R8starccm+
- STAR-CCM+ 18.04.008 (ou versions plus récentes)