Skip to main content

Pythonic interface to ANSYS binary files

Reason this release was yanked:

Circular import for ansys.mapdl

Project description

https://img.shields.io/pypi/v/pyansys.svg https://dev.azure.com/femorph/pyansys/_apis/build/status/akaszynski.pyansys?branchName=master https://zenodo.org/badge/70696039.svg https://img.shields.io/discord/412182089279209474.svg?label=Discord&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2
This Python module allows you to:
  • Interactively control an instance of ANSYS v14.5 + using Python on Linux, >=17.0 on Windows.

  • Extract data directly from binary ANSYS v14.5+ files and to display or animate them.

  • Rapidly read in binary result (.rst), binary mass and stiffness (.full), and ASCII block archive (.cdb) files.

See the Documentation page for more details, and the Examples gallery for some examples.

Be sure to visit the discord channel at pyansys Discord Channel

Installation

Installation through pip:

pip install pyansys

You can also visit GitHub to download the source.

Quick Examples

Many of the following examples are built in and can be run from the build-in examples module. For a quick demo, run:

from pyansys import examples
examples.run_all()

Controlling ANSYS

Create an instance of ANSYS and interactively send commands to it. This is a direct interface and does not rely on writing a temporary script file. You can also generate plots using either MAPDL’s internal plotting with matplotlib, or interactive plots using VTK:

import os
import pyansys

path = os.getcwd()
mapdl = pyansys.launch_mapdl(run_location=path, interactive_plotting=True)

# create a square area using keypoints
mapdl.prep7()
mapdl.k(1, 0, 0, 0)
mapdl.k(2, 1, 0, 0)
mapdl.k(3, 1, 1, 0)
mapdl.k(4, 0, 1, 0)
mapdl.l(1, 2)
mapdl.l(2, 3)
mapdl.l(3, 4)
mapdl.l(4, 1)
mapdl.al(1, 2, 3, 4)
mapdl.aplot()
mapdl.save()

Here is an example plot from one of the more complex examples:

https://github.com/akaszynski/pyansys/raw/master/docs/mapdl/images/vplot_vtk_small.png

Loading and Plotting an ANSYS Archive File

ANSYS archive files containing solid elements (both legacy and current), can be loaded using Archive and then converted to a vtk object.

import pyansys
from pyansys import examples

# Sample *.cdb
filename = examples.hexarchivefile

# Read ansys archive file
archive = pyansys.Archive(filename)

# Print raw data from cdb
for key in archive.raw:
   print("%s : %s" % (key, archive.raw[key]))

# Create a vtk unstructured grid from the raw data and plot it
grid = archive.parse_vtk(force_linear=True)
grid.plot(color='w', show_edges=True)

# write this as a vtk xml file
grid.save('hex.vtu')

# or as a vtk binary
grid.save('hex.vtk')
Hexahedral beam

You can then load this vtk file using pyvista or another program that uses VTK.

# Load this from vtk
import pyvista as pv
grid = pv.UnstructuredGrid('hex.vtu')
grid.plot()

Loading the Result File

This example reads in binary results from a modal analysis of a beam from ANSYS.

# Load the reader from pyansys
import pyansys
from pyansys import examples

# Sample result file
rstfile = examples.rstfile

# Create result object by loading the result file
result = pyansys.read_binary(rstfile)

# Beam natural frequencies
freqs = result.time_values
>>> print(freq)
[ 7366.49503969  7366.49503969 11504.89523664 17285.70459456
  17285.70459457 20137.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+01  2.47536161e+01]
 [ 2.89177130e+01 -2.82745126e+01  6.05151053e+00]
 [ 2.88715048e+01 -2.82764960e+01  1.22913304e+01]
 [ 2.89221536e+01 -2.82479511e+01  1.84965333e+01]
 [ 2.89623914e+01 -2.82480489e+01  3.09226692e-01]
 ...

Plotting Nodal Results

As 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 using VTK.

# Plot the displacement of Mode 0 in the x direction
result.plot_nodal_solution(0, 'x', label='Displacement')
https://github.com/akaszynski/pyansys/raw/master/docs/images/hexbeam_disp_small.png

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 6
result.plot_nodal_stress(5, 'Sx')
https://github.com/akaszynski/pyansys/raw/master/docs/images/beam_stress_small.png

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 Solution

Mode shapes from a modal analysis can be animated using animate_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)
https://github.com/akaszynski/pyansys/raw/master/docs/images/beam_mode_shape_small.gif

