From 7c706b273ad4a2aa85a07fbc5d5e16762ec93680 Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Mon, 29 Jun 2026 06:48:27 -0700 Subject: [PATCH] Report nnz(J) for CG solver. PiperOrigin-RevId: 939806054 Change-Id: Icb2955511e33be046a4665fb39bce2546d6d4e3d --- doc/includes/references.h | 2 +- include/mujoco/mjdata.h | 2 +- python/mujoco/introspect/structs.py | 2 +- src/engine/engine_solver.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/includes/references.h b/doc/includes/references.h index 6aaec67d..0887af0b 100644 --- a/doc/includes/references.h +++ b/doc/includes/references.h @@ -97,7 +97,7 @@ typedef struct mjData_ { // solver statistics mjSolverStat solver[mjNISLAND*mjNSOLVER]; // solver statistics per island, per iteration int solver_niter[mjNISLAND]; // number of solver iterations, per island - int solver_nnz[mjNISLAND]; // number of nonzeros in Hessian or efc_AR, per island + int solver_nnz[mjNISLAND]; // number of nonzeros in solver matrix, per island mjtNum solver_fwdinv[2]; // forward-inverse comparison: qfrc, efc // diagnostics diff --git a/include/mujoco/mjdata.h b/include/mujoco/mjdata.h index f31dc5b6..d95d4e5a 100644 --- a/include/mujoco/mjdata.h +++ b/include/mujoco/mjdata.h @@ -121,7 +121,7 @@ typedef struct mjData_ { // solver statistics mjSolverStat solver[mjNISLAND*mjNSOLVER]; // solver statistics per island, per iteration int solver_niter[mjNISLAND]; // number of solver iterations, per island - int solver_nnz[mjNISLAND]; // number of nonzeros in Hessian or efc_AR, per island + int solver_nnz[mjNISLAND]; // number of nonzeros in solver matrix, per island mjtNum solver_fwdinv[2]; // forward-inverse comparison: qfrc, efc // diagnostics diff --git a/python/mujoco/introspect/structs.py b/python/mujoco/introspect/structs.py index 1fe6ce1f..7e281505 100644 --- a/python/mujoco/introspect/structs.py +++ b/python/mujoco/introspect/structs.py @@ -5524,7 +5524,7 @@ STRUCTS: Mapping[str, StructDecl] = dict([ inner_type=ValueType(name='int'), extents=(20,), ), - doc='number of nonzeros in Hessian or efc_AR, per island', + doc='number of nonzeros in solver matrix, per island', ), StructFieldDecl( name='solver_fwdinv', diff --git a/src/engine/engine_solver.c b/src/engine/engine_solver.c index e3f9f174..cf81f039 100644 --- a/src/engine/engine_solver.c +++ b/src/engine/engine_solver.c @@ -2474,7 +2474,7 @@ static void mj_solPrimal(const mjModel* m, mjData* d, int island, int maxiter, i d->solver_nnz[island_stat] = nv*nv; } } else { - d->solver_nnz[island_stat] = 0; + d->solver_nnz[island_stat] = ctx.nJ; } }