View
848
Download
5
Category
Preview:
Citation preview
OpenFOAMDEM
2
44OpenCAE@ 2015/12/13
OpenFOAMDEM
OpenFOAM-2.0.0DEM
2011/6/16 OpenFOAM-2.0.0DEM(Discrete Element Method) (Lagrangian)
2014/2/17 OpenFOAM-2.3.0DPM(Discrete ParHcle Modeling) MP-PIC(MulHphase ParHcle-in-Cell)
Release History
OpenFOAMDEMdocument
Ver. 2.3.x
13 ( ErgunWenYuDrag PlessisMasliyahDrag SRF SaffmanMeiLiSForce TomiyamaLiS WenYuDrag gravity nonInerHalFrame nonSphereDrag paramagneHc pressureGradient sphereDrag virtualMass )
constant/kinemaHcCloudProperHeserror
13
?
$FOAM_SRC/lagrangian/intermediate/submodels/KinemaHc/ParHcleForces
. Drag Gravity LiS NonInerHalFrame ParamagneHc ParHcleForce PressureGradient SRF VirtualMass forceSuSp
$tree -L 1Drag/ ErgunWenYuDrag NonSphereDrag PlessisMasliyahDrag SphereDrag WenYuDrag
LiS LiSForce SaffmanMeiLiS TomiyamaLiS
tree
(5) ErgunWenYuDrag NonSphereDrag PlessisMasliyahDrag SphereDrag WenYuDrag
Re: u: d: :
Re = f u f us ds
f
(Sphere)
Sphere
Re
(Sphere)
F = 34msCd Re
fsds
2 u
value.Sp() = mass*0.75*muc*CdRe(Re)/(p.rho()*sqr(p.d()));
SphereDragForce.C
OpenFOAMSp
if (Re > 1000.0) { return 0.424*Re; } else { return 24.0*(1.0 + 1.0/6.0*pow(Re, 2.0/3.0)); }
Re
(NonSphere)
Cd =24Re
1+ a Reb( )+ c ReRe+ d
NonSphere
A. Haier and O. Levenspiel, Powder Technol., 58, 63-70 (1989)
a ( ) = exp 2.3288 6.4581 + 2.4486 2( )b ( ) = 0.0964+ 0.5565
c ( ) = exp 4.905013.8944 +18.4222 2 10.2599 3( )d ( ) = exp 1.4681+12.2584 20.7322 2 +15.8855 3( )
F = 34msCd Re
fsds
2 u f us
(NonSphere)
Cd CdRe return 24.0*(1.0 + a_*pow(Re, b_)) + Re*c_/(1 + d_/(Re + ROOTVSMALL));
Cd =24Re
1+ a Reb( )+ c1+ d / Re+ small( )
value.Sp() = mass*0.75*muc*CdRe(Re)/(p.rho()*sqr(p.d()));
F = 34msCd Re
fsds
2 u
a, b, c, dNonSphereDragForce.C
NonSphereDragForce.C
NonSphereDragForce.C
(WenYu)
nRe
(WenYu)
=34Cd
1 n( )ds
f u f us n2.65
f: s:
: Cd: n: d: : u: V:
Ff =1 n
u f us( )Vs
C. Y. Wen and Y. H. Yu, Chem. Eng. Prog. S. Ser., 62, 100-113 (1966).
Ff =Vs1 n
34Cd
1 n( )ds
f n2.65 u f us
2
Ff =mss
34CdRes f
nds2 n
2.65 u f us
Vs =mss, f =
Res fn u f us ds
(WenYu)
return forceSuSp ( vector::zero, (mass/p.rho()) *0.75*CdRe(alphac*Re)*muc*pow(alphac, -2.65)/(alphac*sqr(p.d())) );
Su
mss
34CdRecc
2.65
cds2
Ff =mss
34CdRes f
nds2 n
2.65 u f usWenYuDragForce.C
(ErgunWenYu)
f: s:
: Cd: n: d: : u: :
Wen-Yu (n > 0.8)
Ergun (n < 0.8)
=1501 n( )2
n2 fds2 +1.75
1 n( )n
fdsu f us
S. Ergun, Chem. Eng. Prog., 48, 89-94 (1952).
nRe
(ErgunWenYu)
f: s:
: Cd: n: d: : u: V:
Ff =1 n
u f us( )Vs
C. Y. Wen and Y. H. Yu, Chem. Eng. Prog. S. Ser., 62, 100-113 (1966).
Ff =mss
fnd 2s
1501 n( )n
+1.75Re!"#
$%&u f us
Vs =mss
f =Re fu f us ds
Ff =mss
1 n
u f us( )
=1501 n( )2
n2 fds2 +1.75
1 n( )n
Re fds2
=1501 n( )2
n2 fds2 +1.75
1 n( )n
fdsu f us
(ErgunWenYu)
if (alphac < 0.8) { return forceSuSp ( vector::zero, (mass/p.rho()) *(150.0*(1.0 - alphac)/alphac + 1.75*Re)*muc/(alphac*sqr(p.d())) ); }
mss
1501c( )c
+1.75Re!"#
$%&
fcd
2s
Ff =mss
fnd 2s
1501 n( )n
+1.75Re!"#
$%&u f us
ErgunWenYuDragForce.C
(PlessisMasliyah)
Plessis-Masliyah (RUC)
A = 26.8n3
1 n( )23 1 1 n( )
13
!
"#
$
%& 1 1 n( )
23
!
"#
$
%&2
B = n2
1 1 n( )23
!
"#
$
%&2
= A1 n( )2
n2 fds2 +B
1 n( )n
fdsu f us
Ergun
J. P. Du Plessis and J. H. Masliyah, Trans. Porous Media, 3, 145-161 (1988).
(PlessisMasliyah)
f: s:
: Cd: n: d: : u: V:
Ff =1 n
u f us( )Vs
Ff =mss
fnd 2s
A1 n( )n
+BRe!"#
$%&u f us
Vs =mss
f =Re fu f us ds
Ff =mss
1 n
u f us( )
= A1 n( )2
n2 fds2 +B
1 n( )n
Re fds2
= A1 n( )2
n2 fds2 +B
1 n( )n
fdsu f us
(PlessisMasliyah)
scalar A = 26.8*pow3(alphac) /( sqr(cbrtAlphap) *(1.0 - cbrtAlphap) *sqr(1.0 - sqr(cbrtAlphap)) + SMALL );
scalar B = sqr(alphac) /sqr(1.0 - sqr(cbrtAlphap));
vector::zero, (mass/p.rho()) *(A*(1.0 - alphac)/alphac + B*Re)*muc/(alphac*sqr(p.d()))
mss
A1c( )c
+BRe!"#
$%&
fcd
2s
A = 26.8n3
1 n( )23 1 1 n( )
13
!
"#
$
%& 1 1 n( )
23
!
"#
$
%&2
B = n2
1 1 n( )23
!
"#
$
%&2
Ff =mss
fnd 2s
A1 n( )n
+BRe!"#
$%&u f us
PlessisMasliyahDragForce.C
(2) SaffmanMeiLiS TomiyamaLiS
Re = f u f us ds
f
Re: u: d: :
scalar Cl = this->Cl(p, curlUc, Re, muc); value.Su() = mass/p.rho()*p.rhoc()*Cl*((p.Uc() - p.U())^curlUc);
LiSForce.C
F = mss
cCl uc us( ) uc( )( )
(SaffmanMei)
Fl =ClAp f u f us
2
2
(Saffman)
Fl,Sa = 6.46 fud2
!
"#
$
%&2 G
!
"#
$
%&
12
(Saffman-Mei)FlFl,Sa
= 1 0.331412
!
"#
$
%&exp Res
10!
"#
$
%&+ 0.3314
12
= 0.0524 Res( )12
Res 40
Res > 40
R. Mei, Int. J. MulHphase Flow, 18, 145-147 (1992)
Res =uds
=12Res
2
=12ReGRes
=ReG
12
Res
ReG =Gds
2
G = duldy u = u f us
(SaffmanMei)
Fl,Sa = 6.46 f u f usds2
!
"#
$
%&2
u
!
"#
$
%&
12
= 6.46 fds4
ReG u f us
= 6.46 3mss
1ReG
f u f us u2
Res =uds
=12Res
2
=12ReGRes
=ReG
12
Res
ReG =Gds
2
G = duldy
= u
u = u f us
(Saffman)
FlFl,Sa
=mei
Fl = 6.46mei3mss
1ReG
f u f us u2
=32
1ReG
6.46mei mss
f u f us u
Cl (OpenFOAM)
(SaffmanMei)
scalar Rew = p.rhoc()*mag(curlUc)*sqr(p.d())/(muc + ROOTVSMALL); scalar beta = 0.5*(Rew/(Re + ROOTVSMALL)); scalar alpha = 0.3314*sqrt(beta); scalar f = (1.0 - alpha)*exp(-0.1*Re) + alpha; ... if (Re < 40) { Cld = 6.46*f; } else { Cld = 6.46*0.0524*sqrt(beta*Re); } return 3.0/(mathemaHcal::twoPi*sqrt(Rew))*Cld;
SaffmanMeiLiSForce.C
Rew =l u ds
2
l
= 0.3314
= 0.3314 Rew2Re
=Rew2Re
Cld = 6.460.0524 Re
= 6.460.0524 Rew2
Cld = 6.46 f f = 1( ) exp 0.1Re( )+
= 1 0.3314 Rew2Re
#
$%
&
'( exp Re
10#
$%
&
'(+ 0.3314
Rew2Re
()OpenFOAM, OpenFOAMCldFL/FLSax6.46
Cl =32
1ReG
6.46mei
Cld (OpenFOAM)
(Tomiyama)
A. Tomiyama et al., Chem. Eng. Sci., 57, 1849-1858 (2002)
Cl =min 0.288tanh 0.121Res( ), f( )= f
Fl =Cl f mss
u u f( )
Eod < 44 Eod 10.7
f = 0.00105Eod3 0.0159Eod
2 0.0204Eod + 0.474
Eod =g f s( )dH2
Eo: Etvs dH: dv: E: ds:
E = dVdH
=1
1+ 0.163Eo0.757
dH = 1+ 0.163Eo0.757( )dV
dH = 1+ 0.163Eo0.757( )
13 ds
(Tomiyama)
scalar Eo = p.Eo(g, p.d(), sigma_); scalar dH = p.d()*cbrt(1.0 + 0.163*pow(Eo, 0.757)); scalar Eod = p.Eo(g, dH, sigma_); scalar f = 0.00105*pow3(Eod) - 0.0159*sqr(Eod) - 0.0204*Eod + 0.474; if (Eod 4) && (Eod
(6) SRF gravity nonInerHalFrame paramagneHc pressureGradient virtualMass
SRF
f: s:
F: m: g: : V:
value.Su() = mass*(1.0 - p.rhoc()/p.rho()) *(2.0*(p.U() ^ omega) + (omega ^ (r ^ omega)));
SRF (Single RotaTng Frame)()
FSRF =ms 2v + r ( )
()
FSRF =ms 1 fs
"
#$
%
&' 2v + r ( )
SRFForce.C
v = drdt
(gravity)
Fg =msg lgVs
f: s:
F: m: g: : V: Vs =
mss
Fg =msg 1ls
"
#$
%
&'
OpenFOAM
value.Su() = mass*g_*(1.0 - p.rhoc()/p.rho());GravityForce.C
(nonInerTalFrame)
FnIF =ms w+ 2v + r ( )
Lagragian
v = drdt
value.Su() = mass *( -W_ + (r ^ omegaDot_) + 2.0*(p.U() ^ omega_) + (omega_ ^ (r ^ omega_)) );
NonInerHalFrameForce.C
(paramagneTc)
Fmg =ms 30
+3
H H#
$%
&
'(
?
value.Su()= mass*3.0*constant::electromagneHc::mu0.value()/p.rho() *magneHcSuscepHbility_/(magneHcSuscepHbility_ + 3) *HdotGradHInterp.interpolate(p.posiHon(), p.currentTetIndices());
ParamagneHcForce.C
(pressureGradient)
Fp =ms fs
u ft
+u f u f!
"#
$
%&
=ms fs
Du fDt
OpenFOAMBug (Bug #0001302)
value.Su() = mass*p.rhoc()/p.rho()*DUcDt;
PressureGradientForce.C
(virtualMass)
Fvm = cvmFp
= cvmms fs
Du fDt
Cvm: (0.5)
forceSuSp value = PressureGradientForce::calcCoupled(p, dt, mass, Re, muc); value.Su() *= Cvm_;
VirtualMassForce.C
OpenFOAMDEM
Ver.2.3.x13
force
template class SphereDragForce : public ParHcleForce
SphereDrag/SphereDragForce.H
forceParHcleForce
class derive : public base
basederive
C++()
$FOAM_SRC/lagrangian/intermediate/submodels/KinemaHc/ParHcleForces/ParHcleForce/
ParHcleForce
force
ParHcleForce
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
ParHcleForce.H
virtual forceSuSp calcCoupled ( const typename CloudType::parcelType& p, const scalar dt, const scalar mass, const scalar Re, const scalar muc ) const;
virtual: ()
C++()ParHcleForcecalcCoupled, calcNonCoupled, massAdd (0)
DragForce
ParHcleForce
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
SphereDragForce
SpereDragForcecalcCoupled calcCoupled (Drag(ErgunWenYuDrag, NonSphereDrag, PlessisMasliyahDrag, WenYuDrag))
CdRe
ParHcleForce
DragForce
Li[Force
ParHcleForce
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
LiSForce
Li[ForcecalcCoupled, cacheFieldsCl
curlUc, Su Uc,Su
Cl
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
LiSForce
Cl
TomiyamaLiSForce
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
Cl
TomiyamaLi[ForceCl Cl (LiSForce(TomiyamaLiSForce, SaffmanMeiLiSForce))
ParHcleForce LiSForce LiSForce
Li[Force
GravityForce
ParHcleForce
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
GravityForce
GravityForcecalcNonCoupled, g
g
ParHcleForce
GravityForce
NonInerTalForce
ParHcleForce
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
NonInerHalForce
NonInerTalForcecalcNonCoupled, cacheFields, W, omega, omegaDot, CentreOfRotaTon
W
ParHcleForce
NonInerHalForce
omega omegaDot
centreOfRotaHon
ParamagneTcForce
ParHcleForce
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
ParamagneHcForce
NonInerTalForcecalcNonCoupled, cacheFields, HdotGradHName, magneTcSuscepTbility
HdotGradHName
ParHcleForce
ParamegneHcForce
magneHcSuscepHbility
PressureGradientForce
ParHcleForce
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
PressureGradientForce
PressureGradientForcecalcCoupled, massAdd, cacheFields, DUcDtInterp
DUcDtInterp
ParHcleForce
PressureGradientForce
VirtualMassForce
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
VirtualMassForce
Vi_ualMassForcecalcCoupled, massAdd, cacheFields
ParHcleForce
PressureGradientForce
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
PressureGradientForce
DUcDtInterp
VirtualMassForce
DUcDtInterp
SRFForce
ParHcleForce
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
Owner Mesh Coeffs
cacheFields calcCoupled
calcNonCoupled massAdd
SRFForce
SRFForcecalcNonCoupled, cacheFields
ParHcleForce
SRFForce
coupled or nonCoupled
Coupled nonCoupled
LiSForce (TomiyamaLiSForce, SaffmanMeiLiSForce)
DragForce (SphereDrag, ErgunWenYuDrag, NonSphereDrag, PlessisMasliyahDrag, WenYuDra)
GravityForce
NonInerHalForce
ParamegneHcForce
PressureGradientForce
VirtualMassForceSRFForce
couplednonCoupled?
$FOAM_SRC/lagrangian/intermediate/submodels/KinemaHc/ParHcleForces/forceSuSp
forceSuSp.H F = Sp U Up( )+ Su
F: Su: () Sp: (/)
coupled (Sp) nonCoupled (Su)
forceSuSp
class forceSuSp : public Tuple2
forceSuSp.H
class derive : public base
basederive
C++()
forceSuSpTuple2
Tuple2
first second reverseTuple2
forceSuSp
first second reverseTuple2
Su Sp
forceSuSpforceSuSpI.H
inline Foam::vector& Foam::forceSuSp::Su() { return first(); } inline Foam::scalar& Foam::forceSuSp::Sp() { return second(); }
Su()Tuple2first()Sp()second()
Su Sp
References
A. Haier and O. Levenspiel, Powder Technol., 58, 63-70 (1989).
C. Y. Wen and Y. H. Yu, Chem. Eng. Prog. S. Ser., 62, 100-113 (1966).
S. Ergun, Chem. Eng. Prog., 48, 89-94 (1952). J. P. Du Plessis and J. H. Masliyah, Trans. Porous Media, 3, 145-161 (1988).
R. Mei, Int. J. Multiphase Flow, 18, 145-147 (1992). A. Tomiyama et al., Chem. Eng. Sci., 57, 1849-1858 (2002). C++()
Recommended