Skip to main content

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 the Panel class (from 3pc-panel) containing the laminate definition and geometry.
  • loads (Loads): An instance of the Loads class (from 3pc-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 by 3pc-material.
  • plies: Path to the plies JSON file. Follows the format expected by 3pc-plies.
  • laminates: Path to the laminates JSON file. Follows the format expected by 3pc-laminate.
  • panels: Path to the panels JSON file. Follows the format expected by 3pc-panels.
  • loads: Path to the loads JSON file. Follows the format expected by 3pc-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 include MECHANICAL, THERMO-MECHANICAL, HYGRO-MECHANICAL, and HYGRO-THERMO-MECHANICAL.
  • failure_theory: The failure theory to evaluate. Supported options include MAX STRAIN, MAX STRESS, TSAI HILL, and TSAI 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/}
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

3pc_lamfail-1.0.7.tar.gz (129.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

3pc_lamfail-1.0.7-py3-none-any.whl (153.7 kB view details)

Uploaded Python 3

File details

Details for the file 3pc_lamfail-1.0.7.tar.gz.

File metadata

  • Download URL: 3pc_lamfail-1.0.7.tar.gz
  • Upload date:
  • Size: 129.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for 3pc_lamfail-1.0.7.tar.gz
Algorithm Hash digest
SHA256 9c0ea496ade732acf41c6d4c20d669ea32121fd244164ce672bf78a73db57646
MD5 7c31303f1d38bb5e0da47efa3b86f12c
BLAKE2b-256 d03589dbaa3bcdbd043a91bd0c8623f95f9ba137c8b44b8f2c372e84ef896838

See more details on using hashes here.

File details

Details for the file 3pc_lamfail-1.0.7-py3-none-any.whl.

File metadata

  • Download URL: 3pc_lamfail-1.0.7-py3-none-any.whl
  • Upload date:
  • Size: 153.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for 3pc_lamfail-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 a1dad0d02c770f3feccb49168e583e2050a510a1d5d700153443b1978ae71dd8
MD5 1cc43cbed60c1f6969f9666dcd57c786
BLAKE2b-256 f88e211e2f5bf3470f8b59925b710a5fd8cfbb38bacefc854dcf6637dec2f974

See more details on using hashes here.

Release history Release notifications | RSS feed

1.0.8

2 files

This release

1.0.7 This release

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page