Introduces a new "strain" equality mode (flex_edgeequality = 3) for flexcomps with trilinear interpolation. This mode enforces constraints on the three invariants of the Green-Lagrange strain tensor at 8 Gauss quadrature points within each flex element, resulting in 24 equality constraints per flexcomp.

Also fixes a bug when attaching a flex with constraints.

PiperOrigin-RevId: 881349765
Change-Id: I8e6df8239488bfdc87d7e5b473568975e38c737e
This commit is contained in:
Alessio Quaglino
2026-03-10 04:25:19 -07:00
committed by Copybara-Service
parent fe6c81ed93
commit 713b5524bc
23 changed files with 899 additions and 48 deletions
+2 -1
View File
@@ -222,7 +222,8 @@ ENUMS: Mapping[str, EnumDecl] = dict([
('mjEQ_TENDON', 3),
('mjEQ_FLEX', 4),
('mjEQ_FLEXVERT', 5),
('mjEQ_DISTANCE', 6),
('mjEQ_FLEXSTRAIN', 6),
('mjEQ_DISTANCE', 7),
]),
)),
('mjtWrap',
+1 -1
View File
@@ -2980,7 +2980,7 @@ STRUCTS: Mapping[str, StructDecl] = dict([
type=PointerType(
inner_type=ValueType(name='int'),
),
doc='0: none, 1: edges, 2: vertices',
doc='0:none, 1:edges, 2:vertices, 3:strain',
array_extent=('nflex',),
),
StructFieldDecl(