From 77e98b0e60909540942963eccca16f594166519e Mon Sep 17 00:00:00 2001
From: Shannon Leakey <>
Date: Mon, 7 Jun 2021 17:26:09 +0100
Subject: [PATCH] BUG: cellLimited<cubic>: ensure the limiter is differentiable
 (fixes #2113)

---
 CONTRIBUTORS.md                               |  1 +
 .../gradientLimiters/cubicGradientLimiter.H   | 21 ++++++++++---------
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index c3ca4001efa..03a09ffecb1 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -24,6 +24,7 @@ It is likely incomplete...
 - Hrvoje Jasak
 - Alexander Kabat vel Job
 - Thilo Knacke
+- Shannon Leakey
 - Tommaso Lucchini
 - Graham Macpherson
 - Alexey Matveichev
diff --git a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/gradientLimiters/cubicGradientLimiter.H b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/gradientLimiters/cubicGradientLimiter.H
index 0aea906ca64..68089e82cc8 100644
--- a/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/gradientLimiters/cubicGradientLimiter.H
+++ b/src/finiteVolume/finiteVolume/gradSchemes/limitedGradSchemes/cellLimitedGrad/gradientLimiters/cubicGradientLimiter.H
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2018 OpenFOAM Foundation
+    Copyright (C) 2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -24,7 +25,7 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::fv::gradientLimiters::minmod
+    Foam::fv::gradientLimiters::cubic
 
 Description
     Cubic gradient limiter
@@ -44,9 +45,11 @@ Description
         Michalak, K., & Ollivier-Gooch, C. (2008).
         Limiters for unstructured higher-order accurate solutions
         of the Euler equations.
-        In 46th AIAA Aerospace Sciences Meeting and Exhibit (p. 776).
+        In 46th AIAA Aerospace Sciences Meeting and Exhibition.
+        DOI:10.2514/6.2008-776
     \endverbatim
 
+Usage
     Example:
     \verbatim
     gradSchemes
@@ -57,8 +60,8 @@ Description
     \endverbatim
 
 See also
-    Foam::fv::cellLimitedGrad
-    Foam::fv::gradientLimiters::Venkatakrishnan
+  - Foam::fv::cellLimitedGrad
+  - Foam::fv::gradientLimiters::Venkatakrishnan
 
 \*---------------------------------------------------------------------------*/
 
@@ -102,8 +105,8 @@ public:
         cubic(Istream& schemeData)
         :
             rt_(readScalar(schemeData)),
-            a_(2.0/sqr(rt_) - 2.0/pow3(rt_)),
-            b_(-(3.0/2.0)*a_*rt_)
+            a_((rt_ - 2)/pow3(rt_)),
+            b_(-(3*a_*sqr(rt_) + 1)/(2*rt_))
         {
             if (rt_ < 1)
             {
@@ -123,10 +126,8 @@ public:
             {
                 return ((a_*r + b_)*r + 1)*r;
             }
-            else
-            {
-                return 1;
-            }
+
+            return 1;
         }
 };
 
-- 
GitLab