diff --git a/ThirdParty/AllMake b/ThirdParty/AllMake
index c96c36091..0991e37ba 100755
--- a/ThirdParty/AllMake
+++ b/ThirdParty/AllMake
@@ -71,6 +71,12 @@ echo
# Running stage 4
./AllMake.stage4
+# Running stage 5
+# This stage depends on a properly compiled installation
+# of OpenFOAM. On a brand new installation of OpenFOAM-1.6-ext,
+# this stage should be called last in your compilation process
+./AllMake.stage5
+
echo ========================================
echo Done ThirdParty Allwmake
echo ========================================
diff --git a/ThirdParty/AllMake.stage3 b/ThirdParty/AllMake.stage3
index f0e8ff171..643add8b5 100755
--- a/ThirdParty/AllMake.stage3
+++ b/ThirdParty/AllMake.stage3
@@ -125,6 +125,17 @@ fi
# echo ""
#fi
+# PyFoam
+if [ -z "$PYFOAM_SYSTEM" ]
+then
+# ( rpm_make -p PyFoam-0.5.6 -s PyFoam-0.5.6.spec -u http://openfoamwiki.net/images/b/b8/PyFoam-0.5.6.tar.gz -n PyFoam-0.5.6-1.noarch -a noarch)
+ ( rpm_make -p PyFoam-0.5.7 -s PyFoam-0.5.7.spec -u http://openfoamwiki.net/images/d/dc/PyFoam-0.5.7.tar.gz -n PyFoam-0.5.7-1.noarch -a noarch)
+else
+ echo "Using system installed PyFoam"
+ echo ""
+fi
+
+
echo ========================================
echo Done ThirdParty AllMake: Stage3
echo ========================================
diff --git a/ThirdParty/AllMake.stage5 b/ThirdParty/AllMake.stage5
new file mode 100755
index 000000000..e20f821fb
--- /dev/null
+++ b/ThirdParty/AllMake.stage5
@@ -0,0 +1,113 @@
+#!/bin/bash
+#------------------------------------------------------------------------------
+# ========= |
+# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+# \\ / O peration |
+# \\ / A nd | Copyright held by original author
+# \\/ 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 .
+#
+# Script
+# AllMake.stage5
+#
+# Description
+# Build script for ThirdParty packages not requiring rpm packaging
+#
+#
+# Requirements:
+# 1: Your OpenFOAM environment must be properly initialized
+# 2: OpenFOAM must already been compiled because swak4Foam depends on
+# OpenFOAM include files and libraries
+#
+# Author:
+# Martin Beaudoin, Hydro-Quebec, (2012)
+#
+#------------------------------------------------------------------------------
+# run from Third-party directory only
+cd ${0%/*} || exit 1
+
+wmakeCheckPwd "$WM_THIRD_PARTY_DIR" || {
+ echo "Error: Current directory is not \$WM_THIRD_PARTY_DIR"
+ echo " The environment variables are inconsistent with the installation."
+ echo " Check the OpenFOAM entries in your dot-files and source them."
+ exit 1
+}
+
+#------------------------------------------------------------------------------
+
+echo "========================================"
+echo "Starting ThirdParty AllMake: Stage5 "
+echo "========================================"
+echo
+
+# swak4Foam - Version 0.2.0
+# In fact, we are basically tracking the head branch from the Mercurial repository
+# which is also replicated under the Breeder_1.7 section of the Subversion repository
+#
+if [ -z "$SWAK4FOAM_SYSTEM" ]
+then
+ # Do we need to download the source code?
+ # We choose to put the source code under ./rpmBuild/BUILD prior to compiling.
+ # We will not generate a rpm package, but all ThirdParty source code will be
+ # centralized under the same scratch area
+ if [ ! -e ./rpmBuild/BUILD/swak4Foam-0.2.0 ];
+ then
+ echo "Checking for a Mercurial client: hg"
+ command -v hg >/dev/null
+ if [ $? -eq 0 ];
+ then
+ echo "Using Mercurial/hg to download the source code for swak4Foam"
+ (cd ./rpmBuild/BUILD; hg clone http://openfoam-extend.hg.sourceforge.net:8000/hgroot/openfoam-extend/swak4Foam swak4Foam-0.2.0)
+ else
+ echo "Warning: Mercurial/hg is not installed. Switching to an alternate Subversion repository"
+ command -v svn >/dev/null
+ if [ $? -eq 0 ];
+ then
+ echo "Using Subversion/svn to download the source code for swak4Foam"
+ (cd ./rpmBuild/BUILD; svn checkout https://openfoam-extend.svn.sourceforge.net/svnroot/openfoam-extend/trunk/Breeder_1.7/libraries/swak4Foam swak4Foam-0.2.0)
+ else
+ echo "Error: Please install either a Mercurial or Subversion client in order to download the source code for swak4Foam"
+ exit -1
+ fi
+ fi
+ # We move the compilation results directly to $FOAM_SITE_APPBIN and $FOAM_SITE_LIBBIN
+ # If you prefer to keep the libraries and tools under $FOAM_USER_LIBBIN and $FOAM_USER_APPBIN, simply
+ # comment out the next two lines
+ (cd ./rpmBuild/BUILD/swak4Foam-0.2.0; find . -name files | xargs -n 1 sed -i.old "s/FOAM_USER/FOAM_SITE/g")
+ (cd ./rpmBuild/BUILD/swak4Foam-0.2.0; find . -name options | xargs -n 1 sed -i.old "s/FOAM_USER/FOAM_SITE/g")
+
+ # We recompile everything
+ (cd ./rpmBuild/BUILD/swak4Foam-0.2.0; ./Allwclean; ./Allwmake)
+ else
+ echo "The source code for swak4Foam is already present under ./rpmBuild/BUILD/swak4Foam-0.2.0"
+ echo "Please remove this directory if you want to refresh your installation of swak4Foam"
+ fi
+ echo ""
+else
+ echo "Using system installed swak4Foam"
+ echo ""
+fi
+
+echo "========================================"
+echo "Done ThirdParty AllMake: Stage5 "
+echo "========================================"
+echo
+
+# ----------------------------------------------------------------- end-of-file
+
+
diff --git a/ThirdParty/AllMake.stage6 b/ThirdParty/AllMake.stage6
new file mode 100755
index 000000000..1b428ddf3
--- /dev/null
+++ b/ThirdParty/AllMake.stage6
@@ -0,0 +1,68 @@
+#!/bin/bash
+#------------------------------------------------------------------------------
+# ========= |
+# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+# \\ / O peration |
+# \\ / A nd | Copyright held by original author
+# \\/ 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 .
+#
+# Script
+# AllMake.stage6
+#
+# Description
+# Build script for ThirdParty packages located under LocalDev
+#
+#
+# Requirements:
+# 1: Your OpenFOAM environment must be properly initialized
+#
+# Author:
+# Martin Beaudoin, Hydro-Quebec, (2012)
+#
+#------------------------------------------------------------------------------
+# run from Third-party directory only
+cd ${0%/*} || exit 1
+
+wmakeCheckPwd "$WM_THIRD_PARTY_DIR" || {
+ echo "Error: Current directory is not \$WM_THIRD_PARTY_DIR"
+ echo " The environment variables are inconsistent with the installation."
+ echo " Check the OpenFOAM entries in your dot-files and source them."
+ exit 1
+}
+
+#------------------------------------------------------------------------------
+
+echo "========================================"
+echo "Starting ThirdParty AllMake: Stage6 "
+echo "========================================"
+echo
+
+# Local developments from Hydro-Quebec (Turbomachinery)
+# Temporary solution until we find a more suitable place
+# for this. MB
+(cd ./LocalDev/Hydro-Quebec/PyFoam; ./AllMake)
+
+echo "========================================"
+echo "Done ThirdParty AllMake: Stage6 "
+echo "========================================"
+echo
+
+# ----------------------------------------------------------------- end-of-file
+
+
diff --git a/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/AllMake b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/AllMake
new file mode 100755
index 000000000..5fb320e41
--- /dev/null
+++ b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/AllMake
@@ -0,0 +1,73 @@
+#!/bin/bash
+#------------------------------------------------------------------------------
+# ========= |
+# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+# \\ / O peration |
+# \\ / A nd | Copyright held by original author
+# \\/ 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 .
+#
+# Script
+# AllMake
+#
+# Description
+# Installation script for local development
+#
+# Author:
+# Martin Beaudoin, Hydro-Quebec, (2012)
+#
+#------------------------------------------------------------------------------
+
+command -v python -V >/dev/null
+if [ ! $? -eq 0 ];
+then
+ echo "Error: You need to install python in order to run these PyFoam scripts"
+ exit -1
+fi
+
+if [ -z "$PYFOAM_DIR" ]
+then
+ echo "Error: Missing environment variable \$PYFOAM_DIR."
+ echo " Please execute the script ThirdParty/AllMake.stage5 to install PyFoam."
+ echo " Then, make sure to freshen your OpenFOAM environment by sourcing your main"
+ echo " OpenFOAM configuration file."
+ exit -1
+fi
+
+pythonVersion=$(python -V 2>&1 | awk -F ' ' {'print $2'} | awk -F \. {'print $1 "." $2'})
+
+set -x
+
+# pyFoamChangeMixingPlaneBoundary.py
+cp pyFoamChangeMixingPlaneBoundary.py $PYFOAM_DIR/bin
+cp ChangeMixingPlaneBoundary.py $PYFOAM_DIR/lib/python$pythonVersion/site-packages/PyFoam/Applications
+
+# pyFoamChangeGGIBoundary.py
+# Same as pyFoamModifyGGIBoundary.py. We just harmonize the name with rest of PyFoam
+cp pyFoamChangeGGIBoundary.py $PYFOAM_DIR/bin
+cp ChangeGGIBoundary.py $PYFOAM_DIR/lib/python$pythonVersion/site-packages/PyFoam/Applications
+
+set +x
+echo ========================================
+echo Done
+echo ========================================
+echo
+
+# ----------------------------------------------------------------- end-of-file
+
+
diff --git a/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/ChangeGGIBoundary.py b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/ChangeGGIBoundary.py
new file mode 100644
index 000000000..be875eb35
--- /dev/null
+++ b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/ChangeGGIBoundary.py
@@ -0,0 +1,156 @@
+"""
+Application-class that implements pyFoamChangeGGIBoundary.py
+
+Modification of GGI and cyclicGGI interface parameters in
+constant/polymesh/boundary file.
+
+Author:
+ Martin Beaudoin, Hydro-Quebec, 2009. All rights reserved
+
+"""
+
+from PyFoamApplication import PyFoamApplication
+from PyFoam.RunDictionary.ParsedParameterFile import ParsedParameterFile
+from os import path
+import sys
+import re
+
+class ChangeGGIBoundary(PyFoamApplication):
+ def __init__(self,args=None):
+ description="""\
+Change GGI boundary condition parameters
+"""
+ PyFoamApplication.__init__(self,
+ args=args,
+ description=description,
+ usage="%prog ggiPatchName",
+ interspersed=True,
+ changeVersion=False,
+ nr=2)
+
+ def addOptions(self):
+ self.parser.add_option("--shadowPatch",
+ action="store",
+ dest="shadowPatch",
+ default=None,
+ help='Name of the shadowPatch')
+ self.parser.add_option("--shadowName",
+ action="store",
+ dest="shadowName",
+ default=None,
+ help='Name of the shadowPatch. Deprecated. Use --shadowPatch instead')
+ self.parser.add_option("--zone",
+ action="store",
+ dest="zone",
+ default=None,
+ help='Name of the zone for the GGI patch')
+ self.parser.add_option("--patchZoneName",
+ action="store",
+ dest="patchZoneName",
+ default=None,
+ help='Name of the zone for the GGI patch. Deprecated. Use --zone instead')
+ self.parser.add_option("--bridgeOverlap",
+ action="store",
+ dest="bridgeOverlap",
+ default=None,
+ help='bridgeOverlap flag (on/off)')
+ self.parser.add_option("--bridgeOverlapFlag",
+ action="store",
+ dest="bridgeOverlapFlag",
+ default=None,
+ help='bridgeOverlap flag (on/off). Deprecated. Use --bridgeOverlap instead')
+ self.parser.add_option("--rotationAxis",
+ action="store",
+ dest="rotationAxis",
+ default=None,
+ help='rotation axis for cyclicGgi')
+ self.parser.add_option("--rotationAngle",
+ action="store",
+ dest="rotationAngle",
+ default=None,
+ help='rotation axis angle for cyclicGgi')
+ self.parser.add_option("--separationOffset",
+ action="store",
+ dest="separationOffset",
+ default=None,
+ help='separation offset for cyclicGgi')
+
+ self.parser.add_option("--test",
+ action="store_true",
+ default=False,
+ dest="test",
+ help="Only print the new boundary file")
+
+ def run(self):
+ fName=self.parser.getArgs()[0]
+ bName=self.parser.getArgs()[1]
+
+ boundary=ParsedParameterFile(path.join(".",fName,"constant","polyMesh","boundary"),debug=False,boundaryDict=True)
+
+ bnd=boundary.content
+
+ if type(bnd)!=list:
+ self.error("Problem with boundary file (not a list)")
+
+ found=False
+
+ for val in bnd:
+ if val==bName:
+ found=True
+ elif found:
+ bcType=val["type"]
+ if re.match("cyclicGgi", bcType)!= None or re.match("ggi", bcType)!= None:
+ if self.parser.getOptions().shadowPatch!=None:
+ shadowPatch=self.parser.getOptions().shadowPatch
+ val["shadowPatch"]=shadowPatch
+ if shadowPatch not in bnd:
+ self.error("\n Option --shadowPatch for patch:",bName,": there is no patch called",shadowPatch,"\n")
+
+ if self.parser.getOptions().zone!=None:
+ val["zone"]=self.parser.getOptions().zone
+
+ if self.parser.getOptions().bridgeOverlap!=None:
+ val["bridgeOverlap"]=self.parser.getOptions().bridgeOverlap
+
+ if val["type"]=="cyclicGgi":
+ if self.parser.getOptions().rotationAxis!=None:
+ val["rotationAxis"]=self.parser.getOptions().rotationAxis
+
+ if self.parser.getOptions().rotationAngle!=None:
+ val["rotationAngle"]=self.parser.getOptions().rotationAngle
+
+ if self.parser.getOptions().separationOffset!=None:
+ val["separationOffset"]=self.parser.getOptions().separationOffset
+
+
+ # Deprecated
+ if self.parser.getOptions().shadowName!=None:
+ self.warning("\n PatchName:",bName,": Option --shadowName is deprecated. Use --shadowPatch instead\n")
+ shadowName=self.parser.getOptions().shadowName
+ val["shadowPatch"]=shadowName
+ if shadowName not in bnd:
+ self.error("\n Option --shadowName for patch:",bName,": there is no patch called",shadowName,"\n")
+
+ # Deprecated
+ if self.parser.getOptions().patchZoneName!=None:
+ self.warning("\n PatchName:",bName,": Option --patchZoneName is deprecated. Use --zone instead\n")
+ val["zone"]=self.parser.getOptions().patchZoneName
+
+ # Deprecated
+ if self.parser.getOptions().bridgeOverlapFlag!=None:
+ self.warning("\n PatchName:",bName,": Option --bridgeOverlapFlag is deprecated. Use --bridgeOverlap instead\n")
+ val["bridgeOverlap"]=self.parser.getOptions().bridgeOverlapFlag
+
+
+ else:
+ print "Unsupported GGI type '",bcType,"' for patch",bName
+ break
+
+ if not found:
+ self.error("Boundary",bName,"not found in",bnd[::2])
+
+ if self.parser.getOptions().test:
+ print boundary
+ else:
+ boundary.writeFile()
+
diff --git a/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/ChangeMixingPlaneBoundary.py b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/ChangeMixingPlaneBoundary.py
new file mode 100644
index 000000000..5025920aa
--- /dev/null
+++ b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/ChangeMixingPlaneBoundary.py
@@ -0,0 +1,139 @@
+"""
+Application-class that implements pyFoamChangeMixingPlaneBoundary.py
+
+Change various mixingPlane interface attributes in
+constant/polymesh/boundary file.
+
+Author:
+ Martin Beaudoin, Hydro-Quebec, 2012. All rights reserved
+
+"""
+
+from PyFoamApplication import PyFoamApplication
+from PyFoam.RunDictionary.ParsedParameterFile import ParsedParameterFile
+from os import path
+import sys
+
+class ChangeMixingPlaneBoundary(PyFoamApplication):
+ def __init__(self,args=None):
+ description="""
+Change MixingPlane boundary condition parameters
+"""
+ PyFoamApplication.__init__(self,
+ args=args,
+ description=description,
+ usage="%prog mixingPlanePatchName",
+ interspersed=True,
+ changeVersion=False,
+ nr=2)
+
+ def addOptions(self):
+ self.parser.add_option("--shadowPatch",
+ action="store",
+ dest="shadowPatch",
+ default=None,
+ help='Name of the shadowPatch')
+ self.parser.add_option("--coordinateSystemName",
+ action="store",
+ dest="coordinateSystemName",
+ default="mixingCS",
+ help='coordinateSystemName (mixingCS)')
+ self.parser.add_option("--coordinateSystemType",
+ action="store",
+ dest="coordinateSystemType",
+ default=None,
+ help='coordinateSystemType (cyindrical/spherical)')
+ self.parser.add_option("--coordinateSystemOrigin",
+ action="store",
+ dest="coordinateSystemOrigin",
+ default=None,
+ help='origin for coordinate system of mixingPlane')
+ self.parser.add_option("--coordinateSystemE1",
+ action="store",
+ dest="coordinateSystemE1",
+ default=None,
+ help='axis E1 for coordinate system of mixingPlane')
+ self.parser.add_option("--coordinateSystemE3",
+ action="store",
+ dest="coordinateSystemE3",
+ default=None,
+ help='axis E3 for coordinate system of mixingPlane')
+ self.parser.add_option("--assembly",
+ action="store",
+ dest="assembly",
+ default=None,
+ help='Assembly (master|slave|both|userdefined')
+ self.parser.add_option("--orientation",
+ action="store",
+ dest="orientation",
+ default=None,
+ help='Orientation of profile (\
+dirX_spanY| \
+dirX_spanZ|dirY_spanX|dirY_spanZ|dirZ_spanX|dirZ_spanY|dirR_spanTheta|dirR_spanZ|dirTheta_spanZ|dirTheta_spanR|dirZ_spanTheta|dirZ_spanR|unknown)')
+
+ self.parser.add_option("--test",
+ action="store_true",
+ default=False,
+ dest="test",
+ help="Only print the new boundary file")
+
+ def run(self):
+ fName=self.parser.getArgs()[0]
+ bName=self.parser.getArgs()[1]
+
+ boundary=ParsedParameterFile(path.join(".",fName,"constant","polyMesh","boundary"),debug=False,boundaryDict=True)
+
+ bnd=boundary.content
+
+ if type(bnd)!=list:
+ print "Problem with boundary file (not a list)"
+ sys.exit(-1)
+
+ found=False
+
+ for val in bnd:
+ if val==bName:
+ found=True
+ elif found:
+ if val["type"]=="mixingPlane":
+ if self.parser.getOptions().shadowPatch!=None:
+ val["shadowPatch"]=self.parser.getOptions().shadowPatch
+
+ if self.parser.getOptions().orientation!=None:
+ val["orientation"]=self.parser.getOptions().orientation
+
+ if val.has_key("coordinateSystem")==False:
+ val["coordinateSystem"]={}
+
+ if self.parser.getOptions().coordinateSystemName!=None:
+ val["coordinateSystem"]["name"]=self.parser.getOptions().coordinateSystemName
+
+ if self.parser.getOptions().coordinateSystemType!=None:
+ val["coordinateSystem"]["type"]=self.parser.getOptions().coordinateSystemType
+
+ if self.parser.getOptions().coordinateSystemOrigin!=None:
+ val["coordinateSystem"]["origin"]=self.parser.getOptions().coordinateSystemOrigin
+
+ if self.parser.getOptions().coordinateSystemE1!=None:
+ val["coordinateSystem"]["e1"]=self.parser.getOptions().coordinateSystemE1
+
+ if self.parser.getOptions().coordinateSystemE3!=None:
+ val["coordinateSystem"]["e3"]=self.parser.getOptions().coordinateSystemE3
+
+ if self.parser.getOptions().assembly!=None:
+ val["assembly"]=self.parser.getOptions().assembly
+
+ if self.parser.getOptions().orientation!=None:
+ val["orientation"]=self.parser.getOptions().orientation
+
+ break
+
+ if not found:
+ print "Boundary",bName,"not found in",bnd[::2]
+ sys.exit(-1)
+
+ if self.parser.getOptions().test:
+ print boundary
+ else:
+ boundary.writeFile()
+
diff --git a/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/Readme.txt b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/Readme.txt
new file mode 100644
index 000000000..36776145c
--- /dev/null
+++ b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/Readme.txt
@@ -0,0 +1,6 @@
+PyFoam scripts for handling GGI and mixingPlane cases.
+
+--
+Martin Beaudoin
+Hydro-Quebec
+April 2012
diff --git a/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/pyFoamChangeGGIBoundary.py b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/pyFoamChangeGGIBoundary.py
new file mode 100755
index 000000000..947cf69f9
--- /dev/null
+++ b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/pyFoamChangeGGIBoundary.py
@@ -0,0 +1,5 @@
+#!/usr/bin/env python
+
+from PyFoam.Applications.ChangeGGIBoundary import ChangeGGIBoundary
+
+ChangeGGIBoundary()
diff --git a/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/pyFoamChangeMixingPlaneBoundary.py b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/pyFoamChangeMixingPlaneBoundary.py
new file mode 100755
index 000000000..f8ba07c1b
--- /dev/null
+++ b/ThirdParty/LocalDev/Hydro-Quebec/PyFoam/pyFoamChangeMixingPlaneBoundary.py
@@ -0,0 +1,5 @@
+#!/usr/bin/env python
+
+from PyFoam.Applications.ChangeMixingPlaneBoundary import ChangeMixingPlaneBoundary
+
+ChangeMixingPlaneBoundary()
diff --git a/ThirdParty/LocalDev/Readme.txt b/ThirdParty/LocalDev/Readme.txt
new file mode 100644
index 000000000..68a07738a
--- /dev/null
+++ b/ThirdParty/LocalDev/Readme.txt
@@ -0,0 +1,13 @@
+This directory contains ThirdParty developments specific to the mixingPlane_RC1 branch.
+Those developments might eventually find a more suitable home elsewhere.
+
+Instead of spreading these developments around in various repositories, I find
+it more convenient to regroup them under this directory.
+
+So expect this ThirdParty/LocalDev directory to disappear eventually, once its
+content will prove it usefulness.
+
+--
+Martin Beaudoin
+Hydro-Quebec
+April 2012
diff --git a/ThirdParty/rpmBuild/BUILD/.emptyFileForGit b/ThirdParty/rpmBuild/BUILD/.emptyFileForGit
deleted file mode 100644
index e69de29bb..000000000
diff --git a/ThirdParty/rpmBuild/RPMS/.emptyFileForGit b/ThirdParty/rpmBuild/RPMS/.emptyFileForGit
deleted file mode 100644
index e69de29bb..000000000
diff --git a/ThirdParty/rpmBuild/SOURCES/ParaView-3.14.1.patch_0_ParaView.git_0f43430 b/ThirdParty/rpmBuild/SOURCES/ParaView-3.14.1.patch_0_ParaView.git_0f43430
new file mode 100644
index 000000000..682a2039a
--- /dev/null
+++ b/ThirdParty/rpmBuild/SOURCES/ParaView-3.14.1.patch_0_ParaView.git_0f43430
@@ -0,0 +1,243901 @@
+diff -x .git -ruN orig/Applications/ParaView/ParaViewFilters.xml git_0f43430/Applications/ParaView/ParaViewFilters.xml
+--- orig/Applications/ParaView/ParaViewFilters.xml 2012-04-02 12:55:26.000000000 -0400
++++ git_0f43430/Applications/ParaView/ParaViewFilters.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -63,9 +63,30 @@
+
+
+
+-
+-
+-
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+
+
+
+@@ -83,9 +104,6 @@
+
+
+
+-
+-
+-
+
+
+
+@@ -100,10 +118,8 @@
+
+
+
+-
+
+
+-
+
+
+
+@@ -115,7 +131,7 @@
+
+
+
+-
++
+
+
+
+@@ -140,6 +156,7 @@
+
+
+
++
+
+
+
+diff -x .git -ruN orig/Applications/ParaView/ParaViewReaders.xml git_0f43430/Applications/ParaView/ParaViewReaders.xml
+--- orig/Applications/ParaView/ParaViewReaders.xml 2012-04-02 12:55:26.000000000 -0400
++++ git_0f43430/Applications/ParaView/ParaViewReaders.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -70,4 +70,6 @@
+
+
+
++
++
+
+diff -x .git -ruN orig/Applications/ParaView/ParaViewSources.xml git_0f43430/Applications/ParaView/ParaViewSources.xml
+--- orig/Applications/ParaView/ParaViewSources.xml 2012-04-02 12:55:26.000000000 -0400
++++ git_0f43430/Applications/ParaView/ParaViewSources.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -24,4 +24,5 @@
+
+
+
++
+
+diff -x .git -ruN orig/Applications/ParaView/Testing/Python/CMakeLists.txt git_0f43430/Applications/ParaView/Testing/Python/CMakeLists.txt
+--- orig/Applications/ParaView/Testing/Python/CMakeLists.txt 2012-04-02 12:56:24.000000000 -0400
++++ git_0f43430/Applications/ParaView/Testing/Python/CMakeLists.txt 2012-04-20 23:43:06.000000000 -0400
+@@ -79,4 +79,32 @@
+
+ # TODO: remote rendering tests and reverse connect tests.
+
++# only enable TestPythonAnnotationFilter test if numpy is available
++include("TestNumPy")
++
++IF ("1" STREQUAL ${HAS_NUMPY})
++ # Add pvpython tests
++ add_test("pvpython.TestPythonAnnotationFilter"
++ ${PARAVIEW_PYTHON_EXECUTABLE}
++ --data=${PARAVIEW_DATA_ROOT}/Data/can.ex2
++ ${CMAKE_CURRENT_SOURCE_DIR}/TestPythonAnnotationFilter.py)
++ENDIF ("1" STREQUAL ${HAS_NUMPY})
++
+ ENDIF (PARAVIEW_DATA_ROOT)
++
++# Python Multi-servers test
++add_test("py-multi-servers.TestMultiServersConfig"
++ ${PARAVIEW_SMTESTDRIVER_EXECUTABLE}
++ --test-multi-servers 2
++ --server ${PARAVIEW_SERVER_EXECUTABLE}
++ --client ${PARAVIEW_PYTHON_EXECUTABLE}
++ ${CMAKE_CURRENT_SOURCE_DIR}/TestMultiServersConfig.py
++)
++
++add_test("py-multi-servers.TestMultiServersRemoteProxy"
++ ${PARAVIEW_SMTESTDRIVER_EXECUTABLE}
++ --test-multi-servers 3
++ --server ${PARAVIEW_SERVER_EXECUTABLE}
++ --client ${PARAVIEW_PYTHON_EXECUTABLE}
++ ${CMAKE_CURRENT_SOURCE_DIR}/TestMultiServersRemoteProxy.py
++)
+diff -x .git -ruN orig/Applications/ParaView/Testing/Python/TestMultiServersConfig.py git_0f43430/Applications/ParaView/Testing/Python/TestMultiServersConfig.py
+--- orig/Applications/ParaView/Testing/Python/TestMultiServersConfig.py 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/Applications/ParaView/Testing/Python/TestMultiServersConfig.py 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,153 @@
++from paraview.simple import *
++from paraview import servermanager
++
++import time
++
++# Make sure the test driver know that process has properly started
++print "Process started"
++errors = 0
++
++#-------------------- Helpers methods ----------------
++def getHost(url):
++ return url.split(':')[1][2:]
++
++def getScheme(url):
++ return url.split(':')[0]
++
++def getPort(url):
++ return int(url.split(':')[2])
++#--------------------
++import os
++
++def findInSubdirectory(filename, subdirectory=''):
++ if subdirectory:
++ path = subdirectory
++ else:
++ path = os.getcwd()
++ for root, dirs, names in os.walk(path):
++ for name in names:
++ if (name.find(filename) > -1) and ( (name.find('.dll') > -1) or (name.find('.so') > -1) or (name.find('.dylib') > -1)):
++ return os.path.join(root, name)
++ raise 'File not found'
++#--------------------
++
++print "Start multi-server testing"
++enableMultiServer()
++
++options = servermanager.vtkProcessModule.GetProcessModule().GetOptions()
++available_server_urls = options.GetServerURL().split('|')
++built_in_connection = servermanager.ActiveConnection
++
++# Test if the built-in connection is here
++if (len(servermanager.MultiServerConnections) != 1):
++ errors += 1
++ print "Error pvpython should be connected to a built-in session. Currently connected to ", servermanager.MultiServerConnections
++
++url = available_server_urls[0]
++print "Connect to first server ", url
++server1_connection = Connect(getHost(url), getPort(url))
++
++# Test that we have one more connection
++if (len(servermanager.MultiServerConnections) != 2):
++ errors += 1
++ print "Error pvpython should be connected to a built-in session + one remote one. Currently connected to ", servermanager.MultiServerConnections
++
++url = available_server_urls[1]
++print "Connect to second server ", url
++server2_connection = Connect(getHost(url), getPort(url))
++
++# Test that we have one more connection
++if (len(servermanager.MultiServerConnections) != 3):
++ errors += 1
++ print "Error pvpython should be connected to a built-in session + two remote one. Currently connected to ", servermanager.MultiServerConnections
++
++print "Available connections: ", servermanager.MultiServerConnections
++
++# Test that last created connection is the active one
++if ( servermanager.ActiveConnection != server2_connection):
++ errors += 1
++ print "Error Invalid active connection. Expected ", server2_connection, " and got ", servermanager.ActiveConnection
++
++# Test that switchActiveConnection is working as expected
++switchActiveConnection(server1_connection, globals())
++if ( servermanager.ActiveConnection != server1_connection):
++ errors += 1
++ print "Error Invalid active connection. Expected ", server1_connection, " and got ", servermanager.ActiveConnection
++
++# Test that switchActiveConnection is working as expected
++switchActiveConnection(built_in_connection, globals())
++if ( servermanager.ActiveConnection != built_in_connection):
++ errors += 1
++ print "Error Invalid active connection. Expected ", built_in_connection, " and got ", servermanager.ActiveConnection
++
++# Test that switchActiveConnection is working as expected
++switchActiveConnection(server2_connection, globals())
++if ( servermanager.ActiveConnection != server2_connection):
++ errors += 1
++ print "Error Invalid active connection. Expected ", server2_connection, " and got ", servermanager.ActiveConnection
++
++
++# Load plugin on server2
++switchActiveConnection(server2_connection, globals())
++LoadDistributedPlugin("PacMan", True, globals())
++
++# Create PacMan on server2
++pacMan_s2 = PacMan()
++
++# Swtich to server1 and Create PacMan ==> This should fail
++switchActiveConnection(server1_connection, globals())
++try:
++ pacMan_s1 = PacMan()
++ errors += 1
++ print "Error: PacMan should not be available on Server1"
++except NameError:
++ print "OK: PacMan is not available on server1"
++
++# Swtich to server2 with globals and switch back to server1 with not updating the globals
++switchActiveConnection(server2_connection, globals())
++switchActiveConnection(server1_connection)
++
++# Create PacMan ==> This should fail
++try:
++ pacMan_s1 = PacMan()
++ errors += 1
++ print "Error: PacMan should not be available on Server1"
++except RuntimeError:
++ print "OK: PacMan is not available on server1"
++
++# Make sure built-in as not the pacMan
++switchActiveConnection(server2_connection, globals())
++switchActiveConnection(built_in_connection, globals())
++try:
++ pacMan_builtin = PacMan()
++ errors += 1
++ print "Error: PacMan should not be available on built-in"
++except NameError:
++ print "OK: PacMan is not available on built-in"
++
++# Load plugin localy for built-in
++# Create PacMan ==> This should be OK on built-in
++switchActiveConnection(built_in_connection, globals())
++LoadDistributedPlugin("PacMan", False, globals())
++pacMan_builtin = PacMan()
++print "After loading the plugin locally in built-in, the PacMan definition is available"
++
++# Swtich to server1 and Create PacMan ==> This should fail
++switchActiveConnection(server1_connection, globals())
++try:
++ pacMan_s1 = PacMan()
++ errors += 1
++ print "Error: PacMan should not be available on Server1"
++except NameError:
++ print "OK: PacMan is still not available on server1"
++
++# Disconnect and quit application...
++Disconnect()
++print "Available connections after disconnect: ", servermanager.MultiServerConnections
++Disconnect()
++print "Available connections after disconnect: ", servermanager.MultiServerConnections
++Disconnect()
++print "Available connections after disconnect: ", servermanager.MultiServerConnections
++
++if errors > 0:
++ raise RuntimeError, "An error occured during the execution"
+diff -x .git -ruN orig/Applications/ParaView/Testing/Python/TestMultiServersRemoteProxy.py git_0f43430/Applications/ParaView/Testing/Python/TestMultiServersRemoteProxy.py
+--- orig/Applications/ParaView/Testing/Python/TestMultiServersRemoteProxy.py 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/Applications/ParaView/Testing/Python/TestMultiServersRemoteProxy.py 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,151 @@
++from paraview.simple import *
++from paraview import servermanager
++
++import time
++
++# Make sure the test driver know that process has properly started
++print "Process started"
++errors = 0
++
++#-------------------- Helpers methods ----------------
++def getHost(url):
++ return url.split(':')[1][2:]
++
++def getScheme(url):
++ return url.split(':')[0]
++
++def getPort(url):
++ return int(url.split(':')[2])
++#--------------------
++
++print "Start multi-server testing"
++enableMultiServer()
++
++options = servermanager.vtkProcessModule.GetProcessModule().GetOptions()
++available_server_urls = options.GetServerURL().split('|')
++built_in_connection = servermanager.ActiveConnection
++
++# Test if the built-in connection is here
++if (len(servermanager.MultiServerConnections) != 1):
++ errors += 1
++ print "Error pvpython should be connected to a built-in session. Currently connected to ", servermanager.MultiServerConnections
++
++url = available_server_urls[0]
++print "Connect to first server ", url
++server1_connection = Connect(getHost(url), getPort(url))
++
++# Test that we have one more connection
++if (len(servermanager.MultiServerConnections) != 2):
++ errors += 1
++ print "Error pvpython should be connected to a built-in session + one remote one. Currently connected to ", servermanager.MultiServerConnections
++
++url = available_server_urls[1]
++print "Connect to second server ", url
++server2_connection = Connect(getHost(url), getPort(url))
++
++# Test that we have one more connection
++if (len(servermanager.MultiServerConnections) != 3):
++ errors += 1
++ print "Error pvpython should be connected to a built-in session + two remote one. Currently connected to ", servermanager.MultiServerConnections
++
++url = available_server_urls[2]
++print "Connect to third server ", url
++server3_connection = Connect(getHost(url), getPort(url))
++
++# Test that we have one more connection
++if (len(servermanager.MultiServerConnections) != 4):
++ errors += 1
++ print "Error pvpython should be connected to a built-in session + three remote one. Currently connected to ", servermanager.MultiServerConnections
++
++print "Available connections: ", servermanager.MultiServerConnections
++
++# Test that last created connection is the active one
++if ( servermanager.ActiveConnection != server3_connection):
++ errors += 1
++ print "Error Invalid active connection. Expected ", server3_connection, " and got ", servermanager.ActiveConnection
++
++# ------- Do the proper RemoteSourceProxy testing --------------
++
++# Create a set of sphere across the remote sessions
++switchActiveConnection(server1_connection, globals())
++rSphere1 = Sphere(ThetaResolution=10, PhiResolution=10)
++rSphere1.UpdatePipeline()
++size1 = rSphere1.GetDataInformation().GetNumberOfPoints()
++
++switchActiveConnection(server2_connection, globals())
++rSphere2 = Sphere(ThetaResolution=11, PhiResolution=11)
++rSphere2.UpdatePipeline()
++size2 = rSphere2.GetDataInformation().GetNumberOfPoints()
++
++switchActiveConnection(server3_connection, globals())
++rSphere3 = Sphere(ThetaResolution=12, PhiResolution=12)
++rSphere3.UpdatePipeline()
++size3 = rSphere3.GetDataInformation().GetNumberOfPoints()
++
++# Create remote source on the built-in session
++switchActiveConnection(built_in_connection, globals())
++remoteProxy = RemoteSourceProxy()
++remoteProxy.SetExternalProxy(rSphere1, 0)
++remoteProxy.UpdatePipeline()
++
++# Test that the data in built-in is the same size as the remote one
++remoteProxy.UpdatePipeline()
++size = remoteProxy.GetDataInformation().GetNumberOfPoints()
++if ( size1 != size ):
++ errors += 1
++ print "Error Invalid data size. Expected ", size1, " and got ", size
++else:
++ print "Found size ", size, " for server 1"
++
++# Switch to proxy on server 2 and test size
++remoteProxy.SetExternalProxy(rSphere2, 0)
++remoteProxy.UpdatePipeline()
++size = remoteProxy.GetDataInformation().GetNumberOfPoints()
++if ( size2 != size ):
++ errors += 1
++ print "Error Invalid data size. Expected ", size2, " and got ", size
++else:
++ print "Found size ", size, " for server 2"
++
++# Switch to proxy on server 3 and test size
++remoteProxy.SetExternalProxy(rSphere3, 0)
++remoteProxy.UpdatePipeline()
++size = remoteProxy.GetDataInformation().GetNumberOfPoints()
++if ( size3 != size ):
++ errors += 1
++ print "Error Invalid data size. Expected ", size3, " and got ", size
++else:
++ print "Found size ", size, " for server 3"
++
++# Change data size on server 3 and make sure the change get propagated to the built-in
++rSphere3.ThetaResolution = 13
++rSphere3.PhiResolution = 13
++rSphere3.UpdatePipeline()
++size3 = rSphere3.GetDataInformation().GetNumberOfPoints()
++
++remoteProxy.UpdatePipeline()
++size = remoteProxy.GetDataInformation().GetNumberOfPoints()
++if ( size3 != size ):
++ errors += 1
++ print "Error Invalid data size. Expected ", size3, " and got ", size
++else:
++ print "Found size ", size, " for server 3 after update"
++
++# Make sure the size is not 0
++if ( size == 0 or size1 == 0 or size1 == 0 or size1 == 0):
++ errors += 1
++ print "Error Invalid data size. None of them should be 0"
++
++# --------------------------------------------------------------
++# Disconnect and quit application...
++Disconnect()
++print "Available connections after disconnect: ", servermanager.MultiServerConnections
++Disconnect()
++print "Available connections after disconnect: ", servermanager.MultiServerConnections
++Disconnect()
++print "Available connections after disconnect: ", servermanager.MultiServerConnections
++Disconnect()
++print "Available connections after disconnect: ", servermanager.MultiServerConnections
++
++if errors > 0:
++ raise RuntimeError, "An error occured during the execution"
+diff -x .git -ruN orig/Applications/ParaView/Testing/Python/TestPythonAnnotationFilter.py git_0f43430/Applications/ParaView/Testing/Python/TestPythonAnnotationFilter.py
+--- orig/Applications/ParaView/Testing/Python/TestPythonAnnotationFilter.py 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/Applications/ParaView/Testing/Python/TestPythonAnnotationFilter.py 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,119 @@
++from paraview.simple import *
++from paraview import servermanager
++
++import time
++
++# Make sure the test driver know that process has properly started
++print "Process started"
++errors = 0
++
++#-------------------- Comparison helper ----------------------
++
++def equal(a, b):
++ if a == b:
++ return True
++ aList = a.replace(","," ").replace("["," ").replace("]", " ").split(" ")
++ bList = b.replace(","," ").replace("["," ").replace("]", " ").split(" ")
++ size = len(aList)
++ if size != len(bList):
++ return False
++ for i in xrange(size):
++ if len(aList[i]) > 0:
++ af = float(aList[i])
++ bf = float(bList[i])
++ if ((af-bf)*(af-bf)) > 0.000001:
++ return False
++ return True
++
++#-------------------- Start testing --------------------------
++
++print "Start PythonAnnotationFilter testing"
++
++options = servermanager.vtkProcessModule.GetProcessModule().GetOptions()
++dataToLoad = options.GetParaViewDataName()
++
++
++# Load data file
++reader = OpenDataFile(dataToLoad)
++reader.GlobalVariables = ['KE', 'XMOM', 'YMOM', 'ZMOM', 'NSTEPS', 'TMSTEP']
++reader.UpdatePipeline()
++
++# Time management
++timesteps = servermanager.ProxyManager().GetProxy('timekeeper','TimeKeeper').TimestepValues
++time = timesteps[5]
++
++# Merge blocks
++merge = MergeBlocks()
++
++# Annotation filter
++annotation = PythonAnnotation()
++annotation.Expression = '"%f %f %f" % (XMOM[t_index], YMOM[t_index], ZMOM[t_index])'
++
++# Update time and trigger pipeline execution
++time = timesteps[5]
++annotation.UpdatePipeline(time)
++
++annotation.SMProxy.UpdatePropertyInformation()
++value = annotation.SMProxy.GetProperty('AnnotationValue').GetElement(0)
++expected = "0.012132 0.001378 -1158.252808"
++
++if not equal(value, expected):
++ errors += 1
++ print "Error: Expected ", expected, " and got ", value
++
++# Update time and trigger pipeline execution
++time = timesteps[7]
++annotation.UpdatePipeline(time)
++
++annotation.SMProxy.UpdatePropertyInformation()
++value = annotation.SMProxy.GetProperty('AnnotationValue').GetElement(0)
++expected = "0.013970 0.001319 -1141.020020"
++
++if not equal(value, expected):
++ errors += 1
++ print "Error: Expected ", expected, " and got ", value
++
++# Check time infos
++annotation.Expression = '"%i %f %s" % (t_index, t_value, str(t_range))'
++
++# Update time and trigger pipeline execution
++time = timesteps[7]
++annotation.UpdatePipeline(time)
++
++annotation.SMProxy.UpdatePropertyInformation()
++value = annotation.SMProxy.GetProperty('AnnotationValue').GetElement(0)
++expected = "7 0.000700 [0, 0.00429999]"
++
++if not equal(value, expected):
++ errors += 1
++ print "Error: Expected ", expected, " and got ", value
++
++# Update time and trigger pipeline execution
++time = timesteps[27]
++annotation.UpdatePipeline(time)
++
++annotation.SMProxy.UpdatePropertyInformation()
++value = annotation.SMProxy.GetProperty('AnnotationValue').GetElement(0)
++expected = "27 0.002700 [0, 0.00429999]"
++
++if not equal(value, expected):
++ errors += 1
++ print "Error: Expected ", expected, " and got ", value
++
++# Update time and trigger pipeline execution
++time = timesteps[len(timesteps)-1]
++annotation.UpdatePipeline(time)
++
++annotation.SMProxy.UpdatePropertyInformation()
++value = annotation.SMProxy.GetProperty('AnnotationValue').GetElement(0)
++expected = "43 0.004300 [0, 0.00429999]"
++
++if not equal(value, expected):
++ errors += 1
++ print "Error: Expected ", expected, " and got ", value
++
++# Disconnect and quit application...
++Disconnect()
++
++if errors > 0:
++ raise RuntimeError, "An error occured during the execution"
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/CMakeLists.txt git_0f43430/Applications/ParaView/Testing/XML/CMakeLists.txt
+--- orig/Applications/ParaView/Testing/XML/CMakeLists.txt 2012-04-02 12:56:24.000000000 -0400
++++ git_0f43430/Applications/ParaView/Testing/XML/CMakeLists.txt 2012-04-20 23:43:06.000000000 -0400
+@@ -142,6 +142,10 @@
+ SET(TESTS_WITH_BASELINES ${TESTS_WITH_BASELINES} ${CMAKE_CURRENT_SOURCE_DIR}/FindDataDialog.xml)
+ ENDIF ("1" STREQUAL ${HAS_NUMPY})
+
++# These tests cannot be run using ctest -j since they are affected by focus
++# changed events.
++set (AnimatePipelineTime_FORCE_SERIAL TRUE)
++
+ # Set properties for CTH tests
+ set(CTHAMRBaseline_BREAK TRUE)
+
+@@ -202,6 +206,7 @@
+
+ SET(ExtractLevel_BREAK TRUE)
+
++SET(Fractal2D_BREAK TRUE)
+
+ # Add image threshold overrides for tests.
+ # Generally all tests with wireframes need higher thresholds.
+@@ -350,74 +355,79 @@
+
+ # List of test Enable for collaboration
+ set (AnimatePipelineTime_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (CalcParens_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (Calculator_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (CameraLink_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (ColorEditor2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (ColorEditor4_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (CompositeSurfaceSelection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (CalcParens_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (Calculator_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (CameraLink_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (ColorEditor2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (ColorEditor4_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (CompositeSurfaceSelection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+ set (Contour_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (ContourRange_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (ContourRange_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+ set (CreateDelete_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (CustomSourceProbe_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (D3SmallCells_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (DualSphereAnimation_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (EnSight_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (ExodusIIPanel_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (ExodusModeShapes_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (ExodusXML_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (ExTimeseries_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (ExTimeseries2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (ExtractBlock_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (ExtractLevel_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (FindDataDialog_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (FFTOverTime_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (Flow_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (Flow2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (Fractal2D_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (GridConnectivity_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (NormalGlyphs_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (ObjectInspectorSphere_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (OpenSaveData_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (Plot3DReader_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (PlotEdges_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (PlotEdges2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (PropertyConversion_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (CustomSourceProbe_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (D3SmallCells_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (DualSphereAnimation_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (EnSight_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (ExodusIIPanel_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (ExodusModeShapes_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (ExodusXML_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (ExTimeseries_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (ExTimeseries2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (ExtractBlock_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (ExtractLevel_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (FindDataDialog_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (FFTOverTime_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (Flow_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (Flow2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (Fractal2D_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (GridConnectivity_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (NormalGlyphs_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (ObjectInspectorSphere_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (OpenSaveData_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (Plot3DReader_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (PlotEdges_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (PlotEdges2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (PropertyConversion_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+ set (PropertyConversion1_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+ set (PropertyConversion2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-# disabling since the state file doesn't have view layout and such old state
+-# files are not currently supported in collaborative mode.
+-#set (PropertyLink_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (ReadXMLPolyDataFileSeries_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (RepresentationSelector_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (SaveColorMap_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (SaveCSV_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (SelectReader_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (SimpleInteraction_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (Slice_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++## disabling since the state file doesn't have view layout and such old state
++## files are not currently supported in collaborative mode.
++##set (PropertyLink_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (ReadXMLPolyDataFileSeries_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (RepresentationSelector_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (SaveColorMap_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (SaveCSV_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (SelectReader_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (SimpleInteraction_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (Slice_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+ set (SpreadSheet1_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (SpreadSheet2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (SPTimeseries_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (SpyPlotHistoryReader_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (StreamTracerUpdates_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (SpreadSheet2_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (SPTimeseries_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (SpyPlotHistoryReader_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (StreamTracerUpdates_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+ set (TemporalInterpolator_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+ set (TemporalShiftScale_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (Tessellate_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (Threshold_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (UnstructuredOutline_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (Tessellate_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (Threshold_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (UnstructuredOutline_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+ set (VariableSelector_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+ set (VariableSelector1_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+ set (XdmfRead_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (XdmfReadImageData_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (XdmfReadImageDataCollection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (XdmfReadRectilinearGrid_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (XdmfReadRectilinearGridCollection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (XdmfReadStructuredGrid_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (XdmfReadStructuredGridCollection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (XdmfGridAttributes_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+-set (XYChart_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (XdmfReadImageData_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (XdmfReadImageDataCollection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (XdmfReadRectilinearGrid_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (XdmfReadRectilinearGridCollection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (XdmfReadStructuredGrid_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (XdmfReadStructuredGridCollection_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (XdmfGridAttributes_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
++#set (XYChart_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+ set (ZLibXDMF_ENABLE_COLLAB ${PARAVIEW_COLLABORATION_TESTING})
+
++
++set(TESTS_WITH_MULTI_SERVERS_3
++ ${CMAKE_CURRENT_SOURCE_DIR}/TestMultiServer3.xml
++)
++
+ IF (PARAVIEW_DATA_ROOT)
+ set (TESTS_WITHOUT_BASELINES
+ ${TESTS_WITHOUT_BASELINES}
+@@ -460,4 +470,28 @@
+ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline
+ TEST_SCRIPTS ${TESTS_WITH_BASELINES})
+
++ add_multi_server_tests("pvcs-multi-servers" 3
++ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline
++ TEST_SCRIPTS ${TESTS_WITH_MULTI_SERVERS_3})
++
++ add_tile_display_tests("pvcs-tile-display" 2 1
++ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline
++ TEST_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/TileDisplayScatterPlot-2x1.xml)
++
++ add_tile_display_tests("pvcs-tile-display" 2 2
++ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline
++ TEST_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/TileDisplayScatterPlot-2x2.xml)
++
++ add_tile_display_tests("pvcs-tile-display" 1 2
++ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline
++ TEST_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/TileDisplay3DTesting-1x2.xml)
++
++ add_tile_display_tests("pvcs-tile-display" 2 1
++ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline
++ TEST_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/TileDisplay3DTesting-2x1.xml)
++
++ add_tile_display_tests("pvcs-tile-display" 2 2
++ BASELINE_DIR ${PARAVIEW_DATA_ROOT}/Baseline
++ TEST_SCRIPTS ${CMAKE_CURRENT_SOURCE_DIR}/TileDisplay3DTesting-2x2.xml)
++
+ ENDIF (PARAVIEW_DATA_ROOT)
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/CameraLink.xml git_0f43430/Applications/ParaView/Testing/XML/CameraLink.xml
+--- orig/Applications/ParaView/Testing/XML/CameraLink.xml 2012-04-02 12:56:24.000000000 -0400
++++ git_0f43430/Applications/ParaView/Testing/XML/CameraLink.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -23,5 +23,4 @@
+
+
+
+-
+
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/ExtractLevel.xml git_0f43430/Applications/ParaView/Testing/XML/ExtractLevel.xml
+--- orig/Applications/ParaView/Testing/XML/ExtractLevel.xml 2012-04-02 12:55:26.000000000 -0400
++++ git_0f43430/Applications/ParaView/Testing/XML/ExtractLevel.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -3,6 +3,8 @@
+
+
+
++
++
+
+
+
+@@ -23,8 +25,5 @@
+
+
+
+-
+-
+-
+
+
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/EyeDomeLighting.xml git_0f43430/Applications/ParaView/Testing/XML/EyeDomeLighting.xml
+--- orig/Applications/ParaView/Testing/XML/EyeDomeLighting.xml 2012-04-02 12:56:24.000000000 -0400
++++ git_0f43430/Applications/ParaView/Testing/XML/EyeDomeLighting.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -10,6 +10,4 @@
+
+
+
+-
+-
+
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/Fractal2D.xml git_0f43430/Applications/ParaView/Testing/XML/Fractal2D.xml
+--- orig/Applications/ParaView/Testing/XML/Fractal2D.xml 2012-04-02 12:55:26.000000000 -0400
++++ git_0f43430/Applications/ParaView/Testing/XML/Fractal2D.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -4,9 +4,9 @@
+
+
+
+-
+
++
+
+
+
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/OpenHelp.xml git_0f43430/Applications/ParaView/Testing/XML/OpenHelp.xml
+--- orig/Applications/ParaView/Testing/XML/OpenHelp.xml 2012-04-02 12:55:26.000000000 -0400
++++ git_0f43430/Applications/ParaView/Testing/XML/OpenHelp.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -1,10 +1,7 @@
+
+
+
+-
+
+
+-
+-
+-
++
+
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/SpyPlotHistoryReader.xml git_0f43430/Applications/ParaView/Testing/XML/SpyPlotHistoryReader.xml
+--- orig/Applications/ParaView/Testing/XML/SpyPlotHistoryReader.xml 2012-04-02 12:56:24.000000000 -0400
++++ git_0f43430/Applications/ParaView/Testing/XML/SpyPlotHistoryReader.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -3,15 +3,17 @@
+
+
+
++
+
+
+
+
+
+
+-
+-
+-
++
++
++
++
+
+
+
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/TestMultiServer3.xml git_0f43430/Applications/ParaView/Testing/XML/TestMultiServer3.xml
+--- orig/Applications/ParaView/Testing/XML/TestMultiServer3.xml 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/Applications/ParaView/Testing/XML/TestMultiServer3.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,43 @@
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/TileDisplay3DTesting-1x2.xml git_0f43430/Applications/ParaView/Testing/XML/TileDisplay3DTesting-1x2.xml
+--- orig/Applications/ParaView/Testing/XML/TileDisplay3DTesting-1x2.xml 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/Applications/ParaView/Testing/XML/TileDisplay3DTesting-1x2.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,41 @@
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x1.xml git_0f43430/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x1.xml
+--- orig/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x1.xml 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x1.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,41 @@
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x2.xml git_0f43430/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x2.xml
+--- orig/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x2.xml 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/Applications/ParaView/Testing/XML/TileDisplay3DTesting-2x2.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,44 @@
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x1.xml git_0f43430/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x1.xml
+--- orig/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x1.xml 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x1.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,16 @@
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+diff -x .git -ruN orig/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x2.xml git_0f43430/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x2.xml
+--- orig/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x2.xml 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/Applications/ParaView/Testing/XML/TileDisplayScatterPlot-2x2.xml 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,18 @@
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+diff -x .git -ruN orig/CMake/ParaViewCommon.cmake git_0f43430/CMake/ParaViewCommon.cmake
+--- orig/CMake/ParaViewCommon.cmake 2012-04-02 12:56:24.000000000 -0400
++++ git_0f43430/CMake/ParaViewCommon.cmake 2012-04-20 23:43:06.000000000 -0400
+@@ -344,9 +344,6 @@
+ # Set this to get VTKs FOR LOOP "fix" to apply too all of Paraviews Source.
+ SET(VTK_USE_FOR_SCOPE_WORKAROUND TRUE)
+
+-CONFIGURE_FILE(${ParaView_SOURCE_DIR}/VTK/Utilities/TclTk/.NoDartCoverage
+- ${ParaView_BINARY_DIR}/VTK/.NoDartCoverage)
+-
+ OPTION(PARAVIEW_DISABLE_VTK_TESTING "Disable VTK Testing" OFF)
+ MARK_AS_ADVANCED(PARAVIEW_DISABLE_VTK_TESTING)
+ IF (PARAVIEW_DISABLE_VTK_TESTING)
+@@ -403,7 +400,7 @@
+ )
+ ENDIF(PARAVIEW_ENABLE_PYTHON)
+
+-SET(kits Common Charts Filtering GenericFiltering IO Imaging Rendering Parallel Graphics Hybrid VolumeRendering Widgets)
++SET(kits Common AMR Charts Filtering GenericFiltering IO Imaging Rendering Parallel Graphics Hybrid VolumeRendering Widgets)
+ FOREACH(kit ${kits})
+ SET(VTK_INCLUDE_DIR ${VTK_INCLUDE_DIR}
+ ${ParaView_SOURCE_DIR}/VTK/${kit}
+diff -x .git -ruN orig/CMake/ParaViewTestingMacros.cmake git_0f43430/CMake/ParaViewTestingMacros.cmake
+--- orig/CMake/ParaViewTestingMacros.cmake 2012-04-02 12:56:24.000000000 -0400
++++ git_0f43430/CMake/ParaViewTestingMacros.cmake 2012-04-20 23:43:06.000000000 -0400
+@@ -27,6 +27,8 @@
+ set (counter 0)
+ set (extra_args)
+ set (full_test_name)
++ set (force_serial FALSE)
++
+ while (${counter} LESS ${TEST_GROUP_SIZE})
+ list(LENGTH ACT_TEST_SCRIPTS num_tests)
+ if (num_tests)
+@@ -57,6 +59,9 @@
+ if (DEFINED ${test_name}_BREAK)
+ set (counter 100000) # stop the group.
+ endif (DEFINED ${test_name}_BREAK)
++ if (${test_name}_FORCE_SERIAL)
++ set (force_serial TRUE)
++ endif (${test_name}_FORCE_SERIAL)
+ endwhile (${counter} LESS ${TEST_GROUP_SIZE})
+
+ if (extra_args)
+@@ -66,6 +71,10 @@
+ ${extra_args}
+ --exit
+ )
++ if (force_serial)
++ set_tests_properties("${prefix}${full_test_name}" PROPERTIES RUN_SERIAL ON)
++ message(STATUS "Running in serial \"${prefix}${full_test_name}\"")
++ endif()
+ endif (extra_args)
+ endwhile (ACT_TEST_SCRIPTS)
+
+@@ -133,6 +142,69 @@
+ ${extra_args}
+ --exit
+ )
++ if (${test_name}_FORCE_SERIAL)
++ set_tests_properties("${prefix}.${test_name}" PROPERTIES RUN_SERIAL ON)
++ message(STATUS "Running in serial \"${prefix}.${test_name}\"")
++ endif (${test_name}_FORCE_SERIAL)
+ endif()
+ endforeach(test_script)
+ ENDFUNCTION(add_multi_client_tests)
++
++FUNCTION(add_multi_server_tests prefix nbServers)
++ PV_PARSE_ARGUMENTS(ACT "TEST_SCRIPTS;BASELINE_DIR" "" ${ARGN})
++
++ foreach (test_script ${ACT_TEST_SCRIPTS})
++ get_filename_component(test_name ${test_script} NAME_WE)
++ set (extra_args)
++ process_args(extra_args)
++ add_test("${prefix}.${test_name}"
++ ${PARAVIEW_SMTESTDRIVER_EXECUTABLE}
++ --test-multi-servers ${nbServers}
++ --server ${PARAVIEW_SERVER_EXECUTABLE}
++
++ --client ${CLIENT_EXECUTABLE}
++ -dr
++ --disable-light-kit
++ --test-directory=${PARAVIEW_TEST_DIR}
++ --test-script=${test_script}
++ ${extra_args}
++ --exit
++ )
++ endforeach(test_script)
++ENDFUNCTION(add_multi_server_tests)
++
++FUNCTION (add_tile_display_tests prefix tdx tdy )
++ PV_PARSE_ARGUMENTS(ACT "TEST_SCRIPTS;BASELINE_DIR" "" ${ARGN})
++
++
++ MATH(EXPR REQUIRED_CPU '${tdx}*${tdy}-1') # -1 is for LESS
++ if (${REQUIRED_CPU} LESS ${VTK_MPI_MAX_NUMPROCS})
++ foreach (test_script ${ACT_TEST_SCRIPTS})
++
++ get_filename_component(test_name ${test_script} NAME_WE)
++ set (extra_args)
++ process_args(extra_args)
++ add_test("${prefix}-${tdx}x${tdy}.${test_name}"
++ ${PARAVIEW_SMTESTDRIVER_EXECUTABLE}
++ --test-tiled ${tdx} ${tdy}
++ --server ${PARAVIEW_SERVER_EXECUTABLE}
++
++ --client ${CLIENT_EXECUTABLE}
++ -dr
++ --disable-light-kit
++ --test-directory=${PARAVIEW_TEST_DIR}
++ --test-script=${test_script}
++ --tile-image-prefix=${PARAVIEW_TEST_DIR}/${test_name}
++
++ ${extra_args}
++ --exit
++ )
++ set_property(TEST "${prefix}-${tdx}x${tdy}.${test_name}"
++ PROPERTY ENVIRONMENT "PV_ICET_WINDOW_BORDERS=1")
++ if (${test_name}_FORCE_SERIAL)
++ set_tests_properties("${prefix}.${test_name}" PROPERTIES RUN_SERIAL ON)
++ message(STATUS "Running in serial \"${prefix}.${test_name}\"")
++ endif (${test_name}_FORCE_SERIAL)
++ endforeach(test_script)
++ endif(${REQUIRED_CPU} LESS ${VTK_MPI_MAX_NUMPROCS})
++ENDFUNCTION (add_tile_display_tests)
+diff -x .git -ruN orig/CMakeLists.txt git_0f43430/CMakeLists.txt
+--- orig/CMakeLists.txt 2012-04-02 12:56:24.000000000 -0400
++++ git_0f43430/CMakeLists.txt 2012-04-20 23:43:06.000000000 -0400
+@@ -62,9 +62,9 @@
+ SET (PARAVIEW_VERSION_MAJOR 3)
+ SET (PARAVIEW_VERSION_MINOR 14)
+ SET (PARAVIEW_VERSION_PATCH 1)
+-SET (PARAVIEW_VERSION_PATCH_EXTRA)
++SET (PARAVIEW_VERSION_PATCH_EXTRA "enhanced")
+ SET (PARAVIEW_VERSION "3.14")
+-SET (PARAVIEW_VERSION_FULL "3.14.1")
++SET (PARAVIEW_VERSION_FULL "3.14.1-enhanced")
+
+ INCLUDE(ParaViewDetermineVersion)
+ determine_version(
+@@ -361,7 +361,7 @@
+
+ #########################################################################
+ # Configure the CoProcessing library
+-OPTION(PARAVIEW_ENABLE_COPROCESSING "Enable/Disable the CoProcessing library." OFF)
++OPTION(PARAVIEW_ENABLE_COPROCESSING "Enable/Disable the CoProcessing library." ON)
+ MARK_AS_ADVANCED(PARAVIEW_ENABLE_COPROCESSING)
+ IF (PARAVIEW_ENABLE_COPROCESSING)
+ ADD_SUBDIRECTORY (CoProcessing)
+@@ -395,48 +395,11 @@
+ DESTINATION ${PV_INSTALL_INCLUDE_DIR}
+ COMPONENT Development)
+
+- SET(cmakeDevFiles
+- ${ParaView_CMAKE_DIR}/branded_splash.png
+- ${ParaView_SOURCE_DIR}/ParaViewUse.cmake
+- ${ParaView_CMAKE_DIR}/ParaViewMacros.cmake
+- ${ParaView_CMAKE_DIR}/ParaViewPlugins.cmake
+- ${ParaView_CMAKE_DIR}/ParaViewBranding.cmake
+- ${ParaView_CMAKE_DIR}/ParaViewBrandingCPack.cmake
+- ${ParaView_CMAKE_DIR}/pqParaViewPlugin.cxx.in
+- ${ParaView_CMAKE_DIR}/pqParaViewPlugin.h.in
+- ${ParaView_CMAKE_DIR}/branded_paraview_initializer.cxx.in
+- ${ParaView_CMAKE_DIR}/branded_paraview_main.cxx.in
+- ${ParaView_CMAKE_DIR}/branded_paraview_initializer.h.in
+- ${ParaView_CMAKE_DIR}/ParaViewCPackOptions.cmake.in
+- ${ParaView_CMAKE_DIR}/pv-forward.c.in
+- # originaly from Qt/Components
+- ${ParaView_CMAKE_DIR}/pqObjectPanelImplementation.h.in
+- ${ParaView_CMAKE_DIR}/pqObjectPanelImplementation.cxx.in
+- ${ParaView_CMAKE_DIR}/pqDisplayPanelImplementation.h.in
+- ${ParaView_CMAKE_DIR}/pqDisplayPanelImplementation.cxx.in
+- ${ParaView_CMAKE_DIR}/pqViewOptionsImplementation.h.in
+- ${ParaView_CMAKE_DIR}/pqViewOptionsImplementation.cxx.in
+- ${ParaView_CMAKE_DIR}/pqActionGroupImplementation.h.in
+- ${ParaView_CMAKE_DIR}/pqActionGroupImplementation.cxx.in
+- ${ParaView_CMAKE_DIR}/pqViewFrameActionGroupImplementation.h.in
+- ${ParaView_CMAKE_DIR}/pqViewFrameActionGroupImplementation.cxx.in
+- ${ParaView_CMAKE_DIR}/pqDockWindowImplementation.h.in
+- ${ParaView_CMAKE_DIR}/pqDockWindowImplementation.cxx.in
+- ${ParaView_CMAKE_DIR}/pqDisplayPanelDecoratorImplementation.h.in
+- ${ParaView_CMAKE_DIR}/pqDisplayPanelDecoratorImplementation.cxx.in
+- ${ParaView_CMAKE_DIR}/pq3DWidgetImplementation.h.in
+- ${ParaView_CMAKE_DIR}/pq3DWidgetImplementation.cxx.in
+- # originaly from Qt/Core
+- ${ParaView_CMAKE_DIR}/pqViewModuleImplementation.h.in
+- ${ParaView_CMAKE_DIR}/pqViewModuleImplementation.cxx.in
+- ${ParaView_CMAKE_DIR}/pqAutoStartImplementation.h.in
+- ${ParaView_CMAKE_DIR}/pqAutoStartImplementation.cxx.in
+- ${ParaView_CMAKE_DIR}/pqGraphLayoutStrategyImplementation.h.in
+- ${ParaView_CMAKE_DIR}/pqGraphLayoutStrategyImplementation.cxx.in
+- ${ParaView_CMAKE_DIR}/pqTreeLayoutStrategyImplementation.h.in
+- ${ParaView_CMAKE_DIR}/pqTreeLayoutStrategyImplementation.cxx.in)
++ # install all cmake files.
+ INSTALL(
+- FILES ${cmakeDevFiles}
++ # the extra "/" is essential to ensure we don't end up with an extra
++ # directory at the install location.
++ DIRECTORY "${ParaView_CMAKE_DIR}/"
+ DESTINATION ${PV_INSTALL_CMAKE_DIR}
+ COMPONENT Development)
+
+diff -x .git -ruN orig/CoProcessing/Adaptors/ParticleAdaptor/vtkParticlePipeline.cxx git_0f43430/CoProcessing/Adaptors/ParticleAdaptor/vtkParticlePipeline.cxx
+--- orig/CoProcessing/Adaptors/ParticleAdaptor/vtkParticlePipeline.cxx 2012-04-02 12:55:26.000000000 -0400
++++ git_0f43430/CoProcessing/Adaptors/ParticleAdaptor/vtkParticlePipeline.cxx 2012-04-20 23:43:06.000000000 -0400
+@@ -19,6 +19,7 @@
+ #include "vtkMultiProcessController.h"
+ #include "vtkObjectFactory.h"
+ #include "vtkOpaquePass.h"
++#include "vtkOpenGLRenderer.h"
+ #include "vtkOutlineSource.h"
+ #include "vtkPNGWriter.h"
+ #include "vtkProperty.h"
+@@ -175,7 +176,17 @@
+
+ VTK_CREATE (vtkCameraPass, cameraP);
+ cameraP->SetDelegatePass (iceTPass);
+- renderer->SetPass (cameraP);
++ vtkOpenGLRenderer *glRenderer =
++ vtkOpenGLRenderer::SafeDownCast( this->renderer );
++ if( glRenderer != NULL )
++ {
++ glRenderer->SetPass(cameraP);
++ }
++ else
++ {
++ vtkErrorMacro("Cannot cast renderer to vtkOpenGLRenderer!");
++ return;
++ }
+
+ this->syncWin->SetRenderWindow (window);
+ this->syncWin->SetParallelController (ctrl);
+diff -x .git -ruN orig/CoProcessing/CoProcessor/CMakeLists.txt git_0f43430/CoProcessing/CoProcessor/CMakeLists.txt
+--- orig/CoProcessing/CoProcessor/CMakeLists.txt 2012-04-02 12:55:26.000000000 -0400
++++ git_0f43430/CoProcessing/CoProcessor/CMakeLists.txt 2012-04-20 23:43:06.000000000 -0400
+@@ -67,6 +67,16 @@
+ target_link_libraries(vtkCoProcessor ${CoProcessor_LIBS})
+
+ IF (PARAVIEW_ENABLE_PYTHON)
++ IF(NOT APPLE)
++ FIND_LIBRARY(PYTHON_UTIL_LIBRARY
++ NAMES util
++ DOC "Utility library needed for pvpython"
++ )
++ MARK_AS_ADVANCED(PYTHON_UTIL_LIBRARY)
++ IF(PYTHON_UTIL_LIBRARY)
++ SET(PYTHON_UTIL_LIBRARY_LIB ${PYTHON_UTIL_LIBRARY})
++ ENDIF(PYTHON_UTIL_LIBRARY)
++ ENDIF(NOT APPLE)
+ # Create Python bindings for the co-processing library
+ set(BUILD_SHARED_LIBS ON CACHE BOOL "Needed for python scripting.")
+ INCLUDE(FindPythonLibs)
+@@ -88,7 +98,7 @@
+ # want to link to the python libray to resolve its symbols
+ # immediately.
+ IF(WIN32 OR APPLE)
+- TARGET_LINK_LIBRARIES (vtkCoProcessorPythonD ${PYTHON_LIBRARIES})
++ TARGET_LINK_LIBRARIES (vtkCoProcessorPythonD ${VTK_PYTHON_LIBRARIES} ${PYTHON_UTIL_LIBRARY_LIB})
+ ENDIF(WIN32 OR APPLE)
+
+ # Create a python module that can be loaded dynamically. It links to
+@@ -104,7 +114,7 @@
+ ENDIF(WIN32 AND NOT CYGWIN)
+
+ IF(WIN32 OR APPLE)
+- TARGET_LINK_LIBRARIES (vtkCoProcessorPython ${PYTHON_LIBRARIES})
++ TARGET_LINK_LIBRARIES (vtkCoProcessorPython ${VTK_PYTHON_LIBRARIES} ${PYTHON_UTIL_LIBRARY_LIB})
+ ENDIF(WIN32 OR APPLE)
+
+ SET(PYTHON_MODULE_PREFIX "")
+diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Cxx/CMakeLists.txt git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/CMakeLists.txt
+--- orig/CoProcessing/CoProcessor/Testing/Cxx/CMakeLists.txt 2012-04-02 12:56:24.000000000 -0400
++++ git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/CMakeLists.txt 2012-04-20 23:43:06.000000000 -0400
+@@ -10,15 +10,14 @@
+ ADD_EXECUTABLE(CoProcessingPythonScriptExample PythonScriptCoProcessingExample.cxx vtkPVCustomTestDriver.cxx)
+ TARGET_LINK_LIBRARIES(CoProcessingPythonScriptExample vtkCoProcessor vtkCPTestDriver)
+
+- ADD_TEST(CoProcessingTestPythonScript ${EXECUTABLE_OUTPUT_PATH}/CoProcessingPythonScriptExample ${CoProcessing_SOURCE_DIR}/CoProcessor/Testing/Cxx/PythonScriptTest.py)
+-
++ ADD_TEST(CoProcessingTestPythonScript ${EXECUTABLE_OUTPUT_PATH}/CoProcessingPythonScriptExample ${CoProcessing_SOURCE_DIR}/CoProcessor/Testing/Python/PythonScriptTest.py)
+
+ IF (VTK_MPIRUN_EXE)
+- ADD_TEST(PCoProcessingPythonScriptExample
++ ADD_TEST(PCoProcessingTestPythonScript
+ ${VTK_MPIRUN_EXE} ${VTK_MPI_PRENUMPROC_FLAGS} ${VTK_MPI_NUMPROC_FLAG} ${VTK_MPI_MAX_NUMPROCS}
+ ${VTK_MPI_PREFLAGS}
+ ${EXECUTABLE_OUTPUT_PATH}/CoProcessingPythonScriptExample
+- ${CoProcessing_SOURCE_DIR}/CoProcessor/Testing/Cxx/PythonScriptTest2.py
++ ${CoProcessing_SOURCE_DIR}/CoProcessor/Testing/Python/PythonScriptTest2.py
+ ${VTK_MPI_POSTFLAGS}
+ )
+ ENDIF (VTK_MPIRUN_EXE)
+@@ -26,30 +25,126 @@
+
+ ENDIF (PARAVIEW_ENABLE_PYTHON)
+
+- # below is for doing image comparisons
+- # they are not done directly in the above python script due to the fact
+- # that they would make the python script rather ugly
+-IF (PARAVIEW_DATA_ROOT)
+- ADD_EXECUTABLE(CoProcessingCompareImagesTester CompareImages.cxx)
+- TARGET_LINK_LIBRARIES(CoProcessingCompareImagesTester vtkCommon vtkIO vtkRendering)
++# below is for doing image comparisons
++# they are not done directly in the above python script due to the fact
++# that they would make the python script rather ugly
++ADD_EXECUTABLE(CoProcessingCompareImagesTester CompareImages.cxx)
++TARGET_LINK_LIBRARIES(CoProcessingCompareImagesTester vtkCommon vtkIO vtkRendering)
+
++IF (PARAVIEW_DATA_ROOT)
+ IF (PARAVIEW_ENABLE_PYTHON)
+ ADD_TEST(CoProcessingPythonScriptGridPlot
+- ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/CPGrid0.png 20 -V ${PARAVIEW_DATA_ROOT}/Baseline/CPGrid0.png -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx)
++ ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester
++ ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/CPGrid0.png 20 -V
++ ${PARAVIEW_DATA_ROOT}/Baseline/CPGrid0.png
++ -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx )
+
+ ADD_TEST(CoProcessingPythonScriptPressurePlot
+- ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/CPPressure0.png 20 -V ${PARAVIEW_DATA_ROOT}/Baseline/CPPressure0.png -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx)
++ ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester
++ ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/CPPressure0.png 20
++ -V ${PARAVIEW_DATA_ROOT}/Baseline/CPPressure0.png
++ -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx)
+
+ SET_TESTS_PROPERTIES(CoProcessingTestPythonScript CoProcessingPythonScriptGridPlot
+ CoProcessingPythonScriptPressurePlot PROPERTIES RUN_SERIAL ON)
+ IF (VTK_MPIRUN_EXE)
+ ADD_TEST(PCoProcessingPythonScriptGridPlot
+- ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/PCPGrid0.png 20 -V ${PARAVIEW_DATA_ROOT}/Baseline/CPGrid0.png -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx)
++ ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester
++ ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/PCPGrid0.png 20
++ -V ${PARAVIEW_DATA_ROOT}/Baseline/CPGrid0.png
++ -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx)
+
+ ADD_TEST(PCoProcessingPythonScriptPressurePlot
+- ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/PCPPressure0.png 20 -V ${PARAVIEW_DATA_ROOT}/Baseline/CPPressure0.png -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx)
++ ${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester
++ ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/PCPPressure0.png 20
++ -V ${PARAVIEW_DATA_ROOT}/Baseline/CPPressure0.png
++ -T ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx)
++ SET_TESTS_PROPERTIES(PCoProcessingTestPythonScript PCoProcessingPythonScriptGridPlot
++ PCoProcessingPythonScriptPressurePlot PROPERTIES RUN_SERIAL ON)
+ ENDIF (VTK_MPIRUN_EXE)
+
++ # here is the full workflow for coprocessing where we generate
++ # a script, run simulation driver code, and then check the output
++ IF (PARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator)
++ set(REAL_EXECUTABLE_PATH ${EXECUTABLE_OUTPUT_PATH})
++ set(PARAVIEW_EXECUTABLE_PATH ${EXECUTABLE_OUTPUT_PATH})
++ if(Q_WS_MAC)
++ set(REAL_EXECUTABLE_PATH ${EXECUTABLE_OUTPUT_PATH}/${PROJECT_NAME}.app/Contents/MacOS)
++ set(PARAVIEW_EXECUTABLE_PATH ${EXECUTABLE_OUTPUT_PATH}/paraview.app/Contents/MacOS)
++ set(MAC_TEST_NAME "-Mac")
++ endif(Q_WS_MAC)
++
++ file(WRITE
++"${CoProcessing_BINARY_DIR}/CoProcessingFullWorkflowTest.cmake"
++"set(fullexe \"${PARAVIEW_EXECUTABLE_PATH}/paraview\")
++if(NOT EXISTS \${fullexe})
++ set(fullexe \"${PARAVIEW_EXECUTABLE_PATH}/\${cfg}/paraview.exe\")
++endif()
++FILE(REMOVE \"${CMAKE_BINARY_DIR}/Testing/Temporary/cptest.py ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/image_0.png ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/filename_0.pvtp ${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/filename_0_0.vtp\" )
++
++set(ARGS \"-dr;--test-directory=${CMAKE_BINARY_DIR}/Testing/Temporary;--test-script=${CMAKE_SOURCE_DIR}/Plugins/CoProcessingScriptGenerator/Testing/CoProcessingGUI${MAC_TEST_NAME}.xml;--exit\")
++execute_process(COMMAND \${fullexe} \${ARGS} RESULT_VARIABLE rv)
++if(NOT rv EQUAL 0)
++ message(FATAL_ERROR \"ParaView return value was \${rv}\")
++endif()
++
++set(fullexe \"${REAL_EXECUTABLE_PATH}/pvpython\")
++if(NOT EXISTS \${fullexe})
++ set(fullexe \"${REAL_EXECUTABLE_PATH}/\${cfg}/pvpython.exe\")
++endif()
++if(NOT EXISTS \${fullexe})
++ set(fullexe \"${EXECUTABLE_OUTPUT_PATH}/pvpython\")
++endif()
++if(NOT EXISTS \${fullexe})
++ message(FATAL_ERROR \"'\${fullexe}' does not exist\")
++endif()
++
++set(ARGS \"${CoProcessing_SOURCE_DIR}/CoProcessor/Testing/Python/waveletdriver.py;${CMAKE_BINARY_DIR}/Testing/Temporary/cptest.py;1\")
++execute_process(COMMAND \${fullexe} \${ARGS} RESULT_VARIABLE failed)
++if(failed)
++ message(FATAL_ERROR \"pvpython return value was = '\${failed}' \")
++endif()
++
++set(fullexe \"${REAL_EXECUTABLE_PATH}/CoProcessingCompareImagesTester\")
++if(NOT EXISTS \${fullexe})
++ set(fullexe \"${REAL_EXECUTABLE_PATH}/\${cfg}/CoProcessingCompareImagesTester.exe\")
++endif()
++if(NOT EXISTS \${fullexe})
++ set(fullexe \"${EXECUTABLE_OUTPUT_PATH}/CoProcessingCompareImagesTester\")
++endif()
++if(NOT EXISTS \${fullexe})
++ message(FATAL_ERROR \"'\${fullexe}' does not exist\")
++endif()
++
++set(ARGS \"${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/image_0.png;20;-V;${PARAVIEW_DATA_ROOT}/Baseline/CPFullWorkflow.png;-T;${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx\")
++execute_process(COMMAND \${fullexe} \${ARGS} RESULT_VARIABLE failed)
++if(failed)
++ message(FATAL_ERROR \"CoProcessingCompareImageTester return value was = '\${failed}' \")
++endif()
++
++set(fullexe \"${REAL_EXECUTABLE_PATH}/vtkpython\")
++if(NOT EXISTS \${fullexe})
++ set(fullexe \"${REAL_EXECUTABLE_PATH}/\${cfg}/vtkpython.exe\")
++endif()
++if(NOT EXISTS \${fullexe})
++ set(fullexe \"${EXECUTABLE_OUTPUT_PATH}/vtkpython\")
++endif()
++if(NOT EXISTS \${fullexe})
++ message(FATAL_ERROR \"'\${fullexe}' does not exist\")
++endif()
++
++set(ARGS \"${CoProcessing_SOURCE_DIR}/CoProcessor/Testing/Python/outputcheck.py;${CoProcessing_BINARY_DIR}/CoProcessor/Testing/Cxx/filename_0.pvtp\")
++execute_process(COMMAND \${fullexe} \${ARGS} RESULT_VARIABLE failed)
++if(failed)
++ message(FATAL_ERROR \"vtkpython return value was = '\${failed}' \")
++endif()
++" )
++
++ add_test(NAME CoProcessingFullWorkflow COMMAND ${CMAKE_COMMAND}
++ -Dcfg=$ -P "${CoProcessing_BINARY_DIR}/CoProcessingFullWorkflowTest.cmake")
++ SET_TESTS_PROPERTIES(CoProcessingFullWorkflow PROPERTIES RUN_SERIAL ON)
++ ENDIF (PARAVIEW_BUILD_PLUGIN_CoProcessingScriptGenerator)
++
+ ENDIF (PARAVIEW_ENABLE_PYTHON)
+
+ ENDIF (PARAVIEW_DATA_ROOT)
+diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Cxx/CompareImages.cxx git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/CompareImages.cxx
+--- orig/CoProcessing/CoProcessor/Testing/Cxx/CompareImages.cxx 2012-04-02 12:56:24.000000000 -0400
++++ git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/CompareImages.cxx 2012-04-20 23:43:06.000000000 -0400
+@@ -63,7 +63,7 @@
+
+ double threshold = atof(argv[2]);
+
+- if(!testing->RegressionTest(vtkImageData::SafeDownCast(reader->GetOutput()), threshold))
++ if(!testing->RegressionTest(reader, threshold))
+ {
+ return 1;
+ }
+diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest.py git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest.py
+--- orig/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest.py 2012-04-02 12:56:24.000000000 -0400
++++ git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest.py 1969-12-31 19:00:00.000000000 -0500
+@@ -1,94 +0,0 @@
+-def DoCoProcessing(datadescription):
+- timestep = datadescription.GetTimeStep()
+-
+- grid = datadescription.GetInputDescriptionByName("input").GetGrid()
+- pressure = grid.GetPointData().GetArray('Pressure')
+-
+- grid.GetPointData().SetScalars(pressure)
+- obj.SetOutput(grid)
+-
+- # get global range of Pressure
+- di = trivialproducer.GetDataInformation(0)
+- trivialproducer.UpdatePipeline()
+- di.Update()
+- pdi = di.GetPointDataInformation()
+- ai = pdi.GetArrayInformation('Pressure')
+- pressurerange = ai.GetComponentRange(0)
+-
+- contour.Isosurfaces = .5*(pressurerange[0]+pressurerange[1])
+-
+- # now output the results to the screen as well as taking
+- # a screen shot of the view
+- #setup a window
+- rep = Show(contour)
+- ren = Render()
+-
+- #set the background color
+- ren.Background=[1,1,1] #white
+-
+- #set image size
+- ren.ViewSize = [200, 300] #[width, height]
+-
+- #set representation
+- rep.Representation="Surface"
+-
+- #save screenshot
+- gridimagefilename = 'CPGrid'+str(timestep) + '.png'
+- WriteImage(gridimagefilename)
+-
+- rep = Show(trivialproducer)
+- rep.LookupTable = MakeBlueToRedLT(pressurerange[0], pressurerange[1])
+- rep.ColorArrayName = 'Pressure'
+- rep.ColorAttributeType = 'POINT_DATA'
+- #set representation
+- rep.Representation="Surface"
+- rep = Show(contour)
+- #set the background color
+- ren = Render()
+- ren.Background=[1,1,1] #white
+-
+- pressureimagefilename = 'CPPressure'+str(timestep) + '.png'
+- WriteImage(pressureimagefilename)
+-
+- # explicitly delete the proxies -- may have to do this multiple times
+- tobedeleted = GetNextProxyToDelete()
+- while tobedeleted != None:
+- Delete(tobedeleted)
+- tobedeleted = GetNextProxyToDelete()
+-
+-def GetNextProxyToDelete():
+- iter = servermanager.vtkSMProxyIterator()
+- iter.SetSession(servermanager.ActiveConnection.Session)
+- iter.Begin()
+- while not iter.IsAtEnd():
+- if iter.GetGroup().find("prototypes") != -1:
+- iter.Next()
+- continue
+- proxy = servermanager._getPyProxy(iter.GetProxy())
+- proxygroup = iter.GetGroup()
+- iter.Next()
+- if proxygroup != 'timekeeper' and proxy != None and proxygroup.find("pq_helper_proxies") == -1 :
+- return proxy
+-
+- return None
+-
+-def RequestDataDescription(datadescription):
+- time = datadescription.GetTime()
+- timestep = datadescription.GetTimeStep()
+- if timestep % 20 == 0:
+- # add in some fields
+- #print 'added Pressure and wanting to do coprocessing'
+- datadescription.GetInputDescriptionByName("input").AddPointField("Pressure")
+- datadescription.GetInputDescriptionByName('input').GenerateMeshOn()
+- return
+-
+-# the code below is needed to import objects from paraview.simple
+-# plus the definition of vtkTrivialProducer into this python script.
+-try: paraview.simple
+-except: from paraview.simple import *
+-
+-trivialproducer = TrivialProducer()
+-contour = Contour(Input=trivialproducer)
+-obj = trivialproducer.GetClientSideObject()
+-
+-
+diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest2.py git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest2.py
+--- orig/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest2.py 2012-04-02 12:56:24.000000000 -0400
++++ git_0f43430/CoProcessing/CoProcessor/Testing/Cxx/PythonScriptTest2.py 1969-12-31 19:00:00.000000000 -0500
+@@ -1,92 +0,0 @@
+-def DoCoProcessing(datadescription):
+- timestep = datadescription.GetTimeStep()
+-
+- grid = datadescription.GetInputDescriptionByName("input").GetGrid()
+- pressure = grid.GetPointData().GetArray('Pressure')
+-
+- grid.GetPointData().SetScalars(pressure)
+- obj.SetOutput(grid)
+-
+- # get global range of Pressure
+- di = trivialproducer.GetDataInformation(0)
+- trivialproducer.UpdatePipeline()
+- di.Update()
+- pdi = di.GetPointDataInformation()
+- ai = pdi.GetArrayInformation('Pressure')
+- pressurerange = ai.GetComponentRange(0)
+-
+- contour.Isosurfaces = .5*(pressurerange[0]+pressurerange[1])
+-
+- # now output the results to the screen as well as taking
+- # a screen shot of the view
+- #setup a window
+- rep = Show(contour)
+- ren = Render()
+-
+- #set the background color
+- ren.Background=[1,1,1] #white
+-
+- #set image size
+- ren.ViewSize = [200, 300] #[width, height]
+-
+- #set representation
+- rep.Representation="Surface"
+-
+- #save screenshot
+- gridimagefilename = 'PCPGrid'+str(timestep) + '.png'
+- WriteImage(gridimagefilename)
+-
+- rep = Show(trivialproducer)
+- rep.LookupTable = MakeBlueToRedLT(pressurerange[0], pressurerange[1])
+- rep.ColorArrayName = 'Pressure'
+- rep.ColorAttributeType = 'POINT_DATA'
+- #set representation
+- rep.Representation="Surface"
+- rep = Show(contour)
+- #set the background color
+- ren = Render()
+- ren.Background=[1,1,1] #white
+-
+- pressureimagefilename = 'PCPPressure'+str(timestep) + '.png'
+- WriteImage(pressureimagefilename)
+-
+- # explicitly delete the proxies -- may have to do this multiple times
+- tobedeleted = GetNextProxyToDelete()
+- while tobedeleted != None:
+- Delete(tobedeleted)
+- tobedeleted = GetNextProxyToDelete()
+-
+-def GetNextProxyToDelete():
+- iter = servermanager.vtkSMProxyIterator()
+- iter.SetSession(servermanager.ActiveConnection.Session)
+- iter.Begin()
+- while not iter.IsAtEnd():
+- if iter.GetGroup().find("prototypes") != -1:
+- iter.Next()
+- continue
+- proxy = servermanager._getPyProxy(iter.GetProxy())
+- proxygroup = iter.GetGroup()
+- iter.Next()
+- if proxygroup != 'timekeeper' and proxy != None and proxygroup.find("pq_helper_proxies") == -1 :
+- return proxy
+-
+- return None
+-
+-def RequestDataDescription(datadescription):
+- time = datadescription.GetTime()
+- timestep = datadescription.GetTimeStep()
+- if timestep % 20 == 0:
+- # add in some fields
+- #print 'added Pressure and wanting to do coprocessing'
+- datadescription.GetInputDescriptionByName("input").AddPointField("Pressure")
+- datadescription.GetInputDescriptionByName('input').GenerateMeshOn()
+- return
+-
+-# the code below is needed to import objects from paraview.simple
+-# plus the definition of vtkTrivialProducer into this python script.
+-try: paraview.simple
+-except: from paraview.simple import *
+-
+-trivialproducer = TrivialProducer()
+-contour = Contour(Input=trivialproducer)
+-obj = trivialproducer.GetClientSideObject()
+diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest.py git_0f43430/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest.py
+--- orig/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest.py 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest.py 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,92 @@
++def DoCoProcessing(datadescription):
++ timestep = datadescription.GetTimeStep()
++
++ grid = datadescription.GetInputDescriptionByName("input").GetGrid()
++ pressure = grid.GetPointData().GetArray('Pressure')
++
++ grid.GetPointData().SetScalars(pressure)
++ obj.SetOutput(grid)
++
++ # get global range of Pressure
++ di = trivialproducer.GetDataInformation(0)
++ trivialproducer.UpdatePipeline()
++ di.Update()
++ pdi = di.GetPointDataInformation()
++ ai = pdi.GetArrayInformation('Pressure')
++ pressurerange = ai.GetComponentRange(0)
++
++ contour.Isosurfaces = .5*(pressurerange[0]+pressurerange[1])
++
++ # now output the results to the screen as well as taking
++ # a screen shot of the view
++ #setup a window
++ rep = Show(contour)
++ ren = Render()
++
++ #set the background color
++ ren.Background=[1,1,1] #white
++
++ #set image size
++ ren.ViewSize = [200, 300] #[width, height]
++
++ #set representation
++ rep.Representation="Surface"
++
++ #save screenshot
++ gridimagefilename = 'CPGrid'+str(timestep) + '.png'
++ WriteImage(gridimagefilename)
++
++ rep = Show(trivialproducer)
++ rep.LookupTable = MakeBlueToRedLT(pressurerange[0], pressurerange[1])
++ rep.ColorArrayName = 'Pressure'
++ rep.ColorAttributeType = 'POINT_DATA'
++ #set representation
++ rep.Representation="Surface"
++ rep = Show(contour)
++ #set the background color
++ ren = Render()
++ ren.Background=[1,1,1] #white
++
++ pressureimagefilename = 'CPPressure'+str(timestep) + '.png'
++ WriteImage(pressureimagefilename)
++
++ # explicitly delete the proxies -- may have to do this multiple times
++ tobedeleted = GetNextProxyToDelete()
++ while tobedeleted != None:
++ Delete(tobedeleted)
++ tobedeleted = GetNextProxyToDelete()
++
++def GetNextProxyToDelete():
++ iter = servermanager.vtkSMProxyIterator()
++ iter.SetSession(servermanager.ActiveConnection.Session)
++ iter.Begin()
++ while not iter.IsAtEnd():
++ if iter.GetGroup().find("prototypes") != -1:
++ iter.Next()
++ continue
++ proxy = servermanager._getPyProxy(iter.GetProxy())
++ proxygroup = iter.GetGroup()
++ iter.Next()
++ if proxygroup != 'timekeeper' and proxy != None and proxygroup.find("pq_helper_proxies") == -1 :
++ return proxy
++
++ return None
++
++def RequestDataDescription(datadescription):
++ time = datadescription.GetTime()
++ timestep = datadescription.GetTimeStep()
++ if timestep % 20 == 0:
++ # add in some fields
++ #print 'added Pressure and wanting to do coprocessing'
++ datadescription.GetInputDescriptionByName("input").AddPointField("Pressure")
++ datadescription.GetInputDescriptionByName('input').GenerateMeshOn()
++ return
++
++# the code below is needed to import objects from paraview.simple
++# plus the definition of vtkTrivialProducer into this python script.
++try: paraview.simple
++except: from paraview.simple import *
++
++trivialproducer = TrivialProducer()
++contour = Contour(Input=trivialproducer)
++obj = trivialproducer.GetClientSideObject()
+diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest2.py git_0f43430/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest2.py
+--- orig/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest2.py 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/CoProcessing/CoProcessor/Testing/Python/PythonScriptTest2.py 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,92 @@
++def DoCoProcessing(datadescription):
++ timestep = datadescription.GetTimeStep()
++
++ grid = datadescription.GetInputDescriptionByName("input").GetGrid()
++ pressure = grid.GetPointData().GetArray('Pressure')
++
++ grid.GetPointData().SetScalars(pressure)
++ obj.SetOutput(grid)
++
++ # get global range of Pressure
++ di = trivialproducer.GetDataInformation(0)
++ trivialproducer.UpdatePipeline()
++ di.Update()
++ pdi = di.GetPointDataInformation()
++ ai = pdi.GetArrayInformation('Pressure')
++ pressurerange = ai.GetComponentRange(0)
++
++ contour.Isosurfaces = .5*(pressurerange[0]+pressurerange[1])
++
++ # now output the results to the screen as well as taking
++ # a screen shot of the view
++ #setup a window
++ rep = Show(contour)
++ ren = Render()
++
++ #set the background color
++ ren.Background=[1,1,1] #white
++
++ #set image size
++ ren.ViewSize = [200, 300] #[width, height]
++
++ #set representation
++ rep.Representation="Surface"
++
++ #save screenshot
++ gridimagefilename = 'PCPGrid'+str(timestep) + '.png'
++ WriteImage(gridimagefilename)
++
++ rep = Show(trivialproducer)
++ rep.LookupTable = MakeBlueToRedLT(pressurerange[0], pressurerange[1])
++ rep.ColorArrayName = 'Pressure'
++ rep.ColorAttributeType = 'POINT_DATA'
++ #set representation
++ rep.Representation="Surface"
++ rep = Show(contour)
++ #set the background color
++ ren = Render()
++ ren.Background=[1,1,1] #white
++
++ pressureimagefilename = 'PCPPressure'+str(timestep) + '.png'
++ WriteImage(pressureimagefilename)
++
++ # explicitly delete the proxies -- may have to do this multiple times
++ tobedeleted = GetNextProxyToDelete()
++ while tobedeleted != None:
++ Delete(tobedeleted)
++ tobedeleted = GetNextProxyToDelete()
++
++def GetNextProxyToDelete():
++ iter = servermanager.vtkSMProxyIterator()
++ iter.SetSession(servermanager.ActiveConnection.Session)
++ iter.Begin()
++ while not iter.IsAtEnd():
++ if iter.GetGroup().find("prototypes") != -1:
++ iter.Next()
++ continue
++ proxy = servermanager._getPyProxy(iter.GetProxy())
++ proxygroup = iter.GetGroup()
++ iter.Next()
++ if proxygroup != 'timekeeper' and proxy != None and proxygroup.find("pq_helper_proxies") == -1 :
++ return proxy
++
++ return None
++
++def RequestDataDescription(datadescription):
++ time = datadescription.GetTime()
++ timestep = datadescription.GetTimeStep()
++ if timestep % 20 == 0:
++ # add in some fields
++ #print 'added Pressure and wanting to do coprocessing'
++ datadescription.GetInputDescriptionByName("input").AddPointField("Pressure")
++ datadescription.GetInputDescriptionByName('input').GenerateMeshOn()
++ return
++
++# the code below is needed to import objects from paraview.simple
++# plus the definition of vtkTrivialProducer into this python script.
++try: paraview.simple
++except: from paraview.simple import *
++
++trivialproducer = TrivialProducer()
++contour = Contour(Input=trivialproducer)
++obj = trivialproducer.GetClientSideObject()
+diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Python/outputcheck.py git_0f43430/CoProcessing/CoProcessor/Testing/Python/outputcheck.py
+--- orig/CoProcessing/CoProcessor/Testing/Python/outputcheck.py 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/CoProcessing/CoProcessor/Testing/Python/outputcheck.py 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,18 @@
++import sys
++if len(sys.argv) != 2:
++ print "command is 'python '"
++ sys.exit(1)
++
++import vtk
++
++r = vtk.vtkXMLPPolyDataReader()
++r.SetFileName(sys.argv[1])
++r.Update()
++
++g = r.GetOutput()
++
++if g.GetNumberOfPoints() != 441 or g.GetNumberOfCells() != 800:
++ print 'Output grid is incorrect. The number of points is', g.GetNumberOfPoints(), \
++ 'but should be 441 and the number of cells is', g.GetNumberOfCells(), \
++ 'but should be 800.'
++ sys.exit(1)
+diff -x .git -ruN orig/CoProcessing/CoProcessor/Testing/Python/waveletdriver.py git_0f43430/CoProcessing/CoProcessor/Testing/Python/waveletdriver.py
+--- orig/CoProcessing/CoProcessor/Testing/Python/waveletdriver.py 1969-12-31 19:00:00.000000000 -0500
++++ git_0f43430/CoProcessing/CoProcessor/Testing/Python/waveletdriver.py 2012-04-20 23:43:06.000000000 -0400
+@@ -0,0 +1,71 @@
++import sys
++if len(sys.argv) != 3:
++ print "command is 'python