Catalog PyPI
PACKAGE EXPLORERView in registry

3pc-material

PyPI

A 3pc Python package for material description to be used for 3pc Solvers and other applications, specifically designed to handle orthotropic materials and failure theories like Tsai-Wu.

Versions collected1
Direct dependencies0From release 1.0.1
Last observed20 Oct, 15:35 UTC

README

Version 1.0.1 documentation

3pc-material

3pc-material is a Python package for material description, specifically designed to handle orthotropic materials and failure theories like Tsai-Wu.

Installation

The package is publicly available on PyPI. You can install it using pip:

pip install 3pc-material

API Reference

Orthotropic Class

The primary component of this package is the Orthotropic class, which holds material properties and dynamically calculates properties for failure theories.

from material.orthotropic import Orthotropic

Required Parameters

When initializing Orthotropic directly, the following parameters are required:

  • matID (str): Orthotropic material id.
  • E1 (float): Elastic modulus in direction 1.
  • E2 (float): Elastic modulus in direction 2.
  • G12 (float): Shear modulus in 12 plane.
  • G13 (float): Transverse shear modulus in 13 plane.
  • G23 (float): Transverse shear modulus in 23 plane.
  • v12 (float): Poisson's ratio in 21 plane.

Optional Physical Properties (Default: 0.0)

  • rho (float): Density.
  • alpha1 (float): Coefficient of thermal expansion in direction 1.
  • alpha2 (float): Coefficient of thermal expansion in direction 2.
  • beta1 (float): Coefficient of hygral expansion in direction 1.
  • beta2 (float): Coefficient of hygral expansion in direction 2.

Optional Allowable Properties for Failure Theories (Default: 0.0)

  • eps11_tension_allowable (float): Allowable tensile strain in direction 1.
  • eps11_compression_allowable (float): Allowable compressive strain in direction 1.
  • eps22_tension_allowable (float): Allowable tensile strain in direction 2.
  • eps22_compression_allowable (float): Allowable compressive strain in direction 2.
  • gamma12_allowable (float): Allowable shear strain in 12 plane.
  • gamma23_allowable (float): Allowable shear strain in 23 plane.
  • gamma13_allowable (float): Allowable shear strain in 13 plane.
  • sig11_tension_allowable (float): Allowable tensile stress in direction 1.
  • sig11_compression_allowable (float): Allowable compressive stress in direction 1.
  • sig22_tension_allowable (float): Allowable tensile stress in direction 2.
  • sig22_compression_allowable (float): Allowable compressive stress in direction 2.
  • tau12_allowable (float): Allowable shear stress in 12 plane.
  • tau23_allowable (float): Allowable shear stress in 23 plane.
  • tau13_allowable (float): Allowable shear stress in 13 plane.

Calculated Properties

The class automatically calculates the following properties lazily:

  • v21: Poisson's ratio in 21 plane. Formula: v12 * (E2 / E1).
  • F1: Tsai-Wu parameter. Formula: (1.0 / sig11_tension_allowable) + (1.0 / sig11_compression_allowable).
  • F2: Tsai-Wu parameter. Formula: (1.0 / sig22_tension_allowable) + (1.0 / sig22_compression_allowable).
  • F11: Tsai-Wu parameter. Formula: -1.0 / (sig11_tension_allowable * sig11_compression_allowable).
  • F22: Tsai-Wu parameter. Formula: -1.0 / (sig22_tension_allowable * sig22_compression_allowable).
  • F12: Tsai-Wu parameter. Formula: -0.5 * sqrt(F11 * F22).

Methods

Orthotropic.fromDict(**kwargs)

Initializes an Orthotropic instance using a dictionary of keyword arguments. This is ideal for loading configurations from JSON files or dictionaries. Defaults apply identically to standard initialization.


Usage Examples

Basic Initialization

from material.orthotropic import Orthotropic

ortho = Orthotropic(
    matID="zg",
    E1=181.0,
    E2=10.3,
    G12=7.17,
    G13=7.17,
    G23=7.17,
    v12=0.28,
    sig11_tension_allowable=1500.0,
    sig11_compression_allowable=-1500.0,
    sig22_tension_allowable=50.0,
    sig22_compression_allowable=-150.0
)

print(f"Poisson's ratio v21: {ortho.v21}")
print(f"Tsai-Wu F1 parameter: {ortho.F1}")

Initializing from a Dictionary

You can load your materials directly from a JSON source.

// examples/material.json
{
    "materials": [
        {
            "matID": "zg",
            "E1": 181.0,
            "E2": 10.3,
            "G12": 7.17,
            "G13": 7.17,
            "G23": 7.17,
            "v12": 0.28,
            "rho": 1.6,
            "sig11_tension_allowable": 1500.0,
            "sig11_compression_allowable": -1200.0,
            "sig22_tension_allowable": 50.0,
            "sig22_compression_allowable": -250.0
        }
    ]
}
import json
from material.orthotropic import Orthotropic

with open('examples/material.json', 'r') as f:
    data = json.load(f)

materials = [Orthotropic.fromDict(**mat_dict) for mat_dict in data["materials"]]

