PyDPF-Post overview#

PyDPF-Post 概述

本例概述了如何使用 PyDPF-Post。

Perform required imports#

执行所需的导入

本示例使用了一个提供的文件,您可以通过导入 DPF examples 包获得该文件。

from ansys.dpf import post
from ansys.dpf.post import examples

Get Solution object#

# 获取允许访问结果的 ``Solution`` 对象。``Solution`` 对象必须使用结果文件的路径实例化。例如,Windows 下为 ``"C:/Users/user/my_result.rst"`` 或 Linux 下为 ``"/home/user/my_result.rst"`` 。

solution = post.load_solution(examples.multishells_rst)

Get mesh and time/frequency support#

获得网格和时间/频率支持

网格是模型的支撑。 时间/频率支持是模型的时间/频率表示。

mesh = solution.mesh
time_freq_support = solution.time_freq_support

Get Result object#

获取 ``Result`` 对象

Solution 对象获取一个 Result 对象。 Result 对象可以是应力、塑性应变、弹性应变、温度或位移。

post.print_available_keywords()
stress = solution.stress(location=post.locations.nodal, time_scoping=[1]) # 时间范围

# 在应力结果的定义中,可以使用 ``location`` 和 ``time_scoping`` 。

stress.definition.location
stress.definition.time_scoping

print(stress)
element_scoping: list, int or dpf.core.Scoping
grouping: str. Use post.grouping.(...) as helper.
location: str. Use post.locations.(...) as helper.
mapdl_grouping: int. Write 186 to get mapdl_elements solid_186.
named_selection: str. Name of named_selection.
node_scoping: list, int or dpf.core.Scoping
path: DpfPath object that
            contains a list of coordinates,
            e.g. [[0.1, 0.0, 0.0],
            [0.0, 0.1, 0.0]].
set: int
time: float
time_scoping: list, int or dpf.core.Scoping

Stress Tensor object.

Object properties:
 - location   : Nodal
 - time_scoping : [1]

Compute data#

计算数据

SX 子结果

该代码得到的子结果 SX 是 XX 方向的应力张量。

sx = stress.xx # 首先从 stress 对象中获取 xx 组件的应力,然后存储在 sx 中
sx.num_fields # 获取 sx 的字段数量(num_fields)
sx_field = sx[0] # 获取 sx 的第一个字段,并将其存储在 sx_field 中
sx_data = sx.get_data_at_field(0) # 调用 sx 的 ``get_data_at_field`` 方法,获取第一个字段的数据,并将其存储在 sx_data 中
print("数据长度:", len(sx_data))
print("-------------------------------")
print("最大应力场:\n", sx.max)
print("-------------------------------")
print("应力场的最大数据:", sx.max_data)
print("应力场字段 0 的最大 SX:", sx.get_max_data_at_field(0))
数据长度: 6854
-------------------------------
最大应力场:
 DPF stress_1.s0 Field
  Location: Nodal
  Unit: Pa
  2 entities
  Data:1 components and 2 elementary data

-------------------------------
应力场的最大数据: [6.67615284e+11 1.53671424e+13]
应力场字段 0 的最大 SX: 667615283882.6666

应力张量结果

该代码可获取所有方向(XX``, XY`, XZ`, XY`, YZ`XZ`)的场的最小和最大应力。

s = stress.tensor
s_field = s[0]
s_data = sx.get_data_at_field(0)
print("数据长度:", len(s_data))
print("-------------------------------")
print("最大应力场:\n", s.max)
print("-------------------------------")
print("应力场的最大数据:", s.max_data)
print("应力场字段 0 时的最大应力张量:\n", s.get_max_data_at_field(0))
print("===============================")
print("最小应力场:\n", s.min)
print("-------------------------------")
print("应力场的最小数据:", s.min_data)
print("应力场字段 0 处的最小应力张量:\n", s.get_min_data_at_field(0))
数据长度: 6854
-------------------------------
最大应力场:
 DPF stress_1.s Field
  Location: Nodal
  Unit: Pa
  2 entities
  Data:6 components and 2 elementary data

-------------------------------
应力场的最大数据: [[6.67615284e+11 8.74460905e+11 4.95394439e+11 6.01889079e+11
  1.10325826e+11 1.85580244e+11]
 [1.53671424e+13 4.21781549e+08 3.78202198e+12 2.07950475e+11
  1.57995981e+11 1.09972131e+12]]
应力场字段 0 时的最大应力张量:
 [6.67615284e+11 8.74460905e+11 4.95394439e+11 6.01889079e+11
 1.10325826e+11 1.85580244e+11]
===============================
最小应力场:
 DPF stress_1.s Field
  Location: Nodal
  Unit: Pa
  2 entities
  Data:6 components and 2 elementary data

-------------------------------
应力场的最小数据: [[-5.77907764e+11 -7.35604867e+11 -2.41200931e+11 -2.98145939e+11
  -2.42143056e+11 -3.09138563e+11]
 [-1.49601458e+13 -2.63695614e+08 -3.77945626e+12 -3.35432675e+11
  -1.57190152e+11 -9.66123233e+11]]
应力场字段 0 处的最小应力张量:
 [-5.77907764e+11 -7.35604867e+11 -2.41200931e+11 -2.98145939e+11
 -2.42143056e+11 -3.09138563e+11]

Plot result#

绘制结果

使用 plot_contour() 方法绘制结果。

s.plot_contour()
00 overview example

Total running time of the script: (0 minutes 3.175 seconds)

Gallery generated by Sphinx-Gallery