开放原子大赛石油软件赛道参赛经验分享

亿级以上网格油藏模型三维可视化

一、赛项背景

油藏数值模拟是油气田开发中至关重要的一环。油藏数值模拟将储层与井的数学模型离散求解,预测地下流体、能量等的动态变化,广泛应用于油田产量评估、开发方案优化等。随着计算机技术特别是并行技术的发展,油藏数值模拟的网格规模可达亿级到十亿级。如此大规模的油藏模型对三维可视化是一个挑战。

本次竞赛的目标是期望实现亿级以上网格油藏模型流畅的三维显示和数据交互。通过应用先进的计算机图形技术,利用局部更新、按需加载、并行处理等技巧改进算法,实现亿级以上网格油藏模型流畅的三维显示和数据交互,助力HiSim软件的升级。

二、赛项信息

赛项名称:亿级以上网格油藏模型三维可视化

赛项主题:油藏开发,油藏数值模拟

赛项时间:2024.09-2025.01

赛项目的:本次竞赛旨在通过"亿级以上网格油藏模型三维可视化"竞赛,旨在邀请计算机图形学、油藏数值模拟及可视化领域的精英人才,共同探索并攻克这一技术难题。

三、竞赛题目

参与本赛题所需的数据及说明已上传到AtomGit代码托管平台,代码库地址: 亿级以上网格油藏模型三维可视化 · AtomGit_开放原子开源基金会代码托管平台

本赛项要求参赛队伍实现亿级以上网格油藏模型流畅的三维显示和数据交互。油藏模型的三维可视化指将油藏网格与井的动、静态属性以计算机三维图形的方式呈现出来。由于CPU/GPU算力的限制、内存/显存容量的限制,亿级以上网格油藏的三维可视化会出现不流畅甚至无法显示的问题。项目组针对上述问题,提出赛题"亿级以上网格油藏模型三维可视化",具体要求如下:

3.1 核心功能实现

亿级网格处理:参赛作品必须能够处理亿级以上的油藏网格模型,实现其三维可视化。

动静态属性展示:除了网格,还需将井的动、静态属性以三维图形的方式清晰、准确地呈现出来。

数据交互能力:用户需能够与三维模型进行交互,选择特定网格。

3.2 性能优化要求

流畅性:在CPU/GPU算力及内存/显存容量有限的情况下,确保三维显示和数据交互的流畅性。

局部更新技术:应用局部更新技术,仅对需要变更的部分进行更新,以减少不必要的计算和资源消耗。

按需加载策略:实现按需加载机制,根据用户需求和视图范围动态加载和卸载数据。

并行处理应用:利用并行处理技术,如GPU加速、多线程等,提高数据处理和渲染速度。

3.3 用户体验与外观

直观易用:用户界面应简洁、直观,易于操作和理解。

美观度:三维可视化效果应美观,符合专业软件的外观标准。

可移植性与兼容性:作品应能够在Windows或Linux平台上稳定运行。

3.4 赛题意义

将为巅峰赛题"超大规模多组分渗流全隐式模拟中的稀疏线性方程组求解"未来成果落地提供可视化功能支持,助力HiSim软件增强其处理大规模数据的可视化能力,提高油气藏模拟的精度和效率。

亿级以上网格的油气藏模型能够捕捉更多地质细节,提供更精确的地质构造和流体流动模拟,能够直观展示油气藏模型的内部结构、流体分布及动态变化过程,有助于研究人员和决策者更好地理解地质情况,做出科学决策。

四、参赛历程

4.1 研读赛题需求

本数据是HiSim模拟器的模拟结果数据,包含两类:

  • 网格数据:连续存放的二进制数组;
  • 井筒数据:文本文件。

利用以上两种数据体,可以完整地绘制储层和井筒的3D图。

网格几何数据是"Brick"格式,该格式包含"点集+拓扑",可以描述结构或非结构的六面体单元,且单元顶点不需要是对齐的。Brick格式包含两个数组:

① 点集坐标,是顶点的(x, y, z)坐标,是double数组,长度等于"顶点数×3",重合的点记为一个点;

② 网格顶点在点集中的编号,即每个网格由哪8个顶点组成,是整型数组,数组长度等于"有效基质网格数×8",编号从1开始,8个顶点的顺序如,顶点先排底面、再排顶面,面内逆时针排序。

4.2 补充油藏相关知识点

油藏工程 中国石油大学

油藏工程-姚军-中国石油大学(华东)_哔哩哔哩_bilibili

Petrel 地质建模专讲

