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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.8 Windows x86-64

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

Uploaded CPython 3.8

pyansys-0.42.0-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.0-cp37-cp37m-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.7m Windows x86-64

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

Uploaded CPython 3.7m

pyansys-0.42.0-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.0-cp36-cp36m-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.6m Windows x86-64

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

Uploaded CPython 3.6m

pyansys-0.42.0-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.0-cp35-cp35m-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.5m Windows x86-64

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

Uploaded CPython 3.5m

File details

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

File metadata

  • Download URL: pyansys-0.42.0.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • 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.0.tar.gz
Algorithm Hash digest
SHA256 ce13bf0516f03e42c44ed681e18419b91f33b8d2b80801f8723e331aedc8308a
MD5 c4bdbbc857cc1b77b3022b49d29ec0c4
BLAKE2b-256 2bffdbf54384966f8af85bdca8a6e756395500bd5cd9417fa959292d38003d61

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.0-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.4

File hashes

Hashes for pyansys-0.42.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 6bed4e63735d8e092383cc7ae8ece879b17aefc796c39d6eaa6a98057cf693fe
MD5 00b5870d9c8677bca398b614fbfcb318
BLAKE2b-256 402970c91ffa07e9cb66de083103dda5276b53646bc50587092181e88233d84e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.0-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.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b019626722287823e32d085e51470ccf67da1486417f5e0a8b13291c53b5507c
MD5 3d9c6ab609e503ce4abc5b4b1b23288d
BLAKE2b-256 fa0862c03e39649824082c4c0a3bd4635935b1b6484355adc7a3cfffb5d96882

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.0-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.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 23b486c43dc5b4dab9c756885186087d62da9c453258700a331a0a43f56bc002
MD5 0bce340794758c5d2303a03be5205cec
BLAKE2b-256 c9e81134a4c8ce4d86b54140af8b21f7208437a7d6db1d6bd7cc1600df64ae14

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.0-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.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 7c72dbf6040718420507a67581c71435878449fa3fdf02506d559e3f8b780216
MD5 f49ad3ef5fc61fc049b111b098d18e19
BLAKE2b-256 881fe84df9a378e36388d94ab3b529b5ddc11acfeca69b349ddebdcf13bbe09d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.0-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.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2eadf06d6442fa5f0c5848dc20ec570fb850ea2f8ad85aca658064119bffae73
MD5 45e705380a287d1ec6034d8fb2c46910
BLAKE2b-256 82bbfe2999a846cb213b39058288c0ee45aa2083f02871f54fbd4a73f3124a04

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.0-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.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 24ad9a4896cc13565d5981e1b6916aa0b45d6edb8369f2546fb91d5d78ee5b3f
MD5 1bcea6ff3c9bb3172f8ba6921db32adb
BLAKE2b-256 5500fe6a14b67d867f9af2badd25b6e86516db53e10ab4d199b464af47c9a089

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.0-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.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 833fe679dce7f7fe7bee0ed053038f1a4c81c67643450b72beb7d6bc96ceaf29
MD5 aa0b2f4905d8a3e34cc96c531ca0f33e
BLAKE2b-256 6a712733e2dfcd073b38b5af07f854928963bb9e7677bd5c07499b7e3a75726e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.0-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.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 eae5a1b7aa85ea1ac66fccae1cbed9d8f9512e5f152d12581546095c5256b79e
MD5 fe050cb98c2da964e41717f8b35925b3
BLAKE2b-256 7d901d64460a33467db692bc11fcbe19609aa2d595f19a006203ad5ab9feb685

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.0-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.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 eda185fda2004ed8cf3e3c2da664ff5b324ec40e8acac15511c01c888e686fce
MD5 2851d6b424c3755e3fdf29eb5ebaff3e
BLAKE2b-256 5f16865302cbbd7977a34abffb422fc6899c07f7eac31a69839b1e1c283b1e97

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.0-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.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 d56446a8c3a52fb7d56771d02dc48f1a31379dd1fc4151e23be64d92306fef21
MD5 7f3448d23f89ba4a9af0844a98760c57
BLAKE2b-256 e58c0e6dcb540c399034b35a0e48336cf63137b79d59f67f0562b056d9c28606

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.42.0-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.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 dcd0f80fd107b5b12602a496482f2b79eeadabce43bf6b5400beb8d4724dfe6f
MD5 b0c6c58c98cab10b788b912572b292e3
BLAKE2b-256 3bad7e8672c683f8917623b227d6c207bf81c0edaa0b90bcad707463f59085d6

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