Merge branch 'master' of /home/noisy3/OpenFOAM/OpenFOAM-dev

Conflicts:
	etc/settings.csh
	etc/settings.sh
	src/parallel/decompose/Allwmake
This commit is contained in:
mattijs
2010-03-22 15:44:34 +00:00
17 changed files with 487 additions and 362 deletions

27
README
View File

@ -2,7 +2,7 @@
#
#+TITLE: OpenFOAM README for version 1.6
#+AUTHOR: OpenCFD Ltd.
#+DATE: November 2009
#+DATE: March 2010
#+LINK: http://www.opencfd.co.uk
#+OPTIONS: author:nil ^:{}
@ -23,10 +23,10 @@
section "Running OpenFOAM in 32-bit mode".
*** Qt (from http://trolltech.com/products/qt)
The ParaView 3.6.1 visualisation package requires Qt to be installed on the
The ParaView 3.7.0 visualisation package requires Qt to be installed on the
system. ParaView's producers state that ParaView is only officially
supported on Qt version 4.3.x. However, we have found in limited tests that
ParaView works satisfactorily with newer versions of Qt than 4.3.x. To
supported on Qt version 4.6.x. However, we have found in limited tests that
ParaView works satisfactorily with Qt than 4.5.x. To
check whether Qt4 is installed, and the version, type:
+ qmake --version
@ -44,13 +44,14 @@
+ openSUSE-10.3: Version 4.3.1
+ openSUSE-11.0: Version 4.4.0
+ openSUSE-11.1: Version 4.4.3
+ openSUSE-11.2: Version 4.5.3
Compilation and running of ParaView has been successful using the libraries
downloaded in the "libqt4-dev" package on ubuntu.
If you don't have an appropriate version of Qt installed you can download
the sources from TrollTech e.g.:
ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-4.3.5.tar.bz2
the sources e.g.:
http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.tar.gz
and compile and install in /usr/local or some other location that does not
conflict with the pre-installed version.
@ -108,7 +109,7 @@
* Building from Sources (Optional)
If you cannot find an appropriate binary pack for your platform, you can build
the complete OpenFOAM from the source-pack. You will first need to compile or
obtain a recent version of gcc (we recomend gcc-4.3.?) for your platform,
obtain a recent version of gcc (we recommend gcc-4.4.?) for your platform,
which may be obtained from http://gcc.gnu.org/.
Install the compiler in
@ -157,16 +158,16 @@
Refer to the OpenFOAM User Guide at http://www.OpenFOAM.org/doc/user.html for
more information.
* Compiling Paraview 3.6.1 and the PV3FoamReader module
* Compiling Paraview 3.7.0 and the PV3FoamReader module
If there are problems encountered with ParaView, then it may be necessary to
compile ParaView from sources. The compilation
is a fairly simple process using the makeParaView script
(found in ThirdParty directory), which has worked in our tests with other
packages supplied in the ThirdParty directory, namely cmake-2.6.4 and
gcc-4.3.3. Execute the following:
packages supplied in the ThirdParty directory, namely cmake-2.8.0 and
gcc-4.4.3. Execute the following:
+ cd $WM_THIRD_PARTY_DIR
+ rm -rf paraview-3.6.1/platforms
+ rm -rf platforms/*/paraview-3.6.1
+ rm -rf paraview-3.7.0/platforms
+ rm -rf platforms/*/paraview-3.7.0
+ ./makeParaView
The PV3blockMeshReader and the PV3FoamReader ParaView plugins are compiled
@ -178,7 +179,7 @@
*** Compiling Paraview with a local version of Qt
If the user still encounters problems with ParaView, it may relate to the
version of Qt, in which case, it is recommended that the user first
downloads a supported version of Qt /e.g./ 4.3.5 as described in the section
downloads a supported version of Qt /e.g./ 4.5.3 as described in the section
on "Qt". The user should unpack the source pack in the $WM_THIRD_PARTY_DIR.
Then the user can build Qt by executing from within $WM_THIRD_PARTY_DIR:
+ ./makeQt

View File

@ -356,8 +356,15 @@ class vtkPV3Foam
//- Zone info
void updateInfoZones(vtkDataArraySelection*);
//- Read zone names for zoneType from file
wordList readZoneNames(const word& zoneType);
//- Get non-empty zone names for zoneType from file
wordList getZoneNames(const word& zoneType) const;
//- Get non-empty zone names from mesh info
template<class ZoneType>
wordList getZoneNames
(
const ZoneMesh<ZoneType, polyMesh>&
) const;
//- Add objects of Type to paraview array selection
template<class Type>

View File

@ -82,9 +82,31 @@ public:
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
Foam::wordList Foam::vtkPV3Foam::readZoneNames(const word& zoneType)
template<class ZoneType>
Foam::wordList Foam::vtkPV3Foam::getZoneNames
(
const ZoneMesh<ZoneType, polyMesh>& zmesh
) const
{
wordList zoneNames;
wordList names(zmesh.size());
label nZone = 0;
forAll(zmesh, zoneI)
{
if (zmesh[zoneI].size())
{
names[nZone++] = zmesh[zoneI].name();
}
}
names.setSize(nZone);
return names;
}
Foam::wordList Foam::vtkPV3Foam::getZoneNames(const word& zoneType) const
{
wordList names;
// mesh not loaded - read from file
IOobject ioObj
@ -107,14 +129,14 @@ Foam::wordList Foam::vtkPV3Foam::readZoneNames(const word& zoneType)
{
zonesEntries zones(ioObj);
zoneNames.setSize(zones.size());
names.setSize(zones.size());
forAll(zones, zoneI)
{
zoneNames[zoneI] = zones[zoneI].keyword();
names[zoneI] = zones[zoneI].keyword();
}
}
return zoneNames;
return names;
}
@ -312,11 +334,11 @@ void Foam::vtkPV3Foam::updateInfoZones
// ~~~~~~~~~~~~~~~~~~~~~
if (meshPtr_)
{
namesLst = meshPtr_->cellZones().names();
namesLst = getZoneNames(meshPtr_->cellZones());
}
else
{
namesLst = readZoneNames("cellZones");
namesLst = getZoneNames("cellZones");
}
arrayRangeCellZones_.reset(arraySelection->GetNumberOfArrays());
@ -335,11 +357,11 @@ void Foam::vtkPV3Foam::updateInfoZones
// ~~~~~~~~~~~~~~~~~~~~~
if (meshPtr_)
{
namesLst = meshPtr_->faceZones().names();
namesLst = getZoneNames(meshPtr_->faceZones());
}
else
{
namesLst = readZoneNames("faceZones");
namesLst = getZoneNames("faceZones");
}
arrayRangeFaceZones_.reset(arraySelection->GetNumberOfArrays());
@ -358,11 +380,11 @@ void Foam::vtkPV3Foam::updateInfoZones
// ~~~~~~~~~~~~~~~~~~~~~~
if (meshPtr_)
{
namesLst = meshPtr_->pointZones().names();
namesLst = getZoneNames(meshPtr_->pointZones());
}
else
{
namesLst = readZoneNames("pointZones");
namesLst = getZoneNames("pointZones");
}
arrayRangePointZones_.reset(arraySelection->GetNumberOfArrays());

View File

@ -43,7 +43,6 @@ usage() {
cat <<USAGE 1>&2
Usage: ${0##*/} [OPTION] path [wildcard1] .. [wildcardN]
options:
-space treat 'path' as space-delimited (eg, from C-Shell)
-strip remove inaccessible directories
-help print the usage
@ -57,7 +56,7 @@ USAGE
}
unset space strip
unset strip
# parse options
while [ "$#" -gt 0 ]
do
@ -65,10 +64,6 @@ do
-h | -help)
usage
;;
-space)
space=true
shift
;;
-strip)
strip=true
shift
@ -82,12 +77,7 @@ done
[ "$#" -ge 1 ] || usage
if [ "$space" = true ]
then
dirList=$(echo "$1" | sed -e 's/ /:/g')
else
dirList="$1"
fi
shift
##DEBUG echo "input>$dirList<" 1>&2
@ -140,11 +130,8 @@ done
IFS=' '
set -- $dirList
# join on ':', unless -space option was specified
if [ "$space" != true ]
then
# rejoin on ':'
IFS=':'
fi
dirList="$*"
# restore IFS

