____ __ _ / __ \ __ __ / /_ ___ _____ (_)_ __ ___ / /_/ // / / // __ \ / _ \ / ___// /| | / // _ \ / ____// /_/ // / / // __/(__ )/ / | |/ // __/ /_/ \__, //_/ /_/ \___//____//_/ |___/ \___/ /____/ A lightweight, flexible python package to insert cohesive elements
Simple, extensible python library to read a finite element mesh and insert cohesive elements. Meshes are partitioned into sectors using METIS mesh partitioner, and cohesive elements are inserted between partitions. This allows an arbitrary level of insertion (controlled primarily by the number of partitions) without the user needing to specify cumbersome face-sets along which to insert.
Abaqus, ANSYS msh, AVS-UCD, CGNS, DOLFIN XML, Exodus, FLAC3D, H5M, Kratos/MDPA, Medit, MED/Salome, Nastran (bulk data), Neuroglancer precomputed format, Gmsh (format versions 2.2, 4.0, and 4.1), OBJ, OFF, PERMAS, PLY, STL, Tecplot .dat, TetGen .node/.ele, SVG (2D only, output only), SU2, UGRID, VTK, VTU, WKT (TIN), XDMF.
Mesh I/O is facilitated by meshio, see meshio documentation for up-to-date list of supported mesh formats.
To get a local copy up and running follow these simple steps.
Install via pip
$ python3 -m pip install pyhesive
Or clone the repository and install an editable copy from setup.py
$ git clone https://gitlab.com/Jfaibussowitsch/pyhesive.git
$ cd pyhesive
$ python3 -m pip install -e .
[RECOMMENDED] Command line script
$ pyhesive-insert -n 15 /path/to/mesh/file
Additional commmand line arguments are listed via
$ pyhesive-insert --help
The tool is also fully functional via Python module import
import pyhesive as pyh
# create the mesh from plain old data
mesh = pyh.Mesh.from_POD(points,cells,copy=True)
# create partitions
number_of_partitions = 2 # for example
mesh.partition_mesh(number_of_partitions)
# insert elements between partitions
mesh.insert_elements()
# write to file, for example in abaqus format
# '.inp' extension is automatically appended
output_file_name = my_mesh_dir/"cohesive_mesh"
mesh.write_mesh(output_file_name,mesh_format_out="abaqus")
To run the test suite, make sure you have
pytest and
vermin installed. Then clone the
repository, and run pytest from
the project directory. Alternatively one can also run make test
to
test additional features such as package upload, installation and
minimum Python version.
# to run just the correctness tests
$ pytest
# to run all tests
$ make test
This project is supported by the Center for Exascale-enabled Scramjet Design (CEESD) at the University of Illinois at Urbana-Champaign.
This material is based in part upon work supported by the Department of Energy, National Nuclear Security Administration, under Award Number DE-NA0003963.