#!/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
syntax highlighted by Code2HTML, v. 0.9.1