代码实现?
-
-
OpenFOAM中有考虑粘性耗散项的求解器吗?或者考虑粘耗散的算例?
-
你这个不是粘性耗散吧?这个方程可以实现,首先对速度求梯度然后提取左下角和右下角分量处理(公式6:http://dyfluid.com/tensor.html )
volTensorField gradU("gradU", fvc::grad(U)); scalarField parU1 = gradU.xz(); scalarField parU2 = gradU.zz();
类似这种代码。不过感觉不是很符合物理。这个方程怎么推导出来的?
-
tau是
,需要用Bousinessq假定来计算,参考 http://47.93.231.95/doku.php#boussinesq_approximation -
@izumi
不建议这么实现,参考rhoCentralFoam的实现,应该是把转置项显式离散,非转置项按laplacian隐式离散。因为OF本身的限制,转置项会有各个分量间的耦合,所以必须显式离散,非转置项不用。
隐式的部分越多,时间步限制通常也越弱一些,所以OF一般实践上喜欢把粘性项拆拆拆之后尽可能多地采用隐式离散。实在不能隐式离散的源项、交叉项才用显式离散。
参考:https://chengdi123000.github.io/2018/01/05/rhoCentralFoam解析/#粘性应力项
-
@程迪
谢谢!看rhoCentralFoam时没看懂,看了你的链接清楚一些了。
我主要是想在能量方程中添加 ,然后计算耗散函数 。
根据CFD中的能量方程, 好像没法展开成可以隐式离散的项。
看rhoCentralFoam中的能量方程,除时间项外,用的都是显式离散。所以,对于能量方程来说,是不是不必拆项并使用隐式格式?
至于动量方程中的 ,对于一般的求解器,应该是包含在UEqn.H里的turbulence->divDevRhoReff(U)吧,不用我们自己定义。rhoCentralFoam中的能量方程:
surfaceScalarField sigmaDotU ( "sigmaDotU", ( fvc::interpolate(muEff)*mesh.magSf()*fvc::snGrad(U) + fvc::dotInterpolate(mesh.Sf(), tauMC) ) & (a_pos*U_pos + a_neg*U_neg) ); solve ( fvm::ddt(rhoE) + fvc::div(phiEp) - fvc::div(sigmaDotU) );
2017年10月27日 03:31
8/15
2018年1月8日 05:49