Extract components of results (modal simulation)#

This example processes a modal simulation to extract subcomponents of results like displacement and elastic strain.

Note

This example requires DPF 3.0 (2022 R1) or above. For more information, see PyDPF library compatibilities.

Perform required imports#

This example uses a supplied file that you can get by importing the DPF examples package.

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

Get Simulation object#

Get the Simulation object that allows access to the result. The Simulation object must be instantiated with the path for the result file. For example, "C:/Users/user/my_result.rst" on Windows or "/home/user/my_result.rst" on Linux.

example_path = examples.download_all_kinds_of_complexity_modal()
# to automatically detect the simulation type, use:
simulation = post.load_simulation(example_path)

# to enable auto-completion, use the equivalent:
simulation = post.ModalMechanicalSimulation(example_path)
# print the simulation to get an overview of what's available
print(simulation)
Modal Mechanical Simulation.


Data Sources
------------------------------
/opt/hostedtoolcache/Python/3.10.19/x64/lib/python3.10/site-packages/ansys/dpf/core/examples/result_files/testing/modal_allKindOfComplexity.rst

DPF Model
------------------------------
Modal analysis
Unit system: MKS: m, kg, N, s, V, A, degC
Physics Type: Mechanical
Available results:
     -  node_orientations: Nodal Node Euler Angles
     -  displacement: Nodal Displacement
     -  nodal_rotation: Nodal Rotation
     -  reaction_force: Nodal Force
     -  smisc: Elemental Elemental Summable Miscellaneous Data
     -  element_nodal_forces: ElementalNodal Element nodal Forces
     -  stress: ElementalNodal Stress
     -  elemental_volume: Elemental Volume
     -  stiffness_matrix_energy: Elemental Energy-stiffness matrix
     -  artificial_hourglass_energy: Elemental Hourglass Energy
     -  kinetic_energy: Elemental Kinetic Energy
     -  co_energy: Elemental co-energy
     -  incremental_energy: Elemental incremental energy
     -  thermal_dissipation_energy: Elemental thermal dissipation energy
     -  elastic_strain: ElementalNodal Strain
     -  elastic_strain_eqv: ElementalNodal Strain eqv
     -  element_orientations: ElementalNodal Element Euler Angles
     -  nmisc: Elemental Elemental Non Summable Miscellaneous Data
     -  structural_temperature: ElementalNodal Structural temperature
------------------------------
DPF  Meshed Region:
  2388 nodes
  1836 elements
  Unit: m
  With solid (3D) elements, shell (2D) elements, shell (3D) elements, beam (1D) elements
------------------------------
DPF  Time/Freq Support:
  Number of sets: 45
Cumulative     Frequency (Hz) LoadStep       Substep
1              4800.665229    1              1
2              6472.119402    1              2
3              10094.813112   1              3
4              15408.070193   1              4
5              19935.616102   1              5
6              30659.224027   1              6
7              33485.028985   1              7
8              40514.020302   1              8
9              41144.836724   1              9
10             41696.364343   1              10
11             42568.142453   1              11
12             48803.935725   1              12
13             51557.014600   1              13
14             54829.807966   1              14
15             55121.065060   1              15
16             55481.661956   1              16
17             55779.054274   1              17
18             56346.453210   1              18
19             56598.396154   1              19
20             57504.056787   1              20
21             57768.209089   1              21
22             60135.893137   1              22
23             62336.016111   1              23
24             62809.029190   1              24
25             64186.171203   1              25
26             64911.479227   1              26
27             66488.724651   1              27
28             66728.182829   1              28
29             67521.333063   1              29
30             68699.230845   1              30
31             70108.268581   1              31
32             71432.124756   1              32
33             71784.765113   1              33
34             73189.275762   1              34
35             74862.553459   1              35
36             75051.318416   1              36
37             76335.025905   1              37
38             76631.728520   1              38
39             76956.786796   1              39
40             77754.144888   1              40
41             78460.122703   1              41
42             78721.878185   1              42
43             79330.520798   1              43
44             80301.992725   1              44
45             80835.840814   1              45

Extract X displacement over a list modes#

To help pick the right modes, printing the time frequency support.

print(simulation.time_freq_support)

# To get X displacements on the first two modes
x_displacement = simulation.displacement(modes=[1, 2], components=["X"])
# equivalent to
x_displacement = simulation.displacement(set_ids=[1, 2], components=["X"])
print(x_displacement)

x_displacement.plot(set_id=1)
02 modal extract sub results
DPF  Time/Freq Support:
  Number of sets: 45
Cumulative     Frequency (Hz) LoadStep       Substep
1              4800.665229    1              1
2              6472.119402    1              2
3              10094.813112   1              3
4              15408.070193   1              4
5              19935.616102   1              5
6              30659.224027   1              6
7              33485.028985   1              7
8              40514.020302   1              8
9              41144.836724   1              9
10             41696.364343   1              10
11             42568.142453   1              11
12             48803.935725   1              12
13             51557.014600   1              13
14             54829.807966   1              14
15             55121.065060   1              15
16             55481.661956   1              16
17             55779.054274   1              17
18             56346.453210   1              18
19             56598.396154   1              19
20             57504.056787   1              20
21             57768.209089   1              21
22             60135.893137   1              22
23             62336.016111   1              23
24             62809.029190   1              24
25             64186.171203   1              25
26             64911.479227   1              26
27             66488.724651   1              27
28             66728.182829   1              28
29             67521.333063   1              29
30             68699.230845   1              30
31             70108.268581   1              31
32             71432.124756   1              32
33             71784.765113   1              33
34             73189.275762   1              34
35             74862.553459   1              35
36             75051.318416   1              36
37             76335.025905   1              37
38             76631.728520   1              38
39             76956.786796   1              39
40             77754.144888   1              40
41             78460.122703   1              41
42             78721.878185   1              42
43             79330.520798   1              43
44             80301.992725   1              44
45             80835.840814   1              45


  results     U_X (m)
  set_ids           1          2
 node_ids
      289 -1.1710e+00 3.0726e+00
      573 -1.6975e+00 3.1432e+00
      589 -2.2447e+00 3.3385e+00
      591 -1.5945e+00 3.6033e+00
      324  0.0000e+00 0.0000e+00
      579  0.0000e+00 0.0000e+00
      ...         ...        ...


(None, <pyvista.plotting.plotter.Plotter object at 0x7fb409fa77f0>)

Extract XX and XY elastic strain over a list modes#

Get X displacements on the first two modes.

XX_XY_elastic_strain = simulation.elastic_strain_nodal(
    modes=[3], components=["XX", "XY"]
)
print(XX_XY_elastic_strain)
            results EPEL
            set_ids    3
            elshape    1
node_ids components
      79         XX
                 XY
     598         XX
                 XY
     487         XX
                 XY
     ...        ...  ...

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

Gallery generated by Sphinx-Gallery