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

2024-04-28 21:36

本文主要是介绍学习周报:文献阅读+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次收敛左右获得远超于设置值的结果,与原案例中趋向相符,且出口处速度为两倍入口处速度,且出口温度为两个入口处的加权平均:

速度流线图:

温度云图:

压力云图:

速度云图:

有限体积法学习

总结

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

这篇关于学习周报:文献阅读+Fluent案例+有限体积法理论学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944317

相关文章

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

Java中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Java 正则表达式的使用实战案例

《Java正则表达式的使用实战案例》本文详细介绍了Java正则表达式的使用方法,涵盖语法细节、核心类方法、高级特性及实战案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、正则表达式语法详解1. 基础字符匹配2. 字符类([]定义)3. 量词(控制匹配次数)4. 边

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Spring Boot 整合 SSE(Server-Sent Events)实战案例(全网最全)

《SpringBoot整合SSE(Server-SentEvents)实战案例(全网最全)》本文通过实战案例讲解SpringBoot整合SSE技术,涵盖实现原理、代码配置、异常处理及前端交互,... 目录Spring Boot 整合 SSE(Server-Sent Events)1、简述SSE与其他技术的对