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. python进行OpenFOAM流场后处理

python进行OpenFOAM流场后处理

已定时 已固定 已锁定 已移动 OpenFOAM
39 帖子 8 发布者 26.7k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 田畔的风田 离线
    田畔的风田 离线
    田畔的风 神
    在 中回复了 尚善若水 最后由 编辑
    #21

    @尚善若水 没能理解你的第二个问题

    尚 1 条回复 最后回复
  • 尚 在线
    尚 在线
    尚善若水
    在 中回复了 田畔的风 最后由 编辑
    #22

    @田畔的风 比如我画出的了OH云图,但是我同时想在其上面绘制当量混合分数Zmix=constant这条线。

    田畔的风田 1 条回复 最后回复
  • 田畔的风田 离线
    田畔的风田 离线
    田畔的风 神
    在 中回复了 尚善若水 最后由 编辑
    #23

    @尚善若水 画单纯的等值线可以参考 https://matplotlib.org/3.1.1/gallery/images_contours_and_fields/tricontour_smooth_delaunay.html#sphx-glr-gallery-images-contours-and-fields-tricontour-smooth-delaunay-py

    尚 1 条回复 最后回复
  • 尚 在线
    尚 在线
    尚善若水
    在 中回复了 田畔的风 最后由 编辑
    #24

    @田畔的风 好的,谢谢。

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

    :146: :146: :146: :146:

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

    1 条回复 最后回复
  • F 离线
    F 离线
    fangyuanaza
    在 中回复了 田畔的风 最后由 编辑
    #26

    @田畔的风 这个流场图真的很漂亮。请教一下老师,我的网格是O型+H型,Fortran代码算的,能导入paraView。想请教一下,这种情况如何导入到python画图呢?如果直接用contourf 或者tricontourf都会导致网格变形。比如在paraview中为:
    Screen Shot 2023-01-08 at 17.25.37.png
    在python中直接
    ax1.tricontourf(x,y, u,linewidth=0.25, levels=levels,cmap='coolwarm',vmin=0, vmax=1),显示出来为:
    Screen Shot 2023-01-08 at 17.32.09.png
    造成的原因可能是因为您说的Matplotlib只能处理三角形的网格。想请问在不清楚网格具体信息的情况下,能不能从paraview导出成三角网格?尝试过您代码中的Slice,但由于本身是2D,不能切片。请问有什么建议么?

    1 条回复 最后回复
  • 田畔的风田 离线
    田畔的风田 离线
    田畔的风 神
    写于 最后由 编辑
    #27

    我不太清楚你表述的网格扭曲是什么意思,如果只是纵横比不正确的话,可以使用set_aspect进行调整。比如我上面代码段中的ax.set_aspect('equal'),表示x轴和y轴始终保持1:1的比例。

    F 1 条回复 最后回复
  • F 离线
    F 离线
    fangyuanaza
    在 中回复了 田畔的风 最后由 编辑
    #28

    @田畔的风 感谢您的回复~

    不是纵横比的问题,调整纵横比之后:
    Screen Shot 2023-01-08 at 18.57.30.png

    而是因为计算域边界是曲线,当调用tricontourf时,在一个矩形域内进行了插值,导致边界变形,成了直线。同理,用contourf时,首先需要对mesh进行插值,也会有同样的问题。

    这个问题已经解决了,对于计算域的两个block, 分开处理。先reshapre到对应的block网格,然后用contourf来画。可以得到物理量的云图。

    1 条回复 最后回复
  • Y 离线
    Y 离线
    yuhxFoamer
    在 中回复了 田畔的风 最后由 编辑
    #29

    @田畔的风
    感谢老师分享非常实用的代码,本人也是初次使用pvpython处理数据,请问老师一个简单的问题,当我运行您的程序时,出现了以下的错误,我想这个错误应该是非常常见的,但是目前我尝试的方法有:1 重新install pathlib(用pipe 和 conda都试过) 2. 更新python的版本,这两个方法都没有将此错误排除,求问老师有没有其他方法?

    Traceback (most recent call last):
      File "./readData.py", line 3, in <module>
        from pathlib import Path
    ImportError: No module named pathlib
    
    田畔的风田 1 条回复 最后回复
  • 田畔的风田 离线
    田畔的风田 离线
    田畔的风 神
    在 中回复了 yuhxFoamer 最后由 田畔的风 编辑
    #30

    @yuhxfoamer

    1. 首先pathlib这个模块在最终的代码中并没有被使用到,所以你可以将这个模块和对应的代码移除,这并不会影响代码运行结果。
    2. 然后谈谈你这个报错。readData.py这个文件是用pvpython执行的,这个python解释器是paraview自带的,对应的第三方库也是在安装paraview时配置好的,所以错误来源于你的paraview附带的pvpython解释器(可能是安装问题,可能是系统环境问题,也可能是软件版本问题,请自行排查),和系统python解释器无关。你使用pip和conda只是在安装你系统python解释器的第三方库。
    3. 尽管最终版本这个模块被弃用,不过这里再补充一下:pathlib在本代码中的用途是创建空文件夹(pathlib.Path),在上面的讨论中也提到了,因此可以使用os.mkdir替代。
    1 条回复 最后回复
  • 知 离线
    知 离线
    知行
    在 中回复了 落花风 最后由 编辑
    #31

    @落花风 老师您好,请问下您是怎么安装的 paraview包呢,我在pypi里面没有发现这个包唉.非常感谢您.

    收敛收敛

    落 1 条回复 最后回复
  • 落 离线
    落 离线
    落花风
    在 中回复了 知行 最后由 编辑
    #32

    @知行 是的,好像并没有这个包。我是在paraview绿色版里找到python的相关包,直接复制过去的

    1 条回复 最后回复
  • 知 离线
    知 离线
    知行
    写于 最后由 编辑
    #33

    非常感谢

    收敛收敛

    1 条回复 最后回复
  • 尚 在线
    尚 在线
    尚善若水
    在 中回复了 田畔的风 最后由 尚善若水 编辑
    #34

    @田畔的风 尝试在wsl下的Ubuntu中使用代码,可以顺利写出,如下:
    b819f990-94c3-456e-a92b-4d555124508c-截图_20231102005742.png
    但是meshio读取时出现问题。如下:
    27f5bdbe-6c0a-404c-80fc-79a4b26acc4e-截图_20231102005828.png
    读取代码
    b34c2ef8-8e78-43a8-8a99-a98af568a04c-截图_20231102005922.png
    请问是什么原因呢?

    田畔的风田 1 条回复 最后回复
  • 田畔的风田 离线
    田畔的风田 离线
    田畔的风 神
    在 中回复了 尚善若水 最后由 编辑
    #35

    @尚善若水 是不是有多边形网格?先尝试打开切片三角化吧

    尚 2 条回复 最后回复
  • 尚 在线
    尚 在线
    尚善若水
    在 中回复了 田畔的风 最后由 编辑
    #36

    @田畔的风 是用blockMesh生成的三维的结构化网格,不过射流出口做了类似处理:
    57e64bd7-1f38-4a4c-88de-1aa9748ed009-截图_20231102111234.png
    设置 Triangulatetheslice=True 可以正常读取了,但是这里的代码应该怎么修改呢?直接注释并取消相应参数不行。
    0fd45571-f1b8-4db6-8a3e-2d1c9c903546-截图_20231102111532.png

    1 条回复 最后回复
  • 尚 在线
    尚 在线
    尚善若水
    在 中回复了 田畔的风 最后由 尚善若水 编辑
    #37

    @田畔的风 再次尝试之后(将三角化代码全部注释掉),可以输出了,但显示还是不正确

    triang = tri.Triangulation(mesh.points[:, 0], mesh.points[:, 1])
    tpc = ax.tricontourf(triang, postData, cmap='jet', levels=16)
    

    60f48d55-6878-45d3-b385-236a43a0c298-截图_20231102130509.png
    正确结果
    0073e020-d8df-43fb-b957-d0cd5727aec5-截图_20231102130620.png

    田畔的风田 1 条回复 最后回复
  • 田畔的风田 离线
    田畔的风田 离线
    田畔的风 神
    在 中回复了 尚善若水 最后由 编辑
    #38

    @尚善若水 很显然你并没能成功构建matplotlib所定义的三角网格单元,可以看看我在13楼中针对cell变量的定义。直接用三角网格数据绘图的话,此处你直接设定cell = mesh.cells[0].data应该就行(我现在没电脑,无法验证)。

    不正确设定cell和node的对应关系的话,tri.Triangulation会根据你输入的点集进行自动Delaunay三角化,造成你所描述的绘制错误。

    尚 1 条回复 最后回复
  • 尚 在线
    尚 在线
    尚善若水
    在 中回复了 田畔的风 最后由 编辑
    #39

    @田畔的风 是的,感谢大佬,果然可以了。得抓紧学python了,批量后处理急需。
    bf4b5b57-9231-415f-b4a7-970bce7e09e5-截图_20231102134831.png

    1 条回复 最后回复

  • 登录

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