TUT: relocate tutorial log analysis as functions for reuse in modules

- removed some unneeded tutorial files
This commit is contained in:
Mark Olesen
2017-12-21 14:17:20 +01:00
parent 2fe7d0c00b
commit 9c38ad6ae4
7 changed files with 143 additions and 1575 deletions

View File

@ -6,20 +6,8 @@
# \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd.
#------------------------------------------------------------------------------
# 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/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# CleanFunctions
@ -158,6 +146,7 @@ cleanFaMesh ()
)
}
cleanApplication()
{
echo "Cleaning application $PWD"

120
bin/tools/LogFunctions Normal file
View File

@ -0,0 +1,120 @@
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2017 OpenCFD Ltd.
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# LogFunctions
#
# Description
# Miscellaneous functions for running tutorials in a loop and for
# analyzing the output.
#
# Output is normally summarized as 'testLoopReport'
#
#------------------------------------------------------------------------------
# logReport <logfile>
# Extracts useful info from log file.
logReport()
{
local logfile=$1
# logfile is path/to/case/log.application
caseName=$(dirname $logfile | sed -e 's/\(.*\)\.\///g')
app=$(echo $logfile | sed -e 's/\(.*\)log\.//g')
appAndCase="Application $app - case $caseName"
if grep -q "FOAM FATAL" $logfile
then
echo "$appAndCase: ** FOAM FATAL ERROR **"
return 1
fi
# Check for solution singularity on U equation
for eqn in Ux Uy Uz
do
if grep -q -E "${eqn}[:| ]*solution singularity" $logfile
then
if [ "$eqn" = Uz ]
then
# Can only get here if Ux,Uy,Uz all failed
echo "$appAndCase: ** Solution singularity **"
return 1
fi
else
break
fi
done
if grep -q -E "^[\t ]*[Ee]nd" $logfile
then
# Extract time from this type of content
## ExecutionTime = 60.2 s ClockTime = 63 s --> "60.2 s"
completionTime=$(tail -10 $logfile | \
sed -n -e '/Execution/{s/^[^=]*=[ \t]*//; s/\( s\) .*$/\1/; p}')
echo "$appAndCase: completed${completionTime:+ in }$completionTime"
else
echo "$appAndCase: unconfirmed completion"
fi
}
# Collect and analyse all log files
collectLogs()
{
echo "Collecting log files..." 1>&2
rm -f logs testLoopReport > /dev/null 2>&1
touch logs testLoopReport
local appDir log logFiles
for appDir in *
do
[ -d $appDir ] || continue
echo -n " $appDir..." 1>&2
logFiles=$(find -L $appDir -name 'log.*' -type f)
if [ -n "$logFiles" ]
then
echo 1>&2
else
echo " (no logs)" 1>&2
continue
fi
# Sort logs by time-stamp
for log in $(echo $logFiles | xargs ls -rt)
do
# Concatenate and summarize logs
cat "$log" >> logs 2>/dev/null
logReport $log
done
echo
done > testLoopReport
}
removeLogs()
{
echo "Removing backup files"
find . \( \
-name '*~' -o -name '*.bak' \
-name core -o -name 'core.[1-9]*' \
-name '*.pvs' -o -name '*.foam' -o -name '*.OpenFOAM' \
\) -type f -delete
rm -f logs testLoopReport > /dev/null 2>&1
}
#------------------------------------------------------------------------------

View File

@ -6,26 +6,15 @@
# \\/ M anipulation | Copyright (C) 2015-2017 OpenCFD Ltd.
#------------------------------------------------------------------------------
# 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/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# RunFunctions
#
# Description
# Miscellaneous functions for running tutorial cases
#
#------------------------------------------------------------------------------
# The normal locations