Microstructure modeling, mesh generation, analysis, and visualization.
Project description
MicroStructPy is a microstructure mesh generator written in Python. Features of MicroStructPy include:
2D and 3D microstructures
Grain size, shape, orientation, and position control
Polycrystals, amorphous phases, and voids
Unstructured and raster meshes
Mesh verification
Visualizations
Output to common file formats
Customizable workflow
The three steps to creating a microstructure are: 1) seed the domain with particles, 2) create a Voronoi power diagram, and 3) convert the diagram into an unstructured mesh.
Download & Installation
To install MicroStructPy, download it from PyPI using:
pip install microstructpy
If there is an error with the install, try pip install pybind11 first, then install MicroStructPy.
MicroStructPy can also be installed from source:
git clone https://github.com/kip-hart/MicroStructPy.git pip install -e MicroStructPy/
Installing MicroStructPy creates the command line program microstructpy and the Python package microstructpy. The command line program executes a standard workflow on XML input files, while the package exposes classes and functions for a customized workflow.
Run a Demo
MicroStructPy includes several demo and example files to help new users get started with the program. A full list of examples is available online at https://docs.microstructpy.org/examples.html.
Here is minimal example input file:
<?xml version="1.0" encoding="UTF-8"?>
<input>
<material>
<shape> circle </shape>
<size> 0.15 </size>
</material>
<domain>
<shape> square </shape>
</domain>
</input>
This example can be run from the command line by excuting:
microstructpy --demo=minimal.xml
Alternatively, you can copy the text to a file such as my_input.xml and run microstructpy my_input.xml.
The same output can be obtained from using the package in a script:
import matplotlib.pyplot as plt
import microstructpy as msp
phase = {'shape': 'circle', 'size': 0.15}
domain = msp.geometry.Square()
# Unpositioned list of seeds
seeds = msp.seeding.SeedList.from_info(phase, domain.area)
# Position seeds in domain
seeds.position(domain)
# Create polygonal mesh
polygon_mesh = msp.meshing.PolyMesh.from_seeds(seeds, domain)
# Create triangular mesh
triangle_mesh = msp.meshing.TriMesh.from_polymesh(polygon_mesh)
# Plot outputs
for output in [seeds, polygon_mesh, triangle_mesh]:
plt.figure()
output.plot(edgecolor='k')
plt.axis('image')
plt.axis([-0.5, 0.5, -0.5, 0.5])
plt.show()
Documentation
MicroStructPy documentation is available online at https://docs.microstructpy.org.
To build a local copy of the documentation, execute the following from the top-level directory of the MicroStructPy repository:
pip install tox tox -e docs
Once built, the documentation will be in docs/build/.
Publications
If you use MicroStructPy in you work, please consider including these citations in your bibliography:
K. A. Hart and J. J. Rimoli, Generation of statistically representative microstructures with direct grain geometry control, Computer Methods in Applied Mechanics and Engineering, 370 (2020), 113242. (BibTeX) (DOI)
K. A. Hart and J. J. Rimoli, MicroStructPy: A statistical microstructure mesh generator in Python, SoftwareX, 12 (2020), 100595. (BibTeX) (DOI)
The news article AE Doctoral Student Kenneth A. Hart Presents MicroStructPy to the World, written by the School of Aerospace Engineering at Georgia Tech, describes MicroStructPy for a general audience.
Contributing
Contributions to the project are welcome. Please use the GitHub pull request and issue submission features. See the Contributing Guidelines for more details.
License and Attributions
MicroStructPy is open source and freely available. Copyright for MicroStructPy is held by Georgia Tech Research Corporation. MicroStructPy is a major part of Kenneth (Kip) Hart’s doctoral thesis, advised by Prof. Julian Rimoli.
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
Built Distribution
Hashes for microstructpy-1.5.9-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f07096c581ad6c12e3d1b4ab48382abfe920d14e03935de595ce6dea7dfd621b |
|
MD5 | 785f025e889dd10c1c53872051e10b84 |
|
BLAKE2b-256 | 3183cd35e61d13b1e09c1848b1142f849ac0efdb2a594e2884b8fcdc0541d060 |