Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-2.3.x
This commit is contained in:
commit
0c7d5db5f0
8 changed files with 67 additions and 31 deletions
|
|
@ -138,11 +138,7 @@ Foam::tmp<Foam::volScalarField> Foam::dragModels::segregated::K() const
|
||||||
(
|
(
|
||||||
pair_.rho()
|
pair_.rho()
|
||||||
*pair_.magUr()
|
*pair_.magUr()
|
||||||
/(
|
/(magGradI*muI)
|
||||||
magGradI
|
|
||||||
*max(alpha1*alpha2, sqr(residualAlpha_))
|
|
||||||
*muI
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
|
||||||
volScalarField lambda(m_*ReI + n_*muAlphaI/muI);
|
volScalarField lambda(m_*ReI + n_*muAlphaI/muI);
|
||||||
|
|
|
||||||
|
|
@ -132,6 +132,34 @@ Foam::RASModels::kineticTheoryModel::kineticTheoryModel
|
||||||
),
|
),
|
||||||
U.mesh(),
|
U.mesh(),
|
||||||
dimensionedScalar("zero", dimensionSet(0, 2, -1, 0, 0), 0.0)
|
dimensionedScalar("zero", dimensionSet(0, 2, -1, 0, 0), 0.0)
|
||||||
|
),
|
||||||
|
|
||||||
|
gs0_
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
IOobject::groupName("gs0", phase.name()),
|
||||||
|
U.time().timeName(),
|
||||||
|
U.mesh(),
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
),
|
||||||
|
U.mesh(),
|
||||||
|
dimensionedScalar("zero", dimensionSet(0, 0, 0, 0, 0), 0.0)
|
||||||
|
),
|
||||||
|
|
||||||
|
kappa_
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
IOobject::groupName("kappa", phase.name()),
|
||||||
|
U.time().timeName(),
|
||||||
|
U.mesh(),
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::NO_WRITE
|
||||||
|
),
|
||||||
|
U.mesh(),
|
||||||
|
dimensionedScalar("zero", dimensionSet(0, 2, -1, 0, 0), 0.0)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (type == typeName)
|
if (type == typeName)
|
||||||
|
|
@ -371,17 +399,17 @@ void Foam::RASModels::kineticTheoryModel::correct()
|
||||||
volSymmTensorField D(symm(gradU));
|
volSymmTensorField D(symm(gradU));
|
||||||
|
|
||||||
// Calculating the radial distribution function
|
// Calculating the radial distribution function
|
||||||
volScalarField gs0(radialModel_->g0(alpha, alphaMinFriction_, alphaMax_));
|
gs0_ = radialModel_->g0(alpha, alphaMinFriction_, alphaMax_);
|
||||||
|
|
||||||
if (!equilibrium_)
|
if (!equilibrium_)
|
||||||
{
|
{
|
||||||
// particle viscosity (Table 3.2, p.47)
|
// particle viscosity (Table 3.2, p.47)
|
||||||
nut_ = viscosityModel_->nu(alpha, Theta_, gs0, rho, da, e_);
|
nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_);
|
||||||
|
|
||||||
volScalarField ThetaSqrt(sqrt(Theta_));
|
volScalarField ThetaSqrt(sqrt(Theta_));
|
||||||
|
|
||||||
// Bulk viscosity p. 45 (Lun et al. 1984).
|
// Bulk viscosity p. 45 (Lun et al. 1984).
|
||||||
lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0*(1.0 + e_)*ThetaSqrt/sqrtPi;
|
lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1.0 + e_)*ThetaSqrt/sqrtPi;
|
||||||
|
|
||||||
// Stress tensor, Definitions, Table 3.1, p. 43
|
// Stress tensor, Definitions, Table 3.1, p. 43
|
||||||
volSymmTensorField tau(2.0*nut_*D + (lambda_ - (2.0/3.0)*nut_)*tr(D)*I);
|
volSymmTensorField tau(2.0*nut_*D + (lambda_ - (2.0/3.0)*nut_)*tr(D)*I);
|
||||||
|
|
@ -391,7 +419,7 @@ void Foam::RASModels::kineticTheoryModel::correct()
|
||||||
(
|
(
|
||||||
12.0*(1.0 - sqr(e_))
|
12.0*(1.0 - sqr(e_))
|
||||||
*max(sqr(alpha), residualAlpha_)
|
*max(sqr(alpha), residualAlpha_)
|
||||||
*gs0*(1.0/da)*ThetaSqrt/sqrtPi
|
*gs0_*(1.0/da)*ThetaSqrt/sqrtPi
|
||||||
);
|
);
|
||||||
|
|
||||||
// NB, drag = K*alpha*alpha2,
|
// NB, drag = K*alpha*alpha2,
|
||||||
|
|
@ -426,17 +454,14 @@ void Foam::RASModels::kineticTheoryModel::correct()
|
||||||
granularPressureModel_->granularPressureCoeff
|
granularPressureModel_->granularPressureCoeff
|
||||||
(
|
(
|
||||||
alpha,
|
alpha,
|
||||||
gs0,
|
gs0_,
|
||||||
rho,
|
rho,
|
||||||
e_
|
e_
|
||||||
)/rho
|
)/rho
|
||||||
);
|
);
|
||||||
|
|
||||||
// 'thermal' conductivity (Table 3.3, p. 49)
|
// 'thermal' conductivity (Table 3.3, p. 49)
|
||||||
volScalarField kappa
|
kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_);
|
||||||
(
|
|
||||||
conductivityModel_->kappa(alpha, Theta_, gs0, rho, da, e_)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Construct the granular temperature equation (Eq. 3.20, p. 44)
|
// Construct the granular temperature equation (Eq. 3.20, p. 44)
|
||||||
// NB. note that there are two typos in Eq. 3.20:
|
// NB. note that there are two typos in Eq. 3.20:
|
||||||
|
|
@ -450,7 +475,7 @@ void Foam::RASModels::kineticTheoryModel::correct()
|
||||||
+ fvm::div(alphaPhi, Theta_)
|
+ fvm::div(alphaPhi, Theta_)
|
||||||
- fvc::Sp(fvc::ddt(alpha) + fvc::div(alphaPhi), Theta_)
|
- fvc::Sp(fvc::ddt(alpha) + fvc::div(alphaPhi), Theta_)
|
||||||
)
|
)
|
||||||
- fvm::laplacian(kappa, Theta_, "laplacian(kappa, Theta)")
|
- fvm::laplacian(kappa_, Theta_, "laplacian(kappa, Theta)")
|
||||||
==
|
==
|
||||||
fvm::SuSp(-((PsCoeff*I) && gradU), Theta_)
|
fvm::SuSp(-((PsCoeff*I) && gradU), Theta_)
|
||||||
+ (tau && gradU)
|
+ (tau && gradU)
|
||||||
|
|
@ -466,23 +491,23 @@ void Foam::RASModels::kineticTheoryModel::correct()
|
||||||
{
|
{
|
||||||
// Equilibrium => dissipation == production
|
// Equilibrium => dissipation == production
|
||||||
// Eq. 4.14, p.82
|
// Eq. 4.14, p.82
|
||||||
volScalarField K1(2.0*(1.0 + e_)*rho*gs0);
|
volScalarField K1(2.0*(1.0 + e_)*rho*gs0_);
|
||||||
volScalarField K3
|
volScalarField K3
|
||||||
(
|
(
|
||||||
0.5*da*rho*
|
0.5*da*rho*
|
||||||
(
|
(
|
||||||
(sqrtPi/(3.0*(3.0-e_)))
|
(sqrtPi/(3.0*(3.0-e_)))
|
||||||
*(1.0 + 0.4*(1.0 + e_)*(3.0*e_ - 1.0)*alpha*gs0)
|
*(1.0 + 0.4*(1.0 + e_)*(3.0*e_ - 1.0)*alpha*gs0_)
|
||||||
+1.6*alpha*gs0*(1.0 + e_)/sqrtPi
|
+1.6*alpha*gs0_*(1.0 + e_)/sqrtPi
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
volScalarField K2
|
volScalarField K2
|
||||||
(
|
(
|
||||||
4.0*da*rho*(1.0 + e_)*alpha*gs0/(3.0*sqrtPi) - 2.0*K3/3.0
|
4.0*da*rho*(1.0 + e_)*alpha*gs0_/(3.0*sqrtPi) - 2.0*K3/3.0
|
||||||
);
|
);
|
||||||
|
|
||||||
volScalarField K4(12.0*(1.0 - sqr(e_))*rho*gs0/(da*sqrtPi));
|
volScalarField K4(12.0*(1.0 - sqr(e_))*rho*gs0_/(da*sqrtPi));
|
||||||
|
|
||||||
volScalarField trD
|
volScalarField trD
|
||||||
(
|
(
|
||||||
|
|
@ -508,6 +533,8 @@ void Foam::RASModels::kineticTheoryModel::correct()
|
||||||
(l1 + sqrt(l2 + l3))
|
(l1 + sqrt(l2 + l3))
|
||||||
/(2.0*max(alpha, residualAlpha_)*K4)
|
/(2.0*max(alpha, residualAlpha_)*K4)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
kappa_ = conductivityModel_->kappa(alpha, Theta_, gs0_, rho, da, e_);
|
||||||
}
|
}
|
||||||
|
|
||||||
Theta_.max(0);
|
Theta_.max(0);
|
||||||
|
|
@ -515,12 +542,12 @@ void Foam::RASModels::kineticTheoryModel::correct()
|
||||||
|
|
||||||
{
|
{
|
||||||
// particle viscosity (Table 3.2, p.47)
|
// particle viscosity (Table 3.2, p.47)
|
||||||
nut_ = viscosityModel_->nu(alpha, Theta_, gs0, rho, da, e_);
|
nut_ = viscosityModel_->nu(alpha, Theta_, gs0_, rho, da, e_);
|
||||||
|
|
||||||
volScalarField ThetaSqrt(sqrt(Theta_));
|
volScalarField ThetaSqrt(sqrt(Theta_));
|
||||||
|
|
||||||
// Bulk viscosity p. 45 (Lun et al. 1984).
|
// Bulk viscosity p. 45 (Lun et al. 1984).
|
||||||
lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0*(1.0 + e_)*ThetaSqrt/sqrtPi;
|
lambda_ = (4.0/3.0)*sqr(alpha)*da*gs0_*(1.0 + e_)*ThetaSqrt/sqrtPi;
|
||||||
|
|
||||||
// Frictional pressure
|
// Frictional pressure
|
||||||
volScalarField pf
|
volScalarField pf
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,12 @@ class kineticTheoryModel
|
||||||
//- The granular bulk viscosity
|
//- The granular bulk viscosity
|
||||||
volScalarField lambda_;
|
volScalarField lambda_;
|
||||||
|
|
||||||
|
//- The granular radial distribution
|
||||||
|
volScalarField gs0_;
|
||||||
|
|
||||||
|
//- The granular "thermal" conductivity
|
||||||
|
volScalarField kappa_;
|
||||||
|
|
||||||
|
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -182,7 +182,7 @@ tmp<volScalarField> NicenoKEqn<BasicTurbulenceModel>::bubbleG() const
|
||||||
|
|
||||||
tmp<volScalarField> bubbleG
|
tmp<volScalarField> bubbleG
|
||||||
(
|
(
|
||||||
Cp_*gas*sqr(magUr)*fluid.drag(gas).K()/liquid.rho()
|
Cp_*sqr(magUr)*fluid.drag(gas).K()/liquid.rho()
|
||||||
);
|
);
|
||||||
|
|
||||||
return bubbleG;
|
return bubbleG;
|
||||||
|
|
|
||||||
|
|
@ -194,9 +194,10 @@ tmp<volScalarField> LaheyKEpsilon<BasicTurbulenceModel>::bubbleG() const
|
||||||
tmp<volScalarField> bubbleG
|
tmp<volScalarField> bubbleG
|
||||||
(
|
(
|
||||||
Cp_
|
Cp_
|
||||||
|
*liquid*liquid.rho()
|
||||||
*(
|
*(
|
||||||
pow3(magUr)
|
pow3(magUr)
|
||||||
+ pow(fluid.drag(gas).K()*gas.d()/liquid.rho(), 4.0/3.0)
|
+ pow(fluid.drag(gas).CdRe()*liquid.nu()/gas.d(), 4.0/3.0)
|
||||||
*pow(magUr, 5.0/3.0)
|
*pow(magUr, 5.0/3.0)
|
||||||
)
|
)
|
||||||
*gas
|
*gas
|
||||||
|
|
|
||||||
|
|
@ -380,7 +380,7 @@ tmp<volScalarField> mixtureKEpsilon<BasicTurbulenceModel>::Ct2() const
|
||||||
volScalarField beta
|
volScalarField beta
|
||||||
(
|
(
|
||||||
(6*this->Cmu_/(4*sqrt(3.0/2.0)))
|
(6*this->Cmu_/(4*sqrt(3.0/2.0)))
|
||||||
*alphag*fluid.drag(gas).K()/liquid.rho()
|
*fluid.drag(gas).K()/liquid.rho()
|
||||||
*(liquidTurbulence.k_/liquidTurbulence.epsilon_)
|
*(liquidTurbulence.k_/liquidTurbulence.epsilon_)
|
||||||
);
|
);
|
||||||
volScalarField Ct0((3 + beta)/(1 + beta + 2*gas.rho()/liquid.rho()));
|
volScalarField Ct0((3 + beta)/(1 + beta + 2*gas.rho()/liquid.rho()));
|
||||||
|
|
@ -488,10 +488,10 @@ tmp<volScalarField> mixtureKEpsilon<BasicTurbulenceModel>::bubbleG() const
|
||||||
tmp<volScalarField> bubbleG
|
tmp<volScalarField> bubbleG
|
||||||
(
|
(
|
||||||
Cp_
|
Cp_
|
||||||
*sqr(liquid)*liquid.rho()
|
*liquid*liquid.rho()
|
||||||
*(
|
*(
|
||||||
pow3(magUr)
|
pow3(magUr)
|
||||||
+ pow(fluid.drag(gas).K()*gas.d()/liquid.rho(), 4.0/3.0)
|
+ pow(fluid.drag(gas).CdRe()*liquid.nu()/gas.d(), 4.0/3.0)
|
||||||
*pow(magUr, 5.0/3.0)
|
*pow(magUr, 5.0/3.0)
|
||||||
)
|
)
|
||||||
*gas
|
*gas
|
||||||
|
|
@ -501,7 +501,7 @@ tmp<volScalarField> mixtureKEpsilon<BasicTurbulenceModel>::bubbleG() const
|
||||||
// Simple model
|
// Simple model
|
||||||
// tmp<volScalarField> bubbleG
|
// tmp<volScalarField> bubbleG
|
||||||
// (
|
// (
|
||||||
// Cp_*sqr(liquid)*gas*fluid.drag(gas).K()*sqr(magUr)
|
// Cp_*liquid*fluid.drag(gas).K()*sqr(magUr)
|
||||||
// );
|
// );
|
||||||
|
|
||||||
return bubbleG;
|
return bubbleG;
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
|
|
@ -57,7 +57,7 @@ Foam::displacementSBRStressFvMotionSolver::displacementSBRStressFvMotionSolver
|
||||||
const IOdictionary& dict
|
const IOdictionary& dict
|
||||||
)
|
)
|
||||||
:
|
:
|
||||||
displacementMotionSolver(mesh, dict, typeName),
|
displacementMotionSolver(mesh, dict, dict.lookup("solver")),
|
||||||
fvMotionSolverCore(mesh),
|
fvMotionSolverCore(mesh),
|
||||||
cellDisplacement_
|
cellDisplacement_
|
||||||
(
|
(
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
|
|
@ -111,6 +111,12 @@ public:
|
||||||
return cellDisplacement_;
|
return cellDisplacement_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//- Return diffusivity
|
||||||
|
motionDiffusivity& diffusivity()
|
||||||
|
{
|
||||||
|
return diffusivityPtr_();
|
||||||
|
}
|
||||||
|
|
||||||
//- Return point location obtained from the current motion field
|
//- Return point location obtained from the current motion field
|
||||||
virtual tmp<pointField> curPoints() const;
|
virtual tmp<pointField> curPoints() const;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue