学习周报:文献阅读+Fluent案例+有限体积法理论学习

目录

摘要

Abstract

文献阅读:基于物理信息神经网络的稀疏数据油藏模拟

文献摘要

文章讨论|结论

各方程和原理简介

PINN简介

域分解

实验设置

单相油藏问题

油水两相问题

Fluent实例:Y型弯管中的流体混合分析

几何建模部分

网格划分

求解器设置:

有限体积法学习

总结

摘要

  在本周中,通过阅读文献,发现了一种基于域分解来模拟稀疏数据油藏模拟的新PINN架构(PINN-DD),结果表明,在处理有限数据的大规模油藏模拟时,PINN-DD具有优势,并且在这种情况下,它有可能优于传统的pinn。在Fluent中,选用明Y型弯管中的流体混合分析,进行几何划分和设置求解。理论学习方面,对有限体积法的基本原理进行了学习。

Abstract

  This week, I read the literature and discovered a new PINN architecture (PINN-DD) for sparse data reservoir simulation based on domain decomposition, which shows that PINN-DD has advantages when dealing with large-scale reservoir simulations with limited data, and in this case, it has the potential to outperform traditional PINs. In Fluent, I used the fluid mix analysis in the open Y-bend to do the geometry and setup solution. In terms of theoretical study, I learned the basic principles of the finite volume method.

文献阅读:基于物理信息神经网络的稀疏数据油藏模拟

Physics-informed neural network-based petroleum reservoir simulation with sparse data using domain decomposition

文献摘要

    本研究引入了一种名为基于域分解的物理信息神经网络(PINN-DD)的新架构,旨在有效利用井的稀疏生产数据进行大规模系统的油藏模拟。为了利用物理信息神经网络(pinn)处理小规模时空域的能力,同时解决具有稀疏标记数据的大规模系统的挑战,计算域分为两个不同的子域:包含井和无井子域。此外,两个子域和接口受到控制方程、数据匹配和边界条件的严格约束。结果表明,在处理有限数据的大规模油藏模拟时,PINN-DD具有优势,并且在这种情况下,它有可能优于传统的pinn。

文章讨论|结论

  文章提出了一种基于域分解的物理信息神经网络(PINN-DD),即在有限的数据中进行更为精确的大尺度模拟(当培训真实油藏数据缺乏时),通过利用PINN在解决小尺度时空问题中的优势,解决大规模计算领域所带来的挑战。

  这项工作的新颖之处在于:首次将区域分解方法的思想引入到基于物理信息的大规模油藏模拟中。它充分考虑了稀疏数据带来的挑战以及PINN模型擅长求解小尺度时空域的事实。在计算域上,它保持了近井区(梯度最大)的物理连续性,子域和界面都受到控制方程、数据匹配和边界条件的严格约束。

  由于传统的PINN模型不能准确地求解具有源汇项的偏微分方程除非时空场很小或有大量标记数据来指导训练过程,所以采用域分解的方法可以很好的使用这些数据来提高准确性。

  文献中通过使用简化的多孔介质油水两相达西流模型作为控制方程,利用自动微分和域分解的方式进行计算,充分考虑了稀疏数据带来的挑战以及PINN模型擅长求解小尺度时空域的优势。

  在t=10d和t=30 d的单相和两相情况下,与标准的PINN模型相比:

  PINN- dd始终能够获得更低的绝对压力场误差。领域分解技术有助于减少误差积累,尽管PINN- dd和标准PINN模型都受到误差积累的影响,但PINN- dd的误差增长速度较慢。

该研究存在以下局限:

  1. 虽然PINN-DD方法可以在有限的数据下捕获大型油藏的压力动态系统,但其缺点是计算量大,耗时长。
  2. 尽管该方法只需要稀疏的生产数据,但本研究中使用的数据是通过数值方法获得的。因此,缺乏校正地质静态参数的历史匹配过程是本研究的另一个局限性。

各方程和原理简介

  多孔介质的一般油水两相达西流模型,该模型可以进一步简化为单相模型。该模型假定流体具有轻微的可压缩性和不可混溶性,并且两相之间没有传质。控制方程表示为:

  水饱和度和油饱和度分别为Sw和S0;Qw、qo为油水相源汇项,φ为孔隙度,ρ为密度,μ为油和水的速度;K为油和水的相对渗透系数

其井眼(即最难捕捉的区域附近)可用peaceman方程描述:

Pwell为含井网格压力,PWF为井底流量压力,re是等效半径,S是集肤效应,S=0

  两相流的控制方程描述了压力和饱和度之间的耦合关系,使用二维BuckleyeLeverett两相方程来进行油水两相混合的探讨:

Sw为含水饱和度;Fw为水分流;R为距注水井的距离;A(r)为横截面积;φ为多孔介质孔隙度。

PINN简介

  文中除了基本的自动微分(AD)的原理介绍,即将函数表示为初等运算图,然后使用链式法则在图中传播导数,其输出函数为:

  u通常表示状态变量,如储层内的压力或饱和度。我们假设它可以用全连接神经网络表示为uθ:

  其中σ为激活函数,W为权重;b为偏差。

  PINN中的损失函数由控制方程的残差、初始条件和边界条件以及数据匹配,在理论上,任何数据集都必须满足控制方程,这意味着控制方程的残差应该接近于零,故控制方程的残差可以表示为:

  同样,初始条件、边界条件和数据匹配相关的均方误差可以表示为:

  将上述的均方差函数乘以一个权重系数λ再相加,获得PINN的损失函数:

  其PINN-DD的框架如图所示:

  利用决定系数R2和相对误差L2来评价精度,如下:

uθi为pinn的解;N为评价点个数;UI为评价点的数值解;U是数值解U的平均值。

域分解

  同上面说过的,PINN不能精确的求解源项(压力梯度最大的区域)附近的值,可使用域分解将计算域被划分为两个不同的子域:小的含井子域1和大的无井子域2。在划分界面处状态变量分布的连续性假设连接了不同的域。该接口的时空数据包含在两个子域中并同时进行训练,使得该接口同时受到两个子域的控制方程和边界条件的约束。因此,无需在接口上附加约束,即可隐式地满足连续性条件,域分解如图所示:

  大尺寸界面对于无井域计算是有利的,因为它有效地覆盖了更广泛的区域,但无法以所需的精度捕获靠近井筒的快速变化的梯度。

  相反,较小的界面可以模拟严重的梯度变化,减少井筒和含井区域之间的尺度不匹配,但代价是增加了无井区域的计算复杂性。

  如图10所示,计算域可以根据是否存在生产井、注水井或两者都不存在的情况划分为三个子域:

实验设置

单相油藏问题

  基于计算效率和对并置点数据采样的考虑,选择了10 m的界面尺寸进行研究,计算域为500 m的无流边界正方形。生产井位于溶液区域的中心,以50 m3 /d的恒定速率作业;压力为300 bar,渗透率、孔隙度和Cf分别为100 mD、0.2和0.00045 bar-1采用softplus激活函数,构建一个包含15个隐藏层的神经网络,每层包含100个神经元。采用学习率衰减策略的Adam优化器对网络进行训练。

  图中分别为t=10 d和t=30 d时PINN- dd和PINN的解压力场:

  由图可以看出,PINN-DD再10d和30d的绝对误差都保持再4bar以下,而pinn的误差为12和18bar,从图4和图5可以看出,PINN-DD的近井区分布模式与参考值更加接近,证实了区域分解提高了近井区的模拟效果。从图6中,我们可以看到PINN-dd和PINN的相对误差L2的对比:

  值得注意的是,虽然两种方法都达到了相当水平的相对误差L2,但pinn- dd显示出更高的精度。

  与PINN模型一样,pindd也存在误差积累的问题,但我们可以看到,PINN- dd误差随时间的斜率明显小于PINN,证明了其更稳定的泛化能力。

  图7中显示了以沿计算域对角线使用PINNDD和PINN获得的压力结果,可以看出,在压力梯度最大的区域中,PINN- dd的结果都优于PINN。

  PINN-DD方法中熟练应用的区域分解强调了井附近状态变量的连续性。相反,PINN模型试图将整个计算域作为一个整体来解决,因此,它很难精确捕获近井区内出现的复杂压力波动。(近井区压力的不准确性也会传播并影响远井区,从而加剧了传统PINN方法固有的局限性。)

