diff --git a/bin/foamCleanTutorials b/bin/foamCleanTutorials new file mode 100755 index 0000000000..003e553659 --- /dev/null +++ b/bin/foamCleanTutorials @@ -0,0 +1,68 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM 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. +# +# OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# Script +# foamCleanTutorials +# +# Description +# Run either Allclean or default cleanCase in current directory +# and all its subdirectories. +# +#------------------------------------------------------------------------------ + +# Source tutorial clean functions +. $WM_PROJECT_DIR/bin/tools/CleanFunctions + +thisScript=$0 +if [ "/${thisScript#/}" != "$thisScript" ] +then + thisScript="$PWD/$thisScript" +fi + +# If an argument is supplied do not execute ./Allclean to avoid recursion +if [ $# = 0 -a -f "./Allclean" ] +then + # Specialised script. + ./Allclean +elif [ -d "./system" ] +then + # Normal case. + cleanCase +elif [ -d "./Make" ] +then + # Normal application. + cleanApplication +else + # Recurse to subdirectories + for case in * + do + if [ -d $case ] + then + (cd $case && $thisScript) + fi + done +fi + +#------------------------------------------------------------------------------ diff --git a/bin/foamRunTutorials b/bin/foamRunTutorials new file mode 100755 index 0000000000..a0cc0c4739 --- /dev/null +++ b/bin/foamRunTutorials @@ -0,0 +1,75 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM 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. +# +# OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# Script +# foamRunTutorials +# +# Description +# Run either Allrun or blockMesh/application in current directory +# and all its subdirectories. +# +#------------------------------------------------------------------------------ + +# Source tutorial functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +thisScript=$0 +if [ "/${thisScript#/}" != "$thisScript" ] +then + thisScript="$PWD/$thisScript" +fi + +# If an argument is supplied do not execute ./Allrun to avoid recursion +if [ $# = 0 -a -f "./Allrun" ] +then + # Specialised script. + ./Allrun +elif [ -d "./system" ] +then + # Normal case. + parentDir=`dirname $PWD` + application=`basename $parentDir` + runApplication blockMesh + runApplication $application +else + # Loop over sub-directories and compile any applications + for case in * + do + if [ -d $case -a -d "$case/Make" ] + then + (compileApplication $case) + fi + done + # Recurse to subdirectories + for case in * + do + if [ -d $case ] + then + (cd $case && $thisScript) + fi + done +fi + +#------------------------------------------------------------------------------ diff --git a/bin/tools/CleanFunctions b/bin/tools/CleanFunctions new file mode 100644 index 0000000000..de10e46fc7 --- /dev/null +++ b/bin/tools/CleanFunctions @@ -0,0 +1,107 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM 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. +# +# OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# Script +# CleanFunctions +# +# Description +# +#------------------------------------------------------------------------------ + +#cleanTimeDirectories () +#{ +# echo "Cleaning $case case of $application application" +# TIME_DIRS=`foamInfoExec . $1 -times | sed '1,/constant/d'` +# for T in $TIME_DIRS +# do +# if [ $T != "0" ] ; then +# echo "Deleting directory $T" +# rm -rf ${T} > /dev/null 2>&1 +# fi +# done +# rm -rf {log,log.*,log-*,logSummary.*,.fxLock,*.xml,ParaView*,paraFoam*,*.foam} > /dev/null 2>&1 +#} + +cleanTimeDirectories () +{ + echo "Cleaning $PWD case" + nZeros=0 + zeros="" + while [ $nZeros -lt 8 ] ; do + timeDir="0.${zeros}[1-9]*" + rm -rf ${timeDir} > /dev/null 2>&1 + rm -rf ./-${timeDir} > /dev/null 2>&1 + zeros=`printf %0${nZeros}d 0` + nZeros=$(($nZeros + 1)) + done + rm -rf ./{[1-9]*,-[1-9]*,log,log.*,log-*,logSummary.*,.fxLock,*.xml,ParaView*,paraFoam*,*.foam} > /dev/null 2>&1 +} + +cleanCase () +{ + cleanTimeDirectories + + rm -rf constant/polyMesh/{allOwner*,cell*,face*,meshModifiers*} \ + constant/polyMesh/{owner*,neighbour*,point*,edge*} \ + > /dev/null 2>&1 + + for f in `find . -name "*Dict"` + do + sed -e /arguments/d $f > temp.$$ + mv temp.$$ $f + done +} + +cleanParallelCase () +{ + cleanCase + + rm -rf processor* > /dev/null 2>&1 +} + +removeCase () +{ + echo "Removing $case case" + rm -rf $1 +} + +cleanSamples () +{ + rm -rf {samples,sampleSurfaces} > /dev/null 2>&1 +} + +cleanUcomponents () +{ + rm -rf 0/{Ux,Uy,Uz} > /dev/null 2>&1 +} + +cleanApplication () +{ + echo "Cleaning $PWD application" + wclean +} + + +#------------------------------------------------------------------------------ diff --git a/bin/tools/RunFunctions b/bin/tools/RunFunctions new file mode 100644 index 0000000000..64cc1ae4e5 --- /dev/null +++ b/bin/tools/RunFunctions @@ -0,0 +1,88 @@ +#!/bin/sh +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. +# \\/ M anipulation | +#------------------------------------------------------------------------------ +# License +# This file is part of OpenFOAM. +# +# OpenFOAM 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. +# +# OpenFOAM 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 OpenFOAM; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +# Script +# RunFunctions +# +# Description +# +#------------------------------------------------------------------------------ + +runApplication () +{ + APP_RUN=$1; shift + + if [ -f log.$APP_RUN ] ; then + echo "$APP_RUN already run on $PWD: remove log file to run" + else + echo "Running $APP_RUN on $PWD" + $APP_RUN $* > log.$APP_RUN 2>&1 + fi +} + +runParallel () +{ + APP_RUN=$1; shift + + if [ -f $log.$APP_RUN ] ; then + echo "$APP_RUN already run on $PWD: remove log file to run" + else + if [ "$WM_MPLIB" = LAM ] + then + echo "Starting LAM using $2 machines file" + lamboot -v $2 + fi + echo "Running $APP_RUN in parallel on $PWD using $1 processes" + ( mpirun -np $1 $APP_RUN -parallel < /dev/null > log.$APP_RUN 2>&1 ) + if [ "$WM_MPLIB" = LAM ] + then + echo "Stopping LAM" + lamclean + fi + fi +} + +compileApplication () +{ + echo "Compiling $1 application" + wmake $1 +} + +cloneCase () +{ + if [ -d $2 ] ; then + echo "Case already cloned: remove case directory $2 to clone" + else + echo "Cloning $2 case from $1" + mkdir $2 + cpfiles="0 system constant" + for f in $cpfiles + do + cp -r $1/$f $2 + done + fi +} + +#------------------------------------------------------------------------------