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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8

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

Uploaded CPython 3.8 macOS 10.9+ x86-64

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

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m

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

Uploaded CPython 3.7m macOS 10.9+ x86-64

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

Uploaded CPython 3.6m Windows x86-64

pyansys-0.42.1-cp36-cp36m-manylinux1_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.6m

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

Uploaded CPython 3.6m macOS 10.9+ x86-64

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

Uploaded CPython 3.5m Windows x86-64

pyansys-0.42.1-cp35-cp35m-manylinux1_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.5m

File details

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

File metadata

  • Download URL: pyansys-0.42.1.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.5.4

File hashes

Hashes for pyansys-0.42.1.tar.gz
Algorithm Hash digest
SHA256 5a09cb1975888a9e7316151d91299aa03ae391ca4f6b7eb8ea70d309b38f04a0
MD5 1f894908230b86a180ec68370d8f24a3
BLAKE2b-256 ce14bd475bc75964e0659c27309333f518417dbfe20aeed23868d98951b00d41

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.1-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/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.8.5

File hashes

Hashes for pyansys-0.42.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 04aa816a83591ecce92fd7044cc30da2974f80fb197ee9f306b4b9040438fdf3
MD5 ac5570d588aeef5f60ccdef0705f8392
BLAKE2b-256 e6b61481d56a8246e690afc5b4921df733eb52770760f22e00c6b25576db7b6a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.1-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 4.1 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.9

File hashes

Hashes for pyansys-0.42.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 aad317974156498099f6020b5e7b04ab18d0de78fa41e1eb6bafc8dc33b1b1da
MD5 311958ece8597ee2acfc4eb185a01667
BLAKE2b-256 9ef3d0f1ff74c747c8c60fc19d299f8351547a5fb282b1fbdcb951207ab1087f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.1-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.48.0 CPython/3.8.3

File hashes

Hashes for pyansys-0.42.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e915da53dcd30531ff9fe315af8b85156c5c2a9589dcd4bb866f052b6c9151b6
MD5 b502a3fadf261179dc22f473619f1907
BLAKE2b-256 4fd45b97b8468011578759141cc2d24b4bc52afc829de463c3c425a80204e975

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.1-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/47.1.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.8

File hashes

Hashes for pyansys-0.42.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 0708dfabdd99db96ac732d3255c92e52b2514249df4389db0d5b5972828ab581
MD5 b89e91144756fdc09946093a55d76b5e
BLAKE2b-256 8ddedfc8db9021d0771c5368957e4cdeb5c2292820fa133dc812331d79188250

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.1-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.9

File hashes

Hashes for pyansys-0.42.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c4d90d44ef3cf1175bc74f77e7df27a11fade8bb3f1f00c3da9e621bae208a00
MD5 7748fce5f7b99ace931deb2887e26c95
BLAKE2b-256 8826d1f85b74a37dbfdc94982e2bd8a4e945cb976fd44da0a9e76951f7f603eb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.1-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.48.0 CPython/3.7.7

File hashes

Hashes for pyansys-0.42.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 79801a7a230caa1f3033ba458d00e7d9498f101ac25eb162462932324cdf23e8
MD5 4f459533780b9c380e825f7d6f0e3fdd
BLAKE2b-256 b235ed4caa45c91763da49bd0626675a61f77b1b13ba0ddf25ee5acaa876473a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.1-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/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.6.8

File hashes

Hashes for pyansys-0.42.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 ee8f042de21f8cc6906c465b3e3a8818e7cf19dc08700b336d3f67cc4a08a97d
MD5 4bcd72093a3c6f40529099d955230e4b
BLAKE2b-256 9634233cc58b07ab8a38b3ef8163656c034f15892185c6585631d4f2bacb3d0d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.1-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.9

File hashes

Hashes for pyansys-0.42.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c01c1edd2e62f0365a19179bbafd0d66a4ddda4429b6f86fb597fd169fe35612
MD5 c7b33bf949e67396424a3b61d094ae9a
BLAKE2b-256 dfce250b536477133aa81fa189359c302b5136f135eaa3a71b1277cb58407540

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.1-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/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.6.8

File hashes

Hashes for pyansys-0.42.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 feaf101232f8deb3d3c0c0e9526d0f8968a2e5229a562ec7c2cb3e69a8ba10c6
MD5 4948e95f779aae8d10246fe3cbf4c53e
BLAKE2b-256 aa9fe37cd0ae59ff6967116265d2b91aaad568ed5cd82ecaf83905da7789b27b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.1-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/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.5.4

File hashes

Hashes for pyansys-0.42.1-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 b175165ff2f717ff32cfc0df61ee34a36e164c8772e8c84bdcba98a78bf3ca52
MD5 37360bb3920d23e378305b8f59bfb20b
BLAKE2b-256 501a90c12f49c0cdf8c64202196c73a4938ad2235faf949c8e6a4a4a6c1ce644

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.1-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.9

File hashes

Hashes for pyansys-0.42.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 de1d97bfaeb7891cec947806b15de6d7c1474c11abc53497486fe17998542bd6
MD5 6f33f3c28b4dfffc0dc72924e66c283c
BLAKE2b-256 dabacbf3256da7538b9ce6e6e2ed46fbe4172fd9d281a6d46c965ae265f15027

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