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.8k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    写于 最后由 编辑
    #4

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

    然后发现算的很慢,256³的网格算了半个月都没有算出一个时间步文件!

    这只是一个后处理程序,我这面3300万网格,算出来了Q应该在分钟级别,你那面是不是操作不对。

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

    yfleungY 1 条回复 最后回复
  • yfleungY 离线
    yfleungY 离线
    yfleung
    在 中回复了 李东岳 最后由 编辑
    #5

    @东岳 我检查了一下,程序可以并行了。程序应该是没有问题的。我算了一个64³网格的,大概15s出一个文件夹的数据。但是256³的算了一天还是没有出一个。我发现我并行之后只有一个结点是有负载的,其他好像没有起作用?想请教一下,有人知道可能原因吗?fff.png

    1 条回复 最后回复
  • yfleungY 离线
    yfleungY 离线
    yfleung
    在 中回复了 bestucan 最后由 编辑
    #6

    @bestucan 谢谢,应该不是程序的问题。现在可以并行了,但是发现并行之后好像只有一个结点起作用的。:143: fff.png

    bestucanB 1 条回复 最后回复
  • bestucanB 离线
    bestucanB 离线
    bestucan 版主 大神
    在 中回复了 yfleung 最后由 编辑
    #7

    @yfleung 呃,那就看看$64^3$网格的时候用几个节点呀。一个节点基本就是一个主机了。大机器不是很重的任务分一个节点也差不多了。

    看64分到几个节点,如果也是一个呢。

    调试阶段还是时间步越小越好。确定正常工作了再调大:xiezuoye:

    滚来滚去……~(~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 条回复 最后回复
  • 荷 离线
    荷 离线
    荷兰后腰阿贾克斯
    写于 最后由 编辑
    #8

    @yfleung 请问是编译完成了把exe拷贝到case目录下直接运行就可以吗?不知道是不是版本太新了ReadingU之后直接崩溃了(Uheader已经改过来了)
    r.png

    五好青年五 1 条回复 最后回复
  • 五好青年五 离线
    五好青年五 离线
    五好青年
    在 中回复了 荷兰后腰阿贾克斯 最后由 编辑
    #9

    @荷兰后腰阿贾克斯 exe拷贝到case目录下直接运行???

    I am a CFD machine with no emotions.

    1 条回复 最后回复
  • 五好青年五 离线
    五好青年五 离线
    五好青年
    写于 最后由 编辑
    #10

    您好,请问怎么解决的呢?
    我用Liutex后处理1万网格,大概20s出一个时间序列文件夹。
    处理400万网格,2天了一个时间结果都没出来,一直在下面的界面,我用3台电脑同时尝试,结果都是这样。
    请问楼主怎么解决的呢
    af724fdd-7fab-41b4-9182-39aebe07c4fb-image.png

    I am a CFD machine with no emotions.

    李东岳李 1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    在 中回复了 五好青年 最后由 编辑
    #11

    应该是算法上本身在处理某种计算 看看公式 看看那部分处理比较耗时间

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

    五好青年五 2 条回复 最后回复
  • 五好青年五 离线
    五好青年五 离线
    五好青年
    在 中回复了 李东岳 最后由 编辑
    #12

    @yfleung @荷兰后腰阿贾克斯 @波流力
    请问你们的Liutex,后处理一个时间文件夹,大概多久呢?

    I am a CFD machine with no emotions.

    1 条回复 最后回复
  • 五好青年五 离线
    五好青年五 离线
    五好青年
    在 中回复了 李东岳 最后由 编辑
    #13

    @李东岳
    但是别人文献说,这个就是个后处理。计算速度和使用方法类似OpenFOAM自带的Q和Vorticity。
    但是目前网上开源的那个代码,就是遇到网格50万以上,运行2天没反应。
    东岳老师,能帮忙看下代码,提示下可能是代码哪里问题吗?
    感谢!

    I am a CFD machine with no emotions.

    李东岳李 1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    在 中回复了 五好青年 最后由 编辑
    #14

    @五好青年 http://www.jhydrodynamics.com/en/download-of-liutex-code/

    是这个代码么?我对liutex的计算方法不熟悉。但肯定是代码里面什么地方某个算法卡住了。

    1. 这种期刊的代码可以直接找通讯作者交流类似的技术问题。

    2. https://www.cfd-china.com/topic/3499 在这里面有一个获取某个函数的计算时间,你可以放在代码里面看看哪里的计算时间比较长,卡在哪里了。

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

    五好青年五 1 条回复 最后回复
  • 五好青年五 离线
    五好青年五 离线
    五好青年
    在 中回复了 李东岳 最后由 编辑
    #15

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

    计算时间

    谢谢东岳老师

    I am a CFD machine with no emotions.

    李东岳李 1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    在 中回复了 五好青年 最后由 编辑
    #16

    @五好青年 我把这个帖子发到刘老师那面有个群里面去了,但目前没啥反馈。你这面有啥结果,告诉我。搞不定的话,我给你调试。

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

    五好青年五 1 条回复 最后回复
  • 五好青年五 离线
    五好青年五 离线
    五好青年
    在 中回复了 李东岳 最后由 编辑
    #17

    @李东岳
    目前我将cavity算例改成三维,三个方向网格相同,试算了后进行Liutex后处理。记录如下:
    30^3网格 单核,Liutex处理时间:4s
    35^3网格 单核,Liutex处理时间:14s
    40^3网格 单核,Liutex处理时间:60s
    45^3网格 单核,单核,Liutex处理时间:131s
    50^3网格 Liutex处理时间:327s
    55^3网格 单核,浮点溢出
    58^3网格 单核,浮点溢出
    60^3网格 单核,浮点溢出
    70^3网格 单核,浮点溢出
    80^3网格 4核并行后处理,报错

    300万网格以前的算例,扩大机器内存,单核处理3天了,还没出结果

    I am a CFD machine with no emotions.

    李东岳李 1 条回复 最后回复
  • 李东岳李 离线
    李东岳李 离线
    李东岳 管理员
    在 中回复了 五好青年 最后由 李东岳 编辑
    #18

    @五好青年

    #include <chrono>
    
    auto start = std::chrono::steady_clock::now();                                                   
    // Functions here
    auto end = std::chrono::steady_clock::now();                                                     
    auto diff = end - start;
    Info<< "Calculation using " 
        << std::chrono::duration <double, std::milli> (diff).count()                                 
        << " ms" << endl;
    

    你可以用上段代码测试哪个函数运行时间比较长

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

    1 条回复 最后回复
  • yhdthuY 离线
    yhdthuY 离线
    yhdthu 大神
    在 中回复了 yfleung 最后由 编辑
    #19

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

    长风破浪会有时,直挂云帆济沧海

    五好青年五 李东岳李 C 4 条回复 最后回复
  • 五好青年五 离线
    五好青年五 离线
    五好青年
    在 中回复了 yhdthu 最后由 编辑
    #20

    @yhdthu
    谢谢海东博士,请问您这个是在OpenFOAM的哪个版本实现的呢?

    I am a CFD machine with no emotions.

    五好青年五 1 条回复 最后回复
  • 五好青年五 离线
    五好青年五 离线
    五好青年
    在 中回复了 五好青年 最后由 编辑
    #21

    已测试,OpenFOAM-2006以上版本
    感谢

    I am a CFD machine with no emotions.

    1 条回复 最后回复
  • 五好青年五 离线
    五好青年五 离线
    五好青年
    在 中回复了 yhdthu 最后由 编辑
    #22

    @yhdthu
    您好
    我尝试往OF官网版本上移植,提示了一些报错,主要有:error: ‘complex’ was not declared in this scope
    经过很久的折腾,发现您可能参考tensor.C文件来修改的,并且我对比了OpenFOAM低版本的tensor.C来逐个修改报错,但是始终没能解决。
    可否帮忙帮忙编一个低版本的,或者给一些修改的思路
    感谢

    dyfluid@dyfluid:~/postVersion$ wclean
    dyfluid@dyfluid:~/postVersion$ wmake
    Making dependency list for source file Liutex.C
    SOURCE=Liutex.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-100 -I/home/dyfluid/OpenFOAM/OpenFOAM-2.4.x/src/finiteVolume/lnInclude -I/home/dyfluid/OpenFOAM/OpenFOAM-2.4.x/src/meshTools/lnInclude -IlnInclude -I. -I/home/dyfluid/OpenFOAM/OpenFOAM-2.4.x/src/OpenFOAM/lnInclude -I/home/dyfluid/OpenFOAM/OpenFOAM-2.4.x/src/OSspecific/POSIX/lnInclude   -fPIC -c $SOURCE -o Make/linux64GccDPOpt/Liutex.o
    Liutex.C: In function ‘Foam::vector getZdEVec(const tensor&)’:
    Liutex.C:44:18: error: ‘complex’ was not declared in this scope
         const Vector<complex> EVals(eigenValues(T));
                      ^
    Liutex.C:44:25: error: template argument 1 is invalid
         const Vector<complex> EVals(eigenValues(T));
                             ^
    Liutex.C:44:47: error: cannot convert ‘Foam::vector {aka Foam::Vector<double>}’ to ‘const int’ in initialization
         const Vector<complex> EVals(eigenValues(T));
                                                   ^
    Liutex.C:46:25: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Cmpt> class Foam::Vector’
         const Vector<complex> standardBasis1(Zero, pTraits<complex>::one, Zero);
                             ^
    Liutex.C:46:25: note:   expected a type, got ‘complex’
    Liutex.C:46:42: error: ‘Zero’ was not declared in this scope
         const Vector<complex> standardBasis1(Zero, pTraits<complex>::one, Zero);
                                              ^
    Liutex.C:46:63: error: type/value mismatch at argument 1 in template parameter list for ‘template<class PrimitiveType> class Foam::pTraits’
         const Vector<complex> standardBasis1(Zero, pTraits<complex>::one, Zero);
                                                                   ^
    Liutex.C:46:63: note:   expected a type, got ‘complex’
    Liutex.C:46:75: error: expression list treated as compound expression in initializer [-fpermissive]
         const Vector<complex> standardBasis1(Zero, pTraits<complex>::one, Zero);
                                                                               ^
    Liutex.C:47:25: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Cmpt> class Foam::Vector’
         const Vector<complex> standardBasis2(Zero, Zero, pTraits<complex>::one);
                             ^
    Liutex.C:47:25: note:   expected a type, got ‘complex’
    Liutex.C:47:69: error: type/value mismatch at argument 1 in template parameter list for ‘template<class PrimitiveType> class Foam::pTraits’
         const Vector<complex> standardBasis2(Zero, Zero, pTraits<complex>::one);
                                                                         ^
    Liutex.C:47:69: note:   expected a type, got ‘complex’
    Liutex.C:47:75: error: expression list treated as compound expression in initializer [-fpermissive]
         const Vector<complex> standardBasis2(Zero, Zero, pTraits<complex>::one);
                                                                               ^
    Liutex.C:48:25: error: type/value mismatch at argument 1 in template parameter list for ‘template<class Cmpt> class Foam::Vector’
         const Vector<complex> EVec
                             ^
    Liutex.C:48:25: note:   expected a type, got ‘complex’
    Liutex.C:50:30: error: request for member ‘x’ in ‘EVals’, which is of non-class type ‘const int’
             eigenVector(T, EVals.x(), standardBasis1, standardBasis2)
                                  ^
    Liutex.C:53:23: error: request for member ‘x’ in ‘EVec’, which is of non-class type ‘const int’
         vector EVecR(EVec.x().real(), EVec.y().real(), EVec.z().real());
                           ^
    Liutex.C:53:40: error: request for member ‘y’ in ‘EVec’, which is of non-class type ‘const int’
         vector EVecR(EVec.x().real(), EVec.y().real(), EVec.z().real());
                                            ^
    Liutex.C:53:57: error: request for member ‘z’ in ‘EVec’, which is of non-class type ‘const int’
         vector EVecR(EVec.x().real(), EVec.y().real(), EVec.z().real());
                                                             ^
    Liutex.C: In function ‘Foam::tensor rotation(const vector&)’:
    Liutex.C:62:14: error: ‘Zero’ was not declared in this scope
         tensor q(Zero); 
                  ^
    Liutex.C: In function ‘Foam::vector liutex(const tensor&, const vector&)’:
    Liutex.C:100:19: error: ‘Zero’ was not declared in this scope
         vector liutex(Zero);
                       ^
    Liutex.C: In function ‘int main(int, char**)’:
    Liutex.C:156:48: error: ‘Zero’ was not declared in this scope
                 dimensionedVector("zero", dimless, Zero)
                                                    ^
    Liutex.C:158:39: error: ‘Foam::volVectorField {aka class Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>}’ has no member named ‘primitiveFieldRef’
             vectorField& iLiutex = Liutex.primitiveFieldRef();
                                           ^
    Liutex.C:174:43: error: ‘Foam::volTensorField {aka class Foam::GeometricField<Foam::Tensor<double>, Foam::fvPatchField, Foam::volMesh>}’ has no member named ‘primitiveField’
             const tensorField& iGradU = gradU.primitiveField();
                                               ^
    Liutex.dep:674: recipe for target 'Make/linux64GccDPOpt/Liutex.o' failed
    make: *** [Make/linux64GccDPOpt/Liutex.o] Error 1
    dyfluid@dyfluid:~/postVersion$ 
    
    
    

    I am a CFD machine with no emotions.

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

    @yhdthu 你写的看起来比期刊上的那个neat很多:146:

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

    五好青年五 1 条回复 最后回复

  • 登录

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