可编程过滤器可将时间相关的单元/点数据添加到 paraview 中的 vtu/pvtu 非结构化网格

问题描述 投票:0回答:1

我在paraview中编写了一个python可编程过滤器,给定一个非结构化网格对象(vtu/pvtu原始格式)和点/单元格的paraview提取,修改用户选择的单元格/点数据在选定点中的值网格:

dof = "ax_bc"
value = 1.0

import vtk
import numpy as np
# Example usage
input0 = inputs[0]
input1 = inputs[1]

# Get the input data objects
if input0 is None or input1 is None:
    raise ValueError("One or both input VTK objects are missing.")

# Get the point data arrays
point_data0 = input0.GetPointData()
point_data1 = input1.GetPointData()

# Get the "array one" point data array in the first input
array_one = point_data0.GetArray(dof)
if array_one is None:
    raise ValueError("The first input VTK object does not have a " + dof + " array.")

# Get the vtkOriginalPointIds array from the second input
original_ids = point_data1.GetArray("vtkOriginalPointIds")
if original_ids is None:
    raise ValueError(
        "The second input VTK object does not have a 'vtkOriginalPointIds' array."
    )

# Convert VTK arrays to NumPy arrays
if np.any((original_ids < 0) | (original_ids >= input0.GetNumberOfPoints())):
    raise IndexError("One or more original IDs are out of bounds for the first input VTK object.")

# Assign values to the dofs based on the original ids
array_one[original_ids] = value

point_data0.append(array_one, dof)
point_data0.Modified()

现在我想使用另一个可编程过滤器(或者如果不可能,使用 paraview shell 脚本或 python 脚本)将时间相关的单元/点数据添加(设置新的单元/点数据并修改)到我的网格。我发现关于如何在 python/vtu 非结构化网格中使用时间并使其对 paraview 可读的文档非常差。例如,我想添加一个点数据数组“ax_bc”作为时间相关数组。我应该走哪条路?

我找到了一些涉及多块数据集的解决方案,但我也读到了涉及并行化时的后续问题(我需要导出为 pvtu 格式)。

python vtk paraview
1个回答
0
投票

在可编程滤波器中,您可以获取当前的流水线时间,然后相应地设置数据数组。

executive = self.GetExecutive()
outInfo = executive.GetOutputInformation(0)
return outInfo.Get(executive.UPDATE_TIME_STEP()) if outInfo.Has(executive.UPDATE_TIME_STEP()) else None

如果您想创建时间步(即您的输入不是暂时的,但输出应该是),那么您应该添加一个

RequestInformation
脚本。在此脚本中,设置
TIME_STEPS()
TIME_RANGE()
信息键以提供给全时值列表。

请参阅此处的示例:https://docs.paraview.org/en/latest/ReferenceManual/pythonProgrammableFilter.html#reading-a-csv-file-series

© www.soinside.com 2019 - 2024. All rights reserved.