Compute minimum and maximum of a DataFrame#

计算 DataFrame 的最小值和最大值

在本示例中,瞬态分析位移数据用于演示如何计算给定 DataFrame 的最小值或最大值。

Perform required imports#

执行所需的导入

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

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

Load the result file#

将结果文件加载到允许访问结果的 ``Simulation`` 对象中。

必须使用结果文件的路径实例化 Simulation 对象。例如,Windows 下为 "C:/Users/user/my_result.rst" 或 Linux 下为 "/home/user/my_result.rst"

example_path = examples.download_crankshaft()
# 自动检测模拟类型,请使用
simulation = post.load_simulation(example_path)

# 要启用自动完成功能,请使用等效的命令:
simulation = post.StaticMechanicalSimulation(example_path)

# 打印 simulation,了解可用内容的概况
print(simulation)
Static Mechanical Simulation.


Data Sources
------------------------------
C:\Users\ff\AppData\Roaming\Python\Python310\site-packages\ansys\dpf\core\examples\result_files\crankshaft\crankshaft.rst

DPF Model
------------------------------
Static analysis
Unit system: MKS: m, kg, N, s, V, A, degC
Physics Type: Mechanical
Available results:
     -  displacement: Nodal Displacement
     -  velocity: Nodal Velocity
     -  acceleration: Nodal Acceleration
     -  reaction_force: Nodal Force
     -  stress: ElementalNodal Stress
     -  elemental_volume: Elemental Volume
     -  stiffness_matrix_energy: Elemental Energy-stiffness matrix
     -  artificial_hourglass_energy: Elemental Hourglass Energy
     -  thermal_dissipation_energy: Elemental thermal dissipation energy
     -  kinetic_energy: Elemental Kinetic Energy
     -  co_energy: Elemental co-energy
     -  incremental_energy: Elemental incremental energy
     -  elastic_strain: ElementalNodal Strain
     -  structural_temperature: ElementalNodal Temperature
------------------------------
DPF  Meshed Region:
  69762 nodes
  39315 elements
  Unit: m
  With solid (3D) elements
------------------------------
DPF  Time/Freq Support:
  Number of sets: 3
Cumulative     Time (s)       LoadStep       Substep
1              1.000000       1              1
2              2.000000       1              2
3              3.000000       1              3

Extract displacement data#

提取位移数据

displacement = simulation.displacement(all_sets=True)
print(displacement)
            results       U (m)
            set_ids           1           2           3
node_ids components
    4872          X  5.6781e-06 -5.9469e-06 -3.4137e-05
                  Y  5.1667e-04  1.0318e-03  1.5417e-03
                  Z -3.2535e-06 -4.1346e-06 -2.6398e-06
    9005          X -2.6323e-06 -2.1432e-05 -5.5625e-05
                  Y  4.8445e-04  9.6717e-04  1.4448e-03
                  Z -4.9795e-07  1.2790e-06  5.3134e-06
     ...        ...         ...         ...         ...

Compute the maximum displacement for each component at each time-step#

计算每个分量在每个时间步长的最大位移

# 默认的 `axis` 参数是 MeshIndex
maximum_over_mesh = displacement.max()
print(maximum_over_mesh)
# 与之等效的命令为
maximum_over_mesh = displacement.max(axis="node_ids")
print(maximum_over_mesh)
   results      U (m)
   set_ids          1          2          3
components
         X 7.3303e-04 1.4495e-03 2.1441e-03
         Y 1.3962e-03 2.7884e-03 4.1656e-03
         Z 2.1567e-04 4.3321e-04 6.5135e-04


   results      U (m)
   set_ids          1          2          3
components
         X 7.3303e-04 1.4495e-03 2.1441e-03
         Y 1.3962e-03 2.7884e-03 4.1656e-03
         Z 2.1567e-04 4.3321e-04 6.5135e-04

Compute the maximum displacement for each node and component across time#

计算每个节点和组件在不同时间段的最大位移

maximum_over_time = displacement.max(axis="set_ids")
print(maximum_over_time)
            results       U (m)
node_ids components
    4872          X  5.6781e-06
                  Y  1.5417e-03
                  Z -2.6398e-06
    9005          X -2.6323e-06
                  Y  1.4448e-03
                  Z  5.3134e-06
     ...        ...         ...

Compute the maximum displacement overall#

计算整体最大位移

maximum_overall = maximum_over_time.max()
print(maximum_overall)
   results      U (m)
components
         X 2.1441e-03
         Y 4.1656e-03
         Z 6.5135e-04

Compute the minimum displacement for each component at each time-step#

计算每个分量在每个时间步的最小位移

# 默认的 `axis` 参数是 MeshIndex
minimum_over_mesh = displacement.min()
print(minimum_over_mesh)
# 与之等效的命令为
minimum_over_mesh = displacement.min(axis="node_ids")
print(minimum_over_mesh)
   results       U (m)
   set_ids           1           2           3
components
         X -7.4732e-04 -1.5081e-03 -2.2755e-03
         Y -4.0138e-04 -8.0316e-04 -1.2014e-03
         Z -2.1555e-04 -4.3299e-04 -6.5101e-04


   results       U (m)
   set_ids           1           2           3
components
         X -7.4732e-04 -1.5081e-03 -2.2755e-03
         Y -4.0138e-04 -8.0316e-04 -1.2014e-03
         Z -2.1555e-04 -4.3299e-04 -6.5101e-04

Compute the minimum displacement for each node and component across time#

计算每个节点和组件在不同时间段的最小位移

minimum_over_time = displacement.min(axis="set_ids")
print(minimum_over_time)
            results       U (m)
node_ids components
    4872          X -3.4137e-05
                  Y  5.1667e-04
                  Z -4.1346e-06
    9005          X -5.5625e-05
                  Y  4.8445e-04
                  Z -4.9795e-07
     ...        ...         ...

Compute the minimum displacement overall#

计算整体最小位移

minimum_overall = minimum_over_time.min()
print(minimum_overall)
   results       U (m)
components
         X -2.2755e-03
         Y -1.2014e-03
         Z -6.5101e-04

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

Gallery generated by Sphinx-Gallery