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
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: |
|
|---|
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.