Petrel 地质建模专讲(2023年最新录制的独家1080p优质内部一体化培训视频第二模块)!共大于10个视频!(并包含数据、课堂笔记、手册、实用技巧等资料)_哔哩哔哩_bilibili

基于华为鲲鹏HPC并行计算:油藏数值模拟网格粗化探索与实践【玩转华为云】-云社区-华为云

科吉思石油技术的个人空间-科吉思石油技术个人主页-哔哩哔哩视频

硬实力|亿级角点网格油藏模型三维显示技术取得重大突破-Colchis-科吉思石油技术咨询有限公司

十亿级网格CCS模拟的"GPU超能力"!【附: 5月份休斯顿技术峰会报名】

前沿技术 |金蛇狂舞!2025斯伦贝谢数值模拟新技术应用与文献盘点

前沿技术 |INTERSECT 2024重装升级,引领油藏模拟新时代

4.3 收集HiSim相关研发资料

自主研发,填补空白,打造全系列一体化工业软件HiSim

HiSim®打造了一体化油藏数值模拟应用平台,集成数模模型建立、流体相态模拟、数值模拟运行、结果可视化分析、人机交互历史拟合、交互式井网部署及开发方案预测与方案优化等功能,为油气田开发提供了数值建模、数值模拟、动态分析及方案优化的一体化解决方案。

2024首届HiSim®软件设计大赛赛前培训圆满落幕

https://pubs.cstam.org.cn/data/article/em/preview/pdf/1000-4750(2008)10-0012-07.pdf

https://ir.pku.edu.cn/handle/20.500.11897/483950

并行计算基础知识

4.4 设计可视化方案

油藏数值模拟算例数据概览

概述 JD_Refined_BO3.dat 5KB

静态网格参数 JD_Refined_BO3_geom.bin 17713770KB

动态网格参数 JD_Refined_BO3_stu.bin 100381214KB

井筒数据 JD_Refined_BO3_wstu.out 23434KB

首先将油藏网格二进制格式Brick,通过c++转换成中间格式ply,然后使用开源软件Blender+python批量合成ply到glb格式。 最后再使用web技术实现模型的可视化,井筒数据的映射。

亿级网格处理

处理亿级以上的油藏网格模型,实现其三维可视化。

动静态属性展示

井的动、静态属性以三维图形的方式呈现,填充物理参数,如孔隙度与渗透率,描述储层岩石的性质。

数据交互能力

用户需能够与三维模型进行交互,选择特定网格。

网格模型尺寸范围(单位m):

XCOORD0 = 630752.507

YCOORD0 = 4338916.207

XCOORD=[33,7934],YCOORD=[-3941,1554],DEPTH=[1750,2845]

提取brick中的点集合,表征几何点云可视化,形成总体映像

静态网格数据读取,从上往下切片输出ply格式文件,在点集合中找到xy,xz, yz, -x-y, -x-z, -y-z6个平面最大点构成的格子数据,点集输出到txt文件,在拓扑数据处理阶段加载到内存,构成三维点数据,供拓扑点数据和拓扑数据的重新组合切片输出。切片工具使用c++ mfc框架编写。模型可视化基于网络浏览器实现。

PLY是一种用于存储三维模型的文件格式,全名为多边形档案(Polygon File Format),又称斯坦福三角形格式(Stanford Triangle Format)。以下是关于PLY格式的详细介绍:

基本特性

  • 存储内容‌:PLY格式主要用以储存立体扫描结果的三维数值,通过多边形片面的集合来描述三维物体。
  • 属性支持‌:它可以存储的信息包括顶点坐标、颜色、透明度、表面法向量、材质坐标、数据可信度等,并能对多边形的正反两面设定不同的属性。
  • 编码方式‌:在档案内容的储存上,PLY有两种版本,分别是纯文字(ASCII)版本与二元码(binary)版本,其差异在于储存时是否以ASCII编码表示元素信息。

文件结构

  • ‌**档头(header)**‌:每个PLY文件都包含档头,用以设定网格模型的"元素"与"属性"。档头中定义了文件中包含的元素类型(如顶点、面等)以及这些元素的属性(如坐标、颜色等)。
  • 数值资料‌:在档头下方接着的是一连串的元素"数值资料",这些资料按照档头中定义的顺序和类型进行存储。

元素与属性定义

  • 元素‌:PLY文件中的元素可以是顶点(vertex)、面(face)等。
  • 属性‌:属性用于描述元素的特征,如顶点的坐标(x, y, z)、颜色(R, G, B)等。在PLY文件中,属性通过"property"关键字进行定义。

应用场景

