ANSYS DPF-Post: Modal Analysis

This tutorial shows how post-process a modal analysis result file using API of the POST module.

Get started

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

Get the solution object

The following file is the result of a modal analysis computed using Ansys Mechanical

example_path = examples.download_all_kinds_of_complexity_modal()

# here we load the solution
solution = post.load_solution(example_path)
print(solution)

Out:

Modal Analysis Solution object.


Data Sources
------------------------------
DPF  DataSources:
  Result files:
     result key: rst and path: /home/vsts/.local/share/ansys-dpf-core/examples/testing/modal_allKindOfComplexity.rst
  Secondary files:


DPF Model
------------------------------
Modal analysis
Unit system: Metric (m, kg, N, s, V, A)
Physics Type: Mecanic
Available results:
     -  displacement: Nodal Displacement
     -  reaction_force: Nodal Force
     -  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
     -  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:
  2388 nodes
  1824 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

This may contain complex results.

Get result objects

Get a displacement result

Get the result: it will contain a field for real values and a field for imaginary values.

disp_result = solution.displacement()
disp = disp_result.vector

Check the number of fields

disp.num_fields

Out:

1

Get data from a field

disp.get_data_at_field(0)

Out:

array([[-1.17102876, -1.30206342, -1.1938849 ],
       [-1.69750554, -1.68258886, -0.76327262],
       [-2.24465543, -2.66699745, -1.36365734],
       ...,
       [ 0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        ],
       [ 0.        ,  0.        ,  0.        ]])

Get maximum data value over all fields

disp.max_data

Out:

array([[3.63870030e+05, 8.31378342e+20, 5.99358159e+21]])

Get minimum data value over all fields

disp.min_data

Out:

array([[-3.55151557e+05, -8.31378342e+20, -5.99358159e+21]])

Get maximum data value over a targeted field

disp.get_max_data_at_field(0)

Out:

array([3.63870030e+05, 8.31378342e+20, 5.99358159e+21])

Get minimum data value over all fields

disp.get_min_data_at_field(0)

Out:

array([-3.55151557e+05, -8.31378342e+20, -5.99358159e+21])

Get a stress result and deals with amplitude

Get the result: it will contain a field for real values and a field for imaginary values.

stress_result = solution.stress()

Check if the support has complex frequencies

stress_result.has_complex_frequencies()

Out:

False

Get the tensor result

stress = stress_result.tensor
stress.num_fields

Out:

2

Get the shell field

shell_field = stress[0]
shell_field.shell_layers

Out:

<shell_layers.nonelayer: 5>

Get the solid field field

solid_field = stress[1]

Plot the amplitude contour

amplitude = stress_result.tensor_amplitude
stress.plot_contour()
02 modal analysis

Get an elastic_strain result and deals with phase

Get the result: it will contain a field for real values and a field for imaginary values.

elastic_strain_result = solution.elastic_strain()
elastic_strain = elastic_strain_result.tensor
# shell and solid elements are in distinct fields.
elastic_strain.num_fields

Out:

2

It is also possible to deal with plastic_strain and temperature this way. The result file must contain those results.

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

Gallery generated by Sphinx-Gallery