Skip to content

simcoon 1.14.0

Choose a tag to compare

@chemiskyy chemiskyy released this 09 Jul 11:53
· 84 commits to master since this release

simcoon 1.14.0

Release theme: the unified Tensor2 / Tensor4 API and a typed UMAT interface (feature/Tensor, PR #78).

Highlights

  • Unified Tensor2 / Tensor4 API (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 is eye(6), rotation is a single orthogonal R6·X·R6ᵀ congruence, and inversion is a plain matrix inverse. mandel() / from_mandel() are exposed alongside mat() / 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.py example.

Changes & fixes

  • Deprecated the legacy tensor projector helpers (identity2 / deviatoric2); reach the compliance-convention identity via the Tensor4Type tag.
  • 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 tensor4 internal storage change is source-compatible for typical consumers; code that reached into the old engineering-Voigt storage by reference, or used the removed identity2 / deviatoric2 / tensor4::mat_mut, must migrate (use set_mat() / the Tensor4Type-tagged identity()).
  • 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.