diff --git a/applications/test/findCell-octree/Test-findCell-octree.C b/applications/test/findCell-octree/Test-findCell-octree.C
index e8b475d177ca7f84f53b66f511609f0f6c44396b..1bac7302a02ecee1bf0e68c98d9777b2abc47d3c 100644
--- a/applications/test/findCell-octree/Test-findCell-octree.C
+++ b/applications/test/findCell-octree/Test-findCell-octree.C
@@ -44,13 +44,11 @@ int main(int argc, char *argv[])
     #include "createTime.H"
     #include "createMesh.H"
 
-    //label nReps = 100000;
     label nReps = 10000;
 
     const point sample = args.argRead<point>(1);
 
-    //const polyMesh::cellRepresentation decompMode = polyMesh::FACEPLANES;
-    const polyMesh::cellRepresentation decompMode = polyMesh::FACEDIAGTETS;
+    const polyMesh::cellDecomposition decompMode = polyMesh::CELL_TETS;
 
     treeBoundBox meshBb(mesh.bounds());
 
diff --git a/applications/utilities/mesh/advanced/autoRefineMesh/autoRefineMesh.C b/applications/utilities/mesh/advanced/autoRefineMesh/autoRefineMesh.C
index 134d112b39e7ea1890bcb5c69f867570b949182e..8daf4edc443444d7859c225f8af293304afe40ad 100644
--- a/applications/utilities/mesh/advanced/autoRefineMesh/autoRefineMesh.C
+++ b/applications/utilities/mesh/advanced/autoRefineMesh/autoRefineMesh.C
@@ -719,7 +719,7 @@ int main(int argc, char *argv[])
     triSurfaceSearch querySurf(surf);
 
     // Search engine on mesh. No face decomposition since mesh unwarped.
-    meshSearch queryMesh(mesh, polyMesh::FACEPLANES);
+    meshSearch queryMesh(mesh, polyMesh::FACE_PLANES);
 
     // Check all 'outside' points
     forAll(outsidePts, outsideI)
diff --git a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshTemplates.C b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshTemplates.C
index 684cc819be8984b25d17a608b4fab92b8c9b17bf..662b27c9142999a90d55ef568965d4706a51a2fc 100644
--- a/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshTemplates.C
+++ b/applications/utilities/mesh/generation/foamyMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMeshTemplates.C
@@ -81,7 +81,7 @@ bool Foam::conformalVoronoiMesh::distributeBackground(const Triangulation& mesh)
             zeroGradientFvPatchScalarField::typeName
         );
 
-        meshSearch cellSearch(bMesh, polyMesh::FACEPLANES);
+        meshSearch cellSearch(bMesh, polyMesh::FACE_PLANES);
 
         labelList cellVertices(bMesh.nCells(), label(0));
 
diff --git a/applications/utilities/preProcessing/mapFields/mapLagrangian.C b/applications/utilities/preProcessing/mapFields/mapLagrangian.C
index 23307ad9a635412df1a2da74738c084223eb3c2f..d2ed7da591a3a3621b158136433c22148aeca02f 100644
--- a/applications/utilities/preProcessing/mapFields/mapLagrangian.C
+++ b/applications/utilities/preProcessing/mapFields/mapLagrangian.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -59,7 +59,7 @@ static label findCell(const Cloud<passiveParticle>& cloud, const point& pt)
         meshSearch meshSearcher
         (
             mesh,
-            polyMesh::FACEPLANES    // no decomposition needed
+            polyMesh::FACE_PLANES    // no decomposition needed
         );
 
         label faceI = meshSearcher.findNearestBoundaryFace(pt);
diff --git a/src/OpenFOAM/algorithms/indexedOctree/treeDataCell.C b/src/OpenFOAM/algorithms/indexedOctree/treeDataCell.C
index 2ab17d0de855e57bbb6def51fefbc446da6fa3ce..b056c909d41dfd075b8c29103893f99c6157d174 100644
--- a/src/OpenFOAM/algorithms/indexedOctree/treeDataCell.C
+++ b/src/OpenFOAM/algorithms/indexedOctree/treeDataCell.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -88,7 +88,7 @@ Foam::treeDataCell::treeDataCell
     const bool cacheBb,
     const polyMesh& mesh,
     const labelUList& cellLabels,
-    const polyMesh::cellRepresentation decompMode
+    const polyMesh::cellDecomposition decompMode
 )
 :
     mesh_(mesh),
@@ -105,7 +105,7 @@ Foam::treeDataCell::treeDataCell
     const bool cacheBb,
     const polyMesh& mesh,
     const Xfer<labelList>& cellLabels,
-    const polyMesh::cellRepresentation decompMode
+    const polyMesh::cellDecomposition decompMode
 )
 :
     mesh_(mesh),
@@ -121,7 +121,7 @@ Foam::treeDataCell::treeDataCell
 (
     const bool cacheBb,
     const polyMesh& mesh,
-    const polyMesh::cellRepresentation decompMode
+    const polyMesh::cellDecomposition decompMode
 )
 :
     mesh_(mesh),
