使用pyevtk导出结构化VTK网格以供后处理

news2024/11/15 4:53:52

pyevtk简介

在计算流体力学CFD中,通常需要处理三维网格数据,为了可视化,需要将其输出。本文介绍使用python的pyevtk库输出结构化网格,以供paraview进一步后处理。

代码

# **************************************************************
# * Example of how to use the high level gridToVTK function.   *
# * This example shows how to export a structured grid.        *
# **************************************************************

from pyevtk.hl import gridToVTK
import numpy as np

# 尺寸参数
lx, ly, lz = 3.0, 4.0, 5.0 #立方体的长宽高
nx_points, ny_points, nz_points = 3, 4, 5 #边上的节点数
n_points= nx_points*ny_points*nz_points #节点总数
nx_cells, ny_cells, nz_cells = nx_points-1, ny_points-1, nz_points-1 #边上的单元数
n_cells= nx_cells*ny_cells*nz_cells #单元总数
dx,dy,dz=lx/nx_cells,ly/ny_cells,lz/nz_cells #节点间距

# 节点坐标
x_vector = np.linspace(0,lx,nx_points) #x方向节点分布,向量
y_vector = np.linspace(0,ly,ny_points) #y方向节点分布,向量
z_vector = np.linspace(0,lz,nz_points) #z方向节点分布,向量
x_field,y_field,z_field=np.meshgrid(x_vector,y_vector,z_vector, indexing='ij',sparse=False) #x场,y场,z场张量,注意:indexing务必选择'ij'

# 物理量
pressure = np.random.rand(n_cells).reshape((nx_cells, ny_cells, nz_cells)) #随机压力场(存储在体心)
temp = np.random.rand(n_points).reshape((nx_points, ny_points, nz_points)) #随机温度场 (存储在节点)
velocity=(x_field**2+y_field**2+z_field**2, x_field**2+y_field**2+z_field**2,x_field**2+y_field**2+z_field**2) #自定义速度场(存储在节点)

# 输出VTK文件
gridToVTK(
    "./structured",
    x_field,
    y_field,
    z_field,
    cellData={"pressure": pressure},
    pointData={"temp": temp,"velocity":velocity},
)

gridToVTK函数用于将np数组转换为vtk文件并输出,x_field表示一个三层深的张量,描述了每个节点的x坐标。第一层表示x方向,第二层表示y方向,第三层表示z方向。x_field如下:

[[[0. 0. 0. 0. 0. 0.]
  [0. 0. 0. 0. 0. 0.]
  [0. 0. 0. 0. 0. 0.]
  [0. 0. 0. 0. 0. 0.]
  [0. 0. 0. 0. 0. 0.]]

 [[1. 1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1. 1.]
  [1. 1. 1. 1. 1. 1.]]

 [[2. 2. 2. 2. 2. 2.]
  [2. 2. 2. 2. 2. 2.]
  [2. 2. 2. 2. 2. 2.]
  [2. 2. 2. 2. 2. 2.]
  [2. 2. 2. 2. 2. 2.]]

 [[3. 3. 3. 3. 3. 3.]
  [3. 3. 3. 3. 3. 3.]
  [3. 3. 3. 3. 3. 3.]
  [3. 3. 3. 3. 3. 3.]
  [3. 3. 3. 3. 3. 3.]]]

y_field如下:

[[[0. 0. 0. 0. 0. 0.]
  [1. 1. 1. 1. 1. 1.]
  [2. 2. 2. 2. 2. 2.]
  [3. 3. 3. 3. 3. 3.]
  [4. 4. 4. 4. 4. 4.]]

 [[0. 0. 0. 0. 0. 0.]
  [1. 1. 1. 1. 1. 1.]
  [2. 2. 2. 2. 2. 2.]
  [3. 3. 3. 3. 3. 3.]
  [4. 4. 4. 4. 4. 4.]]

 [[0. 0. 0. 0. 0. 0.]
  [1. 1. 1. 1. 1. 1.]
  [2. 2. 2. 2. 2. 2.]
  [3. 3. 3. 3. 3. 3.]
  [4. 4. 4. 4. 4. 4.]]

 [[0. 0. 0. 0. 0. 0.]
  [1. 1. 1. 1. 1. 1.]
  [2. 2. 2. 2. 2. 2.]
  [3. 3. 3. 3. 3. 3.]
  [4. 4. 4. 4. 4. 4.]]]

