From 4645c841ca4f55531f66dddd1bf60548bac32cef Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Wed, 10 Oct 2018 12:40:48 +0100
Subject: [PATCH] ENH: coordinateSystem: fix cloning. See #863

---
 src/meshTools/coordinate/systems/cartesianCS.H      | 6 ++++++
 src/meshTools/coordinate/systems/coordinateSystem.H | 2 +-
 src/meshTools/coordinate/systems/cylindricalCS.H    | 7 +++++++
 src/meshTools/coordinate/systems/indirectCS.H       | 6 ++++++
 4 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/meshTools/coordinate/systems/cartesianCS.H b/src/meshTools/coordinate/systems/cartesianCS.H
index 860cb6b8005..94d712ed58d 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 619f2af5f61..e57f691e61f 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 8a8291251c8..53c7349260f 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 1fd334218cd..2ae4160cd55 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;
-- 
GitLab