PyFluent同样支持运算结果的可视化,借助 PyFluent-Visualization 对 Fluent 结果进行后处理可以显示图形对象和绘图数据。
- 对于网格、云图、矢量图等图像结果可以调用PyVista进行可视化。
- 对于残差图、XY折线图等数据结果可以调用Matplotlib进行可视化。
我们使用3D排气歧管模型进行演示,通过歧管的气流是湍流的并且涉及共轭传热。
1. 网格的可视化
需要显示网格我们仍然需要启动求解器并读取网格或case文件。首先通过下述代码导入后续操作所调用的库。
import ansys.fluent.core as pyfluent
from ansys.fluent.visualization import set_config
from ansys.fluent.visualization.matplotlib import Plots
from ansys.fluent.visualization.pyvista import Graphics
set_config(blocking=True, set_view_on_display="isometric")
接着启动求解器并读取案例及数据文件
solver_session = pyfluent.launch_fluent(
precision="double", processor_count=2, mode="solver"
)
solver_session.tui.file.read_case_data('exhaust_system.cas.h5')
打开edge的显示并设置需要显示的边界,即可显示网格
graphics = Graphics(session=solver_session)
mesh1 = graphics.Meshes["mesh-1"]
mesh1.show_edges = True
mesh1.surfaces_list = [
"in1",
"in2",
"in3",
"out1",
"solid_up:1",
"solid_up:1:830",
"solid_up:1:830-shadow",
]
mesh1.display("window-1")
如图所示可以在窗口中自由拖动与缩放网格图像
可以在此基础上创建平面,例如以XY平面为基础创建。
surf_xy_plane = graphics.Surfaces["xy-plane"]
surf_xy_plane.definition.type = "plane-surface"
plane_surface_xy = surf_xy_plane.definition.plane_surface
plane_surface_xy.z = -0.0441921
surf_xy_plane.display("window-3")
效果如下:
还可以创建等值面,例如在出口处创建等值面。
surf_outlet_plane = graphics.Surfaces["outlet-plane"]
surf_outlet_plane.definition.type = "iso-surface"
iso_surf1 = surf_outlet_plane.definition.iso_surface
iso_surf1.field = "y-coordinate"
iso_surf1.iso_value = -0.125017
surf_outlet_plane.display("window-3")
2. 云图显示
在此基础上可以继续进行云图的显示,使用下述代码进行速度云图的绘制
surf_vel_contour = graphics.Surfaces["surf-vel-contour"]
surf_vel_contour.definition.type = "iso-surface"
iso_surf3 = surf_vel_contour.definition.iso_surface
iso_surf3.field = "velocity-magnitude"
iso_surf3.rendering = "contour"
iso_surf3.iso_value = 0.0
surf_vel_contour.display("window-5")
同样可以选择平面进行云图绘制,例如选择中心面和出口面
temperature_contour = graphics.Contours["contour-temperature"]
temperature_contour.field = "temperature"
temperature_contour.surfaces_list = ["mid-plane-x", "outlet-plane"]
temperature_contour.display("window-6")
温度云图
temperature_contour_manifold = graphics.Contours["contour-temperature-manifold"]
temperature_contour_manifold.field = "temperature"
temperature_contour_manifold.surfaces_list = [
"in1",
"in2",
"in3",
"out1",
"solid_up:1",
"solid_up:1:830",
]
temperature_contour_manifold.display("window-7")
同样可以创建速度矢量图
velocity_vector = graphics.Vectors["velocity-vector"]
velocity_vector.surfaces_list = ["solid_up:1:830"]
velocity_vector.scale = 2
velocity_vector.display("window-8")
3. 数据图显示
数据图显示需要先创建绘图对象
plots_session_1 = Plots(solver_session)
接着就可以创建XY图
xy_plot = plots_session_1.XYPlots["xy-plot"]
设置绘图表面和 Y 轴功能
xy_plot.surfaces_list = ["outlet"]
xy_plot.y_axis_function = "temperature"
设置完成后就可以进行显示
xy_plot.plot("window-9")
同样地我们还可以绘制残差图
matplotlib_plots1 = Plots(solver_session)
residual = matplotlib_plots1.Monitors["residual"]
residual.monitor_set_name = "residual"
residual.plot("window-10")