Note
Go to the end to download the full example code.
Using Inline Functions (Query)#
This example shows you how to use the inline functions in PyMAPDL.
Inline functions like UX
have been implemented in PyMAPDL as methods
on the mapdl.inline_functions.Query
object. In this example we set
up a simple simulation and use Query
to demonstrate some of its
functionality.
First, get an instance of
ansys.mapdl.core.inline_functions.Query
below, using the
mapdl
property queries
.
from ansys.mapdl.core import launch_mapdl
mapdl = launch_mapdl()
# clear at the start and enter the preprocessing routine
mapdl.clear()
mapdl.prep7()
q = mapdl.queries
Setup Mesh#
Assign element type
SOLID5
to element type 1Create a cuboid
mapdl.block
10 x 20 x 30 in dimensionSet element size to 2
Mesh the block
Plot the elements created
mapdl.et(1, "SOLID5")
mapdl.block(0, 10, 0, 20, 0, 30)
mapdl.esize(2)
mapdl.vmesh("ALL")
mapdl.eplot()
Setup Boundary Conditions#
Assign an Elastic modulus in the x-direction to material 1 of 21e9
And a poisson’s ratio of 0.3
Select all nodes at the
z = 30
end of the blockRemove all degrees of freedom for all nodes in the selection
Select all nodes at the
z = 0
endApply a x-direction force of 10000 to all of these
Finish preprocessing
mapdl.mp("EX", 1, 210e9)
mapdl.mp("PRXY", 1, 0.3)
mapdl.nsel("S", "LOC", "Z", 30)
mapdl.d("ALL", "UX")
mapdl.d("ALL", "UY")
mapdl.d("ALL", "UZ")
mapdl.nsel("S", "LOC", "Z", 0)
mapdl.f("ALL", "FX", 10000)
mapdl.finish()
***** ROUTINE COMPLETED ***** CP = 0.000
Setup Boundary Conditions#
Enter solution (
mapdl.slashsolu
also works)Set the analysis type to
STATIC
Select all nodes
Solve the model
Finish solution
mapdl.run("/SOLU")
mapdl.antype("STATIC")
mapdl.allsel()
mapdl.solve()
mapdl.finish(mute=True)
Post-Processing#
Get the result from the
mapdl
instancePlot the equivalent stress results - Show the edges so that we can see the element boundaries - Use the “plasma” colormap because it is perceptually uniform
result = mapdl.result
result.plot_principal_nodal_stress(0, "SEQV", show_edges=True, cmap="plasma")
Using Query
#
Use
Query
to get the nodes nearest to (5, 0, 0) and (5, 10, 0)Use the
Query
instance to examine the x, y, and z displacement.Print the results in a formatted string.
node1 = q.node(5.0, 0.0, 0.0)
node2 = q.node(5.0, 10.0, 0.0)
for node in [node1, node2]:
x_displacement = q.ux(node)
y_displacement = q.uy(node)
z_displacement = q.uz(node)
message = f"""
************************
Displacement at Node {node}:
************************
X | {x_displacement}
Y | {y_displacement}
Z | {z_displacement}
"""
print(message)
************************
Displacement at Node 28:
************************
X | 1.757716378392396e-05
Y | 3.036257546838071e-09
Z | -7.982690758479263e-07
************************
Displacement at Node 48:
************************
X | 1.761241767518215e-05
Y | 1.3491008756809481e-20
Z | -8.070989838528231e-07
Stop mapdl#
mapdl.exit()
Total running time of the script: (0 minutes 3.497 seconds)