#!/bin/sh
#------------------------------------------------------------------------------
# =========                 |
# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
#  \\    /   O peration     |
#   \\  /    A nd           | Copyright (C) 1991-2005 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
#     Allrun
#
# Description
#     
#------------------------------------------------------------------------------

. RunFunctions

applications=\
" \
    icoFoam \
    turbFoam \
    simpleFoam \
    icoFoamAutoMotion \
    nonNewtonianIcoFoam \
    boundaryFoam \
    interFoam \
    lesInterFoam \
    rasInterFoam \
    buoyantSimpleFoam \
    buoyantFoam \
    potentialFoam \
    laplacianFoam \
    scalarTransportFoam \
    oodles \
    channelOodles \
    dnsFoam \
    mhdFoam \
    electrostaticFoam \
    financialFoam \
    sonicFoam \
    rhoSonicFoam \
    rhopSonicFoam \
    sonicLiquidFoam \
    sonicTurbFoam \
    stressedFoam \
    contactStressFoam \
    stressFemFoam \
    icoTopoFoam \
    XiFoam \
    Xoodles \
    dieselFoam \
    engineFoam \
    bubbleFoam \
    twoPhaseEulerFoam \
    settlingFoam \
"

logReport () {
case=`dirname $1 | sed s/"\(.*\)\.\/"/""/g`
app=`echo $1 | sed s/"\(.*\)\."/""/g`
appAndCase="Application $app - case $case"

fatalError=`grep "FOAM FATAL" $1`
UxSS=`grep -E "Ux[:| ]*solution singularity" $1`
UySS=`grep -E "Uy[:| ]*solution singularity" $1`
UzSS=`grep -E "Uz[:| ]*solution singularity" $1`
completed=`grep -E "^[\t ]*[eE]nd" $1`

if [ "$fatalError" ] ; then
    echo "$appAndCase: ** FOAM FATAL ERROR **"
    return
elif [ "$UxSS" -a "$UySS" -a "$UzSS" ] ; then
    echo "$appAndCase: ** Solution singularity **"
    return
elif [ "$completed" ] ; then
    completionTime=`tail -10 $log | grep Execution | cut -d= -f2 | sed 's/^[ \t]*//'` 
    if [ "$completionTime" ] ; then
        completionTime="in $completionTime"
    fi
    echo "$appAndCase: completed $completionTime"
    return
else
    echo "$appAndCase: unconfirmed completion"
fi
}

rm testLoopReport > /dev/null 2>&1 &
touch testLoopReport
for application in $applications
do
    cd $application
    Allrun
#    echo "$application application completed" >> ../testLoopReport
    for log in `find . -name "log.*" | xargs ls -rt`
    do
        logReport $log >> ../testLoopReport
    done
    echo "" >> ../testLoopReport
    cd ..
done

find . -name "log.*" -exec cat {} \; >> logs

#------------------------------------------------------------------------------