PLY格式因其高效的存储方式和丰富的属性支持,在多个领域有着广泛的应用:

  • 3D扫描‌:用于存储和处理3D扫描设备获取的三维数据。
  • 3D打印‌:作为3D打印软件的输入格式之一,用于描述待打印物体的三维模型。
  • 游戏开发‌:在游戏开发中,PLY格式常用于存储游戏场景和角色的三维模型。
  • 动画制作‌:在动画制作中,PLY格式可用于存储动画角色的三维模型和动作数据。

4.5 总体流程设计

开发语言:c++、javascript

模型格式:ply、stl、glb/gltf、b3dm

应用框架:B/S架构、vue、threejs、chrome v131浏览器

glTF(GL Transmission Format)和GLB(GL Transmission Format Binary File)是两种用于存储和传输三维场景和模型的文件格式,它们都由Khronos Group定义和维护。以下是关于这两种格式的详细介绍:

glTF格式

  • 特点‌:

    • 可扩展性‌:glTF文件格式具有可扩展性,可以根据需要添加新的数据类型和属性信息,便于扩展和更新。
    • 压缩性‌:支持压缩算法,可以有效地减小文件大小,便于传输和存储。
    • 广泛的行业支持‌:许多知名的3D引擎和应用程序都支持glTF格式。
    • 快速高效‌:glTF文件通常比其他3D模型格式小且读取速度快。
    • 丰富的场景数据‌:除了存储模型和材料外,还能够存储动画数据、骨骼、蒙皮、场景层次结构以及灯光(通过扩展)。
  • 优点‌:

    • 作为开放标准,不受特定公司控制,可自由使用。
    • 文件结构清晰,易于解析和渲染。
  • 缺点‌:

    • 由于是基于JSON的,文件大小可能比某些二进制格式大。
    • 在某些特定应用程序或游戏中,可能需要进行额外的转换或调整。
    • 3D模型数据的存储格式较为简单,修改模型可能比较困难。

GLB格式

  • 特点‌:

    • 单一文件格式‌:将所有的模型数据(包括结构、几何、纹理等)打包到一个单一的文件中,更易于传输和加载。
    • 二进制格式‌:可以直接被GPU读取和处理,无需预处理,提高渲染效率。
    • glTF兼容‌:完全兼容glTF规范,支持所有glTF特性。
  • 优点‌:

    • 文件大小通常比glTF小33%,更适合网络传输。
    • 包含渲染3D模型所需的所有数据,非常适合在Web和移动应用程序中使用。
    • 广泛支持,被许多3D应用程序和游戏引擎所接受。
  • 缺点‌:

    • 由于是二进制格式,编辑和修改比较困难,需要专业工具。
    • 可扩展性受限,一旦文件生成后,修改和添加新元素可能较为困难。
    • 文件结构可能相对复杂,包含扩展内容块。

使用场景

  • glTF‌:主要用于游戏开发、虚拟现实和增强现实、建筑可视化以及工业设计等领域。其开放性和高效性使其成为这些领域中的理想选择。
  • GLB‌:作为glTF的二进制版本,GLB的使用场景与glTF相似。由于其文件大小更小且加载速度更快,特别适合在网页中高效加载和渲染3D模型。

3D Tiles是一种高效的三维城市和地理空间数据存储格式,以下是对其的详细介绍:

基本概念

3D Tiles,即三维瓦片,是由Cesium公司提出的一种针对大规模三维场景的优化格式。它主要用于存储和传输高效的3D模型数据,如建筑物、地形数据、点云数据以及3D城市模型等。通过瓦片化处理,3D Tiles能够显著提高大规模3D模型的加载和渲染效率。

核心特点

  1. 层级化数据组织‌:

    • 3D Tiles使用层级的方式组织数据,每个瓦片通常包含一定区域内的3D模型或数据。瓦片的大小与场景的复杂度、数据的尺度以及显示设备的性能密切相关。
  2. 按需加载‌:

    • 3D Tiles支持动态加载和卸载瓦片,根据视角和距离来调整细节层次(LOD),从而避免一次性加载大量数据带来的性能瓶颈。
  3. 支持多种几何类型‌:

    • 3D Tiles支持多种几何类型,包括点云、多边形、模型等,并且可以包含丰富的属性信息和层次细节(LOD)结构。
  4. 高效渲染‌:

    • 通过使用层级细节技术(LOD)和批处理技术,3D Tiles能够优化渲染性能,确保在不同设备和网络条件下的最佳显示效果。

