#!/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 . # # Script # foamExec ... # # 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 \ # projectDir/bin/tools/foamExec ... -parallel # #------------------------------------------------------------------------------ usage() { exec 1>&2 while [ "$#" -ge 1 ]; do echo "$1"; shift; done cat< ... 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 "$@" #------------------------------------------------------------------------------