for mat in materials:
    print(f"Material ID: {mat.matID}")
    print(f"Calculated Tsai-Wu F11: {mat.F11}")
    print(f"Calculated Tsai-Wu F22: {mat.F22}")
    print(f"Calculated Tsai-Wu F12: {mat.F12}")

Commands

The package provides a command-line interface entry point. After installing, you can run the main application using:

material

(Currently, this serves as an entry point defined in material.main:main)

Downloads & popularity

2downloads
1-day window · source-reported counts17 Oct 2026
17587.50
2026-07-20: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-07-20–2026-07-202026-07-21: 5 · observed 2026-10-20T21:52:01.6260102Z · period 2026-07-21–2026-07-212026-07-22: 6 · observed 2026-10-20T21:52:01.6260102Z · period 2026-07-22–2026-07-222026-07-23: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-07-23–2026-07-232026-07-25: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-07-25–2026-07-252026-07-26: 7 · observed 2026-10-20T21:52:01.6260102Z · period 2026-07-26–2026-07-262026-07-27: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-07-27–2026-07-272026-07-28: 3 · observed 2026-10-20T21:52:01.6260102Z · period 2026-07-28–2026-07-282026-07-29: 13 · observed 2026-10-20T21:52:01.6260102Z · period 2026-07-29–2026-07-292026-08-01: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-01–2026-08-012026-08-02: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-02–2026-08-022026-08-03: 13 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-03–2026-08-032026-08-04: 6 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-04–2026-08-042026-08-06: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-06–2026-08-062026-08-09: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-09–2026-08-092026-08-11: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-11–2026-08-112026-08-13: 4 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-13–2026-08-132026-08-14: 5 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-14–2026-08-142026-08-15: 175 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-15–2026-08-152026-08-16: 13 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-16–2026-08-162026-08-17: 8 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-17–2026-08-172026-08-18: 74 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-18–2026-08-182026-08-19: 8 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-19–2026-08-192026-08-20: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-20–2026-08-202026-08-21: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-21–2026-08-212026-08-22: 92 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-22–2026-08-222026-08-23: 76 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-23–2026-08-232026-08-24: 13 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-24–2026-08-242026-08-25: 3 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-25–2026-08-252026-08-26: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-26–2026-08-262026-08-27: 4 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-27–2026-08-272026-08-28: 4 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-28–2026-08-282026-08-31: 3 · observed 2026-10-20T21:52:01.6260102Z · period 2026-08-31–2026-08-312026-09-01: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-01–2026-09-012026-09-03: 9 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-03–2026-09-032026-09-04: 3 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-04–2026-09-042026-09-05: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-05–2026-09-052026-09-07: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-07–2026-09-072026-09-08: 27 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-08–2026-09-082026-09-09: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-09–2026-09-092026-09-10: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-10–2026-09-102026-09-12: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-12–2026-09-122026-09-14: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-14–2026-09-142026-09-16: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-16–2026-09-162026-09-18: 4 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-18–2026-09-182026-09-21: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-21–2026-09-212026-09-23: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-23–2026-09-232026-09-24: 4 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-24–2026-09-242026-09-26: 4 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-26–2026-09-262026-09-27: 6 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-27–2026-09-272026-09-28: 3 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-28–2026-09-282026-09-29: 3 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-29–2026-09-292026-09-30: 6 · observed 2026-10-20T21:52:01.6260102Z · period 2026-09-30–2026-09-302026-10-02: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-10-02–2026-10-022026-10-04: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-10-04–2026-10-042026-10-06: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-10-06–2026-10-062026-10-07: 5 · observed 2026-10-20T21:52:01.6260102Z · period 2026-10-07–2026-10-072026-10-08: 7 · observed 2026-10-20T21:52:01.6260102Z · period 2026-10-08–2026-10-082026-10-09: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-10-09–2026-10-092026-10-11: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-10-11–2026-10-112026-10-12: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-10-12–2026-10-122026-10-13: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-10-13–2026-10-132026-10-14: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-10-14–2026-10-142026-10-15: 1 · observed 2026-10-20T21:52:01.6260102Z · period 2026-10-15–2026-10-152026-10-17: 2 · observed 2026-10-20T21:52:01.6260102Z · period 2026-10-17–2026-10-17
20 Jul17 Oct

pypistats · 65 observations shown. Missing days are unknown. Source category: overall: without mirrors.