Reading a Full File

This example reads in the mass and stiffness matrices associated with the above example.

# Load the reader from pyansys
import pyansys
from scipy import sparse

# load the full file
fobj = pyansys.FullReader('file.full')
dofref, k, m = fobj.load_km()  # returns upper triangle only

# make k, m full, symmetric matrices
k += sparse.triu(k, 1).T
m += sparse.triu(m, 1).T

If you have scipy installed, you can solve the eigensystem for its natural frequencies and mode shapes.

from scipy.sparse import linalg

# condition the k matrix
# to avoid getting the "Factor is exactly singular" error
k += sparse.diags(np.random.random(k.shape[0])/1E20, shape=k.shape)

# Solve
w, v = linalg.eigsh(k, k=20, M=m, sigma=10000)

# System natural frequencies
f = np.real(w)**0.5/(2*np.pi)

print('First four natural frequencies')
for i in range(4):
    print '{:.3f} Hz'.format(f[i])
First four natural frequencies
1283.200 Hz
1283.200 Hz
5781.975 Hz
6919.399 Hz

Additional Tools

There are additional tools created by @natter1 at pyansysTools which include the following features:

  • Inline class: Implementing the ANSYS inline functions

  • Macros class: Macros for repeating tasks

  • The geo2d class: Easily create 2d geometries

You can also install pyansystools with

` pip install pyansystools `

Citing this Module

If you use pyansys for research and would like to cite the module and source, you can visit pyansys Zenodo and generate the correct citation. For example, the BibTex citation is:

