吾生有涯 学海无涯
析模有界 知识无界

PhiFlow:一个开源的流体求解器

内容纲要

最近在关注深度学习与流体仿真方面的内容,发现了一个挺有意思的开源CFD求解器:PhiFlow。

PhiFlow的github地址:https://github.com/tum-pbs/PhiFlow

1 简介

下面是PhiFlow的官方介绍:

PhiFlow是一个为优化和机器学习应用程序构建的开源仿真工具包,其主要采用Python编写,可以与NumPy、PyTorch、Jax或TensorFlow一起使用。与这些机器学习框架的紧密集成使PhiFlow能够利用其自动微分功能,从而能轻松构建涉及学习模型与物理模拟的端到端可微分函数。

程序功能特点:

  • 内置各种PDE操作,专注于流体现象,并允许简化模拟公式。
  • 与PyTorch、Jax和TensorFlow紧密集成,能够通过可在GPU上运行的完全可微分模拟进行神经网络训练。
  • 具有灵活、易于使用的web界面,包含实时可视化和交互式控件,可以实时影响模拟或网络训练。
  • 面向对象、矢量化设计,用于表达代码、易用性、灵活性和可扩展性。
  • 可重用的模拟代码,独立于后端和维度,即完全相同的代码可以使用NumPy运行2D流体模拟,并使用TensorFlow或PyTorch在GPU上运行3D流体模拟。
  • 具有自动稀疏矩阵生成功能的高级线性方程求解器。

2 安装及使用

建议在anaconda下安装。软件可以使用pip进行安装:

pip install phiflow dash

除PhiFlow之外,若要启用机器学习功能及GPU计算,还需要安装PyTorch、TensorFlow或Jax。

安装完毕后,可以在Python中输入下面的代码:

from phi.flow import *
phi.verify()

若输出如下图所示,则表示安装成功。

注意:这里pytorch、Jax或TensorFlow只需要任意安装其中一个即可。

3 一个有意思的例子

官方提供的案例。

输入下面的python代码。

from phi.flow import *

smoke = CenteredGrid(0, extrapolation.BOUNDARY, x=32, y=40, bounds=Box(x=32, y=40))
velocity = StaggeredGrid(0, extrapolation.ZERO, x=32, y=40, bounds=Box(x=32, y=40))
INFLOW_LOCATION = tensor([(4, 5), (8, 5), (12, 5), (16, 5)], batch('inflow_loc'), channel(vector='x,y'))
INFLOW = 0.6 * CenteredGrid(Sphere(center=INFLOW_LOCATION, radius=3), extrapolation.BOUNDARY, x=32, y=40, bounds=Box(x=32, y=40))

smoke += INFLOW
trajectory = [smoke]

for i in range(20):
print(i, end=' ')
smoke = advect.mac_cormack(smoke, velocity, dt=1) + INFLOW
buoyancy_force = smoke * (0, 0.5) @ velocity
velocity = advect.semi_lagrangian(velocity, velocity, dt=1) + buoyancy_force
velocity, _ = fluid.make_incompressible(velocity)
trajectory.append(smoke)
trajectory = field.stack(trajectory, batch('time'))
vis.plot(trajectory, animate='time')

输出如下所示。

后处理渣渣。不过最大的优点是计算速度飞快,用来做DL与CFD耦合的测试求解器相当不错,更何况官方宣称其能与当前主流DL框架(如pytorch、tensorflow、jax等)无缝集成呢。

国人啥时候也能整点儿好玩儿的开源求解器耍耍呢~


(完)

本篇文章来源于微信公众号: CFD之道

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《PhiFlow:一个开源的流体求解器》
文章链接:https://www.topcfd.cn/22850/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册