Read blocked Ansys MAPDL archive files written from MAPDL using
CDWRITE
.
This is effectively pymapdl-reader without the binary reader. It's been isolated to allow greater flexibility in development.
Installation through pip:
pip install mapdl-archive
ANSYS archive files containing solid elements (both legacy and modern), can be loaded using Archive and then converted to a VTK object.
from mapdl_archive import Archive, examples
# Sample *.cdb
filename = examples.hexarchivefile
# Read ansys archive file
archive = Archive(filename)
# Print raw data from cdb
for key in archive.raw:
print("%s : %s" % (key, archive.raw[key]))
# Create an 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')
You can then load this vtk file using PyVista or VTK.
import pyvista as pv
grid = pv.UnstructuredGrid('hex.vtu')
grid.plot()
MAPDL archive *.cdb
and *.dat
files containing elements (both
legacy and modern) can be loaded using Archive and then converted to a
vtk
object:
import mapdl_archive
from mapdl_archive import examples
# Read a sample archive file
archive = mapdl_archive.Archive(examples.hexarchivefile)
# Print various raw data from cdb
print(archive.nnum, archive.nodes)
# access a vtk unstructured grid from the raw data and plot it
grid = archive.grid
archive.plot(color='w', show_edges=True)
You can also optionally read in any stored parameters within the archive
file by enabling the read_parameters
parameter.
import mapdl_archive
archive = mapdl_archive.Archive('mesh.cdb', read_parameters=True)
# parameters are stored as a dictionary
archive.parameters
Unstructured grids generated using VTK can be converted to ANSYS APDL
archive files and loaded into any version of ANSYS using
mapdl_archive.save_as_archive
in Python followed by CDREAD
in
MAPDL. The following example using the built-in archive file
demonstrates this capability.
import pyvista as pv
from pyvista import examples
import mapdl_archive
# load in a vtk unstructured grid
grid = pv.UnstructuredGrid(examples.hexbeamfile)
script_filename = '/tmp/grid.cdb'
mapdl_archive.save_as_archive(script_filename, grid)
# Optionally read in archive in PyMAPDL and generate cell shape
# quality report
from ansys.mapdl.core import launch_mapdl
mapdl = launch_mapdl()
mapdl.cdread('db', script_filename)
mapdl.prep7()
mapdl.shpp('SUMM')
Resulting ANSYS quality report:
------------------------------------------------------------------------------ <<<<<< SHAPE TESTING SUMMARY >>>>>> <<<<<< FOR ALL SELECTED ELEMENTS >>>>>> ------------------------------------------------------------------------------ -------------------------------------- | Element count 40 SOLID185 | -------------------------------------- Test Number tested Warning count Error count Warn+Err % ---- ------------- ------------- ----------- ---------- Aspect Ratio 40 0 0 0.00 % Parallel Deviation 40 0 0 0.00 % Maximum Angle 40 0 0 0.00 % Jacobian Ratio 40 0 0 0.00 % Warping Factor 40 0 0 0.00 % Any 40 0 0 0.00 % ------------------------------------------------------------------------------
At the moment, only solid elements are supported by the
save_as_archive
function, to include:
vtk.VTK_TETRA
vtk.VTK_QUADRATIC_TETRA
vtk.VTK_PYRAMID
vtk.VTK_QUADRATIC_PYRAMID
vtk.VTK_WEDGE
vtk.VTK_QUADRATIC_WEDGE
vtk.VTK_HEXAHEDRON
vtk.VTK_QUADRATIC_HEXAHEDRON
Linear element types will be written as SOLID185, quadratic elements will be written as SOLID186, except for quadratic tetrahedrals, which will be written as SOLID187.
The mapdl-archive
library is licensed under the MIT license.