Add implicit bending stiffness for standard flex.

Standard flex (flex_interp=0) with thin-plate bending treated bending forces purely explicitly. This caused contact-induced vertex vibrations and non-physical energy injection for flat resting sheets, because the solver treated each vertex as an independent mass during contact and contact normals are orthogonal to stretch constraints.

Fix: extend the existing preconditioned CG solver to include the constant bending stiffness K_bend in the implicit operator via matrix-free mat-vec.
PiperOrigin-RevId: 914774020
Change-Id: I45e0d6749abb6f873566203bccae956514b2576b
This commit is contained in:
Alessio Quaglino
2026-05-13 03:57:41 -07:00
committed by Copybara-Service
parent 7bfdbad80b
commit 35cdc779e6
7 changed files with 221 additions and 38 deletions
+2 -2
View File
@@ -15,7 +15,7 @@
<mujoco model="Poncho">
<include file="mannequin.xml"/>
<option timestep="0.005" integrator="implicitfast" viscosity=".3" solver="CG" tolerance="1e-6">
<option integrator="implicitfast" solver="CG" tolerance="1e-6">
<flag energy="enable"/>
</option>
@@ -1414,7 +1414,7 @@
398 399 418
398 376 378">
<edge equality="vert" damping="0.1"/>
<elasticity young="3e5" poisson="0" thickness="8e-3" elastic2d="bend"/>
<elasticity young="3e5" poisson="0" thickness="8e-3" elastic2d="bend" damping="0.02"/>
<contact solref="0.003"/>
</flexcomp>
+2 -2
View File
@@ -15,7 +15,7 @@
<mujoco model="Poncho">
<include file="mannequin.xml"/>
<option timestep="0.005" integrator="implicitfast" viscosity=".3" solver="CG" tolerance="1e-6">
<option integrator="implicitfast" solver="CG" tolerance="1e-6">
<flag energy="enable"/>
</option>
@@ -1414,7 +1414,7 @@
398 399 418
398 376 378">
<edge equality="true" damping="0.1"/>
<elasticity poisson="0" young="3e5" thickness="8e-3" elastic2d="bend"/>
<elasticity poisson="0" young="3e5" thickness="8e-3" elastic2d="bend" damping="0.02"/>
<contact solref="0.003"/>
</flexcomp>