diff --git a/Allwmake b/Allwmake
index 923b8ec4..0e091365 100755
--- a/Allwmake
+++ b/Allwmake
@@ -6,10 +6,12 @@ cd ${0%/*} || exit 1 # Run from this directory
wmake src/thermophysicalModels/thermophysicalProperties
wmake src/thermophysicalModels/basic
+wmake src/functionObjects/field
wmake src/CanteraMixture
wmake src/thermophysicalModels/SLGThermo
wmake src/dfChemistryModel
wmake src/TurbulenceModels/compressible
+wmake src/TurbulenceModels/turbulenceModels
wmake src/regionModels/surfaceFilmModels
src/lagrangian/Allwmake $targetType $*
diff --git a/examples/dfHighSpeedFoam/det_1D_H2_01mm/system/controlDict b/examples/dfHighSpeedFoam/det_1D_H2_01mm/system/controlDict
index 57ed5645..d4df3cef 100755
--- a/examples/dfHighSpeedFoam/det_1D_H2_01mm/system/controlDict
+++ b/examples/dfHighSpeedFoam/det_1D_H2_01mm/system/controlDict
@@ -14,7 +14,6 @@ FoamFile
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-libs ("libfieldFunctionObjects.so");
application dfHighSpeedFoam;
@@ -57,7 +56,7 @@ functions
minMax
{
type fieldMinMax;
- libs ("libfieldFunctionObjects.so");
+ libs ("libdfFieldFunctionObjects.so");
writeControl timeStep; //writeTime;
fields (p);
}
diff --git a/install.sh b/install.sh
index 5b216cfe..fb283220 100755
--- a/install.sh
+++ b/install.sh
@@ -27,12 +27,14 @@ else
mkdir -p src_orig/thermophysicalModels
mkdir -p src_orig/lagrangian
mkdir -p src_orig/regionModels
+ mkdir -p src_orig/functionObjects
cp -r $FOAM_SRC/TurbulenceModels/compressible src_orig/TurbulenceModels
cp -r $FOAM_SRC/thermophysicalModels/basic src_orig/thermophysicalModels
cp -r $FOAM_SRC/thermophysicalModels/thermophysicalProperties src_orig/thermophysicalModels
cp -r $FOAM_SRC/lagrangian/intermediate src_orig/lagrangian
cp -r $FOAM_SRC/lagrangian/turbulence src_orig/lagrangian
cp -r $FOAM_SRC/regionModels/surfaceFilmModels src_orig/regionModels
+ cp -r $FOAM_SRC/functionObjects/field src_orig/functionObjects
fi
diff --git a/src/TurbulenceModels/turbulenceModels/Make/files b/src/TurbulenceModels/turbulenceModels/Make/files
new file mode 100644
index 00000000..d07aef6b
--- /dev/null
+++ b/src/TurbulenceModels/turbulenceModels/Make/files
@@ -0,0 +1,3 @@
+makeTurbulentFluidThermoModels.C
+
+LIB = $(FOAM_USER_LIBBIN)/libdfTurbulenceModels
diff --git a/src/TurbulenceModels/turbulenceModels/Make/options b/src/TurbulenceModels/turbulenceModels/Make/options
new file mode 100755
index 00000000..9dabad9e
--- /dev/null
+++ b/src/TurbulenceModels/turbulenceModels/Make/options
@@ -0,0 +1,16 @@
+EXE_INC = \
+ -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
+ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
+ -I$(LIB_SRC)/transportModels/compressible/lnInclude \
+ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+ -I$(LIB_SRC)/finiteVolume/lnInclude \
+ -I$(LIB_SRC)/meshTools/lnInclude \
+
+LIB_LIBS = \
+ -lcompressibleTransportModels \
+ -lturbulenceModels \
+ -lfiniteVolume \
+ -lmeshTools \
+ -L$(FOAM_USER_LIBBIN) \
+ -ldfCompressibleTurbulenceModels \
+ -ldfFluidThermophysicalModels
diff --git a/src/TurbulenceModels/turbulenceModels/README.md b/src/TurbulenceModels/turbulenceModels/README.md
new file mode 100644
index 00000000..e115a136
--- /dev/null
+++ b/src/TurbulenceModels/turbulenceModels/README.md
@@ -0,0 +1,19 @@
+# TurbulenceModels
+
+## Using
+
+- Add the following line into your 'controlDict':
+
+ `libs ( "libdfTurbulenceModels.so" )`
+
+- In 'constant/turbulenceProperties', e.g. for Sigma model, set:
+
+ ```c++
+ simulationType LES;
+
+ LES
+ {
+ LESModel Sigma;
+ filter simple;
+ }
+ ```
diff --git a/src/TurbulenceModels/turbulenceModels/Sigma/Sigma.C b/src/TurbulenceModels/turbulenceModels/Sigma/Sigma.C
new file mode 100644
index 00000000..4f1ee33b
--- /dev/null
+++ b/src/TurbulenceModels/turbulenceModels/Sigma/Sigma.C
@@ -0,0 +1,186 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
+ \\/ 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 3 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, see .
+
+\*---------------------------------------------------------------------------*/
+
+#include "Sigma.H"
+#include "fvOptions.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace LESModels
+{
+
+// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
+
+template
+void Sigma::correctNut()
+{
+ tmp tgradU(fvc::grad(this->U_));
+ tensorField& gradU = tgradU.ref().primitiveFieldRef();
+ volScalarField Dsg(mag(fvc::grad(this->U_)));
+ scalarField& DsgCells = Dsg.primitiveFieldRef();
+ const cellList& cells = this->mesh().cells();
+ Switch zeroSigma = false;
+
+ forAll(cells,celli)
+ {
+ RectangularMatrix gradUMatrix(3,3);
+ for (label ii = 0; ii<3; ii++)
+ {
+ for (label jj = 0; jj<3; jj++)
+ {
+ gradUMatrix[ii][jj] = gradU[celli].component(ii*3+jj);
+ }
+ }
+
+ DiagonalMatrix sigmas(SVD(gradUMatrix).S());
+ scalar sigma_1(max(sigmas));
+ scalar sigma_2(sigma_1);
+ scalar sigma_3(min(sigmas));
+
+ for (label ii = 0; ii<3; ii++)
+ {
+ if(sigmas[ii]>=sigma_3 && sigmas[ii]<=sigma_1) sigma_2 = sigmas[ii];
+
+ if(sigmas[ii]<0)
+ {
+ WarningInFunction
+ << "Negative sigular values!!! sigmas = \n"
+ << sigmas <nut_ = sqr(Csg_*this->delta())*Dsg;
+ this->nut_.correctBoundaryConditions();
+ fv::options::New(this->mesh_).correct(this->nut_);
+
+ BasicTurbulenceModel::correctNut();
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+template
+Sigma::Sigma
+(
+ const alphaField& alpha,
+ const rhoField& rho,
+ const volVectorField& U,
+ const surfaceScalarField& alphaRhoPhi,
+ const surfaceScalarField& phi,
+ const transportModel& transport,
+ const word& propertiesName,
+ const word& type
+)
+:
+ LESeddyViscosity
+ (
+ type,
+ alpha,
+ rho,
+ U,
+ alphaRhoPhi,
+ phi,
+ transport,
+ propertiesName
+ ),
+ Csg_
+ (
+ dimensioned::lookupOrAddToDict
+ (
+ "Csg",
+ this->coeffDict_,
+ 1.5
+ )
+ ),
+ k_
+ (
+ IOobject
+ (
+ IOobject::groupName("k", this->U_.group()),
+ this->runTime_.timeName(),
+ this->mesh_,
+ IOobject::NO_READ,
+ IOobject::NO_WRITE
+ ),
+ this->mesh_,
+ dimensionedScalar ("k", dimensionSet(0,2,-2,0,0,0,0),SMALL)
+ ),
+ simpleFilter_(U.mesh()),
+ filterPtr_(LESfilter::New(U.mesh(), this->coeffDict())),
+ filter_(filterPtr_())
+{
+ if (type == typeName)
+ {
+ this->printCoeffs(type);
+ }
+}
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+template
+bool Sigma::read()
+{
+ if (LESeddyViscosity::read())
+ {
+ Csg_.read(this->coeffDict());
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+
+template
+void Sigma::correct()
+{
+ if (!this->turbulence_)
+ {
+ return;
+ }
+
+ LESeddyViscosity::correct();
+ correctNut();
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace LESModels
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/TurbulenceModels/turbulenceModels/Sigma/Sigma.H b/src/TurbulenceModels/turbulenceModels/Sigma/Sigma.H
new file mode 100644
index 00000000..ac9325a9
--- /dev/null
+++ b/src/TurbulenceModels/turbulenceModels/Sigma/Sigma.H
@@ -0,0 +1,170 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
+ \\/ 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 3 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, see .
+
+Class
+ Foam::LESModels::Sigma
+
+Description
+ Sigma is an eddy-viscosity SGS model, not only adapting to wall conditions
+ but also to laminar flows where nut should also vanish.
+
+ Reference:
+ \verbatim
+ F. Nicoud, H.B. Toda, O. Cabrit, S. Bose and J. Lee (2011).
+ Using singular values to build a subgrid-scale model
+ for large eddy simulations
+ Physics of Fluids, 23 (8), p. 085106.
+ \endverbatim
+
+ The default model coefficients are
+ \verbatim
+ SigmaCoeffs
+ {
+ filter simple;
+ Csg 1.5;
+ }
+ \endverbatim
+
+SourceFiles
+ Sigma.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef Sigma_H
+#define Sigma_H
+#include "SVD.H"
+
+#include "LESeddyViscosity.H"
+#include "simpleFilter.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace LESModels
+{
+
+/*---------------------------------------------------------------------------*\
+ Class Sigma Declaration
+\*---------------------------------------------------------------------------*/
+
+template
+class Sigma
+:
+ public LESeddyViscosity
+{
+ // Private Member Functions
+
+ // Disallow default bitwise copy construct and assignment
+ Sigma(const Sigma&);
+ void operator=(const Sigma&);
+
+
+protected:
+
+ // Protected data
+
+ dimensionedScalar Csg_;
+ volScalarField k_;
+
+ simpleFilter simpleFilter_;
+ autoPtr filterPtr_;
+ LESfilter& filter_;
+
+ // Protected Member Functions
+
+ virtual void correctNut();
+
+
+public:
+
+ typedef typename BasicTurbulenceModel::alphaField alphaField;
+ typedef typename BasicTurbulenceModel::rhoField rhoField;
+ typedef typename BasicTurbulenceModel::transportModel transportModel;
+
+ //- Runtime type information
+ TypeName("Sigma");
+
+
+ // Constructors
+
+ //- Construct from components
+ Sigma
+ (
+ const alphaField& alpha,
+ const rhoField& rho,
+ const volVectorField& U,
+ const surfaceScalarField& alphaRhoPhi,
+ const surfaceScalarField& phi,
+ const transportModel& transport,
+ const word& propertiesName = turbulenceModel::propertiesName,
+ const word& type = typeName
+ );
+
+
+ //- Destructor
+ virtual ~Sigma()
+ {}
+
+
+ // Member Functions
+
+ //- Read model coefficients if they have changed
+ virtual bool read();
+
+ //- Return SGS kinetic energy
+ virtual tmp k() const
+ {
+ return k_;
+ }
+
+ //- Return the effective diffusivity for k
+ tmp DkEff() const
+ {
+ return tmp
+ (
+ new volScalarField("DkEff", this->nut_ + this->nu())
+ );
+ }
+
+ //- Correct Eddy-Viscosity and related properties
+ virtual void correct();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace LESModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+ #include "Sigma.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/TurbulenceModels/turbulenceModels/dynamicSmagorinsky/dynamicSmagorinsky.C b/src/TurbulenceModels/turbulenceModels/dynamicSmagorinsky/dynamicSmagorinsky.C
new file mode 100644
index 00000000..4ce9541a
--- /dev/null
+++ b/src/TurbulenceModels/turbulenceModels/dynamicSmagorinsky/dynamicSmagorinsky.C
@@ -0,0 +1,207 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
+ \\/ 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 3 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, see .
+
+\*---------------------------------------------------------------------------*/
+
+#include "dynamicSmagorinsky.H"
+#include "fvOptions.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace LESModels
+{
+
+// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
+
+template
+void dynamicSmagorinsky::correctNut
+(
+ const tmp& gradU
+)
+{
+ this->nut_ = max(Cs_*sqr(this->delta())*mag(dev(symm(gradU))),-1.0*this->nu());
+ this->nut_.correctBoundaryConditions();
+ fv::options::New(this->mesh_).correct(this->nut_);
+
+ BasicTurbulenceModel::correctNut();
+}
+
+
+template
+void dynamicSmagorinsky::correctNut()
+{
+ correctNut(fvc::grad(this->U_));
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
+
+template
+dynamicSmagorinsky::dynamicSmagorinsky
+(
+ const alphaField& alpha,
+ const rhoField& rho,
+ const volVectorField& U,
+ const surfaceScalarField& alphaRhoPhi,
+ const surfaceScalarField& phi,
+ const transportModel& transport,
+ const word& propertiesName,
+ const word& type
+)
+:
+ LESeddyViscosity
+ (
+ type,
+ alpha,
+ rho,
+ U,
+ alphaRhoPhi,
+ phi,
+ transport,
+ propertiesName
+ ),
+ Cs_
+ (
+ IOobject
+ (
+ IOobject::groupName("Cs", this->U_.group()),
+ this->runTime_.timeName(),
+ this->mesh_,
+ IOobject::READ_IF_PRESENT,
+ IOobject::AUTO_WRITE
+ ),
+ this->mesh_,
+ dimensionedScalar ("Cs", dimless,SMALL)
+ ),
+ k_
+ (
+ IOobject
+ (
+ IOobject::groupName("k", this->U_.group()),
+ this->runTime_.timeName(),
+ this->mesh_,
+ IOobject::NO_READ,
+ IOobject::NO_WRITE
+ ),
+ this->mesh_,
+ dimensionedScalar ("k", dimensionSet(0,2,-2,0,0,0,0),SMALL)
+ ),
+ simpleFilter_(U.mesh()),
+ filterPtr_(LESfilter::New(U.mesh(), this->coeffDict())),
+ filter_(filterPtr_())
+{
+// bound(k_, this->kMin_); Not commented out by J.C. Massey
+
+ if (type == typeName)
+ {
+ this->printCoeffs(type);
+ }
+}
+
+// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
+
+template
+bool dynamicSmagorinsky::read()
+{
+ if (LESeddyViscosity::read())
+ {
+ filter_.read(this->coeffDict());
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+
+template
+void dynamicSmagorinsky::correct()
+{
+ if (!this->turbulence_)
+ {
+ return;
+ }
+
+ // Local references
+ const volVectorField& U = this->U_;
+
+ LESeddyViscosity::correct();
+
+ tmp tgradU(fvc::grad(U));
+ const volTensorField& gradU = tgradU();
+
+ volSymmTensorField S(dev(symm(gradU)));
+ volScalarField magS(mag(S));
+
+ volVectorField Uf(filter_(U));
+
+ volSymmTensorField Sf(filter_(S));
+// volSymmTensorField Sf(dev(symm(fvc::grad(Uf)))); Not commented out by J.C. Massey
+
+ volScalarField magSf(mag(Sf));
+
+
+ volSymmTensorField LL =
+ (dev(filter_(sqr(U)) - (sqr(filter_(U)))));
+
+ volSymmTensorField MM
+ (
+ sqr(this->delta())*(filter_(magS*S) - 4.0*magSf*Sf) // J.C. Massey - 4 comes from test filter size
+ );
+
+ volScalarField MMMM = fvc::average(magSqr(MM));
+ MMMM.max(VSMALL);
+
+// J.C. Massey - computed Cs here is the Smagorinsky constant squared to allow for backscatter
+ Cs_= 0.5* fvc::average(LL && MM)/MMMM;
+
+
+// J.C. Massey - Below is removed for calculation of k
+// volScalarField KK =
+// 0.5*(filter_(magSqr(U)) - magSqr(filter_(U)));
+
+// volScalarField mm
+// (
+// sqr(this->delta())*(4.0*sqr(mag(Sf)) - filter_(sqr(magS)))
+//
+// );
+
+// volScalarField mmmm = fvc::average(magSqr(mm));
+// mmmm.max(VSMALL);
+
+// k_ = fvc::average(KK*mm)/mmmm * sqr(this->delta())*magSqr(S);
+
+ correctNut(gradU);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace LESModels
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/TurbulenceModels/turbulenceModels/dynamicSmagorinsky/dynamicSmagorinsky.H b/src/TurbulenceModels/turbulenceModels/dynamicSmagorinsky/dynamicSmagorinsky.H
new file mode 100644
index 00000000..a7f954a8
--- /dev/null
+++ b/src/TurbulenceModels/turbulenceModels/dynamicSmagorinsky/dynamicSmagorinsky.H
@@ -0,0 +1,164 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
+ \\/ 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 3 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, see .
+
+Class
+ Foam::LESModels::dynamicSmagorinsky
+
+Description
+ Dynamic SGS model with local averaging, based on Germano and Lilly works.
+
+ The default model coefficients are
+ \verbatim
+ dynamicSmagorinskyCoeffs
+ {
+ filter simple;
+ }
+ \endverbatim
+
+SourceFiles
+ dynamicSmagorinsky.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef dynamicSmagorinsky_H
+#define dynamicSmagorinsky_H
+
+#include "LESeddyViscosity.H"
+#include "simpleFilter.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace LESModels
+{
+
+/*---------------------------------------------------------------------------*\
+ Class dynamicSmagorinsky Declaration
+\*---------------------------------------------------------------------------*/
+
+template
+class dynamicSmagorinsky
+:
+ public LESeddyViscosity
+{
+ // Private Member Functions
+
+ // Disallow default bitwise copy construct and assignment
+ dynamicSmagorinsky(const dynamicSmagorinsky&);
+ void operator=(const dynamicSmagorinsky&);
+
+
+protected:
+
+ // Protected data
+
+ volScalarField Cs_;
+ volScalarField k_;
+// volScalarField beta_;
+
+ simpleFilter simpleFilter_;
+ autoPtr filterPtr_;
+ LESfilter& filter_;
+
+
+ // Protected Member Functions
+
+ //- Update sub-grid eddy-viscosity
+ void correctNut(const tmp& gradU);
+
+ virtual void correctNut();
+
+
+public:
+
+ typedef typename BasicTurbulenceModel::alphaField alphaField;
+ typedef typename BasicTurbulenceModel::rhoField rhoField;
+ typedef typename BasicTurbulenceModel::transportModel transportModel;
+
+ //- Runtime type information
+ TypeName("dynamicSmagorinsky");
+
+
+ // Constructors
+
+ //- Construct from components
+ dynamicSmagorinsky
+ (
+ const alphaField& alpha,
+ const rhoField& rho,
+ const volVectorField& U,
+ const surfaceScalarField& alphaRhoPhi,
+ const surfaceScalarField& phi,
+ const transportModel& transport,
+ const word& propertiesName = turbulenceModel::propertiesName,
+ const word& type = typeName
+ );
+
+
+ //- Destructor
+ virtual ~dynamicSmagorinsky()
+ {}
+
+
+ // Member Functions
+
+ //- Read model coefficients if they have changed
+ virtual bool read();
+
+ //- Return SGS kinetic energy
+ virtual tmp k() const
+ {
+ return k_;
+ }
+
+ //- Return the effective diffusivity for k
+ tmp DkEff() const
+ {
+ return tmp
+ (
+ new volScalarField("DkEff", this->nut_ + this->nu())
+ );
+ }
+
+ //- Correct Eddy-Viscosity and related properties
+ virtual void correct();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace LESModels
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+ #include "dynamicSmagorinsky.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/TurbulenceModels/turbulenceModels/makeTurbulentFluidThermoModels.C b/src/TurbulenceModels/turbulenceModels/makeTurbulentFluidThermoModels.C
new file mode 100644
index 00000000..1aaf1177
--- /dev/null
+++ b/src/TurbulenceModels/turbulenceModels/makeTurbulentFluidThermoModels.C
@@ -0,0 +1,41 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration | Website: https://openfoam.org
+ \\ / A nd | Copyright (C) 2013-2018 OpenFOAM Foundation
+ \\/ 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 3 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, see .
+
+\*---------------------------------------------------------------------------*/
+
+#include "turbulentFluidThermoModels.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+
+// -------------------------------------------------------------------------- //
+// LES models
+// -------------------------------------------------------------------------- //
+
+#include "dynamicSmagorinsky.H"
+makeLESModel(dynamicSmagorinsky);
+
+#include "Sigma.H"
+makeLESModel(Sigma);
+// ************************************************************************* //
diff --git a/src/functionObjects/field/Make/files b/src/functionObjects/field/Make/files
new file mode 100644
index 00000000..0fbb2933
--- /dev/null
+++ b/src/functionObjects/field/Make/files
@@ -0,0 +1,73 @@
+workDir=$(SRC_ORIG)/functionObjects/field
+$(workDir)/fieldAverage/fieldAverage.C
+$(workDir)/fieldAverage/fieldAverageItem/fieldAverageItem.C
+$(workDir)/fieldAverage/fieldAverageItem/fieldAverageItemIO.C
+
+$(workDir)/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.C
+$(workDir)/fieldMinMax/fieldMinMax.C
+
+$(workDir)/fieldValues/fieldValue/fieldValue.C
+$(workDir)/fieldValues/fieldValue/fieldValueNew.C
+$(workDir)/fieldValues/fieldValueDelta/fieldValueDelta.C
+$(workDir)/fieldValues/volFieldValue/volFieldValue.C
+$(workDir)/fieldValues/surfaceFieldValue/surfaceFieldValue.C
+
+$(workDir)/nearWallFields/nearWallFields.C
+$(workDir)/nearWallFields/findCellParticle.C
+$(workDir)/nearWallFields/findCellParticleCloud.C
+
+$(workDir)/processorField/processorField.C
+$(workDir)/readFields/readFields.C
+
+$(workDir)/streamLine/streamLine.C
+$(workDir)/streamLine/streamLineParticle.C
+$(workDir)/streamLine/streamLineParticleCloud.C
+
+$(workDir)/surfaceInterpolate/surfaceInterpolate.C
+
+$(workDir)/regionSizeDistribution/regionSizeDistribution.C
+$(workDir)/histogram/histogram.C
+
+$(workDir)/fieldExpression/fieldExpression.C
+$(workDir)/components/components.C
+$(workDir)/randomise/randomise.C
+$(workDir)/div/div.C
+$(workDir)/grad/grad.C
+$(workDir)/ddt/ddt.C
+$(workDir)/mag/mag.C
+$(workDir)/magSqr/magSqr.C
+$(workDir)/scale/scale.C
+$(workDir)/log/log.C
+$(workDir)/vorticity/vorticity.C
+$(workDir)/enstrophy/enstrophy.C
+$(workDir)/Q/Q.C
+$(workDir)/Lambda2/Lambda2.C
+$(workDir)/flowType/flowType.C
+$(workDir)/CourantNo/CourantNo.C
+/*$(workDir)/PecletNo/PecletNo.C*/
+$(workDir)/blendingFactor/blendingFactor.C
+$(workDir)/pressure/pressure.C
+$(workDir)/MachNo/MachNo.C
+
+/*$(workDir)/turbulenceFields/turbulenceFields.C*/
+$(workDir)/yPlus/yPlus.C
+$(workDir)/turbulenceIntensity/turbulenceIntensity.C
+/*$(workDir)/wallShearStress/wallShearStress.C*/
+/*wallHeatFlux/wallHeatFlux.C*/
+/*$(workDir)/wallHeatTransferCoeff/wallHeatTransferCoeff.C*/
+
+$(workDir)/writeCellCentres/writeCellCentres.C
+$(workDir)/writeCellVolumes/writeCellVolumes.C
+
+$(workDir)/XiReactionRate/XiReactionRate.C
+$(workDir)/streamFunction/streamFunction.C
+
+$(workDir)/fieldsExpression/fieldsExpression.C
+$(workDir)/add/add.C
+$(workDir)/subtract/subtract.C
+
+$(workDir)/interfaceHeight/interfaceHeight.C
+
+$(workDir)/age/age.C
+
+LIB = $(FOAM_USER_LIBBIN)/libdfFieldFunctionObjects
diff --git a/src/functionObjects/field/Make/options b/src/functionObjects/field/Make/options
new file mode 100644
index 00000000..e2b0eb0e
--- /dev/null
+++ b/src/functionObjects/field/Make/options
@@ -0,0 +1,26 @@
+EXE_INC = \
+ -I$(SRC_ORIG)/functionObjects/field/lnInclude \
+ -I$(LIB_SRC)/finiteVolume/lnInclude \
+ -I$(LIB_SRC)/meshTools/lnInclude \
+ -I$(LIB_SRC)/lagrangian/basic/lnInclude \
+ -I$(LIB_SRC)/fileFormats/lnInclude \
+ -I$(LIB_SRC)/sampling/lnInclude \
+ -I$(LIB_SRC)/surfMesh/lnInclude \
+ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
+ -I$(LIB_SRC)/transportModels \
+ -I$(LIB_SRC)/transportModels/compressible/lnInclude \
+ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude
+
+LIB_LIBS = \
+ -lfiniteVolume \
+ -lincompressibleTransportModels \
+ -lturbulenceModels \
+ -lcompressibleTransportModels \
+ -lmeshTools \
+ -lsurfMesh \
+ -llagrangian \
+ -lfileFormats \
+ -lsampling \
+ -lsurfMesh \
+ -L$(FOAM_USER_LIBBIN) \
+ -ldfFluidThermophysicalModels