Precompute rotated stiffness matrix before CG in implicit flex integrator.
This gives a 3x speedup in implicitfast. Also cleanup old code that was used in the dense factorization of the stiffness matrix before we switched to CG. PiperOrigin-RevId: 915900315 Change-Id: Id6973c4bfd7d371a43ec6db982703969b23a3550
This commit is contained in:
committed by
Copybara-Service
parent
85bf2b9660
commit
7ca1bc6a56
@@ -44,8 +44,12 @@ MJAPI void mjd_passive_vel(const mjModel* m, mjData* d);
|
||||
MJAPI void mjd_rne_vel_dense(const mjModel* m, mjData* d);
|
||||
|
||||
// compute res += (s1 + s2*damping) * J'*K*J * vec, for all interpolated flexes
|
||||
// K_rot_cache: if non-NULL, use pre-cached K_rot (same layout as m->flex_stiffness)
|
||||
MJAPI void mjd_flexInterp_mul(const mjModel* m, mjData* d, mjtNum* res, const mjtNum* vec,
|
||||
mjtNum s1, mjtNum s2);
|
||||
mjtNum s1, mjtNum s2, const mjtNum* K_rot_cache);
|
||||
|
||||
// precompute unscaled K_rot for all elements into cache (same layout as m->flex_stiffness)
|
||||
MJAPI void mjd_flexInterp_cacheKrot(const mjModel* m, mjData* d, mjtNum* K_rot_out);
|
||||
|
||||
// compute res += scale * K_bend * vec for standard (non-interp) flex bending
|
||||
// scale = s1 + s2 * flex_damping[f] per flex
|
||||
|
||||
Reference in New Issue
Block a user