diff --git a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.C b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.C
index f330aecfcfaaac218b2b56be33c56babd3e3f033..b216cf1f207a8375ce041612c2c89285f41a0f55 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.C
+++ b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.C
@@ -166,6 +166,25 @@ tmp<volScalarField> DESModel<BasicTurbulenceModel>::Ssigma
 }
 
 
+template<class BasicTurbulenceModel>
+tmp<volScalarField> DESModel<BasicTurbulenceModel>::fd() const
+{
+    return tmp<volScalarField>::New
+    (
+        IOobject
+        (
+            "fd",
+            this->mesh_.time().timeName(),
+            this->mesh_,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE
+        ),
+        this->mesh_,
+        dimensionedScalar(dimless, Zero)
+    );
+}
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace LESModels
diff --git a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.H b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.H
index 9570a12bb946ddd5fc9c61fa607711c142a7d993..1efac2db0f1614a98578382c98ebed7bd51479e1 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.H
+++ b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModel.H
@@ -120,7 +120,10 @@ public:
 
         //- Return modified strain rate
         //  Note: uses Ctrans_ coefficient
-        tmp<volScalarField> Ssigma(const volTensorField& gradU) const;
+        virtual tmp<volScalarField> Ssigma(const volTensorField& gradU) const;
+
+        //- Return the shielding function
+        virtual tmp<volScalarField> fd() const;
 };
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.C b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.C
index 911c1411a86b05c02c3f885ff5f876a6deb7964f..c99fdcad27c68441785f08dd0b410276386f327d 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.C
+++ b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.C
@@ -23,16 +23,6 @@ License
     You should have received a copy of the GNU General Public License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
-Class
-    Foam::DESModelBase
-
-Description
-    Base class for DES models providing an interfaces to the LESRegion
-    function.
-
-SourceFiles
-    DESModelBase.C
-
 \*---------------------------------------------------------------------------*/
 
 #include "DESModelBase.H"
diff --git a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.H b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.H
index c437ec6c289a209915cfb7162d964b72412ecd08..fa16efe5d1a7b48ef97570799d74181f8eb342e9 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.H
+++ b/src/TurbulenceModels/turbulenceModels/DES/DESModel/DESModelBase.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2015 OpenFOAM Foundation
-    Copyright (C) 2019 OpenCFD Ltd.
+    Copyright (C) 2019-2022 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -28,8 +28,7 @@ Class
     Foam::DESModelBase
 
 Description
-    Base class for DES models providing an interfaces to the LESRegion
-    function.
+    Base class for DES models providing an interfaces to DES fields.
 
 SourceFiles
     DESModelBase.C
@@ -70,6 +69,9 @@ public:
 
         //- Return the LES field indicator
         virtual tmp<volScalarField> LESRegion() const = 0;
+
+        //- Return the shielding function
+        virtual tmp<volScalarField> fd() const = 0;
 };
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.C b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.C
index 4c75b3c72d514e516d39743de2e2c561e35b84de..1eec436b360ff78ef7f0f5531ec4174befa88ecb 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.C
+++ b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.C
@@ -189,6 +189,13 @@ bool SpalartAllmarasDDES<BasicTurbulenceModel>::read()
 }
 
 
+template<class BasicTurbulenceModel>
+tmp<volScalarField> SpalartAllmarasDDES<BasicTurbulenceModel>::fd() const
+{
+    return fd(mag(fvc::grad(this->U_)));
+}
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace LESModels
diff --git a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.H b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.H
index 17d3ede0ee9fb397c9436dfdda527f60dc5d5bdf..61b42412377a0212f85f0d198765f49e47e29cfc 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.H
+++ b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasDDES/SpalartAllmarasDDES.H
@@ -147,6 +147,9 @@ public:
 
         //- Read from dictionary
         virtual bool read();
+
+        //- Return the shielding function
+        virtual tmp<volScalarField> fd() const;
 };
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.C b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.C
index 03f7ea3517b2c6fe3f1d0e7acc89a23da797484e..514c894e5a20d9d1a150cdc41a8b025bd1a30cf9 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.C
+++ b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.C
@@ -236,6 +236,17 @@ bool SpalartAllmarasIDDES<BasicTurbulenceModel>::read()
 }
 
 
