diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/Allrun b/tutorials/multiphase/interDyMFoam/ras/floatingObject/Allrun index 7c7ab5294..6beda2d3c 100755 --- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/Allrun +++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/Allrun @@ -1,7 +1,89 @@ -#!/bin/sh +#!/bin/bash # Source tutorial run functions . $WM_PROJECT_DIR/bin/tools/RunFunctions +#------------------------------------------------------------------------------ +# ========= | +# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox +# \\ / O peration | +# \\ / A nd | Copyright held by original author +# \\/ 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 +# +# Description +# Additionnal run functions, based on the original RunFunctions file +# +# Author: +# Martin Beaudoin, Hydro-Quebec, 2010. All rights reserved +# +#------------------------------------------------------------------------------ + +# Exception handler: dump the tail of the log file on error +verbose_report_on_runApplication_error() +{ + ecode=$? + if [ "$reportOnErrorOnlyOnce" ] ; then + echo " " + echo " => Error running $APP_RUN..." + echo " => Here are the last 50 lines of the log file log.$APP_RUN..." + echo " " + if [ -f log.$APP_RUN ] ; then + tail -50 log.$APP_RUN + exit $ecode; + fi + fi + + # Do not report again when exiting + unset reportOnErrorOnlyOnce +} + +# Variation of runApplication with exception handling +runApplicationAndReportOnError () +{ + trap 'verbose_report_on_runApplication_error' ERR + + LOG_NAME= + while getopts "l:" OPTFLAG ; do + LOG_NAME=$OPTARG + shift $((OPTIND-1)) ; OPTIND=1 + done + + APP_RUN=$1; shift + APP_NAME=${APP_RUN##*/} + + if [ -z $LOG_NAME ] ; then + LOG_NAME=log.$APP_NAME + fi + + reportOnErrorOnlyOnce=1 + + if [ -f $LOG_NAME ] ; then + echo "$APP_NAME already run on $PWD: remove log file to run" + exit 1; + else + echo "Running $APP_NAME on $PWD" + $APP_RUN $* > $LOG_NAME 2>&1 + fi +} + +# We force the display of a stack trace if we encounter problems +export FOAM_ABORT=1 # Set application name application="interDyMFoam" @@ -17,11 +99,11 @@ makeMeshByCellSet() done } -runApplication blockMesh +runApplicationAndReportOnError blockMesh makeMeshByCellSet 1 2 -runApplication subsetMesh -overwrite c0 -patch floatingObject -cp -r 0.org 0 > /dev/null 2>&1 -runApplication setFields -runApplication $application +runApplicationAndReportOnError subsetMesh -overwrite c0 -patch floatingObject +cp -r 0.org/* 0 > /dev/null 2>&1 +runApplicationAndReportOnError setFields +runApplicationAndReportOnError $application # -----------------------------------------------------------------------------