From d6854a45075f1a00aacbff274536212d79dc5ffb Mon Sep 17 00:00:00 2001
From: graham <graham.macpherson@strath.ac.uk>
Date: Wed, 1 Apr 2009 19:16:08 +0100
Subject: [PATCH] Rewrite of CV3DMesher to cvMesh.  Basic infrastructure and
 thinking.

---
 .../mesh/generation/CV3DMesher/calcDualMesh.C |   6 +-
 .../mesh/generation/cvMesh/Make/files         |   3 +
 .../mesh/generation/cvMesh/Make/options       |  25 +++
 .../utilities/mesh/generation/cvMesh/cvMesh.C |  80 +++++++++
 src/conformalVoronoiMesh/Make/files           |   5 +
 src/conformalVoronoiMesh/Make/options         |  25 +++
 .../conformalVoronoiMesh.C                    | 102 ++++++++++++
 .../conformalVoronoiMesh.H                    | 152 ++++++++++++++++++
 .../cvControls/cvControls.C                   | 102 ++++++++++++
 .../cvControls/cvControls.H                   | 144 +++++++++++++++++
 .../cvSearchableSurfaces.C                    | 102 ++++++++++++
 .../cvSearchableSurfaces.H                    | 143 ++++++++++++++++
 12 files changed, 887 insertions(+), 2 deletions(-)
 create mode 100644 applications/utilities/mesh/generation/cvMesh/Make/files
 create mode 100644 applications/utilities/mesh/generation/cvMesh/Make/options
 create mode 100644 applications/utilities/mesh/generation/cvMesh/cvMesh.C
 create mode 100644 src/conformalVoronoiMesh/Make/files
 create mode 100644 src/conformalVoronoiMesh/Make/options
 create mode 100644 src/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C
 create mode 100644 src/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H
 create mode 100644 src/conformalVoronoiMesh/cvControls/cvControls.C
 create mode 100644 src/conformalVoronoiMesh/cvControls/cvControls.H
 create mode 100644 src/conformalVoronoiMesh/cvSearchableSurfaces/cvSearchableSurfaces.C
 create mode 100644 src/conformalVoronoiMesh/cvSearchableSurfaces/cvSearchableSurfaces.H

diff --git a/applications/utilities/mesh/generation/CV3DMesher/calcDualMesh.C b/applications/utilities/mesh/generation/CV3DMesher/calcDualMesh.C
index 3e3ceae2479..7407495ccee 100644
--- a/applications/utilities/mesh/generation/CV3DMesher/calcDualMesh.C
+++ b/applications/utilities/mesh/generation/CV3DMesher/calcDualMesh.C
@@ -346,9 +346,11 @@ void Foam::CV3D::calcDualMesh
                 if (cc1I < 0 || cc2I < 0)
                 {
                     FatalErrorIn("Foam::CV3D::calcDualMesh")
-                    << "Dual face uses circumcenter defined by a "
+                        << "Dual face uses circumcenter defined by a "
                         << "Delaunay tetrahedron with no internal "
-                        << "or boundary points."
+                        << "or boundary points.  Defining Delaunay edge ends: "
+                        << topoint(vA->point()) << " "
+                        << topoint(vB->point()) << nl
                         << exit(FatalError);
                 }
 
