Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
HPCAPPs
OpenFOAM-GPU-v2.0
Commits
ea17556c
Commit
ea17556c
authored
Mar 07, 2024
by
shunbo
Browse files
Initial commit
parents
Changes
798
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
2456 additions
and
0 deletions
+2456
-0
applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H
.../PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H
+186
-0
applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModelNew.C
...RFoam/PDRModels/dragModels/PDRDragModel/PDRDragModelNew.C
+66
-0
applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.C
...ers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.C
+183
-0
applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.H
...ers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.H
+168
-0
applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
...on/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
+206
-0
applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
...on/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
+143
-0
applications/solvers/combustion/PDRFoam/StCourantNo.H
applications/solvers/combustion/PDRFoam/StCourantNo.H
+55
-0
applications/solvers/combustion/PDRFoam/UEqn.H
applications/solvers/combustion/PDRFoam/UEqn.H
+23
-0
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.C
...rs/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.C
+106
-0
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.H
...rs/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.H
+124
-0
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.C
...RFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.C
+95
-0
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H
...RFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H
+123
-0
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C
...bustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C
+159
-0
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.H
...bustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.H
+137
-0
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C
...bustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C
+156
-0
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.H
...bustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.H
+174
-0
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModelNew.C
...tion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModelNew.C
+62
-0
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C
...oam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C
+84
-0
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H
...oam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H
+119
-0
applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.C
...s/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.C
+87
-0
No files found.
Too many changes to show.
To preserve performance only
798 of 798+
files are displayed.
Plain diff
Email patch
applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModel.H
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::PDRDragModel
Description
Base-class for sub-grid obstacle drag models. The available drag model is at
\link basic.H \endlink.
SourceFiles
PDRDragModel.C
\*---------------------------------------------------------------------------*/
#ifndef PDRDragModel_H
#define PDRDragModel_H
#include "IOdictionary.H"
#include "psiuReactionThermo.H"
#include "turbulentFluidThermoModel.H"
#include "multivariateSurfaceInterpolationScheme.H"
#include "runTimeSelectionTables.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
/*---------------------------------------------------------------------------*\
Class PDRDragModel Declaration
\*---------------------------------------------------------------------------*/
class
PDRDragModel
:
public
regIOobject
{
protected:
// Protected data
dictionary
PDRDragModelCoeffs_
;
const
compressible
::
RASModel
&
turbulence_
;
const
volScalarField
&
rho_
;
const
volVectorField
&
U_
;
const
surfaceScalarField
&
phi_
;
bool
on_
;
private:
// Private Member Functions
//- No copy construct
PDRDragModel
(
const
PDRDragModel
&
)
=
delete
;
//- No copy assignment
void
operator
=
(
const
PDRDragModel
&
)
=
delete
;
public:
//- Runtime type information
TypeName
(
"PDRDragModel"
);
// Declare run-time constructor selection table
declareRunTimeSelectionTable
(
autoPtr
,
PDRDragModel
,
dictionary
,
(
const
dictionary
&
PDRProperties
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
rho
,
const
volVectorField
&
U
,
const
surfaceScalarField
&
phi
),
(
PDRProperties
,
turbulence
,
rho
,
U
,
phi
)
);
// Selectors
//- Return a reference to the selected Xi model
static
autoPtr
<
PDRDragModel
>
New
(
const
dictionary
&
PDRProperties
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
rho
,
const
volVectorField
&
U
,
const
surfaceScalarField
&
phi
);
// Constructors
//- Construct from components
PDRDragModel
(
const
dictionary
&
PDRProperties
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
rho
,
const
volVectorField
&
U
,
const
surfaceScalarField
&
phi
);
//- Destructor
virtual
~
PDRDragModel
();
// Member Functions
//- Return true if the drag model is switched on
bool
on
()
const
{
return
on_
;
}
//- Return the momentum drag coefficient
virtual
tmp
<
volSymmTensorField
>
Dcu
()
const
=
0
;
//- Return the momentum drag turbulence generation rate
virtual
tmp
<
volScalarField
>
Gk
()
const
=
0
;
//- Inherit read from regIOobject
using
regIOobject
::
read
;
//- Update properties from given dictionary
virtual
bool
read
(
const
dictionary
&
PDRProperties
)
=
0
;
virtual
bool
writeData
(
Ostream
&
)
const
{
return
true
;
}
virtual
void
writeFields
()
const
{
NotImplemented
;
}
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/PDRModels/dragModels/PDRDragModel/PDRDragModelNew.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2019-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "PDRDragModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Foam
::
autoPtr
<
Foam
::
PDRDragModel
>
Foam
::
PDRDragModel
::
New
(
const
dictionary
&
dict
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
rho
,
const
volVectorField
&
U
,
const
surfaceScalarField
&
phi
)
{
const
word
modelType
(
dict
.
get
<
word
>
(
"PDRDragModel"
));
Info
<<
"Selecting drag model "
<<
modelType
<<
endl
;
auto
*
ctorPtr
=
dictionaryConstructorTable
(
modelType
);
if
(
!
ctorPtr
)
{
FatalIOErrorInLookup
(
dict
,
"PDRDragModel"
,
modelType
,
*
dictionaryConstructorTablePtr_
)
<<
exit
(
FatalIOError
);
}
return
autoPtr
<
PDRDragModel
>
(
ctorPtr
(
dict
,
turbulence
,
rho
,
U
,
phi
)
);
}
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "basic.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace
Foam
{
namespace
PDRDragModels
{
defineTypeNameAndDebug
(
basic
,
0
);
addToRunTimeSelectionTable
(
PDRDragModel
,
basic
,
dictionary
);
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam
::
PDRDragModels
::
basic
::
basic
(
const
dictionary
&
PDRProperties
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
rho
,
const
volVectorField
&
U
,
const
surfaceScalarField
&
phi
)
:
PDRDragModel
(
PDRProperties
,
turbulence
,
rho
,
U
,
phi
),
Csu
(
"Csu"
,
dimless
,
PDRDragModelCoeffs_
),
Csk
(
"Csk"
,
dimless
,
PDRDragModelCoeffs_
),
Aw_
(
IOobject
(
"Aw"
,
U_
.
mesh
().
facesInstance
(),
U_
.
mesh
(),
IOobject
::
MUST_READ
,
IOobject
::
NO_WRITE
),
U_
.
mesh
()
),
CR_
(
IOobject
(
"CR"
,
U_
.
mesh
().
facesInstance
(),
U_
.
mesh
(),
IOobject
::
MUST_READ
,
IOobject
::
NO_WRITE
),
U_
.
mesh
()
)
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam
::
PDRDragModels
::
basic
::~
basic
()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam
::
tmp
<
Foam
::
volSymmTensorField
>
Foam
::
PDRDragModels
::
basic
::
Dcu
()
const
{
tmp
<
volSymmTensorField
>
tDragDcu
(
new
volSymmTensorField
(
IOobject
(
"tDragDcu"
,
U_
.
mesh
().
time
().
constant
(),
U_
.
mesh
(),
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
),
U_
.
mesh
(),
dimensionedSymmTensor
(
dimMass
/
dimTime
/
dimVolume
,
Zero
)
)
);
volSymmTensorField
&
DragDcu
=
tDragDcu
.
ref
();
if
(
on_
)
{
const
volScalarField
&
betav
=
U_
.
db
().
lookupObject
<
volScalarField
>
(
"betav"
);
DragDcu
=
(
0
.
5
*
rho_
)
*
CR_
*
mag
(
U_
)
+
(
Csu
*
I
)
*
betav
*
turbulence_
.
muEff
()
*
sqr
(
Aw_
);
}
return
tDragDcu
;
}
Foam
::
tmp
<
Foam
::
volScalarField
>
Foam
::
PDRDragModels
::
basic
::
Gk
()
const
{
tmp
<
volScalarField
>
tGk
(
new
volScalarField
(
IOobject
(
"tGk"
,
U_
.
mesh
().
time
().
constant
(),
U_
.
mesh
(),
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
),
U_
.
mesh
(),
dimensionedScalar
(
dimMass
/
dimLength
/
pow3
(
dimTime
),
Zero
)
)
);
volScalarField
&
Gk
=
tGk
.
ref
();
if
(
on_
)
{
const
volScalarField
&
betav
=
U_
.
db
().
lookupObject
<
volScalarField
>
(
"betav"
);
const
volSymmTensorField
&
CT
=
U_
.
db
().
lookupObject
<
volSymmTensorField
>
(
"CT"
);
Gk
=
(
0
.
5
*
rho_
)
*
mag
(
U_
)
*
(
U_
&
CT
&
U_
)
+
Csk
*
betav
*
turbulence_
.
muEff
()
*
sqr
(
Aw_
)
*
magSqr
(
U_
);
}
return
tGk
;
}
bool
Foam
::
PDRDragModels
::
basic
::
read
(
const
dictionary
&
PDRProperties
)
{
PDRDragModel
::
read
(
PDRProperties
);
PDRDragModelCoeffs_
.
readEntry
(
"Csu"
,
Csu
.
value
());
PDRDragModelCoeffs_
.
readEntry
(
"Csk"
,
Csk
.
value
());
return
true
;
}
void
Foam
::
PDRDragModels
::
basic
::
writeFields
()
const
{
Aw_
.
write
();
CR_
.
write
();
}
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/PDRModels/dragModels/basic/basic.H
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::PDRDragModels::basic
Description
Basic sub-grid obstacle drag model.
Details supplied by J Puttock 2/7/06.
<b> Sub-grid drag term </b>
The resistance term (force per unit of volume) is given by:
\f[
R = -\frac{1}{2} \rho \vert \dwea{\vec{U}} \vert \dwea{\vec{U}}.D
\f]
where:
\f$ D \f$ is the tensor field "CR" in \f$ m^{-1} \f$
This is term is treated implicitly in UEqn.H
<b> Sub-grid turbulence generation </b>
The turbulence source term \f$ G_{R} \f$ occurring in the
\f$ \kappa-\epsilon \f$ equations for the generation of turbulence due
to interaction with unresolved obstacles :
\f$ G_{R} = C_{s}\beta_{\nu}
\mu_{eff} A_{w}^{2}(\dwea{\vec{U}}-\dwea{\vec{U}_{s}})^2 + \frac{1}{2}
\rho \vert \dwea{\vec{U}} \vert \dwea{\vec{U}}.T.\dwea{\vec{U}} \f$
where:
\f$ C_{s} \f$ = 1
\f$ \beta_{\nu} \f$ is the volume porosity (file "betav").
\f$ \mu_{eff} \f$ is the effective viscosity.
\f$ A_{w}^{2}\f$ is the obstacle surface area per unit of volume
(file "Aw").
\f$ \dwea{\vec{U}_{s}} \f$ is the slip velocity and is considered
\f$ \frac{1}{2}. \dwea{\vec{U}} \f$.
\f$ T \f$ is a tensor in the file CT.
The term \f$ G_{R} \f$ is treated explicitly in the \f$ \kappa-\epsilon
\f$ Eqs in the \link PDRkEpsilon.C \endlink file.
SourceFiles
basic.C
\*---------------------------------------------------------------------------*/
#ifndef basic_H
#define basic_H
#include "PDRDragModel.H"
#include "XiEqModel.H"
namespace
Foam
{
namespace
PDRDragModels
{
/*---------------------------------------------------------------------------*\
Class basic Declaration
\*---------------------------------------------------------------------------*/
class
basic
:
public
PDRDragModel
{
// Private data
dimensionedScalar
Csu
;
dimensionedScalar
Csk
;
volScalarField
Aw_
;
volSymmTensorField
CR_
;
// Private Member Functions
//- No copy construct
basic
(
const
basic
&
)
=
delete
;
//- No copy assignment
void
operator
=
(
const
basic
&
)
=
delete
;
public:
//- Runtime type information
TypeName
(
"basic"
);
// Constructors
//- Construct from components
basic
(
const
dictionary
&
PDRProperties
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
rho
,
const
volVectorField
&
U
,
const
surfaceScalarField
&
phi
);
//- Destructor
virtual
~
basic
();
// Member Functions
//- Return the momentum drag coefficient
virtual
tmp
<
volSymmTensorField
>
Dcu
()
const
;
//- Return the momentum drag turbulence generation rate
virtual
tmp
<
volScalarField
>
Gk
()
const
;
//- Update properties from given dictionary
virtual
bool
read
(
const
dictionary
&
PDRProperties
);
//- Write fields
void
writeFields
()
const
;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace PDRDragModels
}
// End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2019-2020 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "PDRkEpsilon.H"
#include "PDRDragModel.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
namespace
compressible
{
namespace
RASModels
{
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
defineTypeNameAndDebug
(
PDRkEpsilon
,
0
);
addToRunTimeSelectionTable
(
RASModel
,
PDRkEpsilon
,
dictionary
);
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
PDRkEpsilon
::
PDRkEpsilon
(
const
geometricOneField
&
alpha
,
const
volScalarField
&
rho
,
const
volVectorField
&
U
,
const
surfaceScalarField
&
alphaRhoPhi
,
const
surfaceScalarField
&
phi
,
const
fluidThermo
&
thermophysicalModel
,
const
word
&
turbulenceModelName
,
const
word
&
modelName
)
:
Foam
::
RASModels
::
kEpsilon
<
EddyDiffusivity
<
compressible
::
turbulenceModel
>>
(
geometricOneField
(),
rho
,
U
,
phi
,
phi
,
thermophysicalModel
,
turbulenceModelName
,
modelName
),
C4_
(
dimensioned
<
scalar
>::
getOrAddToDict
(
"C4"
,
coeffDict_
,
0
.
1
)
)
{}
// * * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * //
PDRkEpsilon
::~
PDRkEpsilon
()
{}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool
PDRkEpsilon
::
read
()
{
if
(
RASModel
::
read
())
{
C4_
.
readIfPresent
(
coeffDict_
);
return
true
;
}
return
false
;
}
void
PDRkEpsilon
::
correct
()
{
if
(
!
turbulence_
)
{
// Re-calculate viscosity
nut_
=
Cmu_
*
sqr
(
k_
)
/
epsilon_
;
nut_
.
correctBoundaryConditions
();
// Re-calculate thermal diffusivity
//***HGWalphat_ = mut_/Prt_;
//alphat_.correctBoundaryConditions();
return
;
}
RASModel
::
correct
();
volScalarField
divU
(
fvc
::
div
(
phi_
/
fvc
::
interpolate
(
rho_
)));
if
(
mesh_
.
moving
())
{
divU
+=
fvc
::
div
(
mesh_
.
phi
());
}
tmp
<
volTensorField
>
tgradU
=
fvc
::
grad
(
U_
);
volScalarField
G
(
GName
(),
rho_
*
nut_
*
(
tgradU
()
&&
dev
(
twoSymm
(
tgradU
()))));
tgradU
.
clear
();
// Update epsilon and G at the wall
epsilon_
.
boundaryFieldRef
().
updateCoeffs
();
// Add the blockage generation term so that it is included consistently
// in both the k and epsilon equations
const
volScalarField
&
betav
=
U_
.
db
().
lookupObject
<
volScalarField
>
(
"betav"
);
const
volScalarField
&
Lobs
=
U_
.
db
().
lookupObject
<
volScalarField
>
(
"Lobs"
);
const
PDRDragModel
&
drag
=
U_
.
db
().
lookupObject
<
PDRDragModel
>
(
"PDRDragModel"
);
volScalarField
GR
(
drag
.
Gk
());
volScalarField
LI
(
C4_
*
(
Lobs
+
dimensionedScalar
(
"minLength"
,
dimLength
,
VSMALL
)));
// Dissipation equation
tmp
<
fvScalarMatrix
>
epsEqn
(
betav
*
fvm
::
ddt
(
rho_
,
epsilon_
)
+
fvm
::
div
(
phi_
,
epsilon_
)
-
fvm
::
laplacian
(
rho_
*
DepsilonEff
(),
epsilon_
)
==
C1_
*
betav
*
G
*
epsilon_
/
k_
+
1
.
5
*
pow
(
Cmu_
,
3
.
0
/
4
.
0
)
*
GR
*
sqrt
(
k_
)
/
LI
-
fvm
::
SuSp
(((
2
.
0
/
3
.
0
)
*
C1_
)
*
betav
*
rho_
*
divU
,
epsilon_
)
-
fvm
::
Sp
(
C2_
*
betav
*
rho_
*
epsilon_
/
k_
,
epsilon_
)
);
epsEqn
.
ref
().
relax
();
epsEqn
.
ref
().
boundaryManipulate
(
epsilon_
.
boundaryFieldRef
());
solve
(
epsEqn
);
bound
(
epsilon_
,
epsilonMin_
);
// Turbulent kinetic energy equation
tmp
<
fvScalarMatrix
>
kEqn
(
betav
*
fvm
::
ddt
(
rho_
,
k_
)
+
fvm
::
div
(
phi_
,
k_
)
-
fvm
::
laplacian
(
rho_
*
DkEff
(),
k_
)
==
betav
*
G
+
GR
-
fvm
::
SuSp
((
2
.
0
/
3
.
0
)
*
betav
*
rho_
*
divU
,
k_
)
-
fvm
::
Sp
(
betav
*
rho_
*
epsilon_
/
k_
,
k_
)
);
kEqn
.
ref
().
relax
();
solve
(
kEqn
);
bound
(
k_
,
kMin_
);
// Re-calculate viscosity
nut_
=
Cmu_
*
sqr
(
k_
)
/
epsilon_
;
nut_
.
correctBoundaryConditions
();
// Re-calculate thermal diffusivity
//***HGWalphat_ = mut_/Prt_;
//alphat_.correctBoundaryConditions();
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace RASModels
}
// End namespace compressible
}
// End namespace Foam
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/PDRModels/turbulence/PDRkEpsilon/PDRkEpsilon.H
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::compressible::RASModels::PDRkEpsilon
Description
Standard k-epsilon turbulence model with additional source terms
corresponding to PDR basic drag model (\link basic.H \endlink)
The default model coefficients correspond to the following:
\verbatim
PDRkEpsilonCoeffs
{
Cmu 0.09;
C1 1.44;
C2 1.92;
C3 -0.33; // only for compressible
C4 0.1;
sigmak 1.0; // only for compressible
sigmaEps 1.3;
Prt 1.0; // only for compressible
}
\endverbatim
The turbulence source term \f$ G_{R} \f$ appears in the
\f$ \kappa-\epsilon \f$ equation for the generation of turbulence due to
interaction with unresolved obstacles.
In the \f$ \epsilon \f$ equation \f$ C_{1} G_{R} \f$ is added as a source
term.
In the \f$ \kappa \f$ equation \f$ G_{R} \f$ is added as a source term.
SourceFiles
PDRkEpsilon.C
\*---------------------------------------------------------------------------*/
#ifndef compressiblePDRkEpsilon_H
#define compressiblePDRkEpsilon_H
#include "kEpsilon.H"
#include "turbulentFluidThermoModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
namespace
compressible
{
namespace
RASModels
{
/*---------------------------------------------------------------------------*\
Class PDRkEpsilon Declaration
\*---------------------------------------------------------------------------*/
class
PDRkEpsilon
:
public
Foam
::
RASModels
::
kEpsilon
<
EddyDiffusivity
<
compressible
::
turbulenceModel
>
>
{
// Private data
// Model coefficients
dimensionedScalar
C4_
;
public:
//- Runtime type information
TypeName
(
"PDRkEpsilon"
);
// Constructors
//- Construct from components
PDRkEpsilon
(
const
geometricOneField
&
alpha
,
const
volScalarField
&
rho
,
const
volVectorField
&
U
,
const
surfaceScalarField
&
alphaRhoPhi
,
const
surfaceScalarField
&
phi
,
const
fluidThermo
&
thermophysicalModel
,
const
word
&
turbulenceModelName
=
turbulenceModel
::
typeName
,
const
word
&
modelName
=
typeName
);
//- Destructor
virtual
~
PDRkEpsilon
();
// Member Functions
//- Solve the turbulence equations and correct the turbulence viscosity
void
correct
();
//- Read turbulenceProperties dictionary
bool
read
();
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace RASModels
}
// End namespace compressible
}
// End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/StCourantNo.H
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Global
CourantNo
Description
Calculates and outputs the mean and maximum Courant Numbers.
\*---------------------------------------------------------------------------*/
{
scalar
meanStCoNum
=
0
.
0
;
if
(
mesh
.
nInternalFaces
())
{
scalarField
sumPhi
(
fvc
::
surfaceSum
(
mag
(
phiSt
))().
primitiveField
()
/
rho
.
primitiveField
()
);
StCoNum
=
0
.
5
*
gMax
(
sumPhi
/
mesh
.
V
().
field
())
*
runTime
.
deltaTValue
();
meanStCoNum
=
0
.
5
*
(
gSum
(
sumPhi
)
/
gSum
(
mesh
.
V
().
field
()))
*
runTime
.
deltaTValue
();
}
Info
<<
"St courant Number mean: "
<<
meanStCoNum
<<
" max: "
<<
StCoNum
<<
endl
;
}
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/UEqn.H
0 → 100644
View file @
ea17556c
MRF
.
correctBoundaryVelocity
(
U
);
fvVectorMatrix
UEqn
(
betav
*
fvm
::
ddt
(
rho
,
U
)
+
fvm
::
div
(
phi
,
U
)
+
MRF
.
DDt
(
rho
,
U
)
+
turbulence
->
divDevRhoReff
(
U
)
==
betav
*
rho
*
g
+
betav
*
fvOptions
(
rho
,
U
)
);
fvOptions
.
constrain
(
UEqn
);
volSymmTensorField
invA
(
inv
(
I
*
UEqn
.
A
()
+
drag
->
Dcu
()));
if
(
pimple
.
momentumPredictor
())
{
U
=
invA
&
(
UEqn
.
H
()
-
betav
*
fvc
::
grad
(
p
));
U
.
correctBoundaryConditions
();
fvOptions
.
correct
(
U
);
K
=
0
.
5
*
magSqr
(
U
);
}
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "Gulder.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace
Foam
{
namespace
XiEqModels
{
defineTypeNameAndDebug
(
Gulder
,
0
);
addToRunTimeSelectionTable
(
XiEqModel
,
Gulder
,
dictionary
);
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam
::
XiEqModels
::
Gulder
::
Gulder
(
const
dictionary
&
XiEqProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
)
:
XiEqModel
(
XiEqProperties
,
thermo
,
turbulence
,
Su
),
XiEqCoef_
(
XiEqModelCoeffs_
.
get
<
scalar
>
(
"XiEqCoef"
)),
SuMin_
(
0
.
01
*
Su
.
average
()),
uPrimeCoef_
(
XiEqModelCoeffs_
.
get
<
scalar
>
(
"uPrimeCoef"
)),
subGridSchelkin_
(
XiEqModelCoeffs_
.
get
<
bool
>
(
"subGridSchelkin"
))
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam
::
XiEqModels
::
Gulder
::~
Gulder
()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam
::
tmp
<
Foam
::
volScalarField
>
Foam
::
XiEqModels
::
Gulder
::
XiEq
()
const
{
volScalarField
up
(
sqrt
((
2
.
0
/
3
.
0
)
*
turbulence_
.
k
()));
const
volScalarField
&
epsilon
=
turbulence_
.
epsilon
();
if
(
subGridSchelkin_
)
{
up
.
primitiveFieldRef
()
+=
calculateSchelkinEffect
(
uPrimeCoef_
);
}
volScalarField
tauEta
(
sqrt
(
mag
(
thermo_
.
muu
()
/
(
thermo_
.
rhou
()
*
epsilon
))));
volScalarField
Reta
(
up
/
(
sqrt
(
epsilon
*
tauEta
)
+
dimensionedScalar
(
"1e-8"
,
up
.
dimensions
(),
1e-8
)
)
);
return
(
1
.
0
+
XiEqCoef_
*
sqrt
(
up
/
(
Su_
+
SuMin_
))
*
Reta
);
}
bool
Foam
::
XiEqModels
::
Gulder
::
read
(
const
dictionary
&
XiEqProperties
)
{
XiEqModel
::
read
(
XiEqProperties
);
XiEqModelCoeffs_
.
readEntry
(
"XiEqCoef"
,
XiEqCoef_
);
XiEqModelCoeffs_
.
readEntry
(
"uPrimeCoef"
,
uPrimeCoef_
);
XiEqModelCoeffs_
.
readEntry
(
"subGridSchelkin"
,
subGridSchelkin_
);
return
true
;
}
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/Gulder/Gulder.H
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2012 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::XiEqModels::Gulder
Description
Simple Gulder model for XiEq based on Gulders correlation
with a linear correction function to give a plausible profile for XiEq.
SourceFiles
Gulder.C
\*---------------------------------------------------------------------------*/
#ifndef Gulder_H
#define Gulder_H
#include "XiEqModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
namespace
XiEqModels
{
/*---------------------------------------------------------------------------*\
Class Gulder Declaration
\*---------------------------------------------------------------------------*/
class
Gulder
:
public
XiEqModel
{
// Private data
//- Model constant
scalar
XiEqCoef_
;
//- Minimum laminar burning velocity
const
dimensionedScalar
SuMin_
;
//- Schelkin effect Model constant
scalar
uPrimeCoef_
;
//- Use sub-grid Schelkin effect
bool
subGridSchelkin_
;
// Private Member Functions
//- No copy construct
Gulder
(
const
Gulder
&
)
=
delete
;
//- No copy assignment
void
operator
=
(
const
Gulder
&
)
=
delete
;
public:
//- Runtime type information
TypeName
(
"Gulder"
);
// Constructors
//- Construct from components
Gulder
(
const
dictionary
&
XiEqProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
);
//- Destructor
virtual
~
Gulder
();
// Member Functions
//- Return the flame-wrinkling XiEq
virtual
tmp
<
volScalarField
>
XiEq
()
const
;
//- Update properties from given dictionary
virtual
bool
read
(
const
dictionary
&
XiEqProperties
);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace XiEqModels
}
// End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "SCOPEBlendXiEq.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace
Foam
{
namespace
XiEqModels
{
defineTypeNameAndDebug
(
SCOPEBlend
,
0
);
addToRunTimeSelectionTable
(
XiEqModel
,
SCOPEBlend
,
dictionary
);
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam
::
XiEqModels
::
SCOPEBlend
::
SCOPEBlend
(
const
dictionary
&
XiEqProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
)
:
XiEqModel
(
XiEqProperties
,
thermo
,
turbulence
,
Su
),
XiEqModelL_
(
XiEqModel
::
New
(
XiEqModelCoeffs_
.
subDict
(
"XiEqModelL"
),
thermo
,
turbulence
,
Su
)
),
XiEqModelH_
(
XiEqModel
::
New
(
XiEqModelCoeffs_
.
subDict
(
"XiEqModelH"
),
thermo
,
turbulence
,
Su
)
)
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam
::
XiEqModels
::
SCOPEBlend
::~
SCOPEBlend
()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam
::
tmp
<
Foam
::
volScalarField
>
Foam
::
XiEqModels
::
SCOPEBlend
::
XiEq
()
const
{
return
pow
(
pow4
(
1
.
0
/
XiEqModelL_
->
XiEq
())
+
pow4
(
1
.
0
/
XiEqModelH_
->
XiEq
()),
-
0
.
25
);
}
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEBlendXiEq/SCOPEBlendXiEq.H
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2012 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::XiEqModels::SCOPEBlend
Description
Simple SCOPEBlendXiEq model for XiEq based on SCOPEXiEqs correlation
with a linear correction function to give a plausible profile for XiEq.
See \link SCOPELaminarFlameSpeed.H \endlink for details on the SCOPE
laminar flame speed model.
SourceFiles
SCOPEBlend.C
\*---------------------------------------------------------------------------*/
#ifndef SCOPEBlend_H
#define SCOPEBlend_H
#include "XiEqModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
namespace
XiEqModels
{
/*---------------------------------------------------------------------------*\
Class SCOPEBlend Declaration
\*---------------------------------------------------------------------------*/
class
SCOPEBlend
:
public
XiEqModel
{
// Private data
//- Low turbulence intensity equilibrium Xi model
autoPtr
<
XiEqModel
>
XiEqModelL_
;
//- High turbulence intensity equilibrium Xi model
autoPtr
<
XiEqModel
>
XiEqModelH_
;
// Private Member Functions
//- No copy construct
SCOPEBlend
(
const
SCOPEBlend
&
)
=
delete
;
//- No copy assignment
void
operator
=
(
const
SCOPEBlend
&
)
=
delete
;
public:
//- Runtime type information
TypeName
(
"SCOPEBlend"
);
// Constructors
//- Construct from components
SCOPEBlend
(
const
dictionary
&
XiEqProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
);
//- Destructor
virtual
~
SCOPEBlend
();
// Member Functions
//- Return the flame-wrinkling XiEq
virtual
tmp
<
volScalarField
>
XiEq
()
const
;
//- Update properties from given dictionary
virtual
bool
read
(
const
dictionary
&
XiEqProperties
)
{
return
true
;
}
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace XiEqModels
}
// End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "SCOPEXiEq.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace
Foam
{
namespace
XiEqModels
{
defineTypeNameAndDebug
(
SCOPEXiEq
,
0
);
addToRunTimeSelectionTable
(
XiEqModel
,
SCOPEXiEq
,
dictionary
);
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam
::
XiEqModels
::
SCOPEXiEq
::
SCOPEXiEq
(
const
dictionary
&
XiEqProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
)
:
XiEqModel
(
XiEqProperties
,
thermo
,
turbulence
,
Su
),
XiEqCoef_
(
XiEqModelCoeffs_
.
get
<
scalar
>
(
"XiEqCoef"
)),
XiEqExp_
(
XiEqModelCoeffs_
.
get
<
scalar
>
(
"XiEqExp"
)),
lCoef_
(
XiEqModelCoeffs_
.
get
<
scalar
>
(
"lCoef"
)),
SuMin_
(
0
.
01
*
Su
.
average
()),
uPrimeCoef_
(
XiEqModelCoeffs_
.
get
<
scalar
>
(
"uPrimeCoef"
)),
subGridSchelkin_
(
XiEqModelCoeffs_
.
get
<
bool
>
(
"subGridSchelkin"
)),
MaModel
(
Su
.
mesh
().
lookupObject
<
IOdictionary
>
(
"combustionProperties"
),
thermo
)
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam
::
XiEqModels
::
SCOPEXiEq
::~
SCOPEXiEq
()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam
::
tmp
<
Foam
::
volScalarField
>
Foam
::
XiEqModels
::
SCOPEXiEq
::
XiEq
()
const
{
const
volScalarField
&
k
=
turbulence_
.
k
();
const
volScalarField
&
epsilon
=
turbulence_
.
epsilon
();
volScalarField
up
(
sqrt
((
2
.
0
/
3
.
0
)
*
k
));
if
(
subGridSchelkin_
)
{
up
.
primitiveFieldRef
()
+=
calculateSchelkinEffect
(
uPrimeCoef_
);
}
volScalarField
l
(
lCoef_
*
sqrt
(
3
.
0
/
2
.
0
)
*
up
*
k
/
epsilon
);
volScalarField
Rl
(
up
*
l
*
thermo_
.
rhou
()
/
thermo_
.
muu
());
volScalarField
upBySu
(
up
/
(
Su_
+
SuMin_
));
volScalarField
K
(
0
.
157
*
upBySu
/
sqrt
(
Rl
));
volScalarField
Ma
(
MaModel
.
Ma
());
tmp
<
volScalarField
>
tXiEq
(
new
volScalarField
(
IOobject
(
"XiEq"
,
epsilon
.
time
().
timeName
(),
epsilon
.
db
(),
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
),
epsilon
.
mesh
(),
dimensionedScalar
(
dimless
,
Zero
)
)
);
volScalarField
&
xieq
=
tXiEq
.
ref
();
forAll
(
xieq
,
celli
)
{
if
(
Ma
[
celli
]
>
0
.
01
)
{
xieq
[
celli
]
=
XiEqCoef_
*
pow
(
K
[
celli
]
*
Ma
[
celli
],
-
XiEqExp_
)
*
upBySu
[
celli
];
}
}
volScalarField
::
Boundary
&
xieqBf
=
xieq
.
boundaryFieldRef
();
forAll
(
xieq
.
boundaryField
(),
patchi
)
{
scalarField
&
xieqp
=
xieqBf
[
patchi
];
const
scalarField
&
Kp
=
K
.
boundaryField
()[
patchi
];
const
scalarField
&
Map
=
Ma
.
boundaryField
()[
patchi
];
const
scalarField
&
upBySup
=
upBySu
.
boundaryField
()[
patchi
];
forAll
(
xieqp
,
facei
)
{
if
(
Ma
[
facei
]
>
0
.
01
)
{
xieqp
[
facei
]
=
XiEqCoef_
*
pow
(
Kp
[
facei
]
*
Map
[
facei
],
-
XiEqExp_
)
*
upBySup
[
facei
];
}
}
}
return
tXiEq
;
}
bool
Foam
::
XiEqModels
::
SCOPEXiEq
::
read
(
const
dictionary
&
XiEqProperties
)
{
XiEqModel
::
read
(
XiEqProperties
);
XiEqModelCoeffs_
.
readEntry
(
"XiEqCoef"
,
XiEqCoef_
);
XiEqModelCoeffs_
.
readEntry
(
"XiEqExp"
,
XiEqExp_
);
XiEqModelCoeffs_
.
readEntry
(
"lCoef"
,
lCoef_
);
XiEqModelCoeffs_
.
readEntry
(
"uPrimeCoef"
,
uPrimeCoef_
);
XiEqModelCoeffs_
.
readEntry
(
"subGridSchelkin"
,
subGridSchelkin_
);
return
true
;
}
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/SCOPEXiEq/SCOPEXiEq.H
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2013 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::XiEqModels::SCOPEXiEq
Description
Simple SCOPEXiEq model for XiEq based on SCOPEXiEqs correlation
with a linear correction function to give a plausible profile for XiEq.
See \link SCOPELaminarFlameSpeed.H \endlink for details on the SCOPE laminar
flame speed model.
SourceFiles
SCOPEXiEq.C
\*---------------------------------------------------------------------------*/
#ifndef SCOPEXiEq_H
#define SCOPEXiEq_H
#include "XiEqModel.H"
#include "SCOPELaminarFlameSpeed.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
namespace
XiEqModels
{
/*---------------------------------------------------------------------------*\
Class SCOPEXiEq Declaration
\*---------------------------------------------------------------------------*/
class
SCOPEXiEq
:
public
XiEqModel
{
// Private data
// Model constant
scalar
XiEqCoef_
;
// Model constant
scalar
XiEqExp_
;
// Model constant
scalar
lCoef_
;
//- Minimum Su
dimensionedScalar
SuMin_
;
//- Schelkin effect Model constant
scalar
uPrimeCoef_
;
//- Use sub-grid Schelkin effect
bool
subGridSchelkin_
;
//- The SCOPE laminar flame speed model used to obtain the
// Marstein number. Note: the laminar flame speed need not be
// obtained form the same model.
laminarFlameSpeedModels
::
SCOPE
MaModel
;
// Private Member Functions
//- No copy construct
SCOPEXiEq
(
const
SCOPEXiEq
&
)
=
delete
;
//- No copy assignment
void
operator
=
(
const
SCOPEXiEq
&
)
=
delete
;
public:
//- Runtime type information
TypeName
(
"SCOPEXiEq"
);
// Constructors
//- Construct from components
SCOPEXiEq
(
const
dictionary
&
XiEqProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
);
//- Destructor
virtual
~
SCOPEXiEq
();
// Member Functions
//- Return the flame-wrinkling XiEq
virtual
tmp
<
volScalarField
>
XiEq
()
const
;
//- Update properties from given dictionary
virtual
bool
read
(
const
dictionary
&
XiEqProperties
);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace XiEqModels
}
// End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "XiEqModel.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace
Foam
{
defineTypeNameAndDebug
(
XiEqModel
,
0
);
defineRunTimeSelectionTable
(
XiEqModel
,
dictionary
);
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam
::
XiEqModel
::
XiEqModel
(
const
dictionary
&
XiEqProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
)
:
XiEqModelCoeffs_
(
XiEqProperties
.
subDict
(
XiEqProperties
.
get
<
word
>
(
"XiEqModel"
)
+
"Coeffs"
)
),
thermo_
(
thermo
),
turbulence_
(
turbulence
),
Su_
(
Su
)
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam
::
XiEqModel
::~
XiEqModel
()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
bool
Foam
::
XiEqModel
::
read
(
const
dictionary
&
XiEqProperties
)
{
XiEqModelCoeffs_
=
XiEqProperties
.
optionalSubDict
(
type
()
+
"Coeffs"
);
return
true
;
}
void
Foam
::
XiEqModel
::
writeFields
()
const
{
//***HGW It is not clear why B is written here
if
(
Su_
.
mesh
().
foundObject
<
volSymmTensorField
>
(
"B"
))
{
const
volSymmTensorField
&
B
=
Su_
.
mesh
().
lookupObject
<
volSymmTensorField
>
(
"B"
);
B
.
write
();
}
}
Foam
::
tmp
<
Foam
::
volScalarField
>
Foam
::
XiEqModel
::
calculateSchelkinEffect
(
const
scalar
uPrimeCoef
)
const
{
const
fvMesh
&
mesh
=
Su_
.
mesh
();
const
volVectorField
&
U
=
mesh
.
lookupObject
<
volVectorField
>
(
"U"
);
const
volSymmTensorField
&
CT
=
mesh
.
lookupObject
<
volSymmTensorField
>
(
"CT"
);
const
volScalarField
&
Nv
=
mesh
.
lookupObject
<
volScalarField
>
(
"Nv"
);
const
volSymmTensorField
&
nsv
=
mesh
.
lookupObject
<
volSymmTensorField
>
(
"nsv"
);
tmp
<
volScalarField
>
tN
(
new
volScalarField
(
IOobject
(
"tN"
,
mesh
.
time
().
timeName
(),
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
,
false
),
mesh
,
dimensionedScalar
(
Nv
.
dimensions
(),
Zero
)
)
);
volScalarField
&
N
=
tN
.
ref
();
N
.
primitiveFieldRef
()
=
Nv
.
primitiveField
()
*
pow
(
mesh
.
V
(),
2
.
0
/
3
.
0
);
volSymmTensorField
ns
(
IOobject
(
"tns"
,
mesh
.
time
().
timeName
(),
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
),
mesh
,
dimensionedSymmTensor
(
nsv
.
dimensions
(),
Zero
)
);
ns
.
primitiveFieldRef
()
=
nsv
.
primitiveField
()
*
pow
(
mesh
.
V
(),
2
.
0
/
3
.
0
);
const
volVectorField
Uhat
(
U
/
(
mag
(
U
)
+
dimensionedScalar
(
"Usmall"
,
U
.
dimensions
(),
1e-4
))
);
const
volScalarField
nr
(
sqrt
(
max
(
N
-
(
Uhat
&
ns
&
Uhat
),
scalar
(
1e-4
))));
const
scalarField
cellWidth
(
pow
(
mesh
.
V
(),
1
.
0
/
3
.
0
));
const
scalarField
upLocal
(
uPrimeCoef
*
sqrt
((
U
&
CT
&
U
)
*
cellWidth
));
const
scalarField
deltaUp
(
upLocal
*
(
max
(
scalar
(
1
),
pow
(
nr
,
0
.
5
))
-
1
.
0
));
// Re use tN
N
.
primitiveFieldRef
()
=
upLocal
*
(
max
(
scalar
(
1
),
pow
(
nr
,
0
.
5
))
-
1
.
0
);
return
tN
;
}
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModel.H
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::XiEqModel
Description
Base-class for all XiEq models used by the b-XiEq combustion model.
The available models are :
\link basicXiSubXiEq.H \endlink
\link Gulder.H \endlink
\link instabilityXiEq.H \endlink
\link SCOPEBlendXiEq.H \endlink
\link SCOPEXiEq.H \endlink
SourceFiles
XiEqModel.C
\*---------------------------------------------------------------------------*/
#ifndef XiEqModel_H
#define XiEqModel_H
#include "IOdictionary.H"
#include "psiuReactionThermo.H"
#include "turbulentFluidThermoModel.H"
#include "runTimeSelectionTables.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
/*---------------------------------------------------------------------------*\
Class XiEqModel Declaration
\*---------------------------------------------------------------------------*/
class
XiEqModel
{
protected:
// Protected data
//- Dictionary
dictionary
XiEqModelCoeffs_
;
//- Thermo
const
psiuReactionThermo
&
thermo_
;
//- Turbulence
const
compressible
::
RASModel
&
turbulence_
;
//- Laminar burning velocity
const
volScalarField
&
Su_
;
private:
// Private Member Functions
//- No copy construct
XiEqModel
(
const
XiEqModel
&
)
=
delete
;
//- No copy assignment
void
operator
=
(
const
XiEqModel
&
)
=
delete
;
public:
//- Runtime type information
TypeName
(
"XiEqModel"
);
// Declare run-time constructor selection table
declareRunTimeSelectionTable
(
autoPtr
,
XiEqModel
,
dictionary
,
(
const
dictionary
&
XiEqProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
),
(
XiEqProperties
,
thermo
,
turbulence
,
Su
)
);
// Selectors
//- Return a reference to the selected XiEq model
static
autoPtr
<
XiEqModel
>
New
(
const
dictionary
&
XiEqProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
);
// Constructors
//- Construct from components
XiEqModel
(
const
dictionary
&
XiEqProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
);
//- Destructor
virtual
~
XiEqModel
();
// Member Functions
//- Return the flame-wrinkling XiEq
virtual
tmp
<
volScalarField
>
XiEq
()
const
{
return
turbulence_
.
muEff
();
}
//- Return the sub-grid Schelkin effect
tmp
<
volScalarField
>
calculateSchelkinEffect
(
const
scalar
)
const
;
//- Update properties from given dictionary
virtual
bool
read
(
const
dictionary
&
XiEqProperties
)
=
0
;
//- Write fields
void
writeFields
()
const
;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/XiEqModel/XiEqModelNew.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
Copyright (C) 2019-2021 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "XiEqModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Foam
::
autoPtr
<
Foam
::
XiEqModel
>
Foam
::
XiEqModel
::
New
(
const
dictionary
&
dict
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
)
{
const
word
modelType
(
dict
.
get
<
word
>
(
"XiEqModel"
));
Info
<<
"Selecting flame-wrinkling model "
<<
modelType
<<
endl
;
auto
*
ctorPtr
=
dictionaryConstructorTable
(
modelType
);
if
(
!
ctorPtr
)
{
FatalIOErrorInLookup
(
dict
,
"XiEqModel"
,
modelType
,
*
dictionaryConstructorTablePtr_
)
<<
exit
(
FatalIOError
);
}
return
autoPtr
<
XiEqModel
>
(
ctorPtr
(
dict
,
thermo
,
turbulence
,
Su
));
}
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "instabilityXiEq.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace
Foam
{
namespace
XiEqModels
{
defineTypeNameAndDebug
(
instability
,
0
);
addToRunTimeSelectionTable
(
XiEqModel
,
instability
,
dictionary
);
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam
::
XiEqModels
::
instability
::
instability
(
const
dictionary
&
XiEqProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
)
:
XiEqModel
(
XiEqProperties
,
thermo
,
turbulence
,
Su
),
XiEqIn
(
XiEqModelCoeffs_
.
get
<
scalar
>
(
"XiEqIn"
)),
XiEqModel_
(
XiEqModel
::
New
(
XiEqModelCoeffs_
,
thermo
,
turbulence
,
Su
))
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam
::
XiEqModels
::
instability
::~
instability
()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam
::
tmp
<
Foam
::
volScalarField
>
Foam
::
XiEqModels
::
instability
::
XiEq
()
const
{
volScalarField
turbXiEq
(
XiEqModel_
->
XiEq
());
return
XiEqIn
/
turbXiEq
+
turbXiEq
;
}
bool
Foam
::
XiEqModels
::
instability
::
read
(
const
dictionary
&
XiEqProperties
)
{
XiEqModel
::
read
(
XiEqProperties
);
XiEqModelCoeffs_
.
readEntry
(
"XiEqIn"
,
XiEqIn
);
return
XiEqModel_
->
read
(
XiEqModelCoeffs_
);
}
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/XiModels/XiEqModels/instabilityXiEq/instabilityXiEq.H
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2012 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class
Foam::XiEqModels::instability
Description
This is the equilibrium level of the flame wrinkling generated by
instability. It is a constant (default 2.5). It is used in
\link XiModel.H \endlink.
SourceFiles
instability.C
\*---------------------------------------------------------------------------*/
#ifndef instability_H
#define instability_H
#include "XiEqModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace
Foam
{
namespace
XiEqModels
{
/*---------------------------------------------------------------------------*\
Class instability Declaration
\*---------------------------------------------------------------------------*/
class
instability
:
public
XiEqModel
{
// Private data
//- Equilibrium Xi due to instability only
scalar
XiEqIn
;
//- Equilibrium Xi model due to all other effects
autoPtr
<
XiEqModel
>
XiEqModel_
;
// Private Member Functions
//- No copy construct
instability
(
const
instability
&
)
=
delete
;
//- No copy assignment
void
operator
=
(
const
instability
&
)
=
delete
;
public:
//- Runtime type information
TypeName
(
"instability"
);
// Constructors
//- Construct from components
instability
(
const
dictionary
&
XiEqProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
);
//- Destructor
virtual
~
instability
();
// Member Functions
//- Return the flame-wrinkling XiEq
virtual
tmp
<
volScalarField
>
XiEq
()
const
;
//- Update properties from given dictionary
virtual
bool
read
(
const
dictionary
&
XiEqProperties
);
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
}
// End namespace XiEqModels
}
// End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //
applications/solvers/combustion/PDRFoam/XiModels/XiGModels/KTS/KTS.C
0 → 100644
View file @
ea17556c
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2015 OpenFOAM Foundation
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/
#include "KTS.H"
#include "addToRunTimeSelectionTable.H"
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
namespace
Foam
{
namespace
XiGModels
{
defineTypeNameAndDebug
(
KTS
,
0
);
addToRunTimeSelectionTable
(
XiGModel
,
KTS
,
dictionary
);
}
}
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam
::
XiGModels
::
KTS
::
KTS
(
const
dictionary
&
XiGProperties
,
const
psiuReactionThermo
&
thermo
,
const
compressible
::
RASModel
&
turbulence
,
const
volScalarField
&
Su
)
:
XiGModel
(
XiGProperties
,
thermo
,
turbulence
,
Su
),
GEtaCoef_
(
XiGModelCoeffs_
.
get
<
scalar
>
(
"GEtaCoef"
))
{}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
Foam
::
XiGModels
::
KTS
::~
KTS
()
{}
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam
::
tmp
<
Foam
::
volScalarField
>
Foam
::
XiGModels
::
KTS
::
G
()
const
{
volScalarField
up
(
sqrt
((
2
.
0
/
3
.
0
)
*
turbulence_
.
k
()));
const
volScalarField
&
epsilon
=
turbulence_
.
epsilon
();
volScalarField
tauEta
(
sqrt
(
mag
(
thermo_
.
muu
()
/
(
thermo_
.
rhou
()
*
epsilon
))));
return
(
GEtaCoef_
/
tauEta
);
}
bool
Foam
::
XiGModels
::
KTS
::
read
(
const
dictionary
&
XiGProperties
)
{
XiGModel
::
read
(
XiGProperties
);
XiGModelCoeffs_
.
readEntry
(
"GEtaCoef"
,
GEtaCoef_
);
return
true
;
}
// ************************************************************************* //
Prev
1
2
3
4
5
6
7
8
…
40
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment