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