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

Uploaded Source

Built Distributions

pyansys-0.43.1-cp38-cp38-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.8 Windows x86-64

pyansys-0.43.1-cp38-cp38-manylinux1_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.8

pyansys-0.43.1-cp38-cp38-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

pyansys-0.43.1-cp37-cp37m-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.7m Windows x86-64

pyansys-0.43.1-cp37-cp37m-manylinux1_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.7m

pyansys-0.43.1-cp37-cp37m-macosx_10_9_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

pyansys-0.43.1-cp36-cp36m-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.6m Windows x86-64

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

Uploaded CPython 3.6m

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

Uploaded CPython 3.5m Windows x86-64

pyansys-0.43.1-cp35-cp35m-manylinux1_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.5m

File details

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

File metadata

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

File hashes

Hashes for pyansys-0.43.1.tar.gz
Algorithm Hash digest
SHA256 36ef551cf8cb86c473b3f09178cb9e85448d8d2a44813fb7a72ea686c52d62a2
MD5 cc45af1ad288370b8487e8f1d68bac57
BLAKE2b-256 e0bd84c2f6e3449f11d8728497e8494ee32b3daa20f0f9a99a564bf1a8701ce1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.43.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.9 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.2 CPython/3.8.5

File hashes

Hashes for pyansys-0.43.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d81b304c4a7b0d2067178a0a4a77a2a073a9e42f64ca4e3d1acdea07fa8dd421
MD5 3cb7bbb3f5f45f3a39659232f3e88618
BLAKE2b-256 19b2c248f675a9f6296c1f8b78218a0684ff228ce6d1180fc982910ae2681fb3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.43.1-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 4.2 MB
  • Tags: CPython 3.8
  • 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.2 CPython/3.8.5

File hashes

Hashes for pyansys-0.43.1-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ab9fa7fcfda19cd8d2deb016655f86fcb45379f66713cc08c6ec4a6f0881bf4d
MD5 5f0e6faa4264d3585ab22fe3f19b6cac
BLAKE2b-256 30ffa5fef99eed8e635dd17ff327563fa7b7bfbd426307b123d367a52c0b1a9f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.43.1-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.0 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.2 CPython/3.8.3

File hashes

Hashes for pyansys-0.43.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 27ffcf746559402109476b6f812dbfc538dc54f1ceaa728ca7e3d8121f09cba9
MD5 c24ff531a9d85f2a9b888a729d04baf5
BLAKE2b-256 4b29f72fee17629436bfb59486a7d288cc144914942d2f9657cfb27579982ca2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.43.1-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.9 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.2 CPython/3.7.8

File hashes

Hashes for pyansys-0.43.1-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 6f390a920f30fa2ea233c3db03b8525389f7fe2ccfce9fffbf6b994d1334e8d6
MD5 12aa843ccc044d4f1322b18a98df191c
BLAKE2b-256 9de7125bbcd9a43f5e57cdaceab383d155569e80352c48411d5c5400033b57a6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.43.1-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: CPython 3.7m
  • 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.2 CPython/3.7.8

File hashes

Hashes for pyansys-0.43.1-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ed854bc5ef1c8cbcb66fed303dd1886846d9678c6b50efdceda2f0d4b3bd0442
MD5 7c804f7cff790345e72d8f8246861650
BLAKE2b-256 f77299ac7b0ff09494fb487514d4dea621d27cc5e1d7ce43b9e8a03d2ef3d6a9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.43.1-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 2.0 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.2 CPython/3.7.7

File hashes

Hashes for pyansys-0.43.1-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b443ca95afd4f33e505721e57082f45ae7affd19ca73cee094c16f9c75e32e5e
MD5 021d18e19bb0166e0fa953abd64147e0
BLAKE2b-256 7fd7919e6bdf292496e8787cfd5ba28989d8721375d7d436b4db949ee0f7ec8d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.43.1-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 1.9 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.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.8

File hashes

Hashes for pyansys-0.43.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 827a6cfc43663cebc5f0039794de7540aeed38fc60e4cac29baa75232bb5ae49
MD5 9d714745fb5483b94856a915d40dfa60
BLAKE2b-256 2ec0488edfd5981cb9ed74dc559efe51387768ddae9a277515400a6118802ab3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.43.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/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.11

File hashes

Hashes for pyansys-0.43.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 018445106cc330c0930414a0caffc0acd02f97cc0bffbfb51ec37007e28ff367
MD5 1e0917ed9865557128613c5b71539422
BLAKE2b-256 96a19c50df3d81318af901f93610207965a15e9f36cc8ea97eeb6ffcf3d2308c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.43.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.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.8

File hashes

Hashes for pyansys-0.43.1-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7aa31436567cec1cee5550606fcf3a8a554c726650ed2d2ed4c0776bc381a783
MD5 50107d4b2b3f2b57adcb8828e6f2844a
BLAKE2b-256 a760f2ae31977905e913b4f7b792b43be69ab26121f47628890ee960cff9bfb7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.43.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.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.5.4

File hashes

Hashes for pyansys-0.43.1-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 d8f59223d960450f4a828ea7efce3580f3074cd9b208c8b11798780d939fd660
MD5 6546d789e71aa22af23643ae05bc43a0
BLAKE2b-256 126fac840f9a444472d315c197987efc766b4198bc290447bb80abe89c553e29

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.43.1-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.5.9

File hashes

Hashes for pyansys-0.43.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 dea372553c8faf26f2b4b043fcedf1cb491ec81234f79ed8c2bec622cb045e20
MD5 c31c042a9d0e3321b5ebd9a2e7d46044
BLAKE2b-256 6e1cb71094b851599a0079171ea4aeeb028a05421935b9c695c8d7c92a21f672

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