油水两相问题

  假设流体既不可压缩又不可混相符合二维BuckleyeLeverett两相问题。基于这些基本假设,我们可以基于BuckleyeLeverett理论,利用pinn构造一个swi -net来求解,然后结合基本的两相控制方程,利用PINN-DD来求解压力。

  在本研究中,我们使用Sw-net来求解二维BuckleyeLeverett方程,并将其预训练模型作为辅助模型在pin - dd求解压力场的过程中。预训练模型提供了每个时间步长各时空点的饱和值,进一步方便了压力项系数值的确定。

  待求解的物理模型是一个面积为100 m ×100m的二维域,具有四种无流边界条件。注采井分别位于(97.5,97.5)和(2.5,2.5),初始压力为250bar,初始含水饱和度为0.2,不可还原水饱和度和剩余油饱和度均为0.2,渗透率为100 mD,水粘度为0.3 mPa s,油粘度为3 mPa s。注水井和生产井分别以30 m3 /d的恒定液量和150 bar的恒定井底压力运行。神经网络由20个隐藏层组成,每个隐藏层有50个神经元(其他网络参数同上个实验)。

  图11(b)、图12(b)、图11(d)和图12(d)分别显示了在t=10 d和t=30 d时,PINN- dd和PINN解算的压力场。PINN- dd的绝对误差保持在8 bar以下,而PINN的绝对误差达到22 bar。结果表明,PINN-DD在注水井附近误差较小,表明区域分解可以提高生产数据稀疏的大规模计算域问题的精度:

  图13比较了PINN- dd和PINN模型在30 d内的相对误差L2。结果证实,区域分解有效地缓解了误差积累。预计PINN-DD模型在后期可能会出现误差增大的趋势。然而,对于当前30天的模拟,pin - dd中的误差累积效应并不显著。因此,区域分解提高了PINN模型在求解两相问题时的精度和稳定性。

    图14显示了在t=10 d和t=30 d沿对角线使用PINN- dd和PINN获得的压力结果:

  结果表明,PINN- dd曲线与真值曲线非常接近,而标准PINN模型存在显著差异。这是由于:PINN模型收敛性差的原因是饱和场中存在不连续的冲击锋面,井筒附近压力梯度变化剧烈,导致注水井附近压力场解不准确。

Fluent实例:Y型弯管中的流体混合分析

几何建模部分

  在Design modeler中建立出模型,调整单位为mm,在XY平面中绘制出一个宽10mm,长50mm的矩形,在顶点处绘制出一条50mm的线,使用对称、等长命令使得生成一条关于Y轴对称的线;再在线上方绘制出50mm与第一条线平行的斜线,重复操作后生成草图:

  后使用长度约束两条线间距为10mm,在上方的线顶点处绘制垂直于X轴的线,修剪后如下:

  挤出模型10mm,并使用混合中的固定半径命令,使其外围12边变成圆边,绘制完成的模型如下:

网格划分

  先在尺寸调整中关闭自适应尺寸划分网格的命令,插入“划分方法”,改变网格类型为四面体网格:

  插入尺寸调整命令,关闭“捕获曲率”,使用硬解的方式,将最小单元尺寸改为0.001m,后进行边界名称划分:

求解器设置:

  采用8核双精度,进入求解器设置,打开重力设置,在Y轴上-9.81m/s2,打开能量模型,计算模型为层流,具体设置如下:

添加液体水为流体材料,将流体域材料更改为水,设置初始边界条件,初始温度设置为325k和275k:

将残差调整为1e-06,获得更精确的数据,采用标准初始化,计算参考区域为all zone,参数保持默认(其中温度与设置的初始条件有关,为两个入口出的温度加权平均值):

迭代步数为1000次,结果如下所示:

残差:

