Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 请教:第三代涡识别方法Liutex的代码在linux中运行的问题

请教:第三代涡识别方法Liutex的代码在linux中运行的问题

已定时 已固定 已锁定 已移动 OpenFOAM
66 帖子 15 发布者 79.7k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 尚 在线
    尚 在线
    尚善若水
    在 中回复了 五好青年 最后由 编辑
    #31

    @五好青年 再次来打扰下 seeeeeeeeeeer 老师,没 google到 fortran 代码,可以给我贴一个吗?感谢。

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 bestucan 最后由 李东岳 编辑
    #32

    @bestucan 确实,这个大佬竟然等了半个月。。。是不是家里服务器太多了,有一个算例跑起来忘了,半个月之后才想起来,发现还在算Rotex!

    之前不是说有个土豪车太多了,扔某个车库一个玛莎拉蒂,几年之后才想起来,车上已经一层灰。

    256³的网格算了半个月都没有算出一个时间步文件!

    :xiezuoye:

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    bestucanB 1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 李东岳 最后由 编辑
    #33

    @李东岳 佛系计算,不给服务器压力,不push
    :shangxue:

    滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

    异步沟通方式(《posting style》from wiki)(下载后打开):
    https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
    提问的智慧(github在gitee的镜像):
    https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way

    李东岳李 1 条回复 最后回复
  • C 离线
    C 离线
    coolhhh 神
    在 中回复了 yhdthu 最后由 编辑
    #34

    @yhdthu 在 请教:第三代涡识别方法Liutex的代码在linux中运行的问题 中说:

    @yfleung jhd上的代码有bug,且效率低,我自己重写可用。
    https://cloud.tsinghua.edu.cn/d/05b0149e37904e7ca61c/

    你好,这个下载地址已经失效了,能否再提供一下吗,非常感谢

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 bestucan 最后由 编辑
    #35

    @bestucan 想当年2021年这个时候,我还在计算LES。3台服务器,每个64核心每个跑一个算例。600万网格也是算了半个月,每个算了1000秒。现在俺手握800核,LES跑的很血腥,3000万网格跑的跟单相流一样。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    bestucanB 1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 李东岳 最后由 编辑
    #36

    @李东岳 摩尔定律之东岳流体分律:146:

    滚来滚去……~(~o ̄▽ ̄)~o 滚来滚去都不能让大家看出来我不是老师么 O_o

    异步沟通方式(《posting style》from wiki)(下载后打开):
    https://www.jianguoyun.com/p/Dc52X2sQsLv2BRiqnKYD
    提问的智慧(github在gitee的镜像):
    https://gitee.com/bestucan/How-To-Ask-Questions-The-Smart-Way

    1 条回复 最后回复
  • C 离线
    C 离线
    coolhhh 神
    写于 最后由 李东岳 编辑
    #37

    @李东岳

    1、李老师,我用OpenFOAM-8编译了这个程序,编译过程提示有一些未使用变量,但能正常编译。

    Making dependency list for source file Rotex.C
    g++ -std=c++11 -m64 -Dlinux64 -DWM_ARCH_OPTION=64 -DWM_DP -DWM_LABEL_SIZE=32 -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof -Wno-attributes -O3  -DNoRepository -ftemplate-depth-100 -I/home/install/OpenFOAM/OpenFOAM-8/src/finiteVolume/lnInclude -I/home/install/OpenFOAM/OpenFOAM-8/src/meshTools/lnInclude -IlnInclude -I. -I/home/install/OpenFOAM/OpenFOAM-8/src/OpenFOAM/lnInclude -I/home/install/OpenFOAM/OpenFOAM-8/src/OSspecific/POSIX/lnInclude   -fPIC -c Rotex.C -o Make/linux64GccDPInt32Opt/Rotex.o
    Rotex.C: In function \u2018int main(int, char**)\u2019:
    Rotex.C:153:20: warning: unused variable \u2018eig1c_r\u2019 [-Wunused-variable]
      153 |             scalar eig1c_r=-0.5*(aaaa+bbbb)-aa/3.0;
          |                    ^~~~~~~
    Rotex.C:154:20: warning: unused variable \u2018eig1c_i\u2019 [-Wunused-variable]
      154 |             scalar eig1c_i=0.5*Foam::sqrt(scalar(3.0))*(aaaa-bbbb);
          |                    ^~~~~~~
    Rotex.C:155:20: warning: unused variable \u2018eig2c_r\u2019 [-Wunused-variable]
      155 |             scalar eig2c_r=-0.5*(aaaa+bbbb)-aa/3.0;
          |                    ^~~~~~~
    Rotex.C:156:20: warning: unused variable \u2018eig2c_i\u2019 [-Wunused-variable]
      156 |             scalar eig2c_i=-0.5*Foam::sqrt(scalar(3.0))*(aaaa-bbbb);
          |                    ^~~~~~~
    g++ -std=c++11 -m64 -Dlinux64 -DWM_ARCH_OPTION=64 -DWM_DP -DWM_LABEL_SIZE=32 -Wall -Wextra -Wold-style-cast -Wnon-virtual-dtor -Wno-unused-parameter -Wno-invalid-offsetof -Wno-attributes -O3  -DNoRepository -ftemplate-depth-100 -I/home/install/OpenFOAM/OpenFOAM-8/src/finiteVolume/lnInclude -I/home/install/OpenFOAM/OpenFOAM-8/src/meshTools/lnInclude -IlnInclude -I. -I/home/install/OpenFOAM/OpenFOAM-8/src/OpenFOAM/lnInclude -I/home/install/OpenFOAM/OpenFOAM-8/src/OSspecific/POSIX/lnInclude   -fPIC -fuse-ld=bfd -Xlinker --add-needed -Xlinker --no-as-needed Make/linux64GccDPInt32Opt/Rotex.o -L/home/install/OpenFOAM/OpenFOAM-8/platforms/linux64GccDPInt32Opt/lib \
        -lfiniteVolume -lfvOptions -lmeshTools -lOpenFOAM -ldl  \
         -lm -o /home/user1/OpenFOAM/user1-8/platforms/linux64GccDPInt32Opt/bin/Rotex
    

    2、提供4个加载CDRFG脉动风的空风洞算例结果下载链接:
    (1)3个算例用snappyHexMesh画的六面体网格,数量分别为9.6w,150w,364w。
    (2)1个算例用fluentmeshing画的poly网格,网格数量为141w
    (3)RotexCase下载链接:
    链接:https://pan.baidu.com/s/1HQZkWVg2-ZKUF8SmqwkwOg
    提取码:fgzl

    3、测试结果
    (1)9.6w SHM网格算例,Rotex用单核、并行都能正常计算,单核40 s,并行20核计算用0.36 s。但用paraview看后处理结果,虽然可以看到Rotex数据,但由于Rotex输出的结果为矢量,画contour图的时候,选项找不到Rotex,但能选择Lambda2和Q画等值面图。
    问题是采用Liutex如何画出三维形状的涡?

    956d8b1e-ae35-46d1-b579-6836a64e5282-image.png
    e1b91d2b-90ec-4750-a131-52223779cb10-image.png

    这是选择Rotex画出来的纵向截面图:
    dc4b6bc1-98d0-4a1f-9ff6-3dc808289546-image.png

    这是选择Q准则画出的涡形状:
    52b8276c-7de4-4959-ad30-950fc71792c5-image.png

    (2)150w SHM网格算例。Rotex并行20核计算用时127 s。

    (3)364w SHM网格算例。Rotex并行20核计算用时1855 s。可以看出运行Rotex随着网格增加,运行时间是非线性增加的。

    (4)141w poly网格算例。Rotex并行20核计算,报错Floating point exception,但运行Lambda2和Q画等值面图,能正常运行。

    Time = 9
        Reading U
    [4] #0  Foam::error::printStack(Foam::Ostream&) at ??:?
    [4] #1  Foam::sigFpe::sigHandler(int) at ??:?
    [4] #2  ? in "/lib64/libc.so.6"
    [4] #3  ? at ??:?
    [4] #4  __libc_start_main in "/lib64/libc.so.6"
    [4] #5  ? at ??:?
    [hpws14:21072] *** Process received signal ***
    [hpws14:21072] Signal: Floating point exception (8)
    [hpws14:21072] Signal code:  (-6)
    [hpws14:21072] Failing at address: 0x3e800005250
    [hpws14:21072] [ 0] /lib64/libc.so.6(+0x36400)[0x7fab592fb400]
    [hpws14:21072] [ 1] /lib64/libc.so.6(gsignal+0x37)[0x7fab592fb387]
    [hpws14:21072] [ 2] /lib64/libc.so.6(+0x36400)[0x7fab592fb400]
    [hpws14:21072] [ 3] Rotex[0x4136e0]
    [hpws14:21072] [ 4] /lib64/libc.so.6(__libc_start_main+0xf5)[0x7fab592e7555]
    [hpws14:21072] [ 5] Rotex[0x4146f0]
    [hpws14:21072] *** End of error message ***
    [9] #0  Foam::error::printStack(Foam::Ostream&) at ??:?
    [9] #1  Foam::sigFpe::sigHandler(int) at ??:?
    [9] #2  ? in "/lib64/libc.so.6"
    [9] #3  ? at ??:?
    [9] #4  __libc_start_main in "/lib64/libc.so.6"
    [9] #5  ? at ??:?
    [hpws14:21077] *** Process received signal ***
    [hpws14:21077] Signal: Floating point exception (8)
    [hpws14:21077] Signal code:  (-6)
    [hpws14:21077] Failing at address: 0x3e800005255
    [hpws14:21077] [ 0] /lib64/libc.so.6(+0x36400)[0x7f02ac8ea400]
    [hpws14:21077] [ 1] /lib64/libc.so.6(gsignal+0x37)[0x7f02ac8ea387]
    [hpws14:21077] [ 2] /lib64/libc.so.6(+0x36400)[0x7f02ac8ea400]
    [hpws14:21077] [ 3] Rotex[0x4136e0]
    [hpws14:21077] [ 4] /lib64/libc.so.6(__libc_start_main+0xf5)[0x7f02ac8d6555]
    [hpws14:21077] [ 5] Rotex[0x4146f0]
    [hpws14:21077] *** End of error message ***
    --------------------------------------------------------------------------
    Primary job  terminated normally, but 1 process returned
    a non-zero exit code. Per user-direction, the job has been aborted.
    --------------------------------------------------------------------------
    [6] #0  Foam::error::printStack(Foam::Ostream&) at ??:?
    [6] #1  Foam::sigFpe::sigHandler(int) at ??:?
    [6] #2  ? in "/lib64/libc.so.6"
    [6] #3  ? at ??:?
    [6] #4  __libc_start_main--------------------------------------------------------------------------
    mpirun noticed that process rank 9 with PID 0 on node hpws14 exited on signal 8 (Floating point exception).
    --------------------------------------------------------------------------
    

    这是poly网格选择Q准则画出的涡形状:
    a0085592-6bfa-475a-b461-d013ad5776af-image.png

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 李东岳 编辑
    #38

    @coolhhh 在 请教:第三代涡识别方法Liutex的代码在linux中运行的问题 中说:

    由于Rotex输出的结果为矢量,画contour图的时候,选项找不到Rotex,但能选择Lambda2和Q画等值面图

    你用calculator做一个计算器,计算Liutex的mag,然后做等值面图可以么。

    这个可能要看一下liutex的sci的定义,看是不是通过这个方法来进行的。

    我下载你150万网格的看下Liutex哪一块最耗费时间。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    C 1 条回复 最后回复
  • C 离线
    C 离线
    coolhhh 神
    在 中回复了 李东岳 最后由 编辑
    #39

    @李东岳 在 请教:第三代涡识别方法Liutex的代码在linux中运行的问题 中说:

    你用calculator做一个计算器,计算Liutex的mag,然后做等值面图可以么。

    这个可能要看一下liutex的sci的定义,看是不是通过这个方法来进行的。

    李老师,我看了刘老师的论文(刘超群, Liutex-涡定义和第三代涡识别方法. 空气动力学学报, 2020. 038(003): 第413-431,478页.),里边提到以下几点:

    1. Liutex算出的是一个矢量,而Q是标量。

    5d860b66-14bf-49ab-8c73-2547e1a70651-image.png
    1ad193a9-7207-46ea-bdd9-31acee6a5d8c-image.png

    2.文章中提到Liutex为基础的几个涡识别方法,其中之一就是可以用计算mag来画等值面,但这个时候又需要指定阈值:
    efc70026-3e7d-4d28-9804-296a780a2ad1-image.png
    4faaa900-519b-44d3-aaf4-6fb5f7f136c1-image.png

    3.用paraview计算9.6w 网格的算例的mag(Rotex),阈值分别取不同结果如下。Liutex采用幅值等值面因此会存在跟用Q准则一样指定阈值的问题,但根据论文意思是此时画出的等值面和Liutex向量线是大致平行的。
    (1)mag(Rotex)=0.1结果
    a3ac9556-a336-42fb-b483-7a11589236d9-image.png
    (2)mag(Rotex)=0.5结果
    db84c537-c5c0-4275-a29d-875f1b454702-image.png
    (3)mag(Rotex)=2结果
    9e3f4558-62ce-42cf-b822-bf1fddf599e4-image.png

    1 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    写于 最后由 编辑
    #40

    我测试了一下,单核计算,对于这个150万网格的算例,每个网格的操作要占用30ms来计算,150万网格就是45000秒。

    因为我对Liutex这个计算过程不熟悉,不清楚这个是否能做简化。

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • R 离线
    R 离线
    RQLI_CFD
    写于 最后由 编辑
    #41

    @尚善若水 请问fortran代码在哪里可以找到呢

    C 1 条回复 最后回复
  • L 离线
    L 离线
    lizhisongsjtu
    在 中回复了 李东岳 最后由 李东岳 编辑
    #42

    @李东岳 近期科研需要,花了两天研究这个程序。没调通,但发现一个bug。

    原始程序142行qq=(Foam::pow(aa,2), 3*bb)/9与《LiutexG涡定义和第三代涡识别方法》中公式12不同。应改为qq=(-Foam::pow(aa,2)+3*bb)/9。

    另外,求具体执行Rotex的命令!

    L M 2 条回复 最后回复
  • L 离线
    L 离线
    lizhisongsjtu
    在 中回复了 lizhisongsjtu 最后由 编辑
    #43

    @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.

    C 1 条回复 最后回复
  • C 离线
    C 离线
    coolhhh 神
    在 中回复了 RQLI_CFD 最后由 编辑
    #44

    @RQLI_CFD 看这篇文章有写《刘超群, Liutex-涡定义和第三代涡识别方法. 空气动力学学报, 2020. 038(003): 第413-431,478页.》,需要按照要求跟刘老师发邮件
    5d6f086f-d33e-413e-aed8-2b16022d07e1-image.png

    1 条回复 最后回复
  • C 离线
    C 离线
    coolhhh 神
    在 中回复了 lizhisongsjtu 最后由 编辑
    #45

    @lizhisongsjtu
    单进程执行

    Rotex -latestTime > log.Rotex-single
    

    并行执行,20改为实际用的线程数

    decomposePar
    mpirun -np 20 Rotex -latestTime -parallel > log.Rotex-parallel
    reconstructPar
    
    L 1 条回复 最后回复
  • L 离线
    L 离线
    lizhisongsjtu
    在 中回复了 coolhhh 最后由 lizhisongsjtu 编辑
    #46

    @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

    李东岳李 R B 3 条回复 最后回复
  • 李东岳李 在线
    李东岳李 在线
    李东岳 管理员
    在 中回复了 lizhisongsjtu 最后由 编辑
    #47

    @lizhisongsjtu

    200万网格,单核6s。

    这个绝对神了!!!属实流弊!

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
  • R 离线
    R 离线
    RQLI_CFD
    在 中回复了 lizhisongsjtu 最后由 编辑
    #48

    @lizhisongsjtu 感觉这个liutex没有那么好啊,我计算的是槽道流,liutex识别的结果很混乱(liutex的等值面),感觉还没Q准则显示的涡结构清晰,但是看刘老师文章里的效果挺好的。。。
    下图是Q准则识别的涡(只显示了下半部分区域),可以看出清晰的流向结构(Q等值由速度染色)
    51373d3f-76b9-4d98-b706-a812a553592f-image.png
    (下图Q等值由温度(这里是被动标量)染色)
    b19be982-7e0e-430b-9d0e-a5b4930cd00f-image.png
    but,liutex等值面画出来就很混乱,我调了一些阈值都不是很好,感觉很混乱,下面是统一阈值的各个角度的liutex等值面,总体感觉就很混乱。
    (下面图liutex等值面都为速度染色)
    f43b1583-2ed7-4c72-8eb9-f368dc52fab2-image.png
    047c445d-799e-4ff3-89da-325660236519-image.png
    f06413a5-2383-49af-abea-0d5a012a8a79-image.png

    PS:之前用omega方法识别涡时也出现了跟liutex等值面差不多的现象,刘老师文章里也提到omega方法是跟阈值关系不大的(优于Q准则),但是在我的槽道流算例里,这两种方法似乎都不如Q准则好,请问大家在进行涡识别时有没有类似的经历,请格外大佬指教。

    L 东方白杨东 2 条回复 最后回复
  • Z 离线
    Z 离线
    zzcfd
    写于 最后由 编辑
    #49

    具体的代码还没有看,我测试了一下程序运行很有效率,但是我想问一下这个magRotex是liutex的等值面么?还是结合了omega的liutex-omega方法呢?

    1 条回复 最后回复
  • B 离线
    B 离线
    BznW
    在 中回复了 lizhisongsjtu 最后由 编辑
    #50

    @lizhisongsjtu 感谢分享,请问下在of7下同样编译成功,但运行Rotex -latestTime会出现这种报错是什么原因呢82ec2cca-7da5-44b9-b931-61307503ac33-image.png

    L 尚 2 条回复 最后回复

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]