diff --git a/src/turbulenceModels/LES/incompressible/SpalartAllmarasDDES/SpalartAllmarasDDES.C b/src/turbulenceModels/LES/incompressible/SpalartAllmarasDDES/SpalartAllmarasDDES.C
new file mode 100644
index 0000000000000000000000000000000000000000..6f5435a2681eca7e0a7587a33d319bbad43b934e
--- /dev/null
+++ b/src/turbulenceModels/LES/incompressible/SpalartAllmarasDDES/SpalartAllmarasDDES.C
@@ -0,0 +1,120 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "SpalartAllmarasDDES.H"
+#include "addToRunTimeSelectionTable.H"
+#include "wallDist.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace incompressible
+{
+namespace LESModels
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(SpalartAllmarasDDES, 0);
+addToRunTimeSelectionTable(LESModel, SpalartAllmarasDDES, dictionary);
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+tmp<volScalarField> SpalartAllmarasDDES::rd
+(
+    const volScalarField& visc,
+    const volScalarField& S
+) const
+{
+    volScalarField d = wallDist(mesh_).y();
+
+    tmp<volScalarField> trd
+    (
+        new volScalarField
+        (
+            min
+            (
+                visc
+               /(
+                    max
+                    (
+                        S,
+                        dimensionedScalar("SMALL", S.dimensions(), SMALL)
+                    )*sqr(kappa_*d)
+                  + dimensionedScalar
+                    (
+                        "ROOTVSMALL",
+                        dimensionSet(0, 2 , -1, 0, 0),
+                        ROOTVSMALL
+                    )
+                ), scalar(10.0)
+            )
+        )
+    );
+
+    return trd;
+}
+
+
+tmp<volScalarField> SpalartAllmarasDDES::fd(const volScalarField& S)
+{
+    return 1.0 - tanh(pow3(8.0*rd(nuSgs_ + transport().nu(), S)));
+}
+
+
+void SpalartAllmarasDDES::dTildaUpdate(const volScalarField& S)
+{
+    dTilda_ =
+        wallDist(mesh_).y()
+      - fd(S)*max
+        (
+            dimensionedScalar("zero", dimLength, 0.0),
+            wallDist(mesh_).y() - CDES_*delta()
+        );
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+SpalartAllmarasDDES::SpalartAllmarasDDES
+(
+    const volVectorField& U,
+    const surfaceScalarField& phi,
+    transportModel& transport
+)
+:
+    SpalartAllmaras(U, phi, transport, typeName)
+{}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace LESModels
+} // End namespace incompressible
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/turbulenceModels/LES/incompressible/SpalartAllmarasDDES/SpalartAllmarasDDES.H b/src/turbulenceModels/LES/incompressible/SpalartAllmarasDDES/SpalartAllmarasDDES.H
new file mode 100644
index 0000000000000000000000000000000000000000..d905c34710d36c3804a2cd41619f616ba954220d
--- /dev/null
+++ b/src/turbulenceModels/LES/incompressible/SpalartAllmarasDDES/SpalartAllmarasDDES.H
@@ -0,0 +1,118 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::LESmodels::SpalartAllmarasDDES
+
+Description
+    SpalartAllmaras DDES LES turbulence model for incompressible flows
+
+    Reference:
+    P.R. Spalart, S. Deck, S., M.L.Shur, K.D. Squires, M.Kh Strelets, and
+    A. Travin. `A new version of detached-eddy simulation, resistant to
+    ambiguous grid densities'. Theor. Comp. Fluid Dyn., 20:181-195, 2006.
+
+SourceFiles
+    SpalartAllmarasDDES.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef SpalartAllmarasDDES_H
+#define SpalartAllmarasDDES_H
+
+#include "SpalartAllmaras.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace incompressible
+{
+namespace LESModels
+{
+
+/*---------------------------------------------------------------------------*\
+                        Class SpalartAllmarasDDES Declaration
+\*---------------------------------------------------------------------------*/
+
+class SpalartAllmarasDDES
+:
+    public SpalartAllmaras
+{
+    // Private member functions
+
+        // Disallow default bitwise copy construct and assignment
+        SpalartAllmarasDDES(const SpalartAllmarasDDES&);
+        SpalartAllmarasDDES& operator=(const SpalartAllmarasDDES&);
+
+
+protected:
+
+    // Protected member functions
+
+        tmp<volScalarField> fd(const volScalarField& S);
+        tmp<volScalarField> rd
+        (
+            const volScalarField& visc,
+            const volScalarField& S
+        ) const;
+
+        //- Length scale calculation
+        virtual void dTildaUpdate(const volScalarField& S);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("SpalartAllmarasDDES");
+
+
+    // Constructors
+
+        //- Constructor from components
+        SpalartAllmarasDDES
+        (
+            const volVectorField& U,
+            const surfaceScalarField& phi,
+            transportModel& transport
+        );
+
+
+    //- Destructor
+    virtual ~SpalartAllmarasDDES()
+    {}
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace LESModels
+} // End namespace incompressible
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/turbulenceModels/LES/incompressible/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.C b/src/turbulenceModels/LES/incompressible/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.C
new file mode 100644
index 0000000000000000000000000000000000000000..36e6a46a4ebdef8f936a2f3023c4835d8a1048d0
--- /dev/null
+++ b/src/turbulenceModels/LES/incompressible/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.C
@@ -0,0 +1,140 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2008 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "IDDESDelta.H"
+#include "addToRunTimeSelectionTable.H"
+#include "wallDist.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(IDDESDelta, 0);
+    addToRunTimeSelectionTable(LESdelta, IDDESDelta, dictionary);
+}
+
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+void Foam::IDDESDelta::calcDelta()
+{
+    const Vector<label>& directions = mesh().directions();
+    label nD = (directions.nComponents + cmptSum(directions))/2;
+
+    // - Init hwn as wall distant.
+    volScalarField hwn = wallDist(mesh()).y();
+
+    scalar deltamaxTmp = 0.;
+
+    const cellList& cells = mesh().cells();
+
+    forAll(cells,cellI)
+    {
+        scalar deltaminTmp = 1.e10;
+        const labelList& cFaces = mesh().cells()[cellI];
+        const point& centrevector = mesh().cellCentres()[cellI];
+
+        forAll(cFaces, cFaceI)
+        {
+            label faceI = cFaces[cFaceI];
+            const point& facevector = mesh().faceCentres()[faceI];
+            scalar tmp = mag(facevector-centrevector);
+            if (tmp > deltamaxTmp)
+            {
+                deltamaxTmp = tmp;
+            }
+            if (tmp < deltaminTmp)
+            {
+                deltaminTmp = tmp;
+            }
+        }
+        hwn[cellI] = 2.0*deltaminTmp;
+    }
+
+    dimensionedScalar deltamax("deltamax",dimLength,2.0*deltamaxTmp);
+
+    if (nD == 3)
+    {
+        delta_.internalField() =
+            deltaCoeff_
+           *min(max(max(cw_*wallDist(mesh()).y(),cw_*deltamax),hwn),deltamax);
+    }
+    else if (nD == 2)
+    {
+        WarningIn("IDDESDelta::calcDelta()")
+            << "Case is 2D, LES is not strictly applicable\n"
+            << endl;
+
+        delta_.internalField() =
+            deltaCoeff_
+           *min(max(max(cw_*wallDist(mesh()).y(),cw_*deltamax),hwn),deltamax);
+    }
+    else
+    {
+        FatalErrorIn("IDDESDelta::calcDelta()")
+            << "Case is not 3D or 2D, LES is not applicable"
+            << exit(FatalError);
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::IDDESDelta::IDDESDelta
+(
+    const word& name,
+    const fvMesh& mesh,
+    const dictionary& dd
+)
+:
+    LESdelta(name, mesh),
+    deltaCoeff_(readScalar(dd.subDict(type() + "Coeffs").lookup("deltaCoeff"))),
+    cw_(0)
+{
+    dd.subDict(type() + "Coeffs").readIfPresent("cw", cw_);
+    calcDelta();
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::IDDESDelta::read(const dictionary& dd)
+{
+    dd.subDict(type() + "Coeffs").lookup("deltaCoeff") >> deltaCoeff_;
+    calcDelta();
+}
+
+
+void Foam::IDDESDelta::correct()
+{
+    if (mesh_.changing())
+    {
+        calcDelta();
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/turbulenceModels/LES/incompressible/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.H b/src/turbulenceModels/LES/incompressible/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.H
new file mode 100644
index 0000000000000000000000000000000000000000..a53d1127d284b0019b281dc4385469b00ab42c00
--- /dev/null
+++ b/src/turbulenceModels/LES/incompressible/SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.H
@@ -0,0 +1,113 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2008 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::IDDESDelta
+
+Description
+    IDDESDelta used by the IDDES (improved low Re Spalart-Allmaras DES model)
+    The min and max delta are calculated using the double distance of the min or
+    max from the face centre to the cell centre.
+
+SourceFiles
+    IDDESDelta.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef IDDESDeltaDelta_H
+#define IDDESDeltaDelta_H
+
+#include "LESdelta.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                    Class IDDESDelta Declaration
+\*---------------------------------------------------------------------------*/
+
+class IDDESDelta
+:
+    public LESdelta
+{
+    // Private data
+
+        scalar deltaCoeff_;
+        scalar cw_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct and assignment
+        IDDESDelta(const IDDESDelta&);
+        void operator=(const IDDESDelta&);
+
+        //- Calculate the delta values
+        void calcDelta();
+
+
+public:
+
+    //- Runtime type information
+    TypeName("IDDESDelta");
+
+
+    // Constructors
+
+        //- Construct from name, mesh and IOdictionary
+        IDDESDelta
+        (
+            const word& name,
+            const fvMesh& mesh,
+            const dictionary&
+        );
+
+
+    // Destructor
+
+        ~IDDESDelta()
+        {}
+
+
+    // Member Functions
+
+        //- Read the LESdelta dictionary
+        void read(const dictionary&);
+
+        // Correct values
+        void correct();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/turbulenceModels/LES/incompressible/SpalartAllmarasIDDES/SpalartAllmarasIDDES.C b/src/turbulenceModels/LES/incompressible/SpalartAllmarasIDDES/SpalartAllmarasIDDES.C
new file mode 100644
index 0000000000000000000000000000000000000000..b58c9557d44a8823dec6c674f0f223c3a037a379
--- /dev/null
+++ b/src/turbulenceModels/LES/incompressible/SpalartAllmarasIDDES/SpalartAllmarasIDDES.C
@@ -0,0 +1,214 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "SpalartAllmarasIDDES.H"
+#include "addToRunTimeSelectionTable.H"
+#include "wallDist.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace incompressible
+{
+namespace LESModels
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(SpalartAllmarasIDDES, 0);
+addToRunTimeSelectionTable(LESModel, SpalartAllmarasIDDES, dictionary);
+
+// * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * * //
+
+tmp<volScalarField> SpalartAllmarasIDDES::alpha() const
+{
+    return
+        0.25
+      - wallDist(mesh_).y()
+       /dimensionedScalar("hMax", dimLength, max(cmptMax(delta())));
+}
+
+
+tmp<volScalarField> SpalartAllmarasIDDES::ft(const volScalarField& S) const
+{
+    return tanh(pow3(sqr(ct_)*r(nuSgs_, S)));
+}
+
+
+tmp<volScalarField> SpalartAllmarasIDDES::fl(const volScalarField& S) const
+{
+    return tanh(pow(sqr(cl_)*r(transport().nu(), S), 10));
+}
+
+
+tmp<volScalarField> SpalartAllmarasIDDES::rd
+(
+    const volScalarField& visc,
+    const volScalarField& S
+) const
+{
+    volScalarField d = wallDist(mesh_).y();
+
+    tmp<volScalarField> trd
+    (
+        new volScalarField
+        (
+            min
+            (
+                visc
+               /(
+                   max
+                   (
+                       S,
+                       dimensionedScalar("SMALL", S.dimensions(), SMALL)
+                   )*sqr(kappa_*d)
+                 + dimensionedScalar
+                   (
+                       "ROOTVSMALL",
+                       dimensionSet(0, 2 , -1, 0, 0),
+                       ROOTVSMALL
+                   )
+               ), scalar(10.0)
+            )
+        )
+    );
+
+    return trd;
+}
+
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+tmp<volScalarField> SpalartAllmarasIDDES::fd(const volScalarField& S) const
+{
+    return 1.0 - tanh(pow3(8.0*rd(nuSgs_+transport().nu(), S)));
+}
+
+
+void SpalartAllmarasIDDES::dTildaUpdate(const volScalarField& S)
+{
+    volScalarField alpha = this->alpha();
+
+    volScalarField expTerm = exp(sqr(alpha));
+
+    volScalarField fHill =
+        2.0*(pos(alpha)*pow(expTerm, -11.09) + neg(alpha)*pow(expTerm, -9.0));
+
+
+    volScalarField fStep = min(2.0*pow(expTerm, -9.0), 1.0);
+    volScalarField fHyb = max(1.0 - fd(S), fStep);
+
+    volScalarField fAmp = 1.0 - max(ft(S), fl(S));
+
+    volScalarField fRestore = max(fHill - 1.0, 0.0)*fAmp;
+
+    // volScalarField ft2 = IGNORING ft2 terms
+
+    volScalarField Psi = sqrt
+    (
+        min
+        (
+            100.0,
+            (1.0 - Cb1_/(Cw1_*sqr(kappa_)*fwStar_)*fv2())/max(SMALL, fv1())
+        )
+    );
+
+    dTilda_ = max
+    (
+        dimensionedScalar("zero", dimLength, 0.0),
+        fHyb*(1.0 + fRestore*Psi)*wallDist(mesh_).y()
+      + (1.0 - fHyb)*CDES_*Psi*delta()
+    );
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+SpalartAllmarasIDDES::SpalartAllmarasIDDES
+(
+    const volVectorField& U,
+    const surfaceScalarField& phi,
+    transportModel& transport
+)
+:
+    SpalartAllmaras(U, phi, transport, typeName),
+
+    fwStar_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "fwStar",
+            coeffDict(),
+            0.424
+        )
+    ),
+    cl_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "cl",
+            coeffDict(),
+            3.55
+        )
+    ),
+    ct_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "ct",
+            coeffDict(),
+            1.63
+        )
+    )
+
+{}
+
+
+bool SpalartAllmarasIDDES::read()
+{
+    if (SpalartAllmaras::read())
+    {
+        fwStar_.readIfPresent(coeffDict());
+        cl_.readIfPresent(coeffDict());
+        ct_.readIfPresent(coeffDict());
+
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace LESModels
+} // End namespace incompressible
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/turbulenceModels/LES/incompressible/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H b/src/turbulenceModels/LES/incompressible/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H
new file mode 100644
index 0000000000000000000000000000000000000000..d07b53672c007929893e099ce2ef8c6b7b04a428
--- /dev/null
+++ b/src/turbulenceModels/LES/incompressible/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H
@@ -0,0 +1,132 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::LESmodels::SpalartAllmarasIDDES
+
+Description
+    SpalartAllmarasIDDES LES turbulence model for incompressible flows
+
+SourceFiles
+    SpalartAllmarasIDDES.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef SpalartAllmarasIDDES_H
+#define SpalartAllmarasIDDES_H
+
+#include "SpalartAllmaras.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace incompressible
+{
+namespace LESModels
+{
+
+/*---------------------------------------------------------------------------*\
+                        Class SpalartAllmarasIDDES Declaration
+\*---------------------------------------------------------------------------*/
+
+class SpalartAllmarasIDDES
+:
+    public SpalartAllmaras
+{
+    // Private data
+
+        // Model constants
+
+            dimensionedScalar fwStar_;
+            dimensionedScalar cl_;
+            dimensionedScalar ct_;
+
+
+    // Private member functions
+
+        tmp<volScalarField> alpha() const;
+        tmp<volScalarField> ft(const volScalarField& S) const;
+        tmp<volScalarField> fl(const volScalarField& S) const;
+        tmp<volScalarField> rd
+        (
+            const volScalarField& visc,
+            const volScalarField& S
+        ) const;
+
+        // Disallow default bitwise copy construct and assignment
+        SpalartAllmarasIDDES(const SpalartAllmarasIDDES&);
+        SpalartAllmarasIDDES& operator=(const SpalartAllmarasIDDES&);
+
+
+protected:
+
+    // Protected member functions
+
+        //- Delay function
+        tmp<volScalarField> fd(const volScalarField& S) const;
+
+        //- Length scale calculation
+        virtual void dTildaUpdate(const volScalarField& S);
+
+public:
+
+    //- Runtime type information
+    TypeName("SpalartAllmarasIDDES");
+
+
+    // Constructors
+
+        //- Constructor from components
+        SpalartAllmarasIDDES
+        (
+            const volVectorField& U,
+            const surfaceScalarField& phi,
+            transportModel& transport
+        );
+
+
+    //- Destructor
+    virtual ~SpalartAllmarasIDDES()
+    {}
+
+
+    // Member Functions
+
+        //- Read turbulenceProperties dictionary
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace LESModels
+} // End namespace incompressible
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //