Plot3d 网格数据格式

这篇具有很好参考价值的文章主要介绍了Plot3d 网格数据格式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在计算流体力学中,PLOT3D文件格式是用于存储网格和结果数据的标准文件格式。PLOT3D是由NASA艾姆斯研究中心于1982年由Pieter Buning创建的,至今仍是一种常用的文件格式。它只能存储结构化网格。结构化网格允许随机访问,即通过知道块编号、i位置、j位置和k位置,可以提取任何网格点值或结果值。此外,给定任何值的位置,可以确定块编号、i位置、j位置和k位置。这使得迭代一系列体积元素并计算CFD分析所需的所有属性变得简单。

最基本的格式包括两个不同的文件,网格文件(G文件)和解决方案文件(Q文件)。使用的文件扩展名各不相同,但.q是q文件的常见扩展名。网格文件可以使用.g、.x、.xy或.xyz等扩展名。网格文件包含解决方案网格的坐标,而解决方案文件包含CFD解决方案的典型信息、流动密度、流动动量(矢量)和流动能量。数据可以以二进制或ASCII文本格式存储,浮点值可以是单精度或双精度。该格式还有多块和非结构化扩展,因此通常不清楚一组特定的名义上的PLOT3D格式文件是如何在二进制级别格式化的,而不参考创建它们的软件。使用十六进制编辑器进行检查可能有助于确定格式变量。

可能存在包含不同类型辅助数据的其他文件。

“格式化”FORTRAN(ASCII文本)数据文件通常在行尾使用CR-LF(0x0d 0x0a)分隔符,但换行符取决于实现。“未格式化”FORTRAN(二进制)文件的变量排列顺序相同,但通常缺少分隔符,如换行符。二进制格式将取决于实现和机器。

一个多块、三维Q文件以一个整数开始,表示它自己行上的块M的数量。接下来的M行包含每个块的三个整数,它们给出了每个块的i、j和k维度大小。接下来将读取M块。每个块以包含四个浮点值、自由流马赫数、自由流迎角、自由流雷诺数和时间的线开始。块的其余部分包含在i、j、k、m(块索引)和最外层n上迭代的值,后者通过5个部分、密度、动量的3个分量,最后是能量进行计数。

此外,可以简化格式,以便只分析二维问题或省略iBlank参数。iBlank参数指示单元是物理单元还是非物理单元。例如,如果两个PLOT3D网格相交,一个是飞机机身,另一个是机翼,则不应分析内部单元。这些是iBlank单元格,值为0。

总结:

PLOT3D是一个计算机图形程序,旨在可视化计算流体力学的网格和解决方案。

PLOT3D文件可以是ASCII, 也可是Fortran unformatted 或 C binary形式。
PLOT3D文件分为网格文件(XYZ 文件), 空气动力学结果文件 (Q 文件)和通用结果文件(函数文件 + 函数名称文件)。网格文件中可加入所谓的IBlank参数。

IBlank参数的定义:
IBlank是在每一网格点上给出的一个正数值,定义如下:
0 - 计算域之外,非流体点
1 - 正常点
2 - 固面边界点
负数 - 分块网格界面点,其数值为相邻网格块的块号

以下为各文件使用FORTRAN读入的语句,所有文件均为无格式文件。

网格文件(XYZ文件):

XYZ 文件, 单块(single-block):
READ(IUNIT) IMAX,JMAX,KMAX
READ(IUNIT) (((X(I,J,K),I=1,IMAX),J=1,JMAX),K=1,KMAX),&
            (((Y(I,J,K),I=1,IMAX),J=1,JMAX),K=1,KMAX),&
            (((Z(I,J,K),I=1,IMAX),J=1,JMAX),K=1,KMAX)

XYZ 文件, 单块(single-block), 加 IBlank:
READ(IUNIT) IMAX,JMAX,KMAX
READ(IUNIT) (((X(I,J,K),I=1,IMAX),J=1,JMAX),K=1,KMAX),&
            (((Y(I,J,K),I=1,IMAX),J=1,JMAX),K=1,KMAX),&
            (((Z(I,J,K),I=1,IMAX),J=1,JMAX),K=1,KMAX),&
            (((IBLANK(I,J,K),I=1,IMAX),J=1,JMAX),K=1,KMAX)

