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

Uploaded Source

Built Distributions

pyansys-0.34.7-cp37-cp37m-win_amd64.whl (8.7 MB view details)

Uploaded CPython 3.7m Windows x86-64

pyansys-0.34.7-cp37-cp37m-manylinux1_x86_64.whl (10.9 MB view details)

Uploaded CPython 3.7m

pyansys-0.34.7-cp36-cp36m-win_amd64.whl (8.7 MB view details)

Uploaded CPython 3.6m Windows x86-64

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

Uploaded CPython 3.6m

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

Uploaded CPython 3.5m Windows x86-64

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

Uploaded CPython 3.5m

pyansys-0.34.7-cp27-cp27mu-manylinux1_x86_64.whl (10.7 MB view details)

Uploaded CPython 2.7mu

pyansys-0.34.7-cp27-cp27m-manylinux1_x86_64.whl (10.7 MB view details)

Uploaded CPython 2.7m

File details

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

File metadata

  • Download URL: pyansys-0.34.7.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.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.7.tar.gz
Algorithm Hash digest
SHA256 2f8b8062dc775b8480c2c89a583a535e2df99265c080685bc5daa34b6f493490
MD5 97142c91accd9fd1e108e976aa824130
BLAKE2b-256 f227a6cd107f133c22d614951e4c209bf73264d07918a0b7f076a796c2eb239f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.7-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 8.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.7-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 62852f72fef5ea135d5fad3e6e315a678bf1691fe8a9e39dc5c53b4c4f935af3
MD5 213b0c3afe25837bd98ff7c883b2599c
BLAKE2b-256 21971fd4465ef7f24d78a5fa02dbb209ab604296f7a07744867772e8f244bff9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.7-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 10.9 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.7-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f5643ebf7a43b5cd80edfb35a7241c2f3dce0b8f3610352de169ef1eeaaab67c
MD5 11b30b55a92c4c9fd3a785618364b6b8
BLAKE2b-256 a1eba839c2ac8f8a74a4083f007ab9db3730b96b811dfc07bdad5ed7a539a318

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.7-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 8.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.7-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 245a657f53ae3456bde895f19ae1d6b2030e2ee03d6d1554130a8b72eb1935be
MD5 6fa5c2c51bc975c9325e0f0dd754cae4
BLAKE2b-256 05c93cb40123c26cb114b8243f4912c8a8808bccb564175edd2a8184dc4117ee

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.7-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.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.7-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a8673c1d9bb7157fce7fb2ed1df86536ce1df12bdabfa183b01e9e9648fecdb1
MD5 6f50307a788b5a0b3a70f5d7a992a68b
BLAKE2b-256 2f49d90d82d4add86865566c63c13e03d8694f65c89439787c364489f2998995

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.7-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.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.7-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 3ee136e11092921d003277394fcf0c160af4dc5237bcbce4f9e37d1861eecc0a
MD5 4df44dca4226d46de9b273b92beea316
BLAKE2b-256 2c36986e7a78a2b4f48d22727bcdd5461c0d8e92fcea7fa4ab38caa9664bf6dc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.7-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.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.7-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 50da5ce6f2bbacf3c90479bfcec43447c575099b17083ab18bcab252108f4df7
MD5 301986ceab591bb8b4474bfc256e8e1a
BLAKE2b-256 b3f1eb011bbe5847030df3dd60c1e28e664d4eac38d476acfa29dd10de5956ef

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.7-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 10.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.7-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 619318bb0ab128c0501eec1907345f5cea878ba425752e29941f0b7ff867e431
MD5 b78bbc9c2968f3f8299e3417669a5515
BLAKE2b-256 3e8a877b3018164f26c4f35134ec7b744faa58a5ddc6b8262dd06692e89732a2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.34.7-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 10.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.7-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 fcb5d5ccf1efd5eceedea7772fe469230f49b200ba241f9d554a314b9d3fa22b
MD5 95969ea6f9faa0d03ef722d5c51d0484
BLAKE2b-256 921e42672905b7af4c637b68ad7c4844b41f5155a489b116324be910e6e8cfab

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