foamCleanCase: new simplified script to clean a case directory,

resetting it to its initial state.

Also updated documentation of foamCleanTutorials.
This commit is contained in:
Chris Greenshields
2021-06-22 11:52:54 +01:00
parent ace45a5f35
commit fac831df42
2 changed files with 103 additions and 11 deletions

84
bin/foamCleanCase Executable file
View File

@ -0,0 +1,84 @@
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration | Website: https://openfoam.org
# \\ / A nd | Copyright (C) 2021 OpenFOAM Foundation
# \\/ 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 3 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, see <http://www.gnu.org/licenses/>.
#
# Script
# foamCleanCase
#
# Description
# Cleans an OpenFOAM case directory, resetting it to its initial state.
# Executes a local Allclean script if it present, otherwise runs the
# cleanCase function in bin/tools/CleanFunctions
#
#------------------------------------------------------------------------------
# Source tutorial clean functions
. "$WM_PROJECT_DIR/bin/tools/CleanFunctions"
usage() {
cat<<USAGE
Usage: ${0##*/} [OPTIONS]
options:
-case | -c <dir> specify case directory (default = local dir)
-help | -h print the usage
Cleans an OpenFOAM case directory, resetting it to its initial state.
USAGE
}
error() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
usage
exit 1
}
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
-c | -case)
[ "$#" -ge 2 ] || error "'$1' option requires an argument"
cd "$2" 2>/dev/null || error "Case directory does not exist: '$2'"
shift 2
;;
-h | -help)
usage && exit 0
;;
*)
break
;;
esac
done
[ $# -eq 0 ] || error "Incorrect arguments specified"
foamListTimes >/dev/null 2>&1 || \
error "'$PWD' is not a valid case directory"
[ -x Allclean ] && ./Allclean && \
echo "... using the local Allclean script" && exit 0
cleanCase
#------------------------------------------------------------------------------

View File

@ -39,11 +39,17 @@ Script=$0
usage() {
cat<<USAGE
Usage: ${0##*/} [OPTIONS]
Usage: ${0##*/} [OPTIONS] <arg (optional)>
options:
-help | -h print the usage
Helper script used by the Allclean scripts in the OpenFOAM tutorials
Script to clean tutorial cases called by the Allclean scripts in the OpenFOAM
tutorials. The script executes recursively on sub-directories to clean all
cases. Recursive execution is disabled for the top level Allclean or Allwclean
scripts by supplying a dummy argument <arg> when executing, e.g.
./${0##*/} cases
USAGE
}
@ -60,26 +66,28 @@ do
esac
done
# If an argument is supplied do not execute ./Allwclean or ./Allclean
# (to avoid recursion)
if [ $# -eq 0 -a -f Allwclean ]
# Specialised ./Allwclean script, do not execute if argument is supplied
if [ $# -eq 0 ] && [ -f Allwclean ]
then
# Specialised script
./Allwclean
elif [ $# -eq 0 -a -f Allclean ]
# Specialised ./Allclean script, do not execute if argument is supplied
elif [ $# -eq 0 ] && [ -f Allclean ]
then
# Specialised script
./Allclean
# For a case directory without Allclean, use the cleanCase function
elif [ -d system ]
then
# Normal case
cleanCase
# For a code directory without Allwclean, use the cleanApplication function
elif [ -d Make ]
then
# Normal application
cleanApplication
# Otherwise loop over sub-directories and execute script within each one
else
# Recurse into subdirectories
for caseName in *
do
( cd "$caseName" 2>/dev/null && $Script )