XYZ 文件, 二维, 单块(single-block):
READ(IUNIT) IMAX,JMAX
READ(IUNIT) ((X(I,J),I=1,IMAX),J=1,JMAX),&
            ((Y(I,J),I=1,IMAX),J=1,JMAX)

XYZ 文件, 多块(multi-block)
READ(IUNIT) NBLOCK
READ(IUNIT) (IMAX(N),JMAX(N),KMAX(N),N=1,NBLOCK)
DO N=1,NBLOCK
READ(IUNIT) (((X(I,J,K),I=1,IMAX(N)),J=1,JMAX(N)),K=1,KMAX(N)),&
            (((Y(I,J,K),I=1,IMAX(N)),J=1,JMAX(N)),K=1,KMAX(N)),&
            (((Z(I,J,K),I=1,IMAX(N)),J=1,JMAX(N)),K=1,KMAX(N))
ENDDO

XYZ 文件, 多块(multi-block), 加 IBlank:
READ(IUNIT) NBLOCK
READ(IUNIT) (IMAX(N),JMAX(N),KMAX(N),N=1,NBLOCK)
DO N=1,NBLOCK
READ(IUNIT) (((X(I,J,K),I=1,IMAX(N)),J=1,JMAX(N)),K=1,KMAX(N)),&
            (((Y(I,J,K),I=1,IMAX(N)),J=1,JMAX(N)),K=1,KMAX(N)),&
            (((Z(I,J,K),I=1,IMAX(N)),J=1,JMAX(N)),K=1,KMAX(N)),&
            (((IBLANK(I,J,K),I=1,IMAX(N)),J=1,JMAX(N)),K=1,KMAX(N))
ENDDO

XYZ 文件, 二维, 多块(multi-block)
READ(IUNIT) NBLOCK
READ(IUNIT) (IMAX(N),JMAX(N),N=1,NBLOCK)
DO N=1,NBLOCK
READ(IUNIT) ((X(I,J),I=1,IMAX(N)),J=1,JMAX(N)),&
            ((Y(I,J),I=1,IMAX(N)),J=1,JMAX(N))
ENDDO

空气动力学结果文件 (Q 文件)(Q 文件定义过窄,现已很少使用。):

Q 文件专为外流空气动力学设计,对三维流动,数组变量如下:
Q1 - 无量纲 密度
Q2 - 无量纲 X-动量
Q3 - 无量纲 Y-动量
Q4 - 无量纲 Z-动量
Q5 - 无量纲 总能
另加4个参数:
FSMACH - 自由流马赫数
ALPHA  -  攻角
RE   - 雷诺数
TIME  - 时间

Q 文件, 单块(single-block):
READ(IUNIT) IMAX,JMAX,KMAX
READ(IUNIT) FSMACH,ALPHA,RE,TIME
READ(IUNIT) ((((Q(I,J,K,M),I=1,IMAX),J=1,JMAX),K=1,KMAX),M=1,5)

Q 文件, 二维, 单块(single-block):
READ(IUNIT) IMAX,JMAX
READ(IUNIT) FSMACH,ALPHA,RE,TIME
READ(IUNIT) (((Q(I,J,M),I=1,IMAX),J=1,JMAX),M=1,4)

Q 文件, 多块(multi-block):
READ(IUNIT) NBLOCK
READ(IUNIT) (IMAX(N),JMAX(N),KMAX(N),N=1,NBLOCK)
DO N=1,NBLOCK
READ(IUNIT) FSMACH,ALPHA,RE,TIME
READ(IUNIT)((((Q(I,J,K,M),I=1,IMAX(N)),J=1,JMAX(N)),K=1,KMAX(N)),M=1,5)
ENDDO

Q 文件定义过窄,现已很少使用。大多CFD工作者使用通用结果文件,即
所谓的函数文件(function file)。函数文件中可定义任意数量的数组变量,
其名称在另一函数名称文件(function name file)中给出。

