Extract stress/strain invariants - Static Simulation#

提取应力/应变不变量 - 静态模拟

本脚本以静态模拟为例,说明如何提取张量不变量。

Perform required imports#

执行所需的导入

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

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

Get the Simulation object#

获取允许访问结果的 ``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)

# 要启用 auto-completion 功能,请使用等效的命令:
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 elemental nodal stress and strain#

提取单元节点应力应变

stress = simulation.stress(all_sets=True)
print(stress)

strain = simulation.elastic_strain(all_sets=True)
print(strain)
               results      S (Pa)                                                             ...
               set_ids           1                                               2             ...
                  node           0           1           2           3                       1 ...
element_ids components                                                                         ...
      18357         XX  2.7979e+06  4.7003e+05 -1.8736e+06 -3.3334e+06  4.3949e+06 -2.4906e+04 ...
                    YY  8.6092e+06  5.5603e+06  2.3814e+07 -2.2182e+07  2.8565e+07  2.1156e+07 ...
                    ZZ -1.0166e+07  1.1400e+06  3.2169e+07 -6.2071e+07 -2.6681e+06  1.4945e+07 ...
                    XY  5.9477e+05  1.0214e+07  5.3788e+07  5.2463e+07  7.8847e+05  1.9763e+07 ...
                    YZ -1.9866e+08 -1.6437e+08 -1.7338e+08 -1.5419e+08 -3.9727e+08 -3.2839e+08 ...
                    XZ -6.6205e+06  1.3030e+06  8.4608e+06 -9.4029e+06 -4.0082e+06  9.3691e+06 ...
        ...        ...         ...         ...         ...         ...         ...         ... ...


               results        EPEL                                                             ...
               set_ids           1                                               2             ...
                  node           0           1           2           3                       1 ...
element_ids components                                                                         ...
      18357         XX  1.6326e-05 -7.7003e-06 -9.3343e-05  1.0971e-04 -1.6871e-05 -5.4276e-05 ...
                    YY  5.4098e-05  2.5387e-05  7.3628e-05 -1.2802e-05  1.4024e-04  8.3400e-05 ...
                    ZZ -6.7943e-05 -3.3456e-06  1.2793e-04 -2.7208e-04 -6.2781e-05  4.3027e-05 ...
                    XY  7.7320e-06  1.3278e-04  6.9924e-04  6.8201e-04  1.0250e-05  2.5692e-04 ...
                    YZ -2.5826e-03 -2.1368e-03 -2.2539e-03 -2.0045e-03 -5.1645e-03 -4.2691e-03 ...
                    XZ -8.6066e-05  1.6939e-05  1.0999e-04 -1.2224e-04 -5.2106e-05  1.2180e-04 ...
        ...        ...         ...         ...         ...         ...         ...         ... ...

Compute principal invariant averaged and unaveraged on stress and strain#

计算应力和应变的平均和非平均主不变量

# `stress_principal` 方法通常用于计算单元的主应力。这意味着它在每个单元上都计算一个主应力值,这个值是在单元的整个体积上平均的。
princ_stress_1 = simulation.stress_principal(components=[1])
print(princ_stress_1)

# `stress_principal_nodal` 方法通常用于计算节点的主应力。这意味着它在每个节点上都计算一个主应力值,这个值是由连接到该节点的所有单元的应力值平均得到的。
nodal_princ_stress_2 = simulation.stress_principal_nodal(components=[2])
print(nodal_princ_stress_2)
nodal_princ_stress_2.plot()

# 因此,stress_principal 方法得到的主应力更适合于评估整体的应力分布,而 stress_principal_nodal 方法得到的主应力更适合于评估局部的应力集中。

nodal_princ_strain_2 = simulation.elastic_strain_principal_nodal(components=[2])
print(nodal_princ_strain_2)
nodal_princ_strain_2.plot()
  • 04 invariants
  • 04 invariants
               results     S (Pa)
               set_ids          3
                  node          0          1          2          3
element_ids components
      18357          1 6.3596e+08 5.3499e+08 6.6581e+08 4.2794e+08
      22264            3.6762e+08 2.3020e+08 3.1258e+08 4.0098e+08
      30223            3.0154e+08 1.9624e+08 4.1080e+08 2.1359e+08
      18352            3.7559e+08 4.9030e+08 4.3722e+08 4.0711e+08
      18358            7.8922e+08 6.0867e+08 7.8301e+08 6.0954e+08
       5717            7.6761e+08 5.9538e+08 7.0780e+08 8.0592e+08
        ...        ...        ...        ...        ...        ...


            results      S (Pa)
            set_ids           3
node_ids components
    4872          2 -1.4818e+06
    9005             3.1627e+05
    9373             4.0889e+07
    9372            -3.2059e+07
    4876             1.9911e+07
    9781            -1.1439e+08
     ...        ...         ...


            results        EPEL
            set_ids           3
node_ids components
    4872          2 -1.2351e-04
    9005            -1.2034e-04
    9373            -1.4734e-04
    9372             1.8417e-05
    4876             6.4584e-04
    9781             7.0507e-05
     ...        ...         ...

Compute von Mises eqv averaged and unaveraged on stress and strain#

计算应力和应变的平均和非平均 von Mises eqv

stress_eqv = simulation.stress_eqv_von_mises(set_ids=[1])
print(stress_eqv)

nodal_stress_eqv = simulation.stress_eqv_von_mises_nodal(set_ids=[1])
nodal_stress_eqv.plot()

nodal_strain_eqv = simulation.elastic_strain_eqv_von_mises_nodal(set_ids=[1])
nodal_strain_eqv.plot()
  • 04 invariants
  • 04 invariants
    results  S_VM (Pa)
    set_ids          1
       node          0          1          2          3
element_ids
      18357 3.4469e+08 2.8529e+08 3.1625e+08 2.8731e+08
      22264 3.3939e+08 2.7271e+08 2.5695e+08 2.8499e+08
      30223 2.5691e+08 1.0116e+08 2.7858e+08 2.6944e+08
      18352 3.2719e+08 3.1796e+08 3.1697e+08 3.0841e+08
      18358 3.4067e+08 3.0051e+08 3.4558e+08 3.1530e+08
       5717 3.4715e+08 3.0372e+08 3.0057e+08 3.3268e+08
        ...        ...        ...        ...        ...

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

Gallery generated by Sphinx-Gallery