View File

@ -85,7 +85,8 @@ setRawEntry() {
oldLine=`echo "$oldNumLine" | sed -e 's/^[^:]*://'`
oldKey=`getKey "$oldLine"`
oldVal=`getRawEntry $1 "$2"`
if [ ! "$oldKey" -o ! "$oldVal" -o ! "$oldLine" ]; then
if [ ! "$oldKey" -o ! "$oldVal" -o ! "$oldLine" ]
then
echo "setRawStringEntry: entry $2 not found in $1"
echo "oldKey=$oldKey"
echo "lineNo=$lineNo"
@ -134,9 +135,12 @@ getBoolEntry()
}
# newerFile file1 file2
newerFile() {
# ... could also use if [ $file1 -nt $file2 ] ...
newerFile()
{
latest=`ls -1 -t $1 $2 2> /dev/null | head -1`
if [ "$latest" = $1 ]; then
if [ "$latest" = $1 ]
then
return 0
else
return 1
@ -149,8 +153,8 @@ processExists() {
ps -u $LOGNAME -o 'pid' | fgrep $1 >/dev/null
}
printUsage() {
cat << USAGELABEL
usage() {
cat << USAGE
Usage: $PROGNAME [-n] <root> <case> <pid>
or
$PROGNAME -c <root> <case>
@ -165,7 +169,8 @@ finish. Restores original controlDict if
The -c option clears any outstanding $PROGNAME for the case.
USAGELABEL
USAGE
exit 1
}
@ -174,7 +179,8 @@ restoreDict() {
trap 2 3 15
echo "$PROGNAME : Restoring controlDict from controlDict_bak."
if [ -r ${controlDict}_bak ]; then
if [ -r ${controlDict}_bak ]
then
cp ${controlDict}_bak $controlDict
fi
@ -208,29 +214,32 @@ esac
#
# Initial checks
#
if [ $# -lt 3 ]; then
printUsage
exit 1
if [ $# -lt 3 ]
then
usage
fi
STOPNOW=''
if [ $1 = '-n' ]; then
if [ $1 = '-n' ]
then
STOPNOW='yes'
shift
fi
CLEAR=''
if [ $1 = '-c' ]; then
if [ $1 = '-c' ]
then
CLEAR='yes'
shift
if [ $# -ne 2 ]; then
printUsage
exit 1
if [ $# -ne 2 ]
then
usage
fi
ROOT=$1
CASE=$2
else
if [ $# -ne 3 ]; then
printUsage
exit 1
if [ $# -ne 3 ]
then
usage
fi
ROOT=$1
CASE=$2
@ -239,30 +248,35 @@ fi
CASE=`echo $CASE | sed -e 's!/.*!!'` # strip of processorXXX ending
#- Pid actually running
if [ ! "$CLEAR" ]; then
if [ ! "$CLEAR" ]
then
processExists $PID
if [ $? -ne 0 ] ;then
if [ $? -ne 0 ]
then
echo "$PROGNAME : process $PID not running."
exit 1
fi
fi
#- case directory writeable
if [ ! -w $ROOT/$CASE ]; then
if [ ! -w $ROOT/$CASE ]
then
echo "$PROGNAME : $ROOT/$CASE is not writeable."
exit 1
fi
#- Controldict writeable
controlDict=$ROOT/$CASE/system/controlDict
if [ ! -w $controlDict ]; then
if [ ! -w $controlDict ]
then
echo "$PROGNAME : $controlDict is not writeable."
exit 1
fi
#- runTimeModifiable
getBoolEntry $controlDict 'runTimeModifiable'
if [ $? -ne 0 ]; then
if [ $? -ne 0 ]
then
echo "$PROGNAME : runTimeModifiable not true in dictionary $controlDict."
exit 1
fi
@ -270,12 +284,14 @@ fi
#
#- Check if another foamEndJob running
#
if [ "$CLEAR" ]; then
if [ "$CLEAR" ]
then
pidFiles=`ls $ROOT/$CASE/.foamEndJob* 2>/dev/null`
for pidFile in $pidFiles
do
pid=`cat $pidFile`
if [ "$pid" ]; then
if [ "$pid" ]
then
echo "$PROGNAME : found $PROGNAME (pid $pid) for Foam process"
echo " root: $ROOT"
echo " case: $CASE"
@ -288,11 +304,14 @@ if [ "$CLEAR" ]; then
fi
pidFile=$ROOT/$CASE/.foamEndJob${PID}
if [ -f $pidFile ]; then
if [ -f $pidFile ]
then
pid=`cat $pidFile`
if [ "$pid" ]; then
if [ "$pid" ]
then
processExists $pid
if [ $? -eq 0 ] ;then
if [ $? -eq 0 ]
then
echo "$PROGNAME : found running $PROGNAME (pid $pid) for Foam process"
echo " root: $ROOT"
echo " case: $CASE"
@ -314,28 +333,32 @@ echo $$ > $pidFile
#- startTime
startTime=`getEntry $controlDict 'startTime'`
if [ ! "$startTime" ]; then
if [ ! "$startTime" ]
then
echo "$PROGNAME : startTime not set in dictionary $controlDict."
exit 1
fi
#- Write interval
writeInterval=`getEntry $controlDict 'writeInterval'`
if [ ! "$writeInterval" ]; then
if [ ! "$writeInterval" ]
then
echo "$PROGNAME : writeInterval not set in dictionary $controlDict."
exit 1
fi
#- stopAt
stopAt=`getEntry $controlDict 'stopAt'`
if [ ! "$stopAt" ]; then
if [ ! "$stopAt" ]
then
echo "$PROGNAME : stopAt not set in dictionary $controlDict."
exit 1
fi
#- endTime
endTime=`getEntry $controlDict 'endTime'`
if [ ! "$endTime" ]; then
if [ ! "$endTime" ]
then
echo "$PROGNAME : endTime not set in dictionary $controlDict."
exit 1
fi
@ -353,7 +376,8 @@ cp $controlDict ${controlDict}_bak
#- Set up handler to restore controlDict
trap restoreDict 2 3 15
if [ "$STOPNOW" ]; then
if [ "$STOPNOW" ]
then
setRawEntry $controlDict 'stopAt' 'nextWrite'
setRawEntry $controlDict 'writeInterval' '1'
@ -385,7 +409,8 @@ if newerFile ${controlDict} ${controlDict}_bak; then
iter=0
while newerFile ${controlDict} ${controlDict}_bak
do
if [ $iter -ge 120 ]; then
if [ $iter -ge 120 ]
then
#- 120*5 sec = 10 mins passed. Give up
echo "$PROGNAME : File date not yet ok after 10 mins. Giving up."
break
@ -412,18 +437,21 @@ while true
do
sleep 5
if [ ! -r ${controlDict}_bak ]; then
if [ ! -r ${controlDict}_bak ]
then
echo "$PROGNAME : ${controlDict}_bak dissappeared. Exiting without restore."
exit 1
fi
if newerFile ${controlDict} ${controlDict}_bak; then
if newerFile ${controlDict} ${controlDict}_bak
then
echo "$PROGNAME : ${controlDict} modified externally. Exiting without restore."
exit 0
fi
processExists $PID
if [ $? -ne 0 ] ;then
if [ $? -ne 0 ]
then
#- Job finished
break
fi

View File

@ -3,7 +3,7 @@
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration |
# \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
# \\ / A nd | Copyright (C) 2008-2010 OpenCFD Ltd.
# \\/ M anipulation |
#-------------------------------------------------------------------------------
# License
@ -27,8 +27,17 @@
# foamEtcFile
#
# Description
# Locate user/site/shipped file with the semantics used in the
# ~OpenFOAM/fileName expansion
# Locate user/group/shipped file with semantics similar to the
# ~OpenFOAM/fileName expansion.
#
# The -mode option can be used to allow chaining from
# personal settings to site-wide settings.
#
# For example, within the user ~/.OpenFOAM/<VER>/prefs.sh:
# @verbatim
# foamPrefs=`$WM_PROJECT_DIR/bin/foamEtcFile -m go prefs.sh` \
# && _foamSource $foamPrefs
# @endverbatim
#
#-------------------------------------------------------------------------------
unset listOpt quietOpt
@ -41,24 +50,32 @@ usage() {
cat<<USAGE
Usage: ${0##*/} [OPTION] fileName
${0##*/} -list
${0##*/} [OPTION] -list
options:
-l | -list list the directories to be searched
-q | -quiet suppress all normal output
-list list the directories to be searched
-mode <mode> any combination of u(user), g(group), o(other)
-quiet suppress all normal output
-help print the usage
Locate user/site/shipped file with the semantics used in the
~OpenFOAM/fileName expansion
Locate user/group/shipped file with semantics similar to the
~OpenFOAM/fileName expansion.
Exit status 0 when the file is found and output resolved path to stdout.
Exit status 1 for miscellaneous errors.
Exit status 2 when the file is not found.
The options can also be specified as a single character
(eg, '-q' instead of '-quiet'), but must not be grouped.
Exit status
0 when the file is found. Print resolved path to stdout.
1 for miscellaneous errors.
2 when the file is not found.
USAGE
exit 1
}
# default mode is 'ugo'
mode=ugo
# parse options
while [ "$#" -gt 0 ]
do
@ -70,6 +87,20 @@ do
listOpt=true
shift
;;
-m | -mode)
[ "$#" -ge 2 ] || usage "'$1' option requires an argument"
mode="$2"
# sanity check:
case "$mode" in
*u* | *g* | *o* )
;;
*)
usage "'$1' option with invalid mode '$mode'"
;;
esac
shift 2
;;
-q | -quiet)
quietOpt=true
shift
@ -83,18 +114,32 @@ do
esac
done
# Save the essential bits of information:
nArgs=$#
fileName="$1"
# The various places to be searched:
set -- \
$HOME/.${WM_PROJECT:-OpenFOAM}/$WM_PROJECT_VERSION \
$HOME/.${WM_PROJECT:-OpenFOAM} \
$WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION \
$WM_PROJECT_INST_DIR/site \
$WM_PROJECT_DIR/etc
# Define the various places to be searched:
set -- $(
case "$mode" in
*u*) # user
echo $HOME/.${WM_PROJECT:-OpenFOAM}/$WM_PROJECT_VERSION
echo $HOME/.${WM_PROJECT:-OpenFOAM}
;;
esac
case "$mode" in
*g*) # group
echo $WM_PROJECT_INST_DIR/site/$WM_PROJECT_VERSION
echo $WM_PROJECT_INST_DIR/site
;;
esac
case "$mode" in
*o*) # other
echo $WM_PROJECT_DIR/etc
;;
esac
)
#

View File

@ -36,8 +36,8 @@ usage() {
Usage: ${0##*/} [OPTION] <application> ...
options:
-case <dir> specify alternative case directory, default is the cwd
-s also sends output to screen
-p parallel run of processors
-s also sends output to screen
-v <ver> specify OpenFOAM version
-help print the usage
@ -54,7 +54,8 @@ unset version
findExec() {
case "$1" in
*/*)
if [ -x "$1" ] ; then
if [ -x "$1" ]
then
echo "$1"
return 0
fi
@ -66,7 +67,8 @@ findExec() {
for d in $PATH
do
# echo "testing: $d/$1" 1>&2
if [ -x "$d/$1" -a ! -d "$d/$1" ] ; then
if [ -x "$d/$1" -a ! -d "$d/$1" ]
then
# echo "Found exec: $d/$1" 1>&2
IFS=$oldIFS
echo "$d/$1"
@ -78,23 +80,11 @@ findExec() {
return 1
}
# grep for $1
getPID() {
ps -u $LOGNAME -o 'pid,args' | fgrep "$1 " | fgrep -v grep | head -1 | awk '{ print $1 }'
}
consultGuide() {
cat<<EOF
Please consult the User Guide for details of parallel running
EOF
}
# MAIN SCRIPT
#~~~~~~~~~~~~
SCREEN=no
PARALLEL=no
unset parallelOpt screenOpt
# parse options
@ -110,12 +100,12 @@ do
shift 2
cd "$caseDir" 2>/dev/null || usage "directory does not exist: '$caseDir'"
;;
-s)
SCREEN=yes
-p)
parallelOpt=true
shift
;;
-p)
PARALLEL=yes
-s)
screenOpt=true
shift
;;
-v)
@ -136,70 +126,71 @@ do
esac
done
if [ "$#" -lt 1 ]; then
if [ "$#" -lt 1 ]
then
usage "No application specified"
fi
# use foamExec for a specified version and for remote (parallel) runs
if [ -n "$version" -o "$PARALLEL" = yes ]; then
if [ -n "$version" -o "$parallelOpt" = true ]
then
APPLICATION=`findExec foamExec`
if [ $? -ne 0 ]; then
if [ $? -ne 0 ]
then
usage "'foamExec' not found"
fi
if [ -n "$version" ]; then
if [ -n "$version" ]
then
APPLICATION="$APPLICATION -v $version"
fi
else
APPLICATION=`findExec $1`
if [ $? -ne 0 ]; then
if [ $? -ne 0 ]
then
usage "Application '$1' executable not found"
fi
echo "Application : $1"
shift
fi
if [ "$PARALLEL" = no ]; then
#
# RUN ON SINGLE PROCESSOR
#
if [ "$SCREEN" = no ]; then
echo "Executing: $APPLICATION $@ > log 2>&1 &"
$APPLICATION $@ > log 2>&1 &
else
echo "Executing: $APPLICATION $@ | tee log &"
$APPLICATION $@ | tee log &
wait $!
fi
else
if [ "$parallelOpt" = true ]
then
# parallel
# ~~~~~~~~
#
# IS THE CASE DECOMPOSED?
# is the case decomposed?
#
if [ -r "processor0" ] ; then
if [ -r "processor0" ]
then
NPROCS="`/bin/ls -1d processor* | wc -l`"
else
echo "Case is not currently decomposed"
if [ -r system/decomposeParDict ] ; then
if [ -r system/decomposeParDict ]
then
echo "system/decomposeParDict exists"
echo "Try decomposing with \"foamJob decomposePar\""
exit 1
else
echo "Cannot find system/decomposeParDict file required to decompose the case for parallel running."
consultGuide
echo "Please consult the User Guide for details of parallel running"
exit 1
fi
fi
#
# LOCATE MPIRUN
# locate mpirun
#
mpirun=`findExec mpirun`
if [ $? -ne 0 ]; then
if [ $? -ne 0 ]
then
usage "'mpirun' not found"
fi
mpiopts="-np $NPROCS"
#
# IS THE MACHINE READY TO RUN PARALLEL?
# is the machine ready to run parallel?
#
echo "Parallel processing using $WM_MPLIB with $NPROCS processors"
case "$WM_MPLIB" in
@ -212,7 +203,8 @@ else
system/machines \
;
do
if [ -r $hostfile ]; then
if [ -r $hostfile ]
then
mpiopts="$mpiopts -hostfile $hostfile"
break
fi
@ -221,15 +213,32 @@ else
esac
#
# RUN IN PARALLEL
# run (in parallel)
#
if [ "$SCREEN" = no ] ; then
echo "Executing: mpirun $mpiopts $APPLICATION $@ -parallel > log 2>&1"
$mpirun $mpiopts $APPLICATION $@ -parallel > log 2>&1 &
else
if [ "$screenOpt" = true ]
then
echo "Executing: mpirun $mpiopts $APPLICATION $@ -parallel | tee log"
$mpirun $mpiopts $APPLICATION $@ -parallel | tee log
else
echo "Executing: mpirun $mpiopts $APPLICATION $@ -parallel > log 2>&1"
$mpirun $mpiopts $APPLICATION $@ -parallel > log 2>&1 &
fi
else
#
# run (on single processor)
#
if [ "$screenOpt" = true ]
then
echo "Executing: $APPLICATION $@ | tee log &"
$APPLICATION $@ | tee log &
wait $!
else
echo "Executing: $APPLICATION $@ > log 2>&1 &"
$APPLICATION $@ > log 2>&1 &
fi
else
fi
#------------------------------------------------------------------------------

View File

@ -40,18 +40,22 @@ else
fi
printUsage() {
echo ""
echo "Usage: ${0##*/} -np <dd> <executable> <args>"
echo ""
echo "This will run like mpirun but with each process in an xterm"
usage()
{
cat<<USAGE
Usage: ${0##*/} -np <dd> <executable> <args>
* This will run like mpirun but with each process in an XTerm
USAGE
exit 1
}
nProcs=''
exec=''
args=''
unset nProcs exec args
while [ "$1" != "" ]; do
while [ "$1" != "" ]
do
echo "$1"
case $1 in
-np)
@ -59,15 +63,16 @@ while [ "$1" != "" ]; do
shift
;;
*)
if [ ! "$exec" ]; then
if [ ! "$exec" ]
then
exec=$1
elif [ ! "$args" ]; then
elif [ ! "$args" ]
then
args="\"$1\""
else
args="$args \"$1\""
fi
;;
esac
shift
done
@ -76,27 +81,19 @@ echo "nProcs=$nProcs"
echo "exec=$exec"
echo "args=$args"
if [ ! "$nProcs" ]; then
printUsage
exit 1
fi
if [ ! "$args" ]; then
printUsage
exit 1
fi
if [ ! "$exec" ]; then
printUsage
exit 1
fi
[ "$nProcs" ] || usage
[ "$args" ] || usage
[ "$exec" ] || usage
exec=`which $exec`
if [ ! -x "$exec" ]; then
if [ ! -x "$exec" ]
then
echo "Cannot find executable $exec or is not executable"
printUsage
exit 1
usage
fi
if [ ! "$PWD" ]; then
if [ ! "$PWD" ]
then
PWD=`pwd`
fi
@ -106,22 +103,28 @@ echo "Constructed gdb initialization file $PWD/gdbCommands"
$ECHO "Choose running method: 0)normal 1)gdb+xterm 2)gdb 3)log 4)log+xterm 5)xterm+valgrind: \c"
read method
if [ "$method" -ne 0 -a "$method" -ne 1 -a "$method" -ne 2 -a "$method" -ne 3 -a "$method" -ne 4 -a "$method" -ne 5 ]; then
printUsage
exit 1
fi
case "$method" in
0 | 1 | 2 | 3 | 4 | 5 )
# okay
;;
*)
usage
;;
esac
$ECHO "Run all processes local or distributed? 1)local 2)remote: \c"
read spawn
if [ "$spawn" -ne 1 -a "$spawn" -ne 2 ]; then
printUsage
exit 1
if [ "$spawn" -ne 1 -a "$spawn" -ne 2 ]
then
usage
fi
# check ~/.$WM_PROJECT/$WM_PROJECT_VERSION/
# check ~/.$WM_PROJECT/
# check <installedProject>/etc/
if [ "$WM_PROJECT" ]; then
if [ "$WM_PROJECT" ]
then
for i in \
$HOME/.WM_PROJECT/$WM_PROJECT_VERSION \
@ -129,7 +132,8 @@ if [ "$WM_PROJECT" ]; then
$WM_PROJECT_DIR/etc \
;
do
if [ -f "$i/bashrc" ]; then
if [ -f "$i/bashrc" ]
then
sourceFoam="$i/bashrc"
break
fi
@ -139,7 +143,8 @@ fi
# Construct test string for remote execution.
# Source OpenFOAM settings if OpenFOAM environment not set.
# attempt to preserve the installation directory 'FOAM_INST_DIR'
if [ "$FOAM_INST_DIR" ]; then
if [ "$FOAM_INST_DIR" ]
then
sourceFoam='[ "$WM_PROJECT" ] || '"FOAM_INST_DIR=$FOAM_INST_DIR . $sourceFoam"
else
sourceFoam='[ "$WM_PROJECT" ] || '". $sourceFoam"
@ -160,36 +165,45 @@ do
geom="-geometry 120x20+$xpos+$ypos"
node=""
if [ .$WM_MPLIB = .OPENMPI ]; then
if [ "$WM_MPLIB" = OPENMPI ]
then
node="-np 1 "
fi
echo "#!/bin/sh" > $procCmdFile
if [ "$method" -eq 0 ]; then
case "$method" in
0)
echo "$sourceFoam; cd $PWD; $exec $args | tee $procLog" >> $procCmdFile
echo "${node}$procCmdFile" >> $PWD/mpirun.schema
elif [ "$method" -eq 1 ]; then
;;
1)
echo "$sourceFoam; cd $PWD; gdb -command $PWD/gdbCommands $exec 2>&1 | tee $procLog; read dummy" >> $procCmdFile
#echo "$sourceFoam; cd $PWD; $exec $args; read dummy" >> $procCmdFile
echo "${node}xterm -font fixed -title 'processor'$proc $geom -e $procCmdFile" >> $PWD/mpirun.schema
elif [ "$method" -eq 2 ]; then
;;
2)
echo "$sourceFoam; cd $PWD; gdb -command $PWD/gdbCommands >& $procLog" >> $procCmdFile
echo "${node}$procCmdFile" >> $PWD/mpirun.schema
elif [ "$method" -eq 3 ]; then
;;
3)
echo "$sourceFoam; cd $PWD; $exec $args >& $procLog" >> $procCmdFile
echo "${node}$procCmdFile" >> $PWD/mpirun.schema
elif [ "$method" -eq 4 ]; then
;;
4)
echo "$sourceFoam; cd $PWD; $exec $args 2>&1 | tee $procLog; read dummy" >> $procCmdFile
echo "${node}xterm -font fixed -title 'processor'$proc $geom -e $procCmdFile" >> $PWD/mpirun.schema
elif [ "$method" -eq 5 ]; then
;;
5)
echo "$sourceFoam; cd $PWD; valgrind $exec $args; read dummy" >> $procCmdFile
echo "${node}xterm -font fixed -title 'processor'$proc $geom -e $procCmdFile" >> $PWD/mpirun.schema
fi
;;
esac
chmod +x $procCmdFile
let column=proc%6
if [ $proc -ne 0 -a $column -eq 0 ]; then
if [ $proc -ne 0 -a $column -eq 0 ]
then
((xpos+=600))
((ypos=0))
else
@ -203,10 +217,13 @@ do
echo " tail -f $procLog"
done
cmd=""
if [ .$WM_MPLIB = .OPENMPI ]; then
unset cmd
case "$WM_MPLIB" in
OPENMPI)
cmd="mpirun -app $PWD/mpirun.schema </dev/null"
elif [ .$WM_MPLIB = .MPICH ]; then
;;
MPICH)
cmd="mpiexec"
for ((proc=0; proc<$nProcs; proc++))
do
@ -216,12 +233,14 @@ elif [ .$WM_MPLIB = .MPICH ]; then
echo "#!/bin/sh" > $procXtermCmdFile
echo "$procCmd" >> $procXtermCmdFile
chmod +x $procXtermCmdFile
if [ $proc -ne 0 ]; then
if [ $proc -ne 0 ]
then
cmd="${cmd} :"
fi
cmd="${cmd} -n 1 ${procXtermCmdFile}"
done < $PWD/mpirun.schema
fi
;;
esac
echo "Constructed $PWD/mpirun.schema file."
echo ""

