Core API

Constitutive stiffness operators.

ConstitutiveModel = HyperelasticModel module-attribute

ABDStiffnessCoefficients dataclass

Named scalar view of an ABDStiffness matrix.

The fields use the conventional laminate/shell coefficient names. For example, A16 is A[0, 2], D66 is D[2, 2], and As12 is As[0, 1].

A11 instance-attribute

A12 instance-attribute

A16 instance-attribute

A22 instance-attribute

A26 instance-attribute

A66 instance-attribute

As11 instance-attribute

As12 instance-attribute

As22 instance-attribute

B11 instance-attribute

B12 instance-attribute

B16 instance-attribute

B22 instance-attribute

B26 instance-attribute

B66 instance-attribute

D11 instance-attribute

D12 instance-attribute

D16 instance-attribute

D22 instance-attribute

D26 instance-attribute

D66 instance-attribute

__init__(A11, A22, A12, A16, A26, A66, B11, B22, B12, B16, B26, B66, D11, D22, D12, D16, D26, D66, As11, As22, As12)

__post_init__()

HyperelasticModel

Bases: Protocol

Public mechanics contract for a generalized hyperelastic stiffness model.

convention instance-attribute

frame instance-attribute

metadata instance-attribute

validity instance-attribute

energy(eta)

Return strain energy density for generalized strain eta.

resultants(eta)

Return generalized resultants for generalized strain eta.

rotate(angle_rad)

Return an equivalent stiffness expressed in a rotated local frame.

tangent(eta)

Return the constitutive tangent at generalized strain eta.

LinearModel

Bases: HyperelasticModel, Protocol

Refinement for stiffness models whose tangent is independent of strain.

constant_tangent property

Return the strain-independent tangent.

convention instance-attribute

frame instance-attribute

metadata instance-attribute

validity instance-attribute

energy(eta)

Return strain energy density for generalized strain eta.

resultants(eta)

Return generalized resultants for generalized strain eta.

rotate(angle_rad)

Return an equivalent stiffness expressed in a rotated local frame.

tangent(eta)

Return the constitutive tangent at generalized strain eta.

ABDStiffness dataclass

Linear ABD stiffness in ABD plus transverse-shear form.

Parameters:
  • A (FloatArray) –

    3x3 extensional stiffness block in the active unit system.

  • B (FloatArray) –

    3x3 membrane-bending coupling block about the reference surface.

  • D (FloatArray) –

    3x3 bending and twisting stiffness block.

  • As (FloatArray) –

    2x2 transverse-shear stiffness block.

  • frame (Frame2D, default: DEFAULT_FRAME ) –

    Local right-handed frame for the matrix components.

  • convention (StrainConvention, default: DEFAULT_STRAIN_CONVENTION ) –

    Generalized strain ordering and shear convention.

  • areal_mass (float | None, default: None ) –

    Optional mass per unit reference-surface area.

  • metadata (Mapping[str, Any], default: dict() ) –

    Provenance metadata preserved by serialization.

  • validity (Any, default: None ) –

    Optional validity report attached by homogenization.

A instance-attribute

As instance-attribute

B instance-attribute

C8 property

The canonical 8x8 stiffness tangent.

D instance-attribute

areal_mass = None class-attribute instance-attribute

coefficients property

Return the independent ABD and transverse-shear terms as named scalars.

constant_tangent property

Return the strain-independent stiffness tangent.

convention = DEFAULT_STRAIN_CONVENTION class-attribute instance-attribute

frame = DEFAULT_FRAME class-attribute instance-attribute

metadata = field(default_factory=dict) class-attribute instance-attribute

validity = None class-attribute instance-attribute

__hash__()

__init__(A, B, D, As, frame=DEFAULT_FRAME, convention=DEFAULT_STRAIN_CONVENTION, areal_mass=None, metadata=dict(), validity=None)

__post_init__()

energy(eta)

Return 0.5 * eta @ C8 @ eta.

from_tangent(tangent, *, frame=DEFAULT_FRAME, convention=DEFAULT_STRAIN_CONVENTION, areal_mass=None, metadata=None, validity=None) classmethod

Build a linear ABD stiffness from the canonical 8x8 tangent.

The tangent order is [N11, N22, N12, M11, M22, M12, Q13, Q23] by [eps11, eps22, gamma12, kappa11, kappa22, kappa12, gamma13, gamma23].

orthotropic_coefficients(*, tolerance=1e-09)

Return barred coefficients for aligned orthotropic shell equations.

The returned Dbar_xy is the modified twisting coefficient used by classical orthotropic shell formulas, including NASA SP-8007-style hand equations. It is not the raw ABD D66 term. Tensyl computes Dbar_xy = 2*D12 + 4*D66 so the combined bending-twist input is handed off in the form those equations expect.

Off-axis terms such as A16 and D26 are not represented by this coefficient set. When they exceed tolerance, the method still returns the reduced coefficients, records the terms in unsupported_terms, and emits a warning so the caller can decide whether the reduction is acceptable for the downstream calculation.

reduced_orthotropic_properties(t_eff, *, tolerance=1e-09)

