请教:第三代涡识别方法Liutex的代码在linux中运行的问题
-
@李东岳 在 请教:第三代涡识别方法Liutex的代码在linux中运行的问题 中说:
你用calculator做一个计算器,计算Liutex的mag,然后做等值面图可以么。
这个可能要看一下liutex的sci的定义,看是不是通过这个方法来进行的。
李老师,我看了刘老师的论文(刘超群, Liutex-涡定义和第三代涡识别方法. 空气动力学学报, 2020. 038(003): 第413-431,478页.),里边提到以下几点:
- Liutex算出的是一个矢量,而Q是标量。
2.文章中提到Liutex为基础的几个涡识别方法,其中之一就是可以用计算mag来画等值面,但这个时候又需要指定阈值:
3.用paraview计算9.6w 网格的算例的
mag(Rotex)
,阈值分别取不同结果如下。Liutex采用幅值等值面因此会存在跟用Q准则一样指定阈值的问题,但根据论文意思是此时画出的等值面和Liutex向量线是大致平行的。
(1)mag(Rotex)=0.1
结果
(2)mag(Rotex)=0.5
结果
(3)mag(Rotex)=2
结果
-
@lizhisongsjtu 在 请教:第三代涡识别方法Liutex的代码在linux中运行的问题 中说:
@李东岳 近期科研需要,花了两天研究这个程序。没调通,但发现一个bug。
原始程序142行qq=(Foam::pow(aa,2), 3bb)/9与《LiutexG涡定义和第三代涡识别方法》中公式12不同。应改为qq=(-Foam::pow(aa,2)+3bb)/9。
另外,求具体执行Rotex的命令!
我执行的命令是
postProcess -latestTime -func Rotex,提示cannot find functionObject file Rotex. -
@lizhisongsjtu
单进程执行Rotex -latestTime > log.Rotex-single
并行执行,20改为实际用的线程数
decomposePar mpirun -np 20 Rotex -latestTime -parallel > log.Rotex-parallel reconstructPar
-
@coolhhh 谢谢大佬
下载:RotexZhisong.zip在原始版本和东岳大佬版本基础上,用OF自带的场函数替换PQR\delta 的计算语句,200万网格,单核6s。
提示:新旧PQR\delta计算结果的差异,量级是-12,但最后Rotex的x和y分量有一点差异,z分量差异可忽略。
@李东岳 在 请教:第三代涡识别方法Liutex的代码在linux中运行的问题 中说:
我把 http://www.jhydrodynamics.com/en/download-of-liutex-code/ 这个链接里面的代码,小改了一下,放到了OpenFOAM-9里面可以编译成功。
下载:Rotex.zip
-
-
@lizhisongsjtu 感觉这个liutex没有那么好啊,我计算的是槽道流,liutex识别的结果很混乱(liutex的等值面),感觉还没Q准则显示的涡结构清晰,但是看刘老师文章里的效果挺好的。。。
下图是Q准则识别的涡(只显示了下半部分区域),可以看出清晰的流向结构(Q等值由速度染色)
(下图Q等值由温度(这里是被动标量)染色)
but,liutex等值面画出来就很混乱,我调了一些阈值都不是很好,感觉很混乱,下面是统一阈值的各个角度的liutex等值面,总体感觉就很混乱。
(下面图liutex等值面都为速度染色)
PS:之前用omega方法识别涡时也出现了跟liutex等值面差不多的现象,刘老师文章里也提到omega方法是跟阈值关系不大的(优于Q准则),但是在我的槽道流算例里,这两种方法似乎都不如Q准则好,请问大家在进行涡识别时有没有类似的经历,请格外大佬指教。
-
@lizhisongsjtu 感谢分享,请问下在of7下同样编译成功,但运行Rotex -latestTime会出现这种报错是什么原因呢
-
@lizhisongsjtu 又测试了一下,似乎对于blockMesh生成的网格都不会出问题,SHM生成的网格有一定程度会出问题,然后pointwise生成的网格就都会出问题报这种错误
-
@BznW 在 请教:第三代涡识别方法Liutex的代码在linux中运行的问题 中说:
@lizhisongsjtu 感谢分享,请问下在of7下同样编译成功,但运行Rotex -latestTime会出现这种报错是什么原因呢
遇到同样的问题,blockMesh 生成的结构化网格。李老师和 lizhisongsjtu 程序在 Openfoam v9 和v2212下编译使用,都会浮点溢出。
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create mesh for time = 0.0012 Time = 0.0012 Reading U #0 Foam::error::printStack(Foam::Ostream&) at ??:? #1 Foam::sigFpe::sigHandler(int) at ??:? #2 ? in "/lib/x86_64-linux-gnu/libc.so.6" #3 ? in "/home/scramjetfoam/OpenFOAM/scramjetfoam-9/platforms/linux64GccDPInt32Opt/bin/Rotex" #4 ? in "/lib/x86_64-linux-gnu/libc.so.6" #5 __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6" #6 ? in "/home/scramjetfoam/OpenFOAM/scramjetfoam-9/platforms/linux64GccDPInt32Opt/bin/Rotex" Floating point exception
-
回复一下Liutex使用效果和使用报错的反馈:
-
关于Liutex识别的涡结构:在类似澡盆涡这样的旋转流动里,Liutex的方法确实会有(或者近似会有)阈值独立的涡结构,近似阈值独立的涡结构,lambda2方法、Q方法,都不存在阈值独立的涡结构。
-
关于报错:本人使用平台是of2206和of2306,而且流场本身的旋转占优。对剪切流动的效果,本人没有验证。关于浮点溢出,大概率是除数接近0,用户可以自行debug。
如上!
-
-
@lizhisongsjtu 我看那行看了半天没反应过来(scalar,scalar)是干什么的