View File

@ -44,7 +44,7 @@ if ( -r $CEI_HOME ) then
endif
# add to path
set path=($CEI_HOME/bin $path)
setenv PATH ${CEI_HOME}/bin:${PATH}
setenv ENSIGHT9_INPUT dummy
setenv ENSIGHT9_READER $FOAM_LIBBIN

View File

@ -35,8 +35,8 @@
#------------------------------------------------------------------------------
# clean the PATH
set cleaned=`$WM_PROJECT_DIR/bin/foamCleanPath -space "$path" "$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/cmake- $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/paraview-"`
if ( $status == 0 ) set path=($cleaned)
set cleaned=`$WM_PROJECT_DIR/bin/foamCleanPath "$PATH" "$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/cmake- $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/paraview-"`
if ( $status == 0 ) setenv PATH $cleaned
# determine the cmake to be used
unsetenv CMAKE_HOME
@ -44,7 +44,7 @@ foreach cmake ( cmake-2.8.1 cmake-2.8.0 cmake-2.6.4 )
set cmake=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$cmake
if ( -r $cmake ) then
setenv CMAKE_HOME $cmake
set path=($CMAKE_HOME/bin $path)
setenv PATH ${CMAKE_HOME}/bin:${PATH}
break
endif
end
@ -73,7 +73,7 @@ setenv ParaView_DIR $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/paraview-
# set paths if binaries or source are present
if ( -r $ParaView_DIR || -r $paraviewInstDir ) then
set path=($ParaView_DIR/bin $path)
setenv PATH ${ParaView_DIR}/bin:${PATH}
setenv PV_PLUGIN_PATH $FOAM_LIBBIN/paraview-${ParaView_MAJOR}
# add in python libraries if required

