如何在OpenFOAM的案例文件夹中确定数据的点和面,确定点和网格之间的关系,从而用于深度学习预测和构建模型呢(分析数据格式及其含义)

在OpenFOAM中,点(points)和面(faces)的定义是通过不同的文件来进行的。在案例一级目录下面的constant/polyMesh目录下,会有points, faces, owner, neighbour等文件,来描述网格的几何和拓扑结构。时间文件夹下也会有constant/polyMesh/points文件和U文件等。

下面我将解释如何在OpenFOAM中确定点和面,以及它们之间的关系。

一、理解数据文件的含义 

1. points 文件

points文件包含了网格中所有顶点的坐标,每一行代表一个顶点的坐标

5967
(
(-1.524 0 -1.524)
(-1.29142 0 -1.524)
(-1.08194 0 -1.524)
(-0.893391 0 -1.524)
(-0.723545 0 -1.524)
...
)

代表该数据有5967个顶点,从第1行到5967行分别对应该顶点,从1开始正序排列。

2. faces 文件(在constant/polyMesh下面,该文件只有一个,用来确定点和面的相对关系,具体固体形变的文件在每个时间步下面的ployMesh的points里面

faces文件描述了网格中所有面的定义,每一行定义了一个面,由顶点的索引组成。索引从0开始,指向points文件中的顶点。例如:

999
(
(0 1 2 3)
(4 5 6 7)
...
)

 上面的999代表有999个面,意思是,第一个面( 0 1 2 3)由0、1、2、3四个points组成,也就是四个点确定一个面。

3. ownerneighbour 文件

ownerneighbour 文件描述了每个面所属的单元。owner文件表示每个面所属于的单元索引,而neighbour文件则表示每个面相邻的单元索引。

二、确定点和面的关系(数据U和p都在面cell上,不在点上

为了确定一个面由哪些点组成,你需要查看faces文件,该文件包含了组成每个面的顶点的索引。这些顶点的坐标可以在points文件中找到。

确定上面数据中第一个面由哪些点组成,你可以

  1. 先查看faces件中第一个条目(也就是第一个面)的顶点号为(0 1 2 3)
  2. 然后再在points文件中找到这些索引(顶点号)对应的坐标:

即可自己提取到下面的有效数据,也就是第一个面的四个顶点为

  • 第0个顶点: (-1.524 0 -1.524)
  • 第1个顶点: (-1.29142 0 -1.524)
  • 第2个顶点: (-1.08194 0 -1.524)
  • 第3个顶点: (-0.893391 0 -1.524)

因此,第一个面由上述四个顶点组成。以此类推,就能得到所有非均匀面的数据。

转换为openfoam的格式,就能在paraview中展示.

使用paraview命令如下:

​​​​​​​paraview Fluid.foam

三、分析数据格式 

通过下面这个案例

比如这个数据对应的文件结构如下:

文件结构重要结论 

这里案例里面Fluid/constant下面的数据是所有时间公用的,是不变得。变的是

1.polyMesh/points    控制网格的点的变化,从而完全直接控制网格大小的的非均匀变化。(但相相对位置和树数目是不变的,因为constant下面的faces、points等都没有变)

2.time文件夹下的/U,p文件   控制网格的值,比如U、p、cellDisplacements等

 通过自己控制变量测试,得到的结论:

这个流固耦合案例,非均匀自适应变化网格的数据:

1.控制弹性固体形状方面变化的:是时间文件夹下面的polyMesh/points文件,里面是5967个点points,所有时间步中的points都是固定的数目(也就是点全局数量一样),只不过偏移量会变化。

points文件
5967
(
(-1.524 0 -1.524)
(-1.29142 0 -1.524)
(-1.08194 0 -1.524)

2.控制U,p等网格值数据变化的:是时间步下面的U文件,所有时间步下面的U文件中的网格数目一致不变化,但是值会变。也就是网格一直是4928个,但该网格的大小和里面的值一直在变化。

U文件
internalField   nonuniform List<vector> 
4928
(
(-0.000350596 -1.31343e-06 -0.000315693)
(-0.0367326 0.000109503 -0.0520629)
(-2.64343 6.37449e-07 -6.04)
(-71.8074 -4.02119 -117.074)

四、如何预测数据并用这paraview可视化呢

思路:由于Fluid/constant下面的数据不变,也就是只用修改

  1. 时间文件夹下面的polyMesh/points文件
  2. 时间文件夹下面的U文件(或者其他想要预测的文件,比如e,p)

第一个文件是points坐标数据,对应5967个三元组,物理意义是5967个点,每个点用3元组表示,shape为(5967,3),加上多个时间,shape(time,5967,3)为这个可以直接用普通的神经网络来预测,或者图神经网络,或者NUNO(非均匀神经算子)。

第二个文件是U的值数据,4928个三元组,物理意义是4928个网格数据,每个网格表示的是U,速度矢量是一个三元组,shape为(4928,3)加上多个时间,shape为(time,4928,3)。这个可以直接用正常的神经网络来预测。

0、模型构建方法:

可以考虑

  1. 第一个文件用NUNO来预测
  2. 第二个文件用之前做过的预测流体的WNO(小波神经算子来预测,代码已写完)

也可以直接将 (time,5967,3)和(time,4928,3)合并成一个(time,5967+4928,3),然后用一个模型WNO(小波神经算子)来训练和推理,这样更方便和快捷。

结果1、文件结构处理后用paraview可视化

然后将两个预测的数据接入这个案例的文件格式中,就将times/polyMesh/points和time/U下面的数据更换一下,创建一些时间文件夹里面的内容就可以用paraview正常绘制了。

结果2、不可视化,只想算出error

那就可以直接从上面的文件中提取出两个(time,5967,3)和(time,4928,3)数据用来求error就行了。

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

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

相关文章

收银系统源码-消息通知功能解析

智慧新零售收银系统是一套线下线上一体化收银系统&#xff0c;给商户提供含线下收银称重、线上商城、精细化会员管理、ERP进销存、丰富营销活动、移动店务助手等一体化的解决方案。 功能详情见下文&#xff1a; 门店收银系统源码-CSDN博客文章浏览阅读2.6k次&#xff0c;点赞…

【深度学习】图形模型基础(5):线性回归模型第五部分:多变量线性回归模型

1.引言 当我们从基础的线性模型 y a b x error y a bx \text{error} yabxerror 转向更复杂的模型 y β 0 β 1 x 1 β 2 x 2 … error y \beta_0 \beta_1 x_1 \beta_2 x_2 \ldots \text{error} yβ0​β1​x1​β2​x2​…error 时&#xff0c;我们面临了诸多…

3. kvm虚拟网络

kvm虚拟网络 一、虚拟网卡1、虚拟网卡驱动2、添加网卡3、删除网卡 二、虚拟网络1、NAT模式1.1 SNAT 1.2 DNAT 端口映射2、桥接bridge模式 一、虚拟网卡 1、虚拟网卡驱动 2、添加网卡 [rootmartin-host ~]# virsh attach-interface vm01_centos79 --type network --model virt…

书生大模型实战营(暑假场)-入门岛-第一关

书生大模型实战营暑假场重磅开启&#xff01;&#xff0c;这场学习路线看起来很好玩呀&#xff0c;闯关学习既能学到知识又有免费算力可得&#xff0c;太良心啦。感兴趣的小伙伴赶快一起报名学习吧&#xff01;&#xff01;&#xff01; 关卡任务 好的&#xff0c;我们废话不多…

Java基础语法--基本数据类型

Java基础语法–基本数据类型 Java是一种静态类型语言&#xff0c;这意味着每个变量在使用前都必须声明其数据类型。Java提供了多种基本数据类型&#xff0c;用于存储整数、浮点数、字符和布尔值等。以下是Java中的基本数据类型及其特点&#xff1a; 1. 整型&#xff08;Integ…

Qt常用基础控件总结—旋转框部件(QSpinBox类和QDoubleSpinBox类)

旋转框(微调按钮)部件 QAbstractSpinBox 类 QAbstractSpinBox 类介绍 QAbstractSpinBox 类是 QWidget 类的直接子类,虽然该类不是抽象类,但该类并未提供实际的功能,仅为旋转框提供了一些外观的形式以及需要子类实现了成员,也就是说点击微调按钮的上/下按钮,不会使其中的…

一键式创建GTest TDD测试平台

适用于C GTest测试平台搭建。直接上python脚本。 #!/usr/bin/env python3 # -*- coding: utf-8 -*-import argparse import os import platform import subprocess from xml.etree import ElementTree as ETdefault_root_path "d:\\test\\UTtest"class DeveloperTe…

常用Dos命令

学过Linux的shell命令的就很好理解&#xff0c;dos命令就是windows系统里面的命令&#xff0c;但是我们很少用&#xff0c;因为有图形化的界面&#xff0c;譬如&#xff1a;可以直接点击创建文件&#xff0c;在文件里面写东西&#xff0c;当然也可以通过终端执行命令创建文件&a…

.NET MVC强类型参数排除和包含属性 Bind 、Exclude

Bind(Include“属性”); 如果相包含多个属性可以用逗号分割符分开&#xff1a;Bind(Include“属性1,属性2,属性n”) 同理&#xff0c;如果想排除一个或多个属性可以使用 Bind(Exclude“属性”) / Bind(Exclude“属性1,属性2,属性n”) 实际应用中添加一个对象对于ID自增的实体…

【算法代码】标准差+正态分布画图+置信区间画图

正态分布画图置信区间 标准差公式如下置信区间图像如下画出置信区间的代码 标准差公式如下 标准差&#xff08;Standard Deviation&#xff09;&#xff0c;中文环境中又常称均方差&#xff0c;但不同于均方根误差&#xff08;meansquared error&#xff0c;均方根误差是各数据…

22.状态机设计--可乐机设计(投币三元出一瓶可乐)

理论知识&#xff1a; &#xff08;1&#xff09;状态机简写为FSM&#xff08;Finite State Machine&#xff09;&#xff0c;也称为同步有限状态机。同步是指状态的变化都是在时钟的边沿发送变化&#xff0c;有限值得是状态的个数是可数的。 &#xff08;2&#xff09;分类&…

7/8 复盘

后端数据传输&#xff1f; 后端代码的耦合&#xff1a;打点调用、方法调用、接口、继承。 Dao、Service、servlet(controller)各层的作用&#xff1f; Dao负责与数据库交互&#xff0c;执行SQL语句&#xff0c;例如简单的增删改查等等。&#xff08;要创建对应的接口和实现类…

非营利组织的数据治理之路

在非营利组织的日常运营中&#xff0c;数据不仅是记录过去活动的工具&#xff0c;更是指导未来决策、衡量项目成效、增强公众信任以及优化资源配置的关键要素。 然而&#xff0c;随着数据量的不断增长和复杂性的提升&#xff0c;非营利组织在享受数据带来的便利的同时&#xf…

Java面试八股之MySQL中的MVCC是什么,作用是什么?

MySQL中的MVCC是什么&#xff0c;作用是什么&#xff1f; MySQL中的MVCC&#xff08;Multiversion Concurrency Control&#xff0c;多版本并发控制&#xff09;是一种并发控制机制&#xff0c;用于提高数据库的并发性能并确保数据的一致性&#xff0c;特别是在高并发读写场景…

初阶C++(二)

初阶C&#xff08;二&#xff09; 1. 重载函数&#xff08;一&#xff09;对于重载函数的理解&#xff08;二&#xff09;重载函数分类2.引用&#xff08;一&#xff09; 引⽤的概念和定义&#xff08;二&#xff09;引用的使用&#xff08;三&#xff09;const引用 1. 重载函数…

无缝协作:如何实现VMware与Ubuntu虚拟机的剪切板共享!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 剪贴板共享 📒📝 VMware设置📝 安装VMware Tools或open-vm-tools📝 验证剪贴板共享功能⚓️ 相关链接 🚓️📖 介绍 📖 无缝的剪贴板共享是提高工作效率的关键。在VMware和Ubuntu虚拟机的协同工作中,能够直接在宿…

通用机器人里程碑!MIT提出策略组合框架PoCo,解决数据源异构难题,实现机器人多任务灵活执行

18 位人形机器人充当「迎宾」人员&#xff0c;整齐划一向嘉宾挥手&#xff0c;这是 2024 世界人工智能大会上的一个震撼场景&#xff0c;让人们直观感受到了今年机器人的飞速发展。 图源&#xff1a;甲子光年 1954 年&#xff0c;世界上第一台可编程机器人「尤尼梅特」在通用汽…

三维点云配准 -- ICP 算法原理及推导

三维点云配准 -- ICP 算法原理及推导 - 知乎 (zhihu.com) 三维点云配准 -- ICP 算法 | Yilins Blog Alex Segal - Research - Generalized-ICP (ox.ac.uk)

一个项目学习Vue3---if、else、show、for的使用

观察下面代码学习这部分内容 <!--条件和列表渲染--> <template><button click"stateChang">状态切换{{ flag }}</button><span v-if"flag">显示这个</span><span v-else-if"!flag">显示那个Else<…

算法力扣刷题记录 三十八【二叉树的层次遍历应用一及二叉树构建】

前言 二叉树层序遍历应用题目。 记录三十八 【二叉树的层次遍历应用一】 继续。 一、【107.二叉树的层次遍历 II】 题目 给你二叉树的根节点 root &#xff0c;返回其节点值 自底向上的层序遍历 。 &#xff08;即按从叶子节点所在层到根节点所在的层&#xff0c;逐层从左向…