diff --git a/applications/utilities/mesh/generation/cvMesh/checkCvMesh/Make/files b/applications/utilities/mesh/generation/cvMesh/checkCvMesh/Make/files
new file mode 100644
index 0000000000..73871a7532
--- /dev/null
+++ b/applications/utilities/mesh/generation/cvMesh/checkCvMesh/Make/files
@@ -0,0 +1,3 @@
+checkCvMesh.C
+
+EXE = $(FOAM_APPBIN)/checkCvMesh
diff --git a/applications/utilities/mesh/generation/cvMesh/checkCvMesh/Make/options b/applications/utilities/mesh/generation/cvMesh/checkCvMesh/Make/options
new file mode 100644
index 0000000000..ba68fd3819
--- /dev/null
+++ b/applications/utilities/mesh/generation/cvMesh/checkCvMesh/Make/options
@@ -0,0 +1,14 @@
+EXE_INC = \
+ -I$(LIB_SRC)/finiteVolume/lnInclude \
+ -I$(LIB_SRC)/triSurface/lnInclude \
+ -I$(LIB_SRC)/mesh/autoMesh/lnInclude \
+ -I$(LIB_SRC)/dynamicMesh/lnInclude \
+ -I$(LIB_SRC)/meshTools/lnInclude
+
+EXE_LIBS = \
+ -lfiniteVolume \
+ -ldynamicMesh \
+ -ltriSurface \
+ -lautoMesh \
+ -lmeshTools
+
diff --git a/applications/utilities/mesh/generation/cvMesh/checkCvMesh/checkCvMesh.C b/applications/utilities/mesh/generation/cvMesh/checkCvMesh/checkCvMesh.C
new file mode 100644
index 0000000000..df2a3b90f8
--- /dev/null
+++ b/applications/utilities/mesh/generation/cvMesh/checkCvMesh/checkCvMesh.C
@@ -0,0 +1,122 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
+ \\/ 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 .
+
+Application
+ checkCvMesh
+
+Description
+
+\*---------------------------------------------------------------------------*/
+
+#include "argList.H"
+#include "Time.H"
+#include "fvMesh.H"
+#include "autoSnapDriver.H"
+#include "faceSet.H"
+#include "motionSmoother.H"
+#include "timeSelector.H"
+
+
+using namespace Foam;
+
+
+int main(int argc, char *argv[])
+{
+# include "addOverwriteOption.H"
+
+# include "setRootCase.H"
+# include "createTime.H"
+
+ instantList timeDirs = timeSelector::select0(runTime, args);
+
+# include "createMesh.H"
+
+ runTime.functionObjects().off();
+
+ forAll(timeDirs, timeI)
+ {
+ runTime.setTime(timeDirs[timeI], timeI);
+
+ Info<< "Create mesh for time = " << runTime.timeName()
+ << nl << endl;
+
+ mesh.readUpdate();
+
+ Info<< "Read mesh in = "
+ << runTime.cpuTimeIncrement() << " s" << endl;
+
+ // Check patches and faceZones are synchronised
+ mesh.boundaryMesh().checkParallelSync(true);
+ meshRefinement::checkCoupledFaceZones(mesh);
+
+ // Read meshing dictionary
+ IOdictionary cvMeshDict
+ (
+ IOobject
+ (
+ "cvMeshDict",
+ runTime.system(),
+ mesh,
+ IOobject::MUST_READ_IF_MODIFIED,
+ IOobject::NO_WRITE
+ )
+ );
+
+ // mesh motion and mesh quality parameters
+ const dictionary& meshQualityDict
+ = cvMeshDict.subDict("meshQualityControls");
+
+
+ Info<< "Checking initial mesh ..." << endl;
+ faceSet wrongFaces(mesh, "wrongFaces", mesh.nFaces()/100);
+ motionSmoother::checkMesh(false, mesh, meshQualityDict, wrongFaces);
+
+ const label nInitErrors = returnReduce
+ (
+ wrongFaces.size(),
+ sumOp