Skip to main content

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)

Metadata

Release files for 3pc-material 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for 3pc-material 1.0.1
File Size Uploaded Provenance
3pc_material-1.0.1.tar.gz 5.9 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for 3pc-material 1.0.1
File Interpreter ABI Platform
3pc_material-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 12.6 kB

Release files / 3pc_material-1.0.1.tar.gz

Download URL 3pc_material-1.0.1.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8060848aa6b66293a6f96d64f6289ecb74b8d6667409765c8bb872d958b1167f
BLAKE2b-256 checksum
How to use checksums
6a500426fe70f11f0107fd10657f51d2b1645c88b9d68416429c1206ce9b1cd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Release files / 3pc_material-1.0.1-py3-none-any.whl

Download URL 3pc_material-1.0.1-py3-none-any.whl
Size 6.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3fc14d963b932c3b152d1f08b6eb047c96b9ee251fe9e9c3d21688151a5b2a0d
BLAKE2b-256 checksum
How to use checksums
1eb4f2d86b6a75e0d374dd38cc46d48f0ae291b1d7be8aeeae76cc4c6fef72a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Security for 3pc-material 1.0.1

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.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files No provenance

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