+template<class BasicTurbulenceModel>
+tmp<volScalarField> SpalartAllmarasIDDES<BasicTurbulenceModel>::fd() const
+{
+    const volScalarField alpha(this->alpha());
+    const volScalarField expTerm(exp(sqr(alpha)));
+
+    tmp<volScalarField> fB = min(2*pow(expTerm, -9.0), scalar(1));
+    return max(1 - fdt(mag(fvc::grad(this->U_))), fB);
+}
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace LESModels
diff --git a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H
index 470a05647f4eb33fd3bf68319f35ebed6332c5f9..f3901ad5fe5ee1c540685ddde885cf840f74980f 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H
+++ b/src/TurbulenceModels/turbulenceModels/DES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H
@@ -153,6 +153,9 @@ public:
 
         //- Re-read model coefficients if they have changed
         virtual bool read();
+
+        //- Return the shielding function
+        virtual tmp<volScalarField> fd() const;
 };
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.C b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.C
index 2eff1bb0d5102f9922b51137d293ddfcba4519ca..16907d266df74b659c40a0b5d4532b59f0e0b835 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.C
+++ b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.C
@@ -201,6 +201,13 @@ bool kOmegaSSTDDES<BasicTurbulenceModel>::read()
 }
 
 
+template<class BasicTurbulenceModel>
+tmp<volScalarField> kOmegaSSTDDES<BasicTurbulenceModel>::fd() const
+{
+    return fd(mag(fvc::grad(this->U_)));
+}
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace LESModels
diff --git a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.H b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.H
index f572216a3a36db4f9a561af7e3a9338e722b8a26..54e4c711a1e23e8e67c18d15ae8dc4a42edf64db 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.H
+++ b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDDES/kOmegaSSTDDES.H
@@ -157,6 +157,9 @@ public:
 
         //- Re-read model coefficients if they have changed
         virtual bool read();
+
+        //- Return the shielding function
+        virtual tmp<volScalarField> fd() const;
 };
 
 
diff --git a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDES/kOmegaSSTDES.H b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDES/kOmegaSSTDES.H
index 114633c9190c3d3e75515b8cee24e23107c722c4..b6b035cfca8a13e1c7e421d6bc9b442bf303008e 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDES/kOmegaSSTDES.H
+++ b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTDES/kOmegaSSTDES.H
@@ -93,7 +93,7 @@ protected:
 
             dimensionedScalar kappa_;
 
-	    //- DES coefficients
+            //- DES coefficients
             dimensionedScalar CDESkom_;
             dimensionedScalar CDESkeps_;
 
diff --git a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.C b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.C
index 5b18937f9eda57f3cfa6b9d432eb956491d2e074..c955da513262313cf2ff5ab45c8be8650bd69d09 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.C
+++ b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.C
@@ -231,6 +231,17 @@ bool kOmegaSSTIDDES<BasicTurbulenceModel>::read()
 }
 
 
+template<class BasicTurbulenceModel>
+tmp<volScalarField> kOmegaSSTIDDES<BasicTurbulenceModel>::fd() const
+{
+    const volScalarField alpha(this->alpha());
+    const volScalarField expTerm(exp(sqr(alpha)));
+
+    tmp<volScalarField> fB = min(2*pow(expTerm, -9.0), scalar(1));
+    return max(1 - fdt(mag(fvc::grad(this->U_))), fB);
+}
+
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace LESModels
diff --git a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.H b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.H
index 7b9d4b7d052a55c7bdf72e1c78f4660cd2ea8536..d5695afba87dc4c42896450519451218093eb320 100644
--- a/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.H
+++ b/src/TurbulenceModels/turbulenceModels/DES/kOmegaSSTIDDES/kOmegaSSTIDDES.H
@@ -149,6 +149,9 @@ public:
 
         //- Re-read model coefficients if they have changed
         virtual bool read();
+
+        //- Return the shielding function
+        virtual tmp<volScalarField> fd() const;
 };