当前位置: 首页 > news >正文

AI for Science系列(二):国内首个基于AI框架的CFD工具组件!赛桨v1.0 Beta API介绍以及典型案例分享!

AI for Science被广泛认为是下一代科研范式,可以有效处理多维度、多模态、多场景下的模拟和真实数据,解决复杂推演计算问题,加速新科学问题发现[1] 。百度飞桨科学计算工具组件赛桨PaddleScience是国内首个公开且可应用于CFD(Computational Fluid Dynamics,计算流体力学)领域的工具,提供端到端应用API,致力于解决科学计算类任务。赛桨综合数学计算与物理数据相结合的处理方法,提供物理机理约束的PINNs(Physics Informed Neural Networks 物理信息神经网络)加速求解偏微分方程,解决计算流体力学中的仿真分析。本篇文章将重点介绍赛桨PaddleScience v1.0 Beta的典型案例及API使用示例。

赛桨提供的典型案例包含使用AI方法进行顶盖驱动方腔流(LDC)、达西流、2D&3D圆柱绕流的流场预测及涡激振动(VIV)。所有案例都基于泛化的微分方程、PINNs求解器、控制体、网络定义以及可视化等多种接口。下面我们将详细讲解赛桨PaddleScience v1.0 Beta中提供的计算流体力学案例及科学计算API的功能及使用。
PaddleScience v1.0 Beta产品全景

场景案例详解

前言

在流体领域,流体力学作为比较传统的物理学科,广泛应用于航空航天、船舶工业以及建筑、水利、能源等工程领域。

在航空工程和造船工业中,如飞行器和船舶的外形设计、操控性、稳定性等问题成为流体力学中广泛的研究课题,并促使流体力学得到了很大的发展。

在水利工程中,如大型水利枢纽和水力发电站的设计与建造、洪峰的预报工作、河流泥沙等问题都与流体力学紧密关联。

在动力机械制造工业中,如何提高水力及蒸汽涡轮、喷气发动机、压缩机和水泵等动力机械的性能,与叶片、导流片及其他零件设计形状的正确性有关。

随着工程问题的深入,流体力学已经逐渐与其他学科互相交叉渗透,形成新的交叉学科或边缘科学,如磁流体力学、物理-化学流体力学、生物流变学等等。

围绕不同的流体问题,当前流体力学分析主要基于数值计算。典型的方法有直接数值模拟 (DNS) 、雷诺平均方法 (RANS)、大涡模拟方法 (LES)、分离涡模拟 (DES) 以及格子玻尔兹曼法(LBM)等求解流体本构N-S (Navier-Stokes) 方程。由于物理问题的复杂度,数值方法往往有很多局限性,如计算效率等。PaddleScience的PINNs科学计算求解器,将物理信息融入神经网络,针对流体力学问题提供新的解决思路。本章节中,我们将介绍2D&3D圆柱绕流及涡激振动的案例,展示PaddleScience的基础科研能力。
不可压缩N-S(Navier-Stokes)方程

2D非定常圆柱绕流

圆柱绕流作为经典的CFD问题,在不同的雷诺数下,涡脱落产生的卡门涡街类型不同,是能够综合体现层流、湍流过渡的典型问题。针对该问题,采用PINNs方法,并基于连续时间的2D不可压、非定常NS方程作为约束深度学习神经网络的物理规则,将传统的CFD求解转换为神经网络参数的优化问题。同时,为了加速训练的收敛时间,提高预测精度,采用半监督方式,从开源CFD工具OpenFOAM的结果中记录边界位置处约200个测点在不同时刻的流场信息,与N-S方程、初边值条件等共同形成了网络优化的损失函数。对雷诺数Re=100工况,定义约110W个时空训练点(t, x, y),并采用NVIDIA V100-32G单卡训练约8小时,结果如下图所示。基于PINNs方法构建的网络能够完整的模拟卡门涡的周期性脱落,且预测的流场结果与OpenFOAM相对误差小于5%(除边界层中个别点外),可满足工程需求。
图3 Re=100的2D圆柱绕流结果
(左:OpenFOAM结果,右:PINNs方法结果)

同时,基于训练完成的模型,利用推理功能,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轴上的流场速度变化如下:
3D圆柱绕流x轴流场速度

案例链接:
https://github.com/PaddlePaddle/PaddleScience/tree/develop/examples/cylinder/3d_unsteady_discrete

涡激振动

