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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.6m Windows x86-64

pyansys-0.28.0-cp36-cp36m-manylinux1_x86_64.whl (4.1 MB view details)

Uploaded CPython 3.6m

pyansys-0.28.0-cp35-cp35m-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.5m Windows x86-64

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

Uploaded CPython 3.5m

pyansys-0.28.0-cp27-cp27mu-manylinux1_x86_64.whl (3.9 MB view details)

Uploaded CPython 2.7mu

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

Uploaded CPython 2.7m

File details

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

File metadata

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

File hashes

Hashes for pyansys-0.28.0.tar.gz
Algorithm Hash digest
SHA256 993e81f2d0bab9571b3448198f90a90dc8135b73e0413c520ae4ca4f8513c338
MD5 c6bd3e3cc481807712d136ce2ffb8e66
BLAKE2b-256 42049a4de337ed49d270e31c06dfecfad1dc395287ab338ca13e43074ccc06eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyansys-0.28.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 948cfa4045ad4a9b53c538f59ec3149cf858e0184f8f6afe4dfe03d2beba514d
MD5 2534178f1c6b5197ffbb6adf1be1f705
BLAKE2b-256 1f2b6a3b632e6d5af2763a49c726dd1f9cee01f5c7ad2a7654170fc948019499

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyansys-0.28.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 25d50fbbc27e74e05de29d23b013e4ebf7f032851b6f7704b0340637976a2d35
MD5 cdf1d421900c1cc5918f0ecf0aa113c5
BLAKE2b-256 04015ecdd2d0679b1e2a104c26e18d2cc1db07b446e49e039da39fd827f161e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyansys-0.28.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 3cfaac3bb00cd44bae9b9397f526d76780747588f37a38b0643b89cd0aff44ba
MD5 ad1e6703e64e26b8d40db3bdaaebafef
BLAKE2b-256 61d14f2c67b852c283038da8e3debc5809fcc53c6d6fa4319b12b07f9e0e0955

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyansys-0.28.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 24e01322f9d3e3cbbe741f0733ac3190c22b48b2cbf412ab72dc9328d9ff26bc
MD5 b844cf0d4d3d92b6165a5d32f41f62e8
BLAKE2b-256 b17afcf39ff17cc36010de87ad68052b4dd8d61444bde3f07df637d5486affc7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyansys-0.28.0-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6d2e5cdd22b6e50a691e2488417fc1635490db394f734c5308738af53dad74da
MD5 2fc993e38078b1fbf25192c822d6820a
BLAKE2b-256 a67cd4a96454452f61b8e9c119ea8685b6d801004112a3c30a42cae219a9d036

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyansys-0.28.0-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a9e9c8072210705e78e94e35a7e6c2b68c2fbe4ce6f62183433f642d7f6f7611
MD5 44328471e66f7276270c4dd1666fe7dc
BLAKE2b-256 d53852237131a0e335db05a909e024c1c7bbd5799b2c2eb74ff04789b634c3b4

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