3pc-lamfail
3pc-lamfail is a Python library used for ply-wise stress and strain analysis of shear deformable anisotropic laminates under hygrothermal and mechanical loads. It provides a Lamfail class to calculate stresses, strains, and various margins of safety (MS) based on classical and first-order shear deformation theories.
Installation
Use the package manager pip to install 3pc-lamfail. Since the package and its dependencies are available on PyPI, you can install them directly:
pip install 3pc-lamfail
API Reference
Lamfail Class
The primary component of this package is the Lamfail class, which takes a panel and a load case to compute detailed failure metrics.
from lamfail.lamfail import Lamfail
Required Parameters
When initializing Lamfail, the following parameters are required:
panel(Panel): An instance of thePanelclass (from3pc-panel) containing the laminate definition and geometry.loads(Loads): An instance of theLoadsclass (from3pc-loads) containing the load case and environmental conditions.
Calculated Properties
The class automatically calculates the following properties lazily:
NT,MT: Thermal in-plane loads and moments.NC,MC: Hygral in-plane loads and moments.ek0: Mid-plane strains and curvatures[ex0, ey0, gxy0, kx0, ky0, kxy0].gT0: Mid-plane transverse strains[gyz0, gxz0].tauyz,tauxz: Transverse shear stresses for each ply.stress: Total stress in reference coordinate axes (x-y-z) for each ply (bottom, mid, top).stressM,stressT,stressH: Mechanical, thermal, and hygral components of stress in reference axes.stress1,stressM1,stressT1,stressH1: Stresses transformed to material coordinate axes (1-2-3).strain,strainM,strainT,strainH: Strains in reference coordinate axes.strain1,strainM1,strainT1,strainH1: Strains in material coordinate axes.
Margins of Safety (MS)
The following failure theories are implemented:
stress1MS: Max Stress theory using total stress.stressM1MS: Max Stress theory using mechanical stress.strain1MS: Max Strain theory using total strain.strainM1MS: Max Strain theory using mechanical strain.tsaiHill1MS,tsaiHillM1MS: Tsai-Hill failure theory (Total/Mechanical).tsaiWu1MS,tsaiWuM1MS: Tsai-Wu failure theory (Total/Mechanical).
Methods
Lamfail.fromDict(**kwargs)
Initializes a Lamfail instance using a dictionary of keyword arguments.
Usage Examples
Basic Initialization
Below is an example of performing a failure analysis on a panel under a specific load case.
from panel.panel import Panel
from loads.loads import Loads
from lamfail.lamfail import Lamfail
# Assuming pnl (Panel) and ld (Loads) are already defined
lf = Lamfail(panel=pnl, loads=ld)
# Access Margins of Safety for Ply 1 (bottom ply)
print("Max Stress MS (Material Axes):", lf.stress1MS["1"]["mid"])
print("Tsai-Wu MS:", lf.tsaiWu1MS["1"]["mid"])
# Access stresses
print("Total Stress (x-y-z):", lf.stress["1"]["top"])
Commands
The package provides a command-line interface entry point. After installing, you can run the application using:
lamfail input.cfg
(This entry point is defined in lamfail.__main__:main)
Options
config(positional): Specify the configuration file (.cfg) to run the analysis.-h, --help: Show the help message and exit.-v, --version: Show the version number.-s, --sample: Copy example files (materials, plies, laminates, etc.) to the current directory.
Configuration File (input.cfg)
The lamfail command requires a configuration file (typically named input.cfg or lamfail.cfg). Below is an example based on lamfail/examples/mechanical/max-strain/lamfail.cfg:
[files]
materials = materials.json
plies = plies.json
laminates = laminates.json
panels = panels.json
loads = loads.json
output = output.txt
[analysis]
analysis_type = MECHANICAL
failure_theory = MAX STRAIN
[files] Section
This section defines the paths to the required input JSON files and the desired output file:
materials: Path to the materials JSON file. Follows the format expected by3pc-material.plies: Path to the plies JSON file. Follows the format expected by3pc-plies.laminates: Path to the laminates JSON file. Follows the format expected by3pc-laminate.panels: Path to the panels JSON file. Follows the format expected by3pc-panels.loads: Path to the loads JSON file. Follows the format expected by3pc-loads.output: Path to the text file where the failure analysis results will be written.
[analysis] Section
This section specifies the analysis settings:
analysis_type: The type of analysis to run. Supported options includeMECHANICAL,THERMO-MECHANICAL,HYGRO-MECHANICAL, andHYGRO-THERMO-MECHANICAL.failure_theory: The failure theory to evaluate. Supported options includeMAX STRAIN,MAX STRESS,TSAI HILL, andTSAI WU.
Citation
If you use this library in your research or work, please cite it as follows:
APA Format:
Rastogi, N., & Seresta, O. (2026). 3pc-lamfail: Python library for ply-wise stress, strain, and failure analysis of anisotropic laminates. PyPI. https://pypi.org/project/3pc-lamfail/
BibTeX:
@software{3pc_lamfail,
author = {Rastogi, Naveen and Seresta, Omprakash},
title = {3pc-lamfail: Python library for ply-wise stress, strain, and failure analysis of anisotropic laminates},
year = {2026},
url = {https://pypi.org/project/3pc-lamfail/}
}
Metadata
Release files for 3pc-lamfail 1.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| 3pc_lamfail-1.0.8.tar.gz | 129.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 3pc_lamfail-1.0.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 283.6 kB
Release files / 3pc_lamfail-1.0.8.tar.gz
| Download URL | 3pc_lamfail-1.0.8.tar.gz |
|---|---|
| Size | 129.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
053bc7314e2fe2983598fe8e7b84802d87f2165bc042263448292a37f5c2bb7b
|
|
BLAKE2b-256 checksum How to use checksums |
5ea04d846300445e7d2274b466d1b0635ba9634366e4ac9a13c1c4ae5b2976fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|
Release files / 3pc_lamfail-1.0.8-py3-none-any.whl
| Download URL | 3pc_lamfail-1.0.8-py3-none-any.whl |
|---|---|
| Size | 153.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
408fbcd991b410adffd039c086cc08e7dac68e2aaa46bc697da2b582f3b96980
|
|
BLAKE2b-256 checksum How to use checksums |
960a810231f6d627cb1533ef690977d026bf819cd755697382ff75f9f9a4aa86
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.3
|
Security for 3pc-lamfail 1.0.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.