mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge branch 'master' into molecularDynamics
This commit is contained in:
@ -23,12 +23,42 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
basicSubGrid
|
||||
Foam::XiEqModels::basicSubGrid
|
||||
|
||||
Description
|
||||
Basic sub-grid obstacle flame-wrinking enhancement factor model.
|
||||
Details supplied by J Puttock 2/7/06.
|
||||
|
||||
<b> Sub-grid flame area generation </b>
|
||||
|
||||
\f$ n = N - \hat{\dwea{\vec{U}}}.n_{s}.\hat{\dwea{\vec{U}}} \f$
|
||||
\f$ n_{r} = \sqrt{n} \f$
|
||||
|
||||
where:
|
||||
|
||||
\f$ \hat{\dwea{\vec{U}}} = \dwea{\vec{U}} / \vert \dwea{\vec{U}}
|
||||
\vert \f$
|
||||
|
||||
\f$ b = \hat{\dwea{\vec{U}}}.B.\hat{\dwea{\vec{U}}} / n_{r} \f$
|
||||
|
||||
where:
|
||||
|
||||
\f$ B \f$ is the file "B".
|
||||
|
||||
\f$ N \f$ is the file "N".
|
||||
|
||||
\f$ n_{s} \f$ is the file "ns".
|
||||
|
||||
The flame area enhancement factor \f$ \Xi_{sub} \f$ is expected to
|
||||
approach:
|
||||
|
||||
\f[
|
||||
\Xi_{{sub}_{eq}} =
|
||||
1 + max(2.2 \sqrt{b}, min(0.34 \frac{\vert \dwea{\vec{U}}
|
||||
\vert}{{\vec{U}}^{'}}, 1.6)) \times min(\frac{n}{4}, 1)
|
||||
\f]
|
||||
|
||||
|
||||
SourceFiles
|
||||
basicSubGrid.C
|
||||
|
||||
|
||||
@ -23,12 +23,30 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
basicSubGrid
|
||||
Foam::XiGModel::basicSubGrid
|
||||
|
||||
|
||||
Description
|
||||
|
||||
Basic sub-grid obstacle flame-wrinking generation rate coefficient model.
|
||||
Details supplied by J Puttock 2/7/06.
|
||||
|
||||
\f$ G_{sub} \f$ denotes the generation coefficient and it is given by
|
||||
|
||||
\f[
|
||||
G_{sub} = k_{1} /frac{\vert \dwea{\vec{U}} \vert}{L_{obs}}
|
||||
\frac{/Xi_{{sub}_{eq}}-1}{/Xi_{sub}}
|
||||
\f]
|
||||
|
||||
and the removal:
|
||||
|
||||
\f[ - k_{1} /frac{\vert \dwea{\vec{U}} \vert}{L_{sub}}
|
||||
\frac{\Xi_{sub}-1}{\Xi_{sub}} \f]
|
||||
|
||||
Finally, \f$ G_{sub} \f$ is added to generation rate \f$ G_{in} \f$
|
||||
due to the turbulence.
|
||||
|
||||
|
||||
SourceFiles
|
||||
basicSubGrid.C
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
PDRDragModel
|
||||
Foam::PDRDragModel
|
||||
|
||||
Description
|
||||
Base-class for sub-grid obstacle drag models.
|
||||
|
||||
@ -23,12 +23,56 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
basic
|
||||
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 PDRkEpsilon.C file.
|
||||
|
||||
|
||||
SourceFiles
|
||||
basic.C
|
||||
|
||||
@ -40,7 +84,6 @@ SourceFiles
|
||||
#include "PDRDragModel.H"
|
||||
#include "XiEqModel.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
@ -23,10 +23,20 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
PDRkEpsilon
|
||||
Foam::compressible::RASModels::PDRkEpsilon
|
||||
|
||||
Description
|
||||
Standard k-epsilon turbulence model.
|
||||
Standard k-epsilon turbulence model with additional source terms
|
||||
corresponding to PDR basic drag model (basic.H)
|
||||
|
||||
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
|
||||
|
||||
@ -23,7 +23,7 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
Gulder
|
||||
Foam::XiEqModels::Gulder
|
||||
|
||||
Description
|
||||
Simple Gulder model for XiEq based on Gulders correlation
|
||||
|
||||
@ -23,10 +23,10 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
SCOPEBlend
|
||||
Foam::XiEqModels::SCOPEBlend
|
||||
|
||||
Description
|
||||
|
||||
|
||||
SourceFiles
|
||||
SCOPEBlend.C
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
SCOPEXiEq
|
||||
Foam::XiEqModel::SCOPEXiEq
|
||||
|
||||
Description
|
||||
Simple SCOPEXiEq model for XiEq based on SCOPEXiEqs correlation
|
||||
|
||||
@ -23,7 +23,7 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
XiEqModel
|
||||
Foam::XiEqModel
|
||||
|
||||
Description
|
||||
Base-class for all XiEq models used by the b-XiEq combustion model.
|
||||
|
||||
@ -23,10 +23,10 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
instability
|
||||
Foam::XiEqModels::instability
|
||||
|
||||
Description
|
||||
|
||||
|
||||
SourceFiles
|
||||
instability.C
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
KTS
|
||||
Foam::XiGModels::KTS
|
||||
|
||||
Description
|
||||
Simple Kolmogorov time-scale model for the flame-wrinling generation rate.
|
||||
|
||||
@ -23,7 +23,7 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
XiGModel
|
||||
Foam::XiGModel
|
||||
|
||||
Description
|
||||
Base-class for all Xi generation models used by the b-Xi combustion model.
|
||||
|
||||
@ -23,7 +23,7 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
instabilityG
|
||||
Foam::XiGModels::instabilityG
|
||||
|
||||
Description
|
||||
Flame-surface instabilityG flame-wrinking generation rate coefficient model.
|
||||
|
||||
@ -23,10 +23,61 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
XiModel
|
||||
Foam::XiModel
|
||||
|
||||
Description
|
||||
Base-class for all Xi models used by the b-Xi combustion model.
|
||||
See Technical Report SH/RE/01R for details on the PDR modelling.
|
||||
|
||||
Xi is given through an algebraic expression (algebraic.H),
|
||||
by solving a transport equation (transport.H) or a fixed value (fixed.H).
|
||||
See report TR/HGW/10 for details on the Weller two equations model.
|
||||
|
||||
In the algebraic and transport methods \f$\Xi_{eq}\f$ is calculated in
|
||||
similar way. In the algebraic approach, \f$\Xi_{eq}\f$ is the value used in
|
||||
the \f$ b \f$ transport equation.
|
||||
|
||||
\f$\Xi_{eq}\f$ is calculated as follows:
|
||||
|
||||
\f$\Xi_{eq} = 1 + (1 + 2\Xi_{coeff}(0.5 - \dwea{b}))(\Xi^* - 1)\f$
|
||||
|
||||
where:
|
||||
|
||||
\f$ \dwea{b} \f$ is the regress variable.
|
||||
|
||||
\f$ \Xi^* \f$ is the total equilibrium wrinkling combining the effects
|
||||
of the flame inestability and turbulence interaction and is given by
|
||||
|
||||
\f[
|
||||
\Xi^* = \frac {R}{R - G_\eta - G_{in}}
|
||||
\f]
|
||||
|
||||
where:
|
||||
|
||||
\f$ G_\eta \f$ is the generation rate of wrinkling due to turbulence
|
||||
interaction.
|
||||
|
||||
\f$ G_{in} = \kappa \rho_{u}/\rho_{b} \f$ is the generation
|
||||
rate due to the flame inestability.
|
||||
|
||||
By adding the removal rates of the two effects:
|
||||
|
||||
\f[
|
||||
R = G_\eta \frac{\Xi_{\eta_{eq}}}{\Xi_{\eta_{eq}} - 1}
|
||||
+ G_{in} \frac{\Xi_{{in}_{eq}}}{\Xi_{{in}_{eq}} - 1}
|
||||
\f]
|
||||
|
||||
where:
|
||||
|
||||
\f$ R \f$ is the total removal.
|
||||
|
||||
\f$ G_\eta \f$ is a model constant.
|
||||
|
||||
\f$ \Xi_{\eta_{eq}} \f$ is the flame wrinkling due to turbulence.
|
||||
|
||||
\f$ \Xi_{{in}_{eq}} \f$ is the equilibrium level of the flame wrinkling
|
||||
generated by inestability. It is a constant (default 2.5).
|
||||
|
||||
|
||||
SourceFiles
|
||||
XiModel.C
|
||||
|
||||
@ -23,7 +23,7 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
algebraic
|
||||
Foam::XiModels::algebraic
|
||||
|
||||
Description
|
||||
Simple algebraic model for Xi based on Gulders correlation
|
||||
|
||||
@ -23,7 +23,7 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
fixed
|
||||
Foam::XiModels::fixed
|
||||
|
||||
Description
|
||||
Fixed value model for Xi.
|
||||
|
||||
@ -23,7 +23,7 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
transport
|
||||
Foam::XiModels::transport
|
||||
|
||||
Description
|
||||
Simple transport model for Xi based on Gulders correlation
|
||||
|
||||
@ -23,11 +23,38 @@ License
|
||||
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Class
|
||||
SCOPE
|
||||
Foam::laminarFlameSpeedModels::SCOPE
|
||||
|
||||
Description
|
||||
Laminar flame speed obtained from the SCOPE correlation.
|
||||
|
||||
Seven parameters are specified in terms of polynomial functions of
|
||||
stoichiometry. Two polynomials are fitted, covering different parts of the
|
||||
flammable range. If the mixture is outside the fitted range, linear
|
||||
interpolation is used between the extreme of the polynomio and the upper or
|
||||
lower flammable limit with the Markstein number constant.
|
||||
|
||||
Variations of pressure and temperature from the reference values are taken
|
||||
into account through \f$ pexp \f$ and \f$ texp \f$
|
||||
|
||||
The laminar burning velocity fitting polynomial is:
|
||||
|
||||
\f$ Su = a_{0}(1+a_{1}x+K+..a_{i}x^{i}..+a_{6}x^{6}) (p/p_{ref})^{pexp}
|
||||
(T/T_{ref})^{texp} \f$
|
||||
|
||||
where:
|
||||
|
||||
\f$ a_{i} \f$ are the polinomial coefficients.
|
||||
|
||||
\f$ pexp \f$ and \f$ texp \f$ are the pressure and temperature factors
|
||||
respectively.
|
||||
|
||||
\f$ x \f$ is the equivalence ratio.
|
||||
|
||||
\f$ T_{ref} \f$ and \f$ p_{ref} \f$ are the temperature and pressure
|
||||
references for the laminar burning velocity.
|
||||
|
||||
|
||||
SourceFiles
|
||||
SCOPELaminarFlameSpeed.C
|
||||
|
||||
@ -125,7 +152,7 @@ class SCOPE
|
||||
// corrected for temperature and pressure dependence
|
||||
inline scalar Su0pTphi(scalar p, scalar Tu, scalar phi) const;
|
||||
|
||||
//- Laminar flame speed evaluated from the given uniform
|
||||
//- Laminar flame speed evaluated from the given uniform
|
||||
// equivalence ratio corrected for temperature and pressure dependence
|
||||
tmp<volScalarField> Su0pTphi
|
||||
(
|
||||
@ -134,7 +161,7 @@ class SCOPE
|
||||
scalar phi
|
||||
) const;
|
||||
|
||||
//- Laminar flame speed evaluated from the given equivalence ratio
|
||||
//- Laminar flame speed evaluated from the given equivalence ratio
|
||||
// distribution corrected for temperature and pressure dependence
|
||||
tmp<volScalarField> Su0pTphi
|
||||
(
|
||||
@ -144,7 +171,7 @@ class SCOPE
|
||||
) const;
|
||||
|
||||
//- Return the Markstein number
|
||||
// evaluated from the given equivalence ratio
|
||||
// evaluated from the given equivalence ratio
|
||||
tmp<volScalarField> Ma(const volScalarField& phi) const;
|
||||
|
||||
//- Construct as copy (not implemented)
|
||||
|
||||
@ -74,24 +74,26 @@ int main(int argc, char *argv[])
|
||||
|
||||
Info<< "Time = " << runTime.timeName() << nl << endl;
|
||||
|
||||
scalar timeBeforeMeshUpdate = runTime.elapsedCpuTime();
|
||||
|
||||
// Do any mesh changes
|
||||
mesh.update();
|
||||
|
||||
if (mesh.changing())
|
||||
{
|
||||
Info<< "Execution time for mesh.update() = "
|
||||
<< runTime.elapsedCpuTime() - timeBeforeMeshUpdate
|
||||
<< " s" << endl;
|
||||
// Store divU from the previous mesh for the correctPhi
|
||||
volScalarField divU = fvc::div(phi);
|
||||
|
||||
gh = g & mesh.C();
|
||||
ghf = g & mesh.Cf();
|
||||
}
|
||||
scalar timeBeforeMeshUpdate = runTime.elapsedCpuTime();
|
||||
|
||||
if (mesh.changing() && correctPhi)
|
||||
{
|
||||
//***HGW#include "correctPhi.H"
|
||||
// Do any mesh changes
|
||||
mesh.update();
|
||||
|
||||
if (mesh.changing())
|
||||
{
|
||||
Info<< "Execution time for mesh.update() = "
|
||||
<< runTime.elapsedCpuTime() - timeBeforeMeshUpdate
|
||||
<< " s" << endl;
|
||||
}
|
||||
|
||||
if (mesh.changing() && correctPhi)
|
||||
{
|
||||
#include "correctPhi.H"
|
||||
}
|
||||
}
|
||||
|
||||
// Make the fluxes relative to the mesh motion
|
||||
@ -102,6 +104,12 @@ int main(int argc, char *argv[])
|
||||
#include "meshCourantNo.H"
|
||||
}
|
||||
|
||||
if (mesh.changing())
|
||||
{
|
||||
gh = g & mesh.C();
|
||||
ghf = g & mesh.Cf();
|
||||
}
|
||||
|
||||
turbulence->correct();
|
||||
|
||||
// --- Outer-corrector loop
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
{
|
||||
#include "continuityErrs.H"
|
||||
|
||||
volScalarField pcorr
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"pcorr",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh,
|
||||
dimensionedScalar("pcorr", pd.dimensions(), 0.0),
|
||||
pcorrTypes
|
||||
);
|
||||
|
||||
dimensionedScalar rAUf("(1|A(U))", dimTime/rho.dimensions(), 1.0);
|
||||
|
||||
adjustPhi(phi, U, pcorr);
|
||||
|
||||
for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
|
||||
{
|
||||
fvScalarMatrix pcorrEqn
|
||||
(
|
||||
fvm::laplacian(rAUf, pcorr) == fvc::div(phi) - divU
|
||||
);
|
||||
|
||||
pcorrEqn.solve();
|
||||
|
||||
if (nonOrth == nNonOrthCorr)
|
||||
{
|
||||
phi -= pcorrEqn.flux();
|
||||
}
|
||||
}
|
||||
|
||||
#include "continuityErrs.H"
|
||||
}
|
||||
@ -150,3 +150,14 @@
|
||||
(
|
||||
incompressible::turbulenceModel::New(U, phi, twoPhaseProperties)
|
||||
);
|
||||
|
||||
|
||||
wordList pcorrTypes(pd.boundaryField().types());
|
||||
|
||||
for (label i=0; i<pd.boundaryField().size(); i++)
|
||||
{
|
||||
if (pd.boundaryField()[i].fixesValue())
|
||||
{
|
||||
pcorrTypes[i] = fixedValueFvPatchScalarField::typeName;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user