View observed values
Date / source periodValueObserved at
2026-10-17 – 2026-10-1722026-10-20T21:52:01.6260102Z
2026-10-15 – 2026-10-1512026-10-20T21:52:01.6260102Z
2026-10-14 – 2026-10-1412026-10-20T21:52:01.6260102Z
2026-10-13 – 2026-10-1312026-10-20T21:52:01.6260102Z
2026-10-12 – 2026-10-1212026-10-20T21:52:01.6260102Z
2026-10-11 – 2026-10-1112026-10-20T21:52:01.6260102Z
2026-10-09 – 2026-10-0912026-10-20T21:52:01.6260102Z
2026-10-08 – 2026-10-0872026-10-20T21:52:01.6260102Z
2026-10-07 – 2026-10-0752026-10-20T21:52:01.6260102Z
2026-10-06 – 2026-10-0612026-10-20T21:52:01.6260102Z
2026-10-04 – 2026-10-0412026-10-20T21:52:01.6260102Z
2026-10-02 – 2026-10-0212026-10-20T21:52:01.6260102Z
2026-09-30 – 2026-09-3062026-10-20T21:52:01.6260102Z
2026-09-29 – 2026-09-2932026-10-20T21:52:01.6260102Z
2026-09-28 – 2026-09-2832026-10-20T21:52:01.6260102Z
2026-09-27 – 2026-09-2762026-10-20T21:52:01.6260102Z
2026-09-26 – 2026-09-2642026-10-20T21:52:01.6260102Z
2026-09-24 – 2026-09-2442026-10-20T21:52:01.6260102Z
2026-09-23 – 2026-09-2312026-10-20T21:52:01.6260102Z
2026-09-21 – 2026-09-2112026-10-20T21:52:01.6260102Z
2026-09-18 – 2026-09-1842026-10-20T21:52:01.6260102Z
2026-09-16 – 2026-09-1612026-10-20T21:52:01.6260102Z
2026-09-14 – 2026-09-1422026-10-20T21:52:01.6260102Z
2026-09-12 – 2026-09-1212026-10-20T21:52:01.6260102Z
2026-09-10 – 2026-09-1022026-10-20T21:52:01.6260102Z
2026-09-09 – 2026-09-0922026-10-20T21:52:01.6260102Z
2026-09-08 – 2026-09-08272026-10-20T21:52:01.6260102Z
2026-09-07 – 2026-09-0712026-10-20T21:52:01.6260102Z
2026-09-05 – 2026-09-0522026-10-20T21:52:01.6260102Z
2026-09-04 – 2026-09-0432026-10-20T21:52:01.6260102Z
2026-09-03 – 2026-09-0392026-10-20T21:52:01.6260102Z
2026-09-01 – 2026-09-0112026-10-20T21:52:01.6260102Z
2026-08-31 – 2026-08-3132026-10-20T21:52:01.6260102Z
2026-08-28 – 2026-08-2842026-10-20T21:52:01.6260102Z
2026-08-27 – 2026-08-2742026-10-20T21:52:01.6260102Z
2026-08-26 – 2026-08-2622026-10-20T21:52:01.6260102Z
2026-08-25 – 2026-08-2532026-10-20T21:52:01.6260102Z
2026-08-24 – 2026-08-24132026-10-20T21:52:01.6260102Z
2026-08-23 – 2026-08-23762026-10-20T21:52:01.6260102Z
2026-08-22 – 2026-08-22922026-10-20T21:52:01.6260102Z
2026-08-21 – 2026-08-2112026-10-20T21:52:01.6260102Z
2026-08-20 – 2026-08-2022026-10-20T21:52:01.6260102Z
2026-08-19 – 2026-08-1982026-10-20T21:52:01.6260102Z
2026-08-18 – 2026-08-18742026-10-20T21:52:01.6260102Z
2026-08-17 – 2026-08-1782026-10-20T21:52:01.6260102Z
2026-08-16 – 2026-08-16132026-10-20T21:52:01.6260102Z
2026-08-15 – 2026-08-151752026-10-20T21:52:01.6260102Z
2026-08-14 – 2026-08-1452026-10-20T21:52:01.6260102Z
2026-08-13 – 2026-08-1342026-10-20T21:52:01.6260102Z
2026-08-11 – 2026-08-1112026-10-20T21:52:01.6260102Z
2026-08-09 – 2026-08-0922026-10-20T21:52:01.6260102Z
2026-08-06 – 2026-08-0622026-10-20T21:52:01.6260102Z
2026-08-04 – 2026-08-0462026-10-20T21:52:01.6260102Z
2026-08-03 – 2026-08-03132026-10-20T21:52:01.6260102Z
2026-08-02 – 2026-08-0222026-10-20T21:52:01.6260102Z
2026-08-01 – 2026-08-0122026-10-20T21:52:01.6260102Z
2026-07-29 – 2026-07-29132026-10-20T21:52:01.6260102Z
2026-07-28 – 2026-07-2832026-10-20T21:52:01.6260102Z
2026-07-27 – 2026-07-2722026-10-20T21:52:01.6260102Z
2026-07-26 – 2026-07-2672026-10-20T21:52:01.6260102Z
2026-07-25 – 2026-07-2522026-10-20T21:52:01.6260102Z
2026-07-23 – 2026-07-2322026-10-20T21:52:01.6260102Z
2026-07-22 – 2026-07-2262026-10-20T21:52:01.6260102Z
2026-07-21 – 2026-07-2152026-10-20T21:52:01.6260102Z
2026-07-20 – 2026-07-2022026-10-20T21:52:01.6260102Z

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
1.0.129 Apr 20260

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 15:35 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:250f33cfa7954085e3d73813b1bf08c006f5a4d4e6aaf0b48350302a8d7a4afe