Compare commits

..

3 Commits

Author SHA1 Message Date
1161a11931 STY: Cleaning up tutorial settings 2021-03-02 12:49:41 -08:00
ae0b6ee7bc ENH: Adding PDR sub-models 2021-03-02 12:48:12 -08:00
c32da817c4 INT: update of PDRFoam 2021-02-26 18:03:12 +01:00
82 changed files with 67732 additions and 554 deletions

View File

@ -12,6 +12,7 @@ XiModels/XiEqModels/BLMgMaXiEq/BLMgMaXiEq.C
XiModels/XiGModels/XiGModel/XiGModel.C
XiModels/XiGModels/XiGModel/XiGModelNew.C
XiModels/XiGModels/KTS/KTS.C
XiModels/XiGModels/instabilityG/instabilityG.C
XiModels/XiGModels/instability2G/instability2G.C
@ -24,6 +25,7 @@ PDRModels/dragModels/basic/basic.C
PDRModels/dragModels/basicSch/basicSch.C
PDRModels/XiEqModels/normBasicXiSubXiEq/normBasicXiSubXiEq.C
PDRModels/XiGModels/normBasicXiSubG/normBasicXiSubG.C
laminarFlameSpeed/SCOPE/SCOPELaminarFlameSpeed.C

View File

@ -1,12 +1,9 @@
EXE_INC = \
EXE_INC = -DFULLDEBUG -O0 -g \
-IXiModels/XiModel \
-IXiModels/XiEqModels/XiEqModel \
-IXiModels/XiGModels/XiGModel \
-IPDRModels/dragModels/PDRDragModel \
-IlaminarFlameSpeed/SCOPE \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/surfMesh/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/engine/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
@ -15,12 +12,13 @@ EXE_INC = \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/laminarFlameSpeed/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/triSurface/lnInclude \
EXE_LIBS = \
-lfiniteVolume \
-lfvOptions \
-lmeshTools \
-lengine \
-lturbulenceModels \
@ -30,4 +28,6 @@ EXE_LIBS = \
-lreactionThermophysicalModels \
-lspecie \
-llaminarFlameSpeedModels \
-ldynamicFvMesh
-lfiniteVolume \
-ldynamicFvMesh \
-lfvOptions

View File

