Laminated composites engineering simulations in Python.
This project's purpose is to provide simple & accurate computations for engineering simulations of fiber-reinforced composites. This kind of advanced material is used in many areas of engineering: spacecrafts, pressure vessels, risers etc. Basically, the idea behind composite laminates is to produce a component which has the required engineering properties (high elastic modulus, low self-weight and others) through stacking many layers of laminae, in such way that each one can be layed in different fiber angles and can consist of different materials.
Therefore, a composite laminate consists of a material resultant of layers (laminae) bonded together. In this program, the layers are considered continuous and orthotropic. It is possible to input different properties for each used material in the layers.
The implementation uses the Classical Laminate Theory (CLT) for computations. The summary of this theory can be found in: NASA's Basic Mechanics of Laminated Composite Plates, Prof. W. Stein's document and other sources.
lamipy can be installed and run, but it is not ready for engineering use yet. Verification against published examples is still incomplete.
- Provide a simple interface for laminate testing;
- Display accurate information of results, including graphical analysis;
- Calculates CLT stresses & strains (lamina & laminate coord. systems);
- Failure tests for individual laminas (Tsai-Wu, Max. Stress, Max Strain and Hashin criteria);
- Progressive failure analysis using Ply Discount method;
- Plotting of progressive failure analysis;
- Easy entry of laminate data;
- Puck failure criteria;
- Thermal & moisture effects on CLT calculations;
- Laminate materials simple database
- ...
Install and test with uv:
uv sync
uv run pytest
uv run pip-audit
uv run lamipy-demouv sync creates a virtual environment and installs lamipy with NumPy and Matplotlib. uv run pytest runs the unit tests. uv run pip-audit checks the installed packages against the Python advisory database. uv run lamipy-demo runs the progressive-failure example and writes figures under plots/. The example layup lives in lamipy/runfailuretest.py.
From another environment, install this repository with pip install . or uv pip install . and call the library directly:
from lamipy.clt import calc_stressCLTAs previously stated, lamipy works through the CLT computations. This way, the user input consists of the material properties, layup configurations, force vectors and other settings.
Below is a summary of the data flow inside lamipy for a simple analysis (i.e. not a progressive failure analysis).
Through the obtained results from an analysis, it is possible to plot charts for better visualisation:

Also, since lamipy is capable of running a progressive failure analysis, it is possible to automatically plot the Load Factor vs. Average Strain of the laminate while directly pointing First Ply Failure and Last Ply Failure:

