diff --git a/src/surfMesh/polySurface/polySurfaceTemplates.C b/src/surfMesh/polySurface/polySurfaceTemplates.C
index 4d697eb0393606d658c9898189de2302c12b65c6..39464f6eb91945a4dec7dd2cfacdd9c6f3f6f2b1 100644
--- a/src/surfMesh/polySurface/polySurfaceTemplates.C
+++ b/src/surfMesh/polySurface/polySurfaceTemplates.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2022 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -107,7 +107,7 @@ void Foam::polySurface::storeField
 
     if (dimfield)
     {
-        dimfield->dimensions() = dims;
+        dimfield->dimensions().reset(dims);  // Dimensions may have changed
         dimfield->field() = values;
     }
     else
@@ -148,7 +148,7 @@ void Foam::polySurface::storeField
 
     if (dimfield)
     {
-        dimfield->dimensions() = dims;
+        dimfield->dimensions().reset(dims);  // Dimensions may have changed
         dimfield->field() = std::move(values);
     }
     else
diff --git a/src/surfMesh/surfMesh/surfMeshTemplates.C b/src/surfMesh/surfMesh/surfMeshTemplates.C
index cf14e9d744622bbb1cdbbb3414c22757f536001d..e777844f6dbff36ab829546b5df20a08c5f67a3b 100644
--- a/src/surfMesh/surfMesh/surfMeshTemplates.C
+++ b/src/surfMesh/surfMesh/surfMeshTemplates.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2022 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -45,7 +45,7 @@ void Foam::surfMesh::storeField
 
     if (dimfield)
     {
-        dimfield->dimensions() = dims;
+        dimfield->dimensions().reset(dims);  // Dimensions may have changed
         dimfield->field() = values;
     }
     else
@@ -85,7 +85,7 @@ void Foam::surfMesh::storeField
 
     if (dimfield)
     {
-        dimfield->dimensions() = dims;
+        dimfield->dimensions().reset(dims);  // Dimensions may have changed
         dimfield->field() = std::move(values);
     }
     else