View File

@ -272,4 +272,4 @@ fi
unset cleaned foamClean foamInstall foamOldDirs
unset _foamSource
# -----------------------------------------------------------------------------
# ----------------------------------------------------------------- end-of-file

View File

@ -209,16 +209,16 @@ default:
endsw
# Clean standard environment variables (path/PATH, LD_LIBRARY_PATH, MANPATH)
# Clean standard environment variables (PATH, LD_LIBRARY_PATH, MANPATH)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set foamClean=$WM_PROJECT_DIR/bin/foamCleanPath
if (! $?LD_LIBRARY_PATH ) setenv LD_LIBRARY_PATH ''
if (! $?MANPATH) setenv MANPATH ''
#- Clean path/PATH
set cleaned=`$foamClean -space "$path" "$foamOldDirs"`
if ( $status == 0 ) set path=($cleaned)
#- Clean PATH (path)
set cleaned=`$foamClean "$PATH" "$foamOldDirs"`
if ( $status == 0 ) setenv PATH $cleaned
#- Clean LD_LIBRARY_PATH
set cleaned=`$foamClean "$LD_LIBRARY_PATH" "$foamOldDirs"`
@ -242,9 +242,9 @@ _foamSource $WM_PROJECT_DIR/etc/apps/paraview3/cshrc
# Clean environment paths again. Only remove duplicates
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#- Clean path/PATH
set cleaned=`$foamClean -space "$path"`
if ( $status == 0 ) set path=($cleaned)
#- Clean PATH (path)
set cleaned=`$foamClean "$PATH"`
if ( $status == 0 ) setenv PATH $cleaned
#- Clean LD_LIBRARY_PATH
set cleaned=`$foamClean "$LD_LIBRARY_PATH"`
@ -265,4 +265,4 @@ endif
unset cleaned foamClean foamInstall foamOldDirs
unalias _foamSource
# -----------------------------------------------------------------------------
# ----------------------------------------------------------------- end-of-file

