Implement multi-cell finite element method for interpolated flexes.
This change introduces a `flex_cellcount` field to `mjModel` to specify the number of cells in each dimension for interpolated flexes. The stiffness computation, passive force calculation, and Jacobian derivatives are updated to operate on a per-cell basis, significantly improving performance by localizing computations to the nodes within each cell. PiperOrigin-RevId: 901216393 Change-Id: Ic23132e609de11e71bb7fef8d1f139daad2ec264
This commit is contained in:
committed by
Copybara-Service
parent
8415dff307
commit
6c7ed66781
@@ -3107,7 +3107,7 @@ TEST_F(ForwardTest, FlexParentCoupling) {
|
||||
<body name="parent" pos="0 0 0">
|
||||
<freejoint/>
|
||||
<geom size=".1" mass="0.1"/>
|
||||
<flexcomp name="flex" type="grid" count="3 3 3" spacing="1 1 1"
|
||||
<flexcomp name="flex" type="grid" count="3 3 3" cellcount="1 1 1" spacing="1 1 1"
|
||||
radius=".01" dim="3" mass="100" dof="trilinear" pos="1 1 1">
|
||||
<contact selfcollide="none"/>
|
||||
<elasticity young="1e4" poisson="0.3" damping="50"/>
|
||||
@@ -3152,7 +3152,7 @@ TEST_F(ForwardTest, FlexParentCoupling) {
|
||||
if (diff > max_diff) max_diff = diff;
|
||||
}
|
||||
|
||||
EXPECT_LT(max_diff, MjTol(2e-5, 5e-3))
|
||||
EXPECT_LT(max_diff, MjTol(2e-5, 1.5e-2))
|
||||
<< "Implicit integrator should match Euler at small timestep";
|
||||
|
||||
mj_deleteData(data);
|
||||
|
||||
Reference in New Issue
Block a user