#!/bin/sh #============================================================================ # # Code_Saturne version 1.3 # ------------------------ # # # This file is part of the Code_Saturne Kernel, element of the # Code_Saturne CFD tool. # # Copyright (C) 1998-2007 EDF S.A., France # # contact: saturne-support@edf.fr # # The Code_Saturne Kernel is free software; you can redistribute it # and/or modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # The Code_Saturne Kernel is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied warranty # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with the Code_Saturne Kernel; if not, write to the # Free Software Foundation, Inc., # 51 Franklin St, Fifth Floor, # Boston, MA 02110-1301 USA # #============================================================================ # #================================================= # Script de generation d'un cas Code_Saturne #================================================= usage() { echo echo " usage : cree_sat -etude nom_etude [nom_cas1 nom_cas2 ...][-noihm]" echo " creation d'une etude complete" echo " cree_sat -cas nom_cas1 nom_cas2 ...[-noihm]" echo " creation de nouveaux sous-cas pour une etude" echo " cree_sat -noihm" echo " fonctionnement sans IHM Code_Saturne " echo " (-noihm est obligatoirement le premier ou le dernier argument" echo " et n apparait qu une seule fois)" echo echo " cree_sat -h pour une information plus detaillee ou directement :" echo " xpdf ${DOC_UTILISATION}" echo; exit } enleve_test() { NTEST=0 NTEST=`grep -c TEST_A_ENLEVER_POUR_UTILISER_LE_SOUS_PROGRAMME_DEBUT $1` while [ $NTEST -gt 0 ] ; do NDEB=`grep -n TEST_A_ENLEVER_POUR_UTILISER_LE_SOUS_PROGRAMME_DEBUT $1 \ | head -1 | awk -F: '{print $1}'` if [ "$NDEB" != "" ]; then NFIN=`grep -n TEST_A_ENLEVER_POUR_UTILISER_LE_SOUS_PROGRAMME_FIN $1 \ | head -1 | awk -F: '{print $1}'` sed "${NDEB},${NFIN}d" $1 > ${1}.tmp mv ${1}.tmp $1 fi NTEST=`grep -c TEST_A_ENLEVER_POUR_UTILISER_LE_SOUS_PROGRAMME_DEBUT $1` done } commente_exemple() { NTEST=0 NTEST=`grep -c CODE_FOURNI_COMME_EXEMPLE_A_ADAPTER_PAR_L_UTILISATEUR_DEBUT $1` while [ $NTEST -gt 0 ] ; do NDEB=`grep -n CODE_FOURNI_COMME_EXEMPLE_A_ADAPTER_PAR_L_UTILISATEUR_DEBUT $1 \ | head -1 | awk -F: '{print $1}'` if [ "$NDEB" != "" ]; then NFIN=`grep -n CODE_FOURNI_COMME_EXEMPLE_A_ADAPTER_PAR_L_UTILISATEUR_FIN $1 \ | head -1 | awk -F: '{print $1}'` # veiller a modifier la chaine recherchee, sinon on boucle a l'infini sed "${NDEB}s/DEBUT/debut/" $1 > ${1}.tmp mv ${1}.tmp $1 sed "${NFIN}s/FIN/fin/" $1 > ${1}.tmp mv ${1}.tmp $1 sed "${NDEB},${NFIN}s/^/Cex/" $1 > ${1}.tmp mv ${1}.tmp $1 fi NTEST=`grep -c CODE_FOURNI_COMME_EXEMPLE_A_ADAPTER_PAR_L_UTILISATEUR_DEBUT $1` done } enleve_commentaire() { NTEST=0 NTEST=`grep -c CODE_FOURNI_COMME_EXEMPLE_A_ADAPTER_PAR_L_UTILISATEUR_DEBUT $1` if [ $NTEST -gt 0 ] then DEB=CODE_FOURNI_COMME_EXEMPLE_A_ADAPTER_PAR_L_UTILISATEUR_DEBUT FIN=CODE_FOURNI_COMME_EXEMPLE_A_ADAPTER_PAR_L_UTILISATEUR_FIN sed "/${DEB}/d" $1 > ${1}.tmp mv ${1}.tmp $1 sed "/${FIN}/d" $1 > ${1}.tmp mv ${1}.tmp $1 fi } cree_etude() { ETUDE="$1" if [ -d "$ETUDE" ]; then echo "l'etude $ETUDE existe deja" exit fi mkdir $ETUDE mkdir ${ETUDE}/MAILLAGE mkdir ${ETUDE}/POST etude=`echo $ETUDE |tr "[:upper:]" "[:lower:]"` } cree_cas() { IHM=$1 shift ETUDE=$1 shift REPBASE=`pwd` for i in $* do CAS="${i}" CAS=`echo $CAS | tr "[:lower:]" "[:upper:]"` REPBASECAS=$REPBASE/$CAS echo; echo "Creation du cas $CAS en cours..." if [ -d "$CAS" -o -f "$CAS" ]; then echo " le cas $CAS existe deja" continue fi etude=`echo $ETUDE |tr "[:upper:]" "[:lower:]"` cas=`echo $CAS |tr "[:upper:]" "[:lower:]"` mkdir ${CAS} mkdir ${CAS}/DATA mkdir ${CAS}/FORT mkdir ${CAS}/RESU mkdir ${CAS}/SCRIPTS #Recuperation du CS_HOME FICCSHOMEBKSLH=$CAS/SCRIPTS/.cshomebkslh echo $CS_HOME | sed -e "s/\//\\\\\//g" > $FICCSHOMEBKSLH CSHOMEBCKSLH=`cat $FICCSHOMEBKSLH` rm $FICCSHOMEBKSLH #Recuperation du CSGUI_HOME FICCSGUIHOMEBKSLH=$CAS/SCRIPTS/.csguihomebkslh echo $CSGUI_HOME | sed -e "s/\//\\\\\//g" > $FICCSGUIHOMEBKSLH CSGUIHOMEBCKSLH=`cat $FICCSGUIHOMEBKSLH` rm $FICCSGUIHOMEBKSLH # recopie des donnees (uniquement les utiles) thch=THCH mkdir ${CAS}/DATA/$thch for var in dp_C3P dp_C3PSJ dp_ELE dp_FCP ; do cp -f $CS_HOME/data/thch/$var $CAS/DATA/$thch/. done gui=SaturneGUI if [ "$IHM" = "ihm" ] ; then cp -f $SCRIPT_HOME/$gui ${CAS}/DATA/. sed "s/NOMCSGUIHOME/$CSGUIHOMEBCKSLH/g" $CAS/DATA/$gui >cas.tmp mv -f cas.tmp $CAS/DATA/$gui chmod +x $CAS/DATA/$gui fi # recopie des src utilisateur et masquage des repertoires CVS users=USERS cp -Rf $CS_HOME/users $CAS/FORT/$users listedircvs=`find $CAS/FORT/$users -name CVS -print` for dir in $listedircvs ; do mv $dir `dirname ${dir}`/.CVS done # sur cluster, le nom est limite a 15 caracteres NOMETCAS=`echo ${etude}${cas}|cut -c1-15` cp -f $SCRIPT_HOME/lance $CAS/SCRIPTS cp -f $SCRIPT_HOME/lance.help $CAS/SCRIPTS FICREPBASECASBKSLH=$CAS/SCRIPTS/.repbasecasbkslh echo $REPBASECAS | sed -e "s/\//\\\\\//g" > $FICREPBASECASBKSLH REPBASECASBCKSLH=`cat $FICREPBASECASBKSLH` rm $FICREPBASECASBKSLH sed -e "s/nometcas/$NOMETCAS/g" \ -e "s/NOMET/$ETUDE/g" \ -e "s/NOMCAS/$CAS/g" \ -e "s/NOMREPBASE/$REPBASECASBCKSLH/g" \ -e "s/NOMCSHOME/$CSHOMEBCKSLH/g" \ -e "s/nomet/${etude}/g" $CAS/SCRIPTS/lance >cas.tmp mv cas.tmp $CAS/SCRIPTS/lance for fich in $CAS/FORT/$users/*/*.[F] do if [ -f $fich ] ; then if [ "$IHM" = "ihm" ] ; then commente_exemple $fich else enleve_commentaire $fich fi fi done for fich in $CAS/FORT/$users/*/*.[F,c] $CAS/SCRIPTS/lance do if [ -f $fich ] ; then enleve_test $fich fi done chmod +x $CAS/SCRIPTS/lance echo "Creation du cas $CAS terminee" done exit } #=== MAIN === clear echo "=================================================================" echo " Generation d'un cas Saturne " echo " version 1.3 " echo "=================================================================" echo if [ -z "$CS_HOME" ]; then echo tput bold ; echo " ATTENTION : La variable CS_HOME n'est pas positionnee" tput rmso ; tput sgr0 echo " Session terminee"; echo exit fi USER=`whoami` SCRIPT_HOME=$CS_HOME/bin FICHE_HOME=$CS_HOME/doc/FICHE DOC_UTILISATION=$CS_HOME/doc/UTILISATION/saturne.pdf NNOIHM=0 for i in $* do if [ "${i}" = "-noihm" ] then NNOIHM=`echo $NNOIHM |awk '{printf($1+1)}' ` fi done if [ $NNOIHM -eq 1 ] then FIRST=$1 LAST=`echo $* | awk '{print $NF}'` if [ "$FIRST" != "-noihm" -a "$LAST" != "-noihm" ] then usage else IHM=noihm fi elif [ $NNOIHM -eq 0 ] then IHM=ihm else usage fi if [ "$1" = "-noihm" ] then shift fi TYPE="" case $1 in -etude) TYPE="etude";shift;; -cas) TYPE="cas";shift;; *) usage;; esac if [ $# = 0 -o "$1" = "-noihm" ] then usage fi if [ $TYPE = "etude" ] then ETUDE=$1 shift ETUDE=`echo $ETUDE |tr "[:lower:]" "[:upper:]"` cree_etude $ETUDE cd $ETUDE else ETUDE=`basename ${PWD}` fi if [ $# = 0 -o "$1" = "-noihm" ] then CAS="CAS1" else CAS="" for i in $* do if [ "${i}" = "-noihm" ] then continue else CAS="$CAS ${i}" fi done fi cree_cas $IHM $ETUDE $CAS exit