simcoon 1.14.0
simcoon 1.14.0
Release theme: the unified Tensor2 / Tensor4 API and a typed UMAT interface (feature/Tensor, PR #78).
Highlights
- Unified
Tensor2/Tensor4API (C++ core + pybind11 bridge + Python class). One class each covers both the single-point and batch cases (scipy-Rotation-style): shape decides the mode ((6,)single vs(N,6)batch). Batch operations dispatch to optimized C++ kernels. - Kelvin–Mandel internal storage for
tensor4. The Voigt/Mandel convention enters exactly once (engineering↔Mandel congruence): the identity iseye(6), rotation is a single orthogonalR6·X·R6ᵀcongruence, and inversion is a plain matrix inverse.mandel()/from_mandel()are exposed alongsidemat()/from_voigt(). - Typed UMAT interface. UMATs can be written against
Tensor2/Tensor4(L.contract(ε),flow_normal,dyadic(κ,κ)tangent assembly) — demonstrated in the EPICP external plugin. - Batch performance. Unified batch tensor APIs with optimized paths, plus a macOS Grand Central Dispatch
parallel_for(native, no OpenMP dependency). - Documentation & examples. Sphinx docs for the Tensor2/Tensor4 API; new
neo_hookean_tensor.pyexample.
Changes & fixes
- Deprecated the legacy tensor projector helpers (
identity2/deviatoric2); reach the compliance-convention identity via theTensor4Typetag. - Fixed the inverse-derivative (
dinv) sign and updated the related APIs and tests. - Windows: OpenMP disabled (serial fallback) to avoid runtime conflicts; centralized
LIB_EXPORT; safer parallel support. - CI: release workflow now verifies the git tag matches
pyproject.toml, and the conda package builds from the checked-out tree (so PR/release runs validate the actual source, not the default branch).
Compatibility
- The
tensor4internal storage change is source-compatible for typical consumers; code that reached into the old engineering-Voigt storage by reference, or used the removedidentity2/deviatoric2/tensor4::mat_mut, must migrate (useset_mat()/ theTensor4Type-taggedidentity()). - simcoon continues to use MPa internally; Voigt order
[11,22,33,12,13,23].
Not included in 1.14.0: the Modular UMAT framework (PR #61) is staged on feature/modular for a subsequent release.