@Aeronastro 我觉得是这样的:
where |S|= sqrt(2SijSij),这句话可能来自LES,这只是一个定义,它不是正常意义上的magnitude.
正常的magnitude就是|S|= sqrt(SijSij)
浪迹天大 发布的最佳帖子
-
RE: 关于张量的知识,一个二阶张量的模是怎么求的?
-
并行,获取某个量达到最大值的这个网格中的其它值
并行计算时,利用
gMax
获取了某个volScalarField
的全局最大值,然后我想找到这个网格的cell_ID
,因为我想输出这个网格的其它的一些volScalarField
值,我写的代码只能在串行下实现这个功能,请问如何在并行下实现这个想法呢?
我的串行代码如下:scalar theMax = gMax(oneVolScalarField); forAll (oneVolScalarField,cellI) { if ( oneVolScalarField[cellI] >= theMax ) { Info<<" When oneVolScalarField peaks, anotherVolScalarField ======"<<anotherVolScalarField[cellI]<<endl; } }
-
RE: 关于源项处理方法fvm::su和fvm::sp的疑问
@wwzhao
谢谢您更新了我的认知!
现在我消化一下:
假如我们要求解方程 $\frac{\ \rho k}{\p t} = -30 + 50$。
左边这项当然变成了:fvm::ddt(rho, k)
右边第一项可以变成:- fvm::Sp(30/k, k)
,移动这一项到左边,即把负号去掉了,然后把Sp
的定义代入,即变成了fvm.diag += V*30/k
。这项加到对角元素上去了,和我们要求解的方程是一致的,并且使对角更占优了。
右边第二项可以变成:fvm::Su(50, k)
,移动这一项到左边,并且把Su
的定义代入,即变成了fvm.source += V*50
,与我们要求解的方程是一致的。如果右边第一项写成这样:
- fvm::Su(30, k)
,那么它移动到左边后,将会使fvm.source -= V*30
,与我们要求解的方程是一致的。
如果右边第二项写成这样:fvm::Sp(50/k, k)
,那么它移到左边后,将会使fvm.diag -= V*50/k
。这不利于对角占优,因此不推荐这样做。
结论:对于方程右边的项:
负数,写成Sp
——推荐这样做,因为可以使对角更占优。
负数,写成Su
——可以这样做。
正数,写成Sp
——不推荐这样做,因为会损害对角占优。
正数,写成Su
——应该这样做。
还有一种没讨论的情况:正负未知就写成SuSp
。
@wwzhao 请问我这里的理解正确吗? -
RE: LES和RANS在代码中实现过程是怎样的?
在Chalmers大学的Lars Davidson教授的讲义《Fluid mechanics, turbulent flow and turbulence modeling》
里边提到,RANS 代码改成 LES,需要做的就是,1.加入SGS模型,2.修改对流项离散格式,3.修改时间离散格式。
修改这两个格式是因为不能引入额外的 numerical dissipation。
他还给了一个例子,把对流项离散格式改成中心差分,时间离散改成Crank-Nicolson 格式。
另外, Davidson提到,SIMPLE算法也是允许的:
-
RE: 最快速的上google的方式是什么?
@浪迹天大 在 最快速的上google的方式是什么? 中说:
购买国外服务器,推荐digitalOcean啊,5美元1个月。另外github学生优惠可以获得50美元。首次使用必须充值5美元,加上github的50美元,就可以使用一年了。
这是我昨晚折腾一个加速软件之后的网速测试结果。
浪迹天大 发布的最新帖子
-
RE: 如何在边界条件中获取solver里定义的某一个参数?
@shiyu 一个有点冗余的办法,定义一个vector场,每个网格都等于你那个gradP。这样就可以在别处lookup到了。