z_field如下:

[[[0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]]

 [[0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]]

 [[0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]]

 [[0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]
  [0. 1. 2. 3. 4. 5.]]]

cellData指保存在体心的数据,pointData指保存在节点的数据。这些数据既可以所标量(如pressure和temp)也可以是矢量(如velocity)

结果

运行代码后会输出structured.vts文件,可用paraview打开查看

速度场:在这里插入图片描述

温度场:

在这里插入图片描述

压力场:

在这里插入图片描述

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

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

相关文章

LeetCode.209.长度最小的子数组

题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 输入输出实例…

【问题记录】mysql报错 ,mysql2 和 mysql 5.

错误2 和 错误5 都是由于注册表有问题: 由于我之前安装过MySQL,导致之前的配置没有删除。 解决: 搜索打开注册表编辑器: 注册表中找到MySQL: 修改路径: "D:\develop\mysql-8.0.39-winx64\bin\mysqld&quo…

基于Prometheus的HPA自动伸缩

基于Prometheus的HPA自动伸缩 背景 Kubernetes集群规模大、动态变化快,而且容器化应用部署和服务治理机制的普及,传统的基础设施监控方式已经无法满足Kubernetes集群的监控需求 需要使用专门针对Kubernetes集群设计的监控工具来监控集群的状态和服务质量…

python脚本:输入基因名,通过爬虫的方式获取染色体上的location。

本团队提供生物医学领域专业的AI(机器学习、深度学习)技术支持服务。如果您有需求,请扫描文末二维码关注我们。 python脚本:输入基因名,通过爬虫的方式获取染色体上的location。 def get_gene_location(gene_symbol):…

HDR以及CIS各厂家HDR方案

一.序言 为拥有更高动态范围,研究同仁们想出各种办法和策略,硬件和软件上都在快速更新迭代。 今天我们走进HDR ,明白什么是HDR,以及各种各样的HDR方案。 二.什么是HDR 讲一堆描述不如直接看公式 从公式可知传感器的满阱容量与暂态噪声的比值决定DR, 也可以认为TN为传…

进阶-4.视图、存储过程、存储函数、触发器

视图、存储过程、存储函数、触发器 1.视图1.1 介绍1.2 语法1.3 视图的检查选项1.4 视图的更新1.5 视图作用1.6 案例 2.存储过程21. 介绍2.2 特点2.3 语法2.4 变量2.4.1 系统变量2.4.2用户自定义变量2.4.3 局部变量 2.5参数2.6条件语句2.6.1 if 语法2.6.2 case 2.7循环结构2.7.1…

以GD32F103C8T6为例的核心板原理图PCB绘制学习笔记简单总结

