Package: ansys-mapdl-reader
This is the legacy module for reading in binary and ASCII files
generated from MAPDL.This Python module allows you to extract data directly from binary
ANSYS v14.5+ files and to display or animate them rapidly using a
straightforward API coupled with C libraries based on header files
provided by ANSYS.Theansys-mapdl-readermodule supports the following formats:*.rst- Structural analysis result file*.rth- Thermal analysis result file*.emat- Element matrix data file*.full- Full stiffness-mass matrix file*.cdbor*.dat- MAPDL ASCII block archive and
Mechanical Workbench input filesPlease see thePyMAPDL-Reader Documentationfor the full documentation.NoteThis module may be depreciated in the future.You are encouraged to use the new Data Processing Framework (DPF)
modules atPyDPF-CoreandPyDPF-Postas they provide a
modern interface to Ansys result files using a client/server
interface using the same software used within Ansys Mechanical, but
via a Python client.NoteResult file compatibility will be greatly improved by disabling result file
compression by setting/FCOMP,RST,0.DPF does not have this restriction.InstallationInstallation through pip:pip install ansys-mapdl-readerYou can also visitpymapdl-readerto download the source or releases from GitHub.ExamplesLoading and Plotting a MAPDL Archive FileANSYS archive files containing solid elements (both legacy and
modern), can be loaded using Archive and then converted to a vtk
object.fromansys.mapdlimportreaderaspymapdl_readerfromansys.mapdl.readerimportexamples# Sample *.cdbfilename=examples.hexarchivefile# Read ansys archive filearchive=pymapdl_reader.Archive(filename)# Print raw data from cdbforkeyinarchive.raw:print("%s:%s"%(key,archive.raw[key]))# Create a vtk unstructured grid from the raw data and plot itgrid=archive.parse_vtk(force_linear=True)grid.plot(color='w',show_edges=True)# write this as a vtk xml filegrid.save('hex.vtu')# or as a vtk binarygrid.save('hex.vtk')You can then load this vtk file usingpyvistaor another program that uses VTK.# Load this from vtkimportpyvistaaspvgrid=pv.UnstructuredGrid('hex.vtu')grid.plot()Loading the Result FileThis example reads in binary results from a modal analysis of a beam
from ANSYS.# Load the reader from pyansysfromansys.mapdlimportreaderaspymapdl_readerfromansys.mapdl.readerimportexamples# Sample result filerstfile=examples.rstfile# Create result object by loading the result fileresult=pymapdl_reader.read_binary(rstfile)# Beam natural frequenciesfreqs=result.time_values>>>print(freq)[7366.495039697366.4950396911504.8952366417285.7045945617285.7045945720137.19299035]Get the 1st bending mode shape.  Results are ordered based on the
sorted node numbering.  Note that results are zero indexed>>>nnum,disp=result.nodal_solution(0)>>>print(disp)[[2.89623914e+01-2.82480489e+01-3.09226692e-01][2.89489249e+01-2.82342416e+012.47536161e+01][2.89177130e+01-2.82745126e+016.05151053e+00][2.88715048e+01-2.82764960e+011.22913304e+01][2.89221536e+01-2.82479511e+011.84965333e+01][2.89623914e+01-2.82480489e+013.09226692e-01]...Plotting Nodal ResultsAs the geometry of the model is contained within the result file, you
can plot the result without having to load any additional geometry.
Below, displacement for the first mode of the modal analysis beam is
plotted usingVTK.# Plot the displacement of Mode 0 in the x directionresult.plot_nodal_solution(0,'x',label='Displacement')Results can be plotted non-interactively and screenshots saved by
setting up the camera and saving the result.  This can help with the
visualization and post-processing of a batch result.First, get the camera position from an interactive plot:>>>cpos=result.plot_nodal_solution(0)>>>print(cpos)[(5.2722879880979345,4.308737919176047,10.467694436036483),(0.5,0.5,2.5),(-0.2565529433509593,0.9227952809887077,-0.28745339908049733)]Then generate the plot:result.plot_nodal_solution(0,'x',label='Displacement',cpos=cpos,screenshot='hexbeam_disp.png',window_size=[800,600],interactive=False)Stress can be plotted as well using the below code.  The nodal stress
is computed in the same manner that ANSYS uses by to determine the
stress at each node by averaging the stress evaluated at that node for
all attached elements.  For now, only component stresses can be
displayed.# Display node averaged stress in x direction for result 6result.plot_nodal_stress(5,'Sx')Nodal stress can also be generated non-interactively with:result.plot_nodal_stress(5,'Sx',cpos=cpos,screenshot=beam_stress.png,window_size=[800,600],interactive=False)Animating a Modal SolutionMode shapes from a modal analysis can be animated usinganimate_nodal_solution:result.animate_nodal_solution(0)If you wish to save the animation to a file, specify the
movie_filename and animate it with:result.animate_nodal_solution(0,movie_filename='/tmp/movie.mp4',cpos=cpos)Reading a Full FileThis example reads in the mass and stiffness matrices associated with
the above example.# Load the reader from pyansysfromansys.mapdlimportreaderaspymapdl_readerfromscipyimportsparse# load the full filefobj=pymapdl_reader.FullReader('file.full')dofref,k,m=fobj.load_km()# returns upper triangle only# make k, m full, symmetric matricesk+=sparse.triu(k,1).Tm+=sparse.triu(m,1).TIf you havescipyinstalled, you can solve the eigensystem for its
natural frequencies and mode shapes.fromscipy.sparseimportlinalg# condition the k matrix# to avoid getting the "Factor is exactly singular" errork+=sparse.diags(np.random.random(k.shape[0])/1E20,shape=k.shape)# Solvew,v=linalg.eigsh(k,k=20,M=m,sigma=10000)# System natural frequenciesf=np.real(w)**0.5/(2*np.pi)print('First four natural frequencies')foriinrange(4):print'{:.3f}Hz'.format(f[i])First four natural frequencies
1283.200 Hz
1283.200 Hz
5781.975 Hz
6919.399 HzDeveloping on WindowsThis package is designed to be developed on Linux, and if you need to develop on Windows
you will need to install your own C++ compiler. We recommend:Install Visual C++Seeherefor a list of which Python versions correspond to which Visual C++ versionInstall the development version of pymapdl-reader to your Python environmentNavigate to the project’s top level (the same directory as this README)runpip install-e.License and AcknowledgmentsTheansys-mapdl-readerlibrary is licensed under the MIT license.