Skip to content
Commits on Source (3)
  • Mark OLESEN's avatar
    TUT: update run/clean scripts · b49685fa
    Mark OLESEN authored
    b49685fa
  • Mark OLESEN's avatar
    BUG: bad reference in edgeExtractorCorners.C · 64822c8c
    Mark OLESEN authored
    - erroneous conversion from LongList to DynList
    64822c8c
  • Mark OLESEN's avatar
    COMP: resolve label-size=64 ambiguities · 3bc78e5b
    Mark OLESEN authored
    * The generic templated constructor and assignment
      Eg,
         template<class ListType> DynList(const ListType& lst)
    
      Provides the best candidate when there is a int32/int64 mismatch:
         DynList<int64_t> list(10)
    
      The cleanest solution would be avoid the generic templated versions
      entirely, but they are needed when converting from rows of graph data
      (which are stored as LongList). However, this approach introduced some
      odd regressions.
    3bc78e5b
......@@ -119,6 +119,14 @@ public:
//- Construct given size
explicit inline DynList(const label);
//- Construct given integer size
#if WM_LABEL_SIZE == 64
explicit inline DynList(const int32_t nElem)
:
DynList(label(nElem))
{}
#endif
//- Construct from given size and defualt value
explicit inline DynList(const label, const T&);
......@@ -217,10 +225,6 @@ public:
//- Copy of another list
inline void operator=(const DynList<T, staticSize>&);
//- Copy of another list type
template<class ListType>
inline void operator=(const ListType&);
//- Compare the list with the another one
inline bool operator==(const DynList<T, staticSize>&) const;
inline bool operator!=(const DynList<T, staticSize>&) const;
......
......@@ -606,28 +606,6 @@ inline void Foam::Module::DynList<T, staticSize>::operator=
}
template<class T, Foam::label staticSize>
template<class ListType>
inline void Foam::Module::DynList<T, staticSize>::operator=(const ListType& l)
{
# ifdef DEBUG
checkAllocation();
# endif
allocateSize(l.size());
nextFree_ = l.size();
# ifdef DEBUG
checkAllocation();
# endif
for (label i = 0; i < nextFree_; ++i)
{
this->operator[](i) = l[i];
}
}
template<class T, Foam::label staticSize>
inline bool Foam::Module::DynList<T, staticSize>::operator==
(
......
......@@ -121,7 +121,7 @@ void Foam::Module::meshOctree::setOctantVectorsAndPositions()
// set vrtLeavesPos_
for (label vrtI = 0; vrtI < 8; ++vrtI)
{
FixedList<label, 3> vc(0);
FixedList<label, 3> vc(Zero);
if (vrtI & 1)
{
......@@ -142,7 +142,7 @@ void Foam::Module::meshOctree::setOctantVectorsAndPositions()
for (label i = 0; i < 8; ++i)
{
FixedList<label, 3> pos;
FixedList<label, 3> pos(Zero);
for (label j = 0; j < 3; ++j)
{
......
......@@ -136,7 +136,8 @@ void Foam::Module::meshOctreeAutomaticRefinement::setMaxRefLevel()
{
finished = false;
const scalar lSize = size/pow(2, label(maxRefLevel_));
const scalar lSize = size/pow(label(2), label(maxRefLevel_));
// Or: const scalar lSize = size/(1L << maxRefLevel_);
if (lSize < cs)
{
......
......@@ -81,12 +81,15 @@ void Foam::Module::meshOctreeCreator::setRootCubeSizeAndRefParameters()
{
finished = false;
const scalar lSize = size/Foam::pow(2, label(globalRefLevel_));
const scalar lSize = size/Foam::pow(label(2), label(globalRefLevel_));
// Or: const scalar lSize = size/(1L << globalRefLevel_);
if (lSize <(maxSize*(1.0 - SMALL)))
{
const scalar bbSize =
0.5*maxSize*Foam::pow(2, label(globalRefLevel_));
0.5*maxSize*Foam::pow(label(2), label(globalRefLevel_));
// Or: const scalar bbSize = 0.5*maxSize*(1L << globalRefLevel_);
rootBox.max() = c + point(bbSize, bbSize, bbSize);
rootBox.min() = c - point(bbSize, bbSize, bbSize);
finished = true;
......@@ -132,7 +135,8 @@ void Foam::Module::meshOctreeCreator::setRootCubeSizeAndRefParameters()
{
finished = false;
const scalar lSize = maxSize/Foam::pow(2, addLevel);
const scalar lSize = maxSize/Foam::pow(label(2), addLevel);
// Or: const scalar lSize = maxSize/(1L << addLevel);
if (lSize <= cs)
{
......@@ -237,7 +241,8 @@ void Foam::Module::meshOctreeCreator::setRootCubeSizeAndRefParameters()
{
finished = false;
const scalar lSize = maxSize/Foam::pow(2, addLevel);
const scalar lSize = maxSize/Foam::pow(label(2), addLevel);
// Or: const scalar lSize = maxSize/(1L << addLevel);
if (lSize <= cs)
{
......@@ -321,7 +326,8 @@ void Foam::Module::meshOctreeCreator::setRootCubeSizeAndRefParameters()
{
finished = false;
const scalar lSize = maxSize/Foam::pow(2, addLevel);
const scalar lSize = maxSize/Foam::pow(label(2), addLevel);
// Or: const scalar lSize = maxSize/(1L << addLevel);
if (lSize <= cs)
{
......@@ -405,7 +411,9 @@ void Foam::Module::meshOctreeCreator::setRootCubeSizeAndRefParameters()
{
finished = false;
const scalar lSize = maxSize/Foam::pow(2, nLevel);
const scalar lSize =
maxSize/Foam::pow(label(2), nLevel);
// Or: const scalar lSize = maxSize/(1L << nLevel);
if (lSize <= cs)
{
......
......@@ -96,7 +96,7 @@ Foam::Module::meshOctreeCubeCoordinates::refineForPosition
) const
{
//- create new boxes in z-order fashion
FixedList<label, 3> addPos(0);
FixedList<label, 3> addPos(Zero);
if (i & 1)
{
addPos[0] = 1;
......
......@@ -1161,7 +1161,7 @@ bool Foam::Module::edgeExtractor::checkCorners()
// and check whether there exist various disconnected surface
// parts in the vicinity of this group of edge
const DynList<label>& invalidEdges = mIt->second;
const auto& invalidEdges = mIt->second;
forAll(invalidEdges, i)
invalidFeatureEdges.insert(invalidEdges[i]);
......
#!/bin/sh
cd ${0%/*} || exit 1 # Run from this directory
cd ${0%/*} || exit 1 # Run from this directory
. $WM_PROJECT_DIR/bin/tools/LogFunctions # Tutorial log-file functions
echo "--------"
echo "Cleaning tutorials ..."
echo "Removing backup files"
find . \( \
-name '*~' -o -name '*.bak' \
-name core -o -name 'core.[1-9]*' \
-name '*.pvs' -o -name '*.OpenFOAM' -name '*.foam' \
\) -type f -delete
rm -f logs testLoopReport > /dev/null 2>&1
removeLogs
echo "Cleaning tutorials"
foamCleanTutorials cases
echo "--------"
......
......@@ -3,30 +3,18 @@
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
# \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd.
# \\ / A nd | Copyright (C) 2017 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/>.
# This file is part of OpenFOAM, licensed under GNU General Public License
# <http://www.gnu.org/licenses/>.
#
# Script
# Allrun
#
# Description
# Runs tutorial cases and summarizes the outcome as 'testLoopReport'
# Run tutorial cases and summarize the outcome as 'testLoopReport'
#
#------------------------------------------------------------------------------
cd ${0%/*} || exit 1 # Run from this directory
......@@ -43,17 +31,16 @@ options:
-collect Collect logs only. Can be useful for aborted runs.
-help print the usage
* Runs tutorial cases and summarizes the outcome as 'testLoopReport'
Run tutorial cases and summarize the outcome as 'testLoopReport'
USAGE
exit 1
}
#------------------------------------------------------------------------------
unset optCollectOnly
# parse options
# Parse options
while [ "$#" -gt 0 ]
do
case "$1" in
......@@ -76,88 +63,15 @@ do
shift
done
#------------------------------------------------------------------------------
# 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
}
#------------------------------------------------------------------------------
. $WM_PROJECT_DIR/bin/tools/LogFunctions # Tutorial log-file functions
if [ -z "$optCollectOnly" ]
then
# Recursively run all tutorials
foamRunTutorials -skipFirst $*
foamRunTutorials -skipFirst $* # Run tutorials recursively
fi
# Analyse all log files
echo "Collecting log files..." 1>&2
rm -f logs testLoopReport > /dev/null 2>&1
touch logs testLoopReport
for appDir in *
do
[ -d $appDir ] || continue
echo -n " $appDir..." 1>&2
logs=$(find -L $appDir -name 'log.*' -type f)
if [ -n "$logs" ]
then
echo 1>&2
else
echo " (no logs)" 1>&2
continue
fi
# Sort logs by time-stamp
for log in $(echo $logs | xargs ls -rt)
do
# Concatenate and summarize logs
cat "$log" >> logs 2>/dev/null
logReport $log
done
echo
done > testLoopReport
collectLogs
#------------------------------------------------------------------------------