diff --git a/src/meshTools/coordinate/systems/cartesianCS.H b/src/meshTools/coordinate/systems/cartesianCS.H
index 860cb6b8005433819a7341fd22634c598e63eee8..94d712ed58d7c40b318a1f328e05b9aa3c228b43 100644
--- a/src/meshTools/coordinate/systems/cartesianCS.H
+++ b/src/meshTools/coordinate/systems/cartesianCS.H
@@ -115,6 +115,12 @@ public:
         //  \param dictName If non-empty, the sub-dictionary to use.
         cartesian(const dictionary& dict, const word& dictName);
 
+        //- Return clone
+        virtual autoPtr<coordinateSystem> clone() const
+        {
+            return autoPtr<coordinateSystem>::NewFrom<cartesian>(*this);
+        }
+
 
     //- Destructor
     virtual ~cartesian() = default;
diff --git a/src/meshTools/coordinate/systems/coordinateSystem.H b/src/meshTools/coordinate/systems/coordinateSystem.H
index 619f2af5f6168d0aad51b7c0d1cf838e1ab208a0..e57f691e61f251caf9e681d70a65f7f98caab27b 100644
--- a/src/meshTools/coordinate/systems/coordinateSystem.H
+++ b/src/meshTools/coordinate/systems/coordinateSystem.H
@@ -327,7 +327,7 @@ public:
 
 
     //- Return clone
-    autoPtr<coordinateSystem> clone() const
+    virtual autoPtr<coordinateSystem> clone() const
     {
         return autoPtr<coordinateSystem>::New(*this);
     }
diff --git a/src/meshTools/coordinate/systems/cylindricalCS.H b/src/meshTools/coordinate/systems/cylindricalCS.H
index 8a8291251c8b92139744e727ba730a86285badc3..53c7349260f833eed4cde57c3e8f93a774baf5d4 100644
--- a/src/meshTools/coordinate/systems/cylindricalCS.H
+++ b/src/meshTools/coordinate/systems/cylindricalCS.H
@@ -154,6 +154,13 @@ public:
         //  \param dictName If non-empty, the sub-dictionary to use.
         cylindrical(const dictionary& dict, const word& dictName);
 
+        //- Return clone
+        virtual autoPtr<coordinateSystem> clone() const
+        {
+            return autoPtr<coordinateSystem>::NewFrom<cylindrical>(*this);
+        }
+
+
     //- Destructor
     virtual ~cylindrical() = default;
 
diff --git a/src/meshTools/coordinate/systems/indirectCS.H b/src/meshTools/coordinate/systems/indirectCS.H
index 1fd334218cd4593e037f31dcbd14aec3fa60932b..2ae4160cd554d6c38285fbb373cc7b9d99a9e135 100644
--- a/src/meshTools/coordinate/systems/indirectCS.H
+++ b/src/meshTools/coordinate/systems/indirectCS.H
@@ -141,6 +141,12 @@ public:
         //- Construct from global lookup
         indirect(const objectRegistry& obr, const dictionary& dict);
 
+        //- Return clone
+        virtual autoPtr<coordinateSystem> clone() const
+        {
+            return autoPtr<coordinateSystem>::NewFrom<indirect>(*this);
+        }
+
 
     //- Destructor
     virtual ~indirect() = default;