diff --git a/doc/includes/references.h b/doc/includes/references.h index a2b820e5..ede6874f 100644 --- a/doc/includes/references.h +++ b/doc/includes/references.h @@ -312,10 +312,6 @@ struct mjData_ { int* B_rownnz; // body-dof: non-zeros in each row (nbody x 1) int* B_rowadr; // body-dof: address of each row in B_colind (nbody x 1) int* B_colind; // body-dof: column indices of non-zeros (nB x 1) - int* M_rownnz; // inertia: non-zeros in each row (nv x 1) - int* M_rowadr; // inertia: address of each row in M_colind (nv x 1) - int* M_colind; // inertia: column indices of non-zeros (nM x 1) - int* mapM2M; // index mapping from M (legacy) to M (CSR) (nM x 1) int* C_rownnz; // reduced dof-dof: non-zeros in each row (nv x 1) int* C_rowadr; // reduced dof-dof: address of each row in C_colind (nv x 1) int* C_colind; // reduced dof-dof: column indices of non-zeros (nC x 1) diff --git a/include/mujoco/mjdata.h b/include/mujoco/mjdata.h index 9ac187dc..de09cbce 100644 --- a/include/mujoco/mjdata.h +++ b/include/mujoco/mjdata.h @@ -340,10 +340,6 @@ struct mjData_ { int* B_rownnz; // body-dof: non-zeros in each row (nbody x 1) int* B_rowadr; // body-dof: address of each row in B_colind (nbody x 1) int* B_colind; // body-dof: column indices of non-zeros (nB x 1) - int* M_rownnz; // inertia: non-zeros in each row (nv x 1) - int* M_rowadr; // inertia: address of each row in M_colind (nv x 1) - int* M_colind; // inertia: column indices of non-zeros (nM x 1) - int* mapM2M; // index mapping from M (legacy) to M (CSR) (nM x 1) int* C_rownnz; // reduced dof-dof: non-zeros in each row (nv x 1) int* C_rowadr; // reduced dof-dof: address of each row in C_colind (nv x 1) int* C_colind; // reduced dof-dof: column indices of non-zeros (nC x 1) diff --git a/include/mujoco/mjxmacro.h b/include/mujoco/mjxmacro.h index 1f96199e..99cafaa2 100644 --- a/include/mujoco/mjxmacro.h +++ b/include/mujoco/mjxmacro.h @@ -675,10 +675,6 @@ X ( int, B_rownnz, nbody, 1 ) \ X ( int, B_rowadr, nbody, 1 ) \ X ( int, B_colind, nB, 1 ) \ - X ( int, M_rownnz, nv, 1 ) \ - X ( int, M_rowadr, nv, 1 ) \ - X ( int, M_colind, nM, 1 ) \ - X ( int, mapM2M, nM, 1 ) \ X ( int, C_rownnz, nv, 1 ) \ X ( int, C_rowadr, nv, 1 ) \ X ( int, C_colind, nC, 1 ) \ diff --git a/mjx/mujoco/mjx/_src/io.py b/mjx/mujoco/mjx/_src/io.py index 8fc28d83..664a7b8a 100644 --- a/mjx/mujoco/mjx/_src/io.py +++ b/mjx/mujoco/mjx/_src/io.py @@ -627,10 +627,6 @@ def _make_data_c( 'B_rownnz': (m.nbody, np.int32), 'B_rowadr': (m.nbody, np.int32), 'B_colind': (m.nB, np.int32), - 'M_rownnz': (m.nv, np.int32), - 'M_rowadr': (m.nv, np.int32), - 'M_colind': (m.nM, np.int32), - 'mapM2M': (m.nM, np.int32), 'C_rownnz': (m.nv, np.int32), 'C_rowadr': (m.nv, np.int32), 'C_colind': (m.nC, np.int32), diff --git a/mjx/mujoco/mjx/_src/io_test.py b/mjx/mujoco/mjx/_src/io_test.py index 41d812d3..78f81e3f 100644 --- a/mjx/mujoco/mjx/_src/io_test.py +++ b/mjx/mujoco/mjx/_src/io_test.py @@ -471,7 +471,7 @@ class DataIOTest(parameterized.TestCase): if backend_impl == 'c': # check fields specific to the C implementation - np.testing.assert_allclose(d_2.M_rownnz, d.M_rownnz) + np.testing.assert_allclose(d_2.bvh_active, d.bvh_active) def test_get_data_runs(self): xml = """ diff --git a/mjx/mujoco/mjx/_src/types.py b/mjx/mujoco/mjx/_src/types.py index c70d71a2..38dbcd71 100644 --- a/mjx/mujoco/mjx/_src/types.py +++ b/mjx/mujoco/mjx/_src/types.py @@ -984,10 +984,6 @@ class DataC(PyTreeNode): B_rownnz: jax.Array # pylint:disable=invalid-name B_rowadr: jax.Array # pylint:disable=invalid-name B_colind: jax.Array # pylint:disable=invalid-name - M_rownnz: jax.Array # pylint:disable=invalid-name - M_rowadr: jax.Array # pylint:disable=invalid-name - M_colind: jax.Array # pylint:disable=invalid-name - mapM2M: jax.Array # pylint:disable=invalid-name C_rownnz: jax.Array # pylint:disable=invalid-name C_rowadr: jax.Array # pylint:disable=invalid-name C_colind: jax.Array # pylint:disable=invalid-name diff --git a/python/mujoco/introspect/structs.py b/python/mujoco/introspect/structs.py index 500b2d40..bbfc3998 100644 --- a/python/mujoco/introspect/structs.py +++ b/python/mujoco/introspect/structs.py @@ -5568,38 +5568,6 @@ STRUCTS: Mapping[str, StructDecl] = dict([ doc='body-dof: column indices of non-zeros', array_extent=('nB',), ), - StructFieldDecl( - name='M_rownnz', - type=PointerType( - inner_type=ValueType(name='int'), - ), - doc='inertia: non-zeros in each row', - array_extent=('nv',), - ), - StructFieldDecl( - name='M_rowadr', - type=PointerType( - inner_type=ValueType(name='int'), - ), - doc='inertia: address of each row in M_colind', - array_extent=('nv',), - ), - StructFieldDecl( - name='M_colind', - type=PointerType( - inner_type=ValueType(name='int'), - ), - doc='inertia: column indices of non-zeros', - array_extent=('nM',), - ), - StructFieldDecl( - name='mapM2M', - type=PointerType( - inner_type=ValueType(name='int'), - ), - doc='index mapping from M (legacy) to M (CSR)', - array_extent=('nM',), - ), StructFieldDecl( name='C_rownnz', type=PointerType( diff --git a/src/engine/engine_io.c b/src/engine/engine_io.c index 31084c46..56e7d43f 100644 --- a/src/engine/engine_io.c +++ b/src/engine/engine_io.c @@ -1141,9 +1141,6 @@ static void copyM2Sparse(const mjModel* m, mjData* d, int* dst, const int* src, if (reduced && !upper) { rownnz = d->C_rownnz; rowadr = d->C_rowadr; - } else if (!reduced && !upper) { - rownnz = d->M_rownnz; - rowadr = d->M_rowadr; } else if (!reduced && upper) { rownnz = d->D_rownnz; rowadr = d->D_rowadr; @@ -1261,17 +1258,6 @@ static void makeDofDofmaps(const mjModel* m, mjData* d) { } } - // make mapM2M - for (int i=0; i < nM; i++) d->mapM2M[i] = -1; - copyM2Sparse(m, d, d->mapM2M, M, /*reduced=*/0, /*upper=*/0); - - // check that all indices are filled in - for (int i=0; i < nM; i++) { - if (d->mapM2M[i] < 0) { - mjERROR("unassigned index in mapM2M"); - } - } - mj_freeStack(d); } @@ -1989,8 +1975,7 @@ static void _resetData(const mjModel* m, mjData* d, unsigned char debug_value) { makeBSparse(m, d); checkDBSparse(m, d); - // make M, C - makeDofDofSparse(m, d, d->M_rownnz, d->M_rowadr, NULL, d->M_colind, /*reduced=*/0, /*upper=*/0); + // make C makeDofDofSparse(m, d, d->C_rownnz, d->C_rowadr, NULL, d->C_colind, /*reduced=*/1, /*upper=*/0); // make index mappings: mapM2D, mapD2M, mapM2C, mapM2M diff --git a/src/engine/engine_print.c b/src/engine/engine_print.c index bb9f4a9a..63010c82 100644 --- a/src/engine/engine_print.c +++ b/src/engine/engine_print.c @@ -1160,37 +1160,6 @@ void mj_printFormattedData(const mjModel* m, const mjData* d, const char* filena } fprintf(fp, "\n\n"); - // M sparse structure - mj_printSparsity("M: inertia matrix", m->nv, m->nv, d->M_rowadr, NULL, d->M_rownnz, - NULL, d->M_colind, fp); - - fprintf(fp, NAME_FORMAT, "M_rownnz"); - for (int i = 0; i < m->nv; i++) { - fprintf(fp, " %d", d->M_rownnz[i]); - } - fprintf(fp, "\n\n"); - - // M_rowadr - fprintf(fp, NAME_FORMAT, "M_rowadr"); - for (int i = 0; i < m->nv; i++) { - fprintf(fp, " %d", d->M_rowadr[i]); - } - fprintf(fp, "\n\n"); - - // M_colind - fprintf(fp, NAME_FORMAT, "M_colind"); - for (int i = 0; i < m->nM; i++) { - fprintf(fp, " %d", d->M_colind[i]); - } - fprintf(fp, "\n\n"); - - // mapM2M - fprintf(fp, NAME_FORMAT, "mapM2M"); - for (int i = 0; i < m->nM; i++) { - fprintf(fp, " %d", d->mapM2M[i]); - } - fprintf(fp, "\n\n"); - // C sparse structure mj_printSparsity("C: reduced dof-dof matrix", m->nv, m->nv, d->C_rowadr, NULL, d->C_rownnz, NULL, d->C_colind, fp); diff --git a/unity/Runtime/Bindings/MjBindings.cs b/unity/Runtime/Bindings/MjBindings.cs index c1042de6..21a96fde 100644 --- a/unity/Runtime/Bindings/MjBindings.cs +++ b/unity/Runtime/Bindings/MjBindings.cs @@ -4951,10 +4951,6 @@ public unsafe struct mjData_ { public int* B_rownnz; public int* B_rowadr; public int* B_colind; - public int* M_rownnz; - public int* M_rowadr; - public int* M_colind; - public int* mapM2M; public int* C_rownnz; public int* C_rowadr; public int* C_colind;