Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-2.3.x

This commit is contained in:
andy 2014-03-20 13:53:42 +00:00
commit 0c7d5db5f0
8 changed files with 67 additions and 31 deletions

View file

@ -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);

View file

@ -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

View file

@ -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

View file

@ -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;

View file

@ -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

View file

@ -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;

View file

@ -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_
( (

View file

@ -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;