函数文件:
函数文件, 单块(single-block):
READ(IUNIT) IMAX,JMAX,KMAX
READ(IUNIT) ((((F(I,J,K,M),I=1,IMAX),J=1,JMAX),K=1,KMAX),M=1,NFUN)

函数文件, 二维, 单块(single-block):
READ(IUNIT) IMAX,JMAX
READ(IUNIT) (((F(I,J,M),I=1,IMAX),J=1,JMAX),M=1,NFUN)

函数文件, 多块(multi-block):
READ(IUNIT) NBLOCK
READ(IUNIT) (IMAX(N),JMAX(N),KMAX(N),N=1,NBLOCK)
DO N=1,NBLOCK
READ(IUNIT) ((((F(I,J,K,M),I=1,IMAX(N)),J=1,JMAX(N)),K=1,KMAX(N)),M=1,NFUN)
ENDDO

函数名称文件:
函数名称文件是一ASCII文件,列有函数文件中数组变量的对应名称。以下为一例子:
density
pressure
u;velocity vector
v
w
temperature
turbulence energy
...
...

注意事项:
1 名称的数量和排列次序与函数文件中数组变量相同。
2 分割号 ";" 表示向量行的开始。";"之右为向量名,";"之左为X分量。其下两行为Y分量和Z分量。

http://www.grc.nasa.gov/WWW/wind/valid/plot3d.html
下面例子假设网格文件句柄为7,结果文件句柄为8。

2D, Whole, Formatted, Single-Block Grid and Solution

      parameter ( imax = 100 )
      parameter ( jmax = 100 )

      integer i
      integer j
      integer m
      integer n
      integer ni
      integer nj

      real mach   ! freestream Mach number
      real alpha ! freestream angle-of-attack
      real reyn   ! freestream Reynolds number
      real time   ! time

      real x(imax,jmax)
      real y(imax,jmax)

      real q(imax,jmax,4)

      open ( unit=7, form='formatted', file='2D.x' )
      open ( unit=8, form='formatted', file='2D.q' )

      read(7,*) ni, nj
      read(7,*)
     &    (( x(i,j), i=1,ni), j=1,nj),
     &    (( y(i,j), i=1,ni), j=1,nj)

      read(8,*) ni, nj
      read(8,*) mach, alpha, reyn, time
      read(8,*) ((( q(i,j,n), i=1,ni), j=1,nj), n=1,4)

3D, Whole, Unformatted, Multi-Block Grid and Solution

      parameter ( imax = 100 )
      parameter ( jmax = 100 )
      parameter ( kmax = 100 )
      parameter ( nbmax = 10 )

      integer i
      integer j
      integer m
      integer n
      integer nblocks
      integer ni (nbmax)
      integer nj (nbmax)
      integer nk (nbmax)

      real mach   ! freestream Mach number
      real alpha ! freestream angle-of-attack
      real reyn   ! freestream Reynolds number
      real time   ! time

      real x(imax,jmax,kmax,nbmax)
      real y(imax,jmax,kmax,nbmax)
      real z(imax,jmax,kmax,nbmax)

      real q(imax,jmax,kmax,nbmax,5)

      open ( unit=7, form='unformatted', file='3D.x' )
      open ( unit=8, form='unformatted', file='3D.q' )

      read(7) nblocks
      read(7) ( ni(m), nj(m), nk(m), m = 1, nblocks )
      do m = 1, nblocks
        read(7)
     &    ((( x(i,j,k,m), i=1,ni(m)), j=1,nj(m)), k=1,nk(m)),
     &    ((( y(i,j,k,m), i=1,ni(m)), j=1,nj(m)), k=1,nk(m)),
     &    ((( z(i,j,k,m), i=1,ni(m)), j=1,nj(m)), k=1,nk(m))
      enddo

      read(8) nblocks
      read(8) ( ni(m), nj(m), nk(m), m = 1, nblocks )
      do m = 1, nblocks
        read(8) mach, alpha, reyn, time
        read(8)
     &    (((( q(i,j,k,m,n), i=1,ni(m)), j=1,nj(m)), k=1,nk(m)), n=1,5)
      enddo文章来源地址https://www.toymoban.com/news/detail-449814.html

