Metadata-Version: 2.4
Name: oamc
Version: 0.2.2
Summary: Optimal Additive Manufacuring of Composites
Author: Nicolas Ebeling
Author-email: Nicolas Ebeling <nicolas.ebeling@tum.de>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering
Requires-Dist: numpy
Requires-Dist: scipy
Requires-Dist: numba
Requires-Dist: pypardiso
Requires-Dist: pyvista[colormaps]
Requires-Dist: imageio
Requires-Dist: sphinx ; extra == 'doc'
Requires-Dist: sphinx-autodoc-typehints ; extra == 'doc'
Requires-Dist: sphinx-copybutton ; extra == 'doc'
Requires-Dist: pydata-sphinx-theme ; extra == 'doc'
Requires-Dist: myst-parser ; extra == 'doc'
Requires-Dist: pytest ; extra == 'test'
Requires-Dist: pyansys ; extra == 'test'
Requires-Python: >=3.13
Provides-Extra: doc
Provides-Extra: test
Description-Content-Type: text/markdown

# OAMC

This project aims to facilitate the _optimal additive manufacturing of (continuous-fiber) composites_ (OAMC) by providing various path planning algorithms, which take loads and constraints into account.

The subpackage `oamc.lpp` is based on Garth Pearce's [load path plotter](https://github.com/GarthPearce/LoadPathMATLAB/) but faster and more flexible; it supports tetrahedral and quadratic element types, for example. The generated load paths may be used to visualize and understand the transfer of loads through the structure, directly for 3D printing, or to initialize a gradient-based optimization algorithm.

This project is part of my bachelor's thesis _FEA-Driven Fiber Path Optimization for Nonplanar FDM Printing with Sparse Continuous Fiber Reinforcement_ at TUM.

## Conventions

Docstrings adhere to the [NumPy style guide](https://numpydoc.readthedocs.io/en/latest/format.html).

Node and element indices are converted from 1-based to 0-based indexing upon import.

Strains and stresses are stored in standard Voigt notation `[X, Y, Z, YZ, XZ, XY]` and engineering shear strain convention (twice the tensorial shear strains to keep the strain energy density consistent between vector and tensor notations). Utility functions may offer multiple shear strain conventions, but engineering is always the default.
