Note
Go to the end to download the full example code.
MAPDL modal beam analysis example#
This example demonstrates how to perform a simple modal analysis and animate its results.
Objective#
This example models a simple 3D elastic beam made of BEAM188 elements. These beams elements are made of a linear elastic material similar to steel, and have a rectangular section.
Procedure#
Launch MAPDL instance
Material properties
Geometry
Finite element model
Boundary conditions
Solving the model
Post-processing
Stop MAPDL
Launch MAPDL instance#
Launch MAPDL with interactive plotting
from ansys.mapdl.core import launch_mapdl
nmodes = 10
# start MAPDL
mapdl = launch_mapdl()
print(mapdl)
Mapdl
-----
PyMAPDL Version: 0.69.dev0
Interface: grpc
Product: Ansys Mechanical Enterprise Academic Student
MAPDL Version: 24.2
Running on: localhost
(127.0.0.1)
Define material#
Define material
mapdl.prep7()
mapdl.mp("EX", 1, 2.1e11)
mapdl.mp("PRXY", 1, 0.3)
mapdl.mp("DENS", 1, 7800)
MATERIAL 1 DENS = 7800.000
Create geometry#
Create keypoints and line
mapdl.k(1)
mapdl.k(2, 10)
mapdl.l(1, 2)
mapdl.lplot()
Define finite element model#
Define element type/section type - Rectangular beam section.
mapdl.et(1, "BEAM188")
mapdl.sectype(1, "BEAM", "RECT")
mapdl.secoffset("CENT")
mapdl.secdata(2, 1)
# Mesh the line
mapdl.type(1)
mapdl.esize(1)
mapdl.lesize("ALL")
mapdl.lmesh("ALL")
mapdl.eplot()
mapdl.finish()
***** ROUTINE COMPLETED ***** CP = 0.000
Specify boundary conditions#
Fully fixed (clamped) end.
mapdl.solution() # Entering the solution processor.
mapdl.nsel("S", "LOC", "X", "0")
mapdl.d("ALL", "ALL")
mapdl.allsel()
mapdl.nplot(plot_bc=True, nnum=True)
Solve the model#
Setting modal analysis
mapdl.antype("MODAL")
mapdl.modopt("LANB", nmodes, 0, 200)
mapdl.solve()
mapdl.finish()
FINISH SOLUTION PROCESSING
***** ROUTINE COMPLETED ***** CP = 0.000
Postprocess#
Enter the post processor (post1)
mapdl.post1()
output = mapdl.set("LIST")
print(output)
result = mapdl.result
***** INDEX OF DATA SETS ON RESULTS FILE *****
SET TIME/FREQ LOAD STEP SUBSTEP CUMULATIVE
1 8.3233851 1 1 1
2 16.274527 1 2 2
3 50.891463 1 3 3
4 60.248510 1 4 4
5 89.208488 1 5 5
6 129.85203 1 6 6
7 138.63765 1 7 7
8 182.23482 1 8 8
Animate results
mode2plot = 2
normalizeDisplacement = 1 / result.nodal_displacement(mode2plot - 1)[1].max()
result.plot_nodal_displacement(
mode2plot,
show_displacement=True,
displacement_factor=normalizeDisplacement,
n_colors=10,
)
result.animate_nodal_displacement(
mode2plot,
loop=False,
add_text=False,
n_frames=100,
displacement_factor=normalizeDisplacement,
show_axes=False,
background="w",
movie_filename="animation.gif",
off_screen=True,
)
Rendering animation: 0%| | 0/100 [00:00<?, ?it/s]
Rendering animation: 1%| | 1/100 [00:00<00:15, 6.22it/s]
Rendering animation: 4%|▍ | 4/100 [00:00<00:06, 14.88it/s]
Rendering animation: 7%|▋ | 7/100 [00:00<00:05, 17.54it/s]
Rendering animation: 9%|▉ | 9/100 [00:00<00:05, 18.17it/s]
Rendering animation: 12%|█▏ | 12/100 [00:00<00:04, 19.72it/s]
Rendering animation: 15%|█▌ | 15/100 [00:00<00:04, 20.70it/s]
Rendering animation: 18%|█▊ | 18/100 [00:00<00:03, 21.15it/s]
Rendering animation: 21%|██ | 21/100 [00:01<00:03, 20.95it/s]
Rendering animation: 24%|██▍ | 24/100 [00:01<00:03, 21.29it/s]
Rendering animation: 27%|██▋ | 27/100 [00:01<00:03, 21.51it/s]
Rendering animation: 30%|███ | 30/100 [00:01<00:03, 21.00it/s]
Rendering animation: 33%|███▎ | 33/100 [00:01<00:03, 20.66it/s]
Rendering animation: 36%|███▌ | 36/100 [00:01<00:03, 21.02it/s]
Rendering animation: 39%|███▉ | 39/100 [00:01<00:02, 21.42it/s]
Rendering animation: 42%|████▏ | 42/100 [00:02<00:02, 21.51it/s]
Rendering animation: 45%|████▌ | 45/100 [00:02<00:02, 20.98it/s]
Rendering animation: 48%|████▊ | 48/100 [00:02<00:02, 21.22it/s]
Rendering animation: 51%|█████ | 51/100 [00:02<00:02, 21.42it/s]
Rendering animation: 54%|█████▍ | 54/100 [00:02<00:02, 21.32it/s]
Rendering animation: 57%|█████▋ | 57/100 [00:02<00:02, 21.05it/s]
Rendering animation: 60%|██████ | 60/100 [00:02<00:01, 21.29it/s]
Rendering animation: 63%|██████▎ | 63/100 [00:03<00:01, 21.35it/s]
Rendering animation: 66%|██████▌ | 66/100 [00:03<00:01, 21.52it/s]
Rendering animation: 69%|██████▉ | 69/100 [00:03<00:01, 20.85it/s]
Rendering animation: 72%|███████▏ | 72/100 [00:03<00:01, 21.12it/s]
Rendering animation: 75%|███████▌ | 75/100 [00:03<00:01, 20.82it/s]
Rendering animation: 78%|███████▊ | 78/100 [00:03<00:01, 21.04it/s]
Rendering animation: 81%|████████ | 81/100 [00:03<00:00, 20.72it/s]
Rendering animation: 84%|████████▍ | 84/100 [00:04<00:00, 21.06it/s]
Rendering animation: 87%|████████▋ | 87/100 [00:04<00:00, 21.24it/s]
Rendering animation: 90%|█████████ | 90/100 [00:04<00:00, 21.44it/s]
Rendering animation: 93%|█████████▎| 93/100 [00:04<00:00, 21.16it/s]
Rendering animation: 96%|█████████▌| 96/100 [00:04<00:00, 20.93it/s]
Rendering animation: 99%|█████████▉| 99/100 [00:04<00:00, 21.17it/s]
Rendering animation: 100%|██████████| 100/100 [00:12<00:00, 8.23it/s]
[(16.153550716504107, 11.153550716504107, 11.153550716504107),
(5.0, 0.0, 0.0),
(0.0, 0.0, 1.0)]
Stop MAPDL#
mapdl.finish()
mapdl.exit()
Total running time of the script: (0 minutes 14.167 seconds)