涡激振动(VIV)是一种典型的流致振动,是流体经过结构后稳定涡脱频率与结构固有频率综合的流固耦合问题。是海洋工程中立管、输油管路等大跨度结构的主要损伤源,但由于结构复杂,无法有效测量刚度、阻尼等本构特征,导致损伤探测及预防难度较大。相比基于PINNs方法实现2D圆柱绕流正问题分析,解决“反问题”是PINNs方法的一个亮点,可通过部分实验数据“逆向”预测流场中结构的刚度、阻尼等本构特征,从而对实际工程中的复杂结构的疲劳损伤及破坏的预测及预防提出指导。

从工程落地的角度,赛桨 PaddleScience 从“半实物仿真”的技术路线出发,构建了涡激振动试验台架以及模型驱动试验装备的电控闭环,创新性地探索并论证深度学习模型与物理装备的虚实结合的技术可行性。

通过对涡激振动开展分阶段分析,首先基于加速度计及激光设备等传感器采集结构振动振幅与结构升力,对系统进行弹簧-振子单自由度等效。基于实测的160组位移及受力数据,训练过程中最小化“振幅”、“升力”、“方程”等共同组成的损失函数。采用V100-16G单卡训练约0.5h,预测结果如下图(右上)。基于PINNs预测的结构振动振幅、结构升力结果与试验数据的相对误差均在2%以内。同时基于“反问题”方式分析得到的结构刚度、阻尼分别为1.092964与4.1e-6,相比真实值1.09与0,相对误差均小于2%。

涡激振动主要基于试验与深度学习模型结合的方式进行,通过构建风洞试验装备,在第一阶段完成结构刚度、阻尼的预测,在第二阶段则基于得到的结构刚度、阻尼等属性,进行流场重构以及升阻力的预测。过程中基于赛桨提供的泛化PDE接口,对涡激振动中流固耦合方程也重新进行了整合,定义新的网络与求解过程,具体流程如下图所示。
VIV试验及深度学习模型联合验

案例链接:
https://github.com/PaddlePaddle/PaddleScience/tree/develop/examples/fsi

API功能及使用示例

上述案例充分利用了赛桨PaddleScience v1.0 Beta提供的API。本部分将着重介绍涉及的主要API接口及使用示例方法。
PaddleScience科学计算工具组件设计架构

科学计算问题定义

科学计算问题定义包含三部分:方程定义(PDE)、计算域定义(Geometry)、初边值条件定义(IC/BC)。下图展示了如何定义在一个方形区域内求解二维非定常Navier-Stokes方程问题。具体而言,该问题数学上由(图b) 定义,包含方程、初边值条件及计算域信息,代码上每一条信息由相应接口描述(图a及图c)。图中展示了一部分数学信息和接口的对应关系,该对应关系由同样的颜色方框表示。
PaddleScience科学计算问题定义

本章节将介绍关于科学计算问题定义相关的API。

偏微分方程(PDE)

赛桨支持调用预置方程接口及自定义方程接口。

**预置方程接口:**方程定义内置在赛桨中,用户直接调用即可,仅需配置相关参数(如维度、物理属性等)。

**自定义方程接口:**用户使用 Python SymPy 定义自变量、因变量及方程,通过“add_equation”接口将方程加入PDE模块。
在这里插入图片描述

对于高维偏微分方程,连续时间方法将时间和空间均视为网络的输入;离散时间方法首先使用数值(隐式)方法对时间离散,得到仅包含空间变量的方程,进而使用PINNs方法求解该方程,3D N-S方程及使用隐式离散方法得到的方程如下,其中 n 时刻的状态(3个方向的速度)已知,求解n+1时刻的状态(3个方向的速度)。
使用隐式方法对时间离散后得到的方程

如下代码展示如何定义一个非定常N-S方程,以及如何使用连续时间方法和离散时间方法,进行方程离散。仅需通过改变参数 “time_method” 的取值即可选取对应的方法。
在这里插入图片描述

计算域(Geometry)

赛桨提供了常用的计算域形状,如立方体、立方体除去圆柱等几何外形,及VTK 可视化支持,同时提供 " add_boundary " 接口定义边界。

图片

初边值条件(IC/BC)
边值条件模块预置了Dirichlet/Neumann/Robin边值条件,仅需定义边值条件,并通过 “set_bc” 接口将其指定到对应边界即可。对于PDE,以类似方式增加了初值条件模块。
图片

深度学习方法求解模块

上一章节介绍了如何使用赛桨定义科学计算问题,本章节继续介绍深度学习方法求解上述科学计算问题所需使用到的模块。

