hermit.failure
failure_index / failure_field – Tsai-Wu failure, wired to Orientation.
hermit._laminate.failure.tsai_wu_field documents its input as laminate-frame
strains, but the DG0 strain-measure output is in the element in-plane frame. So
the same Tε(θ) (engineering-Voigt strain rotation, element -> laminate axes)
the constitutive path already applies (hermit.fenics.kinematics.strain_rotation /
hermit.csdl_helpers.rotate_abd) is applied to the strains first, before calling
tsai_wu_field (unmodified – it already uses the correct (xz, yz)
transverse-shear ordering, see that module’s docstring). This is covered by
tests/test_material_api.py::test_failure_index_respects_orientation (“two
spellings of one physical laminate must agree”).
This module’s entry points take mid-surface strain / curvature / shear directly,
in the element frame, FE cell order – the raw DG0 strain-measure convention
hermit.fenics.ops.strain_fields produces. hm.failure_index(state, ...) /
hm.failure_field(state, ...) (hermit.outputs) are the public entry points;
they assemble those measures off a solved ShellState and call in here.
Functions
|
|
|
KS-aggregated scalar ( |
Module Contents
- hermit.failure.failure_field(mid_strain, curvature, shear_strain, material, orientation_cs=None, *, faces=(-0.5, 0.5))
(n_cells, 3)/(n_cells, 3)/(n_cells, 2)element-frame engineering-Voigt strain / curvature / shear (FE cell order – e.g.model.strain_measure_op()’s raw output) + a compositeMaterial->(n_cells, n_plies * len(faces))Tsai-Wu failure indices, rotated into the laminate frame bymaterial.orientationfirst (None=> no rotation).
- hermit.failure.failure_index(mid_strain, curvature, shear_strain, material, orientation_cs=None, *, rho=100.0, faces=(-0.5, 0.5))
KS-aggregated scalar (
< 1safe) – seefailure_field.