diff --git a/applications/utilities/mesh/conversion/cfx4ToFoam/block.C b/applications/utilities/mesh/conversion/cfx4ToFoam/block.C
deleted file mode 100644
index 1bb776c57f..0000000000
--- a/applications/utilities/mesh/conversion/cfx4ToFoam/block.C
+++ /dev/null
@@ -1,126 +0,0 @@
-/*---------------------------------------------------------------------------*\
- ========= |
- \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
- \\ / O peration |
- \\ / A nd | Copyright (C) 2004-2010 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 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 "error.H"
-#include "block.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
-
-
-label block::vtxLabel(label a, label b, label c)
-{
- return (a + b*(BlockDef.xDim() + 1)
- + c*(BlockDef.xDim() + 1)*(BlockDef.yDim() + 1));
-}
-
-// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
-
-// from description
-block::block(const blockDescriptor& definition)
-:
- BlockDef(definition),
- Vertices
- (
- ((BlockDef.xDim() + 1)*(BlockDef.yDim() + 1)*(BlockDef.zDim() + 1))
- ),
- Cells
- (
- (BlockDef.xDim()*BlockDef.yDim()*BlockDef.zDim())
- ),
- BoundaryPatches(6)
-{
- // create points
- blockPoints();
-
- // generate internal cells
- blockCells();
-
- // generate boundary patches
- blockBoundary();
-}
-
-// as copy
-block::block(const block& original)
-:
- BlockDef(original.blockDef()),
- Vertices(original.points()),
- Cells(original.cells()),
- BoundaryPatches(original.boundaryPatches())
-{}
-
-
-// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
-
-block::~block()
-{}
-
-
-// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-
-
-const blockDescriptor& block::blockDef() const
-{
- return BlockDef;
-}
-
-const pointField& block::points() const
-{
- return Vertices;
-}
-
-const labelListList& block::cells() const
-{
- return Cells;
-}
-
-const labelListListList& block::boundaryPatches() const
-{
- return BoundaryPatches;
-}
-
-
-// * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * //
-
-Ostream& operator<<(Ostream& os, const block& b)
-{
- os << b.Vertices << nl
- << b.Cells << nl
- << b.BoundaryPatches << endl;
-
- return os;
-}
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// ************************************************************************* //
-
diff --git a/applications/utilities/mesh/conversion/cfx4ToFoam/block.H b/applications/utilities/mesh/conversion/cfx4ToFoam/block.H
deleted file mode 100644
index 7d6bc4b95d..0000000000
--- a/applications/utilities/mesh/conversion/cfx4ToFoam/block.H
+++ /dev/null
@@ -1,138 +0,0 @@
-/*---------------------------------------------------------------------------*\
- ========= |
- \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
- \\ / O peration |
- \\ / A nd | Copyright (C) 2004-2010 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 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::block
-
-Description
- Creates a single block of cells from point coordinates,
- numbers of cells in each direction and expansion ratio
-
-
-SourceFiles
- block.C
- blockIO.C
-
-
-\*---------------------------------------------------------------------------*/
-
-#ifndef block_H
-#define block_H
-
-#include "pointField.H"
-#include "labelList.H"
-
-#include "blockDescriptor.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
-class Istream;
-class Ostream;
-
-/*---------------------------------------------------------------------------*\
- Class block Declaration
-\*---------------------------------------------------------------------------*/
-
-class block
-{
- // Private data
-
- //- block definition
- blockDescriptor BlockDef;
-
- //- list of vertices
- pointField Vertices;
-
- //- list of cells
- labelListList Cells;
-
- //- boundary patches
- labelListListList BoundaryPatches;
-
-
- // Private Member Functions
-
- label vtxLabel(label i, label j, label k);
-
- void blockPoints();
-
- void blockCells();
-
- void blockBoundary();
-
-public:
-
- // Constructors
-
- //- from the block definition
- block(const blockDescriptor&);
-
- //- as copy
- block(const block&);
-
- //- clone function
- autoPtr clone() const
- {
- notImplemented("block::clone()");
- return autoPtr(NULL);
- }
-
- //- Destructor
- ~block();
-
-
- // Member Functions
-
- // Access
-
- const blockDescriptor& blockDef() const;
- const pointField& points() const;
- const labelListList& cells() const;
- const labelListListList& boundaryPatches() const;
-
-
- // IOstream Operators
-
- friend Ostream& operator<<(Ostream&, const block&);
-};
-
-
-inline Istream& operator>>(Istream& is, block*)
-{
- notImplemented("Istream& operator>>(Istream& is, block*)");
- return is;
-}
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-#endif
-
-// ************************************************************************* //
diff --git a/src/turbulenceModels/compressible/LES/Make/files b/src/turbulenceModels/compressible/LES/Make/files
index 27beea2967..653eb2b28f 100644
--- a/src/turbulenceModels/compressible/LES/Make/files
+++ b/src/turbulenceModels/compressible/LES/Make/files
@@ -5,7 +5,7 @@ GenSGSStress/GenSGSStress.C
Smagorinsky/Smagorinsky.C
oneEqEddy/oneEqEddy.C
lowReOneEqEddy/lowReOneEqEddy.C
-dynOneEqEddy/dynOneEqEddy.C
+homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
DeardorffDiffStress/DeardorffDiffStress.C
SpalartAllmaras/SpalartAllmaras.C
diff --git a/src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.C b/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
similarity index 87%
rename from src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.C
rename to src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
index 56df500db1..b17bbbe163 100644
--- a/src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.C
+++ b/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
@@ -23,7 +23,7 @@ License
\*---------------------------------------------------------------------------*/
-#include "dynOneEqEddy.H"
+#include "homogeneousDynOneEqEddy.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -37,12 +37,15 @@ namespace LESModels
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-defineTypeNameAndDebug(dynOneEqEddy, 0);
-addToRunTimeSelectionTable(LESModel, dynOneEqEddy, dictionary);
+defineTypeNameAndDebug(homogeneousDynOneEqEddy, 0);
+addToRunTimeSelectionTable(LESModel, homogeneousDynOneEqEddy, dictionary);
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
-void dynOneEqEddy::updateSubGridScaleFields(const volSymmTensorField& D)
+void homogeneousDynOneEqEddy::updateSubGridScaleFields
+(
+ const volSymmTensorField& D
+)
{
muSgs_ = ck_(D)*rho()*sqrt(k_)*delta();
muSgs_.correctBoundaryConditions();
@@ -52,7 +55,10 @@ void dynOneEqEddy::updateSubGridScaleFields(const volSymmTensorField& D)
}
-dimensionedScalar dynOneEqEddy::ck_(const volSymmTensorField& D) const
+dimensionedScalar homogeneousDynOneEqEddy::ck_
+(
+ const volSymmTensorField& D
+) const
{
volScalarField KK(0.5*(filter_(magSqr(U())) - magSqr(filter_(U()))));
@@ -67,7 +73,10 @@ dimensionedScalar dynOneEqEddy::ck_(const volSymmTensorField& D) const
}
-dimensionedScalar dynOneEqEddy::ce_(const volSymmTensorField& D) const
+dimensionedScalar homogeneousDynOneEqEddy::ce_
+(
+ const volSymmTensorField& D
+) const
{
volScalarField KK(0.5*(filter_(magSqr(U())) - magSqr(filter_(U()))));
@@ -91,7 +100,7 @@ dimensionedScalar dynOneEqEddy::ce_(const volSymmTensorField& D) const
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
-dynOneEqEddy::dynOneEqEddy
+homogeneousDynOneEqEddy::homogeneousDynOneEqEddy
(
const volScalarField& rho,
const volVectorField& U,
@@ -128,7 +137,7 @@ dynOneEqEddy::dynOneEqEddy
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-void dynOneEqEddy::correct(const tmp& tgradU)
+void homogeneousDynOneEqEddy::correct(const tmp& tgradU)
{
const volTensorField& gradU = tgradU();
@@ -158,7 +167,7 @@ void dynOneEqEddy::correct(const tmp& tgradU)
}
-bool dynOneEqEddy::read()
+bool homogeneousDynOneEqEddy::read()
{
if (GenEddyVisc::read())
{
diff --git a/src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.H b/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H
similarity index 87%
rename from src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.H
rename to src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H
index b9c574ca59..de8870e6d7 100644
--- a/src/turbulenceModels/compressible/LES/dynOneEqEddy/dynOneEqEddy.H
+++ b/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H
@@ -22,7 +22,7 @@ License
along with OpenFOAM. If not, see .
Class
- Foam::compressible::LESModels::dynOneEqEddy
+ Foam::compressible::LESModels::homogeneousDynOneEqEddy
Description
One Equation Eddy Viscosity Model for compressible flows.
@@ -46,12 +46,12 @@ Description
\endverbatim
SourceFiles
- dynOneEqEddy.C
+ homogeneousDynOneEqEddy.C
\*---------------------------------------------------------------------------*/
-#ifndef compressibleDynOneEqEddy_H
-#define compressibleDynOneEqEddy_H
+#ifndef compressibleHomogeneousDynOneEqEddy_H
+#define compressibleHomogeneousDynOneEqEddy_H
#include "GenEddyVisc.H"
#include "LESfilter.H"
@@ -66,10 +66,10 @@ namespace LESModels
{
/*---------------------------------------------------------------------------*\
- Class dynOneEqEddy Declaration
+ Class homogeneousDynOneEqEddy Declaration
\*---------------------------------------------------------------------------*/
-class dynOneEqEddy
+class homogeneousDynOneEqEddy
:
public GenEddyVisc
{
@@ -91,20 +91,20 @@ class dynOneEqEddy
dimensionedScalar ce_(const volSymmTensorField& D) const;
// Disallow default bitwise copy construct and assignment
- dynOneEqEddy(const dynOneEqEddy&);
- dynOneEqEddy& operator=(const dynOneEqEddy&);
+ homogeneousDynOneEqEddy(const homogeneousDynOneEqEddy&);
+ homogeneousDynOneEqEddy& operator=(const homogeneousDynOneEqEddy&);
public:
//- Runtime type information
- TypeName("dynOneEqEddy");
+ TypeName("homogeneousDynOneEqEddy");
// Constructors
//- Constructor from components
- dynOneEqEddy
+ homogeneousDynOneEqEddy
(
const volScalarField& rho,
const volVectorField& U,
@@ -116,7 +116,7 @@ public:
//- Destructor
- virtual ~dynOneEqEddy()
+ virtual ~homogeneousDynOneEqEddy()
{}
diff --git a/src/turbulenceModels/derivedFvPatchFields/porousBafflePressure/porousBafflePressureFvPatchFields.C b/src/turbulenceModels/derivedFvPatchFields/porousBafflePressure/porousBafflePressureFvPatchFields.C
index 1652ab878e..d0eeb86f50 100644
--- a/src/turbulenceModels/derivedFvPatchFields/porousBafflePressure/porousBafflePressureFvPatchFields.C
+++ b/src/turbulenceModels/derivedFvPatchFields/porousBafflePressure/porousBafflePressureFvPatchFields.C
@@ -110,7 +110,7 @@ void Foam::porousBafflePressureFvPatchField::updateCoeffs()
<< endl;
}
- jumpCyclicFvPatchField::updateCoeffs();
+ fixedJumpFvPatchField::updateCoeffs();
}
diff --git a/src/turbulenceModels/incompressible/LES/Make/files b/src/turbulenceModels/incompressible/LES/Make/files
index 02a58fff0b..ff2bde02f2 100644
--- a/src/turbulenceModels/incompressible/LES/Make/files
+++ b/src/turbulenceModels/incompressible/LES/Make/files
@@ -12,8 +12,8 @@ SpalartAllmarasIDDES/SpalartAllmarasIDDES.C
SpalartAllmarasIDDES/IDDESDelta/IDDESDelta.C
oneEqEddy/oneEqEddy.C
+homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
dynOneEqEddy/dynOneEqEddy.C
-locDynOneEqEddy/locDynOneEqEddy.C
Smagorinsky/Smagorinsky.C
homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.C
LRRDiffStress/LRRDiffStress.C
diff --git a/src/turbulenceModels/incompressible/LES/dynLagrangian/dynLagrangian.H b/src/turbulenceModels/incompressible/LES/dynLagrangian/dynLagrangian.H
index 900adbdd59..5cdbfcf107 100644
--- a/src/turbulenceModels/incompressible/LES/dynLagrangian/dynLagrangian.H
+++ b/src/turbulenceModels/incompressible/LES/dynLagrangian/dynLagrangian.H
@@ -25,8 +25,8 @@ Class
Foam::incompressible::LESModels::dynLagrangian
Description
- Lagrangian Two Equations Eddy Viscosity Model for incompressible
- flows
+ Dynamic eddy-viscosity model with Lagrangian averaging for incompressible
+ flow
\verbatim
B = 2/3*k*I - 2*nuSgs*dev(D)
@@ -57,9 +57,13 @@ Description
\endverbatim
Reference:
- 1. Charles Meneveau, Thomas Lund and William Cabot
- "A Lagrangian dynamic subgrid-scale model of turbulence"
- J. Fluid Mech (1996), vol 319, pp. 353-385
+ \verbatim
+ "A Lagrangian dynamic subgrid-scale model of turbulence"
+ Charles Meneveau,
+ Thomas Lund,
+ William Cabot,
+ J. Fluid Mech (1996), vol 319, pp. 353-385
+ \endverbatim
SourceFiles
dynLagrangian.C
diff --git a/src/turbulenceModels/incompressible/LES/dynOneEqEddy/dynOneEqEddy.C b/src/turbulenceModels/incompressible/LES/dynOneEqEddy/dynOneEqEddy.C
index ab15166c8f..c8537b9e7a 100644
--- a/src/turbulenceModels/incompressible/LES/dynOneEqEddy/dynOneEqEddy.C
+++ b/src/turbulenceModels/incompressible/LES/dynOneEqEddy/dynOneEqEddy.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
+ \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -42,68 +42,61 @@ addToRunTimeSelectionTable(LESModel, dynOneEqEddy, dictionary);
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
-void dynOneEqEddy::updateSubGridScaleFields(const volSymmTensorField& D)
+void dynOneEqEddy::updateSubGridScaleFields
+(
+ const volSymmTensorField& D,
+ const volScalarField& KK
+)
{
- nuSgs_ = ck(D)*sqrt(k_)*delta();
+ nuSgs_ = ck(D, KK)*sqrt(k_)*delta();
nuSgs_.correctBoundaryConditions();
}
-dimensionedScalar dynOneEqEddy::ck(const volSymmTensorField& D) const
+volScalarField dynOneEqEddy::ck
+(
+ const volSymmTensorField& D,
+ const volScalarField& KK
+) const
{
- tmp KK = 0.5*(filter_(magSqr(U())) - magSqr(filter_(U())));
+ const volSymmTensorField LL
+ (
+ simpleFilter_(dev(filter_(sqr(U())) - (sqr(filter_(U())))))
+ );
const volSymmTensorField MM
(
- delta()*(filter_(sqrt(k_)*D) - 2*sqrt(KK + filter_(k_))*filter_(D))
+ simpleFilter_(-2.0*delta()*pow(KK, 0.5)*filter_(D))
);
- dimensionedScalar MMMM = average(magSqr(MM));
+ const volScalarField ck
+ (
+ simpleFilter_(0.5*(LL && MM))
+ /(
+ simpleFilter_(magSqr(MM))
+ + dimensionedScalar("small", sqr(MM.dimensions()), VSMALL)
+ )
+ );
- if (MMMM.value() > VSMALL)
- {
- tmp LL = dev(filter_(sqr(U())) - sqr(filter_(U())));
-
- return average(LL && MM)/MMMM;
- }
- else
- {
- return 0.0;
- }
+ tmp tfld = 0.5*(mag(ck) + ck);
+ return tfld();
}
-dimensionedScalar dynOneEqEddy::ce(const volSymmTensorField& D) const
+volScalarField dynOneEqEddy::ce
+(
+ const volSymmTensorField& D,
+ const volScalarField& KK
+) const
{
- const volScalarField KK
+ const volScalarField ce
(
- 0.5*(filter_(magSqr(U())) - magSqr(filter_(U())))
+ simpleFilter_(nuEff()*(filter_(magSqr(D)) - magSqr(filter_(D))))
+ /simpleFilter_(pow(KK, 1.5)/(2.0*delta()))
);
- const volScalarField mm
- (
- pow(KK + filter_(k_), 1.5)/(2*delta()) - filter_(pow(k_, 1.5))/delta()
- );
-
- dimensionedScalar mmmm = average(magSqr(mm));
-
- if (mmmm.value() > VSMALL)
- {
- tmp ee =
- (
- 2*delta()*ck(D)
- * (
- filter_(sqrt(k_)*magSqr(D))
- - 2*sqrt(KK + filter_(k_))*magSqr(filter_(D))
- )
- );
-
- return average(ee*mm)/mmmm;
- }
- else
- {
- return 0.0;
- }
+ tmp tfld = 0.5*(mag(ce) + ce);
+ return tfld();
}
@@ -134,12 +127,14 @@ dynOneEqEddy::dynOneEqEddy
mesh_
),
+ simpleFilter_(U.mesh()),
filterPtr_(LESfilter::New(U.mesh(), coeffDict())),
filter_(filterPtr_())
{
bound(k_, kMin_);
- updateSubGridScaleFields(symm(fvc::grad(U)));
+ const volScalarField KK(0.5*(filter_(magSqr(U)) - magSqr(filter_(U))));
+ updateSubGridScaleFields(symm(fvc::grad(U)), KK);
printCoeffs();
}
@@ -147,14 +142,15 @@ dynOneEqEddy::dynOneEqEddy
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-void dynOneEqEddy::correct(const tmp& tgradU)
+void dynOneEqEddy::correct(const tmp& gradU)
{
- const volTensorField& gradU = tgradU();
-
- GenEddyVisc::correct(gradU);
+ LESModel::correct(gradU);
const volSymmTensorField D(symm(gradU));
+ volScalarField KK(0.5*(filter_(magSqr(U())) - magSqr(filter_(U()))));
+ KK.max(dimensionedScalar("small", KK.dimensions(), SMALL));
+
const volScalarField P(2.0*nuSgs_*magSqr(D));
tmp kEqn
@@ -164,7 +160,7 @@ void dynOneEqEddy::correct(const tmp& tgradU)
- fvm::laplacian(DkEff(), k_)
==
P
- - fvm::Sp(ce(D)*sqrt(k_)/delta(), k_)
+ - fvm::Sp(ce(D, KK)*sqrt(k_)/delta(), k_)
);
kEqn().relax();
@@ -172,7 +168,7 @@ void dynOneEqEddy::correct(const tmp& tgradU)
bound(k_, kMin_);
- updateSubGridScaleFields(D);
+ updateSubGridScaleFields(D, KK);
}
diff --git a/src/turbulenceModels/incompressible/LES/dynOneEqEddy/dynOneEqEddy.H b/src/turbulenceModels/incompressible/LES/dynOneEqEddy/dynOneEqEddy.H
index c8fbb2ce41..1579962a7f 100644
--- a/src/turbulenceModels/incompressible/LES/dynOneEqEddy/dynOneEqEddy.H
+++ b/src/turbulenceModels/incompressible/LES/dynOneEqEddy/dynOneEqEddy.H
@@ -25,29 +25,36 @@ Class
Foam::incompressible::LESModels::dynOneEqEddy
Description
- One Equation Eddy Viscosity Model for incompressible flows.
+ Localised Dynamic One Equation Eddy Viscosity Model for incompressible
+ flows
Eddy viscosity SGS model using a modeled balance equation to simulate
- the behaviour of k.
-
- Thus
+ the behaviour of k, hence
\verbatim
d/dt(k) + div(U*k) - div(nuSgs*grad(k))
=
- -B*L - ce*k^3/2/delta
-
+ -B*L - ce*rho*k^3/2/delta
and
-
B = 2/3*k*I - 2*nuSgs*dev(D)
Beff = 2/3*k*I - 2*nuEff*dev(D)
-
where
-
- D = symm(grad(U));
- nuSgs = ck*sqrt(k)*delta
+ nuSgs = cD*delta^2*||D||
nuEff = nuSgs + nu
\endverbatim
+ A dynamic procedure is here applied to evaluate ck and ce
+ \verbatim
+ ck=/
+ and
+ ce=/
+ where
+ K = 0.5*(F(U.U) - F(U).F(U))
+ L = (F(U*U) - F(U)*F(U) - 0.33*K*I)
+ M = delta*(F(sqrt(k)*D) - 2*sqrt(K + filter(k))*F(D))
+ m = pow(K + F(k), 3.0/2.0)/(2*delta) - F(pow(k, 3.0/2.0))/delta
+ e = 2*delta*ck*(F(sqrt(k)*(D && D)) - 2*sqrt(K + F(k))*(F(D) && F(D)))/
+ \endverbatim
+
SourceFiles
dynOneEqEddy.C
@@ -57,6 +64,7 @@ SourceFiles
#define dynOneEqEddy_H
#include "GenEddyVisc.H"
+#include "simpleFilter.H"
#include "LESfilter.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -80,6 +88,7 @@ class dynOneEqEddy
volScalarField k_;
+ simpleFilter simpleFilter_;
autoPtr filterPtr_;
LESfilter& filter_;
@@ -87,11 +96,24 @@ class dynOneEqEddy
// Private Member Functions
//- Update sub-grid scale fields
- void updateSubGridScaleFields(const volSymmTensorField& D);
+ void updateSubGridScaleFields
+ (
+ const volSymmTensorField& D,
+ const volScalarField& KK
+ );
//- Calculate ck, ce by filtering the velocity field U.
- dimensionedScalar ck(const volSymmTensorField& D) const;
- dimensionedScalar ce(const volSymmTensorField& D) const;
+ volScalarField ck
+ (
+ const volSymmTensorField&,
+ const volScalarField&
+ ) const;
+
+ volScalarField ce
+ (
+ const volSymmTensorField&,
+ const volScalarField&
+ ) const;
// Disallow default bitwise copy construct and assignment
dynOneEqEddy(const dynOneEqEddy&);
diff --git a/src/turbulenceModels/incompressible/LES/locDynOneEqEddy/locDynOneEqEddy.C b/src/turbulenceModels/incompressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
similarity index 62%
rename from src/turbulenceModels/incompressible/LES/locDynOneEqEddy/locDynOneEqEddy.C
rename to src/turbulenceModels/incompressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
index 868796683c..674eece1d9 100644
--- a/src/turbulenceModels/incompressible/LES/locDynOneEqEddy/locDynOneEqEddy.C
+++ b/src/turbulenceModels/incompressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.C
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
- \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
+ \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@@ -23,7 +23,7 @@ License
\*---------------------------------------------------------------------------*/
-#include "locDynOneEqEddy.H"
+#include "homogeneousDynOneEqEddy.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -37,72 +37,88 @@ namespace LESModels
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-defineTypeNameAndDebug(locDynOneEqEddy, 0);
-addToRunTimeSelectionTable(LESModel, locDynOneEqEddy, dictionary);
+defineTypeNameAndDebug(homogeneousDynOneEqEddy, 0);
+addToRunTimeSelectionTable(LESModel, homogeneousDynOneEqEddy, dictionary);
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
-void locDynOneEqEddy::updateSubGridScaleFields
+void homogeneousDynOneEqEddy::updateSubGridScaleFields
(
- const volSymmTensorField& D,
- const volScalarField& KK
+ const volSymmTensorField& D
)
{
- nuSgs_ = ck(D, KK)*sqrt(k_)*delta();
+ nuSgs_ = ck(D)*sqrt(k_)*delta();
nuSgs_.correctBoundaryConditions();
}
-volScalarField locDynOneEqEddy::ck
+dimensionedScalar homogeneousDynOneEqEddy::ck
(
- const volSymmTensorField& D,
- const volScalarField& KK
+ const volSymmTensorField& D
) const
{
- const volSymmTensorField LL
- (
- simpleFilter_(dev(filter_(sqr(U())) - (sqr(filter_(U())))))
- );
+ tmp KK = 0.5*(filter_(magSqr(U())) - magSqr(filter_(U())));
const volSymmTensorField MM
(
- simpleFilter_(-2.0*delta()*pow(KK, 0.5)*filter_(D))
+ delta()*(filter_(sqrt(k_)*D) - 2*sqrt(KK + filter_(k_))*filter_(D))
);
- const volScalarField ck
- (
- simpleFilter_(0.5*(LL && MM))
- /(
- simpleFilter_(magSqr(MM))
- + dimensionedScalar("small", sqr(MM.dimensions()), VSMALL)
- )
- );
+ dimensionedScalar MMMM = average(magSqr(MM));
- tmp tfld = 0.5*(mag(ck) + ck);
- return tfld();
+ if (MMMM.value() > VSMALL)
+ {
+ tmp LL = dev(filter_(sqr(U())) - sqr(filter_(U())));
+
+ return average(LL && MM)/MMMM;
+ }
+ else
+ {
+ return 0.0;
+ }
}
-volScalarField locDynOneEqEddy::ce
+dimensionedScalar homogeneousDynOneEqEddy::ce
(
- const volSymmTensorField& D,
- const volScalarField& KK
+ const volSymmTensorField& D
) const
{
- const volScalarField ce
+ const volScalarField KK
(
- simpleFilter_(nuEff()*(filter_(magSqr(D)) - magSqr(filter_(D))))
- /simpleFilter_(pow(KK, 1.5)/(2.0*delta()))
+ 0.5*(filter_(magSqr(U())) - magSqr(filter_(U())))
);
- tmp tfld = 0.5*(mag(ce) + ce);
- return tfld();
+ const volScalarField mm
+ (
+ pow(KK + filter_(k_), 1.5)/(2*delta()) - filter_(pow(k_, 1.5))/delta()
+ );
+
+ dimensionedScalar mmmm = average(magSqr(mm));
+
+ if (mmmm.value() > VSMALL)
+ {
+ tmp ee =
+ (
+ 2*delta()*ck(D)
+ * (
+ filter_(sqrt(k_)*magSqr(D))
+ - 2*sqrt(KK + filter_(k_))*magSqr(filter_(D))
+ )
+ );
+
+ return average(ee*mm)/mmmm;
+ }
+ else
+ {
+ return 0.0;
+ }
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
-locDynOneEqEddy::locDynOneEqEddy
+homogeneousDynOneEqEddy::homogeneousDynOneEqEddy
(
const volVectorField& U,
const surfaceScalarField& phi,
@@ -127,14 +143,12 @@ locDynOneEqEddy::locDynOneEqEddy
mesh_
),
- simpleFilter_(U.mesh()),
filterPtr_(LESfilter::New(U.mesh(), coeffDict())),
filter_(filterPtr_())
{
bound(k_, kMin_);
- const volScalarField KK(0.5*(filter_(magSqr(U)) - magSqr(filter_(U))));
- updateSubGridScaleFields(symm(fvc::grad(U)), KK);
+ updateSubGridScaleFields(symm(fvc::grad(U)));
printCoeffs();
}
@@ -142,15 +156,14 @@ locDynOneEqEddy::locDynOneEqEddy
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
-void locDynOneEqEddy::correct(const tmp& gradU)
+void homogeneousDynOneEqEddy::correct(const tmp& tgradU)
{
- LESModel::correct(gradU);
+ const volTensorField& gradU = tgradU();
+
+ GenEddyVisc::correct(gradU);
const volSymmTensorField D(symm(gradU));
- volScalarField KK(0.5*(filter_(magSqr(U())) - magSqr(filter_(U()))));
- KK.max(dimensionedScalar("small", KK.dimensions(), SMALL));
-
const volScalarField P(2.0*nuSgs_*magSqr(D));
tmp kEqn
@@ -160,7 +173,7 @@ void locDynOneEqEddy::correct(const tmp& gradU)
- fvm::laplacian(DkEff(), k_)
==
P
- - fvm::Sp(ce(D, KK)*sqrt(k_)/delta(), k_)
+ - fvm::Sp(ce(D)*sqrt(k_)/delta(), k_)
);
kEqn().relax();
@@ -168,11 +181,11 @@ void locDynOneEqEddy::correct(const tmp& gradU)
bound(k_, kMin_);
- updateSubGridScaleFields(D, KK);
+ updateSubGridScaleFields(D);
}
-bool locDynOneEqEddy::read()
+bool homogeneousDynOneEqEddy::read()
{
if (GenEddyVisc::read())
{
diff --git a/src/turbulenceModels/incompressible/LES/locDynOneEqEddy/locDynOneEqEddy.H b/src/turbulenceModels/incompressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H
similarity index 70%
rename from src/turbulenceModels/incompressible/LES/locDynOneEqEddy/locDynOneEqEddy.H
rename to src/turbulenceModels/incompressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H
index 97e6c481c1..e2e3e25b1c 100644
--- a/src/turbulenceModels/incompressible/LES/locDynOneEqEddy/locDynOneEqEddy.H
+++ b/src/turbulenceModels/incompressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H
@@ -22,49 +22,41 @@ License
along with OpenFOAM. If not, see .
Class
- Foam::incompressible::LESModels::locDynOneEqEddy
+ Foam::incompressible::LESModels::homogeneousDynOneEqEddy
Description
- Localised Dynamic One Equation Eddy Viscosity Model for incompressible
- flows
+ One Equation Eddy Viscosity Model for incompressible flows.
Eddy viscosity SGS model using a modeled balance equation to simulate
- the behaviour of k, hence
+ the behaviour of k.
+
+ Thus
\verbatim
d/dt(k) + div(U*k) - div(nuSgs*grad(k))
=
- -B*L - ce*rho*k^3/2/delta
+ -B*L - ce*k^3/2/delta
+
and
+
B = 2/3*k*I - 2*nuSgs*dev(D)
Beff = 2/3*k*I - 2*nuEff*dev(D)
+
where
- nuSgs = cD*delta^2*||D||
+
+ D = symm(grad(U));
+ nuSgs = ck*sqrt(k)*delta
nuEff = nuSgs + nu
\endverbatim
- A dynamic procedure is here applied to evaluate ck and ce
- \verbatim
- ck=/
- and
- ce=/
- where
- K = 0.5*(F(U.U) - F(U).F(U))
- L = (F(U*U) - F(U)*F(U) - 0.33*K*I)
- M = delta*(F(sqrt(k)*D) - 2*sqrt(K + filter(k))*F(D))
- m = pow(K + F(k), 3.0/2.0)/(2*delta) - F(pow(k, 3.0/2.0))/delta
- e = 2*delta*ck*(F(sqrt(k)*(D && D)) - 2*sqrt(K + F(k))*(F(D) && F(D)))/
- \endverbatim
-
SourceFiles
- locDynOneEqEddy.C
+ homogeneousDynOneEqEddy.C
\*---------------------------------------------------------------------------*/
-#ifndef locDynOneEqEddy_H
-#define locDynOneEqEddy_H
+#ifndef homogeneousDynOneEqEddy_H
+#define homogeneousDynOneEqEddy_H
#include "GenEddyVisc.H"
-#include "simpleFilter.H"
#include "LESfilter.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -77,10 +69,10 @@ namespace LESModels
{
/*---------------------------------------------------------------------------*\
- Class locDynOneEqEddy Declaration
+ Class homogeneousDynOneEqEddy Declaration
\*---------------------------------------------------------------------------*/
-class locDynOneEqEddy
+class homogeneousDynOneEqEddy
:
public GenEddyVisc
{
@@ -88,7 +80,6 @@ class locDynOneEqEddy
volScalarField k_;
- simpleFilter simpleFilter_;
autoPtr filterPtr_;
LESfilter& filter_;
@@ -96,39 +87,26 @@ class locDynOneEqEddy
// Private Member Functions
//- Update sub-grid scale fields
- void updateSubGridScaleFields
- (
- const volSymmTensorField& D,
- const volScalarField& KK
- );
+ void updateSubGridScaleFields(const volSymmTensorField& D);
//- Calculate ck, ce by filtering the velocity field U.
- volScalarField ck
- (
- const volSymmTensorField&,
- const volScalarField&
- ) const;
-
- volScalarField ce
- (
- const volSymmTensorField&,
- const volScalarField&
- ) const;
+ dimensionedScalar ck(const volSymmTensorField& D) const;
+ dimensionedScalar ce(const volSymmTensorField& D) const;
// Disallow default bitwise copy construct and assignment
- locDynOneEqEddy(const locDynOneEqEddy&);
- locDynOneEqEddy& operator=(const locDynOneEqEddy&);
+ homogeneousDynOneEqEddy(const homogeneousDynOneEqEddy&);
+ homogeneousDynOneEqEddy& operator=(const homogeneousDynOneEqEddy&);
public:
//- Runtime type information
- TypeName("locDynOneEqEddy");
+ TypeName("homogeneousDynOneEqEddy");
// Constructors
//- Construct from components
- locDynOneEqEddy
+ homogeneousDynOneEqEddy
(
const volVectorField& U,
const surfaceScalarField& phi,
@@ -139,7 +117,7 @@ public:
//- Destructor
- virtual ~locDynOneEqEddy()
+ virtual ~homogeneousDynOneEqEddy()
{}
diff --git a/src/turbulenceModels/incompressible/LES/homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.C b/src/turbulenceModels/incompressible/LES/homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.C
index e62de890f9..4e39627742 100644
--- a/src/turbulenceModels/incompressible/LES/homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.C
+++ b/src/turbulenceModels/incompressible/LES/homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.C
@@ -69,7 +69,7 @@ dimensionedScalar homogeneousDynSmagorinsky::cD
tmp LL =
dev(filter_(sqr(U())) - (sqr(filter_(U()))));
- return average(LL && MM)/MMMM;
+ return 0.5*average(LL && MM)/MMMM;
}
else
{
diff --git a/src/turbulenceModels/incompressible/LES/homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.H b/src/turbulenceModels/incompressible/LES/homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.H
index 2a25f48fe0..d25f0e19f1 100644
--- a/src/turbulenceModels/incompressible/LES/homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.H
+++ b/src/turbulenceModels/incompressible/LES/homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.H
@@ -48,7 +48,7 @@ Description
and
- cD=/,
+ cD=1/2*/,
where
diff --git a/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.H b/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.H
index 9fea19fe8e..39c0cad9c2 100644
--- a/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.H
+++ b/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.H
@@ -25,7 +25,7 @@ Class
Foam::incompressible::LESModels::kOmegaSSTSAS
Description
- kOmegaSSTSAS LES turbulence model for incompressible flows
+ kOmegaSSTSAS LES turbulence model for incompressible flows
based on:
"Evaluation of the SST-SAS model: channel flow, asymmetric diffuser
@@ -44,6 +44,7 @@ Description
Heidelberg 2009.
F. R. Menter and Y. Egorov.
+
SourceFiles
kOmegaSSTSAS.C
diff --git a/tutorials/multiphase/interFoam/ras/Allclean b/tutorials/multiphase/interFoam/ras/Allclean
index d2955370a9..fdd2e7c83e 100755
--- a/tutorials/multiphase/interFoam/ras/Allclean
+++ b/tutorials/multiphase/interFoam/ras/Allclean
@@ -4,7 +4,7 @@ cd ${0%/*} || exit 1 # run from this directory
# Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
-keepCases="damBreak"
+keepCases="damBreak damBreakPorousBaffle"
loseCases="damBreakFine"
for case in $keepCases
@@ -15,6 +15,12 @@ do
then
cp $case/0/alpha1.org $case/0/alpha1
fi
+
+ if [ "$case" = "damBreakPorousBaffle" ]
+ then
+ cp $case/0/alpha1.org $case/0/alpha1
+ fi
+
done
for case in $loseCases
diff --git a/tutorials/multiphase/interFoam/ras/Allrun b/tutorials/multiphase/interFoam/ras/Allrun
index 2e138973f2..c34b360834 100755
--- a/tutorials/multiphase/interFoam/ras/Allrun
+++ b/tutorials/multiphase/interFoam/ras/Allrun
@@ -23,6 +23,9 @@ setDamBreakFine ()
mv temp.$$ $controlDict
}
+# Do damBreakPorousBaffle
+(cd damBreakPorousBaffle && foamRunTutorials)
+
# Do damBreak
(cd damBreak && foamRunTutorials)
@@ -43,4 +46,7 @@ cloneCase damBreak damBreakFine
runApplication reconstructPar
)
+# Do damBreakPorousBaffle
+(cd damBreakPorousBaffle && foamRunTutorials)
+
# ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/U b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/U
new file mode 100644
index 0000000000..ac751fa982
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/U
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volVectorField;
+ location "0";
+ object U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 1 -1 0 0 0 0];
+
+internalField uniform (0 0 0);
+
+boundaryField
+{
+ leftWall
+ {
+ type fixedValue;
+ value uniform (0 0 0);
+ }
+ rightWall
+ {
+ type fixedValue;
+ value uniform (0 0 0);
+ }
+ lowerWall
+ {
+ type fixedValue;
+ value uniform (0 0 0);
+ }
+ atmosphere
+ {
+ type pressureInletOutletVelocity;
+ value uniform (0 0 0);
+ }
+ porous_half0
+ {
+ type cyclic;
+ }
+ porous_half1
+ {
+ type cyclic;
+ }
+ defaultFaces
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/alpha1 b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/alpha1
new file mode 100644
index 0000000000..e80cfd6806
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/alpha1
@@ -0,0 +1,57 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ location "0";
+ object alpha1.org;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 0 0 0 0 0 0];
+
+internalField uniform 0;
+
+boundaryField
+{
+ leftWall
+ {
+ type zeroGradient;
+ }
+ rightWall
+ {
+ type zeroGradient;
+ }
+ lowerWall
+ {
+ type zeroGradient;
+ }
+ atmosphere
+ {
+ type inletOutlet;
+ inletValue uniform 0;
+ value uniform 0;
+ }
+ porous_half0
+ {
+ type cyclic;
+ }
+ porous_half1
+ {
+ type cyclic;
+ }
+ defaultFaces
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/alpha1.org b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/alpha1.org
new file mode 100644
index 0000000000..e80cfd6806
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/alpha1.org
@@ -0,0 +1,57 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ location "0";
+ object alpha1.org;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 0 0 0 0 0 0];
+
+internalField uniform 0;
+
+boundaryField
+{
+ leftWall
+ {
+ type zeroGradient;
+ }
+ rightWall
+ {
+ type zeroGradient;
+ }
+ lowerWall
+ {
+ type zeroGradient;
+ }
+ atmosphere
+ {
+ type inletOutlet;
+ inletValue uniform 0;
+ value uniform 0;
+ }
+ porous_half0
+ {
+ type cyclic;
+ }
+ porous_half1
+ {
+ type cyclic;
+ }
+ defaultFaces
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/epsilon b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/epsilon
new file mode 100644
index 0000000000..fada9be354
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/epsilon
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ location "0";
+ object epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 2 -3 0 0 0 0];
+
+internalField uniform 0.1;
+
+boundaryField
+{
+ leftWall
+ {
+ type epsilonWallFunction;
+ value uniform 0.1;
+ }
+ rightWall
+ {
+ type epsilonWallFunction;
+ value uniform 0.1;
+ }
+ lowerWall
+ {
+ type epsilonWallFunction;
+ value uniform 0.1;
+ }
+ atmosphere
+ {
+ type inletOutlet;
+ inletValue uniform 0.1;
+ value uniform 0.1;
+ }
+ porous_half0
+ {
+ type cyclic;
+ }
+ porous_half1
+ {
+ type cyclic;
+ }
+ defaultFaces
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/k b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/k
new file mode 100644
index 0000000000..b9af9b351d
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/k
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ location "0";
+ object k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 2 -2 0 0 0 0];
+
+internalField uniform 0.1;
+
+boundaryField
+{
+ leftWall
+ {
+ type kqRWallFunction;
+ value uniform 0.1;
+ }
+ rightWall
+ {
+ type kqRWallFunction;
+ value uniform 0.1;
+ }
+ lowerWall
+ {
+ type kqRWallFunction;
+ value uniform 0.1;
+ }
+ atmosphere
+ {
+ type inletOutlet;
+ inletValue uniform 0.1;
+ value uniform 0.1;
+ }
+ porous_half0
+ {
+ type cyclic;
+ }
+ porous_half1
+ {
+ type cyclic;
+ }
+ defaultFaces
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/nuTilda b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/nuTilda
new file mode 100644
index 0000000000..cc7a1b5843
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/nuTilda
@@ -0,0 +1,57 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ location "0";
+ object nuTilda;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 2 -1 0 0 0 0];
+
+internalField uniform 0;
+
+boundaryField
+{
+ leftWall
+ {
+ type zeroGradient;
+ }
+ rightWall
+ {
+ type zeroGradient;
+ }
+ lowerWall
+ {
+ type zeroGradient;
+ }
+ atmosphere
+ {
+ type inletOutlet;
+ inletValue uniform 0;
+ value uniform 0;
+ }
+ porous_half0
+ {
+ type cyclic;
+ }
+ porous_half1
+ {
+ type cyclic;
+ }
+ defaultFaces
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/nut b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/nut
new file mode 100644
index 0000000000..4bd13a3b19
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/nut
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ location "0";
+ object nut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 2 -1 0 0 0 0];
+
+internalField uniform 0;
+
+boundaryField
+{
+ leftWall
+ {
+ type nutkWallFunction;
+ value uniform 0;
+ }
+ rightWall
+ {
+ type nutkWallFunction;
+ value uniform 0;
+ }
+ lowerWall
+ {
+ type nutkWallFunction;
+ value uniform 0;
+ }
+ atmosphere
+ {
+ type calculated;
+ value uniform 0;
+ }
+ porous_half0
+ {
+ type cyclic;
+ }
+ porous_half1
+ {
+ type cyclic;
+ }
+ defaultFaces
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/p_rgh b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/p_rgh
new file mode 100644
index 0000000000..e760b71ca3
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/0/p_rgh
@@ -0,0 +1,78 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class volScalarField;
+ location "0";
+ object p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [ 1 -1 -2 0 0 0 0 ];
+
+internalField uniform 0;
+
+boundaryField
+{
+ leftWall
+ {
+ type buoyantPressure;
+ gradient uniform 0;
+ value uniform 0;
+ }
+ rightWall
+ {
+ type buoyantPressure;
+ gradient uniform 0;
+ value uniform 0;
+ }
+ lowerWall
+ {
+ type buoyantPressure;
+ gradient uniform 0;
+ value uniform 0;
+ }
+ atmosphere
+ {
+ type totalPressure;
+ rho rho;
+ psi none;
+ gamma 1;
+ p0 uniform 0;
+ value uniform 0;
+ }
+ porous_half0
+ {
+ type porousBafflePressure;
+ patchType cyclic;
+ jump uniform 0;
+ D 700;
+ I 500;
+ length 1.05;
+ value uniform 0;
+ }
+ porous_half1
+ {
+ type porousBafflePressure;
+ patchType cyclic;
+ jump uniform 0;
+ D 700;
+ I 500;
+ length 1.05;
+ value uniform 0;
+ }
+ defaultFaces
+ {
+ type empty;
+ }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/Allrun b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/Allrun
new file mode 100755
index 0000000000..29758935af
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/Allrun
@@ -0,0 +1,25 @@
+#!/bin/sh
+cd ${0%/*} || exit 1 # run from this directory
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+# Get application name
+application=`getApplication`
+
+runApplication blockMesh
+runApplication setFields
+
+unset FOAM_SIGFPE
+unset FOAM_SETNAN
+
+# Create faceZones for porous baffles
+runApplication topoSet
+
+createBaffles cyclicZoneFaces '(porous_half0 porous_half1)' -overwrite > log.createBaffles 2>&1
+
+runApplication changeDictionary
+
+runApplication $application
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/RASProperties b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/RASProperties
new file mode 100644
index 0000000000..67d4d8212c
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/RASProperties
@@ -0,0 +1,25 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "constant";
+ object RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel kEpsilon;
+
+turbulence on;
+
+printCoeffs on;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/g b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/g
new file mode 100644
index 0000000000..4fea433a00
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class uniformDimensionedVectorField;
+ location "constant";
+ object g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions [0 1 -2 0 0 0 0];
+value ( 0 -9.81 0 );
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/polyMesh/blockMeshDict b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000..1ec5641e4a
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/polyMesh/blockMeshDict
@@ -0,0 +1,122 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 0.146;
+
+vertices
+(
+ (0 0 0)
+ (2 0 0)
+ (2.16438 0 0)
+ (4 0 0)
+ (0 0.32876 0)
+ (2 0.32876 0)
+ (2.16438 0.32876 0)
+ (4 0.32876 0)
+ (0 4 0)
+ (2 4 0)
+ (2.16438 4 0)
+ (4 4 0)
+ (0 0 0.1)
+ (2 0 0.1)
+ (2.16438 0 0.1)
+ (4 0 0.1)
+ (0 0.32876 0.1)
+ (2 0.32876 0.1)
+ (2.16438 0.32876 0.1)
+ (4 0.32876 0.1)
+ (0 4 0.1)
+ (2 4 0.1)
+ (2.16438 4 0.1)
+ (4 4 0.1)
+);
+
+blocks
+(
+ hex (0 1 5 4 12 13 17 16) (23 8 1) simpleGrading (1 1 1)
+ hex (2 3 7 6 14 15 19 18) (19 8 1) simpleGrading (1 1 1)
+ hex (4 5 9 8 16 17 21 20) (23 42 1) simpleGrading (1 1 1)
+ hex (5 6 10 9 17 18 22 21) (4 42 1) simpleGrading (1 1 1)
+ hex (6 7 11 10 18 19 23 22) (19 42 1) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+boundary
+(
+ leftWall
+ {
+ type wall;
+ faces
+ (
+ (0 12 16 4)
+ (4 16 20 8)
+ );
+ }
+ rightWall
+ {
+ type wall;
+ faces
+ (
+ (7 19 15 3)
+ (11 23 19 7)
+ );
+ }
+ lowerWall
+ {
+ type wall;
+ faces
+ (
+ (0 1 13 12)
+ (1 5 17 13)
+ (5 6 18 17)
+ (2 14 18 6)
+ (2 3 15 14)
+ );
+ }
+ atmosphere
+ {
+ type patch;
+ faces
+ (
+ (8 20 21 9)
+ (9 21 22 10)
+ (10 22 23 11)
+ );
+ }
+
+ porous_half0
+ {
+ type cyclic;
+ faces ();
+ neighbourPatch porous_half1;
+ }
+
+ porous_half1
+ {
+ type cyclic;
+ faces ();
+ neighbourPatch porous_half0;
+ }
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/polyMesh/boundary b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/polyMesh/boundary
new file mode 100644
index 0000000000..c728438132
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/polyMesh/boundary
@@ -0,0 +1,68 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class polyBoundaryMesh;
+ location "constant/polyMesh";
+ object boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+7
+(
+ leftWall
+ {
+ type wall;
+ nFaces 50;
+ startFace 4419;
+ }
+ rightWall
+ {
+ type wall;
+ nFaces 50;
+ startFace 4469;
+ }
+ lowerWall
+ {
+ type wall;
+ nFaces 62;
+ startFace 4519;
+ }
+ atmosphere
+ {
+ type patch;
+ nFaces 46;
+ startFace 4581;
+ }
+ porous_half0
+ {
+ type cyclic;
+ nFaces 13;
+ startFace 4627;
+ matchTolerance 0.0001;
+ neighbourPatch porous_half1;
+ }
+ porous_half1
+ {
+ type cyclic;
+ nFaces 13;
+ startFace 4640;
+ matchTolerance 0.0001;
+ neighbourPatch porous_half0;
+ }
+ defaultFaces
+ {
+ type empty;
+ nFaces 4536;
+ startFace 4653;
+ }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/transportProperties b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/transportProperties
new file mode 100644
index 0000000000..ad16f48d5c
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/transportProperties
@@ -0,0 +1,72 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "constant";
+ object transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+twoPhase
+{
+ transportModel twoPhase;
+ phase1 phase1;
+ phase2 phase2;
+}
+
+phase1
+{
+ transportModel Newtonian;
+ nu nu [ 0 2 -1 0 0 0 0 ] 1e-06;
+ rho rho [ 1 -3 0 0 0 0 0 ] 1000;
+ CrossPowerLawCoeffs
+ {
+ nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06;
+ nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06;
+ m m [ 0 0 1 0 0 0 0 ] 1;
+ n n [ 0 0 0 0 0 0 0 ] 0;
+ }
+
+ BirdCarreauCoeffs
+ {
+ nu0 nu0 [ 0 2 -1 0 0 0 0 ] 0.0142515;
+ nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06;
+ k k [ 0 0 1 0 0 0 0 ] 99.6;
+ n n [ 0 0 0 0 0 0 0 ] 0.1003;
+ }
+}
+
+phase2
+{
+ transportModel Newtonian;
+ nu nu [ 0 2 -1 0 0 0 0 ] 1.48e-05;
+ rho rho [ 1 -3 0 0 0 0 0 ] 1;
+ CrossPowerLawCoeffs
+ {
+ nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06;
+ nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06;
+ m m [ 0 0 1 0 0 0 0 ] 1;
+ n n [ 0 0 0 0 0 0 0 ] 0;
+ }
+
+ BirdCarreauCoeffs
+ {
+ nu0 nu0 [ 0 2 -1 0 0 0 0 ] 0.0142515;
+ nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06;
+ k k [ 0 0 1 0 0 0 0 ] 99.6;
+ n n [ 0 0 0 0 0 0 0 ] 0.1003;
+ }
+}
+
+sigma sigma [ 1 0 -2 0 0 0 0 ] 0.07;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/turbulenceProperties b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/turbulenceProperties
new file mode 100644
index 0000000000..3e945495c5
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/constant/turbulenceProperties
@@ -0,0 +1,21 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "constant";
+ object turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType RASModel;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/selectCyclics.setSet b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/selectCyclics.setSet
new file mode 100644
index 0000000000..95bacaa24f
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/selectCyclics.setSet
@@ -0,0 +1,3 @@
+faceSet cyclicFaces new boxToFace (0.3015 0.0493 -1) (0.3069 0.2077 1);
+cellSet cyclicFacesSlaveCells new boxToCell (-1 0 -1) (0.305 0.31 1)
+faceZoneSet cyclicZoneFaces new setsToFaceZone cyclicFaces cyclicFacesSlaveCells
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/changeDictionaryDict b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/changeDictionaryDict
new file mode 100644
index 0000000000..b1bec7ddde
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/changeDictionaryDict
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object changeDictionaryDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dictionaryReplacement
+{
+ p_rgh
+ {
+ boundaryField
+ {
+ porous_half0
+ {
+ type porousBafflePressure;
+ patchType cyclic;
+ D 700;
+ I 500;
+ length 1.05;
+ jump uniform 0
+ value uniform 0;
+ }
+ porous_half1
+ {
+ type porousBafflePressure;
+ patchType cyclic;
+ D 700;
+ I 500;
+ length 1.05;
+ jump uniform 0;
+ value uniform 0;
+ }
+ }
+ }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/controlDict b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/controlDict
new file mode 100644
index 0000000000..78d65e3636
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/controlDict
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "system";
+ object controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application interFoam;
+
+startFrom startTime;
+
+startTime 0;
+
+stopAt endTime;
+
+endTime 1;
+
+deltaT 0.001;
+
+writeControl adjustableRunTime;
+
+writeInterval 0.1;
+
+purgeWrite 0;
+
+writeFormat ascii;
+
+writePrecision 6;
+
+writeCompression uncompressed;
+
+timeFormat general;
+
+timePrecision 6;
+
+runTimeModifiable yes;
+
+adjustTimeStep on;
+
+maxCo 0.1;
+maxAlphaCo 0.1;
+
+maxDeltaT 1;
+
+libs
+(
+ "libturbulenceDerivedFvPatchFields.so"
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/fvSchemes b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/fvSchemes
new file mode 100644
index 0000000000..ef617145e1
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/fvSchemes
@@ -0,0 +1,65 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "system";
+ object fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+ default Euler;
+}
+
+gradSchemes
+{
+ default Gauss linear;
+}
+
+divSchemes
+{
+ div(rho*phi,U) Gauss linear;
+ div(phi,alpha) Gauss vanLeer;
+ div(phirb,alpha) Gauss interfaceCompression;
+ div(phi,k) Gauss upwind;
+ div(phi,epsilon) Gauss upwind;
+ div(phi,R) Gauss upwind;
+ div(R) Gauss linear;
+ div(phi,nuTilda) Gauss upwind;
+ div((nuEff*dev(T(grad(U))))) Gauss linear;
+}
+
+laplacianSchemes
+{
+ default Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+ default linear;
+}
+
+snGradSchemes
+{
+ default corrected;
+}
+
+fluxRequired
+{
+ default no;
+ p_rgh;
+ pcorr;
+ alpha;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/fvSolution b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/fvSolution
new file mode 100644
index 0000000000..9e65f5d354
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/fvSolution
@@ -0,0 +1,78 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "system";
+ object fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+ pcorr
+ {
+ solver PCG;
+ preconditioner DIC;
+ tolerance 1e-10;
+ relTol 0;
+ }
+
+ p_rgh
+ {
+ solver PCG;
+ preconditioner DIC;
+ tolerance 1e-07;
+ relTol 0.05;
+ }
+
+ p_rghFinal
+ {
+ solver PCG;
+ preconditioner DIC;
+ tolerance 1e-08;
+ relTol 0;
+ }
+
+ "(U|k|epsilon)"
+ {
+ solver PBiCG;
+ preconditioner DILU;
+ tolerance 1e-06;
+ relTol 0;
+ }
+
+ "(U|k|epsilon)Final"
+ {
+ solver PBiCG;
+ preconditioner DILU;
+ tolerance 1e-07;
+ relTol 0;
+ }
+}
+
+PIMPLE
+{
+ momentumPredictor yes;
+ nCorrectors 3;
+ nNonOrthogonalCorrectors 0;
+ nAlphaCorr 1;
+ nAlphaSubCycles 4;
+ cAlpha 2;
+}
+
+relaxation
+{
+ U 1;
+ k 1;
+ epsilon 1;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/setFieldsDict b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/setFieldsDict
new file mode 100644
index 0000000000..de5e8f7b0f
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/setFieldsDict
@@ -0,0 +1,36 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ location "system";
+ object setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+ volScalarFieldValue alpha1 0
+);
+
+regions
+(
+ boxToCell
+ {
+ box (0 0 -1) (0.1461 0.292 1);
+ fieldValues
+ (
+ volScalarFieldValue alpha1 1
+ );
+ }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/topoSetDict b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/topoSetDict
new file mode 100644
index 0000000000..cb01338cff
--- /dev/null
+++ b/tutorials/multiphase/interFoam/ras/damBreakPorousBaffle/system/topoSetDict
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| ========= | |
+| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
+| \\ / O peration | Version: dev |
+| \\ / A nd | Web: www.OpenFOAM.com |
+| \\/ M anipulation | |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+ version 2.0;
+ format ascii;
+ class dictionary;
+ object topoSetDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+actions
+(
+ {
+ name cyclicFaces;
+ type faceSet;
+ action new;
+ source boxToFace;
+ sourceInfo
+ {
+ box (0.3015 0.0493 -1) (0.3069 0.2077 1);
+ }
+ }
+
+ {
+ name cyclicFacesSlaveCells;
+ type cellSet;
+ action new;
+ source boxToCell;
+ sourceInfo
+ {
+ box (-1 0 -1) (0.305 0.31 1);
+ }
+ }
+
+ {
+ name cyclicZoneFaces;
+ type faceZoneSet;
+ action new;
+ source setsToFaceZone;
+ sourceInfo
+ {
+ faceSet cyclicFaces;
+ cellSet cyclicFacesSlaveCells;
+ }
+ }
+);
+
+// ************************************************************************* //