原案例:

  可见在450次收敛左右获得远超于设置值的结果,与原案例中趋向相符,且出口处速度为两倍入口处速度,且出口温度为两个入口处的加权平均:

速度流线图:

温度云图:

压力云图:

速度云图:

有限体积法学习

总结

这一周主要聚焦在补习有限体积法中的数学定理,由于之前的记录中有相关内容,所以没有进行重复的记录。而在文献阅读的过程中,发现域分解的相关文献又需要这一部分的知识,故会先对其进行补充学习,拓展自己的思维。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/583428.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

贝叶斯统计实战:Python引领的现代数据分析之旅

贝叶斯统计这个名字取自长老会牧师兼业余数学家托马斯贝叶斯(Thomas Bayes,1702—1761),他最先推导出了贝叶斯定理,该定理于其逝世后的1763年发表。但真正开发贝叶斯方法的第一人是Pierre-Simon Laplace(1749—1827),因此将其称为…

C++|STL-list运用(1)

cplusplus.com/reference/list/list/?kwlist list介绍 list是一个双向循环链表,双向循环链表它的每个节点都有两个链接,一个指向前一个节点,另一个指向下一个节点,且最后一个结点指向头节点。 结点组成 1.数据域 2.指针域 &a…

多校园版 校园跑腿小程序源码系统 跑腿达人自主入住接单 带完整的安装代码包以及部署教程

近年来,随着移动互联网的普及和高校信息化的推进,校园跑腿服务逐渐成为了校园内的一种新兴业态。然而,市场上的校园跑腿小程序大多功能单一、缺乏个性化定制,难以满足不同高校、不同用户的需求。因此,小编给大家分享一…

Java:SpringBoot如何优化启动速度

一、yml中设置懒加载 spring:main:lazy-initialization: true 二、SpringBoot启动类中添加注解 Indexed (Spring5才有该注解) Indexed EnableAsync RestController SpringBootApplication(exclude {WxMaAutoConfiguration.class}) EnableTransactionM…

web服务的部署及高级优化

搭建web服务器 1.1、配置主机IP以及软件仓库搭建 [rootserver129 ~]# vmset.sh 100 //主机IP配置为172.25.254.100 1.2、查看搭建web服务器所需的软件包 [rootserver100 ~]# dnf search nginx 名称 精准匹配:nginx nginx.x86_64 : A high performance web serve…

WEB攻防-PHP特性-metinfoCMS审计实例

前置知识&#xff1a;PHP函数缺陷 测试环境&#xff1a;MetInfo CMS 函数缺陷导致的任意文件读取 漏洞URL&#xff1a;/include/thumb.php?dir 漏洞文件位置&#xff1a;MetInfo6.0.0\app\system\include\module\old_thumb.class.php <?phpdefined(IN_MET) or exit(No…

Blender曲线操作

1.几种常见建模方式 -多边形建模&#xff1a;Blender&#xff0c;C4D&#xff0c;3DsMax&#xff0c;MaYa -曲线&#xff1a; -曲面&#xff1a;Rhino&#xff08;Nurbs&#xff09; -雕刻&#xff1a;Blender&#xff0c;ZBrush -蜡笔&#xff1a;Blender 1&#xff09;新…

【Linux】dlopen: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29‘ not found

[30116] Error loading Python lib /tmp/_MEIlvdUu6/libpython3.8.so.1.0: dlopen: /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.29 not found (required by /tmp/_MEIlvdUu6/libpython3.8.so.1.0)1 cd到指定路径 cd /usr/local 2 下载 wget http://ftp.gnu.org/gnu/gl…

电影交流|基于SprinBoot+vue的电影交流平台小程序系统(源码+数据库+文档)

电影交流平台目录 目录 基于SprinBootvue的电影交流平台小程序系统 一、前言 二、系统设计 三、系统功能设计 1用户信息管理 2 电影信息管理 3公告信息管理 4论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取…

Python自学篇3-PyCharm开发工具下载、安装及应用