View File

@ -22,7 +22,7 @@
# along with OpenFOAM; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# Script
# File
# etc/prefs.csh
#
# Description
@ -50,4 +50,4 @@
setenv ParaView_VERSION git # eg, cvs/git version
setenv ParaView_MAJOR 3.7
# -----------------------------------------------------------------------------
# ----------------------------------------------------------------- end-of-file

View File

@ -22,7 +22,7 @@
# along with OpenFOAM; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# Script
# File
# etc/prefs.sh
#
# Description
@ -49,4 +49,5 @@ export WM_MPLIB=SYSTEMOPENMPI
# ~~~~~~~~~~~~~~~~~~~~~~~~
export ParaView_VERSION=git # eg, cvs/git version
export ParaView_MAJOR=3.7
# -----------------------------------------------------------------------------
# ----------------------------------------------------------------- end-of-file

View File

@ -32,7 +32,7 @@
#------------------------------------------------------------------------------
# prefix to PATH
alias _foamAddPath 'set path=(\!* $path)'
alias _foamAddPath 'setenv PATH \!*\:${PATH}'
# prefix to LD_LIBRARY_PATH
alias _foamAddLib 'setenv LD_LIBRARY_PATH \!*\:${LD_LIBRARY_PATH}'
# prefix to MANPATH
@ -68,8 +68,9 @@ setenv FOAM_SOLVERS $FOAM_APP/solvers
setenv FOAM_RUN $WM_PROJECT_USER_DIR/run
# add OpenFOAM scripts and wmake to the path
set path=($WM_DIR $WM_PROJECT_DIR/bin $path)
setenv PATH ${WM_DIR}:${WM_PROJECT_DIR}/bin:${PATH}
<<<<<<< HEAD
_foamAddPath $FOAM_APPBIN
_foamAddPath $FOAM_SITE_APPBIN
_foamAddPath $FOAM_USER_APPBIN
@ -78,6 +79,10 @@ _foamAddLib $FOAM_LIBBIN/dummy
_foamAddLib $FOAM_LIBBIN
_foamAddLib $FOAM_SITE_LIBBIN
_foamAddLib $FOAM_USER_LIBBIN
=======
_foamAddPath ${FOAM_USER_APPBIN}:${FOAM_SITE_APPBIN}:${FOAM_APPBIN}
_foamAddLib ${FOAM_USER_LIBBIN}:${FOAM_SITE_LIBBIN}:${FOAM_LIBBIN}
>>>>>>> 00e72ccabdc9912f14f889531e88f60a79c68dcb
# Select compiler installation
@ -103,9 +108,6 @@ case OpenFOAM:
_foamAddLib $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/mpfr-2.4.1/lib
_foamAddLib $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/gmp-4.2.4/lib
breaksw
case Gcc42:
setenv WM_COMPILER_DIR $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/gcc-4.2.4
breaksw
endsw
# Check that the compiler directory can be found
@ -119,8 +121,7 @@ case OpenFOAM:
endif
_foamAddPath ${WM_COMPILER_DIR}/bin
_foamAddLib ${WM_COMPILER_DIR}/lib${WM_COMPILER_LIB_ARCH}
_foamAddLib ${WM_COMPILER_DIR}/lib
_foamAddLib ${WM_COMPILER_DIR}/lib${WM_COMPILER_LIB_ARCH}:${WM_COMPILER_DIR}/lib
_foamAddMan ${WM_COMPILER_DIR}/man
breaksw
@ -130,12 +131,11 @@ endsw
# Communications library
# ~~~~~~~~~~~~~~~~~~~~~~
unset MPI_ARCH_PATH
unsetenv MPI_ARCH_PATH MPI_HOME
switch ("$WM_MPLIB")
case OPENMPI:
set mpi_version=openmpi-1.4.1
setenv MPI_HOME $WM_THIRD_PARTY_DIR/$mpi_version
setenv MPI_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$mpi_version
# Tell OpenMPI where to find its install directory
@ -258,7 +258,7 @@ _foamAddLib $FOAM_MPI_LIBBIN
# Set the minimum MPI buffer size (used by all platforms except SGI MPI)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set minBufferSize=20000000
if ( ! $?minBufferSize ) set minBufferSize=20000000
if ( $?MPI_BUFFER_SIZE ) then
if ( $MPI_BUFFER_SIZE < $minBufferSize ) then
@ -276,8 +276,8 @@ if ( $?CGAL_LIB_DIR ) then
endif
# Switch on the hoard memory allocator if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Enable the hoard memory allocator if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#if ( -f $FOAM_LIBBIN/libhoard.so ) then
# setenv LD_PRELOAD $FOAM_LIBBIN/libhoard.so:${LD_PRELOAD}
#endif
@ -285,9 +285,7 @@ endif
# cleanup environment:
# ~~~~~~~~~~~~~~~~~~~~
unalias _foamAddPath
unalias _foamAddLib
unalias _foamAddMan
unset minBufferSize
unalias _foamAddPath _foamAddLib _foamAddMan
unset compilerInstall minBufferSize
# -----------------------------------------------------------------------------
# ----------------------------------------------------------------- end-of-file