Return membrane-equivalent orthotropic plane-stress properties.

t_eff is the shell thickness used by a downstream model to turn membrane stiffness per unit width into material stiffness. The reduction is based on A / t_eff and does not preserve the bending, coupling, or transverse-shear blocks.

resultants(eta)

Return generalized resultants [N11, N22, N12, M11, M22, M12, Q13, Q23].

rotate(angle_rad)

Return this stiffness expressed in a frame rotated about n.

tangent(eta)

Return the constant stiffness tangent after validating eta.

with_validity(validity)

Return an equivalent stiffness with attached validity diagnostics.

OrthotropicStiffnessCoefficients dataclass

Barred coefficients for aligned orthotropic shell equations.

This is a reduction of a full ABD stiffness, not another complete stiffness representation. warnings and unsupported_terms record off-axis terms that were present in the source ABD matrix but are not carried by this coefficient set.

Cbar_x instance-attribute

Cbar_xy instance-attribute

Cbar_y instance-attribute

Dbar_x instance-attribute

Dbar_xy instance-attribute

Dbar_y instance-attribute

Ebar_x instance-attribute

Ebar_xy instance-attribute

Ebar_y instance-attribute

Gbar_xy instance-attribute

Kbar_xy instance-attribute

unsupported_terms = field(default_factory=dict) class-attribute instance-attribute

warnings = () class-attribute instance-attribute

__init__(Ebar_x, Ebar_y, Ebar_xy, Gbar_xy, Dbar_x, Dbar_y, Dbar_xy, Cbar_x, Cbar_y, Cbar_xy, Kbar_xy, warnings=(), unsupported_terms=dict())

__post_init__()

ReducedOrthotropicProperties dataclass

Membrane-equivalent orthotropic plane-stress constants.

Parameters:
  • t_eff (float) –

    Effective shell thickness used for the membrane reduction.

  • E1 (float) –

    Young's modulus in local direction 1.

  • E2 (float) –

    Young's modulus in local direction 2.

  • G12 (float) –

    In-plane shear modulus.

  • nu12 (float) –

    Major Poisson ratio.

  • nu21 (float) –

    Minor Poisson ratio.

  • warnings (tuple[str, ...], default: () ) –

    Machine-readable notices for stiffness terms not represented by the reduction.

  • metadata (Mapping[str, Any], default: dict() ) –

    Provenance metadata for the reduced values.

E1 instance-attribute

E2 instance-attribute

G12 instance-attribute

metadata = field(default_factory=dict) class-attribute instance-attribute

nu12 instance-attribute

nu21 instance-attribute

t_eff instance-attribute

warnings = () class-attribute instance-attribute

__init__(t_eff, E1, E2, G12, nu12, nu21, warnings=(), metadata=dict())

__post_init__()

shift_reference_surface(stiffness, offset)

Return stiffness expressed about a reference surface shifted by offset.

offset is the signed distance from the current reference surface to the new reference surface along +n. Curvatures and transverse-shear strains are unchanged.

superpose_abd_stiffnesses(*stiffnesses, metadata=None)

Return the superposition of compatible ABD stiffnesses.

Coordinate frames and generalized strain conventions.

DEFAULT_FRAME = Frame2D.canonical() module-attribute

DEFAULT_STRAIN_CONVENTION = StrainConvention() module-attribute

Frame2D dataclass

Right-handed orthonormal local frame.

e1 instance-attribute

e2 instance-attribute

label = 'local_tangent' class-attribute instance-attribute

n instance-attribute

__eq__(other)

__hash__()

__init__(e1, e2, n, label='local_tangent')

__post_init__()

canonical(*, label='local_tangent') classmethod

Create the canonical Cartesian local frame.

rotate(angle_rad, *, label=None)

Return a frame rotated counterclockwise about n by angle_rad.

StrainConvention dataclass

Generalized strain/resultant ordering for the Phase 1 ABD stiffness.

bending_order = ('k11', 'k22', 'k12') class-attribute instance-attribute

engineering_shear = True class-attribute instance-attribute

membrane_order = ('e11', 'e22', 'g12') class-attribute instance-attribute

normal_positive = '+n' class-attribute instance-attribute

reference_surface = 'mid_surface' class-attribute instance-attribute

shear_order = ('g13', 'g23') class-attribute instance-attribute

__init__(membrane_order=('e11', 'e22', 'g12'), bending_order=('k11', 'k22', 'k12'), shear_order=('g13', 'g23'), engineering_shear=True, reference_surface='mid_surface', normal_positive='+n')

__post_init__()

Shared typing aliases and public generalized-vector wrappers.

GeneralizedStrain = NewType('GeneralizedStrain', np.ndarray[Any, np.dtype[np.float64]]) module-attribute

GeneralizedResultant = NewType('GeneralizedResultant', np.ndarray[Any, np.dtype[np.float64]]) module-attribute

generalized_strain(values)

Return a read-only generalized strain vector.

The runtime value is still a NumPy array, but the public type is distinct from resultants for static checkers.

generalized_resultant(values)

Return a read-only generalized resultant vector.