@software{alexander_kaszynski_2020_4009467,
  author       = {Alexander Kaszynski},
  title        = {{pyansys: Python Interface to MAPDL and Associated
                   Binary and ASCII Files}},
  month        = aug,
  year         = 2020,
  publisher    = {Zenodo},
  version      = {0.43.2},
  doi          = {10.5281/zenodo.4009467},
  url          = {https://doi.org/10.5281/zenodo.4009467}
}

Please visit the link above for the most recent citation as the citation here may not be current.

License and Acknowledgments

pyansys is licensed under the MIT license.

This module, pyansys makes no commercial claim over ANSYS whatsoever. This tool extends the functionality of ANSYS by adding a Python interface in both file interface as well as interactive scripting without changing the core behavior or license of the original software. The use of the interactive APDL control of pyansys requires a legally licensed local copy of ANSYS.

To get a copy of ANSYS, please visit ANSYS

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyansys-0.44.13.tar.gz (2.1 MB view details)

Uploaded Source

Built Distributions

pyansys-0.44.13-cp38-cp38-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.8 Windows x86-64

pyansys-0.44.13-cp38-cp38-manylinux1_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.8

pyansys-0.44.13-cp38-cp38-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

pyansys-0.44.13-cp37-cp37m-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.7m Windows x86-64

pyansys-0.44.13-cp37-cp37m-manylinux1_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.7m

pyansys-0.44.13-cp37-cp37m-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

pyansys-0.44.13-cp36-cp36m-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.6m Windows x86-64

pyansys-0.44.13-cp36-cp36m-manylinux1_x86_64.whl (3.8 MB view details)

Uploaded CPython 3.6m

pyansys-0.44.13-cp36-cp36m-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

pyansys-0.44.13-cp35-cp35m-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.5m Windows x86-64

File details

Details for the file pyansys-0.44.13.tar.gz.

File metadata

  • Download URL: pyansys-0.44.13.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.5.4

File hashes

Hashes for pyansys-0.44.13.tar.gz
Algorithm Hash digest
SHA256 ea8d94c5b5196ca54bad63532a8dc13dc1e2d2a2172aa871e7dd7c1d32a1c9e4
MD5 0f8527f4a0ffb5abb4da1657593343f4
BLAKE2b-256 23f65fc1eef3ac6a55431eac77eafc4c6b0815a1a6e93e54905c3199339e30c4

See more details on using hashes here.

File details

Details for the file pyansys-0.44.13-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pyansys-0.44.13-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.8.6

File hashes

Hashes for pyansys-0.44.13-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ed04e88957f813020d4851db461f78c28a3f2fa5ce29dcdc50f72d87832de085
MD5 732aa1c8d8e4ac8e004a74e41438047d
BLAKE2b-256 0295cb2e71e0ab7e11574bf1b97e2e128684daede04d95c1b0ee33e8c3682fa8

See more details on using hashes here.

File details

Details for the file pyansys-0.44.13-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: pyansys-0.44.13-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/49.2.1 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.8.6

File hashes

Hashes for pyansys-0.44.13-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 269ea5bac442b19454bd0c4dc49392ca23e14a92dd27059836e14be260524b61
MD5 fc45dacebfec8dae12da1088c497ee9d
BLAKE2b-256 1f109dd1761711e8bddded2284b12333b259ccd0b868273c23b57739cbb1e115

See more details on using hashes here.

File details

Details for the file pyansys-0.44.13-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: pyansys-0.44.13-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.8.5

File hashes

Hashes for pyansys-0.44.13-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0d554ae67b43b49ff5daf6bc2019701528102c3d85b7aa4e152a37c99bd356f8
MD5 d50cb5870a419bdfd872e96b3df7b90b
BLAKE2b-256 fc81cd483bd1d98b733133dd8ee6d83a9b804d17fbd012ae1dea939ab41cb659

See more details on using hashes here.

File details

Details for the file pyansys-0.44.13-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: pyansys-0.44.13-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.7.9

File hashes

Hashes for pyansys-0.44.13-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 6ea63cc2fc05992a002958359d4c3744c24d6ded0505ab0e4e90e6ab8be106e3
MD5 4d5e6c39229d56ecd489e36f806d0507
BLAKE2b-256 5e02aca0c5884f9df6eee3a0d5009d3a4560d758da85d1d14ce343beb683ea63

See more details on using hashes here.

File details

Details for the file pyansys-0.44.13-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pyansys-0.44.13-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.7.9

File hashes

Hashes for pyansys-0.44.13-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 704a2e07b294c5be206ed66545d37f32b4382a3f9eb1a94d5edde093b57ca80c
MD5 f3c648e243134748c9965bb0c80e8ad9
BLAKE2b-256 8ea8ca35848a0d6dbf8f7e310f17615ada6402037dfa2dea9504b3b178333164

See more details on using hashes here.

File details

Details for the file pyansys-0.44.13-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: pyansys-0.44.13-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.7.9

File hashes

Hashes for pyansys-0.44.13-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 10944215842f2a9bb77e31143e51fba30a37889f94fcb570bf741ebd581a6492
MD5 38801957d10ff91e656b2764b61f92b1
BLAKE2b-256 458748ed387710d4c83c25003e782d6f144b2e2110f89a8e4553aafe5ff00d17

See more details on using hashes here.

File details

Details for the file pyansys-0.44.13-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: pyansys-0.44.13-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.6.8

File hashes

Hashes for pyansys-0.44.13-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 0a90985c4f902ecac151bcfe6242bb9d4ac063d0dd39758c430b80c7585d471d
MD5 ca396c0ca0437dacd878625196c3f062
BLAKE2b-256 3015cbfdc9272258c99c0cb3e6f3d8b7136ddbfa5fb613d58ca5a898fbf937e1

See more details on using hashes here.

File details

Details for the file pyansys-0.44.13-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pyansys-0.44.13-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.6.12

File hashes

Hashes for pyansys-0.44.13-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 87c1c66c945e4ae35eb6aa09ef37e089dda96483d3b9234ca439ecb3cecbbe2d
MD5 ff7d3ada26c29979b81c9716f9e39fbb
BLAKE2b-256 bf04fe536c625ff5f15470540427c521c3da99c937397b25ef28973c2bb5f61e

See more details on using hashes here.

File details

Details for the file pyansys-0.44.13-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: pyansys-0.44.13-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.6.8

File hashes

Hashes for pyansys-0.44.13-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 35600bf0e5086cf5929db00df470a2f9a92cac8da713a39b378d23d343fa5a93
MD5 8f7b6af3b1179ac1c95b5bf2b08b610f
BLAKE2b-256 584a77de909d9d774d988d3ed65691d1c16227f1bc082b7cceef81804dc8fd8a

See more details on using hashes here.

File details

Details for the file pyansys-0.44.13-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: pyansys-0.44.13-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.5.4

File hashes

Hashes for pyansys-0.44.13-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 eb400dc974df22249d84e7ac3488105f820a15e0c5aa7a079eb8ca27327c9925
MD5 0e168ab3dd108b22f69d758d9a36fc0b
BLAKE2b-256 fd8ce0d1ffc54f9cce63a045213b583d54aa459446ad72651e7f6a1d803bca36

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page