From 07ccd80afdd7873966149d2d1e544ef10b24c2ca Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Fri, 11 Feb 2022 14:23:33 +0100
Subject: [PATCH] BUG: sample/store surface field triggers dimension check
 (fixes #2361)

- when used for example with wallShearStress, the stress field is
  initially created as incompressible but later updated with the
  correct compressible/incompressible dimensions.

  If this field is sampled as a surface and stored on the registry
  the dimensions should be reset() and not '=' assigned, since that
  causes a dimension check which will obviously fail.
---
 src/surfMesh/polySurface/polySurfaceTemplates.C | 6 +++---
 src/surfMesh/surfMesh/surfMeshTemplates.C       | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/src/surfMesh/polySurface/polySurfaceTemplates.C b/src/surfMesh/polySurface/polySurfaceTemplates.C
index 4d697eb0393..39464f6eb91 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 cf14e9d7446..e777844f6db 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
-- 
GitLab