diff --git a/applications/utilities/mesh/generation/cvMesh/Make/files b/applications/utilities/mesh/generation/cvMesh/Make/files
new file mode 100644
index 00000000000..425e0f5b83e
--- /dev/null
+++ b/applications/utilities/mesh/generation/cvMesh/Make/files
@@ -0,0 +1,3 @@
+cvMesh.C
+
+EXE = $(FOAM_APPBIN)/cvMesh
diff --git a/applications/utilities/mesh/generation/cvMesh/Make/options b/applications/utilities/mesh/generation/cvMesh/Make/options
new file mode 100644
index 00000000000..d58ae360fd7
--- /dev/null
+++ b/applications/utilities/mesh/generation/cvMesh/Make/options
@@ -0,0 +1,25 @@
+//EXE_DEBUG = -DFULLDEBUG -g -O0
+EXE_FROUNDING_MATH = -frounding-math
+EXE_NDEBUG = -DNDEBUG
+
+include $(GENERAL_RULES)/CGAL
+FFLAGS = -DCGAL_FILES='"${CGAL_PATH}/CGAL/files"'
+
+EXE_INC = \
+    ${EXE_FROUNDING_MATH} \
+    ${EXE_NDEBUG} \
+    ${CGAL_INC} \
+    -I$(WM_THIRD_PARTY_DIR)/mpfr-2.4.1 \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/dynamicMesh/lnInclude \
+    -I$(LIB_SRC)/triSurface/lnInclude
+
+EXE_LIBS = \
+    -L$(BOOST_ROOT)/lib \
+    -L$(WM_THIRD_PARTY_DIR)/mpfr-2.4.1/platforms/$(WM_ARCH)$(WM_COMPILER_ARCH)/lib \
+    -lmeshTools \
+    -ltriSurface \
+    -ldynamicMesh \
+    -lboost_thread-gcc43-mt-1_38 \
+    -lmpfr
diff --git a/applications/utilities/mesh/generation/cvMesh/cvMesh.C b/applications/utilities/mesh/generation/cvMesh/cvMesh.C
new file mode 100644
index 00000000000..43c53f25fbb
--- /dev/null
+++ b/applications/utilities/mesh/generation/cvMesh/cvMesh.C
@@ -0,0 +1,80 @@
+/*---------------------------------------------------------------------------*\
+ =========                   |
+ \\      /   F ield          | OpenFOAM: The Open Source CFD Toolbox
+  \\    /    O peration      |
+   \\  /     A nd            | Copyright (C) 1991-2009 OpenCFD Ltd.
+    \\/      M anipulation   |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Application
+    cvMesh
+
+Description
+    Conformal Voronoi automatic mesh generator
+
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+
+using namespace Foam;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+#   include "setRootCase.H"
+#   include "createTime.H"
+    runTime.functionObjects().off();
+
+    IOdictionary cvMeshDict
+    (
+        IOobject
+        (
+            "cvMeshDict",
+            runTime.system(),
+            runTime,
+            IOobject::MUST_READ,
+            IOobject::NO_WRITE
+        )
+    );
+
+    conformalVoronoiMesh mesh(cvMeshDict);
+
+    while (runTime.run())
+    {
+        runTime++;
+
+        Info<< nl << "Time = " << runTime.timeName()
+            << endl;
+
+
+        Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
+            << "  ClockTime = " << runTime.elapsedClockTime() << " s"
+            << nl << endl;
+    }
+
+    mesh.write();
+
+    Info << nl << "End\n" << endl;
+
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/src/conformalVoronoiMesh/Make/files b/src/conformalVoronoiMesh/Make/files
new file mode 100644
index 00000000000..8a05c11cf0a
--- /dev/null
+++ b/src/conformalVoronoiMesh/Make/files
@@ -0,0 +1,5 @@
+#include CGAL_FILES
+
+
+
+LIB = $(FOAM_APPBIN)/conformalVoronoiMesh
diff --git a/src/conformalVoronoiMesh/Make/options b/src/conformalVoronoiMesh/Make/options
new file mode 100644
index 00000000000..d58ae360fd7
--- /dev/null
+++ b/src/conformalVoronoiMesh/Make/options
@@ -0,0 +1,25 @@
+//EXE_DEBUG = -DFULLDEBUG -g -O0
+EXE_FROUNDING_MATH = -frounding-math
+EXE_NDEBUG = -DNDEBUG
+
+include $(GENERAL_RULES)/CGAL
+FFLAGS = -DCGAL_FILES='"${CGAL_PATH}/CGAL/files"'
+
+EXE_INC = \
+    ${EXE_FROUNDING_MATH} \
+    ${EXE_NDEBUG} \
+    ${CGAL_INC} \
+    -I$(WM_THIRD_PARTY_DIR)/mpfr-2.4.1 \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/dynamicMesh/lnInclude \
+    -I$(LIB_SRC)/triSurface/lnInclude
+
+EXE_LIBS = \
+    -L$(BOOST_ROOT)/lib \
+    -L$(WM_THIRD_PARTY_DIR)/mpfr-2.4.1/platforms/$(WM_ARCH)$(WM_COMPILER_ARCH)/lib \
+    -lmeshTools \
+    -ltriSurface \
+    -ldynamicMesh \
+    -lboost_thread-gcc43-mt-1_38 \
+    -lmpfr
diff --git a/src/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C b/src/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C
new file mode 100644
index 00000000000..c298eee9956
--- /dev/null
+++ b/src/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C
@@ -0,0 +1,102 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "conformalVoronoiMesh.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+const dataType Foam::conformalVoronoiMesh::staticData();
+
+
+// * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::conformalVoronoiMesh::conformalVoronoiMesh()
+:
+    baseClassName(),
+    data_()
+{}
+
+
+Foam::conformalVoronoiMesh::conformalVoronoiMesh(const dataType& data)
+:
+    baseClassName(),
+    data_(data)
+{}
+
+
+Foam::conformalVoronoiMesh::conformalVoronoiMesh(const conformalVoronoiMesh&)
+:
+    baseClassName(),
+    data_()
+{}
+
+
+// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::conformalVoronoiMesh> Foam::conformalVoronoiMesh::New()
+{
+    return autoPtr<conformalVoronoiMesh>(new conformalVoronoiMesh);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::conformalVoronoiMesh::~conformalVoronoiMesh()
+{}
+
+
+// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * * //
+
+void Foam::conformalVoronoiMesh::operator=(const conformalVoronoiMesh& rhs)
+{
+    // Check for assignment to self
+    if (this == &rhs)
+    {
+        FatalErrorIn("Foam::conformalVoronoiMesh::operator=(const Foam::conformalVoronoiMesh&)")
+            << "Attempted assignment to self"
+            << abort(FatalError);
+    }
+}
+
+// * * * * * * * * * * * * * * Friend Functions  * * * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * * //
+
+
+// ************************************************************************* //
diff --git a/src/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H b/src/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H
new file mode 100644
index 00000000000..7b1ea428ec4
--- /dev/null
+++ b/src/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H
@@ -0,0 +1,152 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::conformalVoronoiMesh
+
+Description
+
+SourceFiles
+    conformalVoronoiMeshI.H
+    conformalVoronoiMesh.C
+    conformalVoronoiMeshIO.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef conformalVoronoiMesh_H
+#define conformalVoronoiMesh_H
+
+#include ".H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class Istream;
+class Ostream;
+
+// Forward declaration of friend functions and operators
+class conformalVoronoiMesh;
+Istream& operator>>(Istream&, conformalVoronoiMesh&);
+Ostream& operator<<(Ostream&, const conformalVoronoiMesh&);
+
+
+/*---------------------------------------------------------------------------*\
+                          Class conformalVoronoiMesh Declaration
+\*---------------------------------------------------------------------------*/
+
+class conformalVoronoiMesh
+:
+    public baseClassName
+{
+    // Private data
+
+        //- Description of data_
+        dataType data_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        conformalVoronoiMesh(const conformalVoronoiMesh&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const conformalVoronoiMesh&);
+
+
+public:
+
+    // Static data members
+
+        //- Static data staticData
+        static const dataType staticData;
+
+
+    // Constructors
+
+        //- Construct null
+        conformalVoronoiMesh();
+
+        //- Construct from components
+        conformalVoronoiMesh(const dataType& data);
+
+        //- Construct from Istream
+        conformalVoronoiMesh(Istream&);
+
+        //- Construct as copy
+        conformalVoronoiMesh(const conformalVoronoiMesh&);
+
+
+    // Selectors
+
+        //- Select null constructed
+        static autoPtr<conformalVoronoiMesh> New();
+
+
+    //- Destructor
+    ~conformalVoronoiMesh();
+
+
+    // Member Functions
+
+        // Access
+
+        // Check
+
+        // Edit
+
+        // Write
+
+
+    // Member Operators
+
+        void operator=(const conformalVoronoiMesh&);
+
+
+    // Friend Functions
+
+    // Friend Operators
+
+    // IOstream Operators
+
+        friend Istream& operator>>(Istream&, conformalVoronoiMesh&);
+        friend Ostream& operator<<(Ostream&, const conformalVoronoiMesh&);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "conformalVoronoiMeshI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/conformalVoronoiMesh/cvControls/cvControls.C b/src/conformalVoronoiMesh/cvControls/cvControls.C
new file mode 100644
index 00000000000..dad66aea381
--- /dev/null
+++ b/src/conformalVoronoiMesh/cvControls/cvControls.C
@@ -0,0 +1,102 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "cvControls.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+const dataType Foam::cvControls::staticData();
+
+
+// * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::cvControls::cvControls()
+:
+    baseClassName(),
+    data_()
+{}
+
+
+Foam::cvControls::cvControls(const dataType& data)
+:
+    baseClassName(),
+    data_(data)
+{}
+
+
+Foam::cvControls::cvControls(const cvControls&)
+:
+    baseClassName(),
+    data_()
+{}
+
+
+// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::cvControls> Foam::cvControls::New()
+{
+    return autoPtr<cvControls>(new cvControls);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::cvControls::~cvControls()
+{}
+
+
+// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * * //
+
+void Foam::cvControls::operator=(const cvControls& rhs)
+{
+    // Check for assignment to self
+    if (this == &rhs)
+    {
+        FatalErrorIn("Foam::cvControls::operator=(const Foam::cvControls&)")
+            << "Attempted assignment to self"
+            << abort(FatalError);
+    }
+}
+
+// * * * * * * * * * * * * * * Friend Functions  * * * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * * //
+
+
+// ************************************************************************* //
diff --git a/src/conformalVoronoiMesh/cvControls/cvControls.H b/src/conformalVoronoiMesh/cvControls/cvControls.H
new file mode 100644
index 00000000000..2c5b5ec1aa8
--- /dev/null
+++ b/src/conformalVoronoiMesh/cvControls/cvControls.H
@@ -0,0 +1,144 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::cvControls
+
+Description
+    Controls for the conformalVoronoiMesh mesh generator
+
+SourceFiles
+    cvControls.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef cvControls_H
+#define cvControls_H
+
+#include ".H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// Forward declaration of classes
+class conformalVoronoiMesh;
+
+
+/*---------------------------------------------------------------------------*\
+                          Class cvControls Declaration
+\*---------------------------------------------------------------------------*/
+
+class cvControls
+:
+{
+    // Private data
+
+        // Reference to the conformalVoronoiMesh holding this cvControls object
+        const conformalVoronoiMesh& cvMesh_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        cvControls(const cvControls&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const cvControls&);
+
+
+public:
+
+    // Static data members
+
+        //- Static data staticData
+        static const dataType staticData;
+
+
+    // Constructors
+
+        //- Construct null
+        cvControls();
+
+        //- Construct from components
+        cvControls(const dataType& data);
+
+        //- Construct from Istream
+        cvControls(Istream&);
+
+        //- Construct as copy
+        cvControls(const cvControls&);
+
+
+    // Selectors
+
+        //- Select null constructed
+        static autoPtr<cvControls> New();
+
+
+    //- Destructor
+    ~cvControls();
+
+
+    // Member Functions
+
+        // Access
+
+        // Check
+
+        // Edit
+
+        // Write
+
+
+    // Member Operators
+
+        void operator=(const cvControls&);
+
+
+    // Friend Functions
+
+    // Friend Operators
+
+    // IOstream Operators
+
+        friend Istream& operator>>(Istream&, cvControls&);
+        friend Ostream& operator<<(Ostream&, const cvControls&);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "cvControlsI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/conformalVoronoiMesh/cvSearchableSurfaces/cvSearchableSurfaces.C b/src/conformalVoronoiMesh/cvSearchableSurfaces/cvSearchableSurfaces.C
new file mode 100644
index 00000000000..fcd212d47bf
--- /dev/null
+++ b/src/conformalVoronoiMesh/cvSearchableSurfaces/cvSearchableSurfaces.C
@@ -0,0 +1,102 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "cvSearchableSurfaces.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+const dataType Foam::cvSearchableSurfaces::staticData();
+
+
+// * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::cvSearchableSurfaces::cvSearchableSurfaces()
+:
+    baseClassName(),
+    data_()
+{}
+
+
+Foam::cvSearchableSurfaces::cvSearchableSurfaces(const dataType& data)
+:
+    baseClassName(),
+    data_(data)
+{}
+
+
+Foam::cvSearchableSurfaces::cvSearchableSurfaces(const cvSearchableSurfaces&)
+:
+    baseClassName(),
+    data_()
+{}
+
+
+// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
+
+Foam::autoPtr<Foam::cvSearchableSurfaces> Foam::cvSearchableSurfaces::New()
+{
+    return autoPtr<cvSearchableSurfaces>(new cvSearchableSurfaces);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::cvSearchableSurfaces::~cvSearchableSurfaces()
+{}
+
+
+// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * * //
+
+void Foam::cvSearchableSurfaces::operator=(const cvSearchableSurfaces& rhs)
+{
+    // Check for assignment to self
+    if (this == &rhs)
+    {
+        FatalErrorIn("Foam::cvSearchableSurfaces::operator=(const Foam::cvSearchableSurfaces&)")
+            << "Attempted assignment to self"
+            << abort(FatalError);
+    }
+}
+
+// * * * * * * * * * * * * * * Friend Functions  * * * * * * * * * * * * * * //
+
+
+// * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * * //
+
+
+// ************************************************************************* //
diff --git a/src/conformalVoronoiMesh/cvSearchableSurfaces/cvSearchableSurfaces.H b/src/conformalVoronoiMesh/cvSearchableSurfaces/cvSearchableSurfaces.H
new file mode 100644
index 00000000000..19794727e95
--- /dev/null
+++ b/src/conformalVoronoiMesh/cvSearchableSurfaces/cvSearchableSurfaces.H
@@ -0,0 +1,143 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2009 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::cvSearchableSurfaces
+
+Description
+    The surface geometry to be meshed with a conformalVoronoiMesh, adding
+    inside/outside queries and surfaceFeatures
+
+SourceFiles
+    cvSearchableSurfaces.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef cvSearchableSurfaces_H
+#define cvSearchableSurfaces_H
+
+#include "searchableSurfaces.H"
+#include "surfaceFeatures.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                     Class cvSearchableSurfaces Declaration
+\*---------------------------------------------------------------------------*/
+
+class cvSearchableSurfaces
+:
+    public baseClassName
+{
+    // Private data
+
+        //- Description of data_
+        dataType data_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        cvSearchableSurfaces(const cvSearchableSurfaces&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const cvSearchableSurfaces&);
+
+
+public:
+
+    // Static data members
+
+        //- Static data staticData
+        static const dataType staticData;
+
+
+    // Constructors
+
+        //- Construct null
+        cvSearchableSurfaces();
+
+        //- Construct from components
+        cvSearchableSurfaces(const dataType& data);
+
+        //- Construct from Istream
+        cvSearchableSurfaces(Istream&);
+
+        //- Construct as copy
+        cvSearchableSurfaces(const cvSearchableSurfaces&);
+
+
+    // Selectors
+
+        //- Select null constructed
+        static autoPtr<cvSearchableSurfaces> New();
+
+
+    //- Destructor
+    ~cvSearchableSurfaces();
+
+
+    // Member Functions
+
+        // Access
+
+        // Check
+
+        // Edit
+
+        // Write
+
+
+    // Member Operators
+
+        void operator=(const cvSearchableSurfaces&);
+
+
+    // Friend Functions
+
+    // Friend Operators
+
+    // IOstream Operators
+
+        friend Istream& operator>>(Istream&, cvSearchableSurfaces&);
+        friend Ostream& operator<<(Ostream&, const cvSearchableSurfaces&);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#include "cvSearchableSurfacesI.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
-- 
GitLab