@ -60,7 +60,7 @@ Foam::XiEqModels::normBasicSubGrid::normBasicSubGrid
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::XiEqModels::normBasicSubGrid::~normBasicSubGrid()
{}
@ -81,54 +81,64 @@ Foam::tmp<Foam::volScalarField> Foam::XiEqModels::normBasicSubGrid::XiEq() const
volScalarField magU(mag(U));
const scalarField Cw(pow(mesh.V(), 2.0/3.0));
const scalarField Cw = pow(mesh.V(), 2.0/3.0);
auto tN = tmp<volScalarField>::New
tmp<volScalarField> tN
(
IOobject
new volScalarField
(
"tN",
mesh.time().constant(),
IOobject
(
"tN",
mesh.time().constant(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
dimensionedScalar(Nv.dimensions(), Zero)
dimensionedScalar(Nv.dimensions(), Zero)
)
);
auto& N = tN.ref();
volScalarField& N = tN.ref();
N.primitiveFieldRef() = Nv.primitiveField()*Cw;
auto tns = tmp<volSymmTensorField>::New
tmp<volSymmTensorField> tns
(
IOobject
new volSymmTensorField
(
"tns",
mesh.time().timeName(),
IOobject
(
"tns",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
dimensionedSymmTensor(nsv.dimensions(), Zero)
dimensionedSymmTensor(nsv.dimensions(), Zero)
)
);
auto& ns = tns.ref();
volSymmTensorField& ns = tns.ref();
auto tB = tmp<volSymmTensorField>::New
tmp<volSymmTensorField> tB
(
IOobject
new volSymmTensorField
(
"tB",
mesh.time().timeName(),
IOobject
(
"tB",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
dimensionedSymmTensor(Bv.dimensions(), Zero)
dimensionedSymmTensor(Bv.dimensions(), Zero)
)
);
auto& B = tB.ref();
volSymmTensorField& B = tB.ref();
//calculating flame normal

View File

@ -54,7 +54,7 @@ class normBasicSubGrid
:
public XiEqModel
{
// Private Data
// Private data
// Constants in the equilibrium Xp equation
scalar Cxpe1_;
@ -65,11 +65,11 @@ class normBasicSubGrid
// Private Member Functions
//- No copy construct
normBasicSubGrid(const normBasicSubGrid&) = delete;
//- Disallow copy construct
normBasicSubGrid(const normBasicSubGrid&);
//- No copy assignment
void operator=(const normBasicSubGrid&) = delete;
//- Disallow default bitwise assignment
void operator=(const normBasicSubGrid&);
public:
@ -97,7 +97,7 @@ public:
// Member Functions
//- Return the flame-wrinkling XiEq
//- Return the flame-wrinking XiEq
virtual tmp<volScalarField> XiEq() const;
//- Update properties from given dictionary

View File

@ -26,8 +26,8 @@ License
\*---------------------------------------------------------------------------*/
#include "normBasicXiSubG.H"
#include "zeroGradientFvPatchField.H"
#include "addToRunTimeSelectionTable.H"
#include "zeroGradientFvPatchField.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@ -37,8 +37,8 @@ namespace XiGModels
{
defineTypeNameAndDebug(normBasicSubGrid, 0);
addToRunTimeSelectionTable(XiGModel, normBasicSubGrid, dictionary);
}
}
};
};
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
@ -74,6 +74,12 @@ Foam::XiGModels::normBasicSubGrid::normBasicSubGrid
{}
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::XiGModels::normBasicSubGrid::~normBasicSubGrid()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam::tmp<Foam::volScalarField> Foam::XiGModels::normBasicSubGrid::G() const
@ -106,9 +112,13 @@ Foam::tmp<Foam::volScalarField> Foam::XiGModels::normBasicSubGrid::G() const
if (!db.foundObject<volScalarField>("Ep"))
{
FatalErrorInFunction
<< "Looking for Ep in db that does not exist" << nl
<< Foam::abort(FatalError);
FatalErrorIn
(
"Foam::tmp<Foam::volScalarField> Foam::XiGModels::"
"normBasicSubGrid::G() const"
)
<< "Looking for Ep in db which does not exist "
<< Foam::abort(FatalError);
}
const volScalarField& Ep = db.lookupObject<volScalarField>("Ep");
@ -116,21 +126,27 @@ Foam::tmp<Foam::volScalarField> Foam::XiGModels::normBasicSubGrid::G() const
const volScalarField& Xi = db.lookupObject<volScalarField>("Xi");
//tmp<volScalarField> tGtot = XiGModel_->G();
auto tGtot = tmp<volScalarField>::New
tmp<volScalarField> tGtot
(
IOobject
new volScalarField
(
"tGtot",
Su_.mesh().time().timeName(),
IOobject
(
"tGtot",
Su_.mesh().time().timeName(),
Su_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
Su_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
Su_.mesh(),
dimensionedScalar(inv(dimTime), Zero)
dimensionedScalar(inv(dimTime), Zero)
)
);
auto& Gtot = tGtot.ref();
volScalarField& Gtot = tGtot.ref();
//calculating flame normal
@ -148,55 +164,68 @@ Foam::tmp<Foam::volScalarField> Foam::XiGModels::normBasicSubGrid::G() const
flNormal /= mgb;
auto tN = tmp<volScalarField>::New
tmp<volScalarField> tN
(
IOobject
new volScalarField
(
"tN",
Su_.mesh().time().timeName(),
IOobject
(
"tN",
Su_.mesh().time().timeName(),
Su_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
Su_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
Su_.mesh(),
dimensionedScalar(Nv.dimensions(), Zero)
dimensionedScalar(Nv.dimensions(), Zero)
)
);
auto& N = tN.ref();
volScalarField& N = tN.ref();
N.primitiveFieldRef() = Nv.primitiveField()*Cw;
auto tns = tmp<volSymmTensorField>::New
tmp<volSymmTensorField> tns
(
IOobject
new volSymmTensorField
(
"tns",
Su_.mesh().time().timeName(),
IOobject
(
"tns",
Su_.mesh().time().timeName(),
Su_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
Su_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
Su_.mesh(),
dimensionedSymmTensor(nsv.dimensions(), Zero)
dimensionedSymmTensor(nsv.dimensions(), Zero)
)
);
auto& ns = tns.ref();
volSymmTensorField& ns = tns.ref();
ns.primitiveFieldRef() = nsv.primitiveField()*Cw;
auto tB = tmp<volSymmTensorField>::New
tmp<volSymmTensorField> tB
(
IOobject
new volSymmTensorField
(
"tB",
Su_.mesh().time().timeName(),
IOobject
(
"tB",
Su_.mesh().time().timeName(),
Su_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
Su_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
Su_.mesh(),
dimensionedSymmTensor(Bv.dimensions(), Zero)
dimensionedSymmTensor(Bv.dimensions(), Zero)
)
);
auto& B = tB.ref();
volSymmTensorField& B = tB.ref();
B.primitiveFieldRef() = Bv.primitiveField()*sqrt(Cw);
@ -225,14 +254,14 @@ Foam::tmp<Foam::volScalarField> Foam::XiGModels::normBasicSubGrid::G() const
Gtot = value*Gtot1+(1.0 - value)*Gtot2;
/// if (Xi.mesh().time().outputTime())
/// {
/// Gtot.write();
/// bl.write();
/// Lobs.write();
/// flSpeed.write();
/// N.write();
/// }
//if (Xi.mesh().time().outputTime())
{
//Gtot.write();
//bl.write();
//Lobs.write();
//flSpeed.write();
//N.write();
}
return tGtot;
}
@ -249,7 +278,8 @@ Foam::tmp<Foam::volScalarField> Foam::XiGModels::normBasicSubGrid::Db() const
const volScalarField& Db = db.lookupObject<volScalarField>("Db");
//return turbulence_.muEff()
return Db + rho*Su_*(Xi - 1.0)*mgb*(0.5*Lobs)*Lobs/(mgb*Lobs + 1.0);
return Db
+ rho*Su_*(Xi - 1.0)*mgb*(0.5*Lobs)*Lobs/(mgb*Lobs + 1.0);
}

View File

@ -29,6 +29,7 @@ Class
Description
SourceFiles
normBasicSubGrid.C
@ -54,7 +55,7 @@ class normBasicSubGrid
:
public XiGModel
{
// Private Data
// Private data
//- Sub-grid generation rate coefficient
scalar k1_;
@ -74,14 +75,13 @@ class normBasicSubGrid
//- Maximum Lobs/CellWidth
scalar LOverCw_;
// Private Member Functions
//- No copy construct
normBasicSubGrid(const normBasicSubGrid&) = delete;
//- Disallow copy construct
normBasicSubGrid(const normBasicSubGrid&);
//- No copy assignment
void operator=(const normBasicSubGrid&) = delete;
//- Disallow default bitwise assignment
void operator=(const normBasicSubGrid&);
public:
@ -104,12 +104,12 @@ public:
//- Destructor
virtual ~normBasicSubGrid() = default;
virtual ~normBasicSubGrid();
// Member Functions
//- Return the flame-wrinkling generation rate
//- Return the flame-wrinking generation rate
virtual tmp<volScalarField> G() const;
//- Return the flame diffusivity

View File

@ -71,7 +71,7 @@ Foam::PDRDragModel::PDRDragModel
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::PDRDragModel::~PDRDragModel()
{}
@ -89,10 +89,4 @@ bool Foam::PDRDragModel::read(const dictionary& PDRProperties)
}
void Foam::PDRDragModel::writeFields() const
{
NotImplemented;
}
// ************************************************************************* //

View File

@ -57,9 +57,10 @@ class PDRDragModel
:
public regIOobject
{
protected:
// Protected Data
// Protected data
dictionary PDRDragModelCoeffs_;
@ -71,13 +72,15 @@ protected:
bool on_;
// Protected Member Functions
private:
//- No copy construct
PDRDragModel(const PDRDragModel&) = delete;
// Private Member Functions
//- No copy assignment
void operator=(const PDRDragModel&) = delete;
//- Disallow copy construct
PDRDragModel(const PDRDragModel&);
//- Disallow default bitwise assignment
void operator=(const PDRDragModel&);
public:
@ -143,7 +146,7 @@ public:
// Member Functions
//- Return true if the drag model is switched on
bool on() const noexcept
bool on() const
{
return on_;
}
@ -167,7 +170,10 @@ public:
}
//- Write fields
virtual void writeFields() const;
virtual void writeFields() const
{
NotImplemented;
}
};

View File

@ -6,7 +6,6 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2019 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -32,31 +31,34 @@ License
Foam::autoPtr<Foam::PDRDragModel> Foam::PDRDragModel::New
(
const dictionary& dict,
const dictionary& PDRProperties,
const compressible::RASModel& turbulence,
const volScalarField& rho,
const volVectorField& U,
const surfaceScalarField& phi
)
{
const word modelType(dict.get<word>("PDRDragModel"));
const word modelType(PDRProperties.get<word>("PDRDragModel"));
Info<< "Selecting drag model " << modelType << endl;
Info<< "Selecting flame-wrinkling model " << modelType << endl;
auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find(modelType);
if (!cstrIter.found())
if (cstrIter == dictionaryConstructorTablePtr_->end())
{
FatalIOErrorInLookup
FatalErrorIn
(
dict,
"PDRDragModel",
modelType,
*dictionaryConstructorTablePtr_
) << exit(FatalIOError);
"PDRDragModel::New"
) << "Unknown PDRDragModel type "
<< modelType << nl << nl
<< "Valid PDRDragModels are : " << endl
<< dictionaryConstructorTablePtr_->sortedToc()
<< exit(FatalError);
}
return autoPtr<PDRDragModel>(cstrIter()(dict, turbulence, rho, U, phi));
return autoPtr<PDRDragModel>
(cstrIter()(PDRProperties,turbulence, rho, U, phi));
}

View File

@ -83,7 +83,7 @@ Foam::PDRDragModels::basic::basic
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::PDRDragModels::basic::~basic()
{}
@ -93,20 +93,24 @@ Foam::PDRDragModels::basic::~basic()
Foam::tmp<Foam::volSymmTensorField> Foam::PDRDragModels::basic::Dcu() const
{
auto tDragDcu = tmp<volSymmTensorField>::New
tmp<volSymmTensorField> tDragDcu
(
IOobject
new volSymmTensorField
(
"tDragDcu",
U_.mesh().time().constant(),
IOobject
(
"tDragDcu",
U_.mesh().time().constant(),
U_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U_.mesh(),
dimensionedSymmTensor(dimMass/dimTime/dimVolume, Zero)
dimensionedSymmTensor(dimMass/dimTime/dimVolume, Zero)
)
);
auto& DragDcu = tDragDcu.ref();
volSymmTensorField& DragDcu = tDragDcu.ref();
if (on_)
{
@ -123,20 +127,24 @@ Foam::tmp<Foam::volSymmTensorField> Foam::PDRDragModels::basic::Dcu() const
Foam::tmp<Foam::volScalarField> Foam::PDRDragModels::basic::Gk() const
{
auto tGk = tmp<volScalarField>::New
tmp<volScalarField> tGk
(
IOobject
new volScalarField
(
"tGk",
U_.mesh().time().constant(),
IOobject
(
"tGk",
U_.mesh().time().constant(),
U_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U_.mesh(),
dimensionedScalar(dimMass/dimLength/pow3(dimTime), Zero)
dimensionedScalar(dimMass/dimLength/pow3(dimTime), Zero)
)
);
auto& Gk = tGk.ref();
volScalarField& Gk = tGk.ref();
if (on_)
{
@ -173,5 +181,4 @@ void Foam::PDRDragModels::basic::writeFields() const
CR_.write();
}
// ************************************************************************* //

View File

@ -99,7 +99,7 @@ class basic
:
public PDRDragModel
{
// Private Data
// Private data
dimensionedScalar Csu;
dimensionedScalar Csk;
@ -110,11 +110,11 @@ class basic
// Private Member Functions
//- No copy construct
basic(const basic&) = delete;
//- Disallow copy construct
basic(const basic&);
//- No copy assignment
void operator=(const basic&) = delete;
//- Disallow default bitwise assignment
void operator=(const basic&);
public:

View File

@ -86,7 +86,7 @@ Foam::PDRDragModels::basicSch::basicSch
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::PDRDragModels::basicSch::~basicSch()
{}
@ -96,20 +96,25 @@ Foam::PDRDragModels::basicSch::~basicSch()
Foam::tmp<Foam::volSymmTensorField> Foam::PDRDragModels::basicSch::Dcu() const
{
auto tDragDcu = tmp<volSymmTensorField>::New
tmp<volSymmTensorField> tDragDcu
(
IOobject
new volSymmTensorField
(
"tDragDcu",
U_.mesh().time().constant(),
IOobject
(
"tDragDcu",
U_.mesh().time().constant(),
U_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U_.mesh(),
dimensionedSymmTensor(dimMass/dimTime/dimVolume, Zero)
dimensionedSymmTensor(dimMass/dimTime/dimVolume, Zero)
)
);
auto& DragDcu = tDragDcu.ref();
volSymmTensorField& DragDcu = tDragDcu.ref();
if (on_)
{
@ -126,20 +131,25 @@ Foam::tmp<Foam::volSymmTensorField> Foam::PDRDragModels::basicSch::Dcu() const
Foam::tmp<Foam::volScalarField> Foam::PDRDragModels::basicSch::Gk() const
{
auto tGk = tmp<volScalarField>::New
tmp<volScalarField> tGk
(
IOobject
new volScalarField
(
"tGk",
U_.mesh().time().constant(),
IOobject
(
"tGk",
U_.mesh().time().constant(),
U_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U_.mesh(),
dimensionedScalar(dimMass/dimLength/pow3(dimTime), Zero)
dimensionedScalar(dimMass/dimLength/pow3(dimTime), Zero)
)
);
auto& Gk = tGk.ref();
volScalarField& Gk = tGk.ref();
if (on_)
{
@ -155,35 +165,39 @@ Foam::tmp<Foam::volScalarField> Foam::PDRDragModels::basicSch::Gk() const
if (subGridSchelkin_)
{
Gk *= this->SchelkinFactor();
Gk *= schFac();
}
}
return tGk;
}
Foam::tmp<Foam::volScalarField>
Foam::PDRDragModels::basicSch::SchelkinFactor() const
Foam::tmp<Foam::volScalarField> Foam::PDRDragModels::basicSch::schFac() const
{
const volScalarField& Su_ = U_.db().lookupObject<volScalarField>("Su");
const volScalarField& rhou_ = U_.db().lookupObject<volScalarField>("rhou");
const volScalarField& muu_ = U_.db().lookupObject<volScalarField>("muu");
auto tfac = tmp<volScalarField>::New
tmp<volScalarField> tfac
(
IOobject
new volScalarField
(
"tfac",
U_.mesh().time().constant(),
IOobject
(
"tfac",
U_.mesh().time().constant(),
U_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U_.mesh(),
dimensionedScalar(dimless, Zero)
dimensionedScalar(dimless, Zero)
)
);
auto& schFac = tfac.ref();
volScalarField& schFac = tfac.ref();
const volScalarField& k = turbulence_.k();
const volScalarField& epsilon = turbulence_.epsilon();
@ -225,38 +239,47 @@ Foam::tmp<Foam::volScalarField> Foam::PDRDragModels::basicSch::SchelkinExponent
const volSymmTensorField& nsv =
mesh.lookupObject<volSymmTensorField>("nsv");
auto tN = tmp<volScalarField>::New
tmp<volScalarField> tN
(
IOobject
new volScalarField
(
"tN",
mesh.time().timeName(),
IOobject
(
"tN",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
mesh,
dimensionedScalar(Nv.dimensions(), Zero)
dimensionedScalar(Nv.dimensions(), Zero)
)
);
auto& N = tN.ref();
volScalarField& N = tN.ref();
N.primitiveFieldRef() = Nv.primitiveField()*pow(mesh.V(), 2.0/3.0);
auto tns = tmp<volSymmTensorField>::New
tmp<volSymmTensorField> tns
(
IOobject
new volSymmTensorField
(
"tns",
mesh.time().timeName(),
IOobject
(
"tns",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
dimensionedSymmTensor(nsv.dimensions(), Zero)
dimensionedSymmTensor(nsv.dimensions(), Zero)
)
);
auto& ns = tns.ref();
volSymmTensorField& ns = tns.ref();
ns.primitiveFieldRef() = nsv.primitiveField()*pow(mesh.V(), 2.0/3.0);

View File

@ -28,6 +28,7 @@ Class
Description
SourceFiles
basicSch.C
@ -53,7 +54,7 @@ class basicSch
:
public PDRDragModel
{
// Private Data
// Private data
dimensionedScalar Csu;
dimensionedScalar Csk;
@ -72,11 +73,11 @@ class basicSch
// Private Member Functions
//- No copy construct
basicSch(const basicSch&) = delete;
//- Disallow copy construct
basicSch(const basicSch&);
//- No copy assignment
void operator=(const basicSch&) = delete;
//- Disallow default bitwise assignment
void operator=(const basicSch&);
public:
@ -116,8 +117,8 @@ public:
//- Write fields
void writeFields() const;
//- Return the Schelkin factor for drag turbulence generation rate
tmp<volScalarField> SchelkinFactor() const;
//- Return the schelkin factor for drag turbulence generation rate
tmp<volScalarField> schFac() const;
//- Return the sub-grid Schelkin effect exponent
tmp<volScalarField> SchelkinExponent

View File

@ -89,7 +89,7 @@ Foam::XiEqModels::BLMgMaXiEq::BLMgMaXiEq
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::XiEqModels::BLMgMaXiEq::~BLMgMaXiEq()
{}
@ -117,18 +117,21 @@ Foam::tmp<Foam::volScalarField> Foam::XiEqModels::BLMgMaXiEq::XiEq() const
volScalarField regime("regime", MaModel.Ma()*scalar(0.0));
auto tXiEq = tmp<volScalarField>::New
tmp<volScalarField> tXiEq
(
IOobject
new volScalarField
(
"XiEq",
epsilon.time().timeName(),
epsilon.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
epsilon.mesh(),
dimensionedScalar(dimless, Zero)
IOobject
(
"XiEq",
epsilon.time().timeName(),
epsilon.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
epsilon.mesh(),
dimensionedScalar(dimless, Zero)
)
);
const objectRegistry& db = Su_.db();

View File

@ -95,11 +95,11 @@ class BLMgMaXiEq
// Private Member Functions
//- No copy construct
BLMgMaXiEq(const BLMgMaXiEq&) = delete;
//- Disallow copy construct
BLMgMaXiEq(const BLMgMaXiEq&);
//- No copy assignment
void operator=(const BLMgMaXiEq&) = delete;
//- Disallow default bitwise assignment
void operator=(const BLMgMaXiEq&);
public:
@ -127,11 +127,12 @@ public:
// Member Functions
//- Return the flame-wrinkling XiEq
//- Return the flame-wrinking XiEq
virtual tmp<volScalarField> XiEq() const;
//- Update properties from given dictionary
virtual bool read(const dictionary& XiEqProperties);
};

View File

@ -6,7 +6,6 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2012 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -64,6 +63,12 @@ Foam::XiEqModels::Gulder::Gulder
{}
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::XiEqModels::Gulder::~Gulder()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam::tmp<Foam::volScalarField> Foam::XiEqModels::Gulder::XiEq() const

View File

@ -55,7 +55,7 @@ class Gulder
:
public XiEqModel
{
// Private Data
// Private data
//- Model constant
scalar XiEqCoef_;
@ -65,7 +65,6 @@ class Gulder
//- Schelkin effect Model constant
scalar uPrimeCoef_;
scalar nrExp_;
//- Use sub-grid Schelkin effect
@ -74,11 +73,11 @@ class Gulder
// Private Member Functions
//- No copy construct
Gulder(const Gulder&) = delete;
//- Disallow copy construct
Gulder(const Gulder&);
//- No copy assignment
void operator=(const Gulder&) = delete;
//- Disallow default bitwise assignment
void operator=(const Gulder&);
public:
@ -101,16 +100,17 @@ public:
//- Destructor
virtual ~Gulder() = default;
virtual ~Gulder();
// Member Functions
//- Return the flame-wrinkling XiEq
//- Return the flame-wrinking XiEq
virtual tmp<volScalarField> XiEq() const;
//- Update properties from given dictionary
virtual bool read(const dictionary& XiEqProperties);
};

View File

@ -6,7 +6,6 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -61,7 +60,7 @@ Foam::XiEqModel::XiEqModel
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::XiEqModel::~XiEqModel()
{}
@ -79,7 +78,9 @@ bool Foam::XiEqModel::read(const dictionary& XiEqProperties)
void Foam::XiEqModel::writeFields() const
{}
{
}
Foam::tmp<Foam::volScalarField>Foam::XiEqModel::calculateSchelkinEffect
@ -97,38 +98,46 @@ Foam::tmp<Foam::volScalarField>Foam::XiEqModel::calculateSchelkinEffect
const volSymmTensorField& nsv =
mesh.lookupObject<volSymmTensorField>("nsv");
auto tN = tmp<volScalarField>::New
tmp<volScalarField> tN
(
IOobject
new volScalarField
(
"tN",
mesh.time().timeName(),
IOobject
(
"tN",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE,
false
),
mesh,
dimensionedScalar(Nv.dimensions(), Zero)
dimensionedScalar(Nv.dimensions(), Zero)
)
);
auto& N = tN.ref();
volScalarField& N = tN.ref();
N.primitiveFieldRef() = Nv.primitiveField()*pow(mesh.V(), 2.0/3.0);
auto tns = tmp<volSymmTensorField>::New
tmp<volSymmTensorField> tns
(
IOobject
new volSymmTensorField
(
"tns",
mesh.time().timeName(),
IOobject
(
"tns",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
dimensionedSymmTensor(nsv.dimensions(), Zero)
dimensionedSymmTensor(nsv.dimensions(), Zero)
)
);
auto& ns = tns.ref();
volSymmTensorField& ns = tns.ref();
ns.primitiveFieldRef() = nsv.primitiveField()*pow(mesh.V(), 2.0/3.0);
@ -147,7 +156,7 @@ Foam::tmp<Foam::volScalarField>Foam::XiEqModel::calculateSchelkinEffect
N.primitiveFieldRef() = upLocal*(max(scalar(1.0), pow(nr, nrExp)) - 1.0);
return tN;
}
// ************************************************************************* //

View File

@ -6,7 +6,6 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -54,9 +53,10 @@ namespace Foam
class XiEqModel
{
protected:
// Protected Data
// Protected data
//- Dictionary
dictionary XiEqModelCoeffs_;
@ -70,14 +70,15 @@ protected:
//- Laminar burning velocity
const volScalarField& Su_;
private:
// Protected Member Functions
// Private Member Functions
//- No copy construct
XiEqModel(const XiEqModel&) = delete;
//- Disallow copy construct
XiEqModel(const XiEqModel&);
//- No copy assignment
void operator=(const XiEqModel&) = delete;
//- Disallow default bitwise assignment
void operator=(const XiEqModel&);
public:
@ -142,7 +143,7 @@ public:
// Member Functions
//- Return the flame-wrinkling XiEq
//- Return the flame-wrinking XiEq
virtual tmp<volScalarField> XiEq() const = 0;
// Only used by sperseded modles

View File

@ -6,7 +6,6 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2019-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -32,33 +31,41 @@ License
Foam::autoPtr<Foam::XiEqModel> Foam::XiEqModel::New
(
const dictionary& dict,
const dictionary& propDict,
const word& modelName,
const psiuReactionThermo& thermo,
const compressible::RASModel& turbulence,
const volScalarField& Su
)
{
const word modelType(dict.get<word>(modelName));
const word modelType(propDict.get<word>(modelName));
Info<< "Selecting flame-wrinkling model Eq " << modelType << endl;
auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find(modelType);
if (!cstrIter.found())
if (cstrIter == dictionaryConstructorTablePtr_->end())
{
FatalIOErrorInLookup
FatalErrorIn
(
dict,
modelName,
modelType,
*dictionaryConstructorTablePtr_
) << exit(FatalIOError);
"XiEqModel::New"
"("
" const psiuReactionThermo& thermo,"
" const word& modelType,"
" const compressible::RASModel& turbulence,"
" const volScalarField& Su"
")"
) << "Unknown XiEqModel type "
<< modelType << nl << nl
<< "Valid XiEqModels are : " << endl
<< dictionaryConstructorTablePtr_->sortedToc()
<< exit(FatalError);
}
return autoPtr<XiEqModel>(cstrIter()
(
dict, modelName, thermo, turbulence, Su)
propDict, modelName, thermo, turbulence, Su)
);
}

View File

@ -27,6 +27,8 @@ License
#include "instability2XiEq.H"
#include "addToRunTimeSelectionTable.H"
#include "IFstream.H"
#include "fvCFD.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@ -74,13 +76,19 @@ Foam::XiEqModels::instability2XiEq::instability2XiEq
XiEqModel::New(XiEqModelCoeffs_, modelType, thermo, turbulence, Su)
)
{
if (CIn_ <= 0.0)
if (CIn_ <= 0.0)
{
CIn_ = defaultCIn_;
}
}
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::XiEqModels::instability2XiEq::~instability2XiEq()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam::tmp<Foam::volScalarField> Foam::XiEqModels::instability2XiEq::XiEq() const
@ -100,8 +108,8 @@ Foam::tmp<Foam::volScalarField> Foam::XiEqModels::instability2XiEq::XiEq() const
ignition ign(combustionProperties, Su_.mesh().time(), Su_.mesh());
//const scalar ignTim = ign.sites()[0].tmIgn();
const scalar curTime = Su_.mesh().time().value();
const scalar deltaT = Su_.mesh().time().deltaTValue();
scalar curTime = Su_.mesh().time().value();
scalar deltaT = Su_.mesh().time().deltaTValue();
const scalar ignTim = curTime - deltaT - ign.sites()[0].time();
volScalarField turbXiEq(XiEqModel_->XiEq());

View File

@ -62,7 +62,7 @@ class instability2XiEq
{
// Private data
//- Laminar burning speed
// -Laminar burning speed
laminarFlameSpeedModels::SCOPE saModel_;
//- GIn (initial instability G)divided by Su^2. Read from fuel file
@ -80,11 +80,11 @@ class instability2XiEq
// Private Member Functions
//- No copy construct
instability2XiEq(const instability2XiEq&) = delete;
//- Disallow copy construct
instability2XiEq(const instability2XiEq&);
//- No copy assignment
void operator=(const instability2XiEq&) = delete;
//- Disallow default bitwise assignment
void operator=(const instability2XiEq&);
public:
@ -107,16 +107,17 @@ public:
//- Destructor
virtual ~instability2XiEq() = default;
virtual ~instability2XiEq();
// Member Functions
//- Return the flame-wrinkling XiEq
//- Return the flame-wrinking XiEq
virtual tmp<volScalarField> XiEq() const;
//- Update properties from given dictionary
virtual bool read(const dictionary& XiEqProperties);
};

View File

@ -6,7 +6,6 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -52,11 +51,17 @@ Foam::XiGModels::KTS::KTS
const volScalarField& Su
)
:
XiGModel(XiGProperties, modelType, thermo, turbulence, Su),
XiGModel(XiGProperties,modelType, thermo, turbulence, Su),
GEtaCoef_(XiGModelCoeffs_.get<scalar>("GEtaCoef"))
{}
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::XiGModels::KTS::~KTS()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam::tmp<Foam::volScalarField> Foam::XiGModels::KTS::G() const

View File

@ -5,8 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2012 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
Copyright (C) 2011-2015 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -56,18 +55,18 @@ class KTS
:
public XiGModel
{
// Private Data
// Private data
scalar GEtaCoef_;
// Private Member Functions
//- No copy construct
KTS(const KTS&) = delete;
//- Disallow copy construct
KTS(const KTS&);
//- No copy assignment
void operator=(const KTS&) = delete;
//- Disallow default bitwise assignment
void operator=(const KTS&);
public:
@ -90,12 +89,12 @@ public:
//- Destructor
virtual ~KTS() = default;
virtual ~KTS();
// Member Functions
//- Return the flame-wrinkling generation rate
//- Return the flame-wrinking generation rate
virtual tmp<volScalarField> G() const;
//- Return the flame diffusivity

View File

@ -60,7 +60,7 @@ Foam::XiGModel::XiGModel
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::XiGModel::~XiGModel()
{}

View File

@ -53,9 +53,10 @@ namespace Foam
class XiGModel
{
protected:
// Protected Data
// Protected data
dictionary XiGModelCoeffs_;
@ -64,13 +65,15 @@ protected:
const volScalarField& Su_;
// Protected Member Functions
private:
//- No copy construct
XiGModel(const XiGModel&) = delete;
// Private Member Functions
//- No copy assignment
void operator=(const XiGModel&) = delete;
//- Disallow copy construct
XiGModel(const XiGModel&);
//- Disallow default bitwise assignment
void operator=(const XiGModel&);
public:
@ -135,7 +138,7 @@ public:
// Member Functions
//- Return the flame-wrinkling genration rate
//- Return the flame-wrinking genration rate
virtual tmp<volScalarField> G() const = 0;
//- Return the flame diffusivity

View File

@ -6,7 +6,6 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2019-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -32,33 +31,40 @@ License
Foam::autoPtr<Foam::XiGModel> Foam::XiGModel::New
(
const dictionary& dict,
const dictionary& propDict,
const word& modelName,
const psiuReactionThermo& thermo,
const compressible::RASModel& turbulence,
const volScalarField& Su
)
{
const word modelType(dict.get<word>(modelName));
const word modelType(propDict.get<word>(modelName));
Info<< "Selecting flame-wrinkling model for G " << modelType << endl;
auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find(modelType);
if (!cstrIter.found())
if (cstrIter == dictionaryConstructorTablePtr_->end())
{
FatalIOErrorInLookup
FatalErrorIn
(
dict,
modelName,
modelType,
*dictionaryConstructorTablePtr_
) << exit(FatalIOError);
"XiGModel::New"
"("
" const psiuReactionThermo& thermo,"
" const compressible::RASModel& turbulence,"
" const volScalarField& Su"
")"
) << "Unknown XiGModel type "
<< modelType << nl << nl
<< "Valid XiGModels are : " << endl
<< dictionaryConstructorTablePtr_->sortedToc()
<< exit(FatalError);
}
return autoPtr<XiGModel>(cstrIter()
(
dict, modelName, thermo, turbulence, Su)
propDict, modelName, thermo, turbulence, Su)
);
}

View File

@ -75,31 +75,37 @@ Foam::XiGModels::instability2G::instability2G
lambdaIn_("lambdaIn", XiGModelCoeffs_),
XiGModel_
(
XiGModel::New(XiGModelCoeffs_, modelType, thermo, turbulence, Su)
XiGModel::New(XiGModelCoeffs_,modelType,thermo, turbulence, Su)
)
{
if (CIn_ <= 0.0)
if (CIn_ <= 0.0)
{
CIn_ = defaultCIn_;
}
}
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::XiGModels::instability2G::~instability2G()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam::tmp<Foam::volScalarField> Foam::XiGModels::instability2G::G() const
{
IOdictionary combustionProperties
(
IOobject
IOdictionary combustionProperties
(
"combustionProperties",
Su_.mesh().time().constant(),
Su_.mesh(),
IOobject::MUST_READ,
IOobject::NO_WRITE
)
);
IOobject
(
"combustionProperties",
Su_.mesh().time().constant(),
Su_.mesh(),
IOobject::MUST_READ,
IOobject::NO_WRITE
)
);
ignition ign(combustionProperties, Su_.mesh().time(), Su_.mesh());
@ -111,6 +117,7 @@ Foam::tmp<Foam::volScalarField> Foam::XiGModels::instability2G::G() const
volScalarField GIn("GIn", 0.0*turbXiG);
forAll (GIn, i)
{
GIn[i] = CIn_*Su_[i]*Su_[i]*exp(CIn_*Su_[i]*Su_[i]*ignTim)*GInMult_;
@ -122,14 +129,13 @@ Foam::tmp<Foam::volScalarField> Foam::XiGModels::instability2G::G() const
GIn = CIn*Su_*Su_*exp(CIn*Su_*Su_*ignTm)*GInMult_;
GIn *=
(
GIn /
GIn
/
(
GIn
+ GInFade_*turbXiG
+ dimensionedScalar("GSmall", inv(dimTime), SMALL)
)
);
);
return (GIn + turbXiG);
}

View File

@ -27,8 +27,7 @@ Class
Foam::XiGModels::instability2G
Description
Flame-surface instabilityG flame-wrinkling generation rate coefficient model
used in \link XiModel.H \endlink.
SourceFiles
instability2G.C
@ -46,6 +45,7 @@ SourceFiles
#include "Time.H"
#include "fvMesh.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
@ -61,7 +61,7 @@ class instability2G
:
public XiGModel
{
// Private Data
// Private data
laminarFlameSpeedModels::SCOPE saModel_;
@ -72,13 +72,12 @@ class instability2G
scalar defaultCIn_;
// Determine how fast GIn fades out as turbulence starts
scalar GInFade_;
scalar GInFade_;
// Set GIn large so that XiEq determines Xi value.
// Son increase byfactor:
scalar GInMult_;
// Set GIn large so that XiEq determines Xi value. Son increase byfactor:
scalar GInMult_;
//- The instability2G length-scale
//- instability2G length-scale
dimensionedScalar lambdaIn_;
//- Xi generation rate model due to all other processes
@ -87,11 +86,11 @@ class instability2G
// Private Member Functions
//- No copy construct
instability2G(const instability2G&) = delete;
//- Disallow copy construct
instability2G(const instability2G&);
//- No copy assignment
void operator=(const instability2G&) = delete;
//- Disallow default bitwise assignment
void operator=(const instability2G&);
public:
@ -114,12 +113,12 @@ public:
//- Destructor
virtual ~instability2G() = default;
virtual ~instability2G();
// Member Functions
//- Return the flame-wrinkling generation rate
//- Return the flame-wrinking generation rate
virtual tmp<volScalarField> G() const;
//- Return the flame diffusivity

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2021 OpenCFD Ltd.
Copyright (C) 2011-2015 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -58,6 +58,12 @@ Foam::XiGModels::instabilityG::instabilityG
{}
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::XiGModels::instabilityG::~instabilityG()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam::tmp<Foam::volScalarField> Foam::XiGModels::instabilityG::G() const
@ -76,7 +82,7 @@ Foam::tmp<Foam::volScalarField> Foam::XiGModels::instabilityG::Db() const
const volScalarField& mgb = db.lookupObject<volScalarField>("mgb");
const volScalarField& Db1 = db.lookupObject<volScalarField>("Db");
//// OLD return turbulence_.muEff()
//return turbulence_.muEff()
return Db1
+ rho*Su_*(Xp*Xi - 1.0)*mgb*(0.5*lambdaIn_)/(mgb + 1.0/lambdaIn_);
}

View File

@ -5,8 +5,7 @@
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2012 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
Copyright (C) 2011-2015 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -28,9 +27,10 @@ Class
Foam::XiGModels::instabilityG
Description
Flame-surface instabilityG flame-wrinkling generation rate coefficient model
Flame-surface instabilityG flame-wrinking generation rate coefficient model
used in \link XiModel.H \endlink.
SourceFiles
instabilityG.C
@ -56,7 +56,7 @@ class instabilityG
:
public XiGModel
{
// Private Data
// Private data
//- Flame instabilityG wrinling generation rate coefficient
dimensionedScalar GIn_;
@ -70,11 +70,11 @@ class instabilityG
// Private Member Functions
//- No copy construct
instabilityG(const instabilityG&) = delete;
//- Disallow copy construct
instabilityG(const instabilityG&);
//- No copy assignment
void operator=(const instabilityG&) = delete;
//- Disallow default bitwise assignment
void operator=(const instabilityG&);
public:
@ -97,12 +97,12 @@ public:
//- Destructor
virtual ~instabilityG() = default;
virtual ~instabilityG();
// Member Functions
//- Return the flame-wrinkling generation rate
//- Return the flame-wrinking generation rate
virtual tmp<volScalarField> G() const;
//- Return the flame diffusivity

View File

@ -89,7 +89,7 @@ Foam::XiModel::XiModel
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::XiModel::~XiModel()
{}
@ -99,7 +99,7 @@ Foam::XiModel::~XiModel()
bool Foam::XiModel::read(const dictionary& XiProperties)
{
XiModelCoeffs_ = XiProperties.optionalSubDict(type() + "Coeffs");
XiModelCoeffs_ = XiProperties.subDict(type() + "Coeffs");
return true;
}

View File

@ -110,9 +110,10 @@ namespace Foam
class XiModel
{
protected:
// Protected Data
// Protected data
dictionary XiModelCoeffs_;
@ -123,20 +124,21 @@ protected:
const volScalarField& b_;
const surfaceScalarField& phi_;
//- Flame wrinkling field
//- Flame wrinking field
volScalarField Xi_;
//- Flame wrinkling field for the subgrid obstacles
//- Flame wrinking field for the subgrid obstacles
volScalarField Xp_;
private:
// Protected Member Functions
// Private Member Functions
//- No copy construct
XiModel(const XiModel&) = delete;
//- Disallow copy construct
XiModel(const XiModel&);
//- No copy assignment
void operator=(const XiModel&) = delete;
//- Disallow default bitwise assignment
void operator=(const XiModel&);
public:
@ -209,13 +211,13 @@ public:
// Member Functions
//- Return the flame-wrinkling Xi
//- Return the flame-wrinking Xi
virtual const volScalarField& Xi() const
{
return Xi_;
}
//- Return the obstacle-flame-wrinkling Xp
//- Return the obstacle-flame-wrinking Xp
virtual const volScalarField& Xp() const
{
return Xp_;
@ -224,10 +226,10 @@ public:
//- Return the flame diffusivity
virtual tmp<volScalarField> Db() const
{
const objectRegistry& db = Su_.db();
const volScalarField& Db1 = db.lookupObject<volScalarField>("Db");
//return turbulence_.muEff();
return Db1;
const objectRegistry& db = Su_.db();
const volScalarField& Db1 = db.lookupObject<volScalarField>("Db");
//return turbulence_.muEff();
return Db1;
}
//- Add Xi to the multivariateSurfaceInterpolationScheme table
@ -241,10 +243,10 @@ public:
fields.add(Xp_);
}
//- Correct the flame-wrinkling Xi
//- Correct the flame-wrinking Xi
virtual void correct() = 0;
//- Correct the flame-wrinkling Xi using the given convection scheme
//- Correct the flame-wrinking Xi using the given convection scheme
virtual void correct(const fv::convectionScheme<scalar>&)
{
correct();

View File

@ -6,7 +6,6 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2019 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -32,7 +31,7 @@ License
Foam::autoPtr<Foam::XiModel> Foam::XiModel::New
(
const dictionary& dict,
const dictionary& propDict,
const psiuReactionThermo& thermo,
const compressible::RASModel& turbulence,
const volScalarField& Su,
@ -41,25 +40,27 @@ Foam::autoPtr<Foam::XiModel> Foam::XiModel::New
const surfaceScalarField& phi
)
{
const word modelType(dict.get<word>("XiModel"));
const word modelType(propDict.get<word>("XiModel"));
Info<< "Selecting flame-wrinkling model " << modelType << endl;
auto cstrIter = dictionaryConstructorTablePtr_->cfind(modelType);
dictionaryConstructorTable::iterator cstrIter =
dictionaryConstructorTablePtr_->find(modelType);
if (!cstrIter.found())
if (cstrIter == dictionaryConstructorTablePtr_->end())
{
FatalIOErrorInLookup
FatalErrorIn
(
dict,
"XiModel",
modelType,
*dictionaryConstructorTablePtr_
) << exit(FatalIOError);
"XiModel::New"
) << "Unknown XiModel type "
<< modelType << nl << nl
<< "Valid XiModels are : " << endl
<< dictionaryConstructorTablePtr_->sortedToc()
<< exit(FatalError);
}
return autoPtr<XiModel>
(cstrIter()(dict, thermo, turbulence, Su, rho, b, phi));
(cstrIter()(propDict, thermo, turbulence, Su, rho, b, phi));
}

View File

@ -88,7 +88,7 @@ Foam::XiModels::transportTwoEqs::transportTwoEqs
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::XiModels::transportTwoEqs::~transportTwoEqs()
{}
@ -155,13 +155,8 @@ void Foam::XiModels::transportTwoEqs::correct
const volScalarField Gpfi
(
CpfiDot_
* sqrt(max(fvc::grad(rho_)&fvc::grad(p), zero))
/ rho_*b_*(1.0-b_)
+ CpfiCross_
* sqrt(mag(fvc::grad(rho_)^fvc::grad(p)))
/ rho_*b_*(1.0-b_)
CpfiDot_*sqrt(max(fvc::grad(rho_)&fvc::grad(p), zero ))/rho_*b_*(1.0-b_)
+ CpfiCross_*sqrt(mag(fvc::grad(rho_)^fvc::grad(p) ))/rho_*b_*(1.0-b_)
);
fvScalarMatrix XiEqn_
@ -190,11 +185,11 @@ void Foam::XiModels::transportTwoEqs::correct
const volScalarField Rp("Rp", GpEta*XpEqEta/(XpEqEta - 0.999));
const volScalarField XpEq
const volScalarField XpEq
(
"XpEq",
1.0 + (1.0 + (2*XiShapeCoef_)*(0.5 - b_))*(XpEqEta - 1.0)
);
);
const volScalarField Gpp("Gpp", Rp*(XpEq - 1.0)/XpEq);
@ -218,7 +213,7 @@ void Foam::XiModels::transportTwoEqs::correct
// Calculate Ep
const volScalarField& Lobs = db.lookupObject<volScalarField>("Lobs");
const scalarField Cw(pow(Su_.mesh().V(), 2.0/3.0));
const scalarField Cw = pow(Su_.mesh().V(), 2.0/3.0);
volScalarField LI(Lobs);
LI.primitiveFieldRef() = max(LI.primitiveField(),LOverCw_*sqrt(Cw));

View File

@ -78,17 +78,17 @@ class transportTwoEqs
//- Generation for Xp (obstacles)
autoPtr<XiGModel> XpGModel_;
//- Dissipation length scale for subgrid obstacles
//- Dissipation lenght scale for subgrid obstacles
volScalarField Ep_;
// Private Member Functions
//- No copy construct
transportTwoEqs(const transportTwoEqs&) = delete;
//- Disallow copy construct
transportTwoEqs(const transportTwoEqs&);
//- No copy assignment
void operator=(const transportTwoEqs&) = delete;
//- Disallow default bitwise assignment
void operator=(const transportTwoEqs&);
public:
@ -121,13 +121,13 @@ public:
//- Return the flame diffusivity
virtual tmp<volScalarField> Db() const;
//- Correct the flame-wrinkling Xi
//- Correct the flame-wrinking Xi
virtual void correct()
{
NotImplemented;
}
//- Correct the flame-wrinkling Xi using the given convection scheme
//- Correct the flame-wrinking Xi using the given convection scheme
virtual void correct(const fv::convectionScheme<scalar>& mvConvection);
//- Update properties from given dictionary

View File

@ -28,11 +28,10 @@ if (ign.ignited())
// Wrinkling due to turbulence
const volScalarField& Xi = flameWrinkling->Xi();
// Wrinkling due to obstacles
const volScalarField& Xp = flameWrinkling->Xp();
// Progress variable
// progress variable
// ~~~~~~~~~~~~~~~~~
c = (1.0 - b);
@ -95,8 +94,6 @@ if (ign.ignited())
bEqn.relax();
fvOptions.constrain(bEqn);
bEqn.solve();
b.max(0.0);
b.min(1.0);
fvOptions.correct(b);

View File

@ -6,7 +6,6 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2012 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -48,34 +47,6 @@ namespace laminarFlameSpeedModels
}
// * * * * * * * * * * * * * * * Local Functions * * * * * * * * * * * * * * //
namespace Foam
{
static void readPolynomialCoeffs
(
Polynomial<7>& coeffs,
const word& keyword,
const dictionary& dict
)
{
{
coeffs[0] = dict.get<scalar>(keyword + "0");
coeffs[1] = dict.get<scalar>(keyword + "1");
coeffs[2] = dict.get<scalar>(keyword + "2");
coeffs[3] = dict.get<scalar>(keyword + "3");
coeffs[4] = dict.get<scalar>(keyword + "4");
coeffs[5] = dict.get<scalar>(keyword + "5");
coeffs[6] = dict.get<scalar>(keyword + "6");
}
// TBD: support direct reading of all coeffs?
}
} // End namespace Foam
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::laminarFlameSpeedModels::SCOPE::polynomial::polynomial
@ -111,15 +82,24 @@ Foam::laminarFlameSpeedModels::SCOPE::SCOPE
UFL_(coeffsDict_.get<scalar>("upperFlamabilityLimit")),
SuPolyL_(coeffsDict_.subDict("lowerSuPolynomial")),
SuPolyU_(coeffsDict_.subDict("upperSuPolynomial")),
Texp_(),
pexp_(),
Texp0_(coeffsDict_.get<scalar>("Texp0")),
Texp1_(coeffsDict_.get<scalar>("Texp1")),
Texp2_(coeffsDict_.get<scalar>("Texp2")),
Texp3_(coeffsDict_.get<scalar>("Texp3")),
Texp4_(coeffsDict_.get<scalar>("Texp4")),
Texp5_(coeffsDict_.get<scalar>("Texp5")),
Texp6_(coeffsDict_.get<scalar>("Texp6")),
pexp0_(coeffsDict_.get<scalar>("pexp0")),
pexp1_(coeffsDict_.get<scalar>("pexp1")),
pexp2_(coeffsDict_.get<scalar>("pexp2")),
pexp3_(coeffsDict_.get<scalar>("pexp3")),
pexp4_(coeffsDict_.get<scalar>("pexp4")),
pexp5_(coeffsDict_.get<scalar>("pexp5")),
pexp6_(coeffsDict_.get<scalar>("pexp6")),
CIn_(coeffsDict_.getOrDefault<scalar>("CIn", 0)),
MaPolyL_(coeffsDict_.subDict("lowerMaPolynomial")),
MaPolyU_(coeffsDict_.subDict("upperMaPolynomial"))
{
readPolynomialCoeffs(Texp_, "Texp", coeffsDict_);
readPolynomialCoeffs(pexp_, "pexp", coeffsDict_);
SuPolyL_.ll = max(SuPolyL_.ll, LFL_) + SMALL;
SuPolyU_.ul = min(SuPolyU_.ul, UFL_) - SMALL;
@ -132,7 +112,7 @@ Foam::laminarFlameSpeedModels::SCOPE::SCOPE
if (debug)
{
Info<< "phi Su (T = Tref, p = pref)" << endl;
const label n = 200;
label n = 200;
for (int i=0; i<n; i++)
{
scalar phi = (2.0*i)/n;
@ -156,7 +136,7 @@ inline Foam::scalar Foam::laminarFlameSpeedModels::SCOPE::polyPhi
const polynomial& a
)
{
const scalar x = phi - 1.0;
scalar x = phi - 1.0;
return
a[0]
@ -174,19 +154,19 @@ inline Foam::scalar Foam::laminarFlameSpeedModels::SCOPE::SuRef
{
if (phi < LFL_ || phi > UFL_)
{
// Return 0 beyond the flammability limits
// Return 0 beyond the flamibility limits
return scalar(0);
}
else if (phi < SuPolyL_.ll)
{
// Use linear interpolation between the low end of the
// lower polynomial and the lower flammability limit
// lower polynomial and the lower flamibility limit
return SuPolyL_.llv*(phi - LFL_)/(SuPolyL_.ll - LFL_);
}
else if (phi > SuPolyU_.ul)
{
// Use linear interpolation between the upper end of the
// upper polynomial and the upper flammability limit
// upper polynomial and the upper flamibility limit
return SuPolyU_.ulv*(UFL_ - phi)/(UFL_ - SuPolyU_.ul);
}
else if (phi < SuPolyL_.lu)
@ -201,7 +181,7 @@ inline Foam::scalar Foam::laminarFlameSpeedModels::SCOPE::SuRef
}
else
{
FatalErrorInFunction
FatalErrorIn("laminarFlameSpeedModels::SCOPE::SuRef(scalar phi)")
<< "phi = " << phi
<< " cannot be handled by SCOPE function with the "
"given coefficients"
@ -224,13 +204,13 @@ inline Foam::scalar Foam::laminarFlameSpeedModels::SCOPE::Ma
else if (phi < MaPolyL_.ll)
{
// Use linear interpolation between the low end of the
// lower polynomial and the lower flammability limit
// lower polynomial and the lower flamibility limit
return MaPolyL_.llv*(phi - LFL_)/(MaPolyL_.ll - LFL_);
}
else if (phi > MaPolyU_.ul)
{
// Use linear interpolation between the upper end of the
// upper polynomial and the upper flammability limit
// upper polynomial and the upper flamibility limit
return MaPolyU_.ulv*(UFL_ - phi)/(UFL_ - MaPolyU_.ul);
}
else if (phi < MaPolyL_.lu)
@ -245,7 +225,7 @@ inline Foam::scalar Foam::laminarFlameSpeedModels::SCOPE::Ma
}
else
{
FatalErrorInFunction
FatalErrorIn("laminarFlameSpeedModels::SCOPE::Ma(scalar phi)")
<< "phi = " << phi
<< " cannot be handled by SCOPE function with the "
"given coefficients"
@ -263,13 +243,33 @@ inline Foam::scalar Foam::laminarFlameSpeedModels::SCOPE::Su0pTphi
scalar phi
) const
{
constexpr scalar Tref = 300.0;
constexpr scalar pRef = 1.013e5;
static const scalar Tref = 300.0;
static const scalar pRef = 1.013e5;
scalar phi1=phi-1.0;
const scalar Texp = Texp_.value(phi-1.0);
const scalar pexp = pexp_.value(phi-1.0);
scalar Texp_=
Texp0_+phi1*
(
Texp1_
+Texp2_*phi1+
Texp3_*pow(phi1, 2) +
Texp4_*pow(phi1, 3) +
Texp5_*pow(phi1, 4) +
Texp6_*pow(phi1, 5)
);
return SuRef(phi)*pow((Tu/Tref), Texp)*pow((p/pRef), pexp);
scalar pexp =
pexp0_ + phi1
*(
pexp1_
+ pexp2_*phi1
+ pexp3_*pow(phi1, 2)
+ pexp4_*pow(phi1, 3)
+ pexp5_*pow(phi1, 4)
+ pexp6_*pow(phi1, 5)
);
return SuRef(phi)*pow((Tu/Tref), Texp_)*pow((p/pRef), pexp);
}
@ -280,20 +280,24 @@ Foam::tmp<Foam::volScalarField> Foam::laminarFlameSpeedModels::SCOPE::Su0pTphi
scalar phi
) const
{
auto tSu0 = tmp<volScalarField>::New
tmp<volScalarField> tSu0
(
IOobject
new volScalarField
(
"Su0",
p.time().timeName(),
p.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
p.mesh(),
dimensionedScalar(dimVelocity, Zero)
IOobject
(
"Su0",
p.time().timeName(),
p.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
p.mesh(),
dimensionedScalar(dimVelocity, Zero)
)
);
auto& Su0 = tSu0.ref();
volScalarField& Su0 = tSu0.ref();
forAll(Su0, celli)
{
@ -323,20 +327,24 @@ Foam::tmp<Foam::volScalarField> Foam::laminarFlameSpeedModels::SCOPE::Su0pTphi
const volScalarField& phi
) const
{
auto tSu0 = tmp<volScalarField>::New
tmp<volScalarField> tSu0
(
IOobject
new volScalarField
(
"Su0",
p.time().timeName(),
p.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
p.mesh(),
dimensionedScalar(dimVelocity, Zero)
IOobject
(
"Su0",
p.time().timeName(),
p.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
p.mesh(),
dimensionedScalar(dimVelocity, Zero)
)
);
auto& Su0 = tSu0.ref();
volScalarField& Su0 = tSu0.ref();
forAll(Su0, celli)
{
@ -365,38 +373,37 @@ Foam::tmp<Foam::volScalarField> Foam::laminarFlameSpeedModels::SCOPE::Su0pTphi
return tSu0;
}
Foam::scalar Foam::laminarFlameSpeedModels::SCOPE::CIn() const noexcept
{
return CIn_ ;
}
Foam::tmp<Foam::volScalarField> Foam::laminarFlameSpeedModels::SCOPE::Ma
(
const volScalarField& phi
) const
{
auto tMa = tmp<volScalarField>::New
tmp<volScalarField> tMa
(
IOobject
new volScalarField
(
"Ma",
phi.time().timeName(),
phi.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
phi.mesh(),
dimensionedScalar(dimless, Zero)
IOobject
(
"Ma",
phi.time().timeName(),
phi.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
phi.mesh(),
dimensionedScalar(dimless, Zero)
)
);
auto& ma = tMa.ref();
volScalarField& ma = tMa.ref();
forAll(ma, celli)
{
ma[celli] = Ma(phi[celli]);
}
forAll(ma.boundaryField(), patchi)
{
scalarField& map = ma.boundaryFieldRef()[patchi];
@ -411,6 +418,11 @@ Foam::tmp<Foam::volScalarField> Foam::laminarFlameSpeedModels::SCOPE::Ma
return tMa;
}
Foam::scalar Foam::laminarFlameSpeedModels::SCOPE::CIn() const
{
return CIn_ ;
}
Foam::tmp<Foam::volScalarField>
Foam::laminarFlameSpeedModels::SCOPE::Ma() const
@ -432,18 +444,21 @@ Foam::laminarFlameSpeedModels::SCOPE::Ma() const
{
const fvMesh& mesh = psiuReactionThermo_.p().mesh();
return tmp<volScalarField>::New
return tmp<volScalarField>
(
IOobject
new volScalarField
(
"Ma",
mesh.time().timeName(),
IOobject
(
"Ma",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
dimensionedScalar("Ma", dimless, Ma(equivalenceRatio_))
dimensionedScalar("Ma", dimless, Ma(equivalenceRatio_))
)
);
}
}

View File

@ -6,7 +6,6 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2012 OpenFOAM Foundation
Copyright (C) 2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -66,7 +65,6 @@ SourceFiles
#define SCOPE_H
#include "laminarFlameSpeed.H"
#include "Polynomial.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -107,7 +105,7 @@ class SCOPE
scalar lu;
//- Construct from dictionary
explicit polynomial(const dictionary& polyDict);
polynomial(const dictionary& polyDict);
};
@ -125,11 +123,47 @@ class SCOPE
//- Upper Su polynomial
polynomial SuPolyU_;
//- Temperature correction exponents
Polynomial<7> Texp_;
//- Temperature correction exponent0
scalar Texp0_;
//- Pressure correction exponents
Polynomial<7> pexp_;
//- Temperature correction exponent1
scalar Texp1_;
//- Temperature correction exponent2
scalar Texp2_;
//- Temperature correction exponent3
scalar Texp3_;
//- Temperature correction exponent4
scalar Texp4_;
//- Temperature correction exponent5
scalar Texp5_;
//- Temperature correction exponent6
scalar Texp6_;
//- Pressure correction exponent0
scalar pexp0_;
//- Pressure correction exponent1
scalar pexp1_;
//- pressure correction exponent2
scalar pexp2_;
//- pressure correction exponent3
scalar pexp3_;
//- Pressure correction exponent4
scalar pexp4_;
//- Pressure correction exponent5
scalar pexp5_;
//- pressure correction exponent6
scalar pexp6_;
//- Additional coefficient
scalar CIn_;
@ -183,7 +217,7 @@ class SCOPE
//- No copy construct
SCOPE(const SCOPE&) = delete;
//- No copy assignment
//- No copy assign
void operator=(const SCOPE&) = delete;
@ -208,12 +242,12 @@ public:
// Member functions
//- Return CIn
scalar CIn() const noexcept;
//- Return the Markstein number
tmp<volScalarField> Ma() const;
//- Return CIn
scalar CIn() const;
//- Return the laminar flame speed [m/s]
tmp<volScalarField> operator()() const;
};

View File

@ -28,16 +28,14 @@ Global
readTimeControls
Description
Read the control parameters used by setDeltaT.
Modified for PDRFoam to include maxDeltaTRatio.
Read the control parameters used by setDeltaT
\*---------------------------------------------------------------------------*/
const bool adjustTimeStep =
runTime.controlDict().getOrDefault("adjustTimeStep", false);
runTime.controlDict().getOrDefault<bool>("adjustTimeStep", false);
scalar maxCo =
runTime.controlDict().getOrDefault<scalar>("maxCo", 1);
scalar maxCo = runTime.controlDict().getOrDefault<scalar>("maxCo", 1.0);
scalar maxDeltaT =
runTime.controlDict().getOrDefault<scalar>("maxDeltaT", GREAT);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,53 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object Su;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform 0.5;
boundaryField
{
outer
{
type uniformInletOutlet;
uniformInletValue 0.5;
value uniform 0.5;
}
ground
{
type zeroGradient;
}
blockedFaces
{
type zeroGradient;
}
baffleWall
{
type zeroGradient;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,55 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 300;
boundaryField
{
outer
{
type uniformInletOutlet;
uniformInletValue 300;
value uniform 300;
}
ground
{
type zeroGradient;
}
blockedFaces
{
type zeroGradient;
value uniform 300;
}
baffleWall
{
type zeroGradient;
value uniform 300;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,55 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object Tu;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 300;
boundaryField
{
outer
{
type uniformInletOutlet;
uniformInletValue 300;
value uniform 300;
}
ground
{
type zeroGradient;
}
blockedFaces
{
type zeroGradient;
value uniform 300;
}
baffleWall
{
type zeroGradient;
value uniform 300;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,61 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: 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
{
outer
{
type uniformInletOutlet;
uniformInletValue (0 0 0);
value uniform (0 0 0);
}
ground
{
type noSlip;
}
blockedFaces
{
type noSlip;
}
baffleWall
{
type activePressureForceBaffleVelocity;
value uniform (0 0 0);
cyclicPatch baffleCyclic_half0;
opening 1;
openingTime 0.01;
maxOpenFractionDelta 0.1;
openFraction 0;
minThresholdValue 8000;
forceBased 0;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,55 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object Xi;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 1;
boundaryField
{
outer
{
type uniformInletOutlet;
uniformInletValue 1;
value uniform 1;
}
ground
{
type zeroGradient;
}
blockedFaces
{
type zeroGradient;
value uniform 1;
}
baffleWall
{
type zeroGradient;
value uniform 1;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,58 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alphat;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
outer
{
type calculated;
value uniform 0;
}
ground
{
type compressible::alphatWallFunction;
Prt 0.85;
value uniform 0;
}
blockedFaces
{
type compressible::alphatWallFunction;
Prt 0.85;
value nonuniform 0();
}
baffleWall
{
type compressible::alphatWallFunction;
Prt 0.85;
value nonuniform 0();
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,55 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object b;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 1;
boundaryField
{
outer
{
type uniformInletOutlet;
uniformInletValue 1;
value uniform 1;
}
ground
{
type zeroGradient;
}
blockedFaces
{
type zeroGradient;
value uniform 1;
}
baffleWall
{
type zeroGradient;
value uniform 1;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,65 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: 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
{
outer
{
type uniformInletOutlet;
uniformInletValue 0.1;
value uniform 0.1;
}
ground
{
type epsilonWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0.1;
}
blockedFaces
{
type epsilonWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0.1;
}
baffleWall
{
type epsilonWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 1e-05;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,54 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object ft;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0.0623;
boundaryField
{
outer
{
type uniformInletOutlet;
uniformInletValue 0.0623;
value uniform 0.0623;
}
ground
{
type zeroGradient;
}
blockedFaces
{
type zeroGradient;
}
baffleWall
{
type zeroGradient;
value uniform 0.06024096;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,56 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: 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 1.5;
boundaryField
{
outer
{
type uniformInletOutlet;
uniformInletValue 1.5;
value uniform 1.5;
}
ground
{
type kqRWallFunction;
value uniform 1.5;
}
blockedFaces
{
type kqRWallFunction;
value uniform 1.5;
}
baffleWall
{
type kqRWallFunction;
value uniform 1.5;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,56 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: 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 1.5;
boundaryField
{
outer
{
type uniformInletOutlet;
uniformInletValue 1.5;
value uniform 1.5;
}
ground
{
type kqRWallFunction;
value uniform 1.5;
}
blockedFaces
{
type kqRWallFunction;
value uniform 1.5;
}
baffleWall
{
type kqRWallFunction;
value uniform 1.5;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,64 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: 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
{
outer
{
type calculated;
value uniform 0;
}
ground
{
type nutkWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
blockedFaces
{
type nutkWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value nonuniform 0();
}
baffleWall
{
type nutkWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value nonuniform 0();
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,55 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 100000;
boundaryField
{
outer
{
type waveTransmissive;
gamma 1.3;
fieldInf 100000;
lInf 5;
value uniform 100000;
}
ground
{
type zeroGradient;
}
blockedFaces
{
type zeroGradient;
}
baffleWall
{
type zeroGradient;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,10 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions # Tutorial clean functions
#------------------------------------------------------------------------------
cleanCase0
rm -rf VTK
#------------------------------------------------------------------------------

View File

@ -0,0 +1,15 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions # Tutorial run functions
#------------------------------------------------------------------------------
restore0Dir
runApplication blockMesh
runApplication changeDictionary
runApplication topoSet
runApplication PDRMesh -overwrite
runApplication $(getApplication)
#------------------------------------------------------------------------------

View File

@ -0,0 +1,8 @@
PDR test case
Step to introduce the PDR fields:
1) Create zero-size patches for wall or/and coupled baffles in
the boundary file.
2) Specify the boundary contitions for these patches in the fields.
3) Create the new PDR mesh using the PDRMesh utility.

View File

@ -0,0 +1,103 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object PDRProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
PDRDragModel basic;
basicCoeffs
{
drag on;
Csu 0.5;
Csk 0.05;
}
XiModel transport;
transportCoeffs
{
XiShapeCoef 1;
}
XiEqModel instability;
instabilityCoeffs
{
XiEqIn 2.5;
XiEqModel basicSubGrid;
basicSubGridCoeffs
{
XiEqModel SCOPEBlend;
SCOPEBlendCoeffs
{
XiEqModelL
{
XiEqModel Gulder;
GulderCoeffs
{
XiEqCoef 0.62;
uPrimeCoef 1.0;
subGridSchelkin true;
}
}
XiEqModelH
{
XiEqModel SCOPEXiEq;
SCOPEXiEqCoeffs
{
XiEqCoef 1.6;
XiEqExp 0.33333;
lCoef 0.336;
uPrimeCoef 1.0;
subGridSchelkin true;
}
}
}
}
}
XiGModel instabilityG;
instabilityGCoeffs
{
lambdaIn lambdaIn [0 1 0 0 0 0 0] 0.6;
GIn GIn [0 0 -1 0 0 0 0] 1.917;
XiGModel basicSubGridG;
basicSubGridGCoeffs
{
k1 0.5;
XiGModel KTS;
KTSCoeffs
{
GEtaCoef 0.28;
}
}
}
// ************************************************************************* //

View File

@ -0,0 +1,46 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object combustionProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
laminarFlameSpeedCorrelation SCOPE;
fuel Propane;
fuelFile "fuels/propane.dat";
ignite yes;
ignitionSites
(
{
location (1.5 1.5 0.5);
diameter 0.1;
start 1E-05;
duration 0.05;
strength 60.0;
}
);
ignitionSphereFraction 1;
ignitionThickness ignitionThickness [0 1 0 0 0 0 0] 0;
ignitionCircleFraction 0;
ignitionKernelArea ignitionKernelArea [0 2 0 0 0 0 0] 0;
// ************************************************************************* //

View File

@ -0,0 +1,53 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object dynamicMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dynamicFvMesh dynamicRefineFvMesh;
// Refine every refineInterval timesteps
refineInterval 1;
// Maximum refinement level (starts from 0)
maxRefinement 2;
// Maximum cell limit (approximate)
maxCells 10000;
// volScalarField to base refinement on
field normalisedGradP;
nBufferLayers 1;
dumpLevel true;
lowerRefineLevel 0.5;
upperRefineLevel 1.5;
unrefineLevel 0.5;
nBufferLayers 1;
// Newly introduced patch points optionally get projected onto a surface
//projectSurfaces ("fixedWalls4.stl");
//projectPatches (fixedWalls);
// Maximum project distance
//projectDistance 1;
// Fluxes to adapt. For newly created faces or split faces the flux
// gets estimated from an interpolated volVectorField ('velocity')
// First is name of the flux to adapt, second is velocity that will
// be interpolated and inner-producted with the face area vector.
correctFluxes ((phi rhoU) (phi_0 none));
// ************************************************************************* //

View File

@ -0,0 +1,22 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: 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 0 -9.8);
// ************************************************************************* //

View File

@ -0,0 +1,95 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object thermophysicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType
{
type heheuPsiThermo;
mixture inhomogeneousMixture;
transport sutherland;
thermo janaf;
equationOfState perfectGas;
specie specie;
energy absoluteEnthalpy;
}
stoichiometricAirFuelMassRatio stoichiometricAirFuelMassRatio [0 0 0 0 0 0 0] 15.5776;
fuel
{
specie
{
molWeight 44.0962;
}
thermodynamics
{
Tlow 200;
Thigh 5000;
Tcommon 1000;
highCpCoeffs ( 7.53414 0.0188722 -6.27185e-06 9.14756e-10 -4.78381e-14 -16467.5 -17.8923 );
lowCpCoeffs ( 0.933554 0.0264246 6.10597e-06 -2.19775e-08 9.51493e-12 -13958.5 19.2017 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
oxidant
{
specie
{
molWeight 28.8504;
}
thermodynamics
{
Tlow 200;
Thigh 6000;
Tcommon 1000;
highCpCoeffs ( 3.10131 0.00124137 -4.18816e-07 6.64158e-11 -3.91274e-15 -985.266 5.35597 );
lowCpCoeffs ( 3.58378 -0.000727005 1.67057e-06 -1.09203e-10 -4.31765e-13 -1050.53 3.11239 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
burntProducts
{
specie
{
molWeight 28.3233;
}
thermodynamics
{
Tlow 200;
Thigh 6000;
Tcommon 1000;
highCpCoeffs ( 3.10558 0.00179747 -5.94696e-07 9.05605e-11 -5.08443e-15 -11003.6 5.12104 );
lowCpCoeffs ( 3.49796 0.000638555 -1.83881e-07 1.20989e-09 -7.68691e-13 -11080.5 3.18188 );
}
transport
{
As 1.67212e-06;
Ts 170.672;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,42 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object turbulenceProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType RAS;
RAS
{
RASModel PDRkEpsilon;
PDRkEpsilonCoeffs
{
Cmu 0.09;
C1 1.44;
C2 1.92;
C3 0;
C4 0.1;
alphah 1;
alphak 1;
alphaEps 0.76923;
}
turbulence on;
printCoeffs on;
}
// ************************************************************************* //

View File

@ -0,0 +1,72 @@
SCOPECoeffs
{
lowerFlammabilityLimit 0.522;
upperFlammabilityLimit 2.362;
lowerSuPolynomial
{
lowerLimit 0.6;
upperLimit 1.2;
coefficients
(
0.45
0.713364389
-2.359004778
-2.629755677
-29.11933997
-55.34224225
0.0
);
}
upperSuPolynomial
{
lowerLimit 1.1;
upperLimit 1.64;
coefficients
(
0.419664668
2.280811555
-11.53872754
2.98656153
21.04870808
-16.09645303
0.0
);
}
Texp 2;
pexp -0.5;
lowerMaPolynomial
{
lowerLimit 0.5;
upperLimit 0.75;
coefficients
(
3.739047
-5.12414
-38.1444
-134.813
-224.633
-144.27
0
);
}
upperMaPolynomial
{
lowerLimit 0.75;
upperLimit 1.0;
coefficients
(
3.739047
-5.12414
-38.1444
-134.813
-224.633
-144.27
0
);
}
}

View File

@ -0,0 +1,38 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object PDRMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
//- Per faceSet the patch the faces should go into blocked baffles
blockedFaces ((blockedFacesSet blockedFaces));
//- Per faceSet the patch the faces should go into coupled baffles
coupledFaces
{
coupledFacesSet
{
wallPatch baffleWall;
cyclicMasterPatch baffleCyclic_half0;
}
}
//- Name of cellSet that holds the cells to fully remove
blockedCells blockedCellsSet;
//- All exposed faces that are not specified in blockedFaces go into
// this patch
defaultPatch outer;
// ************************************************************************* //

View File

@ -0,0 +1,269 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
scale 1.0;
vertices
(
(0.0 0.0 0.0)
(1.0 0.0 0.0)
(2.0 0.0 0.0)
(3.0 0.0 0.0)
(0.0 1.0 0.0)
(1.0 1.0 0.0)
(2.0 1.0 0.0)
(3.0 1.0 0.0)
(0.0 2.0 0.0)
(1.0 2.0 0.0)
(2.0 2.0 0.0)
(3.0 2.0 0.0)
(0.0 3.0 0.0)
(1.0 3.0 0.0)
(2.0 3.0 0.0)
(3.0 3.0 0.0)
(0.0 0.0 1.0)
(1.0 0.0 1.0)
(2.0 0.0 1.0)
(3.0 0.0 1.0)
(0.0 1.0 1.0)
(1.0 1.0 1.0)
(2.0 1.0 1.0)
(3.0 1.0 1.0)
(0.0 2.0 1.0)
(1.0 2.0 1.0)
(2.0 2.0 1.0)
(3.0 2.0 1.0)
(0.0 3.0 1.0)
(1.0 3.0 1.0)
(2.0 3.0 1.0)
(3.0 3.0 1.0)
(0.0 0.0 2.0)
(1.0 0.0 2.0)
(2.0 0.0 2.0)
(3.0 0.0 2.0)
(0.0 1.0 2.0)
(1.0 1.0 2.0)
(2.0 1.0 2.0)
(3.0 1.0 2.0)
(0.0 2.0 2.0)
(1.0 2.0 2.0)
(2.0 2.0 2.0)
(3.0 2.0 2.0)
(0.0 3.0 2.0)
(1.0 3.0 2.0)
(2.0 3.0 2.0)
(3.0 3.0 2.0)
(-3.53553390593274 -3.53553390593274 0)
(-0.58113883008419 -4.74341649025257 0)
(3.58113883008419 -4.74341649025257 0)
(6.53553390593274 -3.53553390593274 0)
(-4.74341649025257 -0.58113883008419 0)
(-2.53553390593274 -2.53553390593274 0)
(5.53553390593274 -2.53553390593274 0)
(7.74341649025257 -0.58113883008419 0)
(-4.74341649025257 3.58113883008419 0)
(-2.53553390593274 5.53553390593274 0)
(5.53553390593274 5.53553390593274 0)
(7.74341649025257 3.58113883008419 0)
(-3.53553390593274 6.53553390593274 0)
(-0.58113883008419 7.74341649025257 0)
(3.58113883008419 7.74341649025257 0)
(6.53553390593274 6.53553390593274 0)
(-3.19801074533416 -3.19801074533416 3.1320071635561)
(-0.336306209562122 -4.00891862868637 3.67261241912424)
(3.33630620956212 -4.00891862868637 3.67261241912424)
(6.19801074533416 -3.19801074533416 3.1320071635561)
(-4.00891862868637 -0.336306209562122 3.67261241912424)
(7.00891862868637 -0.336306209562122 3.67261241912424)
(-4.00891862868637 3.33630620956212 3.67261241912424)
(7.00891862868637 3.33630620956212 3.67261241912424)
(-3.19801074533416 6.19801074533416 3.1320071635561)
(-0.336306209562122 7.00891862868637 3.67261241912424)
(3.33630620956212 7.00891862868637 3.67261241912424)
(6.19801074533416 6.19801074533416 3.1320071635561)
(-2.57247877713763 -2.57247877713763 5.42997170285018)
(0.0194193243090797 -2.94174202707276 5.92232270276368)
(2.98058067569092 -2.94174202707276 5.92232270276368)
(5.57247877713763 -2.57247877713763 5.42997170285018)
(-2.94174202707276 0.0194193243090797 5.92232270276368)
(-0.178511301977579 -0.178511301977579 6.71404520791032)
(3.17851130197758 -0.178511301977579 6.71404520791032)
(5.94174202707276 0.0194193243090797 5.92232270276368)
(-2.94174202707276 2.98058067569092 5.92232270276368)
(-0.178511301977579 3.17851130197758 6.71404520791032)
(3.17851130197758 3.17851130197758 6.71404520791032)
(5.94174202707276 2.98058067569092 5.92232270276368)
(-2.57247877713763 5.57247877713763 5.42997170285018)
(0.0194193243090797 5.94174202707276 5.92232270276368)
(2.98058067569092 5.94174202707276 5.92232270276368)
(5.57247877713763 5.57247877713763 5.42997170285018)
);
blocks
(
hex (0 1 5 4 16 17 21 20 ) (5 5 5) simpleGrading (1 1 1)
hex (1 2 6 5 17 18 22 21 ) (5 5 5) simpleGrading (1 1 1)
hex (2 3 7 6 18 19 23 22 ) (5 5 5) simpleGrading (1 1 1)
hex (4 5 9 8 20 21 25 24 ) (5 5 5) simpleGrading (1 1 1)
hex (5 6 10 9 21 22 26 25 ) (5 5 5) simpleGrading (1 1 1)
hex (6 7 11 10 22 23 27 26 )(5 5 5) simpleGrading (1 1 1)
hex (8 9 13 12 24 25 29 28 ) (5 5 5) simpleGrading (1 1 1)
hex (9 10 14 13 25 26 30 29 ) (5 5 5) simpleGrading (1 1 1)
hex (10 11 15 14 26 27 31 30 ) (5 5 5) simpleGrading (1 1 1)
hex (16 17 21 20 32 33 37 36 ) (5 5 5) simpleGrading (1 1 1)
hex (17 18 22 21 33 34 38 37 ) (5 5 5) simpleGrading (1 1 1)
hex (18 19 23 22 34 35 39 38 ) (5 5 5) simpleGrading (1 1 1)
hex (20 21 25 24 36 37 41 40 ) (5 5 5) simpleGrading (1 1 1)
hex (21 22 26 25 37 38 42 41 ) (5 5 5) simpleGrading (1 1 1)
hex (22 23 27 26 38 39 43 42 ) (5 5 5) simpleGrading (1 1 1)
hex (24 25 29 28 40 41 45 44 ) (5 5 5) simpleGrading (1 1 1)
hex (25 26 30 29 41 42 46 45 ) (5 5 5) simpleGrading (1 1 1)
hex (26 27 31 30 42 43 47 46 ) (5 5 5) simpleGrading (1 1 1)
hex (47 46 42 43 91 90 86 87) (5 5 7) simpleGrading (1 1 2.985984)
hex (46 45 41 42 90 89 85 86) (5 5 7) simpleGrading (1 1 2.985984)
hex (45 44 40 41 89 88 84 85) (5 5 7) simpleGrading (1 1 2.985984)
hex (43 42 38 39 87 86 82 83) (5 5 7) simpleGrading (1 1 2.985984)
hex (42 41 37 38 86 85 81 82) (5 5 7) simpleGrading (1 1 2.985984)
hex (41 40 36 37 85 84 80 81) (5 5 7) simpleGrading (1 1 2.985984)
hex (39 38 34 35 83 82 78 79) (5 5 7) simpleGrading (1 1 2.985984)
hex (38 37 33 34 82 81 77 78) (5 5 7) simpleGrading (1 1 2.985984)
hex (37 36 32 33 81 80 76 77) (5 5 7) simpleGrading (1 1 2.985984)
hex (0 16 20 4 48 64 68 52) (5 5 7) simpleGrading (1 1 2.985984)
hex (16 32 36 20 64 76 80 68) (5 5 7) simpleGrading (1 1 2.985984)
hex (4 20 24 8 52 68 70 56) (5 5 7) simpleGrading (1 1 2.985984)
hex (20 36 40 24 68 80 84 70) (5 5 7) simpleGrading (1 1 2.985984)
hex (8 24 28 12 56 70 72 60) (5 5 7) simpleGrading (1 1 2.985984)
hex (24 40 44 28 70 84 88 72) (5 5 7) simpleGrading (1 1 2.985984)
hex (47 43 27 31 91 87 71 75) (5 5 7) simpleGrading (1 1 2.985984)
hex (43 39 23 27 87 83 69 71) (5 5 7) simpleGrading (1 1 2.985984)
hex (39 35 19 23 83 79 67 69) (5 5 7) simpleGrading (1 1 2.985984)
hex (31 27 11 15 75 71 59 63) (5 5 7) simpleGrading (1 1 2.985984)
hex (27 23 7 11 71 69 55 59) (5 5 7) simpleGrading (1 1 2.985984)
hex (23 19 3 7 69 67 51 55) (5 5 7) simpleGrading (1 1 2.985984)
hex (0 1 17 16 48 49 65 64) (5 5 7) simpleGrading (1 1 2.985984)
hex (1 2 18 17 49 50 66 65) (5 5 7) simpleGrading (1 1 2.985984)
hex (2 3 19 18 50 51 67 66) (5 5 7) simpleGrading (1 1 2.985984)
hex (16 17 33 32 64 65 77 76) (5 5 7) simpleGrading (1 1 2.985984)
hex (17 18 34 33 65 66 78 77) (5 5 7) simpleGrading (1 1 2.985984)
hex (18 19 35 34 66 67 79 78) (5 5 7) simpleGrading (1 1 2.985984)
hex (47 31 30 46 91 75 74 90) (5 5 7) simpleGrading (1 1 2.985984)
hex (31 15 14 30 75 63 62 74) (5 5 7) simpleGrading (1 1 2.985984)
hex (46 30 29 45 90 74 73 89) (5 5 7) simpleGrading (1 1 2.985984)
hex (30 14 13 29 74 62 61 73) (5 5 7) simpleGrading (1 1 2.985984)
hex (45 29 28 44 89 73 72 88) (5 5 7) simpleGrading (1 1 2.985984)
hex (29 13 12 28 73 61 60 72) (5 5 7) simpleGrading (1 1 2.985984)
);
boundary
(
outer
{
type patch;
faces
(
(91 90 86 87)
(90 89 85 86)
(89 88 84 85)
(87 86 82 83)
(86 85 81 82)
(85 84 80 81)
(83 82 78 79)
(82 81 77 78)
(81 80 76 77)
(48 64 68 52)
(64 76 80 68)
(52 68 70 56)
(68 80 84 70)
(56 70 72 60)
(70 84 88 72)
(91 87 71 75)
(87 83 69 71)
(83 79 67 69)
(75 71 59 63)
(71 69 55 59)
(69 67 51 55)
(48 49 65 64)
(49 50 66 65)
(50 51 67 66)
(64 65 77 76)
(65 66 78 77)
(66 67 79 78)
(91 75 74 90)
(75 63 62 74)
(90 74 73 89)
(74 62 61 73)
(89 73 72 88)
(73 61 60 72)
);
}
ground
{
type wall;
faces
(
(0 4 5 1)
(1 5 6 2)
(2 6 7 3)
(4 8 9 5)
(5 9 10 6)
(6 10 11 7)
(8 12 13 9)
(9 13 14 10)
(10 14 15 11)
(4 0 48 52)
(8 4 52 56)
(12 8 56 60)
(11 15 63 59)
(7 11 59 55)
(3 7 55 51)
(0 1 49 48)
(1 2 50 49)
(2 3 51 50)
(15 14 62 63)
(14 13 61 62)
(13 12 60 61)
);
}
blockedFaces
{
type wall;
faces ();
}
baffleWall
{
type wall;
faces ();
}
baffleCyclic_half0
{
type cyclic;
neighbourPatch baffleCyclic_half1;
faces ();
}
baffleCyclic_half1
{
type cyclic;
neighbourPatch baffleCyclic_half0;
faces ();
}
);
// ************************************************************************* //

View File

@ -0,0 +1,462 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object changeDictionaryDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
p
{
boundaryField
{
blockedFaces
{
type zeroGradient;
}
baffleWall
{
type zeroGradient;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
U
{
boundaryField
{
blockedFaces
{
type fixedValue;
value uniform (0 0 0);
}
baffleWall
{
type activePressureForceBaffleVelocity;
cyclicPatch baffleCyclic_half0;
orientation 1;
openingTime 0.01;
maxOpenFractionDelta 0.1;
openFraction 0;
minThresholdValue 8000;
forceBased 0;
value uniform (0 0 0);
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
epsilon
{
boundaryField
{
blockedFaces
{
type epsilonWallFunction;
value uniform 0.1;
}
baffleWall
{
type epsilonWallFunction;
value uniform 1e-5;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
k
{
boundaryField
{
blockedFaces
{
type kqRWallFunction;
value uniform 1.5;
}
baffleWall
{
type kqRWallFunction;
value uniform 1.5;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
Su
{
boundaryField
{
blockedFaces
{
type zeroGradient;
}
baffleWall
{
type zeroGradient;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
Xi
{
boundaryField
{
blockedFaces
{
type zeroGradient;
value uniform 1;
}
baffleWall
{
type zeroGradient;
value uniform 1;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
T
{
boundaryField
{
blockedFaces
{
type zeroGradient;
value uniform 300;
}
baffleWall
{
type zeroGradient;
value uniform 300;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
Tu
{
boundaryField
{
blockedFaces
{
type zeroGradient;
value uniform 300;
}
baffleWall
{
type zeroGradient;
value uniform 300;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
b
{
boundaryField
{
blockedFaces
{
type zeroGradient;
value uniform 1;
}
baffleWall
{
type zeroGradient;
value uniform 1;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
ft
{
boundaryField
{
blockedFaces
{
type zeroGradient;
}
baffleWall
{
type zeroGradient;
value uniform 0.06024096;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
Aw
{
boundaryField
{
blockedFaces
{
type zeroGradient;
value uniform 0.0;
}
baffleWall
{
type zeroGradient;
value uniform 0.0;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
B
{
boundaryField
{
blockedFaces
{
type zeroGradient;
value uniform (0 0 0 0 0 0);
}
baffleWall
{
type zeroGradient;
value uniform (0 0 0 0 0 0);
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
betav
{
boundaryField
{
blockedFaces
{
type zeroGradient;
value uniform 0;
}
baffleWall
{
type zeroGradient;
value uniform 0;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
CR
{
boundaryField
{
blockedFaces
{
type zeroGradient;
value uniform (0 0 0 0 0 0);
}
baffleWall
{
type zeroGradient;
value uniform (0 0 0 0 0 0);
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
CT
{
boundaryField
{
blockedFaces
{
type zeroGradient;
value uniform (0 0 0 0 0 0);
}
baffleWall
{
type zeroGradient;
value uniform (0 0 0 0 0 0);
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
Nv
{
boundaryField
{
blockedFaces
{
type zeroGradient;
value uniform 0;
}
baffleWall
{
type zeroGradient;
value uniform 0;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
nsv
{
boundaryField
{
blockedFaces
{
type zeroGradient;
value uniform (0 0 0 0 0 0);
}
baffleWall
{
type zeroGradient;
value uniform (0 0 0 0 0 0);
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
Lobs
{
boundaryField
{
blockedFaces
{
type zeroGradient;
value uniform 0;
}
baffleWall
{
type zeroGradient;
value uniform 0;
}
baffleCyclic_half0
{
type cyclic;
}
baffleCyclic_half1
{
type cyclic;
}
}
}
// ************************************************************************* //

View File

@ -0,0 +1,54 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application PDRFoam;
startFrom latestTime;
startTime 0;
stopAt endTime;
endTime 0.2;
deltaT 5e-06;
writeControl adjustable;
writeInterval 0.01;
purgeWrite 0;
writeFormat ascii;
writePrecision 8;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
adjustTimeStep yes;
maxCo 0.2;
maxDeltaT 1;
// ************************************************************************* //

View File

@ -1,8 +1,8 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v1812 |
| \\ / A nd | Web: www.OpenFOAM.com |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
@ -16,11 +16,11 @@ FoamFile
numberOfSubdomains 4;
method scotch;
method simple;
coeffs
{
n (2 2 2);
n (2 2 1);
}
// ************************************************************************* //

View File

@ -0,0 +1,72 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
grad(p) Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss limitedLinearV 1;
div(phi,K) Gauss limitedLinear 1;
div(phid,p) Gauss limitedLinear 1;
div(phi,k) Gauss limitedLinear 1;
div(phi,epsilon) Gauss limitedLinear 1;
div(phiXi,Xi) Gauss limitedLinear 1;
div(phiSt,b) Gauss limitedLinear01 1;
div(phi,ft_b_ha_hau) Gauss multivariateSelection
{
ft limitedLinear01 1;
b limitedLinear01 1;
Xi limitedLinear 1;
ha limitedLinear 1;
hau limitedLinear 1;
};
div((Su*grad(b))) Gauss linear;
div((U+((Su*Xi)*grad(b)))) Gauss linear;
div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
div(U) Gauss linear;
}
laplacianSchemes
{
default Gauss linear limited corrected 0.33;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default limited corrected 0.33;
}
// ************************************************************************* //

View File

@ -0,0 +1,76 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
rho
{
solver PCG;
preconditioner DIC;
tolerance 1e-05;
relTol 0.01;
};
rhoFinal
{
$rho;
tolerance 1e-06;
relTol 0;
};
p
{
solver PCG;
preconditioner DIC;
tolerance 1e-6;
relTol 0.01;
};
pFinal
{
$p;
tolerance 1e-6;
relTol 0;
};
"(b|Xi|ft|ha|hau|k|epsilon)"
{
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-06;
relTol 0.1;
}
"(b|Xi|ft|ha|hau|k|epsilon)Final"
{
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-06;
relTol 0;
}
}
PIMPLE
{
nCorrectors 2;
nOuterCorrectors 1;
nNonOrthogonalCorrectors 0;
momentumPredictor yes;
}
// ************************************************************************* //

View File

@ -0,0 +1,63 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object topoSetDict.1;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
actions
(
{
name blockedFacesSet;
type faceSet;
action new;
source boxToFace;
box (1 1 0.99) (2 2 1);
}
{
name blockedCellsSet;
type cellSet;
action new;
source boxToCell;
box (2.4 2.4 0) (3 3 1);
}
{
name blockedCellsSet;
type cellSet;
action add;
source boxToCell;
box (0 0 0) (0.6 0.6 1);
}
{
name blockedFacesSet;
type faceSet;
action add;
source cellToFace;
set blockedCellsSet;
option all;
}
{
name coupledFacesSet;
type faceSet;
action new;
source boxToFace;
box (1.0 1.99 0) (2.0 2.09 0.6);
}
);
// ************************************************************************* //

View File

@ -12,8 +12,6 @@ runApplication PDRblockMesh
runApplication PDRsetFields
runApplication PDRMesh
# Get location for ignition
echo "Ignition point from constant/combustionProperties > system/ignitionPoint"

View File

@ -40,7 +40,7 @@ writeCompression off;
timeFormat general;
timePrecision 8;
timePrecision 6;
runTimeModifiable yes;
@ -52,6 +52,8 @@ maxDeltaT 1;
functions
{
#include "probes"
normalisedGradP
{
libs (utilityFunctionObjects);

View File

@ -0,0 +1,87 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
probes
{
type probes;
libs (sampling);
name probes;
writeControl timeStep;
writeInterval 1;
fields
(
p
b
epsilon
ft
k
rho
St
Su
T
U
Xi
);
probeLocations
(
(2. 1.95 0.1)
(2. 1.6 0.1)
(2. 1.2 0.1)
(2. 0.8 0.1)
(2. 0.4 0.1)
(2. 0.0 0.1)
(2.8 2.8 0.1)
(2 3.6 0.1)
(2. 2. 0.9)
(2. 2. 1.7)
(2. -0.2 0.1)
(2. -0.4 0.1)
(2 2 0.1)
(2.8 2 0.1)
(3.6 2 0.1)
(4.6 2 0.1)
(5.6 2 0.1)
(2 2.8 0.1)
(2 3.6 0.1)
(2 8.448 0.1)
(2 5.6 0.1)
(2 2 0.9)
(2.8 2 0.9)
(3.6 2 0.9)
(4.6 2 0.9)
(5.6 2 0.9)
(2 2.8 0.9)
(2 3.6 0.9)
(2 8.448 0.9)
(2 5.6 0.9)
(2 2 1.9)
(2.8 2 1.9)
(3.6 2 1.9)
(4.6 2 1.9)
(5.6 2 1.9)
(2 2.8 1.9)
(2 3.6 1.9)
(2 8.448 1.9)
(2 5.6 1.9)
(2 2 2.9)
(2.8 2.8 0.1)
(2.8 2.8 0.9)
(2.8 2.8 1.9)
(3.6 3.6 0.1)
(3.6 3.6 0.9)
(3.6 3.6 1.9)
);
}
// ************************************************************************* //