目录 GD32F103C8T6核心板 设计流程 基础知识 部分原理图解析 排针连接 (H1 - PZ254V-12-8P): 晶振 封装 基础知识 C0603封装 C0805 F1210封装 保险丝 L0603 贴片电感 LED-0603 R0603 HDR-TH_8P-P2.54-V-M-R2-C4-S2.54 排针 按键(SW-SMD-T6X…

解决Java使用Jsoup后台调用天地图地理编码接口的几个问题

目录 前言 一、天地图的地理编码接口 1、相关的API介绍 2、响应接口 二、使用JSOUP调用相应接口面对的问题及应对 1、第一关访问路径的问题 2、第二关UnsupportedMimeTypeException 3、可能的http获取403问题 三、总结 前言 如果你现在的项目中有如下的需求,…

在pytorch中TensorBoard的使用

from torch.utils.tensorboard import SummaryWriter# writer的使用 # 创建实例 writer SummaryWriter("logs") # 存储位置在logs # 使用如下的两种方法 # writer.add_image() # 标量for i in range(100):writer.add_scalar("y x", i, i)writer.close() …

力扣 | 最长公共子序列 | 动态规划 | 最长公共子序列长度、最长公共子序列

文章目录 一、1143. 最长公共子序列二、求最长公共子序列三、变式一、1035. 不相交的线二、1312. 让字符串成为回文串的最少插入次数 一、1143. 最长公共子序列 LeetCode:1143. 最长公共子序列 这是一道典型的二维动态规划问题,甚至面试都能被面到。 这…

机器人开发--Pure Pursuit纯追踪介绍

机器人开发--Pure Pursuit纯追踪介绍 1 介绍1.1 概述1.2 发展历史1.3 EKF vs MPC vs Pure Pursuit1.4 PP 前探距离的影响 2 理解普渡大学--control-algorithms/basic-pure-pursuit准备导入必要的库什么是 Pure Pursuit 控制器?限制如何工作线圆交点线圆交点与边界选…

JUC-Synchronized原理进阶

轻量级锁 轻量级锁的使用场景:如果一个对象虽然有多线程要加锁,但加锁的时间是错开的(也就是没有竞争),那么可以使用轻量级锁来优化。轻量级锁对使用者是透明的,即语法仍然是 synchronized 假设有两个方法同…

机器学习:opencv图像识别--图片专项

目录 前言 一、读取图片 1.安装opencv库 2.读取彩色图片 3.读取灰度图 二、RGB 1.RGB的概念 2.颜色通道: 3.图像表示 4.代码实现单通道图像 三、ROI 1.代码实现 四、图片打码 五、图片组合 六、图片缩放 总结 前言 OpenCV(Open Source C…

Linux:Linux多线程

目录 线程概念 什么是线程 二级页表 线程的优点 线程的缺点 线程异常 线程用途 Linux进程VS线程 进程和线程 进程的多个线程共享 进程和线程的关系 Linux线程控制 POSIX线程库 线程创建 线程等待 线程终止 分离线程 线程ID及进程地址空间布局 线程概念 什么…

【CAN总线测试】——CAN数据链路层测试

从0开始学习CANoe使用 从0开始学习车载测试 相信时间的力量 星光不负赶路者,时光不负有心人。 目录 2.1.位时间 2.2.采样点测试 2.3.CAN报文ID和DLC一致性检查 2.4.预期帧接收测试 2.5.非预期帧接收测试 2.6.总线负载率 1.位时间 用例编号 TG2_TC1 测试目…

android aar适配uniapp

最近有商户需要接入我们sdk,但是我们都是android或者ios原生的,直接用又不能用,需要做适配,本文就教你一步步实现android aar适配uniapp。 官方参考教程:开发者须知 | uni小程序SDK 但是官方写的比较繁琐,好…

计算机毕业设计选题推荐-Cosplay论坛系统-Java/Python项目实战

✨作者主页:IT毕设梦工厂✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

代码随想录训练营day27|455.分发饼干,376.摆动序列,53. 最大子序和

分发饼干 题目 思路:把最大的饼干分给胃口最大的人,所以可以先对两个数组进行排序,然后用双指针从后往前依次比较。如果饼干能成功头尾,就让饼干组的指针往前移 int biscs.size()-1; int ig.size()-1;//小孩组 for(;i>0;i--…

【摆脱被360安全卫士荼毒:使用这2个软件就够了】

保持电脑健康从拒绝使用360安全卫士开始 提示:不使用360安全卫士,电脑更健康 游戏本被360卫士荼毒的差点报废,感觉在使用360安全卫士后,笔记本的散热风扇很暴躁,笔记本经常高温不退,若你也有这样的烦恼&am…

单元格里显示曲线

想要实现的效果如下&#xff1a;表格每一行都有一个曲线 TreeList与GridControl的设置方法类似。 1、先创建控件的数据源&#xff0c;我使用的是DataTable /// <summary>/// 生成一个DataTable/// </summary>/// <returns></returns>public static Da…