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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8

pyansys-0.44.3-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.3-cp37-cp37m-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.7m Windows x86-64

pyansys-0.44.3-cp37-cp37m-manylinux1_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.7m

pyansys-0.44.3-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.3-cp36-cp36m-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.6m Windows x86-64

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

Uploaded CPython 3.6m

pyansys-0.44.3-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.3-cp35-cp35m-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.5m Windows x86-64

pyansys-0.44.3-cp35-cp35m-manylinux1_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.5m

File details

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

File metadata

  • Download URL: pyansys-0.44.3.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.9

File hashes

Hashes for pyansys-0.44.3.tar.gz
Algorithm Hash digest
SHA256 1c728aa28c6ecdcdd03707a43678621458335610e7fae6ca71c6fc3c1d3ce338
MD5 6b15bd8c9db450d686f6d4c88b74c56d
BLAKE2b-256 6d396d09ca077490ac07cfc6aa244089f8a9f7290e5952d34c039b86d73c32c4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.3-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.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5

File hashes

Hashes for pyansys-0.44.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 ab1df657324987cb0be5fffcac3d1c2542ecf06b97bd101fb1409427dc5092dd
MD5 1885fbdc05db92e27f17ee8ef27641d6
BLAKE2b-256 4c022ff6519bee4ca7ba04a811e05f298023b383c8d8f34b7724550d01b33054

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.3-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.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5

File hashes

Hashes for pyansys-0.44.3-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 cbdc8433ba57ffaf6b010b13c181273ba8cbea43bc3b7c67d8779b8732b69960
MD5 af6b675cb07fcdceb5ef3afe386e776e
BLAKE2b-256 d06accd8e4630b274dd95f82bbb8c655d5963cdeee8761497b9a19ad9cacbc55

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.3-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.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5

File hashes

Hashes for pyansys-0.44.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3990e0321db6cc6dd297fff912c63a632f20e6f80160c2aa4d0f86013da74d54
MD5 4051b1ae07f0ddf7938ae5598097bbc6
BLAKE2b-256 2a5478c39534c147e4f54ec58301a5a82ff4d013807dba958abd64b0b762adae

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.3-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.5.0.1 requests/2.24.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.9

File hashes

Hashes for pyansys-0.44.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 b13d8c01562c6250df2f7c2fd83912faf9ebe57e50b875f9ea53e2062d7679aa
MD5 33e0dfbf81e2d34c2c026d92294767ed
BLAKE2b-256 bdad982372b9a77f2829d2cd3ea915177feade2c1ca762fed89931983397f605

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pyansys-0.44.3-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a1f5284ece7c84812c77d13e09b0be98653c16d28e375ede483ef658ba02dc1b
MD5 5989c55f54546186471a4ee5a0536a84
BLAKE2b-256 8405162c6cb57fe1cad95952d47bfcd8f943082c162421ec3aa8458983de460d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.3-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.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.7.9

File hashes

Hashes for pyansys-0.44.3-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8bf40f6d2722055ce46788e1a53fce032b9c188d792037c2efe495ab20399776
MD5 7c3c8eecba11448ebdc2912c6e683faf
BLAKE2b-256 c49b015d232f42fc86604a879760f3dabcce29868f2f63984f4fddb3183b6993

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.3-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.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.6.8

File hashes

Hashes for pyansys-0.44.3-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 96c82bbcb3bf719aaeefe025bfcccfabf536189e5cb19599f301dea4d180c976
MD5 edd821f10d3357d5d5359a039662d0ae
BLAKE2b-256 25b9eabf33bcd6800500a1a50cefc6e3aff853145f5ff43d1ca6a8db8ced96ce

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.3-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.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.6.12

File hashes

Hashes for pyansys-0.44.3-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 aa5ffcd5a873fb3c5964ea5ef3bc8ba654b463721f6f7d9d27027fdc1ba223e0
MD5 0f493e92647ab3a1012f78286d5bc9ee
BLAKE2b-256 3ed8e2132c17310d5aec0f8b643d28d501c306de879b89950526c7115d188a60

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.3-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.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.6.8

File hashes

Hashes for pyansys-0.44.3-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5c6fe5b28019bb8ae6d611a85b61fe52172664788b3f839160af83f32cf607c2
MD5 49701e8d4a338ea9fff5dcbb74b63db0
BLAKE2b-256 629a1f6c5bcf6ed03adcb64c85ebe33928418229f2c6633f3435d5cfa1f5486e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.44.3-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.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.5.4

File hashes

Hashes for pyansys-0.44.3-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 1687874a2071f9911402af727140d4252c66f30c1b45dd1ff261bbd8e9590d3b
MD5 ee82184018d33063c055f37cb3e700e0
BLAKE2b-256 3fe5ba14f214c6d7e7cf9de8904ad9657d9107af788ac573df2ab45ddf34faf2

See more details on using hashes here.

File details

Details for the file pyansys-0.44.3-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pyansys-0.44.3-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.5.10

File hashes

Hashes for pyansys-0.44.3-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ebeb7050783136b41fbf415f86946aa3d3505e998e81a450e0dad75cb7d9c4a5
MD5 a9e1ab21dfd1a51c4786d9a929e4cb78
BLAKE2b-256 26bd7a71e439a1e1458a6e9740422e4c3ff8c1e3cdd18a716151728afba61556

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