一、Python开发工具 自学篇1中讲到了安装Python之后出现的几个应用程序&#xff0c;其中IDLE、Python.exe都可以用来编写python程序&#xff0c;也可以进行调试&#xff1b;但是比较基础&#xff0c;比较原始&#xff0c;调试不方便&#xff0c;界面也不友好&#xff0c;需要更…

Apache Seata AT 模式事务隔离级别与全局锁设计

title: 详解 Seata AT 模式事务隔离级别与全局锁设计 author: 张乘辉 keywords: [Seata、分布式事务、AT模式、Transaction、GlobalLock] description: Seata AT 模式的事务隔离是建立在支事务的本地隔离级别基础之上的&#xff0c;在数据库本地隔离级别读已提交或以上的前提下…

八_实验1:创建 VLAN 和划分端口

1、实验目的 通过本实验可以掌握&#xff1a; VLAN的概念。创建VLAN的方法。把交换机端口划分到VLAN中的方法。 2、实验​​​​​​拓扑 创建 VLAN 和划分端口的实验拓扑如下图所示。 图8-5 创建 VLAN 和划分端口的实验拓扑 3、实验步骤 &#xff08;1&#xff09;实验准…

力扣-有效的数独

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09; 注…

AI图书推荐:基于AI的商业数据分析应用

《基于AI的商业数据分析应用》&#xff08;AI-Based Data Analytics: Applications for Business Management&#xff09;的作者是Kiran Chaudhary、 Mansaf Alam。 本书涵盖了与营销和商业分析相关的各种主题。它探讨了组织如何通过使用数据分析及时做出更好的决策来增加利润。…

verilog分析task的接口设计,证明这种写法:assign {a,b,c,d} = links;

verilog分析task的接口设计&#xff0c;证明这种写法&#xff1a;assign {a,b,c,d} links; 1&#xff0c;task在状态机中的使用好处&#xff1a;2&#xff0c;RTL设计3&#xff0c;测试testbench4&#xff0c;波形分析&#xff0c;正确&#xff01; 参考文献&#xff1a; 1&am…

蓝牙核心规范(core Specification)与应用规范(Profile)

加zkhengyang可申请加入蓝牙音频研究开发交流答疑群(课题组)&#xff0c;赠送实际蓝牙耳机项目核心开发资料&#xff0c; 我们看到的大部分资料对于蓝牙协议分层一般是核心规范。 射频&#xff0c;基带&#xff0c;链路管理属于蓝牙硬件模块(一般由硬件实现比如FPGA) 逻辑链…

MongoDB数据库迁移的两种办法

在做系统运维时&#xff0c;经常需要对数据库进行迁移&#xff0c;今天这里分享一下MongoDB数据库数据迁移的办法。两种方法 方法1 利用NoSQLBooster for MongoDB直接复制粘贴 这种方法&#xff0c;适合在windows电脑上&#xff0c;可以直接访问原始和目标两个MongoDB库的。优…

Burp自定义插件实现请求拦截

在安全测试时&#xff0c;经常需要对请求进行拦截以及配置管理&#xff0c;以便过滤域名或路径的请求。例如&#xff1a;被测对象会不断收集信息&#xff08;例如IP地址、设备信息&#xff09;通过HTTP传给服务端。本文将介绍如何使用Burp Suite的扩展插件&#xff0c;通过开发…

释放Stable Diffusion 无限可能

最近在整理大语言模型的系列内容&#xff0c;Stable Diffusion 是我下一篇博客的主题。关注 Stable Diffusion&#xff0c;是因为它是目前最受欢迎和影响力最大的多模态生成模型之一。Stable Diffusion 于 2022 年 8 月发布&#xff0c;主要用于根据文本的描述产生详细图像&…

微服务使用SockJs+Stomp实现Websocket 前后端实例 | Vuex形式断开重连、跨域等等问题踩坑(二)

大家好&#xff0c;我是程序员大猩猩。 上次我们实践了&#xff0c;Java后端如何完成SockJSStomp的配置实现。 微服务使用SockJsStomp实现Websocket 前后端实例 | Vuex形式断开重连、跨域等等问题踩坑&#xff08;一&#xff09; 那么今天我们做一下web vue端的是如何来实现…