Skip to main content

Pythonic interface to ANSYS binary files

Project description

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 v17.0 + using Python.

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

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/doc/images/aplot.png

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')
https://github.com/akaszynski/pyansys/raw/master/doc/images/hexbeam.png

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.

# 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')
https://github.com/akaszynski/pyansys/raw/master/doc/images/beam_stress.png

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

Uploaded Source

Built Distributions

pyansys-0.30.1-cp36-cp36m-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.6m Windows x86-64

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

Uploaded CPython 3.6m

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

Uploaded CPython 3.5m Windows x86-64

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

Uploaded CPython 3.5m

pyansys-0.30.1-cp27-cp27mu-manylinux1_x86_64.whl (4.0 MB view details)

Uploaded CPython 2.7mu

pyansys-0.30.1-cp27-cp27m-manylinux1_x86_64.whl (4.0 MB view details)

Uploaded CPython 2.7m

File details

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

File metadata

  • Download URL: pyansys-0.30.1.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3

File hashes

Hashes for pyansys-0.30.1.tar.gz
Algorithm Hash digest
SHA256 77b4e302f550360de5470832250686ab976d74923ec5b7d2bfd863769ffe090f
MD5 97a1b9ab269a4313e9ee4e78973ed4e1
BLAKE2b-256 4085c2493f840bb8b72c986a7b8b647a4f466f10da68f6cde8abe1b513457939

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.30.1-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.23.1 CPython/3.6.5

File hashes

Hashes for pyansys-0.30.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 2da2ca2413be1fcc01098aa882dd4b54c76ea80b816eb60f39eea8b0417aea65
MD5 e80182965f54dc740e549ac0bcf8e872
BLAKE2b-256 50de8030c67bcb4a94e2b033720658fcc1a39dbabaaf6a931b2f3bd1f290f693

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.30.1-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 4.1 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3

File hashes

Hashes for pyansys-0.30.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ea008f0745a5887fb99a54500b716990152eabf79e40de7388c3ad080a6f4d59
MD5 db08bf83fb3a83eb12fd67d21ab8f459
BLAKE2b-256 1b81b4db85457179663b93df42a8d19fe5fc2ed18d41ef590c54286d6d70a154

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.30.1-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.23.1 CPython/3.6.5

File hashes

Hashes for pyansys-0.30.1-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 45732efc5e3a427f34c0a73b4efa3a0e804c9b7846a8ac6725cfbb0d81d887db
MD5 f30c302493d20da95dabf1ecbb4bcc79
BLAKE2b-256 fb877c71f38530a4877954240392a212018b2fbfbf8fdc73624324c4e412cce8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.30.1-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 4.0 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3

File hashes

Hashes for pyansys-0.30.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 4689e5bb04843e5936b700e4998facfbf15c6cb92bfc1de6f49ffec9f5a3b87e
MD5 8e5e9ffb145aeb0f13744c55973073c8
BLAKE2b-256 cd45a426633ca74185dd680183b3318e5d967819d271a7eeed837f10f9575e8e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.30.1-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 4.0 MB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3

File hashes

Hashes for pyansys-0.30.1-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0d2ec6413445ef36e8fa0bbf78a1d5c03e7b57f0847a1a0b2bd738b302f2b223
MD5 984ffc4edf60f10c7b3b911036f360b3
BLAKE2b-256 8139944b5e631cd355d06326568236b133425f2fb72e19f7bde2c6b55b478429

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyansys-0.30.1-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 4.0 MB
  • Tags: CPython 2.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.3

File hashes

Hashes for pyansys-0.30.1-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 d6eb3eaab2d4bd7c6a7ff0c2ac7062e5dcbaefdbd639fc1fcf9f15e78e11f19b
MD5 3caac58f2bf36bedf49ebc1afca6744d
BLAKE2b-256 90f1751289c17b9d442e1ec5a4988c25f2e6c46af0111d19ca0f3b4c351d9af9

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