网络(Network)
赛桨支持全连接网络(FC)以及初始化网络权重的接口initialize,支持从文件读取权重进行初始化,以及使用飞桨预置的初始化函数(paddle.nn.initializer)进行初始化。
在这里插入图片描述

损失函数(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]《IDC perspective:AI for Science市场研究》报告正式启动.
https://mp.weixin.qq.com/s/gtEbuSULI5fzCIvbDKhkfA
拓展阅读:
1.《AI+Science系列(一):飞桨加速CFD(计算流体力学)原理与实践》
2.赛桨PaddleScience v1.0 Beta:基于飞桨核心框架的科学计算通用求解器

相关地址:
1.飞桨AI for Science共创计划:
https://www.paddlepaddle.org.cn/science
2.飞桨PPISG-Science小组:
https://www.paddlepaddle.org.cn/specialgroupdetail?id=9

相关文章:

AI for Science系列(二):国内首个基于AI框架的CFD工具组件!赛桨v1.0 Beta API介绍以及典型案例分享!

AI for Science被广泛认为是下一代科研范式,可以有效处理多维度、多模态、多场景下的模拟和真实数据,解决复杂推演计算问题,加速新科学问题发现[1] 。百度飞桨科学计算工具组件赛桨PaddleScience是国内首个公开且可应用于CFD(Comp…...

SpringCloud简单介绍

文章目录1. 开源组件2. CAP原则1. 开源组件 功能springcloud netflixspringcloud alibabaspringcloud官方其他服务注册与发现eurekanacosconsulzookeeper负载均衡ribbondubbo服务调用openFeigndubbo服务容错hystrixsentinel服务网关zuulgateway服务配置的同一管理cofig-server…...

《uniapp基础知识》学习笔记Day38-(Period2)全局文件一些常用的配置

如果进行开发的话,首先要配置路由页面 page.json 页面路由 pages.json 文件用来对 uni-app 进行全局配置,决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar 等。 {"pages": [{"path": "pages/component/index…...

APICloud 弹动与滚轴冲突的解决模拟

当打开页面的bounces开关来实现下拉刷新和上翻加载是,如果页面中有scroll-view,那么手指上下滑动时弹动会触发,而滚轴无法正常实现,只有按住不动再拖动滚轴才会触发。开始想通过获取手指点击屏幕的坐标点设置触发条件来解决两者的…...

Spring Cloud(微服务)学习篇(四)

Spring Cloud(微服务)学习篇(四) 1.nacos实现服务之间传参数 1.1 在dto包(shop-sms-api项目)中创建SmsDTO类 package com.zlz.shop.sms.api.dto;import lombok.Data;Data public class SmsDTO {private String tel; }1.2 复制SmsDTO类到shop-sms-server项目的dto包下面 1.3 …...

【Java Pro】001-Java基础:面向对象

【Java Pro】001-Java基础:面向对象 文章目录【Java Pro】001-Java基础:面向对象一、面向对象1、什么是对象现实生活中的对象与程序中的对象2、什么是面向对象面向过程面向对象3、面向过程与面向对象的比较思想方面设计方式方面实现方式方面4、面向过程与…...

ElasticSearch从0到1——基础知识

1.ES是什么? 是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能&…...

【面试系列】equals和==的区别

问题:两个对象值相同(x.equals(y) true),但是可能存在hashCode不同吗? 的定义 比较的是两个对象的内存地址,相等则意味着内存地址一样。 对象的equals方法 Object#equals public boolean equals(Object obj) {return (this obj);}Stri…...

存在重复元素模块-三道题

文章目录存在重复元素217. 存在重复元素219. 存在重复元素 II220. 存在重复元素 III (SortedList二分)小结存在重复元素 217. 存在重复元素 题目链接:217. 存在重复元素 题目大意:给你一个整数数组 nums 。如果任一值在数组中出…...

3种方法删除7-Zip压缩包的密码

7-Zip压缩软件是一款完全免费且开源的软件,不仅能压缩和解压7-Zip压缩包,还能给压缩包设置打开密码。 有些小伙伴可能会遇到这样的问题,7-Zip压缩包设置密码后,过了一段时间不需要密码保护了,或者一不小心忘记了密码&…...

Codeforces Round 855 (Div. 3)(A~F)

A. Is It a Cat?定义满足条件的字符串为:其中仅可能含有meow四种字母的大小写,而且相同种类的字母必须挨在一起,四种字母的顺序必须按照meow排列。给出一个字母串,求是否满足条件。思路:感觉是个很麻烦的模拟。首先把…...

【SpringCloud】SpringCloud详解之Feign实战

目录前言SpringCloud Feign远程服务调用一.需求二.两个服务的yml配置和访问路径三.使用RestTemplate远程调用(order服务内编写)四.使用Feign远程调用(order服务内配置)五.自定义Feign配置(order服务内配置)六.Feign配置日志(oder服务内配置)七.Feign调优(order服务内配置)八.抽…...

tuts4you上lena‘s40个crackme(1)

本来是不打算写文章了,因为懒,想以后通过录屏的形式保存一下自己学的路程。但奈何开学后一直没找到机会,在宿舍也不愿意大吼大叫的讲东西,只好再写写文章了 最近学了一些汇编语言和逆向工程,所以就想通过这40给题目来看…...

研讨会回顾 | Perforce版本控制工具Helix Core入华十年,携手龙智赋能企业大规模研发

2023年2月28日,龙智联合全球领先的数字资产管理工具厂商Perforce共同举办Perforce on Tour网络研讨会,主题为“赋能‘大’研发,助力‘快’交付”。 作为Perforce Helix Core产品在中国地区的唯一授权合作伙伴,龙智董事长何明女士为…...

C++ vscode 开发环境搭建

C vscode 开发环境搭建 笔记内容: C vscode 开发环境搭建准备了解g命令编译调试掌握使用launch.json和tasks.json配置文件编译调试了解使用cmake构建 git: https://github.com/weichangk/hellocpp/tree/master/vscodecmakecpp 环境搭建准备 安装vscode安装qt&a…...

ANR系列(二)——ANR监听方案之SyncBarrier

前言 在项目中经常遇到了手机假死问题,无规律的偶现问题,大量频繁随机操作后,便会出现假死,整个应用无法操作,不会响应事件,会发生各种奇怪的ANR,且trace不固定。而SyncBarrier是其中的罪魁祸首…...

【完美解决】应用程序无法正常启动(0xc000007b)请单击“确定”关闭应用程序

年期安装CorelDRAW X8 (64-Bit),安装完成之后运行一点毛病都没有,可是过了两三个月,再打开就出现“应用程序无法正常启动(0xc000007b)请单击“确定”关闭应用程序”这个提示框,如下图示 出现这个问题我就上网查找,无非…...

.NET基础加强第二课--静态成员,静态类

类 实例类 默认是实例类 静态类 在类前加上static ,就是静态类 静态类中,所有包含的成员必须是静态成员 实例成员是属于具体某个对象的 举例代码 Person p1 new Person(); p1.Age 20; p1.Name “张三”; class Person { public string Name { get; set;…...

【UML+OOPC嵌入式C语言开发】使用C语言实现一个面向对象语言才能够实现的类

文章目录简述OOPC开发环境知识讲解函数示例类的实现示例接口实现示例(前面两部分有点无聊,如果大家没兴趣看可以直接从知识讲解开始看) 简述OOPC oopc,是一种轻量级的面向对象的C语言编程框架, LW_OOPC是Light-Weight …...

软件测试自动化Java篇【Selenium+Junit 5】

文章目录Selenium环境部署自动化测试例子常见的元素操作窗口等待浏览器的操作弹窗选择器执行脚本文件上传浏览器参数Junit 5导入依赖Junit 4 和 Junit5 注解对比断言测试顺序参数化单参数多参数动态参数测试套件指定类来运行测试用例指定包名来运行包下测试用例Selenium 为什么…...

Clip:学习笔记

Clip 文章目录Clip前言一、原理1.1 摘要1.2 引言1.3 方法1.4 实验1.4.1 zero-shot Transfer1.4.2 PROMPT ENGINEERING AND ENSEMBLING1.5 局限性二、总结前言 阅读论文: Learning Transferable Visual Models From Natural Language Supervision CLIP 论文逐段精读…...

STM32CubexMX与FreeRTOS学习

目录 LED与EXTI配置 基本定时器使用 软件定时器 在HAL库中实现printf 重点--记得自己添加头文件 队列实现 二值信号量实现 计数信号量实现 DMA实现 ADC配置 RTC配置 看门狗 窗口看门狗 FreeRTOS结合MX软件开发,基础配置直接生成,我们只…...

Master Slave 主从同步错误 Slave_IO_Running:NO/Slave_SQL_Running: No

Master Slave 主从同步错误 Slave_IO_Running:NO Slave_SQL_Running:Yes #在Slave库上查看状态 mysql> show slave status\G Slave_IO_Running: No Slave_SQL_Running: Yes #重启master库:service mysqld restart mysql> show master status; ------------…...

JavaScript函数之prototype原型和原型链

文章目录1. 原型2. 显式和隐式原型3. 原型链3.1 访问顺序4. instanceof4.1 如何判断1. 原型 函数的prototype属性 每个函数都有一个prototype属性,它默认指向一个Object空对象(即:原型对象)。原型对象中有一个属性constructor&a…...

从上海分时电价机制调整看转供电用户电能计费

安科瑞 耿敏花2022年12月16日,上海市发改委发布《关于进一步完善我市分时电价机制有关事项的通知》(沪发改价管〔2022〕50号)。通知明确上海分时电价机制,一般工商业及其他两部制、大工业两部制用电夏季(7、8、9月)和冬季&#xf…...

TypeScript类型体操:获取数组中元素对象属性的值作为新类型

title: TypeScript类型体操:获取数组中元素对象属性的值作为新类型 date: 2023-03-03 20:58:24 categories: TypeScript类型体操 tags: TypeScript类型体操TypeScript 首先先说获取数组中元素对象属性的值作为新类型的解决方案 使用 as const 强调不可变数组使用 …...

npm,yarn和pnpm

npm扁平的node_modules结构比如项目依赖了A 和 C,而 A 和 C 依赖了不同版本的 B1.0 和 B2.0,D也依赖B1.0, node_modules 结构如下:node_modules ├── A1.0.0 ├── B1.0.0 └── C1.0.0└── node_modules└── B2.0.0C依赖的B2.0因为版…...

【算法】【数组与矩阵模块】在排好序的矩阵中找数,时间复杂度O(M+N)

目录前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本思考感悟写在最后前言 当前所有算法都使用测试用例运行过,但是不保证100%的测试用例,如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识! 问题介绍 …...

【Java|基础篇】计算机中数据的存储规则

文章目录前言:1.计算机中的数据2.二进制的介绍二进制的运算规则常见的进制3.字符的存储4.汉字的存储5.图片的存储6.音频的存储总结:前言: 本篇文章只是为了科普 计算机中数据的存储规则 1.计算机中的数据 计算机的数据大致分为三类:文本数据,图片和音频 注:视频是图片和音频…...

RestTemplate使用HttpClient连接池

文章目录RestTemplate使用HttpClient连接池ClientHttpRequestFactorySimpleClientHttpRequestFactorySimpleClientHttpRequestFactory 设置超时时间HttpURLConnection的缺点HttpComponentsClientHttpRequestFactoryPoolingHttpClientConnectionManager配置连接池HttpClient总结…...

荣耀手机商城官方网站荣耀60pro/seo公司推广宣传

有一些很古老的教程,一般都是走编译安装路线的,本文是教你不需要编译,而且随时都可以跟随 CentOS 升级 Proftpd 到最新版本,以避免可能的漏洞攻击。利用 Proftpd 现成的配置以及设置好的各种模块,可以实现 sftp 和 ssh…...

以前老网站/长沙网站seo哪家公司好

1.npm install vue-cli -g 全局的 2.vue -V 检查vue版本 3.vue init webpack demo(项目名称) 4.一直回车 eslint test e2e 都不安装 5.npm run dev 6.npm run build 打包发布转载于:https://www.cnblogs.com/rxfn/p/10869444.html...

做网站到底能不能赚钱/销售的技巧与口才

用EditPlus打造你自己的IDE 因为对微软的notepad有点审美疲劳,所以常用EditPlus或UltraEdit32代替之.这两个文本编辑器功能比notepad强太多了.对程序员而言,本文只讲一下他的两个特点,用它来打造我们自己的IDE.希望对大家有用.1.程序高亮显示写程序的人长期处于某种临界状态,用…...

兰考县住房和城乡建设局网站/搜索引擎原理

2019独角兽企业重金招聘Python工程师标准>>> Kafka是什么 Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志…...

文章类型网站/网站seo优化

(1)r分量更大,则为红色 (2)判断深浅: 亮度越亮,则颜色越浅。 if(r*0.299 g*0.578 b*0.114 > T){ //浅色... }else{ //深色... }...

彩票网站怎么做赚钱/百度做网站推广的费用

描述: 最近XX公司举办了一个奇怪的比赛:鸡蛋硬度之王争霸赛。参赛者是来自世 界各地的母鸡,比赛的内容是看谁下的蛋最硬,更奇怪的是XX公司并不使用什么精密仪器来测量蛋的硬度,他们采用了一种最老土的办法--从高度扔鸡…...