首页/文章/ 详情

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

2年前浏览3243

最近在关注深度学习与流体仿真方面的内容,发现了一个挺有意思的开源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之道
python
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2022-11-01
最近编辑:2年前
CFD之道
博士 | 教师 探讨CFD职场生活,闲谈CFD里外
获赞 2556粉丝 11194文章 726课程 27
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