Skip to main content

Pythonic interface to ANSYS binary files

Project description

https://img.shields.io/pypi/v/pyansys.svg https://travis-ci.org/akaszynski/pyansys.svg?branch=master http://readthedocs.org/projects/pyansys/badge/?version=latest
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()
ansys = pyansys.ANSYS(run_location=path, interactive_plotting=True)

# create a square area using keypoints
ansys.Prep7()
ansys.K(1, 0, 0, 0)
ansys.K(2, 1, 0, 0)
ansys.K(3, 1, 1, 0)
ansys.K(4, 0, 1, 0)
ansys.L(1, 2)
ansys.L(2, 3)
ansys.L(3, 4)
ansys.L(4, 1)
ansys.Al(1, 2, 3, 4)
ansys.Aplot()
ansys.Save()
ansys.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()
grid.plot()

# write this as a vtk xml file
grid.Write('hex.vtu')
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.open_result(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 analsyis 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 matricies
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

License and Acknowledgments

pyansys is licensed under the MIT license.

ANSYS documentation and functions build from html provided by Sharcnet. Thanks!

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.

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

Uploaded Source

Built Distributions

pyansys-0.36.3-cp37-cp37m-win_amd64.whl (8.8 MB view details)

Uploaded CPython 3.7m Windows x86-64

pyansys-0.36.3-cp37-cp37m-manylinux1_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.7m

pyansys-0.36.3-cp37-cp37m-macosx_10_6_intel.whl (9.5 MB view details)

Uploaded CPython 3.7m macOS 10.6+ Intel (x86-64, i386)

pyansys-0.36.3-cp36-cp36m-win_amd64.whl (8.8 MB view details)

Uploaded CPython 3.6m Windows x86-64

pyansys-0.36.3-cp36-cp36m-manylinux1_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.6m

pyansys-0.36.3-cp36-cp36m-macosx_10_6_intel.whl (9.5 MB view details)

Uploaded CPython 3.6m macOS 10.6+ Intel (x86-64, i386)

pyansys-0.36.3-cp35-cp35m-win_amd64.whl (8.7 MB view details)

Uploaded CPython 3.5m Windows x86-64

pyansys-0.36.3-cp35-cp35m-manylinux1_x86_64.whl (10.9 MB view details)

Uploaded CPython 3.5m

pyansys-0.36.3-cp35-cp35m-macosx_10_6_intel.whl (9.5 MB view details)

Uploaded CPython 3.5m macOS 10.6+ Intel (x86-64, i386)

File details

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

File metadata

  • Download URL: pyansys-0.36.3.tar.gz
  • Upload date:
  • Size: 8.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.7

File hashes

Hashes for pyansys-0.36.3.tar.gz
Algorithm Hash digest
SHA256 2cc58e3d1050b31d815d87e9489690034be2aacd3c169d1b60b147ce78c6ebe5
MD5 f1d27cab71a89333e2f239c67f5a1f95
BLAKE2b-256 9e51cdf38a5cbceec0b2262e11850b4ebc8992f3db32672291bbbd6ed1173faf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.36.3-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 8.8 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.5.4

File hashes

Hashes for pyansys-0.36.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 2378ef5252c15cd5b4464a48fd7f6fd76393caedea1160c4d95970cc0250e846
MD5 f2d8e7eb5cb968b8dd054373b650a13d
BLAKE2b-256 73506d9bd384917f78ecae116cb1c339be511170e7c02f17e93e4ed1da6bd133

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.36.3-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 11.0 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.7

File hashes

Hashes for pyansys-0.36.3-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 403c40f9f2c6ea5970609066a9a08583e9c733ee1d62a3f6db636e69365916e3
MD5 f4d8051e6e43fda8a7be1be0ec69fa93
BLAKE2b-256 455fbfef52cf64d71c3a8bd1fa96a4335798d87b9af3538cb0a116ab97b58a47

See more details on using hashes here.

File details

Details for the file pyansys-0.36.3-cp37-cp37m-macosx_10_6_intel.whl.

File metadata

  • Download URL: pyansys-0.36.3-cp37-cp37m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 9.5 MB
  • Tags: CPython 3.7m, macOS 10.6+ Intel (x86-64, i386)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for pyansys-0.36.3-cp37-cp37m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 5c1894a0925c1e83699f38d416fc2b50c90659e8f6756a3bd9223372ea1dee58
MD5 3d2ecea1166fc5fac0ffa30b57c8a0d7
BLAKE2b-256 7e6f62bebf1ef5872d0df77fb4a02c4b2faaf5aaad7374354df0c21769a63d46

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.36.3-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 8.8 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.5.4

File hashes

Hashes for pyansys-0.36.3-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 c218cbe86fd6796d048bc5087cb4a054ef87c9daa85f0a2c9c5b26ac05568c01
MD5 6b29fed4a4ba85edb37a76bc14b4a7ba
BLAKE2b-256 22b1c8904ca98f7276b09d9c3a82f066c8785057af7f1588433ba849037a97a4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.36.3-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 11.0 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.7

File hashes

Hashes for pyansys-0.36.3-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ca722c4740f6f7d665e5f52073533fc9eb32fbba301cf273a51be0e0f7247fdf
MD5 c4bb675f26dd505409a064561e33cece
BLAKE2b-256 9634a352c62896a7e88e51f5ac270cce2dcb2b8aa32f6a8bdf1a3e19b51dbce4

See more details on using hashes here.

File details

Details for the file pyansys-0.36.3-cp36-cp36m-macosx_10_6_intel.whl.

File metadata

  • Download URL: pyansys-0.36.3-cp36-cp36m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 9.5 MB
  • Tags: CPython 3.6m, macOS 10.6+ Intel (x86-64, i386)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for pyansys-0.36.3-cp36-cp36m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 5eaca1985c520f45290348c471bb86e5b917a6c22282aaad5d1b15b321f06064
MD5 3da929f0a8f4c81a3534832d21f42b2b
BLAKE2b-256 4f70930875ccaa19f8bd82b604ac03d6c3fcdbc3d39317ddb56bfeda569195f5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.36.3-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 8.7 MB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.5.4

File hashes

Hashes for pyansys-0.36.3-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 088e4994f403fe4d5a63c1a5b920a771603aefa31339a3717907c48d62bb2b54
MD5 f73c18a102daecbf3235141b0f930a66
BLAKE2b-256 e79e9a1d2e6c6c63d38f4ef5b8bc4dd2eb82cf669de6d7cfb151a99325a8b052

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.36.3-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 10.9 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.7

File hashes

Hashes for pyansys-0.36.3-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 66943883287132ec242530b39183de998b4f818f03fe31bc795ca4166ad0a061
MD5 7625ee09b9a26951cc835db495d32d7d
BLAKE2b-256 492c7f93e542a013816f1727e3eac149aac4f54a5131951bce4dd040e78460bd

See more details on using hashes here.

File details

Details for the file pyansys-0.36.3-cp35-cp35m-macosx_10_6_intel.whl.

File metadata

  • Download URL: pyansys-0.36.3-cp35-cp35m-macosx_10_6_intel.whl
  • Upload date:
  • Size: 9.5 MB
  • Tags: CPython 3.5m, macOS 10.6+ Intel (x86-64, i386)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.2

File hashes

Hashes for pyansys-0.36.3-cp35-cp35m-macosx_10_6_intel.whl
Algorithm Hash digest
SHA256 36025367adf05eb05dbce218088455ade1748bc346ab4e900b0e1c2f9725941a
MD5 4d6d78f0d029b098e870e8e42aa05ce8
BLAKE2b-256 eb02ccf44f92fb939e3b2e7452c057c664bdb46a245c29a7d1af0a23cad9ab3e

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