结构与应用

  1. 结构‌:

    • 3D Tiles的文件通常包括三个主要部分:根文件(root tileset file)、瓦片文件(Tile files)和二进制数据(Binary data)。根文件是一个JSON文件,描述整个场景的瓦片集合及其层次结构;瓦片文件包含每个瓦片的具体数据;二进制数据则存储了3D模型的几何数据、纹理数据、属性等。
  2. 应用场景‌:

    • 3D城市建模‌:3D Tiles非常适合用于表示和管理大规模的城市模型,能够处理复杂的建筑物和基础设施数据。
    • ‌**地理信息系统(GIS)**‌:对于各种类型的地理空间数据,3D Tiles能够提供快速加载和高效显示。
    • 虚拟现实和增强现实‌:借助3D Tiles的优化特性,VR/AR应用能够流畅地呈现大规模的3D环境。

技术细节

  1. 瓦片集与瓦片‌:

    • 瓦片集(tileset)是一组按层次结构组织的瓦片(Tile)。瓦片集本身包含根瓦片,每个瓦片都可以有子瓦片。瓦片集和瓦片都以JSON描述。
  2. 边界体积‌:

    • 每个瓦片包含一个边界体积(bounding volume),用于封装瓦片的内容和所有子内容。边界体积可以是定向的bounding box、bounding sphere或者以最小和最大经度、纬度、高程定义的地理区域。
  3. 几何误差与细化策略‌:

    • 几何误差(geometric error)用于衡量瓦片中的内容相对于最高细节级别的简化程度。在运行时,几何误差用于计算屏幕空间误差(SSE),从而决定层次细节(LOD)的细化。细化策略包括添加操作(ADD)和替换操作(REPLACE)。

使用方式

在实际项目中,使用3D Tiles的常见步骤如下:

  1. 使用专门的工具(如TilesBuilder)来加载和处理3D Tiles数据。
  2. 根据实际需求设置LOD的切换逻辑,以确保性能和显示效果的平衡。
  3. 将3D Tiles集成到应用程序中,利用其高效渲染和交互特性来呈现大规模的三维场景。

4.6 项目总结

自赛题发布以来,大赛吸引了来自全国范围内 的32支队伍、共计71名选手报名参赛。其中, 21所高校与1家企业积极参与,展现了石油软 件技术的广泛影响力。在初赛阶段,经过激烈 地角逐与比拼,8个团队凭借出色的三维显示 和数据交互与技术创新成功晋级决赛。

第二届开放原子大赛石油软件赛项决赛在北京举办,推动了开源创新成果在传统油气领域的深度应用

石油行业的一场技术盛宴 ------ 第二届开放原子大赛石油软件赛项决赛,在中国石油勘探开发研究院盛大举办!

开源赋能油气技术革新,第二届开放原子大赛石油软件专区赛决战在即_OpenAtom Operation-开放原子开发者工作坊
开源助推油气行业数字化转型,第二届开放原子大赛石油软件专区赛决赛成功举办-开放原子大赛

决赛路演阶段向院士专家汇报,与石油大学,清华大学,空气动力研究所同台竞技,C/S,B/S两路架构开阔眼界,绝对让你收获满满。

https://www.cardc.cn/nnw/engineering-introduction.aspx

树优超云 | UniXDE 智能仿真优化云平台 - 树优超云

VTK - The Visualization Toolkit

ParaView - Open-source, multi-platform data analysis and visualization application

WebGPU,下一代 Web 图形技术 - 邵嘉炜_哔哩哔哩_bilibili

W3ORG-chinese-web-gpu.pdf

这篇GPU学习笔记,详细整理了其工作原理、编程模型和架构设计

五、可视化结果

参见官网:

亿级以上网格油藏模型三维可视化-开放原子大赛

相关推荐
Miracle&25 分钟前
Qt 显示QRegExp 和 QtXml 不存在问题
开发语言·qt
秋风&萧瑟2 小时前
【QT】QT中的事件
开发语言·qt
长长同学2 小时前
基于C++实现的深度学习(cnn/svm)分类器Demo
c++·深度学习·cnn
秋风&萧瑟2 小时前
【QT】QT中的软键盘设计
开发语言·qt
杭州的平湖秋月2 小时前
C++ 中 virtual 的作用
c++
泪光29293 小时前
科创大赛——知识点复习【c++】——第一篇
开发语言·c++
梁下轻语的秋缘3 小时前
C/C++滑动窗口算法深度解析与实战指南
c语言·c++·算法
hallo-ooo3 小时前
【C/C++】函数模板
c语言·c++
一只鱼^_3 小时前
力扣第448场周赛
数据结构·c++·算法·leetcode·数学建模·动态规划·迭代加深
学生小羊3 小时前
[C++] 小游戏 决战苍穹
c++·stm32·单片机