From bf95e4cf81d948691950258c262ea996ad2b577a Mon Sep 17 00:00:00 2001
From: Luca Cornolti <>
Date: Fri, 6 Oct 2023 15:52:28 +0100
Subject: [PATCH] BUG: wallFunctions: correct blending terms (fixes #2770)

---
 .../nutUWallFunctionFvPatchScalarField.C                 | 9 +++++----
 .../nutkWallFunctionFvPatchScalarField.C                 | 8 +++++---
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUWallFunction/nutUWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUWallFunction/nutUWallFunctionFvPatchScalarField.C
index af072fe580c..f64f65edcac 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUWallFunction/nutUWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUWallFunction/nutUWallFunctionFvPatchScalarField.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016 OpenFOAM Foundation
-    Copyright (C) 2019-2021 OpenCFD Ltd.
+    Copyright (C) 2019-2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -68,12 +68,11 @@ Foam::nutUWallFunctionFvPatchScalarField::calcNut() const
     forAll(yPlus, facei)
     {
         // Viscous sublayer contribution
-        const scalar nutVis = 0;
+        const scalar nutVis = nuw[facei];
 
         // Inertial sublayer contribution
         const scalar nutLog =
-            nuw[facei]
-           *(yPlus[facei]*kappa/log(max(E*yPlus[facei], 1 + 1e-4)) - 1.0);
+            nuw[facei]*yPlus[facei]*kappa/log(max(E*yPlus[facei], 1 + 1e-4));
 
         switch (blender_)
         {
@@ -132,6 +131,8 @@ Foam::nutUWallFunctionFvPatchScalarField::calcNut() const
                 break;
             }
         }
+
+        nutw[facei] -= nuw[facei];
     }
 
     return tnutw;
diff --git a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C
index 8d9e40ea65d..d0d89ec7180 100644
--- a/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C
+++ b/src/TurbulenceModels/turbulenceModels/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2011-2016, 2019 OpenFOAM Foundation
-    Copyright (C) 2019-2022 OpenCFD Ltd.
+    Copyright (C) 2019-2023 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -72,11 +72,11 @@ calcNut() const
         const scalar yPlus = Cmu25*y[facei]*sqrt(k[celli])/nuw[facei];
 
         // Viscous sublayer contribution
-        const scalar nutVis = 0;
+        const scalar nutVis = nuw[facei];
 
         // Inertial sublayer contribution
         const scalar nutLog =
-            nuw[facei]*(yPlus*kappa/log(max(E*yPlus, 1 + 1e-4)) - 1.0);
+            nuw[facei]*yPlus*kappa/log(max(E*yPlus, 1 + 1e-4));
 
         switch (blender_)
         {
@@ -134,6 +134,8 @@ calcNut() const
                 break;
             }
         }
+
+        nutw[facei] -= nuw[facei];
     }
 
     return tnutw;
-- 
GitLab