cannot find file /kinematiccloud/collisionrecordspairaccessed
-
LES and RANS calculations of particle dispersion behind a wall-mounted cubic obstacle
Marco Atzori a,b,∗, Sergio Chibbaro c, Christophe Duwig d, Luca Brandt
2022闲着看一下这篇文章,他的解释是可能是涉及到湍流没有解好啊,Stokes 什么的。
而且正常情况下 spray中只考虑了drag, lift, 如果固体parcel 可能会有shear lift 什么的,如果bubble 会有什么basset force, historyforce什么的,可能你真是缺了某个模型,找找看
万一呢, 这不就一片文章出来了
-
@星星星星晴 有个问题请教一下,有时间帮忙看看。在计算粒子drag时,如果是ErgunWenYuDragForce。分了两个公式:
if (alphac < 0.8)
{
return forceSuSp
(
Zero,
(mass/p.rho())
(150.0(1.0 - alphac)/alphac + 1.75*Re)muc/(alphacsqr(p.d()))); } else { return forceSuSp ( Zero, (mass/p.rho()) *0.75*CdRe(alphac*Re)*muc*pow(alphac, -2.65)/(alphac*sqr(p.d())) ); }
按道理将,这两个计算的都是beta值,也就是相对速度前面的那一部分。可是在第二个公式里,好像连两次的相对速度都已经包含在内了。还有,在KinematicParcel.C中,计算加速度时:const vector acp = (Fcp.Sp()*td.Uc() + Fcp.Su())/massEff;
这里乘以td.Uc(),感觉不对啊。应该在这里乘以相对速度才更合理一些阿。麻烦给看看,实在是推导出来跟公式对不上。谢谢。 -
@zhe
在这个定义中 OpenFOAM-8/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/forceSuSp/forceSuSp.HHelper container for force Su and Sp terms. F = Sp(U - Up) + Su Explicit contribution, Su specified as a force Implicit coefficient, Sp specified as force/velocity
所以 最后在return的时候 Sp和Su是完全不同的俩东西。 U就是td.Uc()
-
@zhe
我用的of8 是这样的 你用的那个版本啊?template<class CloudType> Foam::forceSuSp Foam::ErgunWenYuDragForce<CloudType>::calcCoupled ( const typename CloudType::parcelType& p, const typename CloudType::parcelType::trackingData& td, const scalar dt, const scalar mass, const scalar Re, const scalar muc ) const { const scalar alphac = this->alphacInterp().interpolate ( p.coordinates(), p.currentTetIndices() ); if (alphac < 0.8) { return forceSuSp ( Zero, mass/p.rho()*(150*(1 - alphac)/alphac + 1.75*Re) *muc/(alphac*sqr(p.d())) ); } else { return WenYuDragForce<CloudType>::calcCoupled(p, td, dt, mass, Re, muc); } }
-
@zhe 还是得细细来分解,最后发现,在计算相互作用力时,openfoam不是按着公式来的,而是分开算的相对速度。
// Calculate the integration coefficients const vector acp = (Fcp.Sp()*td.Uc() + Fcp.Su())/massEff; const vector ancp = (Fncp.Su() + Su)/massEff; const scalar bcp = Fcp.Sp()/massEff; // Integrate to find the new parcel velocity const vector deltaU = cloud.UIntegrator().delta(U_, dt, acp + ancp, bcp); const vector deltaUncp = ancp*dt; const vector deltaUcp = deltaU - deltaUncp;
在这里可以看到的是,在计算粒子的速度总变化量时,引用里积分公式,根据自己选择的不同模型,得出不同的delta。大多是选择的Euler哈。将后面的4中参量带进去就可以看出来,这里面分别包含betaUf 和 -betaUp. 希望迷糊的朋友能放宽心用哈。
-
@星星星星晴 又要麻烦了。我想不通一个问题。我想要精确一下我的drag的coef在特殊环境下计算结果。我用的case很简单,就是一个粒子从空气自由释放,落到水里,达到它的settling velocity。由于我只添加drag和gravity,在中间想要输出Fcp.Sp(),在KinematicParcel.C 中 加了Info << "Fcp.Sp() = " << Fcp.Sp() << endl;
也就是drag的coef。但是却不会输出。我是用的collidingCloud,在motion里应该就是这个运动方程了。td.part() = parcelType::trackingData::tpLinearTrack; CloudType::move(cloud, td, deltaT);
粒子运动的轨迹看起来是没问题的。如果不是在KinematicParcel.C 输出Fcp.Sp(), 那怎么可能会计算力的作用?为什么不输出我想要的那个呢?
还有一个现象,当我的case包含粒子数目很多时,它却可以输出。希望你有时间了帮忙解惑,谢谢!