@hitsc30 稳定状态感觉没什么影响,但是瞬态的话影响很大。我一般都还是保持在1以下。个人愚见库朗数30+还不如把网格画粗一点。不过结果对得上最重要
Zhy2022
帖子
-
-
@李东岳 东岳老师,请问这个速度能不能从10-2下降到10-4或者-6?
-
您好,请问这个问题您是否有好的解决办法了吗?
强制设为0可能不太对,反映出来的可能不是压实效果。。 -
有关tfm中spurious velocity的问题,不知各位前辈有没有好的解决方法
-
@李东岳 东岳老师,从下面几个式子看,固相黏度应该都是半经验表达式,所以0.5可能是个实验获得的参数:
(JJ)
(Schaeffer)
(Princeton)此外,princeton中摩擦应力计算如下:
对通量的处理:
const volVectorField& U = phase.U(); surfaceScalarField phiU = fvc::interpolate(U) & U.mesh().Sf(); volScalarField Ud = fvc::div(phiU);
对压力计算:
const volScalarField pc = Fr_*pow(max(alpha - alphaMinFriction, scalar(0)), eta_) /pow(max(alphaMax - alpha, alphaDeltaMin_), p_); ...... //对体 forAll(n,celli) { if (Ud[celli] < 0.0) { n[celli] = 1.03; } else { n[celli] = 0.5*sqrt(3.0)*sin(phi_.value()); } m[celli] = n[celli]-1; //..No negative base. 对不对? pt[celli] = 1.0-Ud[celli]/( n[celli]*sqrt(2.0)*sin(phi_.value())* (sqrt(Us[celli]) + small) ); if (!(pt[celli] > 0.0)) { pt[celli] = small; } //..No negative exponent. if (m[celli] > 0) { //n-1 power pt[celli] = pc[celli]*pow(pt[celli], m[celli]); } else { pt[celli] = pc[celli]*pow(1/pt[celli], mag(m[celli])); } } ...... //对面 forAll(currPatch,facei) { if(UdBf[patchi][facei] < 0.0) { nBf[patchi][facei] = 1.03; } else { nBf[patchi][facei] = 0.5*sqrt(3.0)*sin(phi_.value()); } mBf[patchi][facei] = nBf[patchi][facei]-1; ptBf[patchi][facei] = 1.0-UdBf[patchi][facei]/( nBf[patchi][facei]*sqrt(2.0)*sin(phi_.value())* (sqrt(UsBf[patchi][facei]) + small) ); if (!(ptBf[patchi][facei] > 0.0)) { ptBf[patchi][facei] = small; } //..No negative exponent. if (mBf[patchi][facei] > 0) { ptBf[patchi][facei] = pcBf[patchi][facei]*pow(ptBf[patchi][facei], mBf[patchi][facei]); } else { ptBf[patchi][facei] = pcBf[patchi][facei]*pow(1/ptBf[patchi][facei], mag(mBf[patchi][facei])); } } } // Correct BCs pt.correctBoundaryConditions(); Us.correctBoundaryConditions(); Ud.correctBoundaryConditions();
黏度计算:
//对体 forAll(Ud,celli) { if (Ud[celli] < 0) { n[celli] = 1.03; } else { n[celli] = 0.5*sqrt(3.0)*sin(phi_.value()); } m[celli] = n[celli]-1; if (!(pc[celli] > 0)) { pc[celli] = small; } //..pf is a const. //calculation of nu if (m[celli] > 0) { nu[celli] = sqrt(2.0)*pf[celli]*sin(phi_.value())* ( n[celli]-(n[celli]-1.0)*pow(pf[celli]/(pc[celli]), 1/m[celli]) ) /(sqrt(Us[celli]) + small); } else { nu[celli] = sqrt(2.0)*pf[celli]*sin(phi_.value())* ( n[celli]-(n[celli]-1.0)*pow(pc[celli]/(pf[celli]+small), mag(1/m[celli])) ) /(sqrt(Us[celli]) + small); } } ...... //对面 forAll(patches, patchi) { if (!patches[patchi].coupled()) { const fvPatch& currPatch = patches[patchi]; forAll(currPatch,facei) { if(UdBf[patchi][facei] < 0.0) { nBf[patchi][facei] = 1.03; } else { nBf[patchi][facei] = 0.5*sqrt(3.0)*sin(phi_.value()); } mBf[patchi][facei] = nBf[patchi][facei]-1; if (!(pcBf[patchi][facei] > 0.0)) { pcBf[patchi][facei] = small; } if (mBf[patchi][facei] > 0) { nuBf[patchi][facei] = sqrt(2.0)*pf.boundaryField()[patchi][facei]*sin(phi_.value())* ( nBf[patchi][facei]-(nBf[patchi][facei]-1.0)*pow(pfBf[patchi][facei]/pcBf[patchi][facei], 1/mBf[patchi][facei]) ) /(sqrt(UsBf[patchi][facei]) + small); } else { nuBf[patchi][facei] = sqrt(2.0)*pf.boundaryField()[patchi][facei]*sin(phi_.value())* ( nBf[patchi][facei]-(nBf[patchi][facei]-1.0)*pow(pcBf[patchi][facei]/(pfBf[patchi][facei]+small), mag(1/mBf[patchi][facei])) ) /(sqrt(UsBf[patchi][facei]) + small); } } } } nu.correctBoundaryConditions(); Us.correctBoundaryConditions(); pc.correctBoundaryConditions(); Ud.correctBoundaryConditions();
结果在相分数0.5左右(摩擦黏度产生处)报错:
相分数出现突变,而且无法增大(继续堆积),增大就会报错,不知道是哪个地方的处理有问题,还请东岳老师和其他前辈能解答一二!
-
@李东岳 谢谢李老师!0.5暂时还没有找到足够有说服力的依据,只是看到有些文献里直接用的μ=0.5pfsin(phi);
但我觉得wachem2000里面公式不太对,因为他引用的JJ的文章是这样定义的: -
请教各位前辈一个问题:
phi是一个surfaceScalarField,和volScalarField不矛盾吗?此外,现在需要对速度散度判断,以确定n的取值:
n是一个volScalarField或者scalar也可以,要计算:
写循环的话,应该用div(U),还是div(phi)?(ps和pc都是volScalarField) -
@Yongbo 谢谢
-
@李东岳 李老师,请问发散后继续计算又不发散了,比如如下报错:
或者报错与solver有关(gauss-seidel),这证明植入的模型还是不容易收敛是吧? -
@veen 还在整理研究结果 ,但是也有了一点新认识:
1)沉降效果与曳力模型和颗粒粒径有关;
2)砂堤回缩与边界条件和固相应力模型(猜测,用JJ比JJShaffer要好,且正在植入其他模型)有关;
3)达不到alphaMax我猜想可能也和固相应力模型有关。
争取早日把成果研究整理分享出来 -
请教各位前辈老师:
JJ模型中的0.5是哪来的呢? -
请教各位前辈:
针对成员函数:
定义:
返回值:
报错:
但直接返回:
计算没问题,不知问题出在哪里 -
在dargmodel.C这个衍生类中没有mesh这个成员对象,不知道该如何引入
-
如果改变写法:
Foam::dragModels::wallEffect::wallEffect ( const dictionary& dict, const phasePair& pair, const bool registerObject ) : dragModel(dict, pair, registerObject), residualRe_("residualRe", dimless, dict), y_(nullptr) {} Foam::dragModels::wallEffect::wallEffect ( const dictionary& dict, const phasePair& pair, const bool registerObject, const fvMesh& mesh ) : dragModel(dict, pair, registerObject), residualRe_("residualRe", dimless, dict), y_(&wallDist::New(mesh).y()) {}
计算的时候会报错:
@李东岳 也烦请东岳老师帮忙看看这个问题如何实现~ 三月再您的课上还问过您这个问题,但是下来自己搞没搞通
-
请教各位前辈:
我以wenyu.C为基础,想把y_(wallDist::New(mesh).y())植入到曳力计算公式中:/ * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::dragModels::wallEffect::wallEffect ( const dictionary& dict, const phasePair& pair, const bool registerObject, const fvMesh& mesh ) : dragModel(dict, pair, registerObject), residualRe_("residualRe", dimless, dict), y_(wallDist::New(mesh).y()) {}
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // Foam::tmp<Foam::volScalarField> Foam::dragModels::wallEffect::CdRe() const { const volScalarField alpha2 ( max(1 - pair_.dispersed(), pair_.continuous().residualAlpha()) ); //const volScalarField Res(alpha2*pair_.Re()); const volScalarField Re(pair_.Re()); const volScalarField Cp(y_/pair_.dispersed().d()); const volScalarField CdsRe ( neg(Re - 1000)*(24*(1.0 + 0.15*pow(Re, 0.687))*pow(Cp,0.565) + pos0(Re - 1000)*0.44*max(Re, residualRe_) );
编译可以通过,但查看未定义符号情况时出现如下问题:
计算时也出现错误
不知这个y_(wallDist::New(mesh).y())该如何正确植入呢?
-
@bestucan 前辈,按照您的指点我试了一下,只计算单相的话可能得修改multiphaseEulerFoam求解器
-
@李东岳 茅塞顿开
-
@李东岳 谢谢东岳老师,是否是因为固相湍动能虽然给0,但是是计算获得的,后续的湍动能和颗粒温度不为0导致速度不为0?
-
@bestucan 感谢前辈!我去试一下这个方法。有点想不通的是为什么固相分数为0,但是却有固相速度。。。
-
请教各位前辈:
我在计算固-液两相流运动时,希望先计算一个充分发育的液相(单相)流场,试着把固相的速度、相分数、颗粒温度以及固相湍流黏度都设为0,结果可以运算,但算出来固相速度场不为0(与液相很接近),不知道这是怎么回事:
如果这种方法不行的话,如何获得一个单独发育的液相流场呢(单相模型的话prgh也无映射)?
在此先谢谢大家的指点。 -
@李东岳 东岳老师,我在使用multiphaseEulerFoam(OF8)的时候出现了这种情况,有没有可能是局部固相分数太小造成的这种发散?
-
@Zhy2022 不好意思,8中也有非2D的定义-SymmTensorI.H
-
@李东岳 多谢东岳老师!学生还有一事不太清楚:
invariantII有如下两个版本:
-8
-2006
像8这样定义的话就没算3D的吗? 但是tr前面仍是取的1/3的哇——(1.0/3.0)*sqr(tr(D[celli]) -
各位前辈,请问在固相摩擦黏度求解过程中,如下处理的意义是什么?
在Wachem2000的论文里,摩擦黏度的定义式也不是这样写的:
此外这行代码对应的公式应该是怎样的呢?sqrt((1.0/3.0)*sqr(tr(D[celli])) - invariantII(D[celli]))
-
差不多 大团队教师和部分硕博士留守
-
多数情况下模拟结果差异不大,但物理含义还是有不同的,表现在代码实现上(可以看看源代码)
-
@浪迹天大 不好意思,也是在初学阶段,做得不够严谨
-
@veen 前辈,我个人的考虑是湍流分散力只是连续相对离散相的作用,实际上离散相对连续相也是有作用的
-
@veen 好的,谢谢您!
-
@Jacob-Z 犀利,欢迎指导交流
-
@veen 多谢前辈的指点!
入口给的均一固相分数(根据实际工况设置);
砂堤沉降就达到alphaMax是fluent的模拟结果,我的这个模拟工况就是没能达到,所以感觉有问题;
在我的工况下,砂堤运动规律大概是清楚的,因此推测固相分数在模拟中回缩可能是有问题的
不太明白砂堤几何中心该如何获得。
下面附上实验结果和模拟结果(没法传动图):
-
@veen 感谢指点!目前的网格已经是加密后的了,对入口射流细节的捕捉更加到位。时间步采用自适应,也能最大程度保证计算准确性。
现在就想明确两个问题:为什么最大堆积分数不像fluent那样,(1)在砂堤沉降后就达到alphaMax(明明已经没有速度);(2)为什么砂堤铺开后会回缩一段距离后再往前堆积。
我会根据后续模拟结果再做反馈! -
@李东岳 李老师,并非2D网格,宽度方向划分了5个网格(很窄);前后目前看作壁面,后期会看作具有一定渗透性的出口
-
@veen 谢谢前辈! 目前打算先用gidaspow算算 后面会修正曳力模型
-
@李东岳 好的东岳老师,其实里面没有结果文件,只是我实验做的一点结果和文章 我再给您发一个只有算例的
-
@veen 前辈,您的设置能否分享一下(不用网格)?
-
@veen 谢谢前辈,我打的最大相分数给的0.62,但是堆积只有0.59左右,这也是个很奇怪的问题
-
@李东岳 东岳老师,有一篇Mfix的模拟结果,出口设置和我的模型略有不同,影响不大,一并发给您
-
@李东岳 谢谢东岳老师!暂无可参考的sci,目前仅能通过实验结果进行粗略对比。
最大问题还是固相分数回流、沉降达不到最大堆积分数0.62和固相Y速度不太对劲。
case如何上传给您?实验视频有10个G不太方便发送,我以截图的方式一并发给您 -
同样工况下,fluent模拟结果和OF模拟结果存在差异:
fluent的砂堤快速堆积,而OF的砂堤会先跑满整个空间,再堆积回缩,堆积也达不到最大堆积程度0.63,
而且OF中固相Y方向速度有局部异常向下的特点,不知道是不是固相计算有什么问题,不知东岳老师@李东岳 或者其他前辈能否给一些建议?
-
@李东岳 东岳老师,在kineticTheoryModel.C中有这样一段代码:
Foam::tmp<Foam::volScalarField> Foam::RASModels::kineticTheoryModel::k() const { NotImplemented; return nut_; } Foam::tmp<Foam::volScalarField> Foam::RASModels::kineticTheoryModel::epsilon() const { NotImplemented; return nut_; }
但是感觉固相湍流开关打开的话,其湍流黏度完全是按照如下公式计算的:
(其中a为固相,b为液相)
也就是固相被看作连续相后不存在真实的k和epsilon哇? -
@东岳 东岳老师,有个问题不太想得通,不知道您对此看法如何:
采用TFM模拟固-液两相流,固相密度设置为常数(fluidisedBed案例中也是如此),视为不可压缩,但固相湍流模型(kineticTheory或phasePressure)都是属于可压缩模型,它们是否矛盾?
controlDict文件中关于自动调节库朗数
关于multiphaseEulerFoam的计算问题
在collidingCloud中添加一个体积分数的判定,怎么实现?
用twoPhaseEulerFoam求解水砂输送的问题
关于multiphaseEulerFoam中固相摩擦黏度的计算问题
关于multiphaseEulerFoam中固相摩擦黏度的计算问题
关于multiphaseEulerFoam中固相摩擦黏度的计算问题
关于multiphaseEulerFoam中固相摩擦黏度的计算问题
有关固相应力模型修改过程中frictionalPressure返回值的问题
某高阶格式偶尔收敛,偶尔发散
用twoPhaseEulerFoam求解水砂输送的问题
关于multiphaseEulerFoam中固相摩擦黏度的计算问题
有关固相应力模型修改过程中frictionalPressure返回值的问题
在曳力模型中植入网格中心到边界距离的问题
在曳力模型中植入网格中心到边界距离的问题
在曳力模型中植入网格中心到边界距离的问题
关于multiphaseEulerFoam的计算问题
关于multiphaseEulerFoam的计算问题
关于multiphaseEulerFoam的计算问题
关于multiphaseEulerFoam的计算问题
关于multiphaseEulerFoam的计算问题
时间步长问题
关于multiphaseEulerFoam中固相摩擦黏度的计算问题
关于multiphaseEulerFoam中固相摩擦黏度的计算问题
关于multiphaseEulerFoam中固相摩擦黏度的计算问题
现在高校都放假了么
wall上U设置的小困惑
变量读取
变量读取
变量读取
reactingTwoPhaseFoam解析中湍流分散力的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题
用twoPhaseEulerFoam求解水砂输送的问题