AI+Science系列(二):国内首个基于AI框架的CFD工具组件!赛桨v1.0 Beta API介绍以及典型案例分享!
赛桨提供的典型案例包含使用AI方法进行顶盖驱动方腔流(LDC)、达西流、2D&3D圆柱绕流的流场预测及涡激振动(VIV)。所有案例都基于泛化的微分方程、PINNs求解器、控制体、网络定义以及可视化等多种接口。下面我们将详细讲解赛桨PaddleScience v1.0 Beta中提供的计算流体力学案例及科学计算API的功能及使用。
场景案例详解
前言
在航空工程和造船工业中,如飞行器和船舶的外形设计、操控性、稳定性等问题成为流体力学中广泛的研究课题,并促使流体力学得到了很大的发展。 在水利工程中,如大型水利枢纽和水力发电站的设计与建造、洪峰的预报工作、河流泥沙等问题都与流体力学紧密关联。 在动力机械制造工业中,如何提高水力及蒸汽涡轮、喷气发动机、压缩机和水泵等动力机械的性能,与叶片、导流片及其他零件设计形状的正确性有关。
随着工程问题的深入,流体力学已经逐渐与其他学科互相交叉渗透,形成新的交叉学科或边缘科学,如磁流体力学、物理-化学流体力学、生物流变学等等。
围绕不同的流体问题,当前流体力学分析主要基于数值计算。典型的方法有直接数值模拟 (DNS) 、雷诺平均方法 (RANS)、大涡模拟方法 (LES)、分离涡模拟 (DES) 以及格子玻尔兹曼法(LBM)等求解流体本构N-S (Navier-Stokes) 方程。由于物理问题的复杂度,数值方法往往有很多局限性,如计算效率等。PaddleScience的PINNs科学计算求解器,将物理信息融入神经网络,针对流体力学问题提供新的解决思路。本章节中,我们将介绍2D&3D圆柱绕流及涡激振动的案例,展示PaddleScience的基础科研能力。
图2 不可压缩N-S(Navier-Stokes)方程
2D非定常圆柱绕流
图3 Re=100的2D圆柱绕流结果
同时,基于训练完成的模型,利用推理功能,8ms内即可完成百万级空间位置在30个时间步的结果预测,相比于同样网格数量且固定求解配置的OpenFOAM计算过程,速度提升近12000倍,非常利于后期在线评估、优化等工程应用。
案例链接:
https://github.com/PaddlePaddle/PaddleScience/tree/develop/examples/cylinder/2d_unsteady_continuous
3D非定常圆柱绕流
除2D圆柱绕流外,赛桨PaddleScience同时提供3D圆柱绕流案例,基于PINNs方法,求解3D非定常不可压缩Navier-Stokes方程,完成了无模化Re=100的圆柱绕流问题求解。在该问题中,采用OpenFOAM的结果作为基准,选择流场稳定的相对0时刻,并记录有限时间内特定测点的数据。采用离散时间的PINNs神经网络进行训练,其模型数量与所选取的时间步长相关,在t_start至t_end内,定义离散时间步长dt,采用(t_end-t_start)/(T*dt)个模型进行训练,其中T为涡脱周期。对比OpenFOAM的理论值,相对误差在5%以内。x轴上的流场速度变化如下:
案例链接:
涡激振动
涡激振动主要基于试验与深度学习模型结合的方式进行,通过构建风洞试验装备,在第一阶段完成结构刚度、阻尼的预测,在第二阶段则基于得到的结构刚度、阻尼等属性,进行流场重构以及升阻力的预测。过程中基于赛桨提供的泛化PDE接口,对涡激振动中流固耦合方程也重新进行了整合,定义新的网络与求解过程,具体流程如下图所示。
图5 VIV试验及深度学习模型联合验
案例链接:
https://github.com/PaddlePaddle/PaddleScience/tree/develop/examples/fsi
API功能及使用示例
图6 PaddleScience科学计算工具组件设计架构
科学计算问题定义
科学计算问题定义包含三部分:方程定义(PDE)、计算域定义(Geometry)、初边值条件定义(IC/BC)。下图展示了如何定义在一个方形区域内求解二维非定常Navier-Stokes方程问题。具体而言,该问题数学上由(图b) 定义,包含方程、初边值条件及计算域信息,代码上每一条信息由相应接口描述(图a及图c)。图中展示了一部分数学信息和接口的对应关系,该对应关系由同样的颜色方框表示。
本章节将介绍关于科学计算问题定义相关的API。
偏微分方程(PDE)
预置方程接口:方程定义内置在赛桨中,用户直接调用即可,仅需配置相关参数(如维度、物理属性等)。 自定义方程接口:用户使用 Python SymPy 定义自变量、因变量及方程,通过“add_equation”接口将方程加入PDE模块。
如下代码展示如何定义一个非定常N-S方程,以及如何使用连续时间方法和离散时间方法,进行方程离散。仅需通过改变参数 "time_method" 的取值即可选取对应的方法。
计算域(Geometry)
赛桨提供了常用的计算域形状,如立方体、立方体除去圆柱等几何外形,及VTK 可视化支持,同时提供 " add_boundary " 接口定义边界。
初边值条件(IC/BC)
深度学习方法求解模块
网络(Network)
损失函数(Loss)
赛桨提供了灵活的Loss设置方式,允许通过设置独立的权重系数配置多任务Loss (Loss = w_1 * Loss_equation + w_2 * Loss_ic+ w_3 * loss_bc +w_4 * Loss_data)。
优化器(Optimizer)
赛桨支持Adam优化器。
求解器(Solver)及求解模式
求解器提供了控制功能,在训练和推理阶段可以分别使用。
启动自动并行模式
启动动态图/静态图/自动微分模式
下一期我们将对支持PaddleScience的底层框架技术,如自动微分机制、编译器等功能进行详细介绍,敬请期待~
引用:
拓展阅读:
1.《AI+Science系列(一):飞桨加速CFD(计算流体力学)原理与实践》
2.赛桨PaddleScience v1.0 Beta:基于飞桨核心框架的科学计算通用求解器
相关地址:
1.飞桨AI for Science共创计划:
2.飞桨PPISG-Science小组:
https://www.paddlepaddle.org.cn/specialgroupdetail?id=9
关注【飞桨PaddlePaddle】公众号
获取更多技术内容~