Faq
多相场可视化处理
多相场可视化处理
问题
如何将不同的相场在同一视图中可视化?
方案
使用pyvista库读取场变量数据,然后生成一个统一的场变量数据。
Python 代码示例
import numpy as np
import pyvista
import os
def transform(src, dest, phasenames):
vtkfile = src
grid = pyvista.read(vtkfile)
phi_vars = [grid.get_array(each) for each in phasenames]
# convert to numpy array
phi_vars = [np.array(each) for each in phi_vars]
# create a new array
phi = np.zeros_like(phi_vars[0])
phi[:] = -1.0
for i, each in enumerate(phi_vars):
phi[np.where(each > 0.6)] = i
# add scalar data: phi to grid
grid["phi"] = phi
# save as vtu file
grid.save(dest)
if __name__ == "__main__":
src_folder = "threephase-4"
dest_folder = "threephase-4-phi"
phasenames = ["phi_liquid", "phi_pbpd3", "phi_fcc"]
if not os.path.exists(dest_folder):
os.makedirs(dest_folder)
vtkfiles = [each for each in os.listdir(src_folder) if each.endswith(".vtk")]
for vtkfile in vtkfiles:
src = os.path.join(src_folder, vtkfile)
dest = os.path.join(dest_folder, vtkfile)
transform(src, dest, phasenames)
提示
pyvista库的安装方法为:pip install pyvista