diff --git a/bin/paraFoam b/bin/paraFoam
index 833f15d16..cc97a4a9e 100755
--- a/bin/paraFoam
+++ b/bin/paraFoam
@@ -40,6 +40,7 @@ options:
-block use blockMesh reader (uses .blockMesh extension)
-builtin use VTK builtin OpenFOAM reader (uses .foam extension)
-case
specify alternative case directory, default is the cwd
+ -empty launch ParaView without opening any data files
-region specify alternative mesh region
-touch only create the file (eg, .blockMesh, .OpenFOAM, etc)
-touchAll create .blockMesh, .OpenFOAM files (and for all regions)
@@ -59,6 +60,38 @@ error() {
exit 1
}
+pvExec () {
+ paraview "$@" 2> /dev/null && return 0
+
+ pvFallback
+ paraview --mesa "$@"
+}
+
+pvFallback () {
+ cat </dev/null || error "directory does not exist: '$2'"
shift 2
;;
+ -empty)
+ echo "Launching ParaView without opening any files."
+ pvExec && exit 0
+ ;;
-region)
[ "$#" -ge 2 ] || error "'$1' option requires an argument"
regionName=$2
@@ -125,20 +162,9 @@ do
done
# Check that reader module has been built
-if [ $requirePV -eq 1 -a ! -f "$PV_PLUGIN_PATH/libPVFoamReader_SM.so" ]
-then
- cat<< BUILDREADER
-
-FATAL ERROR: ParaView reader module libraries do not exist
-
-Please build the reader module before continuing:
-cd \$FOAM_UTILITIES/postProcessing/graphics/PVReaders
-./Allwclean
-./Allwmake
-
-BUILDREADER
- exit 1
-fi
+[ $requirePV -eq 1 ] && \
+ ! [ -f "$PV_PLUGIN_PATH/libPVFoamReader_SM.so" ] && \
+ noPVReader && exit 1
# Check for --data=... argument
hasDataArg()
@@ -158,7 +184,6 @@ hasDataArg()
hasDataArg "$@"
-
# Get a sensible caseName from the directory name
caseName=${PWD##*/}
caseFile="$caseName.$extension"
@@ -179,7 +204,7 @@ fi
case "${optTouch:-false}" in
all)
extension=OpenFOAM
- if [ -f system/blockMeshDict -o -f constant/polyMesh/blockMeshDict ]
+ if [ -f system/blockMeshDict ] || [ -f constant/polyMesh/blockMeshDict ]
then
touch "$caseName.blockMesh"
echo "Created '$caseName.blockMesh'"
@@ -189,12 +214,10 @@ all)
# Discover probable regions
for region in constant/*
do
- if [ -d "$region" -a -d "$region"/polyMesh ]
- then
- regionName=${region##*/}
- touch "$caseName{$regionName}.$extension"
+ [ -d "$region" ] && [ -d "${region}/polyMesh" ] && \
+ regionName=${region##*/} && \
+ touch "$caseName{$regionName}.$extension" && \
echo "Created '$caseName{$regionName}.$extension'"
- fi
done
exit 0
;;
@@ -217,7 +240,7 @@ if [ "${hasData:-false}" = true ]
then
# Has --data=.., send directly to paraview
- exec paraview "$@"
+ pvExec "$@"
else
@@ -235,7 +258,8 @@ else
$blockMeshDictDir \
;
do
- [ -s "$parentDir/$check" ] || {
+ [ -s "$parentDir/$check" ] || [ -s "$parentDir/$check.orig" ] ||
+ {
[ -n "$warn" ] && echo "$warn" 1>&2
echo " $parentDir/$check" 1>&2
unset warn
@@ -250,7 +274,8 @@ else
$fvControls/fvSolution \
;
do
- [ -s "$parentDir/$check" ] || {
+ [ -s "$parentDir/$check" ] || [ -s "$parentDir/$check.orig" ] ||
+ {
[ -n "$warn" ] && echo "$warn" 1>&2
echo " $parentDir/$check" 1>&2
unset warn
@@ -263,7 +288,7 @@ else
echo "Cannot locate OpenFOAM-format case files"
printf "Would you like to open ParaView anyway :"
read open
- [ "$open" = "" ] || echo "$open" | grep -iqE "^y" && paraview
+ [ "$open" = "" ] || echo "$open" | grep -iqE "^y" && pvExec
exit
}
@@ -275,8 +300,8 @@ else
}
# For now filter out any ld.so errors. Caused by non-system compiler?
- paraview --data="$caseFile" "$@" 2>&1 \
- | fgrep -v 'Inconsistency detected by ld.so'
+ pvExec --data="$caseFile" "$@" 2>&1 \
+ | grep -v -F 'Inconsistency detected by ld.so'
fi