drift-flux model中相对速度计算问题
-
-
把源代码放上来,我用的是v2312版本的OpenFOAM,tutorials里面有参考算例
compressibleDriftFoam.zip -
这个模型是不是存在一个问题,就是滑移速度在计算时除了和加速度相关,与雷诺数相关,似乎与别的参数没有什么关系。这就会导致随着加速度的增加,滑移速度急剧增加,这里是否还缺少能量上的约束以避免出现不合理的结果呢
-
我在计算的课题是欠膨胀气液两相流内的激波,想看看滑移速度的影响,有没有可能计算的场景的瞬态特征导致了计算的不稳定啊~
-
请教个问题,就是再滑移速度模型植入时,出现了类似于棋盘一样的相对速度Udm,想问下这种问题该怎么处理呢~
求解器更换成了twoPhaseMixingCentralFoam(Kraposhin Matvey的求解器https://github.com/unicfdlab/hybridCentralSolvers),在其中的YEqn中添加了滑移速度Udm的通量,但是出现了Udm的棋盘一样的变化,不清楚问题出在了哪里,请大佬指条明路~
Udm植入时使用了固定大小的Udc,Udc的方向由加速度方向决定(认为气液两相惯性的差异导致速度的差异)。
这个算例在孔内是50%质量含气率的气液两相,入口压力10MPa,温度383K,(这是个测试,并非真实场景) -
现在植入的Udm的方程是这样的:
Udm =rhoc * alphac / rho * UdcMag * A /mag(A+epsilon)*
( exp(-a1_*max(alphad_ - residualAlpha_, scalar(0)))- exp(-a_*max(alphad_ - residualAlpha_, scalar(0))) );
其中A是加速度
出现这种类似于棋盘一样的状态,可能是因为这里使用的参数的问题么~
- exp(-a_*max(alphad_ - residualAlpha_, scalar(0))) );
-
自己写的代码很难debug,一般我不会跟人debug代码,只能debug现有求解器的现成算例。不过你可以把你得sci发给我,我看看公式怎么植入的。如果感觉简单我可以收录到以后LCO课程的教学内容并在这里更新。太复杂只能是走项目,也不适合学生。
-
我参考的是这篇文章~
1-s2.0-S0301932221001397-main.pdf -
方程19处理成固定值是指Ur的大小方程都恒定么?这个时候不会出现震荡,但是遇到了一个问题,就是Y在计算时会超过1,应该算是过度堆积?这种问题应该怎么处理呢~ 这里我也使用了MULES进行限制。
MULES的调用是这样的void Foam::mulesWithDiffusionImplicitLimiter ( const volScalarField& rho, volScalarField& Y, const surfaceScalarField& phi, scalarField& lambdaFace, surfaceScalarField& rhoPhif, surfaceScalarField& diffFlux, const surfaceScalarField& Dmi, const fvScalarMatrix& SuSp ) { const fvMesh& mesh = rho.mesh(); const word Yname (Y.name()); Y.rename("Yi"); upwind<scalar> UDs(mesh, phi); fvScalarMatrix YConvection ( fv::gaussConvectionScheme<scalar>(mesh, phi, UDs).fvmDiv(phi, Y) ); surfaceScalarField rhoPhifBD (YConvection.flux()); surfaceScalarField& rhoPhifCorr = rhoPhif; rhoPhifCorr -= rhoPhifBD; volScalarField Su ( "Su", SuSp & Y ); MULES::limiter ( lambdaFace, 1.0/mesh.time().deltaTValue(), rho, Y, rhoPhifBD, rhoPhifCorr, zeroField(), Su, oneField(), //psiMax, zeroField() //psiMin, ); Y.rename(Yname); } -
就是在存在Y=1的区域的时候,如果Ur不合理,会导致发散
13/18