Skip to main content

Pythonic interface to ANSYS binary files

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.14.tar.gz (2.1 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.8

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

Uploaded CPython 3.8macOS 10.9+ x86-64

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

Uploaded CPython 3.7mWindows x86-64

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

Uploaded CPython 3.7m

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

Uploaded CPython 3.7mmacOS 10.9+ x86-64

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

Uploaded CPython 3.6mWindows x86-64

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

Uploaded CPython 3.6m

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

Uploaded CPython 3.6mmacOS 10.9+ x86-64

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

Uploaded CPython 3.5mWindows x86-64

File details

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

File metadata

  • Download URL: pyansys-0.44.14.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.14.tar.gz
Algorithm Hash digest
SHA256 05373097e90d5e942bc0bc8ca49db79dbbd147519ca307ed3a6a56b32be85885
MD5 69901203fe9b2ab78a203a8fac0af9d0
BLAKE2b-256 5f431573df43ff6c85937b0400760e452373af33e97795edb800f4642588da33

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.14-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.14-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 1d04b830e01f5b895601307ed7cd1b28805319d81a629b299f6b7a1609114720
MD5 c6e1ae5a67bc9fd420565e594b57a38b
BLAKE2b-256 a3d7227c3987464f9fe6b14331054cfc7ad95cdf370383050c7eac22ed42b55f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.14-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.14-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 060293286760066dcf6a186c7667d7a99913888c11180acbc8bfbcf53b97c0ca
MD5 4f79ea2eed70c4985c60881d9d2602f4
BLAKE2b-256 e7380e7ef7d53a447fd98bb424c1973689819f570859a86dfd6a0a3b2d38384e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.14-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.14-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4ea9c12346ae9c5a31b6b5e812b2bdebc9a1928e55909604c48c6486e2b7192b
MD5 1113d1950453b7be0d46c1380ade2dd6
BLAKE2b-256 48c9ff36c2bfaf86abcf934e4f268426819efda0bb6ea7f6efbc39eb9cc8082d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.14-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.14-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 a1e3606f36641cbd946dbc44fd039a4757f6ca09b74f602cbf69a33b5033d408
MD5 c69115c41bc9c8936bbf96471ae23974
BLAKE2b-256 ba6d2e7e423d903fa673db14b42eff63367ae680fbf5256d71cbd595b4dea1e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.14-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.14-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 beeb701dfd2d50a32bb48c35b756738ff354dd26c179898a66a835f8c9a56006
MD5 9a77b088a9defd92ce80382cf262dfba
BLAKE2b-256 3818c715cc2394f711b35e1083c02123430e1a4a05dc11dc25fee054d5e97010

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.14-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.14-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ebff3e6fe2e0e08841e930d33a2d49bda9db6b36c544ddf61aacffbee885fb9a
MD5 40cb02c8588ea9c89626454e3fe8acdc
BLAKE2b-256 bbd5a6b1a7156682e9154a925bb8a4b4dd085ad5a18b997f1e087e05aefcb375

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.14-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.14-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 80f4b084b06b8cc26a5d936caa05085160f73167c9aec520a12844d80dce72e1
MD5 d89ae4c43d096d18babb8e85b332a003
BLAKE2b-256 68b6d19614d1a5448623a4888b88d6d87e70d38e9f98cccb7a02f8c5f92d21e9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.14-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.14-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 628de3891e452341d0354e178ae18c17267f1155595da5a76de042848ce2e372
MD5 f66c9d3704e6434fb3d96f77fe1664c5
BLAKE2b-256 3a72be297bb57e26458c54acfe78c2b1fd64c981cf0b5a38fae24a0543d60832

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.14-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.14-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b2ad59bf0dcc4e9c702c53a972abf7198d8720141429cd9f31b71399f3a7f3bc
MD5 6789a37943d6edad6d7079dcfda548da
BLAKE2b-256 c153d8f0b4d1909c7163e76db69aa3c903cac3b151e3bc5d57419e99919afae3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.14-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.14-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 2aa1bd63d9aa08afe770c3c33c06194b3fa5cdafc9b6272c4ca8c48a0431edd8
MD5 9a5d24a1889f0ec99d76ae4232e23442
BLAKE2b-256 1238df5bb45e60a2d73d3e21166382f7183f1b14132693418cbc199a0e10e155

See more details on using hashes here.

Supported by

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