- foamExec was removed as part of commit 6c68c34e1a
but
overlooked the fact that it is partly still needed by foamJob.
When running in parallel, it is used to source the etc/bashrc env.
Reinstated a stripped down form, which has been relocated to
bin/tools directory (it should not be directly called by the user).
The previous version switching functionality has nonetheless be
dropped since it only worked only when a rigid naming convention for
OpenFOAM installations was followed.
ENH: add foamJob log=, -log-app, -no-log options, improved coding quality
121 lines
3.2 KiB
Bash
Executable File
121 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
#------------------------------------------------------------------------------
|
|
# ========= |
|
|
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
# \\ / O peration |
|
|
# \\ / A nd | Copyright (C) 2019 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 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
|
|
# foamExec <application> ...
|
|
#
|
|
# Description
|
|
# Runs an application (with arguments) after first sourcing the OpenFOAM
|
|
# etc/bashrc file from the project directory
|
|
#
|
|
# This script must exist in $WM_PROJECT_DIR/bin/tools
|
|
#
|
|
# Can useful for parallel runs. For example,
|
|
#
|
|
# mpirun -n <nProcs> \
|
|
# projectDir/bin/tools/foamExec <simpleFoam> ... -parallel
|
|
#
|
|
#------------------------------------------------------------------------------
|
|
usage() {
|
|
exec 1>&2
|
|
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
|
|
cat<<USAGE
|
|
|
|
Usage: ${0##*/} [OPTION] <application> ...
|
|
|
|
options:
|
|
-help Print the usage
|
|
|
|
Runs an application (with arguments) after first sourcing the OpenFOAM
|
|
etc/bashrc file from the project directory
|
|
|
|
USAGE
|
|
exit 1
|
|
}
|
|
|
|
# Report error and exit
|
|
die()
|
|
{
|
|
exec 1>&2
|
|
echo
|
|
echo "Error encountered:"
|
|
while [ "$#" -ge 1 ]; do echo " $1"; shift; done
|
|
echo
|
|
echo "See '$0 -help' for usage"
|
|
echo
|
|
exit 1
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
toolsDir="${0%/*}" # The bin/tools dir
|
|
projectDir="${toolsDir%/bin/tools}" # Project dir
|
|
|
|
# Parse options
|
|
while [ "$#" -gt 0 ]
|
|
do
|
|
case "$1" in
|
|
-h | -help*)
|
|
usage
|
|
;;
|
|
--)
|
|
shift
|
|
break
|
|
;;
|
|
-*)
|
|
die "unknown option: '$1'"
|
|
;;
|
|
*)
|
|
break
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
#-------------------------------------------------------------------------------
|
|
|
|
[ "$#" -ge 1 ] || die "No application specified"
|
|
|
|
[ -d "$projectDir" ] || {
|
|
echo "Error: no project dir: $projectDir" 1>&2
|
|
exit 2
|
|
}
|
|
|
|
[ -f "$projectDir/etc/bashrc" ] || {
|
|
echo "Error: file not found: $projectDir/etc/bashrc" 1>&2
|
|
exit 2
|
|
}
|
|
|
|
|
|
# Source bashrc within a function to preserve command-line arguments
|
|
# - this will not have aliases, but working non-interactively anyhow
|
|
sourceBashrc()
|
|
{
|
|
. "$projectDir/etc/bashrc" $FOAM_SETTINGS
|
|
}
|
|
|
|
sourceBashrc
|
|
exec "$@"
|
|
|
|
#------------------------------------------------------------------------------
|