Skip to main content

Pythonic interface to ANSYS binary files

Project description

This Python module allows you to:
  • Interactively control an instance of ANSYS using Python. Linux only (for now).

  • Extract data from ANSYS files and to display them if VTK is installed.

  • Read in result (.rst), mass and stiffness (.full), and 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.

Dependencies: numpy, cython, vtkInterface. Optional: vtk

Minimum requirements are numpy to extract results from a results file. To convert the raw data to a VTK unstructured grid, VTK 5.0 or greater must be installed with Python bindings.

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.RunAll()

Controlling ANSYS

Create an instance of ANSYS and send commands to it.

import os
import pyansys

path = os.getcwd()
ansys = pyansys.ANSYS(run_location=path)

# 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.Save()
ansys.Exit()

Loading and Plotting an ANSYS Archive File

ANSYS archive files containing solid elements (both legacy and current), can be loaded using ReadArchive and then converted to a vtk object.

import pyansys
from pyansys import examples

# Sample *.cdb
filename = examples.hexarchivefile

# Read ansys archive file
archive = pyansys.ReadArchive(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.ParseVTK()
grid.Plot()

# write this as a vtk xml file
grid.Write('hex.vtu')

You can then load this vtk file using vtkInterface or another program that uses VTK.

# Load this from vtk
import vtkInterface
grid = vtkInterface.UnstructuredGrid('hex.vtu')
grid.Plot()

Loading and Plotting an ANSYS 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 solely with numpy installed.

# Load the reader from pyansys
import pyansys

# Sample result file
from pyansys import examples
rstfile = examples.rstfile

# Create result reader object by loading the result file
result = pyansys.ResultReader(rstfile)

# Get the solution time values (natural frequencies for this modal analysis)
freqs = result.GetTimeValues()

# Get the node numbers in this result file
nnum = result.nnum

# Get the 1st bending mode shape.  Nodes are ordered according to nnum.
disp = result.GetNodalResult(0, True) # uses 0 based indexing

# it's just a numpy array
print(disp)
[[  0.           0.           0.        ]
 [  0.           0.           0.        ]
 [  0.           0.           0.        ]
 ...,
 [ 21.75315943 -14.01733637  -2.34010126]
 [ 26.60384371 -17.14955041  -2.40527841]
 [ 31.50985156 -20.31588852  -2.4327859 ]]

You can plot results as well directly from the file as well.

# Plot the displacement of the 1st in the x direction
result.PlotNodalResult(0, 'x', label='Displacement')

# Plot the nodal stress in the 'x' direction for the 6th result
result.PlotNodalStress(5, 'Sx')

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.LoadKM()  # 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.27.4.tar.gz (2.3 MB view details)

Uploaded Source

Built Distributions

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

Uploaded CPython 3.6m Windows x86-64

pyansys-0.27.4-cp36-cp36m-manylinux1_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.6m

pyansys-0.27.4-cp35-cp35m-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.5m Windows x86-64

pyansys-0.27.4-cp35-cp35m-manylinux1_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.5m

pyansys-0.27.4-cp27-cp27m-manylinux1_x86_64.whl (3.9 MB view details)

Uploaded CPython 2.7m

File details

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

File metadata

  • Download URL: pyansys-0.27.4.tar.gz
  • Upload date:
  • Size: 2.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyansys-0.27.4.tar.gz
Algorithm Hash digest
SHA256 46132cab6019235797ffb27d7da73d3611afc860f017f5e6ee2a3890fa630617
MD5 900302f81582dfdb5e716f538bbb5041
BLAKE2b-256 2a972eced230f0e310285160c4ff1596a9c4baaf643109ca3337058d7f73cb11

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyansys-0.27.4-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 ee4c4ed53a7209912719932d42b60f4a89facde843ae7bf7258c37a893ed38ca
MD5 57262e253a939a6b81f3ee031b7adead
BLAKE2b-256 f5d64e07981c8582e4d02997080c567b12c2871d1877ed97b597c0ad22a2bc72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyansys-0.27.4-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 622dd5e3fc233e2b19bc50754d169478f347dc490bdf6ffb385905199a5fcd01
MD5 954cb1b672115b3a0b450353b1746e80
BLAKE2b-256 0f69b16bd5ec0c23abfcddce97cf0aba244478721cbedcd30deabfd67b0d3ab2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyansys-0.27.4-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 859bda713c0540693ec2b0f0e743a59b408135e126efa497cc415325ccd1e324
MD5 8d3d1e74ca71e10c12b3aa5e032729de
BLAKE2b-256 a48917945cf39e19d099d3bccc8fe1aa4e8e8aab20afa8121350c60f04e86993

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyansys-0.27.4-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 52d5955eaad59de36de72e0bcc3b749ae5c2eb6f021417d4b4f942ae1857b522
MD5 4b215b65e2eba6e102dc50a2e6f192fb
BLAKE2b-256 1244320a5d0f8f9361c14c306e7b7fe2453b618343cbed21dfa7991a5c3ecd81

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyansys-0.27.4-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a4a3b5da97f7b6598090b5d4e8f4025b81ee0b17b662e5da7335d0c5f5756132
MD5 1ba65cb36b160c59c81a3895d156fce0
BLAKE2b-256 92dcf3180b7f1ef271149cdd00afaf4190edb304b071256895240e9092467f11

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