diff --git a/src/OpenFOAM/algorithms/indexedOctree/treeDataCell.H b/src/OpenFOAM/algorithms/indexedOctree/treeDataCell.H
index deb5d25868d8062c2fff62268feadddd5283ffb7..8c85d769993b46cf7d44cda121b3cdef8145c9d6 100644
--- a/src/OpenFOAM/algorithms/indexedOctree/treeDataCell.H
+++ b/src/OpenFOAM/algorithms/indexedOctree/treeDataCell.H
@@ -65,7 +65,7 @@ class treeDataCell
         const bool cacheBb_;
 
         //- How to decide if point is inside cell
-        const polyMesh::cellRepresentation decompMode_;
+        const polyMesh::cellDecomposition decompMode_;
 
         //- Cell bounding boxes (valid only if cacheBb_)
         treeBoundBoxList bbs_;
@@ -143,7 +143,7 @@ public:
             const bool cacheBb,
             const polyMesh&,
             const labelUList&,
-            const polyMesh::cellRepresentation decompMode
+            const polyMesh::cellDecomposition decompMode
         );
 
         //- Construct from mesh and subset of cells, transferring contents
@@ -152,7 +152,7 @@ public:
             const bool cacheBb,
             const polyMesh&,
             const Xfer<labelList>&,
-            const polyMesh::cellRepresentation decompMode
+            const polyMesh::cellDecomposition decompMode
         );
 
         //- Construct from mesh. Uses all cells in mesh.
@@ -160,7 +160,7 @@ public:
         (
             const bool cacheBb,
             const polyMesh&,
-            const polyMesh::cellRepresentation decompMode
+            const polyMesh::cellDecomposition decompMode
         );
 
 
@@ -178,7 +178,7 @@ public:
                 return mesh_;
             }
 
-            inline polyMesh::cellRepresentation decompMode() const
+            inline polyMesh::cellDecomposition decompMode() const
             {
                 return decompMode_;
             }
diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.C b/src/OpenFOAM/meshes/polyMesh/polyMesh.C
index 981dc086a396b809c6503a858f975b61d79dcdc2..66365f9fec94f63c047e50048ca2869fb452f580 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyMesh.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -452,9 +452,9 @@ Foam::polyMesh::polyMesh
     oldPointsPtr_(NULL)
 {
     // Check if the faces and cells are valid
-    forAll(faces_, faceI)
+    forAll(faces_, facei)
     {
-        const face& curFace = faces_[faceI];
+        const face& curFace = faces_[facei];
 
         if (min(curFace) < 0 || max(curFace) > points_.size())
         {
@@ -467,7 +467,7 @@ Foam::polyMesh::polyMesh
                 "    const faceList& faces,\n"
                 "    const cellList& cells\n"
                 ")\n"
-            )   << "Face " << faceI << "contains vertex labels out of range: "
+            )   << "Face " << facei << "contains vertex labels out of range: "
                 << curFace << " Max point index = " << points_.size()
                 << abort(FatalError);
         }
@@ -611,9 +611,9 @@ Foam::polyMesh::polyMesh
     oldPointsPtr_(NULL)
 {
     // Check if faces are valid
-    forAll(faces_, faceI)
+    forAll(faces_, facei)
     {
-        const face& curFace = faces_[faceI];
+        const face& curFace = faces_[facei];
 
         if (min(curFace) < 0 || max(curFace) > points_.size())
         {
@@ -626,7 +626,7 @@ Foam::polyMesh::polyMesh
                 "    const Xfer<faceList>&,\n"
                 "    const Xfer<cellList>&\n"
                 ")\n"
-            )   << "Face " << faceI << "contains vertex labels out of range: "
+            )   << "Face " << facei << "contains vertex labels out of range: "
                 << curFace << " Max point index = " << points_.size()
                 << abort(FatalError);
         }
@@ -636,9 +636,9 @@ Foam::polyMesh::polyMesh
     cellList cLst(cells);
 
     // Check if cells are valid
-    forAll(cLst, cellI)
+    forAll(cLst, celli)
     {
-        const cell& curCell = cLst[cellI];
+        const cell& curCell = cLst[celli];
 
         if (min(curCell) < 0 || max(curCell) > faces_.size())
         {
@@ -651,7 +651,7 @@ Foam::polyMesh::polyMesh
                 "    const Xfer<faceList>&,\n"
                 "    const Xfer<cellList>&\n"
                 ")\n"
-            )   << "Cell " << cellI << "contains face labels out of range: "
+            )   << "Cell " << celli << "contains face labels out of range: "
                 << curCell << " Max face index = " << faces_.size()
                 << abort(FatalError);
         }
@@ -718,9 +718,9 @@ void Foam::polyMesh::resetPrimitives
     setInstance(time().timeName());
 
     // Check if the faces and cells are valid
-    forAll(faces_, faceI)
+    forAll(faces_, facei)
     {
-        const face& curFace = faces_[faceI];
+        const face& curFace = faces_[facei];
 
         if (min(curFace) < 0 || max(curFace) > points_.size())
         {
@@ -736,7 +736,7 @@ void Foam::polyMesh::resetPrimitives
                 "    const labelList& patchStarts\n"
                 "    const bool validBoundary\n"
                 ")\n"
-            )   << "Face " << faceI << " contains vertex labels out of range: "
+            )   << "Face " << facei << " contains vertex labels out of range: "
                 << curFace << " Max point index = " << points_.size()
                 << abort(FatalError);
         }
