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
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.

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 matplotlib.

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()
mapdl.exit()
https://github.com/akaszynski/pyansys/raw/master/docs/images/aplot.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')
https://github.com/akaszynski/pyansys/raw/master/docs/images/hexbeam.png

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.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.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.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 `

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

Uploaded Source

Built Distributions

pyansys-0.41.5-cp38-cp38-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.8 Windows x86-64

pyansys-0.41.5-cp38-cp38-manylinux1_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.8

pyansys-0.41.5-cp38-cp38-macosx_10_9_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

pyansys-0.41.5-cp37-cp37m-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.7m Windows x86-64

pyansys-0.41.5-cp37-cp37m-manylinux1_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.7m

pyansys-0.41.5-cp37-cp37m-macosx_10_9_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

pyansys-0.41.5-cp36-cp36m-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.6m Windows x86-64

pyansys-0.41.5-cp36-cp36m-manylinux1_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.6m

pyansys-0.41.5-cp36-cp36m-macosx_10_9_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.6m macOS 10.9+ x86-64

pyansys-0.41.5-cp35-cp35m-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.5m Windows x86-64

pyansys-0.41.5-cp35-cp35m-manylinux1_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.5m

File details

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

File metadata

  • Download URL: pyansys-0.41.5.tar.gz
  • Upload date:
  • Size: 2.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.7

File hashes

Hashes for pyansys-0.41.5.tar.gz
Algorithm Hash digest
SHA256 c8ad8eae7ed40915b2b3a5c5752153cc56dfe34112841a943cfb168c253e18f5
MD5 cf17fff98121a1a7ee28fea67f41b5a2
BLAKE2b-256 c665e6f9e8d13c5c8f53b8125a9254589d413f70daf4af684ea39d57a6bd1b39

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.41.5-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.8 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/41.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3

File hashes

Hashes for pyansys-0.41.5-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f1e4b1b55a9ae96b7616cf8aaba573fdf07ebef0d806c82dafd594e819383c30
MD5 f869cf98bc488c6f07475741292218d8
BLAKE2b-256 fae209df2ae7dabf935a8016e91da288ea5ebb684b89cc5d0d514a59affb0ab9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.41.5-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 4.1 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/41.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3

File hashes

Hashes for pyansys-0.41.5-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8ca6312bfaa08e53e27f1674dd9f7cbc820503ad73bbb30769b466c3081fbc9f
MD5 581ea1153af7b0d330f3d5672264c2a6
BLAKE2b-256 6eb3f1917a5bd5413bf6abbf3bf198b10b6786f4412c0aada3d9ef5598805c03

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.41.5-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.9 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/41.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3

File hashes

Hashes for pyansys-0.41.5-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e27c34de6ec413dc67b1fea81a0f4da9ba5e9081dd1566aa38019098be5369a1
MD5 209cc383f691d12d8141303bf18efd80
BLAKE2b-256 535cd00c6755da8dedcf14fa6b6f7089357432ed249ccdb244e45f1cb96997b2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.41.5-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.8 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/41.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.7

File hashes

Hashes for pyansys-0.41.5-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 b532f6dd9e820e1c40dfb3b4262ac1ebfa9d49f07fd64d31acf4b51d7edd967d
MD5 3b177115491c8a2b2d2b244af9a50833
BLAKE2b-256 72340e3cc2d7ee9514ee4c4ab3ad4ec349eadb9f776e2037a95a76f4b12ca35f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.41.5-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.6 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/41.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.7

File hashes

Hashes for pyansys-0.41.5-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 3b5f6c3da02b4f649982c90eb9ab8fff106b0e712762c4e30e3267d2f9d45c42
MD5 b0ba1393cd7f96297115c455d5a636c1
BLAKE2b-256 d6c091d763a33c7b67df84321bdb75e698431c55543d7a51b3690a18480a120d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.41.5-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.9 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/41.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.7

File hashes

Hashes for pyansys-0.41.5-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cdf6e4dde60f9d8182a35644efe5b8307a13c3a59f322baf1ad1d3aeb1cf9bbe
MD5 1b7e47bdb269f8e1dc20550c733ebef5
BLAKE2b-256 01ab0534d96b040d7b1076a6909b2aaefc53558eb9298ca5c72db5c0dc29251d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.41.5-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 1.8 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/47.3.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.6.8

File hashes

Hashes for pyansys-0.41.5-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 b4b7754d845ac91afb7a7fbf78a06831f917b4a88cd17dd4366118ad05c4a07e
MD5 32d4d1e951325421bbaaeb4b32db74c1
BLAKE2b-256 da0661706905c573a46baf633bb9880ed4813248d697bb9308da7524e20e1db3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.41.5-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.6 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/40.6.2 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.6.10

File hashes

Hashes for pyansys-0.41.5-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ee73d44b265957dd37a36bf14afb9abaeee6b90c216a30543de328e533253fa6
MD5 be40e83607b687ef9e5fe50e76941538
BLAKE2b-256 fe046e305a2748f3c6f943a333907180520ea09b0a194aab79f0c6f4fadbcf14

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.41.5-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 1.9 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/47.3.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.6.8

File hashes

Hashes for pyansys-0.41.5-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2ff858b4ecd160844322858fc20683c99170a75f0dade5513ed56d3612756674
MD5 66d4b440ee83e50feedbf12561eafd5e
BLAKE2b-256 7bef1e31e819c76a67629519078f996eaf5d8f538d54ba95639051846c0a7e37

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.41.5-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 1.8 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/47.3.1 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.5.4

File hashes

Hashes for pyansys-0.41.5-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 b8e442d4327eaa4cb3baa7c36c9bf0ceeb60d20fef29ff8334199dae3a74a050
MD5 894b929043ee3040cc7486c6a00a123b
BLAKE2b-256 67b49701b88bf76145147c73b82231515fb3026d51cb250a709570a6856709df

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.41.5-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.5 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/28.8.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.5.9

File hashes

Hashes for pyansys-0.41.5-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 adc040c53ee809a7f2607073721372b52028c4901824d8ffc3492f0c04c799f4
MD5 66c7dbfd5dc17faf6116a3f6345c6a2b
BLAKE2b-256 f13a2e2391a0d5072c352d1a545515d1345abacbbbd23939022e81db16aebbd3

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