View File

@ -94,10 +94,15 @@ export FOAM_RUN=$WM_PROJECT_USER_DIR/run
# add OpenFOAM scripts and wmake to the path
export PATH=$WM_DIR:$WM_PROJECT_DIR/bin:$PATH
<<<<<<< HEAD
_foamAddPath $FOAM_APPBIN $FOAM_SITE_APPBIN $FOAM_USER_APPBIN
# Make sure to pick up dummy versions of external libraries last
_foamAddLib $FOAM_LIBBIN/dummy
_foamAddLib $FOAM_LIBBIN $FOAM_SITE_LIBBIN $FOAM_USER_LIBBIN
=======
_foamAddPath $FOAM_USER_APPBIN:$FOAM_SITE_APPBIN:$FOAM_APPBIN
_foamAddLib $FOAM_USER_LIBBIN:$FOAM_SITE_LIBBIN:$FOAM_LIBBIN
>>>>>>> 00e72ccabdc9912f14f889531e88f60a79c68dcb
# Compiler settings
@ -132,9 +137,6 @@ OpenFOAM)
_foamAddLib $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/mpfr-2.4.1/lib
_foamAddLib $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/gmp-4.2.4/lib
;;
Gcc42)
export WM_COMPILER_DIR=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER_ARCH/gcc-4.2.4
;;
esac
# Check that the compiler directory can be found
@ -166,12 +168,11 @@ unset compilerBin compilerLib compilerMan compilerInstall
# Communications library
# ~~~~~~~~~~~~~~~~~~~~~~
unset MPI_ARCH_PATH
unset MPI_ARCH_PATH MPI_HOME
case "$WM_MPLIB" in
OPENMPI)
mpi_version=openmpi-1.4.1
export MPI_HOME=$WM_THIRD_PARTY_DIR/$mpi_version
export MPI_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$mpi_version
# Tell OpenMPI where to find its install directory
@ -297,7 +298,7 @@ _foamAddLib $FOAM_MPI_LIBBIN
# Set the minimum MPI buffer size (used by all platforms except SGI MPI)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
minBufferSize=20000000
: ${minBufferSize:=20000000}
if [ "${MPI_BUFFER_SIZE:=$minBufferSize}" -lt $minBufferSize ]
then
@ -311,8 +312,8 @@ export MPI_BUFFER_SIZE
[ -d "$CGAL_LIB_DIR" ] && _foamAddLib $CGAL_LIB_DIR
# Switch on the hoard memory allocator if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Enable the hoard memory allocator if available
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#if [ -f $FOAM_LIBBIN/libhoard.so ]
#then
# export LD_PRELOAD=$FOAM_LIBBIN/libhoard.so:$LD_PRELOAD
@ -323,4 +324,4 @@ export MPI_BUFFER_SIZE
# ~~~~~~~~~~~~~~~~~~~~
unset _foamAddPath _foamAddLib _foamAddMan minBufferSize
# -----------------------------------------------------------------------------
# ----------------------------------------------------------------- end-of-file

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
\\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -52,6 +52,13 @@ inline Type operator/(const one&, const Type& t)
}
template<class Type>
inline const Type& operator/(const Type& t, const one&)
{
return t;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam