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 vtki or another program that uses VTK.

# Load this from vtk
import vtki
grid = vtki.UnstructuredGrid('hex.vtu')
grid.plot()

Loading the Result File

This example reads in binary results from a modal analysis of a beam from ANSYS. This section of code does not rely on VTK and can be used with only numpy installed.

# 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.ResultReader(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.34.5.tar.gz (5.1 MB view details)

Uploaded Source

Built Distributions

pyansys-0.34.5-cp37-cp37m-win_amd64.whl (5.7 MB view details)

Uploaded CPython 3.7m Windows x86-64

pyansys-0.34.5-cp37-cp37m-manylinux1_x86_64.whl (7.8 MB view details)

Uploaded CPython 3.7m

pyansys-0.34.5-cp36-cp36m-win_amd64.whl (5.7 MB view details)

Uploaded CPython 3.6m Windows x86-64

pyansys-0.34.5-cp36-cp36m-manylinux1_x86_64.whl (7.9 MB view details)

Uploaded CPython 3.6m

pyansys-0.34.5-cp35-cp35m-win_amd64.whl (5.7 MB view details)

Uploaded CPython 3.5m Windows x86-64

pyansys-0.34.5-cp35-cp35m-manylinux1_x86_64.whl (7.8 MB view details)

Uploaded CPython 3.5m

pyansys-0.34.5-cp27-cp27mu-manylinux1_x86_64.whl (7.7 MB view details)

Uploaded CPython 2.7mu

pyansys-0.34.5-cp27-cp27m-manylinux1_x86_64.whl (7.7 MB view details)

Uploaded CPython 2.7m

File details

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

File metadata

  • Download URL: pyansys-0.34.5.tar.gz
  • Upload date:
  • Size: 5.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/38.2.4 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for pyansys-0.34.5.tar.gz
Algorithm Hash digest
SHA256 f5cc23d102e00a94363adfd09586bcd2a0dc1ac10219a4c6b93787273a835b58
MD5 fe2f32df1e4ab7c593fa76a46138ad21
BLAKE2b-256 c68ba1dc213f8c8d824f8957c58acae290594083ca01ed8533a43712f58ab9d3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.5-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 5.7 MB
  • Tags: CPython 3.7m, Windows x86-64
  • 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.7

File hashes

Hashes for pyansys-0.34.5-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 1367271aaa3ce4bea2177629f829c1fed29caf62afe432732c577ce26e117fff
MD5 a349373264adce4d6b3cd2e091d9541e
BLAKE2b-256 d20ded289a11c8ab763e49001d04dc6be2c7c031599a2811d361d992548e9b44

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.5-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.8 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/38.2.4 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for pyansys-0.34.5-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ab428ab14c785ee70c50f242a07b7816cab440b6bdbd856a341236e02792638e
MD5 74417603d085dcf78ad275c929280e21
BLAKE2b-256 4eccce7d80e38bfd6748a226aa0e7b3a83165c2adb09293dfd9fc5970df6351d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.5-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 5.7 MB
  • Tags: CPython 3.6m, Windows x86-64
  • 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.7

File hashes

Hashes for pyansys-0.34.5-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 cc7b25af7af34bde99a86797491d8346490d3c3451aef5f184d462694d62d706
MD5 db8b17ba43e2bb4ba3072b97321af7df
BLAKE2b-256 b92c263ff5dd3b9289454a33bd0b857c7b69c600318a536c4700ad2cbc889818

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.5-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.9 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/38.2.4 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for pyansys-0.34.5-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6adb594b5e65fd94419889ccbf44b76bdd31c0f65d999d01d818091ff82a5d2e
MD5 062a0cdd4556e1b0088fdabfd877484a
BLAKE2b-256 b9448314dbf3789545862c6ebed999b8b34aa807acd50ab296f1707aae25602d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.5-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 5.7 MB
  • Tags: CPython 3.5m, Windows x86-64
  • 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.7

File hashes

Hashes for pyansys-0.34.5-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 f52648ea6527543d103f63bec036cf515dcbc0caf9eb5132b2e3d2250dc8bfc4
MD5 6762280b8ed599b4b670401d5b4bf34c
BLAKE2b-256 1c480a126fa009fd6288ec969cd83c53592fe0c9b5e49443835e60e49153a6fd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.5-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.8 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/38.2.4 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for pyansys-0.34.5-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 39f913ff66676e4b6e05860d73855314d5954a38d4a91dc922401263b48a45dd
MD5 1bf5f4ba8d4d2d5810aa7a3e53f33215
BLAKE2b-256 b2ed6f1f0a86f89f477505fbe5f0a6c394ee40095b601b7c73e0767abbeb17ba

See more details on using hashes here.

File details

Details for the file pyansys-0.34.5-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

  • Download URL: pyansys-0.34.5-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/38.2.4 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for pyansys-0.34.5-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 213de8f5295e767d1cdeb2d549d42a77009e7d50ca27cfcc22a7d4d18a964e6f
MD5 d2dcf15af4c5223e01fe24c2bcd68fc7
BLAKE2b-256 f9160a1fa3190c94d76529d360cc31a29a0e70eec3d7dc8aa13d8fc3e1e793aa

See more details on using hashes here.

File details

Details for the file pyansys-0.34.5-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pyansys-0.34.5-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 7.7 MB
  • Tags: CPython 2.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/38.2.4 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for pyansys-0.34.5-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 43030e9cbc70f92f2d60b4db9b629ab36b94e457036f59746495bf50ffa8ad43
MD5 a4dba1e763ce5de7726909f363dcf971
BLAKE2b-256 f403493669f6ab33272753a8b48a35624b53c9437d71c904d9284aa119337de0

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