使用python在ParaView中加载OpenFOAM案例很简单:
ofReader = OpenFOAMReader(FileName='<some OpenFOAM case directory>')
Run Code Online (Sandbox Code Playgroud)
但是,默认情况下internalMesh,在阅读器对象中仅选择网格区域。
使用ParaView的trace方法没有任何帮助,因为对象的MeshRegion属性OpenFOAMReader只是设置为我通过鼠标输入选择的网格区域的值:
ofReader.MeshRegions = ['internalField', 'patch1', 'patch2']
Run Code Online (Sandbox Code Playgroud)
由于我事先不知道网格区域的名称是什么,因此无法在python ParaView脚本中生成这样的行。
如何使用python脚本和仅使用ParaView Python API功能在ParaView中选择和加载OpenFOAM案例的所有网格区域?
我正在尝试使用paraview-python脚本以x3d格式导出OpenFOAM结果。当我通过paraview图形界面进行操作时,它可以工作并且可以在Blender中可视化结果,请参见下图
但是,当我尝试使用以下脚本执行相同的操作时
from paraview.simple import *
import fnmatch
import os
import shutil
#create alist of all vtk files
vtkFiles = []
for root, dirnames, filenames in os.walk('.'):
for filename in fnmatch.filter(filenames, '*.vtk'):
vtkFiles.append(os.path.join(root, filename))
vtkFilesGroups=[
'U',
]
def ResetSession():
pxm = servermanager.ProxyManager()
pxm.UnRegisterProxies()
del pxm
Disconnect()
Connect()
def x3dExport(output,r):
#export in x3d format
exporters = servermanager.createModule("exporters")
Show(r)
view = GetActiveView()
render = Render()
x3dExporter = exporters.X3DExporter(FileName=output)
x3dExporter.SetView(view)
x3dExporter.Write()
ResetSession()
# group VTK files by gruop (fields in openfoam "vtkFilesGroups")
# …Run Code Online (Sandbox Code Playgroud) 我在 Ubuntu 上安装了 OpenFOAM(它本身位于 Linux 的 WSL Windows 子系统上)。我在尝试启动时遇到问题paraFoam,出现以下错误:
Invalid $PV_PLUGIN_PATH and -plugin-path= not defined
No supplementary ParaView/OpenFOAM reader modules
Using builtin reader: paraFoam -vtk
paraview: error while loading shared libraries: libQt5Core.so.5: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
它似乎来自 paraview 或 Qt,但我不知道该怎么做。该文件libQt5Core.so.5确实存在于计算机中
当我打字时qmake --version我有
QMake version 3.1
Using Qt version 5.12.8 in /usr/lib/x86_64-linux-gnu
Run Code Online (Sandbox Code Playgroud) 我正在打印一些来自C++程序的数据,以便由ParaView处理/可视化,但我遇到浮点数问题.Paraview支持Float32和Float64数据类型.Float64相当于两倍,典型限制为+/- 1.7e +/- 308.但是,我的代码是打印数字,如6.5e-318.这是在读取数据时抛出ParaView中的错误.我已经验证将这些小数字舍入为零会使ParaView中的错误消失.我不知道为什么我有这样的"高精度"输出,可能是因为有些数字的存储精度高于双精度.例如,以下代码在我的系统上重现相同的行为:
#include <iostream>
int main(void)
{
const double var1 = 1.0e-318, var2 = 1.5e-318;
std::cout << 1.0e-318 << std::endl;
std::cout << var1 << std::endl;
std::cout << var1 - var2 << std::endl;
std::cout.setf(std::ios_base::fixed | std::ios_base::scientific, std::ios_base::floatfield);
std::cout << 1.0e-318 << std::endl;
std::cout << var1 << std::endl;
std::cout << var1 - var2 << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我的输出是:
9.99999e-319
9.99999e-319
-4.99999e-319
9.99999e-319
9.99999e-319
-4.99999e-319
Run Code Online (Sandbox Code Playgroud)
我的系统是Mac OS X Snow Leopard,我用GCC 4.2和GCC 4.6测试了上面的标志-m32,-m64并且-ffloat-store(不确定这是否有用).
实际上我的输出很好,但对于ParaView则没有.我只是想知道为什么我有这个区别.我很可能忽略了与浮点数相关的东西,这可能很重要.请问你能给我一些关于双打输出/数值行为的线索吗?
c++ double-precision long-double floating-point-precision paraview
我在Paraview中有几个数据源,并将所有这些数据源(使用Clip过滤器)剪辑到我此刻需要查看的内容.将剪辑域设置为三次(或更多次)非常有意义.是否可以以某种方式共享这些参数,或将相同的过滤器实例应用于多个数据源?
我的序列遗留VTK文件,例如:file_0.vtk,file_1.vtk,file_2.vtk,我可以在的Paraview作为时间序列(打开这里所描述)为file_..vtk,和文件的顺序可以查看和使用时间控制动画。我目前正在使用ParaView 4.4.0。
旧版VTK文件如下所示,其中timestep值存储在标题(第二行)中:
# vtk DataFile Version 3.0
vtk output: file at time 0.0
ASCII
...
Run Code Online (Sandbox Code Playgroud)
但是,在ParaView中,时间步长值假定与索引相同,即索引0为时间0.0,索引1为时间1.0,索引2为时间2.0。并且添加AnnotateTime筛选器还会显示这些时间步长作为时间步长索引。
但是,我的文件使用可变的时间步长,如每个文件的标题中所述。(我认为传统的VTK格式无法指定这些值)。我已经查看了ParaView的应用程序,以查看是否可以导入或修改这些值,但找不到。
使用内置的Python Shell,这是我用LegacyVTKReader创建对象的不幸尝试:
files = ['file_0.vtk', 'file_1.vtk', 'file_2.vtk']
times = [0.0, 0.022608, 0.73781]
# First attempt
r = LegacyVTKReader(FileNames=files, TimestepValues=times)
print(r.TimestepValues) # [0.0, 1.0, 2.0]
# Second attempt to try and fix it
r.TimestepValues = times
print(r.TimestepValues) # [0.0, 0.022608, 0.73781]
Show(r)
Run Code Online (Sandbox Code Playgroud)
在我添加一个AnnotateTimeFilter之前,它将在对象“ Information”对话框中正确显示,将AnnotateTimeFilter重置为0到0、1到1和2到2。
是否可以使用鼠标单击或Python更新ParaView中旧VTK对象的每个索引的时间步值?
我在我的 Ubuntu 18.04 系统上安装了 paraview 5.6,我想编写一个 python 脚本来显示一个 vtkUnstructuredGrid。
import numpy as np
from paraview.simple import *
import paraview.vtk as vtk
from paraview.vtk.numpy_interface import dataset_adapter as dsa
import paraview.vtk.util.numpy_support as vnp
node = np.array(
[[0.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
[1.0, 1.0, 0.0],
[0.0, 1.0, 0.0]], dtype=np.float)
cell = np.array([[3, 1, 2, 0], [3, 3, 0, 2]], dtype=np.int)
NC = cell.shape[0]
points = vtk.vtkPoints()
points.SetData(vnp.numpy_to_vtk(node))
cells = vtk.vtkCellArray()
cells.SetCells(NC, vnp.numpy_to_vtkIdTypeArray(cell))
uGrid =vtk.vtkUnstructuredGrid()
uGrid.SetPoints(points)
uGrid.SetCells(vtk.VTK_TRIANGLE, cells)
# how to put uGrid …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 paraview 来绘制 xy 图。我想要的图只是 x 和 y 之间的线性关系。所以我将我的数据文件 (data.csv) 导入到 paraview 中。我的数据如下所示:
X Y
0 0
1 1
2 6
3 8
4 15
Run Code Online (Sandbox Code Playgroud)
然后我将分隔符设置为“”。之后我可以看到数据在 x 和 y 列中排序。但我没有找到让 paraview 绘制数据的选项。有什么帮助吗?谢谢你。这是我的界面的屏幕截图:
我在 VTK 中制作了一个 blob 的图片。Blob 由许多三角形金字塔组成,它们的顶点位于 Blob 的中心。

我想查看所有线条,但 Paraview 隐藏了 blob 的所有内部线条。是否可以使这些线条可见?
我正在尝试使用 IDLE 以交互方式控制 Paraview。这将涉及从 IDLE 发送命令并查看 Paraview 中发生的更改。我宁愿不使用in-Paraview python shell。
到目前为止,我已经成功地从 IDLE 导入了 Paraview 模块(simple、servermanager 等)。但是发送的命令不会反映在 Paraview 中。例如:
>>> from paraview.simple import *
>>> cone = Cone()
>>> Show()
>>> Render()
Run Code Online (Sandbox Code Playgroud)
确实创建了一个锥体。然而,锥体输出到一个新的、独立的 OpenGL 窗口,而不是 Paraview GUI。
是否可以使用 IDLE 以交互方式控制 Paraview?如果是这样如何做到这一点?谢谢
paraview ×10
python ×5
openfoam ×3
blender ×1
c++ ×1
long-double ×1
pipeline ×1
pvpython ×1
python-2.7 ×1
python-idle ×1
time-series ×1
vtk ×1
x3d ×1