标签: paraview

Paraview:在渲染窗口中更改轴的纵横比

我在3D域中有一个标量字段(幸运的是它可以在结构化网格中表示).但是,一个轴域比另外两个轴大得多.

为清楚起见,我的'vts'文件等同于下面的文件:

from pyevtk.hl import gridToVTK
import numpy as np
import random as rnd

# Dimensions
nx, ny, nz = 6, 6, 30
lx, ly, lz = 1.0, 1.0, 10.0
dx, dy, dz = lx/nx, ly/ny, lz/nz

ncells = nx * ny * nz
npoints = (nx + 1) * (ny + 1) * (nz + 1)

# Coordinates
X = np.arange(0, lx + 0.1*dx, dx, dtype='float64')
Y = np.arange(0, ly + 0.1*dy, dy, dtype='float64')
Z = np.arange(0, lz + …
Run Code Online (Sandbox Code Playgroud)

python vtk paraview

10
推荐指数
1
解决办法
4117
查看次数

paraview python脚本等效于File-> save Data

我想自动从vtk/vtu文件导出csv文件.

现在,我采取的步骤是:

  • 公开审查
  • 在pvd文件中加载,该文件存储有关所有vtu文件的信息(在我的PDE模拟中每个时间步骤一个)
  • 转到左边的属性选项卡,点击'apply'
  • 文件 - >保存数据...提供基本文件名,选择'点'和'写所有时间步'

这会为每个时间步执行一个名为basefilename#timestepno#.csv的csv文件

有没有办法从命令行执行此操作(计算机上没有X服务器正在进行计算),例如使用python接口?

python paraview

8
推荐指数
1
解决办法
6480
查看次数

Paraview:围绕给定轴旋转

默认的3D旋转模式是一种滚球模式.是否可以围绕给定的轴(比如x,y或z轴)进行交互式旋转?我看到你可以通过在视图详细信息对话框中键入数字来实现,但这很痛苦.

paraview

7
推荐指数
2
解决办法
8648
查看次数

在Paraview中添加自己的GUI

我需要在paraview中添加我自己的自制qt gui.我听说应该允许的paraview插件.但我没有找到它的教程.如何在Paraview中添加按钮,复选框,组合框?有人能告诉我一个例子吗?提前致谢

paraview

6
推荐指数
1
解决办法
2886
查看次数

将3D numpy导出为VTK文件,以便在Paraview/Mayavi中查看

对于那些想要将简单的3D numpy数组(以及轴)导出到.vtk(或.vtr)文件以进行后期处理并在Paraview或Mayavi中显示的人,有一个名为PyEVTK的小模块就是这样做的.该模块支持结构化和非结构化数据等.不幸的是,即使代码在基于unix的系统中工作正常,我也无法在任何简单地使事情变得复杂的Windows安装上工作(不断崩溃).我联系了开发人员,但他的建议没有用

因此我的问题是:如何使用该from vtk.util import numpy_support函数将3D数组(函数本身不支持3D数组)导出到.vtk文件?有没有一种简单的方法可以在不创建vtkDatasets等的情况下完成它?

非常感谢!

numpy vtk paraview

6
推荐指数
2
解决办法
1万
查看次数

使用pvpython将数据文件类型读取器添加到paraview

我知道您可以将不同数据文件类型的读取器添加到paraview中,但是,所有人都在谈论在c ++中做很多VTK东西,以及(可能更糟)重新编译paraview以使其了解您的数据文件格式。另一方面,paraview还支持python中的脚本编写。也许是因为我对VTK不熟悉,但是对我来说,我只能从pvpython 操作 VTK对象。有什么方法可以使用pvpython动态地将阅读器添加到paraview中?

python vtk paraview pvpython

6
推荐指数
1
解决办法
779
查看次数

从多个MPI输出合成VTK文件

对于盖驱动腔(CFD)的Lattice Boltzmann模拟,我将立方域分解为(也是立方)8个子域,这些子域由8个等级独立计算。每个MPI等级都会为每个时间步生成一个VTK文件,并且由于我使用的是ParaView,因此我希望将整个内容可视化为一个多维数据集。更具体地说明我要实现的目标:

  • 我有一个长度为8(每个方向的元素数)=> 8x8x8 = 512个元素的多维数据集。
  • 每个维度分配给2个等级,即每个等级处理4x4x4 = 64个元素。
  • 每个等级都会将结果写入lbm_out_<rank>.<timestep>.vtsVTK StructuredGrid格式的文件中。
  • 我想生成一个.pvts文件,该*.vts文件收集文件并将包含子域的文件合并为一个文件,ParaView可以将其视为整个域。

不幸的是,我遇到了许多问题,因为我觉得ParaView和VTK的文档记录非常差,并且来自ParaView的错误消息完全没有用。

我有以下*.pvts文件,其中包括一个幽灵层和:

<?xml version="1.0"?>
<VTKFile type="PStructuredGrid" version="0.1" byte_order="LittleEndian">
    <PStructuredGrid WholeExtent="0 7 0 7 0 7 " GhostLevel="1">
        <PPoints>
            <PDataArray NumberOfComponents="3" type="Float32" />
        </PPoints>
        <Piece Extent="0 4 0 4 0 4" Source="lbm_out_0.0.vts"/>
        <Piece Extent="3 7 0 4 0 4" Source="lbm_out_1.0.vts"/>
        <Piece Extent="0 4 3 7 0 4" Source="lbm_out_2.0.vts"/>
        <Piece Extent="3 7 3 7 0 4" Source="lbm_out_3.0.vts"/>
        <Piece Extent="0 4 0 …
Run Code Online (Sandbox Code Playgroud)

parallel-processing mpi scientific-computing vtk paraview

6
推荐指数
1
解决办法
1361
查看次数

Python 中的 10,000 多个点 3D 散点图(带快速渲染)

在性能方面,以下代码片段在mayavi.

import numpy as np
from mayavi import mlab

n = 5000
x = np.random.rand(n)
y = np.random.rand(n)
z = np.random.rand(n)
s = np.sin(x)**2 + np.cos(y)

mlab.points3d(x, y, z, s, colormap="RdYlBu", scale_factor=0.02, scale_mode='none')
Run Code Online (Sandbox Code Playgroud)

而是mayavi开始噎住了n >= 10000matplotlib, ( Axes3D.scatter) 中类似的 3d 绘图例程同样难以处理这种大小的数据集(为什么我首先开始研究mayavi)。

首先,在mayavi(琐碎的或非平凡的)中是否有一些我遗漏的东西会使 10,000 多个点散点图更容易渲染?

其次,如果上面的答案是否定的,那么mayavi我还需要哪些其他选项(在python 包中或不同的 python 包中)来绘制这种量级的数据集?

我标记 ParaView 只是为了添加在 ParaView 中渲染我的数据非常顺利,这让我相信我并没有试图做任何不合理的事情。

更新:

将模式指定为 2D 字形对加快速度大有帮助。例如

mlab.points3d(x, y, z, s, colormap="RdYlBu", scale_factor=0.02,
              scale_mode='none', mode='2dcross') …
Run Code Online (Sandbox Code Playgroud)

python matplotlib mayavi paraview

6
推荐指数
1
解决办法
5032
查看次数

将参数传递给单元魔术%% script

与这个问题最相关的问题是:在Ipython中,如何将参数传递给单元格,就像它是自己的脚本一样?

我正在编写一个ipython笔记本进行模拟,然后在paraview中创建动画。我这样做的方法是使用magic命令运行单元

%%script pvpython
Run Code Online (Sandbox Code Playgroud)

因为paraview有自己的解释器。问题是我需要它将vtu文件的目录作为参数传递给它(这是IPython内核中的变量)。到目前为止,我还无法弄清楚这一点。我试过了:

%%script pvpython path/to/files
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('foo')
args = parser.parse_args()
print(args.foo)
Run Code Online (Sandbox Code Playgroud)

但这会导致错误:`未知参数:path / to / files,因为该参数被传递给了magic命令而不是python脚本。有办法解决这个问题吗?

编辑:这不同于链接的问题,因为我使用的是单元魔术而不是线魔术。我希望将所有代码单独在笔记本中可见。

python ipython paraview

6
推荐指数
1
解决办法
439
查看次数

ParaView 计算器 atan2

我目前正在尝试使用 ParaView 计算器过滤器将给定的笛卡尔坐标 (x,y,z) 转换为球面坐标 (r, theta, phi),其中 theta 是极角,phi 是方位角。我想在四分之一球体的域上执行此操作:

(r 在 [r_inn, r_out] 中,theta 在 [0, pi] 中,phi 在 [0, 2pi] 中。

到目前为止,我定义了以下结果变量,它们给出了预期的结果:

r = sqrt(坐标X^2 + 坐标Y^2 + 坐标Z^2)

θ = acos(坐标Z/r)

对于方位矢量,我知道在使用时必须注意 (x,y) 的象限

phi = atan(y/x)。

这通常是使用 C 中的atan2等额外函数来实现的。计算器过滤器或 Python 计算器过滤器似乎没有提供这样的函数。

有没有简单的方法可以使用图形界面实现像atan2这样的东西?

非常感谢任何评论,谢谢!

更新:

Neil Twist 指出,在 Python 计算器中,反正切函数可以称为 arctan2(y, x),我现在面临的问题是无法通过变量 coordsX/Y 访问单元格的坐标/Z,可在简单的计算器过滤器中使用。

现在的问题是:如何访问 Python 计算器中的单元格坐标?

atan2 paraview

5
推荐指数
1
解决办法
2960
查看次数