@@ -905,9 +905,9 @@ Foam::polyMesh::cellTree() const
             (
                 treeDataCell
                 (
-                    false,          // not cache bb
+                    false,      // not cache bb
                     *this,
-                    FACEDIAGTETS    // use tetDecomposition for any inside test
+                    CELL_TETS   // use tet-decomposition for any inside test
                 ),
                 overallBb,
                 8,              // maxLevel
@@ -1259,34 +1259,33 @@ void Foam::polyMesh::removeFiles() const
 
 void Foam::polyMesh::findCellFacePt
 (
-    const point& pt,
-    label& cellI,
-    label& tetFaceI,
-    label& tetPtI
+    const point& p,
+    label& celli,
+    label& tetFacei,
+    label& tetPti
 ) const
 {
-    cellI = -1;
-    tetFaceI = -1;
-    tetPtI = -1;
+    celli = -1;
+    tetFacei = -1;
+    tetPti = -1;
 
     const indexedOctree<treeDataCell>& tree = cellTree();
 
     // Find nearest cell to the point
-
-    pointIndexHit info = tree.findNearest(pt, sqr(GREAT));
+    pointIndexHit info = tree.findNearest(p, sqr(GREAT));
 
     if (info.hit())
     {
         label nearestCellI = tree.shapes().cellLabels()[info.index()];
 
         // Check the nearest cell to see if the point is inside.
-        findTetFacePt(nearestCellI, pt, tetFaceI, tetPtI);
+        findTetFacePt(nearestCellI, p, tetFacei, tetPti);
 
-        if (tetFaceI != -1)
+        if (tetFacei != -1)
         {
             // Point was in the nearest cell
 
-            cellI = nearestCellI;
+            celli = nearestCellI;
 
             return;
         }
@@ -1294,7 +1293,7 @@ void Foam::polyMesh::findCellFacePt
         {
             // Check the other possible cells that the point may be in
 
-            labelList testCells = tree.findIndices(pt);
+            labelList testCells = tree.findIndices(p);
 
             forAll(testCells, pCI)
             {
@@ -1308,13 +1307,13 @@ void Foam::polyMesh::findCellFacePt
                 }
 
                 // Check the test cell to see if the point is inside.
-                findTetFacePt(testCellI, pt, tetFaceI, tetPtI);
+                findTetFacePt(testCellI, p, tetFacei, tetPti);
 
-                if (tetFaceI != -1)
+                if (tetFacei != -1)
                 {
                     // Point was in the test cell
 
-                    cellI = testCellI;
+                    celli = testCellI;
 
                     return;
                 }
@@ -1327,10 +1326,10 @@ void Foam::polyMesh::findCellFacePt
         (
             "void Foam::polyMesh::findCellFacePt"
             "("
-                "const point&, "
-                "label&, "
-                "label&, "
-                "label&"
+                "const point& p, "
+                "label& celli, "
+                "label& tetFacei, "
+                "label& tetPti"
             ") const"
         )   << "Did not find nearest cell in search tree."
             << abort(FatalError);
@@ -1340,47 +1339,47 @@ void Foam::polyMesh::findCellFacePt
 
 void Foam::polyMesh::findTetFacePt
 (
-    const label cellI,
-    const point& pt,
-    label& tetFaceI,
-    label& tetPtI
+    const label celli,
+    const point& p,
+    label& tetFacei,
+    label& tetPti
 ) const
 {
     const polyMesh& mesh = *this;
 
-    tetIndices tet(polyMeshTetDecomposition::findTet(mesh, cellI, pt));
-    tetFaceI = tet.face();
-    tetPtI = tet.tetPt();
+    tetIndices tet(polyMeshTetDecomposition::findTet(mesh, celli, p));
+    tetFacei = tet.face();
+    tetPti = tet.tetPt();
 }
 
 
 bool Foam::polyMesh::pointInCell
 (
     const point& p,
-    label cellI,
-    const cellRepresentation decompMode
+    label celli,
+    const cellDecomposition decompMode
 ) const
 {
     switch (decompMode)
     {
-        case FACEPLANES:
+        case FACE_PLANES:
         {
-            return primitiveMesh::pointInCell(p, cellI);
+            return primitiveMesh::pointInCell(p, celli);
         }
         break;
 
-        case FACECENTRETETS:
+        case FACE_CENTRE_TRIS:
         {
             // only test that point is on inside of plane defined by cell face
             // triangles
-            const cell& cFaces = cells()[cellI];
+            const cell& cFaces = cells()[celli];
 
-            forAll(cFaces, cFaceI)
+            forAll(cFaces, cFacei)
             {
-                label faceI = cFaces[cFaceI];
-                const face& f = faces_[faceI];
-                const point& fc = faceCentres()[faceI];
-                bool isOwn = (owner_[faceI] == cellI);
+                label facei = cFaces[cFacei];
+                const face& f = faces_[facei];
+                const point& fc = faceCentres()[facei];
+                bool isOwn = (owner_[facei] == celli);
 
                 forAll(f, fp)
                 {
@@ -1417,18 +1416,18 @@ bool Foam::polyMesh::pointInCell
         }
         break;
 
-        case FACEDIAGTETS:
+        case FACE_DIAG_TRIS:
         {
             // only test that point is on inside of plane defined by cell face
             // triangles
-            const cell& cFaces = cells()[cellI];
+            const cell& cFaces = cells()[celli];
 
-            forAll(cFaces, cFaceI)
+            forAll(cFaces, cFacei)
             {
-                label faceI = cFaces[cFaceI];
-                const face& f = faces_[faceI];
+                label facei = cFaces[cFacei];
+                const face& f = faces_[facei];
 
-                for (label tetPtI = 1; tetPtI < f.size() - 1; tetPtI++)
+                for (label tetPti = 1; tetPti < f.size() - 1; tetPti++)
                 {
                     // Get tetIndices of face triangle
                     tetIndices faceTetIs
@@ -1436,9 +1435,9 @@ bool Foam::polyMesh::pointInCell
                         polyMeshTetDecomposition::triangleTetIndices
                         (
                             *this,
-                            faceI,
-                            cellI,
-                            tetPtI
+                            facei,
+                            celli,
+                            tetPti
                         )
                     );
 
@@ -1456,49 +1455,83 @@ bool Foam::polyMesh::pointInCell
             return true;
         }
         break;
+
+        case CELL_TETS:
+        {
+            label tetFacei;
+            label tetPti;
+
+            findTetFacePt(celli, p, tetFacei, tetPti);
+
+            return tetFacei != -1;
+        }
+        break;
     }
+
     return false;
 }
 
 
 Foam::label Foam::polyMesh::findCell
 (
-    const point& location,
-    const cellRepresentation decompMode
+    const point& p,
+    const cellDecomposition decompMode
 ) const
 {
-    if (Pstream::parRun() && decompMode == FACEDIAGTETS)
-    {
-        // Force construction of face-diagonal decomposition before testing
-        // for zero cells. If parallel running a local domain might have zero
-        // cells so never construct the face-diagonal decomposition (which
-        // uses parallel transfers)
-        (void)tetBasePtIs();
-    }
-
     if (nCells() == 0)
     {
         return -1;
     }
 
-    // Find the nearest cell centre to this location
-    label cellI = findNearestCell(location);
-
-    // If point is in the nearest cell return
-    if (pointInCell(location, cellI, decompMode))
+    if (decompMode == CELL_TETS)
     {
-        return cellI;
+        // Advanced search method utilizing an octree
+        // and tet-decomposition of the cells
+
+        label celli;
+        label tetFacei;
+        label tetPti;
+
+        findCellFacePt(p, celli, tetFacei, tetPti);
+
+        return celli;
     }
-    else // point is not in the nearest cell so search all cells
+    else
     {
-        for (label cellI = 0; cellI < nCells(); cellI++)
+        // Approximate search avoiding the construction of an octree
+        // and cell decomposition
+
+        if (Pstream::parRun() && decompMode == FACE_DIAG_TRIS)
+        {
+            // Force construction of face-diagonal decomposition before testing
+            // for zero cells. If parallel running a local domain might have
+            // zero cells so never construct the face-diagonal decomposition
+            // (which uses parallel transfers)
+            (void)tetBasePtIs();
+        }
+
+        // Find the nearest cell centre to this location
+        label celli = findNearestCell(p);
+
+        // If point is in the nearest cell return
+        if (pointInCell(p, celli, decompMode))
         {
-            if (pointInCell(location, cellI, decompMode))
+            return celli;
+        }
+        else
+        {
+            // Point is not in the nearest cell so search all cells
+
+            for (label celli = 0; celli < nCells(); celli++)
             {
-                return cellI;
+                if (pointInCell(p, celli, decompMode))
+                {
+                    return celli;
+                }
             }
+
+            return -1;
         }
-        return -1;
     }
 }
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.H b/src/OpenFOAM/meshes/polyMesh/polyMesh.H
index 5c4ae545a44a924e00e178809fb0e43d0f7dccdb..ae86b476c666fe9ea9b8b1857da184cca97f317c 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyMesh.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.H
@@ -94,13 +94,18 @@ public:
             TOPO_PATCH_CHANGE
         };
 
-        //- Enumeration defining the representation of the cell for
-        //  inside checking
-        enum cellRepresentation
+        //- Enumeration defining the decomposition of the cell for
+        //  inside/outside test
+        enum cellDecomposition
         {
-            FACEPLANES,     // cell bound by planes of faces
-            FACECENTRETETS, // tet decomposition using facectr and cellctr
-            FACEDIAGTETS    // tet decomposition using face diagonal and cellctr
+            FACE_PLANES,      //- Faces considered as planes
+
+            FACE_CENTRE_TRIS, //- Faces decomposed into triangles
+                              //  using face-centre
+
+            FACE_DIAG_TRIS,   //- Faces decomposed into triangles diagonally
+
+            CELL_TETS         //- Cell decomposed into tets
         };
 
 
@@ -667,40 +672,41 @@ public:
             ) const;
 
 
-        // Helper functions
+        // Position search functions
 
-            //- Find the cell, tetFaceI and tetPtI for the given position
+            //- Find the cell, tetFacei and tetPti for point p
             void findCellFacePt
             (
-                const point& pt,
-                label& cellI,
-                label& tetFaceI,
-                label& tetPtI
+                const point& p,
+                label& celli,
+                label& tetFacei,
+                label& tetPti
             ) const;
 
-            //- Find the tetFaceI and tetPtI for the given position in
-            //  the supplied cell, tetFaceI and tetPtI = -1 if not found
+            //- Find the tetFacei and tetPti for point p in celli.
+            //  tetFaceI and tetPtI are set to -1 if not found
             void findTetFacePt
             (
-                const label cellI,
-                const point& pt,
-                label& tetFaceI,
-                label& tetPtI
+                const label celli,
+                const point& p,
+                label& tetFacei,
+                label& tetPti
             ) const;
 
-            //- Is the point in the cell
+            //- Test if point p is in the celli
             bool pointInCell
             (
-                const point&,
-                label cellI,
-                const cellRepresentation = FACEDIAGTETS
+                const point& p,
+                label celli,
+                const cellDecomposition = CELL_TETS
             ) const;
 
-            //- Find cell enclosing this location (-1 if not in mesh)
+            //- Find cell enclosing this location and return index
+            //  If not found -1 is returned
             label findCell
             (
-                const point&,
-                const cellRepresentation = FACEDIAGTETS
+                const point& p,
+                const cellDecomposition = CELL_TETS
             ) const;
 };
 
diff --git a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C
index c96f7e5fad255a4e6e06b521990faad4da38f695..46dcf8411d61b0049fca1dfc4ac839359ff81a99 100644
--- a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C
+++ b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -55,13 +55,13 @@ void Foam::setRefCell
                     FatalIOErrorIn
                     (
                         "void Foam::setRefCell\n"
-                         "(\n"
-                         "    const volScalarField&,\n"
-                         "    const volScalarField&,\n"
-                         "    const dictionary&,\n"
-                         "    label& scalar&,\n"
-                         "    bool\n"
-                         ")",
+                        "    (\n"
+                        "        const volScalarField&,\n"
+                        "        const volScalarField&,\n"
+                        "        const dictionary&,\n"
+                        "        label& scalar&,\n"
+                        "        bool\n"
+                        ")",
                         dict
                     )   << "Illegal master cellID " << refCelli
                         << ". Should be 0.." << field.mesh().nCells()
@@ -77,30 +77,34 @@ void Foam::setRefCell
         {
             point refPointi(dict.lookup(refPointName));
 
-            // Note: find reference cell using facePlanes to avoid constructing
-            //       face decomposition structure. Most likely the reference
-            //       cell is an undistorted one so this should not be a
-            //       problem.
+            // Try fast approximate search avoiding octree construction
+            refCelli = field.mesh().findCell(refPointi, polyMesh::FACE_PLANES);
 
-            refCelli = field.mesh().findCell
-            (
-                refPointi,
-                polyMesh::FACEPLANES
-            );
             label hasRef = (refCelli >= 0 ? 1 : 0);
             label sumHasRef = returnReduce<label>(hasRef, sumOp<label>());
+
+            // If reference cell no found use octree search
+            // with cell tet-decompositoin
+            if (sumHasRef != 1)
+            {
+                refCelli = field.mesh().findCell(refPointi);
+
+                hasRef = (refCelli >= 0 ? 1 : 0);
+                sumHasRef = returnReduce<label>(hasRef, sumOp<label>());
+            }
+
             if (sumHasRef != 1)
             {
                 FatalIOErrorIn
                 (
                     "void Foam::setRefCell\n"
-                     "(\n"
-                     "    const volScalarField&,\n"
-                     "    const volScalarField&,\n"
-                     "    const dictionary&,\n"
-                     "    label& scalar&,\n"
-                     "    bool\n"
-                     ")",
+                    "    (\n"
+                    "        const volScalarField&,\n"
+                    "        const volScalarField&,\n"
+                    "        const dictionary&,\n"
+                    "        label& scalar&,\n"
+                    "        bool\n"
+                    "    )",
                     dict
                 )   << "Unable to set reference cell for field " << field.name()
                     << nl << "    Reference point " << refPointName
@@ -114,13 +118,13 @@ void Foam::setRefCell
             FatalIOErrorIn
             (
                 "void Foam::setRefCell\n"
-                 "(\n"
-                 "    const volScalarField&,\n"
-                 "    const volScalarField&,\n"
-                 "    const dictionary&,\n"
-                 "    label& scalar&,\n"
-                 "    bool\n"
-                 ")",
+                "    (\n"
+                "        const volScalarField&,\n"
+                "        const volScalarField&,\n"
+                "        const dictionary&,\n"
+                "        label& scalar&,\n"
+                "        bool\n"
+                "    )",
                 dict
             )   << "Unable to set reference cell for field " << field.name()
                 << nl
diff --git a/src/lagrangian/basic/InteractionLists/InteractionLists.C b/src/lagrangian/basic/InteractionLists/InteractionLists.C
index 408bfc0966b927b3fe55daea3c8284d8fdbe9b48..4ec03e34b9f5c37f495f650aa18b98309e75f4a3 100644
--- a/src/lagrangian/basic/InteractionLists/InteractionLists.C
+++ b/src/lagrangian/basic/InteractionLists/InteractionLists.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -165,10 +165,10 @@ void Foam::InteractionLists<ParticleType>::buildInteractionLists()
     (
         treeDataCell
         (
-            true,                   // cache cell bb
+            true,                   // Cache cell bb
             mesh_,
-            coupledPatchRangeCells, // subset of mesh
-            polyMesh::FACEDIAGTETS  // consistent with tracking
+            coupledPatchRangeCells, // Subset of mesh
+            polyMesh::CELL_TETS     // Consistent with tracking
         ),
         procBbRndExt,
         8,              // maxLevel,
@@ -388,7 +388,7 @@ void Foam::InteractionLists<ParticleType>::buildInteractionLists()
 
     indexedOctree<treeDataCell> allCellsTree
     (
-        treeDataCell(true, mesh_, polyMesh::FACEDIAGTETS),
+        treeDataCell(true, mesh_, polyMesh::CELL_TETS),
         procBbRndExt,
         8,              // maxLevel,
         10,             // leafSize,
diff --git a/src/meshTools/Make/files b/src/meshTools/Make/files
index a95c639bae4d07e89adae5de50e5dee2fd438eab..d70492950392f7350c64b3ac14f9a45ccafefe44 100644
--- a/src/meshTools/Make/files
+++ b/src/meshTools/Make/files
@@ -28,7 +28,7 @@ polyMeshZipUpCells/polyMeshZipUpCells.C
 primitiveMeshGeometry/primitiveMeshGeometry.C
 
 meshSearch/meshSearch.C
-meshSearch/meshSearchFACECENTRETETSMeshObject.C
+meshSearch/meshSearchFACE_CENTRE_TRISMeshObject.C
 meshSearch/meshSearchMeshObject.C
 
 meshTools/meshTools.C
diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C
index ea24a1c80e0e3137bcaf43ffe05af36785b45634..aa8fda17bd100834878109e9946c5c67b61b4ce1 100644
--- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C
+++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -107,7 +107,7 @@ Foam::tmp<Foam::pointField> Foam::mappedPatchBase::facePoints
         (
             mesh,
             pp.start()+faceI,
-            polyMesh::FACEDIAGTETS
+            polyMesh::FACE_DIAG_TRIS
         ).rawPoint();
     }
 
@@ -1349,15 +1349,15 @@ Foam::pointIndexHit Foam::mappedPatchBase::facePoint
 (
     const polyMesh& mesh,
     const label faceI,
-    const polyMesh::cellRepresentation decompMode
+    const polyMesh::cellDecomposition decompMode
 )
 {
     const point& fc = mesh.faceCentres()[faceI];
 
     switch (decompMode)
     {
-        case polyMesh::FACEPLANES:
-        case polyMesh::FACECENTRETETS:
+        case polyMesh::FACE_PLANES:
+        case polyMesh::FACE_CENTRE_TRIS:
         {
             // For both decompositions the face centre is guaranteed to be
             // on the face
@@ -1365,10 +1365,10 @@ Foam::pointIndexHit Foam::mappedPatchBase::facePoint
         }
         break;
 
-        case polyMesh::FACEDIAGTETS:
+        case polyMesh::FACE_DIAG_TRIS:
+        case polyMesh::CELL_TETS:
         {
-            // Find the intersection of a ray from face centre to cell
-            // centre
+            // Find the intersection of a ray from face centre to cell centre
             // Find intersection of (face-centre-decomposition) centre to
             // cell-centre with face-diagonal-decomposition triangles.
 
diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.H b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.H
index e6fcbb540e0f2c86dd46a01934006a40646677bc..7a05f77836487aa36cdc295294caa7df64ec5373 100644
--- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.H
+++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPatchBase.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -412,7 +412,7 @@ public:
             (
                 const polyMesh&,
                 const label faceI,
-                const polyMesh::cellRepresentation
+                const polyMesh::cellDecomposition
             );
 
 
diff --git a/src/meshTools/meshSearch/meshSearch.C b/src/meshTools/meshSearch/meshSearch.C
index a28b88b625cbe627ac6b47f118d01452b4608110..2d9e1c2ea1105d7911e0d6ac73ea05188b27be1d 100644
--- a/src/meshTools/meshSearch/meshSearch.C
+++ b/src/meshTools/meshSearch/meshSearch.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -502,17 +502,16 @@ Foam::vector Foam::meshSearch::offset
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-// Construct from components
 Foam::meshSearch::meshSearch
 (
     const polyMesh& mesh,
-    const polyMesh::cellRepresentation cellDecompMode
+    const polyMesh::cellDecomposition cellDecompMode
 )
 :
     mesh_(mesh),
     cellDecompMode_(cellDecompMode)
 {
-    if (cellDecompMode_ == polyMesh::FACEDIAGTETS)
+    if (cellDecompMode_ == polyMesh::FACE_DIAG_TRIS)
     {
         // Force construction of face diagonals
         (void)mesh.tetBasePtIs();
@@ -525,7 +524,7 @@ Foam::meshSearch::meshSearch
 (
     const polyMesh& mesh,
     const treeBoundBox& bb,
-    const polyMesh::cellRepresentation cellDecompMode
+    const polyMesh::cellDecomposition cellDecompMode
 )
 :
     mesh_(mesh),
@@ -533,7 +532,7 @@ Foam::meshSearch::meshSearch
 {
     overallBbPtr_.reset(new treeBoundBox(bb));
 
-    if (cellDecompMode_ == polyMesh::FACEDIAGTETS)
+    if (cellDecompMode_ == polyMesh::FACE_DIAG_TRIS)
     {
         // Force construction of face diagonals
         (void)mesh.tetBasePtIs();
diff --git a/src/meshTools/meshSearch/meshSearch.H b/src/meshTools/meshSearch/meshSearch.H
index c57c4375da031366e22fd194811eb5c5d84a8bc6..73c143460776daa9ce7c1f802f4d5654a06f9335 100644
--- a/src/meshTools/meshSearch/meshSearch.H
+++ b/src/meshTools/meshSearch/meshSearch.H
@@ -63,7 +63,7 @@ class meshSearch
         const polyMesh& mesh_;
 
         //- Whether to use cell decomposition for all geometric tests
-        const polyMesh::cellRepresentation cellDecompMode_;
+        const polyMesh::cellDecomposition cellDecompMode_;
 
         //- Data bounding box
         mutable autoPtr<treeBoundBox> overallBbPtr_;
@@ -171,7 +171,7 @@ public:
         meshSearch
         (
             const polyMesh& mesh,
-            const polyMesh::cellRepresentation = polyMesh::FACEDIAGTETS
+            const polyMesh::cellDecomposition = polyMesh::CELL_TETS
         );
 
         //- Construct with a custom bounding box. Any mesh element outside
@@ -181,7 +181,7 @@ public:
         (
             const polyMesh& mesh,
             const treeBoundBox& bb,
-            const polyMesh::cellRepresentation = polyMesh::FACEDIAGTETS
+            const polyMesh::cellDecomposition = polyMesh::CELL_TETS
         );
 
     //- Destructor
@@ -197,7 +197,7 @@ public:
                 return mesh_;
             }
 
-            polyMesh::cellRepresentation decompMode() const
+            polyMesh::cellDecomposition decompMode() const
             {
                 return cellDecompMode_;
             }
diff --git a/src/meshTools/meshSearch/meshSearchFACECENTRETETSMeshObject.C b/src/meshTools/meshSearch/meshSearchFACE_CENTRE_TRISMeshObject.C
similarity index 80%
rename from src/meshTools/meshSearch/meshSearchFACECENTRETETSMeshObject.C
rename to src/meshTools/meshSearch/meshSearchFACE_CENTRE_TRISMeshObject.C
index 7944c350cd5cc4115f4706d050e8e5fbf0f39af4..d088112e02c5efe5336955103e1932901efda12a 100644
--- a/src/meshTools/meshSearch/meshSearchFACECENTRETETSMeshObject.C
+++ b/src/meshTools/meshSearch/meshSearchFACE_CENTRE_TRISMeshObject.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,19 +23,19 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "meshSearchFACECENTRETETSMeshObject.H"
+#include "meshSearchFACE_CENTRE_TRISMeshObject.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTypeNameAndDebug(meshSearchFACECENTRETETSMeshObject, 0);
+    defineTypeNameAndDebug(meshSearchFACE_CENTRE_TRISMeshObject, 0);
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::meshSearchFACECENTRETETSMeshObject::meshSearchFACECENTRETETSMeshObject
+Foam::meshSearchFACE_CENTRE_TRISMeshObject::meshSearchFACE_CENTRE_TRISMeshObject
 (
     const polyMesh& mesh
 )
@@ -44,9 +44,9 @@ Foam::meshSearchFACECENTRETETSMeshObject::meshSearchFACECENTRETETSMeshObject
     <
         polyMesh,
         Foam::GeometricMeshObject,
-        meshSearchFACECENTRETETSMeshObject
+        meshSearchFACE_CENTRE_TRISMeshObject
     >(mesh),
-    meshSearch(mesh, polyMesh::FACECENTRETETS)
+    meshSearch(mesh, polyMesh::FACE_CENTRE_TRIS)
 {}
 
 
diff --git a/src/meshTools/meshSearch/meshSearchFACECENTRETETSMeshObject.H b/src/meshTools/meshSearch/meshSearchFACE_CENTRE_TRISMeshObject.H
similarity index 76%
rename from src/meshTools/meshSearch/meshSearchFACECENTRETETSMeshObject.H
rename to src/meshTools/meshSearch/meshSearchFACE_CENTRE_TRISMeshObject.H
index 81b41fb50dae06911117c4a375b0a1817a3af2a7..5fc4bb66884435e2bc76003c43e01e3410c38745 100644
--- a/src/meshTools/meshSearch/meshSearchFACECENTRETETSMeshObject.H
+++ b/src/meshTools/meshSearch/meshSearchFACE_CENTRE_TRISMeshObject.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,17 +22,17 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::meshSearchFACECENTRETETSMeshObject
+    Foam::meshSearchFACE_CENTRE_TRISMeshObject
 
 Description
-    MeshObject wrapper around meshSearch(mesh,  polyMesh::FACECENTRETETS).
+    MeshObject wrapper around meshSearch(mesh,  polyMesh::FACE_CENTRE_TRIS).
 
 SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef meshSearchFACECENTRETETSMeshObject_H
-#define meshSearchFACECENTRETETSMeshObject_H
+#ifndef meshSearchFACE_CENTRE_TRISMeshObject_H
+#define meshSearchFACE_CENTRE_TRISMeshObject_H
 
 #include "MeshObject.H"
 #include "meshSearch.H"
@@ -43,16 +43,16 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-              Class meshSearchFACECENTRETETSMeshObject Declaration
+              Class meshSearchFACE_CENTRE_TRISMeshObject Declaration
 \*---------------------------------------------------------------------------*/
 
-class meshSearchFACECENTRETETSMeshObject
+class meshSearchFACE_CENTRE_TRISMeshObject
 :
     public MeshObject
     <
         polyMesh,
         GeometricMeshObject,
-        meshSearchFACECENTRETETSMeshObject
+        meshSearchFACE_CENTRE_TRISMeshObject
     >,
     public meshSearch
 {
@@ -60,16 +60,16 @@ class meshSearchFACECENTRETETSMeshObject
 public:
 
     // Declare name of the class and its debug switch
-    TypeName("meshSearchFACECENTRETETSMeshObject");
+    TypeName("meshSearchFACE_CENTRE_TRISMeshObject");
 
 
     // Constructors
 
         //- Constructor given polyMesh
-        explicit meshSearchFACECENTRETETSMeshObject(const polyMesh& mesh);
+        explicit meshSearchFACE_CENTRE_TRISMeshObject(const polyMesh& mesh);
 
     //- Destructor
-    virtual ~meshSearchFACECENTRETETSMeshObject()
+    virtual ~meshSearchFACE_CENTRE_TRISMeshObject()
     {}
 };
 
diff --git a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.C b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.C
index ef4be71636697276843d5e0db12ae3a3c01df42f..6625f2e4cc90c6d0e687e752e135dda0eee02962 100644
--- a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.C
+++ b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -86,7 +86,7 @@ void Foam::nearWallFields::calcAddressing()
                 (
                     mesh,
                     meshFaceI,
-                    polyMesh::FACEDIAGTETS
+                    polyMesh::FACE_DIAG_TRIS
                 )
             );
 
diff --git a/src/sampling/meshToMeshInterpolation/meshToMesh/calcMethod/direct/directMethod.C b/src/sampling/meshToMeshInterpolation/meshToMesh/calcMethod/direct/directMethod.C
index a67cbe4a3e76a9015cd45af1cfdc265a25003e59..7468fd4fd0491995414e582580b456f754dba956 100644
--- a/src/sampling/meshToMeshInterpolation/meshToMesh/calcMethod/direct/directMethod.C
+++ b/src/sampling/meshToMeshInterpolation/meshToMesh/calcMethod/direct/directMethod.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2013-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2013-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -48,7 +48,7 @@ bool Foam::directMethod::intersect
     (
         src_.cellCentres()[srcCellI],
         tgtCellI,
-        polyMesh::FACEPLANES
+        polyMesh::FACE_PLANES
     );
 }
 
@@ -200,7 +200,7 @@ void Foam::directMethod::appendToDirectSeeds
                     (
                         srcCentre[srcI],
                         tgtI,
-                        polyMesh::FACEPLANES
+                        polyMesh::FACE_PLANES
                     )
                 )
                 {
diff --git a/src/sampling/sampledSet/patchSeed/patchSeedSet.C b/src/sampling/sampledSet/patchSeed/patchSeedSet.C
index d06dd95f4bda4cc778cbffe251e02faedb0370c0..3560fe42046778b9e36d572a8c59bdd432d9ce36 100644
--- a/src/sampling/sampledSet/patchSeed/patchSeedSet.C
+++ b/src/sampling/sampledSet/patchSeed/patchSeedSet.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -139,7 +139,7 @@ void Foam::patchSeedSet::calcSamples
         (
             mesh(),
             faceI,
-            polyMesh::FACEDIAGTETS
+            polyMesh::FACE_DIAG_TRIS
         );
         label cellI = mesh().faceOwner()[faceI];
 
diff --git a/src/sampling/sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMesh.C b/src/sampling/sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMesh.C
index 5ae942673ad0ca3335f813c253b5908f1c53367b..094ae45cfcb488323910c412de721701d661b8af 100644
--- a/src/sampling/sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMesh.C
+++ b/src/sampling/sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMesh.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -645,7 +645,7 @@ bool Foam::sampledTriSurfaceMesh::update()
     }
 
     // Mesh search engine, no triangulation of faces.
-    meshSearch meshSearcher(mesh(), polyMesh::FACEPLANES);
+    meshSearch meshSearcher(mesh(), polyMesh::FACE_PLANES);
 
     return update(meshSearcher);
 }
@@ -659,7 +659,7 @@ bool Foam::sampledTriSurfaceMesh::update(const treeBoundBox& bb)
     }
 
     // Mesh search engine on subset, no triangulation of faces.
-    meshSearch meshSearcher(mesh(), bb, polyMesh::FACEPLANES);
+    meshSearch meshSearcher(mesh(), bb, polyMesh::FACE_PLANES);
 
     return update(meshSearcher);
 }