diff --git a/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.C b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.C
new file mode 100644
index 0000000000..ede22c54ce
--- /dev/null
+++ b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.C
@@ -0,0 +1,115 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) YEAR AUTHOR,AFFILIATION
+ \\/ 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "codedPoints0MotionSolverTemplate.H"
+#include "fvCFD.H"
+#include "unitConversion.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(${typeName}Points0MotionSolver, 0);
+
+addRemovableToRunTimeSelectionTable
+(
+ motionSolver,
+ ${typeName}Points0MotionSolver,
+ dictionary
+);
+
+
+// * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * //
+
+extern "C"
+{
+ // dynamicCode:
+ // SHA1 = ${SHA1sum}
+ //
+ // unique function name that can be checked if the correct library version
+ // has been loaded
+ void ${typeName}_${SHA1sum}(bool load)
+ {
+ if (load)
+ {
+ // code that can be explicitly executed after loading
+ }
+ else
+ {
+ // code that can be explicitly executed before unloading
+ }
+ }
+}
+
+
+// * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * //
+
+//{{{ begin localCode
+${localCode}
+//}}} end localCode
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+${typeName}Points0MotionSolver::${typeName}Points0MotionSolver
+(
+ const polyMesh& mesh,
+ const IOdictionary& dict
+)
+:
+ points0MotionSolver(mesh, dict, "${typeName}")
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
+
+${typeName}Points0MotionSolver::~${typeName}Points0MotionSolver()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+tmp ${typeName}Points0MotionSolver::curPoints() const
+{
+ if (${verbose:-false})
+ {
+ Info<<"curPoints ${typeName} sha1: ${SHA1sum}\n";
+ }
+
+//{{{ begin code
+ ${code}
+//}}} end code
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H
new file mode 100644
index 0000000000..0a6129c501
--- /dev/null
+++ b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H
@@ -0,0 +1,103 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) YEAR AUTHOR,AFFILIATION
+ \\/ 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 .
+
+Description
+ Template for use with dynamic code generation of a
+ points0MotionSolver.
+
+SourceFiles
+ codedPoints0MotionSolverTemplate.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef codedPoints0MotionSolverTemplate_H
+#define codedPoints0MotionSolverTemplate_H
+
+#include "points0MotionSolver.H"
+
+//{{{ begin codeInclude
+${codeInclude}
+//}}} end codeInclude
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+ A templated codedPoints0MotionSolver
+\*---------------------------------------------------------------------------*/
+
+class ${typeName}Points0MotionSolver
+:
+ public points0MotionSolver
+{
+ // Private Member Functions
+
+ //- Disallow default bitwise copy construct
+ ${typeName}Points0MotionSolver(const ${typeName}Points0MotionSolver&);
+
+ //- Disallow default bitwise assignment
+ void operator=(const ${typeName}Points0MotionSolver&);
+
+
+public:
+
+ //- Runtime type information
+ TypeName("${typeName}");
+
+
+ // Constructors
+
+ //- Construct from mesh and dictionary
+ ${typeName}Points0MotionSolver
+ (
+ const polyMesh& mesh,
+ const IOdictionary&
+ );
+
+
+ //- Destructor
+ virtual ~${typeName}Points0MotionSolver();
+
+
+ // Member Functions
+
+ //- Provide current points for motion. Uses current motion field
+ virtual tmp curPoints() const;
+
+ //- Solve for motion
+ virtual void solve()
+ {};
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/dynamicMesh/Make/files b/src/dynamicMesh/Make/files
index c1de4266ad..e9ec68dcea 100644
--- a/src/dynamicMesh/Make/files
+++ b/src/dynamicMesh/Make/files
@@ -112,6 +112,7 @@ motionSolvers/velocity/velocityDisplacement/velocityDisplacementMotionSolver.C
motionSolvers/componentVelocity/componentVelocityMotionSolver.C
motionSolvers/displacement/solidBody/solidBodyMotionSolver.C
motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver.C
+motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.C
solidBodyMotionFunctions = motionSolvers/displacement/solidBody/solidBodyMotionFunctions
$(solidBodyMotionFunctions)/solidBodyMotionFunction/solidBodyMotionFunction.C
diff --git a/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.C
new file mode 100644
index 0000000000..67cf8c2db3
--- /dev/null
+++ b/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.C
@@ -0,0 +1,199 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2017 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 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 .
+
+\*---------------------------------------------------------------------------*/
+
+#include "codedPoints0MotionSolver.H"
+#include "dictionary.H"
+#include "Time.H"
+#include "SHA1Digest.H"
+#include "dynamicCode.H"
+#include "dynamicCodeContext.H"
+#include "stringOps.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+ defineTypeNameAndDebug(codedPoints0MotionSolver, 0);
+
+ addToRunTimeSelectionTable
+ (
+ motionSolver,
+ codedPoints0MotionSolver,
+ dictionary
+ );
+}
+
+// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
+
+void Foam::codedPoints0MotionSolver::prepare
+(
+ dynamicCode& dynCode,
+ const dynamicCodeContext& context
+) const
+{
+ // Set additional rewrite rules
+ dynCode.setFilterVariable("typeName", name_);
+
+ // Compile filtered C template
+ dynCode.addCompileFile("codedPoints0MotionSolverTemplate.C");
+
+ // Copy filtered H template
+ dynCode.addCopyFile("codedPoints0MotionSolverTemplate.H");
+
+ // Debugging: make BC verbose
+ // dynCode.setFilterVariable("verbose", "true");
+ // Info<<"compile " << name_ << " sha1: "
+ // << context.sha1() << endl;
+
+ // Define Make/options
+ dynCode.setMakeOptions
+ (
+ "EXE_INC = -g \\\n"
+ "-I$(LIB_SRC)/finiteVolume/lnInclude \\\n"
+ "-I$(LIB_SRC)/fvMotionSolvers/lnInclude \\\n"
+ "-I$(LIB_SRC)/dynamicMesh/lnInclude \\\n"
+ "-I$(LIB_SRC)/meshTools/lnInclude \\\n"
+ + context.options()
+ + "\n\nLIB_LIBS = \\\n"
+ + " -lfvMotionSolvers \\\n"
+ + context.libs()
+ );
+}
+
+
+Foam::dlLibraryTable& Foam::codedPoints0MotionSolver::libs() const
+{
+ return const_cast