到了这里,关于Plot3d 网格数据格式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ArcGIS Pro 转换Smart3D生成的倾斜3D模型数据osgb——创建集成网格场景图层包

    最近在做Arcgis 批处理的一些工作,然后再学习Python的同时,偶然觉得arcgis Pro是个好东西呢?然后结合近期的Smart3D倾斜3D模型数据,是否可以在arcgis里查看呢?带着这样的疑问和好奇,开始了arcgis Pro的学习,从安装到自学。找到了方法。 就是使用arcgis Pro创建集成网格场景图

    2023年04月19日
    浏览(50)
  • 流体力学控制方程——能量方程

    这里仍然采用随流体运动的无穷小流体微团为研究对象推导能量方程。根据热力学第一定律,对于随流体运动的微团模型而言,其满足能量守恒定律,即: 流体微团内能量的变化率=流入微团内的净热流量+体积力和表面力对微团做功的功率 首先来看体积力以及表面力对微团做

    2024年02月08日
    浏览(85)
  • 【深度学习】 Python 和 NumPy 系列教程(廿四):Matplotlib详解:2、3d绘图类型(10)3D箱线图(3D Box Plot)

    目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 3D线框图(3D Line Plot) 2. 3D散点图(3D Scatter Plot) 3. 3D条形图(3D Bar Plot) 4. 3D曲面图(3D Surface Plot) 5. 3D等高线图(3D Contour Plot) 6. 3D向量场图(3D Vector Field Plot) 7. 3D表面投影图

    2024年02月03日
    浏览(49)
  • 计算机视觉 用于网格/点云等数据可视化的Python库

            很长一段时间,人们主要使用Matplotlib在Python中可视化3D内容。但是它不支持 GPU 硬件加速,所以很多人使用点云库(PCL)作为网格和点云可视化和分析的工具。PCL当然是用于 3D 分析的最佳库之一,而且它是用 C++ 构建的,Python包装器仅包含主PCL库功能的一小部分,

    2024年02月04日
    浏览(51)
  • Phoenix FD(火凤凰全能流体动力学3Dmax插件)

    Phoenix FD是专为艺术家打造的全能流体动力学插件,可以模拟真实的火焰,烟雾,液体,海洋,泼溅,雾气等等效果。使用方便的参数来完善,调整并渲染各种基于物理的流体效果。与行业最主流的工具兼容,如: OpenVDB, Alembic, Krakatoa 和 thinkingParticles。与 3ds Max 无缝整合,并

    2024年02月06日
    浏览(42)
  • 3D三维数据格式分类(种类/软件平台)

    3D模型格式: .obj - 一种通用的3D模型格式 .dae - Collada (数字资产交换) .gltf , .glb - GL Transmission Format (用于3D场景和模型) .max - Autodesk 3ds Max (3D动画、模型制作、渲染) .fbx - Autodesk Filmbox格式 (3D动画和游戏开发) .ma , .mb - Maya (3D动画、模型制作和渲染) .3dxml - Dassault Systèmes的3DVIA (产品

    2024年02月03日
    浏览(35)
  • CGAL笔记之网格生成——3D 表面网格生成

    这个包提供了一个函数模板来计算一个近似于表面的三角形网格。 网格划分算法需要仅通过 oracle 了解要划分网格的表面,该 oracle 能够判断给定线段、线或射线是否与表面相交,并计算交点(如果有)。此功能使包足够通用,可以应用于各种情况。例如,它可用于对描述为

    2024年02月10日
    浏览(49)
  • 【深度学习】 Python 和 NumPy 系列教程(十五):Matplotlib详解:2、3d绘图类型(1):线框图(Wireframe Plot)

    目录  一、前言 二、实验环境 三、Matplotlib详解  1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 线框图(Wireframe Plot)         Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富

    2024年02月08日
    浏览(47)
  • 使用 Python 从点云生成 3D 网格

    从点云生成 3D 网格的最快方法 已经用 Python 编写了几个实现来从点云中获取网格。它们中的大多数的问题在于它们意味着设置许多难以调整的参数,尤其是在不是 3D 数据处理专家的情况下。在这个简短的指南中,我想展示从点云生成网格的最快和最简单的过程。 1、介绍

    2024年01月20日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包