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

速度流线图:

温度云图:

压力云图:

速度云图:

有限体积法学习

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

获取boss直聘城市地区josn数据

获取boss直聘城市地区josn数据 当我需要爬取多个城市的地区的时候,只能手动点击,然后一个一个看 结果: 能看到所有区域所有子地区的地区代码 解析该JSON数据 import pandas as pd import requests code[] area[] 城市代码101210100 res…

VForm3的文件上传后的一种文件回显方式

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

MySQL 查询优化思路

在统计的时候尝尝遇到过查询数据量大的情况,SQL会超时 下面是一些解决方案 (未经本人允许不得转载) 1、索引 加完看索引是否生效(一般情况都是普通索引tree)创建联合索引(注意顺序)2、 SQL语句…

git push 新分支出现remote unpack failed: error Missing blob报错可能原因之一

git push新分支是出现以下错误: error: remote unpack failed: error Missing blob xxxxx 前提条件:B是从A拉出来的分支,B分支在开发过程中A分支有新增提交到服务器端,在Git push B分支时报错如上。从描述看是缺了一个什么&…

程序员缓解工作压力的技巧

程序员在紧张的工作之余,放松自己是非常重要的。我了解到有几种方法可以帮助他们缓解压力、恢复精力。 首先,运动是个不错的选择。无论是去健身房锻炼身体,还是进行户外跑步、散步,都可以让程序员暂时忘记工作,释放压力…

GPT-SoVITS声音训练报错ZeroDivisionError: division by zero

环境: GPT-SoVITS-0421 问题描述: GPT-SoVITS声音训练报错ZeroDivisionError: division by zero Traceback (most recent call last):File "E:\GPT-SoVITS-0421\GPT-SoVITS-0421\GPT_SoVITS\s2_train.py", line 600, in <module>main()File "E:\GPT…

JAVA实操代码练习2

JAVA实操代码练习2 代码合集01(两个数的最小公倍数;n 个自然数的立方和;抽奖程序)代码合集02(纸张对折、5的阶乘、鸡鸡同笼、大小马匹、回文数、跳跃弹球)代码合集01(两个数的最小公倍数;n 个自然数的立方和;抽奖程序) import java.util.Scanner;public class lianxi0…

Windows电脑中护眼(夜间)模式的开启异常

我的电脑是联想小新16pro&#xff0c;Windows11版本。之前一直可以正常使用夜间模式&#xff0c;但是经过一次电脑的版本更新之后&#xff0c;我重启电脑发现我的夜间模式不能使用了。明明显示开启状态&#xff0c;但是却不能使用&#xff0c;电脑还是无法显示夜间模式。 询问…

谈谈 Java 反射机制,动态代理是基于什么原理

反射机制是 Java 语言提供的一种基础功能&#xff0c;赋予程序在运行时自省&#xff08;introspect&#xff0c;官方用语&#xff09;的能力。通过反射我们可以直接操作类或者对象&#xff0c;比如获取某个对象的类定义&#xff0c;获取类声明的属性和方法&#xff0c;调用方法…

第三节课,后端登录【1】.1--本人

一、后端登录逻辑&#xff0c;检测账户密码是否合法及密码输入是否正确 视频链接&#xff1a; 网址&#xff1a; 第三节&#xff1a;【视频】后端登录逻辑&#xff0c;检测账户密码是否合法及密码输入是否正确视频链接&#xff1a;-CSDN博客 从5.1开始 这是一个Java方法&am…

1438.绝对差不超过限制的最长连续子数组

显然我们是需要同时维护当前的最大值和最小值,这就需要两个单调队列dq_down(递减排列)一个维护最大值,dq_up(递增排列)一个维护最小值,同样这个是使用我们第二个模板 [left, i]. 只有当left等于某一个dq.front()的时候,才把它pop_front().这就使得对应相同的元素,我们只需要保…

004 死信(限制队列最大长度)

文章目录 消息ttl过期成为死信队列达到最大长度成为死信MyOrder.javaRabbitMQDirectConfig.javaOrderProducer.javaPayConsumer.javaDeadOrderConsumer.java application.yaml 死信就是无法被消费的消息。一般来说&#xff0c;producer 将消息投递到 broker 或者直接到 queue 中…

黑马点评项目遇到的部分问题

目录 1. Invalid default value for ‘begin_time‘报错2. [ThreadLocal](https://blog.csdn.net/u010445301/article/details/111322569)3. 悲观锁实现单体一人一单超卖问题4. redisson5. 回顾秒杀优化6. Nginx 负载均衡 1. Invalid default value for ‘begin_time‘报错 my…

Java设计模式_概述(设计模式类型和基本原则)

一、设计模式 设计模式&#xff08;Design pattern&#xff09;代表了最佳的实践&#xff0c;是软件开发人员在软件开发过程中面临一般问题的解决方案&#xff0c;是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。是优秀程序猿的经验结晶。 但不推荐刚入门的开…

如何删除.gitignore文件中指定的所有被忽略的文件

要删除.gitignore文件中指定的所有被忽略的文件&#xff0c;你可以使用git rm命令结合-r选项。以下是一些步骤&#xff1a; 查看将要删除的文件&#xff1a;首先&#xff0c;你可以使用git ls-files命令来列出被git忽略的文件&#xff0c;以确保你想要删除的文件列表是正确的。…

LeetCode 热题 100 Day06

矩阵相关题型 Leetcode 48. 旋转图像【中等】 题意理解&#xff1a; 将一个矩阵顺时针旋转90度&#xff0c;返回旋转后的矩阵。 要求&#xff1a; 在原地修改&#xff0c;不借助额外的空间 如果可以使用辅助数组来实现转置,则有 matrix_new[i][j]matrix[j][row-i-1]; 解…

Kubernetes学习-核心概念篇(三) 核心概念和专业术语

&#x1f3f7;️个人主页&#xff1a;牵着猫散步的鼠鼠 &#x1f3f7;️系列专栏&#xff1a;Kubernetes渐进式学习-专栏 &#x1f3f7;️个人学习笔记&#xff0c;若有缺误&#xff0c;欢迎评论区指正 1. 前言 在前面两篇文章我们简单介绍了什么是K8S&#xff0c;以及K8S的…

mysql服务器无法启动问题处理

一台hlr服务器用网管软件登录失败&#xff0c;查找原因&#xff0c;发现网关软件连接服务器的tcp的10002端口失败&#xff0c;超时无应答&#xff0c;导致连接失败。 用户反馈核心网hlr&#xff0c;smc无法登录&#xff0c;putty登录服务器&#xff0c;发现hlr10002端口没有打…

【保姆级讲解下gateway基本配置】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

STM32与OLED显示屏通信(四针脚和七阵脚)

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 单片机调试 2. OLED简介 3. 接线 4. OLED驱动函数 4.1 四针脚版本 OLED.c OLED.h OLED_Font.h 4.2 七针脚版本 引脚连接 OLED.c OLED.h OLED_Font.h 5. 主函数 工程文件模板 1. 单片机…