diff --git a/doc/APIreference/APIglobals.rst b/doc/APIreference/APIglobals.rst index 9f8fddc5..6bb4726e 100644 --- a/doc/APIreference/APIglobals.rst +++ b/doc/APIreference/APIglobals.rst @@ -450,9 +450,15 @@ shown in the table below. Their names are in the format ``mjKEY_XXX``. They corr - The maximal number of real-valued parameters used to define the impedance of each scalar constraint. Determines the size of all ``mjModel.XXX_solimp`` fields. * - ``mjNSOLVER`` - - 1000 - - The size of the preallocated array ``mjData.solver``. This is used to store diagnostic information about each - iteration of the constraint solver. The actual number of iterations is given by ``mjData.solver_iter``. + - 200 + - The number of iterations where solver statistics can be stored in ``mjData.solver``. This array is used + to store diagnostic information about each iteration of the constraint solver. + The actual number of iterations is given by ``mjData.solver_iter``. + * - ``mjNISLAND`` + - 20 + - The number of islands for which solver statistics can be stored in ``mjData.solver``. This array is + used to store diagnostic information about each iteration of the constraint solver. + The actual number of islands for which the solver was run is given by ``mjData.nsolver_island``. * - ``mjNGROUP`` - 6 - The number of geom, site, joint, tendon and actuator groups whose rendering can be enabled and disabled via diff --git a/doc/changelog.rst b/doc/changelog.rst index 61932f04..ac2a6722 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -51,34 +51,45 @@ General 6. Renamed the ``nstack`` field in :ref:`mjModel` and :ref:`mjData` to ``narena``. Changed ``narena``, ``pstack``, and ``maxuse_stack`` to count number of bytes rather than number of :ref:`mjtNum` |-| s. -7. Added a new :ref:`dyntype`, ``filterexact``, which updates first-order filter states with + 7. Changed :ref:`mjData.solver`, the array used to collect solver diagnostic information. + This array of :ref:`mjSolverStat` structs is now of length ``mjNISLAND * mjNSOLVER``, interpreted as as a matrix. + Each row of length ``mjNSOLVER`` contains separate solver statistics for each constraint island. + If the solver does not use islands, only row 0 is filled. + + - The new constant :ref:`mjNISLAND` was set to 20. + - :ref:`mjNSOLVER` was reduced from 1000 to 200. + - Added :ref:`mjData.solver_nisland`: the number of islands for which the solver ran. + - Renamed ``mjData.solver_iter`` to ``solver_niter``. Both this member and ``mjData.solver_nnz`` are now integer + vectors of length ``mjNISLAND``. + +8. Added a new :ref:`dyntype`, ``filterexact``, which updates first-order filter states with the exact formula rather than with Euler integration. -8. Added an actuator attribute, :ref:`actearly`, which uses semi-implicit integration for +9. Added an actuator attribute, :ref:`actearly`, which uses semi-implicit integration for actuator forces: using the next step's actuator state to compute the current actuator forces at the current timestep. -9. Renamed ``actuatorforcerange`` and ``actuatorforcelimited``, introduced in the previous version to - :ref:`actuatorfrcrange` and - :ref:`actuatorfrclimited`, respectively. -10. Added the flag :ref:`eulerdamp`, which disables implicit integration of joint damping in the +10. Renamed ``actuatorforcerange`` and ``actuatorforcelimited``, introduced in the previous version to + :ref:`actuatorfrcrange` and + :ref:`actuatorfrclimited`, respectively. +11. Added the flag :ref:`eulerdamp`, which disables implicit integration of joint damping in the Euler integrator. See the :ref:`Numerical Integration` section for more details. -11. Added the flag :ref:`invdiscrete`, which enables discrete-time inverse dynamics for all +12. Added the flag :ref:`invdiscrete`, which enables discrete-time inverse dynamics for all :ref:`integrators` other than ``RK4``. See the flag documentation for more details. -12. Added :ref:`ls_iterations` and :ref:`ls_tolerance` options for adjusting +13. Added :ref:`ls_iterations` and :ref:`ls_tolerance` options for adjusting linesearch stopping criteria in CG and Newton solvers. This can be useful for performance tuning. -13. Added ``mesh_pos`` and ``mesh_quat`` fields to :ref:`mjModel` to store normalizing transformation. -14. Added camera :ref:`resolution` attribute and :ref:`camprojection` +14. Added ``mesh_pos`` and ``mesh_quat`` fields to :ref:`mjModel` to store normalizing transformation. +15. Added camera :ref:`resolution` attribute and :ref:`camprojection` sensor. If camera resolution is set to positive values, the camera projection sensor will report the location of a target site, projected onto the camera image, in pixel coordinates. Python bindings ^^^^^^^^^^^^^^^ -15. Fixed `#870 `__ where calling ``update_scene`` with an invalid +16. Fixed `#870 `__ where calling ``update_scene`` with an invalid camera name used the default camera. Bug fixes ^^^^^^^^^ -16. Fixed a bug that was causing the geom margins to be ignored during the midphase. +17. Fixed a bug that was causing the geom margins to be ignored during the midphase. Version 2.3.7 (July 20, 2023) diff --git a/doc/includes/references.h b/doc/includes/references.h index a28f77ed..e13b9bbb 100644 --- a/doc/includes/references.h +++ b/doc/includes/references.h @@ -146,9 +146,10 @@ struct mjData_ { mjTimerStat timer[mjNTIMER]; // timer statistics // solver statistics - mjSolverStat solver[mjNSOLVER]; // solver statistics per iteration - int solver_iter; // number of solver iterations - int solver_nnz; // number of non-zeros in Hessian or efc_AR + mjSolverStat solver[mjNISLAND*mjNSOLVER]; // solver statistics per island, per iteration + int solver_nisland; // number of islands processed by solver + int solver_niter[mjNISLAND]; // number of solver iterations, per island + int solver_nnz[mjNISLAND]; // number of non-zeros in Hessian or efc_AR, per island mjtNum solver_fwdinv[2]; // forward-inverse comparison: qfrc, efc // collision statistics diff --git a/include/mujoco/mjdata.h b/include/mujoco/mjdata.h index 408e62f8..c55d91a4 100644 --- a/include/mujoco/mjdata.h +++ b/include/mujoco/mjdata.h @@ -173,9 +173,10 @@ struct mjData_ { mjTimerStat timer[mjNTIMER]; // timer statistics // solver statistics - mjSolverStat solver[mjNSOLVER]; // solver statistics per iteration - int solver_iter; // number of solver iterations - int solver_nnz; // number of non-zeros in Hessian or efc_AR + mjSolverStat solver[mjNISLAND*mjNSOLVER]; // solver statistics per island, per iteration + int solver_nisland; // number of islands processed by solver + int solver_niter[mjNISLAND]; // number of solver iterations, per island + int solver_nnz[mjNISLAND]; // number of non-zeros in Hessian or efc_AR, per island mjtNum solver_fwdinv[2]; // forward-inverse comparison: qfrc, efc // collision statistics diff --git a/include/mujoco/mjmodel.h b/include/mujoco/mjmodel.h index 31031f8f..efa27d57 100644 --- a/include/mujoco/mjmodel.h +++ b/include/mujoco/mjmodel.h @@ -41,7 +41,8 @@ #define mjNFLUID 12 // number of fluid interaction parameters #define mjNREF 2 // number of solver reference parameters #define mjNIMP 5 // number of solver impedance parameters -#define mjNSOLVER 1000 // size of mjData.solver_XXX arrays +#define mjNSOLVER 200 // size of one mjData.solver array +#define mjNISLAND 20 // number of mjData.solver arrays //---------------------------------- enum types (mjt) ---------------------------------------------- diff --git a/include/mujoco/mjxmacro.h b/include/mujoco/mjxmacro.h index 7ec0a7f4..2ba5a4ec 100644 --- a/include/mujoco/mjxmacro.h +++ b/include/mujoco/mjxmacro.h @@ -636,8 +636,7 @@ X( size_t, maxuse_arena ) \ X( int, maxuse_con ) \ X( int, maxuse_efc ) \ - X( int, solver_iter ) \ - X( int, solver_nnz ) \ + X( int, solver_nisland ) \ X( int, nbodypair_broad ) \ X( int, nbodypair_narrow ) \ X( int, ngeompair_mid ) \ @@ -654,12 +653,14 @@ // vector fields of mjData -#define MJDATA_VECTOR \ - X( mjWarningStat, warning, mjNWARNING, 1 ) \ - X( mjTimerStat, timer, mjNTIMER, 1 ) \ - X( mjSolverStat, solver, mjNSOLVER, 1 ) \ - X( mjtNum, solver_fwdinv, 2, 1 ) \ - X( mjtNum, energy, 2, 1 ) +#define MJDATA_VECTOR \ + X( mjWarningStat, warning, mjNWARNING, 1 ) \ + X( mjTimerStat, timer, mjNTIMER, 1 ) \ + X( mjSolverStat, solver, mjNILSAND, mjNSOLVER ) \ + X( int, solver_niter, mjNISLAND, 1 ) \ + X( int, solver_nnz, mjNISLAND, 1 ) \ + X( mjtNum, solver_fwdinv, 2, 1 ) \ + X( mjtNum, energy, 2, 1 ) // alias XMJV to be the same as X diff --git a/introspect/structs.py b/introspect/structs.py index abf8b461..50d614f8 100644 --- a/introspect/structs.py +++ b/introspect/structs.py @@ -3583,19 +3583,30 @@ STRUCTS: Mapping[str, StructDecl] = dict([ name='solver', type=ArrayType( inner_type=ValueType(name='mjSolverStat'), - extents=(1000,), + extents=(4000,), ), - doc='solver statistics per iteration', + doc='solver statistics per island, per iteration', ), StructFieldDecl( - name='solver_iter', + name='solver_nisland', type=ValueType(name='int'), - doc='number of solver iterations', + doc='number of islands processed by solver', + ), + StructFieldDecl( + name='solver_niter', + type=ArrayType( + inner_type=ValueType(name='int'), + extents=(20,), + ), + doc='number of solver iterations, per island', ), StructFieldDecl( name='solver_nnz', - type=ValueType(name='int'), - doc='number of non-zeros in Hessian or efc_AR', + type=ArrayType( + inner_type=ValueType(name='int'), + extents=(20,), + ), + doc='number of non-zeros in Hessian or efc_AR, per island', ), StructFieldDecl( name='solver_fwdinv', diff --git a/python/mujoco/structs.h b/python/mujoco/structs.h index 00001379..62b18431 100644 --- a/python/mujoco/structs.h +++ b/python/mujoco/structs.h @@ -582,6 +582,8 @@ class MjWrapper: public WrapperBase { py_array_or_tuple_t warning; py_array_or_tuple_t timer; py_array_or_tuple_t solver; + py_array_or_tuple_t solver_niter; + py_array_or_tuple_t solver_nnz; py_array_or_tuple_t solver_fwdinv; py_array_or_tuple_t energy; diff --git a/simulate/simulate.cc b/simulate/simulate.cc index f417257d..65425097 100644 --- a/simulate/simulate.cc +++ b/simulate/simulate.cc @@ -176,6 +176,10 @@ const char help_title[] = //-------------------------------- profiler, sensor, info, watch ----------------------------------- +// number of lines in the Constraint ("Counts") and Cost ("Convergence") figures +static constexpr int kConstraintNum = 5; +static constexpr int kCostNum = 3; + // init profiler figures void InitializeProfiler(mj::Simulate* sim) { // set figures to default @@ -212,6 +216,20 @@ void InitializeProfiler(mj::Simulate* sim) { sim->figsize.figurergba[3] = 0.5f; sim->figtimer.figurergba[3] = 0.5f; + // repeat line colors for constraint and cost figures + mjvFigure* fig = &sim->figcost; + for (int i=kCostNum; ilinergb[i][0] = fig->linergb[i - kCostNum][0]; + fig->linergb[i][1] = fig->linergb[i - kCostNum][1]; + fig->linergb[i][2] = fig->linergb[i - kCostNum][2]; + } + fig = &sim->figconstraint; + for (int i=kConstraintNum; ilinergb[i][0] = fig->linergb[i - kConstraintNum][0]; + fig->linergb[i][1] = fig->linergb[i - kConstraintNum][1]; + fig->linergb[i][2] = fig->linergb[i - kConstraintNum][2]; + } + // legends mju::strcpy_arr(sim->figconstraint.linename[0], "total"); mju::strcpy_arr(sim->figconstraint.linename[1], "active"); @@ -272,54 +290,76 @@ void InitializeProfiler(mj::Simulate* sim) { // update profiler figures void UpdateProfiler(mj::Simulate* sim, const mjModel* m, const mjData* d) { - // update constraint figure - sim->figconstraint.linepnt[0] = mjMIN(mjMIN(d->solver_iter, mjNSOLVER), mjMAXLINEPNT); - for (int i=1; i<5; i++) { - sim->figconstraint.linepnt[i] = sim->figconstraint.linepnt[0]; - } - if (m->opt.solver==mjSOL_PGS) { - sim->figconstraint.linepnt[3] = 0; - sim->figconstraint.linepnt[4] = 0; - } - if (m->opt.solver==mjSOL_CG) { - sim->figconstraint.linepnt[4] = 0; - } - for (int i=0; ifigconstraint.linepnt[0]; i++) { - // x - sim->figconstraint.linedata[0][2*i] = i; - sim->figconstraint.linedata[1][2*i] = i; - sim->figconstraint.linedata[2][2*i] = i; - sim->figconstraint.linedata[3][2*i] = i; - sim->figconstraint.linedata[4][2*i] = i; + // reset lines in Constraint and Cost figures + memset(sim->figconstraint.linepnt, 0, mjMAXLINE*sizeof(int)); + memset(sim->figcost.linepnt, 0, mjMAXLINE*sizeof(int)); - // y - sim->figconstraint.linedata[0][2*i+1] = d->nefc; - sim->figconstraint.linedata[1][2*i+1] = d->solver[i].nactive; - sim->figconstraint.linedata[2][2*i+1] = d->solver[i].nchange; - sim->figconstraint.linedata[3][2*i+1] = d->solver[i].neval; - sim->figconstraint.linedata[4][2*i+1] = d->solver[i].nupdate; - } + // number of islands that have diagnostics + int nisland = mjMIN(d->solver_nisland, mjNISLAND); - // update cost figure - sim->figcost.linepnt[0] = mjMIN(mjMIN(d->solver_iter, mjNSOLVER), mjMAXLINEPNT); - for (int i=1; i<3; i++) { - sim->figcost.linepnt[i] = sim->figcost.linepnt[0]; - } - if (m->opt.solver==mjSOL_PGS) { - sim->figcost.linepnt[1] = 0; - sim->figcost.linepnt[2] = 0; - } + // iterate over islands + for (int k=0; k < nisland; k++) { + // ==== update Constraint ("Counts") figure - for (int i=0; ifigcost.linepnt[0]; i++) { - // x - sim->figcost.linedata[0][2*i] = i; - sim->figcost.linedata[1][2*i] = i; - sim->figcost.linedata[2][2*i] = i; + // number of points to plot, starting line + int npoints = mjMIN(mjMIN(d->solver_niter[k], mjNSOLVER), mjMAXLINEPNT); + int start = kConstraintNum * k; - // y - sim->figcost.linedata[0][2*i+1] = mju_log10(mju_max(mjMINVAL, d->solver[i].improvement)); - sim->figcost.linedata[1][2*i+1] = mju_log10(mju_max(mjMINVAL, d->solver[i].gradient)); - sim->figcost.linedata[2][2*i+1] = mju_log10(mju_max(mjMINVAL, d->solver[i].lineslope)); + sim->figconstraint.linepnt[start + 0] = npoints; + for (int i=1; i < kConstraintNum; i++) { + sim->figconstraint.linepnt[start + i] = npoints; + } + if (m->opt.solver == mjSOL_PGS) { + sim->figconstraint.linepnt[start + 3] = 0; + sim->figconstraint.linepnt[start + 4] = 0; + } + if (m->opt.solver == mjSOL_CG) { + sim->figconstraint.linepnt[start + 4] = 0; + } + for (int i=0; ifigconstraint.linedata[start + 0][2*i] = i; + sim->figconstraint.linedata[start + 1][2*i] = i; + sim->figconstraint.linedata[start + 2][2*i] = i; + sim->figconstraint.linedata[start + 3][2*i] = i; + sim->figconstraint.linedata[start + 4][2*i] = i; + + // y + int nefc = nisland == 1 ? d->nefc : d->island_efcnum[k]; + sim->figconstraint.linedata[start + 0][2*i+1] = nefc; + const mjSolverStat* stat = d->solver + k*mjNSOLVER + i; + sim->figconstraint.linedata[start + 1][2*i+1] = stat->nactive; + sim->figconstraint.linedata[start + 2][2*i+1] = stat->nchange; + sim->figconstraint.linedata[start + 3][2*i+1] = stat->neval; + sim->figconstraint.linedata[start + 4][2*i+1] = stat->nupdate; + } + + // update cost figure + start = kCostNum * k; + sim->figcost.linepnt[start + 0] = npoints; + for (int i=1; ifigcost.linepnt[start + i] = npoints; + } + if (m->opt.solver==mjSOL_PGS) { + sim->figcost.linepnt[start + 1] = 0; + sim->figcost.linepnt[start + 2] = 0; + } + + for (int i=0; ifigcost.linepnt[0]; i++) { + // x + sim->figcost.linedata[start + 0][2*i] = i; + sim->figcost.linedata[start + 1][2*i] = i; + sim->figcost.linedata[start + 2][2*i] = i; + + // y + const mjSolverStat* stat = d->solver + k*mjNSOLVER + i; + sim->figcost.linedata[start + 0][2*i + 1] = + mju_log10(mju_max(mjMINVAL, stat->improvement)); + sim->figcost.linedata[start + 1][2*i + 1] = + mju_log10(mju_max(mjMINVAL, stat->gradient)); + sim->figcost.linedata[start + 2][2*i + 1] = + mju_log10(mju_max(mjMINVAL, stat->lineslope)); + } } // get timers: total, collision, prepare, solve, other @@ -355,14 +395,22 @@ void UpdateProfiler(mj::Simulate* sim, const mjModel* m, const mjData* d) { } } + // get total number of iterations and nonzeros + mjtNum sqrt_nnz = 0; + int solver_niter = 0; + for (int island=0; island < nisland; island++) { + sqrt_nnz += mju_sqrt(d->solver_nnz[island]); + solver_niter += d->solver_niter[island]; + } + // get sizes: nv, nbody, nefc, sqrt(nnz), ncont, iter float sdata[6] = { static_cast(m->nv), static_cast(m->nbody), static_cast(d->nefc), - static_cast(mju_sqrt(d->solver_nnz)), + static_cast(sqrt_nnz), static_cast(d->ncon), - static_cast(d->solver_iter) + static_cast(solver_niter) }; // update figsize @@ -497,14 +545,22 @@ void UpdateInfoText(mj::Simulate* sim, const mjModel* m, const mjData* d, char (&content)[mj::Simulate::kMaxFilenameLength]) { char tmp[20]; - // compute solver error + // number of islands with statistics + int nisland = mjMIN(d->solver_nisland, mjNISLAND); + + // compute solver error (maximum over islands) mjtNum solerr = 0; - if (d->solver_iter) { - int ind = mjMIN(d->solver_iter-1, mjNSOLVER-1); - solerr = mju_min(d->solver[ind].improvement, d->solver[ind].gradient); - if (solerr==0) { - solerr = mju_max(d->solver[ind].improvement, d->solver[ind].gradient); + for (int i=0; i < nisland; i++) { + mjtNum solerr_i = 0; + if (d->solver_niter[i]) { + int ind = mjMIN(d->solver_niter[i], mjNSOLVER) - 1; + const mjSolverStat* stat = d->solver + i*mjNSOLVER + ind; + solerr_i = mju_min(stat->improvement, stat->gradient); + if (solerr_i==0) { + solerr_i = mju_max(stat->improvement, stat->gradient); + } } + solerr = mju_max(solerr, solerr_i); } solerr = mju_log10(mju_max(mjMINVAL, solerr)); @@ -516,6 +572,12 @@ void UpdateInfoText(mj::Simulate* sim, const mjModel* m, const mjData* d, mju::sprintf_arr(fps, "%.0f ", sim->fps_); } + // total iterations of all islands with statistics + int solver_niter = 0; + for (int i=0; i < nisland; i++) { + solver_niter += d->solver_niter[i]; + } + // prepare info text mju::strcpy_arr(title, "Time\nSize\nCPU\nSolver \nFPS\nMemory"); mju::sprintf_arr(content, @@ -525,7 +587,7 @@ void UpdateInfoText(mj::Simulate* sim, const mjModel* m, const mjData* d, sim->run ? d->timer[mjTIMER_STEP].duration / mjMAX(1, d->timer[mjTIMER_STEP].number) : d->timer[mjTIMER_FORWARD].duration / mjMAX(1, d->timer[mjTIMER_FORWARD].number), - solerr, d->solver_iter, + solerr, solver_niter, fps, d->maxuse_arena/(double)(d->narena), mju_writeNumBytes(d->narena)); diff --git a/src/engine/engine_core_smooth.c b/src/engine/engine_core_smooth.c index a56665c6..b175c495 100644 --- a/src/engine/engine_core_smooth.c +++ b/src/engine/engine_core_smooth.c @@ -1212,11 +1212,17 @@ void mj_solveM(const mjModel* m, mjData* d, mjtNum* x, const mjtNum* y, int n) { // in-place sparse backsubstitution for one island: x = inv(L'*D*L)*x // L is in lower triangle of qLD; D is on diagonal of qLD void mj_solveM_island(const mjModel* m, const mjData* d, mjtNum* restrict x, int island) { + // if no islands, call mj_solveLD + const mjtNum* qLD = d->qLD; + const mjtNum* qLDiagInv = d->qLDiagInv; + if (island < 0) { + mj_solveLD(m, x, 1, qLD, qLDiagInv); + return; + } + // local constants: general const int* Madr = m->dof_Madr; const int* parentid = m->dof_parentid; - const mjtNum* qLD = d->qLD; - const mjtNum* qLDiagInv = d->qLDiagInv; const int* simplenum = m->dof_simplenum; // local constants: island specific diff --git a/src/engine/engine_forward.c b/src/engine/engine_forward.c index cb168b71..dd59cc26 100644 --- a/src/engine/engine_forward.c +++ b/src/engine/engine_forward.c @@ -501,7 +501,7 @@ void mj_fwdConstraint(const mjModel* m, mjData* d) { mju_copy(d->qacc, d->qacc_smooth, nv); mju_copy(d->qacc_warmstart, d->qacc_smooth, nv); mju_zero(d->qfrc_constraint, nv); - d->solver_iter = 0; + mju_zeroInt(d->solver_niter, mjNISLAND); TM_END(mjTIMER_CONSTRAINT); return; } @@ -512,7 +512,7 @@ void mj_fwdConstraint(const mjModel* m, mjData* d) { // warmstart solver warmstart(m, d); - d->solver_iter = 0; + mju_zeroInt(d->solver_niter, mjNISLAND); // run main solver switch ((mjtSolver) m->opt.solver) { @@ -532,6 +532,9 @@ void mj_fwdConstraint(const mjModel* m, mjData* d) { mjERROR("unknown solver type %d", m->opt.solver); } + // one (monolithic) island + d->solver_nisland = 1; + // save result for next step warmstart mju_copy(d->qacc_warmstart, d->qacc, nv); diff --git a/src/engine/engine_io.c b/src/engine/engine_io.c index 0d2546f0..a47a02fd 100644 --- a/src/engine/engine_io.c +++ b/src/engine/engine_io.c @@ -1428,9 +1428,10 @@ static void _resetData(const mjModel* m, mjData* d, unsigned char debug_value) { // clear solver diagnostics memset(d->warning, 0, mjNWARNING*sizeof(mjWarningStat)); memset(d->timer, 0, mjNTIMER*sizeof(mjTimerStat)); - memset(d->solver, 0, mjNSOLVER*sizeof(mjSolverStat)); - d->solver_iter = 0; - d->solver_nnz = 0; + memset(d->solver, 0, mjNSOLVER*mjNISLAND*sizeof(mjSolverStat)); + d->solver_nisland = 0; + mju_zeroInt(d->solver_niter, mjNISLAND); + mju_zeroInt(d->solver_nnz, mjNISLAND); mju_zero(d->solver_fwdinv, 2); // clear collision diagnostics diff --git a/src/engine/engine_print.c b/src/engine/engine_print.c index 7504f3f8..735a9c25 100644 --- a/src/engine/engine_print.c +++ b/src/engine/engine_print.c @@ -837,24 +837,33 @@ void mj_printFormattedData(const mjModel* m, mjData* d, const char* filename, } // SOLVER STAT - if (d->solver_iter) { + if (d->nefc) { fprintf(fp, "SOLVER STAT\n"); - fprintf(fp, " solver_iter = %d\n", d->solver_iter); - fprintf(fp, " solver_nnz = %d\n", d->solver_nnz); - for (int i=0; i < mjMIN(mjNSOLVER, d->solver_iter); i++) { - fprintf(fp, " %d: improvement = ", i); - fprintf(fp, float_format, d->solver[i].improvement); - fprintf(fp, " gradient = "); - fprintf(fp, float_format, d->solver[i].gradient); - fprintf(fp, " lineslope = "); - fprintf(fp, float_format, d->solver[i].lineslope); - fprintf(fp, "\n"); - fprintf(fp, " nactive = %d nchange = %d neval = %d nupdate = %d\n", - d->solver[i].nactive, d->solver[i].nchange, - d->solver[i].neval, d->solver[i].nupdate); + fprintf(fp, " solver_nisland = %d\n", d->solver_nisland); + printVector(" solver_fwdinv = ", d->solver_fwdinv, 2, fp, float_format); + int nisland_stat = mjMIN(d->solver_nisland, mjNISLAND); + for (int island=0; island < nisland_stat; island++) { + int niter_stat = mjMIN(mjNSOLVER, d->solver_niter[island]); + if (niter_stat) { + fprintf(fp, " ISLAND %d\n", island); + fprintf(fp, " solver_niter = %d\n", d->solver_niter[island]); + fprintf(fp, " solver_nnz = %d\n", d->solver_nnz[island]); + for (int i=0; i < niter_stat; i++) { + mjSolverStat* stat = d->solver + island*mjNSOLVER + i; + fprintf(fp, " %d: improvement = ", i); + fprintf(fp, float_format, stat->improvement); + fprintf(fp, " gradient = "); + fprintf(fp, float_format, stat->gradient); + fprintf(fp, " lineslope = "); + fprintf(fp, float_format, stat->lineslope); + fprintf(fp, "\n"); + fprintf(fp, " nactive = %d nchange = %d neval = %d nupdate = %d\n", + stat->nactive, stat->nchange, + stat->neval, stat->nupdate); + } + fprintf(fp, "\n"); + } } - printVector("solver_fwdinv = ", d->solver_fwdinv, 2, fp, float_format); - fprintf(fp, "\n"); } printVector("ENERGY = ", d->energy, 2, fp, float_format); diff --git a/src/engine/engine_solver.c b/src/engine/engine_solver.c index 7eeb41f2..bcaea385 100644 --- a/src/engine/engine_solver.c +++ b/src/engine/engine_solver.c @@ -39,24 +39,30 @@ static mjtNum rescale(const mjModel* m, mjtNum x) { -// save solver statistics, count -static void saveStats(const mjModel* m, mjData* d, int* piter, +// save solver statistics +static void saveStats(const mjModel* m, mjData* d, int island, int iter, mjtNum improvement, mjtNum gradient, mjtNum lineslope, int nactive, int nchange, int neval, int nupdate) { - // compute position, increase iter - int i = d->solver_iter + (*piter); - (*piter)++; - - // save if within range - if (i < mjNSOLVER) { - d->solver[i].improvement = improvement; - d->solver[i].gradient = gradient; - d->solver[i].lineslope = lineslope; - d->solver[i].nactive = nactive; - d->solver[i].nchange = nchange; - d->solver[i].neval = neval; - d->solver[i].nupdate = nupdate; + // if out of range, return + if (island >= mjNISLAND) { + return; } + + // if no islands, use first island + island = mjMAX(0, island); + + // get mjSolverStat pointer + iter += d->solver_niter[island]; // add current niter (in case of noslip) + mjSolverStat* stat = d->solver + island*mjNSOLVER + iter; + + // save stats + stat->improvement = improvement; + stat->gradient = gradient; + stat->lineslope = lineslope; + stat->nactive = nactive; + stat->nchange = nchange; + stat->neval = neval; + stat->nupdate = nupdate; } @@ -313,6 +319,9 @@ void mj_solPGS(const mjModel* m, mjData* d, int maxiter) { mjtNum* ARinv = mj_stackAllocNum(d, nefc); int* oldstate = mj_stackAllocInt(d, nefc); + // TODO: b/295296178 - Use island index (currently hardcoded to 0) + int island = 0; + // precompute inverse diagonal of AR ARdiaginv(m, d, ARinv, 0); @@ -471,9 +480,13 @@ void mj_solPGS(const mjModel* m, mjData* d, int maxiter) { nchange += (oldstate[i] != d->efc_state[i]); } - // scale improvement, save stats, count + // scale improvement, save stats improvement = rescale(m, improvement); - saveStats(m, d, &iter, improvement, 0, 0, nactive, nchange, 0, 0); + saveStats(m, d, island, iter, improvement, 0, 0, nactive, nchange, 0, 0); + + // increment iteration count + iter++; + // terminate if (improvement < m->opt.tolerance) { @@ -481,17 +494,20 @@ void mj_solPGS(const mjModel* m, mjData* d, int maxiter) { } } - // update solver iterations - d->solver_iter += iter; + // finalize statistics + if (island < mjNISLAND) { + // update solver iterations + d->solver_niter[island] += iter; - // set nnz - if (mj_isSparse(m)) { - d->solver_nnz = 0; - for (int i=0; i < nefc; i++) { - d->solver_nnz += d->efc_AR_rownnz[i]; + // set nnz + if (mj_isSparse(m)) { + d->solver_nnz[island] = 0; + for (int i=0; i < nefc; i++) { + d->solver_nnz[island] += d->efc_AR_rownnz[i]; + } + } else { + d->solver_nnz[island] = nefc*nefc; } - } else { - d->solver_nnz = nefc*nefc; } // map to joint space @@ -515,6 +531,9 @@ void mj_solNoSlip(const mjModel* m, mjData* d, int maxiter) { mjtNum* ARinv = mj_stackAllocNum(d, nefc); int* oldstate = mj_stackAllocInt(d, nefc); + // TODO: b/295296178 - Use island index (currently hardcoded to 0) + int island = 0; + // precompute inverse diagonal of A ARdiaginv(m, d, ARinv, 1); @@ -687,9 +706,12 @@ void mj_solNoSlip(const mjModel* m, mjData* d, int maxiter) { nchange += (oldstate[i] != d->efc_state[i]); } - // scale improvement, save stats, count + // scale improvement, save stats improvement = rescale(m, improvement); - saveStats(m, d, &iter, improvement, 0, 0, nactive, nchange, 0, 0); + saveStats(m, d, island, iter, improvement, 0, 0, nactive, nchange, 0, 0); + + // increment iteration count + iter++; // terminate if (improvement < m->opt.noslip_tolerance) { @@ -698,7 +720,7 @@ void mj_solNoSlip(const mjModel* m, mjData* d, int maxiter) { } // update solver iterations - d->solver_iter += iter; + d->solver_niter[island] += iter; // map to joint space dualFinish(m, d); @@ -1514,6 +1536,9 @@ static void mj_solCGNewton(const mjModel* m, mjData* d, int maxiter, int flg_New mjCGContext ctx; mj_markStack(d); + // TODO: b/295296178 - Use island index (currently hardcoded to 0) + int island = 0; + // allocate context CGallocate(m, d, &ctx, flg_Newton); @@ -1576,12 +1601,15 @@ static void mj_solCGNewton(const mjModel* m, mjData* d, int maxiter, int flg_New nchange += (d->efc_state[i] != oldstate[i]); } - // scale improvement, save stats, count + // scale improvement, save stats mjtNum improvement = rescale(m, oldcost-ctx.cost); mjtNum gradient = rescale(m, mju_norm(ctx.grad, nv)); - saveStats(m, d, &iter, improvement, gradient, ctx.LSslope, + saveStats(m, d, island, iter, improvement, gradient, ctx.LSslope, ctx.nactive, nchange, ctx.LSiter, ctx.nupdate); + // increment iteration count + iter++; + // termination if (improvement < m->opt.tolerance || gradient < m->opt.tolerance) { break; @@ -1608,18 +1636,21 @@ static void mj_solCGNewton(const mjModel* m, mjData* d, int maxiter, int flg_New } } - // update solver iterations - d->solver_iter += iter; + // finalize statistics + if (island < mjNISLAND) { + // update solver iterations + d->solver_niter[island] += iter; - // set solver_nnz - if (flg_Newton) { - if (mj_isSparse(m)) { - d->solver_nnz = 2*ctx.nnz - nv; + // set solver_nnz + if (flg_Newton) { + if (mj_isSparse(m)) { + d->solver_nnz[island] = 2*ctx.nnz - nv; + } else { + d->solver_nnz[island] = nv*nv; + } } else { - d->solver_nnz = nv*nv; + d->solver_nnz[island] = 0; } - } else { - d->solver_nnz = 0; } mj_freeStack(d); diff --git a/unity/Runtime/Bindings/MjBindings.cs b/unity/Runtime/Bindings/MjBindings.cs index bad1edc6..61da4982 100644 --- a/unity/Runtime/Bindings/MjBindings.cs +++ b/unity/Runtime/Bindings/MjBindings.cs @@ -50,7 +50,8 @@ public const int mjNBIAS = 10; public const int mjNFLUID = 12; public const int mjNREF = 2; public const int mjNIMP = 5; -public const int mjNSOLVER = 1000; +public const int mjNSOLVER = 200; +public const int mjNISLAND = 20; public const bool THIRD_PARTY_MUJOCO_INCLUDE_MJPLUGIN_H_ = true; public const bool mjEXTERNC = true; public const bool THIRD_PARTY_MUJOCO_MJRENDER_H_ = true; @@ -1608,8 +1609,3009 @@ public unsafe struct mjData_ { public mjSolverStat_ solver997; public mjSolverStat_ solver998; public mjSolverStat_ solver999; - public int solver_iter; - public int solver_nnz; + public mjSolverStat_ solver1000; + public mjSolverStat_ solver1001; + public mjSolverStat_ solver1002; + public mjSolverStat_ solver1003; + public mjSolverStat_ solver1004; + public mjSolverStat_ solver1005; + public mjSolverStat_ solver1006; + public mjSolverStat_ solver1007; + public mjSolverStat_ solver1008; + public mjSolverStat_ solver1009; + public mjSolverStat_ solver1010; + public mjSolverStat_ solver1011; + public mjSolverStat_ solver1012; + public mjSolverStat_ solver1013; + public mjSolverStat_ solver1014; + public mjSolverStat_ solver1015; + public mjSolverStat_ solver1016; + public mjSolverStat_ solver1017; + public mjSolverStat_ solver1018; + public mjSolverStat_ solver1019; + public mjSolverStat_ solver1020; + public mjSolverStat_ solver1021; + public mjSolverStat_ solver1022; + public mjSolverStat_ solver1023; + public mjSolverStat_ solver1024; + public mjSolverStat_ solver1025; + public mjSolverStat_ solver1026; + public mjSolverStat_ solver1027; + public mjSolverStat_ solver1028; + public mjSolverStat_ solver1029; + public mjSolverStat_ solver1030; + public mjSolverStat_ solver1031; + public mjSolverStat_ solver1032; + public mjSolverStat_ solver1033; + public mjSolverStat_ solver1034; + public mjSolverStat_ solver1035; + public mjSolverStat_ solver1036; + public mjSolverStat_ solver1037; + public mjSolverStat_ solver1038; + public mjSolverStat_ solver1039; + public mjSolverStat_ solver1040; + public mjSolverStat_ solver1041; + public mjSolverStat_ solver1042; + public mjSolverStat_ solver1043; + public mjSolverStat_ solver1044; + public mjSolverStat_ solver1045; + public mjSolverStat_ solver1046; + public mjSolverStat_ solver1047; + public mjSolverStat_ solver1048; + public mjSolverStat_ solver1049; + public mjSolverStat_ solver1050; + public mjSolverStat_ solver1051; + public mjSolverStat_ solver1052; + public mjSolverStat_ solver1053; + public mjSolverStat_ solver1054; + public mjSolverStat_ solver1055; + public mjSolverStat_ solver1056; + public mjSolverStat_ solver1057; + public mjSolverStat_ solver1058; + public mjSolverStat_ solver1059; + public mjSolverStat_ solver1060; + public mjSolverStat_ solver1061; + public mjSolverStat_ solver1062; + public mjSolverStat_ solver1063; + public mjSolverStat_ solver1064; + public mjSolverStat_ solver1065; + public mjSolverStat_ solver1066; + public mjSolverStat_ solver1067; + public mjSolverStat_ solver1068; + public mjSolverStat_ solver1069; + public mjSolverStat_ solver1070; + public mjSolverStat_ solver1071; + public mjSolverStat_ solver1072; + public mjSolverStat_ solver1073; + public mjSolverStat_ solver1074; + public mjSolverStat_ solver1075; + public mjSolverStat_ solver1076; + public mjSolverStat_ solver1077; + public mjSolverStat_ solver1078; + public mjSolverStat_ solver1079; + public mjSolverStat_ solver1080; + public mjSolverStat_ solver1081; + public mjSolverStat_ solver1082; + public mjSolverStat_ solver1083; + public mjSolverStat_ solver1084; + public mjSolverStat_ solver1085; + public mjSolverStat_ solver1086; + public mjSolverStat_ solver1087; + public mjSolverStat_ solver1088; + public mjSolverStat_ solver1089; + public mjSolverStat_ solver1090; + public mjSolverStat_ solver1091; + public mjSolverStat_ solver1092; + public mjSolverStat_ solver1093; + public mjSolverStat_ solver1094; + public mjSolverStat_ solver1095; + public mjSolverStat_ solver1096; + public mjSolverStat_ solver1097; + public mjSolverStat_ solver1098; + public mjSolverStat_ solver1099; + public mjSolverStat_ solver1100; + public mjSolverStat_ solver1101; + public mjSolverStat_ solver1102; + public mjSolverStat_ solver1103; + public mjSolverStat_ solver1104; + public mjSolverStat_ solver1105; + public mjSolverStat_ solver1106; + public mjSolverStat_ solver1107; + public mjSolverStat_ solver1108; + public mjSolverStat_ solver1109; + public mjSolverStat_ solver1110; + public mjSolverStat_ solver1111; + public mjSolverStat_ solver1112; + public mjSolverStat_ solver1113; + public mjSolverStat_ solver1114; + public mjSolverStat_ solver1115; + public mjSolverStat_ solver1116; + public mjSolverStat_ solver1117; + public mjSolverStat_ solver1118; + public mjSolverStat_ solver1119; + public mjSolverStat_ solver1120; + public mjSolverStat_ solver1121; + public mjSolverStat_ solver1122; + public mjSolverStat_ solver1123; + public mjSolverStat_ solver1124; + public mjSolverStat_ solver1125; + public mjSolverStat_ solver1126; + public mjSolverStat_ solver1127; + public mjSolverStat_ solver1128; + public mjSolverStat_ solver1129; + public mjSolverStat_ solver1130; + public mjSolverStat_ solver1131; + public mjSolverStat_ solver1132; + public mjSolverStat_ solver1133; + public mjSolverStat_ solver1134; + public mjSolverStat_ solver1135; + public mjSolverStat_ solver1136; + public mjSolverStat_ solver1137; + public mjSolverStat_ solver1138; + public mjSolverStat_ solver1139; + public mjSolverStat_ solver1140; + public mjSolverStat_ solver1141; + public mjSolverStat_ solver1142; + public mjSolverStat_ solver1143; + public mjSolverStat_ solver1144; + public mjSolverStat_ solver1145; + public mjSolverStat_ solver1146; + public mjSolverStat_ solver1147; + public mjSolverStat_ solver1148; + public mjSolverStat_ solver1149; + public mjSolverStat_ solver1150; + public mjSolverStat_ solver1151; + public mjSolverStat_ solver1152; + public mjSolverStat_ solver1153; + public mjSolverStat_ solver1154; + public mjSolverStat_ solver1155; + public mjSolverStat_ solver1156; + public mjSolverStat_ solver1157; + public mjSolverStat_ solver1158; + public mjSolverStat_ solver1159; + public mjSolverStat_ solver1160; + public mjSolverStat_ solver1161; + public mjSolverStat_ solver1162; + public mjSolverStat_ solver1163; + public mjSolverStat_ solver1164; + public mjSolverStat_ solver1165; + public mjSolverStat_ solver1166; + public mjSolverStat_ solver1167; + public mjSolverStat_ solver1168; + public mjSolverStat_ solver1169; + public mjSolverStat_ solver1170; + public mjSolverStat_ solver1171; + public mjSolverStat_ solver1172; + public mjSolverStat_ solver1173; + public mjSolverStat_ solver1174; + public mjSolverStat_ solver1175; + public mjSolverStat_ solver1176; + public mjSolverStat_ solver1177; + public mjSolverStat_ solver1178; + public mjSolverStat_ solver1179; + public mjSolverStat_ solver1180; + public mjSolverStat_ solver1181; + public mjSolverStat_ solver1182; + public mjSolverStat_ solver1183; + public mjSolverStat_ solver1184; + public mjSolverStat_ solver1185; + public mjSolverStat_ solver1186; + public mjSolverStat_ solver1187; + public mjSolverStat_ solver1188; + public mjSolverStat_ solver1189; + public mjSolverStat_ solver1190; + public mjSolverStat_ solver1191; + public mjSolverStat_ solver1192; + public mjSolverStat_ solver1193; + public mjSolverStat_ solver1194; + public mjSolverStat_ solver1195; + public mjSolverStat_ solver1196; + public mjSolverStat_ solver1197; + public mjSolverStat_ solver1198; + public mjSolverStat_ solver1199; + public mjSolverStat_ solver1200; + public mjSolverStat_ solver1201; + public mjSolverStat_ solver1202; + public mjSolverStat_ solver1203; + public mjSolverStat_ solver1204; + public mjSolverStat_ solver1205; + public mjSolverStat_ solver1206; + public mjSolverStat_ solver1207; + public mjSolverStat_ solver1208; + public mjSolverStat_ solver1209; + public mjSolverStat_ solver1210; + public mjSolverStat_ solver1211; + public mjSolverStat_ solver1212; + public mjSolverStat_ solver1213; + public mjSolverStat_ solver1214; + public mjSolverStat_ solver1215; + public mjSolverStat_ solver1216; + public mjSolverStat_ solver1217; + public mjSolverStat_ solver1218; + public mjSolverStat_ solver1219; + public mjSolverStat_ solver1220; + public mjSolverStat_ solver1221; + public mjSolverStat_ solver1222; + public mjSolverStat_ solver1223; + public mjSolverStat_ solver1224; + public mjSolverStat_ solver1225; + public mjSolverStat_ solver1226; + public mjSolverStat_ solver1227; + public mjSolverStat_ solver1228; + public mjSolverStat_ solver1229; + public mjSolverStat_ solver1230; + public mjSolverStat_ solver1231; + public mjSolverStat_ solver1232; + public mjSolverStat_ solver1233; + public mjSolverStat_ solver1234; + public mjSolverStat_ solver1235; + public mjSolverStat_ solver1236; + public mjSolverStat_ solver1237; + public mjSolverStat_ solver1238; + public mjSolverStat_ solver1239; + public mjSolverStat_ solver1240; + public mjSolverStat_ solver1241; + public mjSolverStat_ solver1242; + public mjSolverStat_ solver1243; + public mjSolverStat_ solver1244; + public mjSolverStat_ solver1245; + public mjSolverStat_ solver1246; + public mjSolverStat_ solver1247; + public mjSolverStat_ solver1248; + public mjSolverStat_ solver1249; + public mjSolverStat_ solver1250; + public mjSolverStat_ solver1251; + public mjSolverStat_ solver1252; + public mjSolverStat_ solver1253; + public mjSolverStat_ solver1254; + public mjSolverStat_ solver1255; + public mjSolverStat_ solver1256; + public mjSolverStat_ solver1257; + public mjSolverStat_ solver1258; + public mjSolverStat_ solver1259; + public mjSolverStat_ solver1260; + public mjSolverStat_ solver1261; + public mjSolverStat_ solver1262; + public mjSolverStat_ solver1263; + public mjSolverStat_ solver1264; + public mjSolverStat_ solver1265; + public mjSolverStat_ solver1266; + public mjSolverStat_ solver1267; + public mjSolverStat_ solver1268; + public mjSolverStat_ solver1269; + public mjSolverStat_ solver1270; + public mjSolverStat_ solver1271; + public mjSolverStat_ solver1272; + public mjSolverStat_ solver1273; + public mjSolverStat_ solver1274; + public mjSolverStat_ solver1275; + public mjSolverStat_ solver1276; + public mjSolverStat_ solver1277; + public mjSolverStat_ solver1278; + public mjSolverStat_ solver1279; + public mjSolverStat_ solver1280; + public mjSolverStat_ solver1281; + public mjSolverStat_ solver1282; + public mjSolverStat_ solver1283; + public mjSolverStat_ solver1284; + public mjSolverStat_ solver1285; + public mjSolverStat_ solver1286; + public mjSolverStat_ solver1287; + public mjSolverStat_ solver1288; + public mjSolverStat_ solver1289; + public mjSolverStat_ solver1290; + public mjSolverStat_ solver1291; + public mjSolverStat_ solver1292; + public mjSolverStat_ solver1293; + public mjSolverStat_ solver1294; + public mjSolverStat_ solver1295; + public mjSolverStat_ solver1296; + public mjSolverStat_ solver1297; + public mjSolverStat_ solver1298; + public mjSolverStat_ solver1299; + public mjSolverStat_ solver1300; + public mjSolverStat_ solver1301; + public mjSolverStat_ solver1302; + public mjSolverStat_ solver1303; + public mjSolverStat_ solver1304; + public mjSolverStat_ solver1305; + public mjSolverStat_ solver1306; + public mjSolverStat_ solver1307; + public mjSolverStat_ solver1308; + public mjSolverStat_ solver1309; + public mjSolverStat_ solver1310; + public mjSolverStat_ solver1311; + public mjSolverStat_ solver1312; + public mjSolverStat_ solver1313; + public mjSolverStat_ solver1314; + public mjSolverStat_ solver1315; + public mjSolverStat_ solver1316; + public mjSolverStat_ solver1317; + public mjSolverStat_ solver1318; + public mjSolverStat_ solver1319; + public mjSolverStat_ solver1320; + public mjSolverStat_ solver1321; + public mjSolverStat_ solver1322; + public mjSolverStat_ solver1323; + public mjSolverStat_ solver1324; + public mjSolverStat_ solver1325; + public mjSolverStat_ solver1326; + public mjSolverStat_ solver1327; + public mjSolverStat_ solver1328; + public mjSolverStat_ solver1329; + public mjSolverStat_ solver1330; + public mjSolverStat_ solver1331; + public mjSolverStat_ solver1332; + public mjSolverStat_ solver1333; + public mjSolverStat_ solver1334; + public mjSolverStat_ solver1335; + public mjSolverStat_ solver1336; + public mjSolverStat_ solver1337; + public mjSolverStat_ solver1338; + public mjSolverStat_ solver1339; + public mjSolverStat_ solver1340; + public mjSolverStat_ solver1341; + public mjSolverStat_ solver1342; + public mjSolverStat_ solver1343; + public mjSolverStat_ solver1344; + public mjSolverStat_ solver1345; + public mjSolverStat_ solver1346; + public mjSolverStat_ solver1347; + public mjSolverStat_ solver1348; + public mjSolverStat_ solver1349; + public mjSolverStat_ solver1350; + public mjSolverStat_ solver1351; + public mjSolverStat_ solver1352; + public mjSolverStat_ solver1353; + public mjSolverStat_ solver1354; + public mjSolverStat_ solver1355; + public mjSolverStat_ solver1356; + public mjSolverStat_ solver1357; + public mjSolverStat_ solver1358; + public mjSolverStat_ solver1359; + public mjSolverStat_ solver1360; + public mjSolverStat_ solver1361; + public mjSolverStat_ solver1362; + public mjSolverStat_ solver1363; + public mjSolverStat_ solver1364; + public mjSolverStat_ solver1365; + public mjSolverStat_ solver1366; + public mjSolverStat_ solver1367; + public mjSolverStat_ solver1368; + public mjSolverStat_ solver1369; + public mjSolverStat_ solver1370; + public mjSolverStat_ solver1371; + public mjSolverStat_ solver1372; + public mjSolverStat_ solver1373; + public mjSolverStat_ solver1374; + public mjSolverStat_ solver1375; + public mjSolverStat_ solver1376; + public mjSolverStat_ solver1377; + public mjSolverStat_ solver1378; + public mjSolverStat_ solver1379; + public mjSolverStat_ solver1380; + public mjSolverStat_ solver1381; + public mjSolverStat_ solver1382; + public mjSolverStat_ solver1383; + public mjSolverStat_ solver1384; + public mjSolverStat_ solver1385; + public mjSolverStat_ solver1386; + public mjSolverStat_ solver1387; + public mjSolverStat_ solver1388; + public mjSolverStat_ solver1389; + public mjSolverStat_ solver1390; + public mjSolverStat_ solver1391; + public mjSolverStat_ solver1392; + public mjSolverStat_ solver1393; + public mjSolverStat_ solver1394; + public mjSolverStat_ solver1395; + public mjSolverStat_ solver1396; + public mjSolverStat_ solver1397; + public mjSolverStat_ solver1398; + public mjSolverStat_ solver1399; + public mjSolverStat_ solver1400; + public mjSolverStat_ solver1401; + public mjSolverStat_ solver1402; + public mjSolverStat_ solver1403; + public mjSolverStat_ solver1404; + public mjSolverStat_ solver1405; + public mjSolverStat_ solver1406; + public mjSolverStat_ solver1407; + public mjSolverStat_ solver1408; + public mjSolverStat_ solver1409; + public mjSolverStat_ solver1410; + public mjSolverStat_ solver1411; + public mjSolverStat_ solver1412; + public mjSolverStat_ solver1413; + public mjSolverStat_ solver1414; + public mjSolverStat_ solver1415; + public mjSolverStat_ solver1416; + public mjSolverStat_ solver1417; + public mjSolverStat_ solver1418; + public mjSolverStat_ solver1419; + public mjSolverStat_ solver1420; + public mjSolverStat_ solver1421; + public mjSolverStat_ solver1422; + public mjSolverStat_ solver1423; + public mjSolverStat_ solver1424; + public mjSolverStat_ solver1425; + public mjSolverStat_ solver1426; + public mjSolverStat_ solver1427; + public mjSolverStat_ solver1428; + public mjSolverStat_ solver1429; + public mjSolverStat_ solver1430; + public mjSolverStat_ solver1431; + public mjSolverStat_ solver1432; + public mjSolverStat_ solver1433; + public mjSolverStat_ solver1434; + public mjSolverStat_ solver1435; + public mjSolverStat_ solver1436; + public mjSolverStat_ solver1437; + public mjSolverStat_ solver1438; + public mjSolverStat_ solver1439; + public mjSolverStat_ solver1440; + public mjSolverStat_ solver1441; + public mjSolverStat_ solver1442; + public mjSolverStat_ solver1443; + public mjSolverStat_ solver1444; + public mjSolverStat_ solver1445; + public mjSolverStat_ solver1446; + public mjSolverStat_ solver1447; + public mjSolverStat_ solver1448; + public mjSolverStat_ solver1449; + public mjSolverStat_ solver1450; + public mjSolverStat_ solver1451; + public mjSolverStat_ solver1452; + public mjSolverStat_ solver1453; + public mjSolverStat_ solver1454; + public mjSolverStat_ solver1455; + public mjSolverStat_ solver1456; + public mjSolverStat_ solver1457; + public mjSolverStat_ solver1458; + public mjSolverStat_ solver1459; + public mjSolverStat_ solver1460; + public mjSolverStat_ solver1461; + public mjSolverStat_ solver1462; + public mjSolverStat_ solver1463; + public mjSolverStat_ solver1464; + public mjSolverStat_ solver1465; + public mjSolverStat_ solver1466; + public mjSolverStat_ solver1467; + public mjSolverStat_ solver1468; + public mjSolverStat_ solver1469; + public mjSolverStat_ solver1470; + public mjSolverStat_ solver1471; + public mjSolverStat_ solver1472; + public mjSolverStat_ solver1473; + public mjSolverStat_ solver1474; + public mjSolverStat_ solver1475; + public mjSolverStat_ solver1476; + public mjSolverStat_ solver1477; + public mjSolverStat_ solver1478; + public mjSolverStat_ solver1479; + public mjSolverStat_ solver1480; + public mjSolverStat_ solver1481; + public mjSolverStat_ solver1482; + public mjSolverStat_ solver1483; + public mjSolverStat_ solver1484; + public mjSolverStat_ solver1485; + public mjSolverStat_ solver1486; + public mjSolverStat_ solver1487; + public mjSolverStat_ solver1488; + public mjSolverStat_ solver1489; + public mjSolverStat_ solver1490; + public mjSolverStat_ solver1491; + public mjSolverStat_ solver1492; + public mjSolverStat_ solver1493; + public mjSolverStat_ solver1494; + public mjSolverStat_ solver1495; + public mjSolverStat_ solver1496; + public mjSolverStat_ solver1497; + public mjSolverStat_ solver1498; + public mjSolverStat_ solver1499; + public mjSolverStat_ solver1500; + public mjSolverStat_ solver1501; + public mjSolverStat_ solver1502; + public mjSolverStat_ solver1503; + public mjSolverStat_ solver1504; + public mjSolverStat_ solver1505; + public mjSolverStat_ solver1506; + public mjSolverStat_ solver1507; + public mjSolverStat_ solver1508; + public mjSolverStat_ solver1509; + public mjSolverStat_ solver1510; + public mjSolverStat_ solver1511; + public mjSolverStat_ solver1512; + public mjSolverStat_ solver1513; + public mjSolverStat_ solver1514; + public mjSolverStat_ solver1515; + public mjSolverStat_ solver1516; + public mjSolverStat_ solver1517; + public mjSolverStat_ solver1518; + public mjSolverStat_ solver1519; + public mjSolverStat_ solver1520; + public mjSolverStat_ solver1521; + public mjSolverStat_ solver1522; + public mjSolverStat_ solver1523; + public mjSolverStat_ solver1524; + public mjSolverStat_ solver1525; + public mjSolverStat_ solver1526; + public mjSolverStat_ solver1527; + public mjSolverStat_ solver1528; + public mjSolverStat_ solver1529; + public mjSolverStat_ solver1530; + public mjSolverStat_ solver1531; + public mjSolverStat_ solver1532; + public mjSolverStat_ solver1533; + public mjSolverStat_ solver1534; + public mjSolverStat_ solver1535; + public mjSolverStat_ solver1536; + public mjSolverStat_ solver1537; + public mjSolverStat_ solver1538; + public mjSolverStat_ solver1539; + public mjSolverStat_ solver1540; + public mjSolverStat_ solver1541; + public mjSolverStat_ solver1542; + public mjSolverStat_ solver1543; + public mjSolverStat_ solver1544; + public mjSolverStat_ solver1545; + public mjSolverStat_ solver1546; + public mjSolverStat_ solver1547; + public mjSolverStat_ solver1548; + public mjSolverStat_ solver1549; + public mjSolverStat_ solver1550; + public mjSolverStat_ solver1551; + public mjSolverStat_ solver1552; + public mjSolverStat_ solver1553; + public mjSolverStat_ solver1554; + public mjSolverStat_ solver1555; + public mjSolverStat_ solver1556; + public mjSolverStat_ solver1557; + public mjSolverStat_ solver1558; + public mjSolverStat_ solver1559; + public mjSolverStat_ solver1560; + public mjSolverStat_ solver1561; + public mjSolverStat_ solver1562; + public mjSolverStat_ solver1563; + public mjSolverStat_ solver1564; + public mjSolverStat_ solver1565; + public mjSolverStat_ solver1566; + public mjSolverStat_ solver1567; + public mjSolverStat_ solver1568; + public mjSolverStat_ solver1569; + public mjSolverStat_ solver1570; + public mjSolverStat_ solver1571; + public mjSolverStat_ solver1572; + public mjSolverStat_ solver1573; + public mjSolverStat_ solver1574; + public mjSolverStat_ solver1575; + public mjSolverStat_ solver1576; + public mjSolverStat_ solver1577; + public mjSolverStat_ solver1578; + public mjSolverStat_ solver1579; + public mjSolverStat_ solver1580; + public mjSolverStat_ solver1581; + public mjSolverStat_ solver1582; + public mjSolverStat_ solver1583; + public mjSolverStat_ solver1584; + public mjSolverStat_ solver1585; + public mjSolverStat_ solver1586; + public mjSolverStat_ solver1587; + public mjSolverStat_ solver1588; + public mjSolverStat_ solver1589; + public mjSolverStat_ solver1590; + public mjSolverStat_ solver1591; + public mjSolverStat_ solver1592; + public mjSolverStat_ solver1593; + public mjSolverStat_ solver1594; + public mjSolverStat_ solver1595; + public mjSolverStat_ solver1596; + public mjSolverStat_ solver1597; + public mjSolverStat_ solver1598; + public mjSolverStat_ solver1599; + public mjSolverStat_ solver1600; + public mjSolverStat_ solver1601; + public mjSolverStat_ solver1602; + public mjSolverStat_ solver1603; + public mjSolverStat_ solver1604; + public mjSolverStat_ solver1605; + public mjSolverStat_ solver1606; + public mjSolverStat_ solver1607; + public mjSolverStat_ solver1608; + public mjSolverStat_ solver1609; + public mjSolverStat_ solver1610; + public mjSolverStat_ solver1611; + public mjSolverStat_ solver1612; + public mjSolverStat_ solver1613; + public mjSolverStat_ solver1614; + public mjSolverStat_ solver1615; + public mjSolverStat_ solver1616; + public mjSolverStat_ solver1617; + public mjSolverStat_ solver1618; + public mjSolverStat_ solver1619; + public mjSolverStat_ solver1620; + public mjSolverStat_ solver1621; + public mjSolverStat_ solver1622; + public mjSolverStat_ solver1623; + public mjSolverStat_ solver1624; + public mjSolverStat_ solver1625; + public mjSolverStat_ solver1626; + public mjSolverStat_ solver1627; + public mjSolverStat_ solver1628; + public mjSolverStat_ solver1629; + public mjSolverStat_ solver1630; + public mjSolverStat_ solver1631; + public mjSolverStat_ solver1632; + public mjSolverStat_ solver1633; + public mjSolverStat_ solver1634; + public mjSolverStat_ solver1635; + public mjSolverStat_ solver1636; + public mjSolverStat_ solver1637; + public mjSolverStat_ solver1638; + public mjSolverStat_ solver1639; + public mjSolverStat_ solver1640; + public mjSolverStat_ solver1641; + public mjSolverStat_ solver1642; + public mjSolverStat_ solver1643; + public mjSolverStat_ solver1644; + public mjSolverStat_ solver1645; + public mjSolverStat_ solver1646; + public mjSolverStat_ solver1647; + public mjSolverStat_ solver1648; + public mjSolverStat_ solver1649; + public mjSolverStat_ solver1650; + public mjSolverStat_ solver1651; + public mjSolverStat_ solver1652; + public mjSolverStat_ solver1653; + public mjSolverStat_ solver1654; + public mjSolverStat_ solver1655; + public mjSolverStat_ solver1656; + public mjSolverStat_ solver1657; + public mjSolverStat_ solver1658; + public mjSolverStat_ solver1659; + public mjSolverStat_ solver1660; + public mjSolverStat_ solver1661; + public mjSolverStat_ solver1662; + public mjSolverStat_ solver1663; + public mjSolverStat_ solver1664; + public mjSolverStat_ solver1665; + public mjSolverStat_ solver1666; + public mjSolverStat_ solver1667; + public mjSolverStat_ solver1668; + public mjSolverStat_ solver1669; + public mjSolverStat_ solver1670; + public mjSolverStat_ solver1671; + public mjSolverStat_ solver1672; + public mjSolverStat_ solver1673; + public mjSolverStat_ solver1674; + public mjSolverStat_ solver1675; + public mjSolverStat_ solver1676; + public mjSolverStat_ solver1677; + public mjSolverStat_ solver1678; + public mjSolverStat_ solver1679; + public mjSolverStat_ solver1680; + public mjSolverStat_ solver1681; + public mjSolverStat_ solver1682; + public mjSolverStat_ solver1683; + public mjSolverStat_ solver1684; + public mjSolverStat_ solver1685; + public mjSolverStat_ solver1686; + public mjSolverStat_ solver1687; + public mjSolverStat_ solver1688; + public mjSolverStat_ solver1689; + public mjSolverStat_ solver1690; + public mjSolverStat_ solver1691; + public mjSolverStat_ solver1692; + public mjSolverStat_ solver1693; + public mjSolverStat_ solver1694; + public mjSolverStat_ solver1695; + public mjSolverStat_ solver1696; + public mjSolverStat_ solver1697; + public mjSolverStat_ solver1698; + public mjSolverStat_ solver1699; + public mjSolverStat_ solver1700; + public mjSolverStat_ solver1701; + public mjSolverStat_ solver1702; + public mjSolverStat_ solver1703; + public mjSolverStat_ solver1704; + public mjSolverStat_ solver1705; + public mjSolverStat_ solver1706; + public mjSolverStat_ solver1707; + public mjSolverStat_ solver1708; + public mjSolverStat_ solver1709; + public mjSolverStat_ solver1710; + public mjSolverStat_ solver1711; + public mjSolverStat_ solver1712; + public mjSolverStat_ solver1713; + public mjSolverStat_ solver1714; + public mjSolverStat_ solver1715; + public mjSolverStat_ solver1716; + public mjSolverStat_ solver1717; + public mjSolverStat_ solver1718; + public mjSolverStat_ solver1719; + public mjSolverStat_ solver1720; + public mjSolverStat_ solver1721; + public mjSolverStat_ solver1722; + public mjSolverStat_ solver1723; + public mjSolverStat_ solver1724; + public mjSolverStat_ solver1725; + public mjSolverStat_ solver1726; + public mjSolverStat_ solver1727; + public mjSolverStat_ solver1728; + public mjSolverStat_ solver1729; + public mjSolverStat_ solver1730; + public mjSolverStat_ solver1731; + public mjSolverStat_ solver1732; + public mjSolverStat_ solver1733; + public mjSolverStat_ solver1734; + public mjSolverStat_ solver1735; + public mjSolverStat_ solver1736; + public mjSolverStat_ solver1737; + public mjSolverStat_ solver1738; + public mjSolverStat_ solver1739; + public mjSolverStat_ solver1740; + public mjSolverStat_ solver1741; + public mjSolverStat_ solver1742; + public mjSolverStat_ solver1743; + public mjSolverStat_ solver1744; + public mjSolverStat_ solver1745; + public mjSolverStat_ solver1746; + public mjSolverStat_ solver1747; + public mjSolverStat_ solver1748; + public mjSolverStat_ solver1749; + public mjSolverStat_ solver1750; + public mjSolverStat_ solver1751; + public mjSolverStat_ solver1752; + public mjSolverStat_ solver1753; + public mjSolverStat_ solver1754; + public mjSolverStat_ solver1755; + public mjSolverStat_ solver1756; + public mjSolverStat_ solver1757; + public mjSolverStat_ solver1758; + public mjSolverStat_ solver1759; + public mjSolverStat_ solver1760; + public mjSolverStat_ solver1761; + public mjSolverStat_ solver1762; + public mjSolverStat_ solver1763; + public mjSolverStat_ solver1764; + public mjSolverStat_ solver1765; + public mjSolverStat_ solver1766; + public mjSolverStat_ solver1767; + public mjSolverStat_ solver1768; + public mjSolverStat_ solver1769; + public mjSolverStat_ solver1770; + public mjSolverStat_ solver1771; + public mjSolverStat_ solver1772; + public mjSolverStat_ solver1773; + public mjSolverStat_ solver1774; + public mjSolverStat_ solver1775; + public mjSolverStat_ solver1776; + public mjSolverStat_ solver1777; + public mjSolverStat_ solver1778; + public mjSolverStat_ solver1779; + public mjSolverStat_ solver1780; + public mjSolverStat_ solver1781; + public mjSolverStat_ solver1782; + public mjSolverStat_ solver1783; + public mjSolverStat_ solver1784; + public mjSolverStat_ solver1785; + public mjSolverStat_ solver1786; + public mjSolverStat_ solver1787; + public mjSolverStat_ solver1788; + public mjSolverStat_ solver1789; + public mjSolverStat_ solver1790; + public mjSolverStat_ solver1791; + public mjSolverStat_ solver1792; + public mjSolverStat_ solver1793; + public mjSolverStat_ solver1794; + public mjSolverStat_ solver1795; + public mjSolverStat_ solver1796; + public mjSolverStat_ solver1797; + public mjSolverStat_ solver1798; + public mjSolverStat_ solver1799; + public mjSolverStat_ solver1800; + public mjSolverStat_ solver1801; + public mjSolverStat_ solver1802; + public mjSolverStat_ solver1803; + public mjSolverStat_ solver1804; + public mjSolverStat_ solver1805; + public mjSolverStat_ solver1806; + public mjSolverStat_ solver1807; + public mjSolverStat_ solver1808; + public mjSolverStat_ solver1809; + public mjSolverStat_ solver1810; + public mjSolverStat_ solver1811; + public mjSolverStat_ solver1812; + public mjSolverStat_ solver1813; + public mjSolverStat_ solver1814; + public mjSolverStat_ solver1815; + public mjSolverStat_ solver1816; + public mjSolverStat_ solver1817; + public mjSolverStat_ solver1818; + public mjSolverStat_ solver1819; + public mjSolverStat_ solver1820; + public mjSolverStat_ solver1821; + public mjSolverStat_ solver1822; + public mjSolverStat_ solver1823; + public mjSolverStat_ solver1824; + public mjSolverStat_ solver1825; + public mjSolverStat_ solver1826; + public mjSolverStat_ solver1827; + public mjSolverStat_ solver1828; + public mjSolverStat_ solver1829; + public mjSolverStat_ solver1830; + public mjSolverStat_ solver1831; + public mjSolverStat_ solver1832; + public mjSolverStat_ solver1833; + public mjSolverStat_ solver1834; + public mjSolverStat_ solver1835; + public mjSolverStat_ solver1836; + public mjSolverStat_ solver1837; + public mjSolverStat_ solver1838; + public mjSolverStat_ solver1839; + public mjSolverStat_ solver1840; + public mjSolverStat_ solver1841; + public mjSolverStat_ solver1842; + public mjSolverStat_ solver1843; + public mjSolverStat_ solver1844; + public mjSolverStat_ solver1845; + public mjSolverStat_ solver1846; + public mjSolverStat_ solver1847; + public mjSolverStat_ solver1848; + public mjSolverStat_ solver1849; + public mjSolverStat_ solver1850; + public mjSolverStat_ solver1851; + public mjSolverStat_ solver1852; + public mjSolverStat_ solver1853; + public mjSolverStat_ solver1854; + public mjSolverStat_ solver1855; + public mjSolverStat_ solver1856; + public mjSolverStat_ solver1857; + public mjSolverStat_ solver1858; + public mjSolverStat_ solver1859; + public mjSolverStat_ solver1860; + public mjSolverStat_ solver1861; + public mjSolverStat_ solver1862; + public mjSolverStat_ solver1863; + public mjSolverStat_ solver1864; + public mjSolverStat_ solver1865; + public mjSolverStat_ solver1866; + public mjSolverStat_ solver1867; + public mjSolverStat_ solver1868; + public mjSolverStat_ solver1869; + public mjSolverStat_ solver1870; + public mjSolverStat_ solver1871; + public mjSolverStat_ solver1872; + public mjSolverStat_ solver1873; + public mjSolverStat_ solver1874; + public mjSolverStat_ solver1875; + public mjSolverStat_ solver1876; + public mjSolverStat_ solver1877; + public mjSolverStat_ solver1878; + public mjSolverStat_ solver1879; + public mjSolverStat_ solver1880; + public mjSolverStat_ solver1881; + public mjSolverStat_ solver1882; + public mjSolverStat_ solver1883; + public mjSolverStat_ solver1884; + public mjSolverStat_ solver1885; + public mjSolverStat_ solver1886; + public mjSolverStat_ solver1887; + public mjSolverStat_ solver1888; + public mjSolverStat_ solver1889; + public mjSolverStat_ solver1890; + public mjSolverStat_ solver1891; + public mjSolverStat_ solver1892; + public mjSolverStat_ solver1893; + public mjSolverStat_ solver1894; + public mjSolverStat_ solver1895; + public mjSolverStat_ solver1896; + public mjSolverStat_ solver1897; + public mjSolverStat_ solver1898; + public mjSolverStat_ solver1899; + public mjSolverStat_ solver1900; + public mjSolverStat_ solver1901; + public mjSolverStat_ solver1902; + public mjSolverStat_ solver1903; + public mjSolverStat_ solver1904; + public mjSolverStat_ solver1905; + public mjSolverStat_ solver1906; + public mjSolverStat_ solver1907; + public mjSolverStat_ solver1908; + public mjSolverStat_ solver1909; + public mjSolverStat_ solver1910; + public mjSolverStat_ solver1911; + public mjSolverStat_ solver1912; + public mjSolverStat_ solver1913; + public mjSolverStat_ solver1914; + public mjSolverStat_ solver1915; + public mjSolverStat_ solver1916; + public mjSolverStat_ solver1917; + public mjSolverStat_ solver1918; + public mjSolverStat_ solver1919; + public mjSolverStat_ solver1920; + public mjSolverStat_ solver1921; + public mjSolverStat_ solver1922; + public mjSolverStat_ solver1923; + public mjSolverStat_ solver1924; + public mjSolverStat_ solver1925; + public mjSolverStat_ solver1926; + public mjSolverStat_ solver1927; + public mjSolverStat_ solver1928; + public mjSolverStat_ solver1929; + public mjSolverStat_ solver1930; + public mjSolverStat_ solver1931; + public mjSolverStat_ solver1932; + public mjSolverStat_ solver1933; + public mjSolverStat_ solver1934; + public mjSolverStat_ solver1935; + public mjSolverStat_ solver1936; + public mjSolverStat_ solver1937; + public mjSolverStat_ solver1938; + public mjSolverStat_ solver1939; + public mjSolverStat_ solver1940; + public mjSolverStat_ solver1941; + public mjSolverStat_ solver1942; + public mjSolverStat_ solver1943; + public mjSolverStat_ solver1944; + public mjSolverStat_ solver1945; + public mjSolverStat_ solver1946; + public mjSolverStat_ solver1947; + public mjSolverStat_ solver1948; + public mjSolverStat_ solver1949; + public mjSolverStat_ solver1950; + public mjSolverStat_ solver1951; + public mjSolverStat_ solver1952; + public mjSolverStat_ solver1953; + public mjSolverStat_ solver1954; + public mjSolverStat_ solver1955; + public mjSolverStat_ solver1956; + public mjSolverStat_ solver1957; + public mjSolverStat_ solver1958; + public mjSolverStat_ solver1959; + public mjSolverStat_ solver1960; + public mjSolverStat_ solver1961; + public mjSolverStat_ solver1962; + public mjSolverStat_ solver1963; + public mjSolverStat_ solver1964; + public mjSolverStat_ solver1965; + public mjSolverStat_ solver1966; + public mjSolverStat_ solver1967; + public mjSolverStat_ solver1968; + public mjSolverStat_ solver1969; + public mjSolverStat_ solver1970; + public mjSolverStat_ solver1971; + public mjSolverStat_ solver1972; + public mjSolverStat_ solver1973; + public mjSolverStat_ solver1974; + public mjSolverStat_ solver1975; + public mjSolverStat_ solver1976; + public mjSolverStat_ solver1977; + public mjSolverStat_ solver1978; + public mjSolverStat_ solver1979; + public mjSolverStat_ solver1980; + public mjSolverStat_ solver1981; + public mjSolverStat_ solver1982; + public mjSolverStat_ solver1983; + public mjSolverStat_ solver1984; + public mjSolverStat_ solver1985; + public mjSolverStat_ solver1986; + public mjSolverStat_ solver1987; + public mjSolverStat_ solver1988; + public mjSolverStat_ solver1989; + public mjSolverStat_ solver1990; + public mjSolverStat_ solver1991; + public mjSolverStat_ solver1992; + public mjSolverStat_ solver1993; + public mjSolverStat_ solver1994; + public mjSolverStat_ solver1995; + public mjSolverStat_ solver1996; + public mjSolverStat_ solver1997; + public mjSolverStat_ solver1998; + public mjSolverStat_ solver1999; + public mjSolverStat_ solver2000; + public mjSolverStat_ solver2001; + public mjSolverStat_ solver2002; + public mjSolverStat_ solver2003; + public mjSolverStat_ solver2004; + public mjSolverStat_ solver2005; + public mjSolverStat_ solver2006; + public mjSolverStat_ solver2007; + public mjSolverStat_ solver2008; + public mjSolverStat_ solver2009; + public mjSolverStat_ solver2010; + public mjSolverStat_ solver2011; + public mjSolverStat_ solver2012; + public mjSolverStat_ solver2013; + public mjSolverStat_ solver2014; + public mjSolverStat_ solver2015; + public mjSolverStat_ solver2016; + public mjSolverStat_ solver2017; + public mjSolverStat_ solver2018; + public mjSolverStat_ solver2019; + public mjSolverStat_ solver2020; + public mjSolverStat_ solver2021; + public mjSolverStat_ solver2022; + public mjSolverStat_ solver2023; + public mjSolverStat_ solver2024; + public mjSolverStat_ solver2025; + public mjSolverStat_ solver2026; + public mjSolverStat_ solver2027; + public mjSolverStat_ solver2028; + public mjSolverStat_ solver2029; + public mjSolverStat_ solver2030; + public mjSolverStat_ solver2031; + public mjSolverStat_ solver2032; + public mjSolverStat_ solver2033; + public mjSolverStat_ solver2034; + public mjSolverStat_ solver2035; + public mjSolverStat_ solver2036; + public mjSolverStat_ solver2037; + public mjSolverStat_ solver2038; + public mjSolverStat_ solver2039; + public mjSolverStat_ solver2040; + public mjSolverStat_ solver2041; + public mjSolverStat_ solver2042; + public mjSolverStat_ solver2043; + public mjSolverStat_ solver2044; + public mjSolverStat_ solver2045; + public mjSolverStat_ solver2046; + public mjSolverStat_ solver2047; + public mjSolverStat_ solver2048; + public mjSolverStat_ solver2049; + public mjSolverStat_ solver2050; + public mjSolverStat_ solver2051; + public mjSolverStat_ solver2052; + public mjSolverStat_ solver2053; + public mjSolverStat_ solver2054; + public mjSolverStat_ solver2055; + public mjSolverStat_ solver2056; + public mjSolverStat_ solver2057; + public mjSolverStat_ solver2058; + public mjSolverStat_ solver2059; + public mjSolverStat_ solver2060; + public mjSolverStat_ solver2061; + public mjSolverStat_ solver2062; + public mjSolverStat_ solver2063; + public mjSolverStat_ solver2064; + public mjSolverStat_ solver2065; + public mjSolverStat_ solver2066; + public mjSolverStat_ solver2067; + public mjSolverStat_ solver2068; + public mjSolverStat_ solver2069; + public mjSolverStat_ solver2070; + public mjSolverStat_ solver2071; + public mjSolverStat_ solver2072; + public mjSolverStat_ solver2073; + public mjSolverStat_ solver2074; + public mjSolverStat_ solver2075; + public mjSolverStat_ solver2076; + public mjSolverStat_ solver2077; + public mjSolverStat_ solver2078; + public mjSolverStat_ solver2079; + public mjSolverStat_ solver2080; + public mjSolverStat_ solver2081; + public mjSolverStat_ solver2082; + public mjSolverStat_ solver2083; + public mjSolverStat_ solver2084; + public mjSolverStat_ solver2085; + public mjSolverStat_ solver2086; + public mjSolverStat_ solver2087; + public mjSolverStat_ solver2088; + public mjSolverStat_ solver2089; + public mjSolverStat_ solver2090; + public mjSolverStat_ solver2091; + public mjSolverStat_ solver2092; + public mjSolverStat_ solver2093; + public mjSolverStat_ solver2094; + public mjSolverStat_ solver2095; + public mjSolverStat_ solver2096; + public mjSolverStat_ solver2097; + public mjSolverStat_ solver2098; + public mjSolverStat_ solver2099; + public mjSolverStat_ solver2100; + public mjSolverStat_ solver2101; + public mjSolverStat_ solver2102; + public mjSolverStat_ solver2103; + public mjSolverStat_ solver2104; + public mjSolverStat_ solver2105; + public mjSolverStat_ solver2106; + public mjSolverStat_ solver2107; + public mjSolverStat_ solver2108; + public mjSolverStat_ solver2109; + public mjSolverStat_ solver2110; + public mjSolverStat_ solver2111; + public mjSolverStat_ solver2112; + public mjSolverStat_ solver2113; + public mjSolverStat_ solver2114; + public mjSolverStat_ solver2115; + public mjSolverStat_ solver2116; + public mjSolverStat_ solver2117; + public mjSolverStat_ solver2118; + public mjSolverStat_ solver2119; + public mjSolverStat_ solver2120; + public mjSolverStat_ solver2121; + public mjSolverStat_ solver2122; + public mjSolverStat_ solver2123; + public mjSolverStat_ solver2124; + public mjSolverStat_ solver2125; + public mjSolverStat_ solver2126; + public mjSolverStat_ solver2127; + public mjSolverStat_ solver2128; + public mjSolverStat_ solver2129; + public mjSolverStat_ solver2130; + public mjSolverStat_ solver2131; + public mjSolverStat_ solver2132; + public mjSolverStat_ solver2133; + public mjSolverStat_ solver2134; + public mjSolverStat_ solver2135; + public mjSolverStat_ solver2136; + public mjSolverStat_ solver2137; + public mjSolverStat_ solver2138; + public mjSolverStat_ solver2139; + public mjSolverStat_ solver2140; + public mjSolverStat_ solver2141; + public mjSolverStat_ solver2142; + public mjSolverStat_ solver2143; + public mjSolverStat_ solver2144; + public mjSolverStat_ solver2145; + public mjSolverStat_ solver2146; + public mjSolverStat_ solver2147; + public mjSolverStat_ solver2148; + public mjSolverStat_ solver2149; + public mjSolverStat_ solver2150; + public mjSolverStat_ solver2151; + public mjSolverStat_ solver2152; + public mjSolverStat_ solver2153; + public mjSolverStat_ solver2154; + public mjSolverStat_ solver2155; + public mjSolverStat_ solver2156; + public mjSolverStat_ solver2157; + public mjSolverStat_ solver2158; + public mjSolverStat_ solver2159; + public mjSolverStat_ solver2160; + public mjSolverStat_ solver2161; + public mjSolverStat_ solver2162; + public mjSolverStat_ solver2163; + public mjSolverStat_ solver2164; + public mjSolverStat_ solver2165; + public mjSolverStat_ solver2166; + public mjSolverStat_ solver2167; + public mjSolverStat_ solver2168; + public mjSolverStat_ solver2169; + public mjSolverStat_ solver2170; + public mjSolverStat_ solver2171; + public mjSolverStat_ solver2172; + public mjSolverStat_ solver2173; + public mjSolverStat_ solver2174; + public mjSolverStat_ solver2175; + public mjSolverStat_ solver2176; + public mjSolverStat_ solver2177; + public mjSolverStat_ solver2178; + public mjSolverStat_ solver2179; + public mjSolverStat_ solver2180; + public mjSolverStat_ solver2181; + public mjSolverStat_ solver2182; + public mjSolverStat_ solver2183; + public mjSolverStat_ solver2184; + public mjSolverStat_ solver2185; + public mjSolverStat_ solver2186; + public mjSolverStat_ solver2187; + public mjSolverStat_ solver2188; + public mjSolverStat_ solver2189; + public mjSolverStat_ solver2190; + public mjSolverStat_ solver2191; + public mjSolverStat_ solver2192; + public mjSolverStat_ solver2193; + public mjSolverStat_ solver2194; + public mjSolverStat_ solver2195; + public mjSolverStat_ solver2196; + public mjSolverStat_ solver2197; + public mjSolverStat_ solver2198; + public mjSolverStat_ solver2199; + public mjSolverStat_ solver2200; + public mjSolverStat_ solver2201; + public mjSolverStat_ solver2202; + public mjSolverStat_ solver2203; + public mjSolverStat_ solver2204; + public mjSolverStat_ solver2205; + public mjSolverStat_ solver2206; + public mjSolverStat_ solver2207; + public mjSolverStat_ solver2208; + public mjSolverStat_ solver2209; + public mjSolverStat_ solver2210; + public mjSolverStat_ solver2211; + public mjSolverStat_ solver2212; + public mjSolverStat_ solver2213; + public mjSolverStat_ solver2214; + public mjSolverStat_ solver2215; + public mjSolverStat_ solver2216; + public mjSolverStat_ solver2217; + public mjSolverStat_ solver2218; + public mjSolverStat_ solver2219; + public mjSolverStat_ solver2220; + public mjSolverStat_ solver2221; + public mjSolverStat_ solver2222; + public mjSolverStat_ solver2223; + public mjSolverStat_ solver2224; + public mjSolverStat_ solver2225; + public mjSolverStat_ solver2226; + public mjSolverStat_ solver2227; + public mjSolverStat_ solver2228; + public mjSolverStat_ solver2229; + public mjSolverStat_ solver2230; + public mjSolverStat_ solver2231; + public mjSolverStat_ solver2232; + public mjSolverStat_ solver2233; + public mjSolverStat_ solver2234; + public mjSolverStat_ solver2235; + public mjSolverStat_ solver2236; + public mjSolverStat_ solver2237; + public mjSolverStat_ solver2238; + public mjSolverStat_ solver2239; + public mjSolverStat_ solver2240; + public mjSolverStat_ solver2241; + public mjSolverStat_ solver2242; + public mjSolverStat_ solver2243; + public mjSolverStat_ solver2244; + public mjSolverStat_ solver2245; + public mjSolverStat_ solver2246; + public mjSolverStat_ solver2247; + public mjSolverStat_ solver2248; + public mjSolverStat_ solver2249; + public mjSolverStat_ solver2250; + public mjSolverStat_ solver2251; + public mjSolverStat_ solver2252; + public mjSolverStat_ solver2253; + public mjSolverStat_ solver2254; + public mjSolverStat_ solver2255; + public mjSolverStat_ solver2256; + public mjSolverStat_ solver2257; + public mjSolverStat_ solver2258; + public mjSolverStat_ solver2259; + public mjSolverStat_ solver2260; + public mjSolverStat_ solver2261; + public mjSolverStat_ solver2262; + public mjSolverStat_ solver2263; + public mjSolverStat_ solver2264; + public mjSolverStat_ solver2265; + public mjSolverStat_ solver2266; + public mjSolverStat_ solver2267; + public mjSolverStat_ solver2268; + public mjSolverStat_ solver2269; + public mjSolverStat_ solver2270; + public mjSolverStat_ solver2271; + public mjSolverStat_ solver2272; + public mjSolverStat_ solver2273; + public mjSolverStat_ solver2274; + public mjSolverStat_ solver2275; + public mjSolverStat_ solver2276; + public mjSolverStat_ solver2277; + public mjSolverStat_ solver2278; + public mjSolverStat_ solver2279; + public mjSolverStat_ solver2280; + public mjSolverStat_ solver2281; + public mjSolverStat_ solver2282; + public mjSolverStat_ solver2283; + public mjSolverStat_ solver2284; + public mjSolverStat_ solver2285; + public mjSolverStat_ solver2286; + public mjSolverStat_ solver2287; + public mjSolverStat_ solver2288; + public mjSolverStat_ solver2289; + public mjSolverStat_ solver2290; + public mjSolverStat_ solver2291; + public mjSolverStat_ solver2292; + public mjSolverStat_ solver2293; + public mjSolverStat_ solver2294; + public mjSolverStat_ solver2295; + public mjSolverStat_ solver2296; + public mjSolverStat_ solver2297; + public mjSolverStat_ solver2298; + public mjSolverStat_ solver2299; + public mjSolverStat_ solver2300; + public mjSolverStat_ solver2301; + public mjSolverStat_ solver2302; + public mjSolverStat_ solver2303; + public mjSolverStat_ solver2304; + public mjSolverStat_ solver2305; + public mjSolverStat_ solver2306; + public mjSolverStat_ solver2307; + public mjSolverStat_ solver2308; + public mjSolverStat_ solver2309; + public mjSolverStat_ solver2310; + public mjSolverStat_ solver2311; + public mjSolverStat_ solver2312; + public mjSolverStat_ solver2313; + public mjSolverStat_ solver2314; + public mjSolverStat_ solver2315; + public mjSolverStat_ solver2316; + public mjSolverStat_ solver2317; + public mjSolverStat_ solver2318; + public mjSolverStat_ solver2319; + public mjSolverStat_ solver2320; + public mjSolverStat_ solver2321; + public mjSolverStat_ solver2322; + public mjSolverStat_ solver2323; + public mjSolverStat_ solver2324; + public mjSolverStat_ solver2325; + public mjSolverStat_ solver2326; + public mjSolverStat_ solver2327; + public mjSolverStat_ solver2328; + public mjSolverStat_ solver2329; + public mjSolverStat_ solver2330; + public mjSolverStat_ solver2331; + public mjSolverStat_ solver2332; + public mjSolverStat_ solver2333; + public mjSolverStat_ solver2334; + public mjSolverStat_ solver2335; + public mjSolverStat_ solver2336; + public mjSolverStat_ solver2337; + public mjSolverStat_ solver2338; + public mjSolverStat_ solver2339; + public mjSolverStat_ solver2340; + public mjSolverStat_ solver2341; + public mjSolverStat_ solver2342; + public mjSolverStat_ solver2343; + public mjSolverStat_ solver2344; + public mjSolverStat_ solver2345; + public mjSolverStat_ solver2346; + public mjSolverStat_ solver2347; + public mjSolverStat_ solver2348; + public mjSolverStat_ solver2349; + public mjSolverStat_ solver2350; + public mjSolverStat_ solver2351; + public mjSolverStat_ solver2352; + public mjSolverStat_ solver2353; + public mjSolverStat_ solver2354; + public mjSolverStat_ solver2355; + public mjSolverStat_ solver2356; + public mjSolverStat_ solver2357; + public mjSolverStat_ solver2358; + public mjSolverStat_ solver2359; + public mjSolverStat_ solver2360; + public mjSolverStat_ solver2361; + public mjSolverStat_ solver2362; + public mjSolverStat_ solver2363; + public mjSolverStat_ solver2364; + public mjSolverStat_ solver2365; + public mjSolverStat_ solver2366; + public mjSolverStat_ solver2367; + public mjSolverStat_ solver2368; + public mjSolverStat_ solver2369; + public mjSolverStat_ solver2370; + public mjSolverStat_ solver2371; + public mjSolverStat_ solver2372; + public mjSolverStat_ solver2373; + public mjSolverStat_ solver2374; + public mjSolverStat_ solver2375; + public mjSolverStat_ solver2376; + public mjSolverStat_ solver2377; + public mjSolverStat_ solver2378; + public mjSolverStat_ solver2379; + public mjSolverStat_ solver2380; + public mjSolverStat_ solver2381; + public mjSolverStat_ solver2382; + public mjSolverStat_ solver2383; + public mjSolverStat_ solver2384; + public mjSolverStat_ solver2385; + public mjSolverStat_ solver2386; + public mjSolverStat_ solver2387; + public mjSolverStat_ solver2388; + public mjSolverStat_ solver2389; + public mjSolverStat_ solver2390; + public mjSolverStat_ solver2391; + public mjSolverStat_ solver2392; + public mjSolverStat_ solver2393; + public mjSolverStat_ solver2394; + public mjSolverStat_ solver2395; + public mjSolverStat_ solver2396; + public mjSolverStat_ solver2397; + public mjSolverStat_ solver2398; + public mjSolverStat_ solver2399; + public mjSolverStat_ solver2400; + public mjSolverStat_ solver2401; + public mjSolverStat_ solver2402; + public mjSolverStat_ solver2403; + public mjSolverStat_ solver2404; + public mjSolverStat_ solver2405; + public mjSolverStat_ solver2406; + public mjSolverStat_ solver2407; + public mjSolverStat_ solver2408; + public mjSolverStat_ solver2409; + public mjSolverStat_ solver2410; + public mjSolverStat_ solver2411; + public mjSolverStat_ solver2412; + public mjSolverStat_ solver2413; + public mjSolverStat_ solver2414; + public mjSolverStat_ solver2415; + public mjSolverStat_ solver2416; + public mjSolverStat_ solver2417; + public mjSolverStat_ solver2418; + public mjSolverStat_ solver2419; + public mjSolverStat_ solver2420; + public mjSolverStat_ solver2421; + public mjSolverStat_ solver2422; + public mjSolverStat_ solver2423; + public mjSolverStat_ solver2424; + public mjSolverStat_ solver2425; + public mjSolverStat_ solver2426; + public mjSolverStat_ solver2427; + public mjSolverStat_ solver2428; + public mjSolverStat_ solver2429; + public mjSolverStat_ solver2430; + public mjSolverStat_ solver2431; + public mjSolverStat_ solver2432; + public mjSolverStat_ solver2433; + public mjSolverStat_ solver2434; + public mjSolverStat_ solver2435; + public mjSolverStat_ solver2436; + public mjSolverStat_ solver2437; + public mjSolverStat_ solver2438; + public mjSolverStat_ solver2439; + public mjSolverStat_ solver2440; + public mjSolverStat_ solver2441; + public mjSolverStat_ solver2442; + public mjSolverStat_ solver2443; + public mjSolverStat_ solver2444; + public mjSolverStat_ solver2445; + public mjSolverStat_ solver2446; + public mjSolverStat_ solver2447; + public mjSolverStat_ solver2448; + public mjSolverStat_ solver2449; + public mjSolverStat_ solver2450; + public mjSolverStat_ solver2451; + public mjSolverStat_ solver2452; + public mjSolverStat_ solver2453; + public mjSolverStat_ solver2454; + public mjSolverStat_ solver2455; + public mjSolverStat_ solver2456; + public mjSolverStat_ solver2457; + public mjSolverStat_ solver2458; + public mjSolverStat_ solver2459; + public mjSolverStat_ solver2460; + public mjSolverStat_ solver2461; + public mjSolverStat_ solver2462; + public mjSolverStat_ solver2463; + public mjSolverStat_ solver2464; + public mjSolverStat_ solver2465; + public mjSolverStat_ solver2466; + public mjSolverStat_ solver2467; + public mjSolverStat_ solver2468; + public mjSolverStat_ solver2469; + public mjSolverStat_ solver2470; + public mjSolverStat_ solver2471; + public mjSolverStat_ solver2472; + public mjSolverStat_ solver2473; + public mjSolverStat_ solver2474; + public mjSolverStat_ solver2475; + public mjSolverStat_ solver2476; + public mjSolverStat_ solver2477; + public mjSolverStat_ solver2478; + public mjSolverStat_ solver2479; + public mjSolverStat_ solver2480; + public mjSolverStat_ solver2481; + public mjSolverStat_ solver2482; + public mjSolverStat_ solver2483; + public mjSolverStat_ solver2484; + public mjSolverStat_ solver2485; + public mjSolverStat_ solver2486; + public mjSolverStat_ solver2487; + public mjSolverStat_ solver2488; + public mjSolverStat_ solver2489; + public mjSolverStat_ solver2490; + public mjSolverStat_ solver2491; + public mjSolverStat_ solver2492; + public mjSolverStat_ solver2493; + public mjSolverStat_ solver2494; + public mjSolverStat_ solver2495; + public mjSolverStat_ solver2496; + public mjSolverStat_ solver2497; + public mjSolverStat_ solver2498; + public mjSolverStat_ solver2499; + public mjSolverStat_ solver2500; + public mjSolverStat_ solver2501; + public mjSolverStat_ solver2502; + public mjSolverStat_ solver2503; + public mjSolverStat_ solver2504; + public mjSolverStat_ solver2505; + public mjSolverStat_ solver2506; + public mjSolverStat_ solver2507; + public mjSolverStat_ solver2508; + public mjSolverStat_ solver2509; + public mjSolverStat_ solver2510; + public mjSolverStat_ solver2511; + public mjSolverStat_ solver2512; + public mjSolverStat_ solver2513; + public mjSolverStat_ solver2514; + public mjSolverStat_ solver2515; + public mjSolverStat_ solver2516; + public mjSolverStat_ solver2517; + public mjSolverStat_ solver2518; + public mjSolverStat_ solver2519; + public mjSolverStat_ solver2520; + public mjSolverStat_ solver2521; + public mjSolverStat_ solver2522; + public mjSolverStat_ solver2523; + public mjSolverStat_ solver2524; + public mjSolverStat_ solver2525; + public mjSolverStat_ solver2526; + public mjSolverStat_ solver2527; + public mjSolverStat_ solver2528; + public mjSolverStat_ solver2529; + public mjSolverStat_ solver2530; + public mjSolverStat_ solver2531; + public mjSolverStat_ solver2532; + public mjSolverStat_ solver2533; + public mjSolverStat_ solver2534; + public mjSolverStat_ solver2535; + public mjSolverStat_ solver2536; + public mjSolverStat_ solver2537; + public mjSolverStat_ solver2538; + public mjSolverStat_ solver2539; + public mjSolverStat_ solver2540; + public mjSolverStat_ solver2541; + public mjSolverStat_ solver2542; + public mjSolverStat_ solver2543; + public mjSolverStat_ solver2544; + public mjSolverStat_ solver2545; + public mjSolverStat_ solver2546; + public mjSolverStat_ solver2547; + public mjSolverStat_ solver2548; + public mjSolverStat_ solver2549; + public mjSolverStat_ solver2550; + public mjSolverStat_ solver2551; + public mjSolverStat_ solver2552; + public mjSolverStat_ solver2553; + public mjSolverStat_ solver2554; + public mjSolverStat_ solver2555; + public mjSolverStat_ solver2556; + public mjSolverStat_ solver2557; + public mjSolverStat_ solver2558; + public mjSolverStat_ solver2559; + public mjSolverStat_ solver2560; + public mjSolverStat_ solver2561; + public mjSolverStat_ solver2562; + public mjSolverStat_ solver2563; + public mjSolverStat_ solver2564; + public mjSolverStat_ solver2565; + public mjSolverStat_ solver2566; + public mjSolverStat_ solver2567; + public mjSolverStat_ solver2568; + public mjSolverStat_ solver2569; + public mjSolverStat_ solver2570; + public mjSolverStat_ solver2571; + public mjSolverStat_ solver2572; + public mjSolverStat_ solver2573; + public mjSolverStat_ solver2574; + public mjSolverStat_ solver2575; + public mjSolverStat_ solver2576; + public mjSolverStat_ solver2577; + public mjSolverStat_ solver2578; + public mjSolverStat_ solver2579; + public mjSolverStat_ solver2580; + public mjSolverStat_ solver2581; + public mjSolverStat_ solver2582; + public mjSolverStat_ solver2583; + public mjSolverStat_ solver2584; + public mjSolverStat_ solver2585; + public mjSolverStat_ solver2586; + public mjSolverStat_ solver2587; + public mjSolverStat_ solver2588; + public mjSolverStat_ solver2589; + public mjSolverStat_ solver2590; + public mjSolverStat_ solver2591; + public mjSolverStat_ solver2592; + public mjSolverStat_ solver2593; + public mjSolverStat_ solver2594; + public mjSolverStat_ solver2595; + public mjSolverStat_ solver2596; + public mjSolverStat_ solver2597; + public mjSolverStat_ solver2598; + public mjSolverStat_ solver2599; + public mjSolverStat_ solver2600; + public mjSolverStat_ solver2601; + public mjSolverStat_ solver2602; + public mjSolverStat_ solver2603; + public mjSolverStat_ solver2604; + public mjSolverStat_ solver2605; + public mjSolverStat_ solver2606; + public mjSolverStat_ solver2607; + public mjSolverStat_ solver2608; + public mjSolverStat_ solver2609; + public mjSolverStat_ solver2610; + public mjSolverStat_ solver2611; + public mjSolverStat_ solver2612; + public mjSolverStat_ solver2613; + public mjSolverStat_ solver2614; + public mjSolverStat_ solver2615; + public mjSolverStat_ solver2616; + public mjSolverStat_ solver2617; + public mjSolverStat_ solver2618; + public mjSolverStat_ solver2619; + public mjSolverStat_ solver2620; + public mjSolverStat_ solver2621; + public mjSolverStat_ solver2622; + public mjSolverStat_ solver2623; + public mjSolverStat_ solver2624; + public mjSolverStat_ solver2625; + public mjSolverStat_ solver2626; + public mjSolverStat_ solver2627; + public mjSolverStat_ solver2628; + public mjSolverStat_ solver2629; + public mjSolverStat_ solver2630; + public mjSolverStat_ solver2631; + public mjSolverStat_ solver2632; + public mjSolverStat_ solver2633; + public mjSolverStat_ solver2634; + public mjSolverStat_ solver2635; + public mjSolverStat_ solver2636; + public mjSolverStat_ solver2637; + public mjSolverStat_ solver2638; + public mjSolverStat_ solver2639; + public mjSolverStat_ solver2640; + public mjSolverStat_ solver2641; + public mjSolverStat_ solver2642; + public mjSolverStat_ solver2643; + public mjSolverStat_ solver2644; + public mjSolverStat_ solver2645; + public mjSolverStat_ solver2646; + public mjSolverStat_ solver2647; + public mjSolverStat_ solver2648; + public mjSolverStat_ solver2649; + public mjSolverStat_ solver2650; + public mjSolverStat_ solver2651; + public mjSolverStat_ solver2652; + public mjSolverStat_ solver2653; + public mjSolverStat_ solver2654; + public mjSolverStat_ solver2655; + public mjSolverStat_ solver2656; + public mjSolverStat_ solver2657; + public mjSolverStat_ solver2658; + public mjSolverStat_ solver2659; + public mjSolverStat_ solver2660; + public mjSolverStat_ solver2661; + public mjSolverStat_ solver2662; + public mjSolverStat_ solver2663; + public mjSolverStat_ solver2664; + public mjSolverStat_ solver2665; + public mjSolverStat_ solver2666; + public mjSolverStat_ solver2667; + public mjSolverStat_ solver2668; + public mjSolverStat_ solver2669; + public mjSolverStat_ solver2670; + public mjSolverStat_ solver2671; + public mjSolverStat_ solver2672; + public mjSolverStat_ solver2673; + public mjSolverStat_ solver2674; + public mjSolverStat_ solver2675; + public mjSolverStat_ solver2676; + public mjSolverStat_ solver2677; + public mjSolverStat_ solver2678; + public mjSolverStat_ solver2679; + public mjSolverStat_ solver2680; + public mjSolverStat_ solver2681; + public mjSolverStat_ solver2682; + public mjSolverStat_ solver2683; + public mjSolverStat_ solver2684; + public mjSolverStat_ solver2685; + public mjSolverStat_ solver2686; + public mjSolverStat_ solver2687; + public mjSolverStat_ solver2688; + public mjSolverStat_ solver2689; + public mjSolverStat_ solver2690; + public mjSolverStat_ solver2691; + public mjSolverStat_ solver2692; + public mjSolverStat_ solver2693; + public mjSolverStat_ solver2694; + public mjSolverStat_ solver2695; + public mjSolverStat_ solver2696; + public mjSolverStat_ solver2697; + public mjSolverStat_ solver2698; + public mjSolverStat_ solver2699; + public mjSolverStat_ solver2700; + public mjSolverStat_ solver2701; + public mjSolverStat_ solver2702; + public mjSolverStat_ solver2703; + public mjSolverStat_ solver2704; + public mjSolverStat_ solver2705; + public mjSolverStat_ solver2706; + public mjSolverStat_ solver2707; + public mjSolverStat_ solver2708; + public mjSolverStat_ solver2709; + public mjSolverStat_ solver2710; + public mjSolverStat_ solver2711; + public mjSolverStat_ solver2712; + public mjSolverStat_ solver2713; + public mjSolverStat_ solver2714; + public mjSolverStat_ solver2715; + public mjSolverStat_ solver2716; + public mjSolverStat_ solver2717; + public mjSolverStat_ solver2718; + public mjSolverStat_ solver2719; + public mjSolverStat_ solver2720; + public mjSolverStat_ solver2721; + public mjSolverStat_ solver2722; + public mjSolverStat_ solver2723; + public mjSolverStat_ solver2724; + public mjSolverStat_ solver2725; + public mjSolverStat_ solver2726; + public mjSolverStat_ solver2727; + public mjSolverStat_ solver2728; + public mjSolverStat_ solver2729; + public mjSolverStat_ solver2730; + public mjSolverStat_ solver2731; + public mjSolverStat_ solver2732; + public mjSolverStat_ solver2733; + public mjSolverStat_ solver2734; + public mjSolverStat_ solver2735; + public mjSolverStat_ solver2736; + public mjSolverStat_ solver2737; + public mjSolverStat_ solver2738; + public mjSolverStat_ solver2739; + public mjSolverStat_ solver2740; + public mjSolverStat_ solver2741; + public mjSolverStat_ solver2742; + public mjSolverStat_ solver2743; + public mjSolverStat_ solver2744; + public mjSolverStat_ solver2745; + public mjSolverStat_ solver2746; + public mjSolverStat_ solver2747; + public mjSolverStat_ solver2748; + public mjSolverStat_ solver2749; + public mjSolverStat_ solver2750; + public mjSolverStat_ solver2751; + public mjSolverStat_ solver2752; + public mjSolverStat_ solver2753; + public mjSolverStat_ solver2754; + public mjSolverStat_ solver2755; + public mjSolverStat_ solver2756; + public mjSolverStat_ solver2757; + public mjSolverStat_ solver2758; + public mjSolverStat_ solver2759; + public mjSolverStat_ solver2760; + public mjSolverStat_ solver2761; + public mjSolverStat_ solver2762; + public mjSolverStat_ solver2763; + public mjSolverStat_ solver2764; + public mjSolverStat_ solver2765; + public mjSolverStat_ solver2766; + public mjSolverStat_ solver2767; + public mjSolverStat_ solver2768; + public mjSolverStat_ solver2769; + public mjSolverStat_ solver2770; + public mjSolverStat_ solver2771; + public mjSolverStat_ solver2772; + public mjSolverStat_ solver2773; + public mjSolverStat_ solver2774; + public mjSolverStat_ solver2775; + public mjSolverStat_ solver2776; + public mjSolverStat_ solver2777; + public mjSolverStat_ solver2778; + public mjSolverStat_ solver2779; + public mjSolverStat_ solver2780; + public mjSolverStat_ solver2781; + public mjSolverStat_ solver2782; + public mjSolverStat_ solver2783; + public mjSolverStat_ solver2784; + public mjSolverStat_ solver2785; + public mjSolverStat_ solver2786; + public mjSolverStat_ solver2787; + public mjSolverStat_ solver2788; + public mjSolverStat_ solver2789; + public mjSolverStat_ solver2790; + public mjSolverStat_ solver2791; + public mjSolverStat_ solver2792; + public mjSolverStat_ solver2793; + public mjSolverStat_ solver2794; + public mjSolverStat_ solver2795; + public mjSolverStat_ solver2796; + public mjSolverStat_ solver2797; + public mjSolverStat_ solver2798; + public mjSolverStat_ solver2799; + public mjSolverStat_ solver2800; + public mjSolverStat_ solver2801; + public mjSolverStat_ solver2802; + public mjSolverStat_ solver2803; + public mjSolverStat_ solver2804; + public mjSolverStat_ solver2805; + public mjSolverStat_ solver2806; + public mjSolverStat_ solver2807; + public mjSolverStat_ solver2808; + public mjSolverStat_ solver2809; + public mjSolverStat_ solver2810; + public mjSolverStat_ solver2811; + public mjSolverStat_ solver2812; + public mjSolverStat_ solver2813; + public mjSolverStat_ solver2814; + public mjSolverStat_ solver2815; + public mjSolverStat_ solver2816; + public mjSolverStat_ solver2817; + public mjSolverStat_ solver2818; + public mjSolverStat_ solver2819; + public mjSolverStat_ solver2820; + public mjSolverStat_ solver2821; + public mjSolverStat_ solver2822; + public mjSolverStat_ solver2823; + public mjSolverStat_ solver2824; + public mjSolverStat_ solver2825; + public mjSolverStat_ solver2826; + public mjSolverStat_ solver2827; + public mjSolverStat_ solver2828; + public mjSolverStat_ solver2829; + public mjSolverStat_ solver2830; + public mjSolverStat_ solver2831; + public mjSolverStat_ solver2832; + public mjSolverStat_ solver2833; + public mjSolverStat_ solver2834; + public mjSolverStat_ solver2835; + public mjSolverStat_ solver2836; + public mjSolverStat_ solver2837; + public mjSolverStat_ solver2838; + public mjSolverStat_ solver2839; + public mjSolverStat_ solver2840; + public mjSolverStat_ solver2841; + public mjSolverStat_ solver2842; + public mjSolverStat_ solver2843; + public mjSolverStat_ solver2844; + public mjSolverStat_ solver2845; + public mjSolverStat_ solver2846; + public mjSolverStat_ solver2847; + public mjSolverStat_ solver2848; + public mjSolverStat_ solver2849; + public mjSolverStat_ solver2850; + public mjSolverStat_ solver2851; + public mjSolverStat_ solver2852; + public mjSolverStat_ solver2853; + public mjSolverStat_ solver2854; + public mjSolverStat_ solver2855; + public mjSolverStat_ solver2856; + public mjSolverStat_ solver2857; + public mjSolverStat_ solver2858; + public mjSolverStat_ solver2859; + public mjSolverStat_ solver2860; + public mjSolverStat_ solver2861; + public mjSolverStat_ solver2862; + public mjSolverStat_ solver2863; + public mjSolverStat_ solver2864; + public mjSolverStat_ solver2865; + public mjSolverStat_ solver2866; + public mjSolverStat_ solver2867; + public mjSolverStat_ solver2868; + public mjSolverStat_ solver2869; + public mjSolverStat_ solver2870; + public mjSolverStat_ solver2871; + public mjSolverStat_ solver2872; + public mjSolverStat_ solver2873; + public mjSolverStat_ solver2874; + public mjSolverStat_ solver2875; + public mjSolverStat_ solver2876; + public mjSolverStat_ solver2877; + public mjSolverStat_ solver2878; + public mjSolverStat_ solver2879; + public mjSolverStat_ solver2880; + public mjSolverStat_ solver2881; + public mjSolverStat_ solver2882; + public mjSolverStat_ solver2883; + public mjSolverStat_ solver2884; + public mjSolverStat_ solver2885; + public mjSolverStat_ solver2886; + public mjSolverStat_ solver2887; + public mjSolverStat_ solver2888; + public mjSolverStat_ solver2889; + public mjSolverStat_ solver2890; + public mjSolverStat_ solver2891; + public mjSolverStat_ solver2892; + public mjSolverStat_ solver2893; + public mjSolverStat_ solver2894; + public mjSolverStat_ solver2895; + public mjSolverStat_ solver2896; + public mjSolverStat_ solver2897; + public mjSolverStat_ solver2898; + public mjSolverStat_ solver2899; + public mjSolverStat_ solver2900; + public mjSolverStat_ solver2901; + public mjSolverStat_ solver2902; + public mjSolverStat_ solver2903; + public mjSolverStat_ solver2904; + public mjSolverStat_ solver2905; + public mjSolverStat_ solver2906; + public mjSolverStat_ solver2907; + public mjSolverStat_ solver2908; + public mjSolverStat_ solver2909; + public mjSolverStat_ solver2910; + public mjSolverStat_ solver2911; + public mjSolverStat_ solver2912; + public mjSolverStat_ solver2913; + public mjSolverStat_ solver2914; + public mjSolverStat_ solver2915; + public mjSolverStat_ solver2916; + public mjSolverStat_ solver2917; + public mjSolverStat_ solver2918; + public mjSolverStat_ solver2919; + public mjSolverStat_ solver2920; + public mjSolverStat_ solver2921; + public mjSolverStat_ solver2922; + public mjSolverStat_ solver2923; + public mjSolverStat_ solver2924; + public mjSolverStat_ solver2925; + public mjSolverStat_ solver2926; + public mjSolverStat_ solver2927; + public mjSolverStat_ solver2928; + public mjSolverStat_ solver2929; + public mjSolverStat_ solver2930; + public mjSolverStat_ solver2931; + public mjSolverStat_ solver2932; + public mjSolverStat_ solver2933; + public mjSolverStat_ solver2934; + public mjSolverStat_ solver2935; + public mjSolverStat_ solver2936; + public mjSolverStat_ solver2937; + public mjSolverStat_ solver2938; + public mjSolverStat_ solver2939; + public mjSolverStat_ solver2940; + public mjSolverStat_ solver2941; + public mjSolverStat_ solver2942; + public mjSolverStat_ solver2943; + public mjSolverStat_ solver2944; + public mjSolverStat_ solver2945; + public mjSolverStat_ solver2946; + public mjSolverStat_ solver2947; + public mjSolverStat_ solver2948; + public mjSolverStat_ solver2949; + public mjSolverStat_ solver2950; + public mjSolverStat_ solver2951; + public mjSolverStat_ solver2952; + public mjSolverStat_ solver2953; + public mjSolverStat_ solver2954; + public mjSolverStat_ solver2955; + public mjSolverStat_ solver2956; + public mjSolverStat_ solver2957; + public mjSolverStat_ solver2958; + public mjSolverStat_ solver2959; + public mjSolverStat_ solver2960; + public mjSolverStat_ solver2961; + public mjSolverStat_ solver2962; + public mjSolverStat_ solver2963; + public mjSolverStat_ solver2964; + public mjSolverStat_ solver2965; + public mjSolverStat_ solver2966; + public mjSolverStat_ solver2967; + public mjSolverStat_ solver2968; + public mjSolverStat_ solver2969; + public mjSolverStat_ solver2970; + public mjSolverStat_ solver2971; + public mjSolverStat_ solver2972; + public mjSolverStat_ solver2973; + public mjSolverStat_ solver2974; + public mjSolverStat_ solver2975; + public mjSolverStat_ solver2976; + public mjSolverStat_ solver2977; + public mjSolverStat_ solver2978; + public mjSolverStat_ solver2979; + public mjSolverStat_ solver2980; + public mjSolverStat_ solver2981; + public mjSolverStat_ solver2982; + public mjSolverStat_ solver2983; + public mjSolverStat_ solver2984; + public mjSolverStat_ solver2985; + public mjSolverStat_ solver2986; + public mjSolverStat_ solver2987; + public mjSolverStat_ solver2988; + public mjSolverStat_ solver2989; + public mjSolverStat_ solver2990; + public mjSolverStat_ solver2991; + public mjSolverStat_ solver2992; + public mjSolverStat_ solver2993; + public mjSolverStat_ solver2994; + public mjSolverStat_ solver2995; + public mjSolverStat_ solver2996; + public mjSolverStat_ solver2997; + public mjSolverStat_ solver2998; + public mjSolverStat_ solver2999; + public mjSolverStat_ solver3000; + public mjSolverStat_ solver3001; + public mjSolverStat_ solver3002; + public mjSolverStat_ solver3003; + public mjSolverStat_ solver3004; + public mjSolverStat_ solver3005; + public mjSolverStat_ solver3006; + public mjSolverStat_ solver3007; + public mjSolverStat_ solver3008; + public mjSolverStat_ solver3009; + public mjSolverStat_ solver3010; + public mjSolverStat_ solver3011; + public mjSolverStat_ solver3012; + public mjSolverStat_ solver3013; + public mjSolverStat_ solver3014; + public mjSolverStat_ solver3015; + public mjSolverStat_ solver3016; + public mjSolverStat_ solver3017; + public mjSolverStat_ solver3018; + public mjSolverStat_ solver3019; + public mjSolverStat_ solver3020; + public mjSolverStat_ solver3021; + public mjSolverStat_ solver3022; + public mjSolverStat_ solver3023; + public mjSolverStat_ solver3024; + public mjSolverStat_ solver3025; + public mjSolverStat_ solver3026; + public mjSolverStat_ solver3027; + public mjSolverStat_ solver3028; + public mjSolverStat_ solver3029; + public mjSolverStat_ solver3030; + public mjSolverStat_ solver3031; + public mjSolverStat_ solver3032; + public mjSolverStat_ solver3033; + public mjSolverStat_ solver3034; + public mjSolverStat_ solver3035; + public mjSolverStat_ solver3036; + public mjSolverStat_ solver3037; + public mjSolverStat_ solver3038; + public mjSolverStat_ solver3039; + public mjSolverStat_ solver3040; + public mjSolverStat_ solver3041; + public mjSolverStat_ solver3042; + public mjSolverStat_ solver3043; + public mjSolverStat_ solver3044; + public mjSolverStat_ solver3045; + public mjSolverStat_ solver3046; + public mjSolverStat_ solver3047; + public mjSolverStat_ solver3048; + public mjSolverStat_ solver3049; + public mjSolverStat_ solver3050; + public mjSolverStat_ solver3051; + public mjSolverStat_ solver3052; + public mjSolverStat_ solver3053; + public mjSolverStat_ solver3054; + public mjSolverStat_ solver3055; + public mjSolverStat_ solver3056; + public mjSolverStat_ solver3057; + public mjSolverStat_ solver3058; + public mjSolverStat_ solver3059; + public mjSolverStat_ solver3060; + public mjSolverStat_ solver3061; + public mjSolverStat_ solver3062; + public mjSolverStat_ solver3063; + public mjSolverStat_ solver3064; + public mjSolverStat_ solver3065; + public mjSolverStat_ solver3066; + public mjSolverStat_ solver3067; + public mjSolverStat_ solver3068; + public mjSolverStat_ solver3069; + public mjSolverStat_ solver3070; + public mjSolverStat_ solver3071; + public mjSolverStat_ solver3072; + public mjSolverStat_ solver3073; + public mjSolverStat_ solver3074; + public mjSolverStat_ solver3075; + public mjSolverStat_ solver3076; + public mjSolverStat_ solver3077; + public mjSolverStat_ solver3078; + public mjSolverStat_ solver3079; + public mjSolverStat_ solver3080; + public mjSolverStat_ solver3081; + public mjSolverStat_ solver3082; + public mjSolverStat_ solver3083; + public mjSolverStat_ solver3084; + public mjSolverStat_ solver3085; + public mjSolverStat_ solver3086; + public mjSolverStat_ solver3087; + public mjSolverStat_ solver3088; + public mjSolverStat_ solver3089; + public mjSolverStat_ solver3090; + public mjSolverStat_ solver3091; + public mjSolverStat_ solver3092; + public mjSolverStat_ solver3093; + public mjSolverStat_ solver3094; + public mjSolverStat_ solver3095; + public mjSolverStat_ solver3096; + public mjSolverStat_ solver3097; + public mjSolverStat_ solver3098; + public mjSolverStat_ solver3099; + public mjSolverStat_ solver3100; + public mjSolverStat_ solver3101; + public mjSolverStat_ solver3102; + public mjSolverStat_ solver3103; + public mjSolverStat_ solver3104; + public mjSolverStat_ solver3105; + public mjSolverStat_ solver3106; + public mjSolverStat_ solver3107; + public mjSolverStat_ solver3108; + public mjSolverStat_ solver3109; + public mjSolverStat_ solver3110; + public mjSolverStat_ solver3111; + public mjSolverStat_ solver3112; + public mjSolverStat_ solver3113; + public mjSolverStat_ solver3114; + public mjSolverStat_ solver3115; + public mjSolverStat_ solver3116; + public mjSolverStat_ solver3117; + public mjSolverStat_ solver3118; + public mjSolverStat_ solver3119; + public mjSolverStat_ solver3120; + public mjSolverStat_ solver3121; + public mjSolverStat_ solver3122; + public mjSolverStat_ solver3123; + public mjSolverStat_ solver3124; + public mjSolverStat_ solver3125; + public mjSolverStat_ solver3126; + public mjSolverStat_ solver3127; + public mjSolverStat_ solver3128; + public mjSolverStat_ solver3129; + public mjSolverStat_ solver3130; + public mjSolverStat_ solver3131; + public mjSolverStat_ solver3132; + public mjSolverStat_ solver3133; + public mjSolverStat_ solver3134; + public mjSolverStat_ solver3135; + public mjSolverStat_ solver3136; + public mjSolverStat_ solver3137; + public mjSolverStat_ solver3138; + public mjSolverStat_ solver3139; + public mjSolverStat_ solver3140; + public mjSolverStat_ solver3141; + public mjSolverStat_ solver3142; + public mjSolverStat_ solver3143; + public mjSolverStat_ solver3144; + public mjSolverStat_ solver3145; + public mjSolverStat_ solver3146; + public mjSolverStat_ solver3147; + public mjSolverStat_ solver3148; + public mjSolverStat_ solver3149; + public mjSolverStat_ solver3150; + public mjSolverStat_ solver3151; + public mjSolverStat_ solver3152; + public mjSolverStat_ solver3153; + public mjSolverStat_ solver3154; + public mjSolverStat_ solver3155; + public mjSolverStat_ solver3156; + public mjSolverStat_ solver3157; + public mjSolverStat_ solver3158; + public mjSolverStat_ solver3159; + public mjSolverStat_ solver3160; + public mjSolverStat_ solver3161; + public mjSolverStat_ solver3162; + public mjSolverStat_ solver3163; + public mjSolverStat_ solver3164; + public mjSolverStat_ solver3165; + public mjSolverStat_ solver3166; + public mjSolverStat_ solver3167; + public mjSolverStat_ solver3168; + public mjSolverStat_ solver3169; + public mjSolverStat_ solver3170; + public mjSolverStat_ solver3171; + public mjSolverStat_ solver3172; + public mjSolverStat_ solver3173; + public mjSolverStat_ solver3174; + public mjSolverStat_ solver3175; + public mjSolverStat_ solver3176; + public mjSolverStat_ solver3177; + public mjSolverStat_ solver3178; + public mjSolverStat_ solver3179; + public mjSolverStat_ solver3180; + public mjSolverStat_ solver3181; + public mjSolverStat_ solver3182; + public mjSolverStat_ solver3183; + public mjSolverStat_ solver3184; + public mjSolverStat_ solver3185; + public mjSolverStat_ solver3186; + public mjSolverStat_ solver3187; + public mjSolverStat_ solver3188; + public mjSolverStat_ solver3189; + public mjSolverStat_ solver3190; + public mjSolverStat_ solver3191; + public mjSolverStat_ solver3192; + public mjSolverStat_ solver3193; + public mjSolverStat_ solver3194; + public mjSolverStat_ solver3195; + public mjSolverStat_ solver3196; + public mjSolverStat_ solver3197; + public mjSolverStat_ solver3198; + public mjSolverStat_ solver3199; + public mjSolverStat_ solver3200; + public mjSolverStat_ solver3201; + public mjSolverStat_ solver3202; + public mjSolverStat_ solver3203; + public mjSolverStat_ solver3204; + public mjSolverStat_ solver3205; + public mjSolverStat_ solver3206; + public mjSolverStat_ solver3207; + public mjSolverStat_ solver3208; + public mjSolverStat_ solver3209; + public mjSolverStat_ solver3210; + public mjSolverStat_ solver3211; + public mjSolverStat_ solver3212; + public mjSolverStat_ solver3213; + public mjSolverStat_ solver3214; + public mjSolverStat_ solver3215; + public mjSolverStat_ solver3216; + public mjSolverStat_ solver3217; + public mjSolverStat_ solver3218; + public mjSolverStat_ solver3219; + public mjSolverStat_ solver3220; + public mjSolverStat_ solver3221; + public mjSolverStat_ solver3222; + public mjSolverStat_ solver3223; + public mjSolverStat_ solver3224; + public mjSolverStat_ solver3225; + public mjSolverStat_ solver3226; + public mjSolverStat_ solver3227; + public mjSolverStat_ solver3228; + public mjSolverStat_ solver3229; + public mjSolverStat_ solver3230; + public mjSolverStat_ solver3231; + public mjSolverStat_ solver3232; + public mjSolverStat_ solver3233; + public mjSolverStat_ solver3234; + public mjSolverStat_ solver3235; + public mjSolverStat_ solver3236; + public mjSolverStat_ solver3237; + public mjSolverStat_ solver3238; + public mjSolverStat_ solver3239; + public mjSolverStat_ solver3240; + public mjSolverStat_ solver3241; + public mjSolverStat_ solver3242; + public mjSolverStat_ solver3243; + public mjSolverStat_ solver3244; + public mjSolverStat_ solver3245; + public mjSolverStat_ solver3246; + public mjSolverStat_ solver3247; + public mjSolverStat_ solver3248; + public mjSolverStat_ solver3249; + public mjSolverStat_ solver3250; + public mjSolverStat_ solver3251; + public mjSolverStat_ solver3252; + public mjSolverStat_ solver3253; + public mjSolverStat_ solver3254; + public mjSolverStat_ solver3255; + public mjSolverStat_ solver3256; + public mjSolverStat_ solver3257; + public mjSolverStat_ solver3258; + public mjSolverStat_ solver3259; + public mjSolverStat_ solver3260; + public mjSolverStat_ solver3261; + public mjSolverStat_ solver3262; + public mjSolverStat_ solver3263; + public mjSolverStat_ solver3264; + public mjSolverStat_ solver3265; + public mjSolverStat_ solver3266; + public mjSolverStat_ solver3267; + public mjSolverStat_ solver3268; + public mjSolverStat_ solver3269; + public mjSolverStat_ solver3270; + public mjSolverStat_ solver3271; + public mjSolverStat_ solver3272; + public mjSolverStat_ solver3273; + public mjSolverStat_ solver3274; + public mjSolverStat_ solver3275; + public mjSolverStat_ solver3276; + public mjSolverStat_ solver3277; + public mjSolverStat_ solver3278; + public mjSolverStat_ solver3279; + public mjSolverStat_ solver3280; + public mjSolverStat_ solver3281; + public mjSolverStat_ solver3282; + public mjSolverStat_ solver3283; + public mjSolverStat_ solver3284; + public mjSolverStat_ solver3285; + public mjSolverStat_ solver3286; + public mjSolverStat_ solver3287; + public mjSolverStat_ solver3288; + public mjSolverStat_ solver3289; + public mjSolverStat_ solver3290; + public mjSolverStat_ solver3291; + public mjSolverStat_ solver3292; + public mjSolverStat_ solver3293; + public mjSolverStat_ solver3294; + public mjSolverStat_ solver3295; + public mjSolverStat_ solver3296; + public mjSolverStat_ solver3297; + public mjSolverStat_ solver3298; + public mjSolverStat_ solver3299; + public mjSolverStat_ solver3300; + public mjSolverStat_ solver3301; + public mjSolverStat_ solver3302; + public mjSolverStat_ solver3303; + public mjSolverStat_ solver3304; + public mjSolverStat_ solver3305; + public mjSolverStat_ solver3306; + public mjSolverStat_ solver3307; + public mjSolverStat_ solver3308; + public mjSolverStat_ solver3309; + public mjSolverStat_ solver3310; + public mjSolverStat_ solver3311; + public mjSolverStat_ solver3312; + public mjSolverStat_ solver3313; + public mjSolverStat_ solver3314; + public mjSolverStat_ solver3315; + public mjSolverStat_ solver3316; + public mjSolverStat_ solver3317; + public mjSolverStat_ solver3318; + public mjSolverStat_ solver3319; + public mjSolverStat_ solver3320; + public mjSolverStat_ solver3321; + public mjSolverStat_ solver3322; + public mjSolverStat_ solver3323; + public mjSolverStat_ solver3324; + public mjSolverStat_ solver3325; + public mjSolverStat_ solver3326; + public mjSolverStat_ solver3327; + public mjSolverStat_ solver3328; + public mjSolverStat_ solver3329; + public mjSolverStat_ solver3330; + public mjSolverStat_ solver3331; + public mjSolverStat_ solver3332; + public mjSolverStat_ solver3333; + public mjSolverStat_ solver3334; + public mjSolverStat_ solver3335; + public mjSolverStat_ solver3336; + public mjSolverStat_ solver3337; + public mjSolverStat_ solver3338; + public mjSolverStat_ solver3339; + public mjSolverStat_ solver3340; + public mjSolverStat_ solver3341; + public mjSolverStat_ solver3342; + public mjSolverStat_ solver3343; + public mjSolverStat_ solver3344; + public mjSolverStat_ solver3345; + public mjSolverStat_ solver3346; + public mjSolverStat_ solver3347; + public mjSolverStat_ solver3348; + public mjSolverStat_ solver3349; + public mjSolverStat_ solver3350; + public mjSolverStat_ solver3351; + public mjSolverStat_ solver3352; + public mjSolverStat_ solver3353; + public mjSolverStat_ solver3354; + public mjSolverStat_ solver3355; + public mjSolverStat_ solver3356; + public mjSolverStat_ solver3357; + public mjSolverStat_ solver3358; + public mjSolverStat_ solver3359; + public mjSolverStat_ solver3360; + public mjSolverStat_ solver3361; + public mjSolverStat_ solver3362; + public mjSolverStat_ solver3363; + public mjSolverStat_ solver3364; + public mjSolverStat_ solver3365; + public mjSolverStat_ solver3366; + public mjSolverStat_ solver3367; + public mjSolverStat_ solver3368; + public mjSolverStat_ solver3369; + public mjSolverStat_ solver3370; + public mjSolverStat_ solver3371; + public mjSolverStat_ solver3372; + public mjSolverStat_ solver3373; + public mjSolverStat_ solver3374; + public mjSolverStat_ solver3375; + public mjSolverStat_ solver3376; + public mjSolverStat_ solver3377; + public mjSolverStat_ solver3378; + public mjSolverStat_ solver3379; + public mjSolverStat_ solver3380; + public mjSolverStat_ solver3381; + public mjSolverStat_ solver3382; + public mjSolverStat_ solver3383; + public mjSolverStat_ solver3384; + public mjSolverStat_ solver3385; + public mjSolverStat_ solver3386; + public mjSolverStat_ solver3387; + public mjSolverStat_ solver3388; + public mjSolverStat_ solver3389; + public mjSolverStat_ solver3390; + public mjSolverStat_ solver3391; + public mjSolverStat_ solver3392; + public mjSolverStat_ solver3393; + public mjSolverStat_ solver3394; + public mjSolverStat_ solver3395; + public mjSolverStat_ solver3396; + public mjSolverStat_ solver3397; + public mjSolverStat_ solver3398; + public mjSolverStat_ solver3399; + public mjSolverStat_ solver3400; + public mjSolverStat_ solver3401; + public mjSolverStat_ solver3402; + public mjSolverStat_ solver3403; + public mjSolverStat_ solver3404; + public mjSolverStat_ solver3405; + public mjSolverStat_ solver3406; + public mjSolverStat_ solver3407; + public mjSolverStat_ solver3408; + public mjSolverStat_ solver3409; + public mjSolverStat_ solver3410; + public mjSolverStat_ solver3411; + public mjSolverStat_ solver3412; + public mjSolverStat_ solver3413; + public mjSolverStat_ solver3414; + public mjSolverStat_ solver3415; + public mjSolverStat_ solver3416; + public mjSolverStat_ solver3417; + public mjSolverStat_ solver3418; + public mjSolverStat_ solver3419; + public mjSolverStat_ solver3420; + public mjSolverStat_ solver3421; + public mjSolverStat_ solver3422; + public mjSolverStat_ solver3423; + public mjSolverStat_ solver3424; + public mjSolverStat_ solver3425; + public mjSolverStat_ solver3426; + public mjSolverStat_ solver3427; + public mjSolverStat_ solver3428; + public mjSolverStat_ solver3429; + public mjSolverStat_ solver3430; + public mjSolverStat_ solver3431; + public mjSolverStat_ solver3432; + public mjSolverStat_ solver3433; + public mjSolverStat_ solver3434; + public mjSolverStat_ solver3435; + public mjSolverStat_ solver3436; + public mjSolverStat_ solver3437; + public mjSolverStat_ solver3438; + public mjSolverStat_ solver3439; + public mjSolverStat_ solver3440; + public mjSolverStat_ solver3441; + public mjSolverStat_ solver3442; + public mjSolverStat_ solver3443; + public mjSolverStat_ solver3444; + public mjSolverStat_ solver3445; + public mjSolverStat_ solver3446; + public mjSolverStat_ solver3447; + public mjSolverStat_ solver3448; + public mjSolverStat_ solver3449; + public mjSolverStat_ solver3450; + public mjSolverStat_ solver3451; + public mjSolverStat_ solver3452; + public mjSolverStat_ solver3453; + public mjSolverStat_ solver3454; + public mjSolverStat_ solver3455; + public mjSolverStat_ solver3456; + public mjSolverStat_ solver3457; + public mjSolverStat_ solver3458; + public mjSolverStat_ solver3459; + public mjSolverStat_ solver3460; + public mjSolverStat_ solver3461; + public mjSolverStat_ solver3462; + public mjSolverStat_ solver3463; + public mjSolverStat_ solver3464; + public mjSolverStat_ solver3465; + public mjSolverStat_ solver3466; + public mjSolverStat_ solver3467; + public mjSolverStat_ solver3468; + public mjSolverStat_ solver3469; + public mjSolverStat_ solver3470; + public mjSolverStat_ solver3471; + public mjSolverStat_ solver3472; + public mjSolverStat_ solver3473; + public mjSolverStat_ solver3474; + public mjSolverStat_ solver3475; + public mjSolverStat_ solver3476; + public mjSolverStat_ solver3477; + public mjSolverStat_ solver3478; + public mjSolverStat_ solver3479; + public mjSolverStat_ solver3480; + public mjSolverStat_ solver3481; + public mjSolverStat_ solver3482; + public mjSolverStat_ solver3483; + public mjSolverStat_ solver3484; + public mjSolverStat_ solver3485; + public mjSolverStat_ solver3486; + public mjSolverStat_ solver3487; + public mjSolverStat_ solver3488; + public mjSolverStat_ solver3489; + public mjSolverStat_ solver3490; + public mjSolverStat_ solver3491; + public mjSolverStat_ solver3492; + public mjSolverStat_ solver3493; + public mjSolverStat_ solver3494; + public mjSolverStat_ solver3495; + public mjSolverStat_ solver3496; + public mjSolverStat_ solver3497; + public mjSolverStat_ solver3498; + public mjSolverStat_ solver3499; + public mjSolverStat_ solver3500; + public mjSolverStat_ solver3501; + public mjSolverStat_ solver3502; + public mjSolverStat_ solver3503; + public mjSolverStat_ solver3504; + public mjSolverStat_ solver3505; + public mjSolverStat_ solver3506; + public mjSolverStat_ solver3507; + public mjSolverStat_ solver3508; + public mjSolverStat_ solver3509; + public mjSolverStat_ solver3510; + public mjSolverStat_ solver3511; + public mjSolverStat_ solver3512; + public mjSolverStat_ solver3513; + public mjSolverStat_ solver3514; + public mjSolverStat_ solver3515; + public mjSolverStat_ solver3516; + public mjSolverStat_ solver3517; + public mjSolverStat_ solver3518; + public mjSolverStat_ solver3519; + public mjSolverStat_ solver3520; + public mjSolverStat_ solver3521; + public mjSolverStat_ solver3522; + public mjSolverStat_ solver3523; + public mjSolverStat_ solver3524; + public mjSolverStat_ solver3525; + public mjSolverStat_ solver3526; + public mjSolverStat_ solver3527; + public mjSolverStat_ solver3528; + public mjSolverStat_ solver3529; + public mjSolverStat_ solver3530; + public mjSolverStat_ solver3531; + public mjSolverStat_ solver3532; + public mjSolverStat_ solver3533; + public mjSolverStat_ solver3534; + public mjSolverStat_ solver3535; + public mjSolverStat_ solver3536; + public mjSolverStat_ solver3537; + public mjSolverStat_ solver3538; + public mjSolverStat_ solver3539; + public mjSolverStat_ solver3540; + public mjSolverStat_ solver3541; + public mjSolverStat_ solver3542; + public mjSolverStat_ solver3543; + public mjSolverStat_ solver3544; + public mjSolverStat_ solver3545; + public mjSolverStat_ solver3546; + public mjSolverStat_ solver3547; + public mjSolverStat_ solver3548; + public mjSolverStat_ solver3549; + public mjSolverStat_ solver3550; + public mjSolverStat_ solver3551; + public mjSolverStat_ solver3552; + public mjSolverStat_ solver3553; + public mjSolverStat_ solver3554; + public mjSolverStat_ solver3555; + public mjSolverStat_ solver3556; + public mjSolverStat_ solver3557; + public mjSolverStat_ solver3558; + public mjSolverStat_ solver3559; + public mjSolverStat_ solver3560; + public mjSolverStat_ solver3561; + public mjSolverStat_ solver3562; + public mjSolverStat_ solver3563; + public mjSolverStat_ solver3564; + public mjSolverStat_ solver3565; + public mjSolverStat_ solver3566; + public mjSolverStat_ solver3567; + public mjSolverStat_ solver3568; + public mjSolverStat_ solver3569; + public mjSolverStat_ solver3570; + public mjSolverStat_ solver3571; + public mjSolverStat_ solver3572; + public mjSolverStat_ solver3573; + public mjSolverStat_ solver3574; + public mjSolverStat_ solver3575; + public mjSolverStat_ solver3576; + public mjSolverStat_ solver3577; + public mjSolverStat_ solver3578; + public mjSolverStat_ solver3579; + public mjSolverStat_ solver3580; + public mjSolverStat_ solver3581; + public mjSolverStat_ solver3582; + public mjSolverStat_ solver3583; + public mjSolverStat_ solver3584; + public mjSolverStat_ solver3585; + public mjSolverStat_ solver3586; + public mjSolverStat_ solver3587; + public mjSolverStat_ solver3588; + public mjSolverStat_ solver3589; + public mjSolverStat_ solver3590; + public mjSolverStat_ solver3591; + public mjSolverStat_ solver3592; + public mjSolverStat_ solver3593; + public mjSolverStat_ solver3594; + public mjSolverStat_ solver3595; + public mjSolverStat_ solver3596; + public mjSolverStat_ solver3597; + public mjSolverStat_ solver3598; + public mjSolverStat_ solver3599; + public mjSolverStat_ solver3600; + public mjSolverStat_ solver3601; + public mjSolverStat_ solver3602; + public mjSolverStat_ solver3603; + public mjSolverStat_ solver3604; + public mjSolverStat_ solver3605; + public mjSolverStat_ solver3606; + public mjSolverStat_ solver3607; + public mjSolverStat_ solver3608; + public mjSolverStat_ solver3609; + public mjSolverStat_ solver3610; + public mjSolverStat_ solver3611; + public mjSolverStat_ solver3612; + public mjSolverStat_ solver3613; + public mjSolverStat_ solver3614; + public mjSolverStat_ solver3615; + public mjSolverStat_ solver3616; + public mjSolverStat_ solver3617; + public mjSolverStat_ solver3618; + public mjSolverStat_ solver3619; + public mjSolverStat_ solver3620; + public mjSolverStat_ solver3621; + public mjSolverStat_ solver3622; + public mjSolverStat_ solver3623; + public mjSolverStat_ solver3624; + public mjSolverStat_ solver3625; + public mjSolverStat_ solver3626; + public mjSolverStat_ solver3627; + public mjSolverStat_ solver3628; + public mjSolverStat_ solver3629; + public mjSolverStat_ solver3630; + public mjSolverStat_ solver3631; + public mjSolverStat_ solver3632; + public mjSolverStat_ solver3633; + public mjSolverStat_ solver3634; + public mjSolverStat_ solver3635; + public mjSolverStat_ solver3636; + public mjSolverStat_ solver3637; + public mjSolverStat_ solver3638; + public mjSolverStat_ solver3639; + public mjSolverStat_ solver3640; + public mjSolverStat_ solver3641; + public mjSolverStat_ solver3642; + public mjSolverStat_ solver3643; + public mjSolverStat_ solver3644; + public mjSolverStat_ solver3645; + public mjSolverStat_ solver3646; + public mjSolverStat_ solver3647; + public mjSolverStat_ solver3648; + public mjSolverStat_ solver3649; + public mjSolverStat_ solver3650; + public mjSolverStat_ solver3651; + public mjSolverStat_ solver3652; + public mjSolverStat_ solver3653; + public mjSolverStat_ solver3654; + public mjSolverStat_ solver3655; + public mjSolverStat_ solver3656; + public mjSolverStat_ solver3657; + public mjSolverStat_ solver3658; + public mjSolverStat_ solver3659; + public mjSolverStat_ solver3660; + public mjSolverStat_ solver3661; + public mjSolverStat_ solver3662; + public mjSolverStat_ solver3663; + public mjSolverStat_ solver3664; + public mjSolverStat_ solver3665; + public mjSolverStat_ solver3666; + public mjSolverStat_ solver3667; + public mjSolverStat_ solver3668; + public mjSolverStat_ solver3669; + public mjSolverStat_ solver3670; + public mjSolverStat_ solver3671; + public mjSolverStat_ solver3672; + public mjSolverStat_ solver3673; + public mjSolverStat_ solver3674; + public mjSolverStat_ solver3675; + public mjSolverStat_ solver3676; + public mjSolverStat_ solver3677; + public mjSolverStat_ solver3678; + public mjSolverStat_ solver3679; + public mjSolverStat_ solver3680; + public mjSolverStat_ solver3681; + public mjSolverStat_ solver3682; + public mjSolverStat_ solver3683; + public mjSolverStat_ solver3684; + public mjSolverStat_ solver3685; + public mjSolverStat_ solver3686; + public mjSolverStat_ solver3687; + public mjSolverStat_ solver3688; + public mjSolverStat_ solver3689; + public mjSolverStat_ solver3690; + public mjSolverStat_ solver3691; + public mjSolverStat_ solver3692; + public mjSolverStat_ solver3693; + public mjSolverStat_ solver3694; + public mjSolverStat_ solver3695; + public mjSolverStat_ solver3696; + public mjSolverStat_ solver3697; + public mjSolverStat_ solver3698; + public mjSolverStat_ solver3699; + public mjSolverStat_ solver3700; + public mjSolverStat_ solver3701; + public mjSolverStat_ solver3702; + public mjSolverStat_ solver3703; + public mjSolverStat_ solver3704; + public mjSolverStat_ solver3705; + public mjSolverStat_ solver3706; + public mjSolverStat_ solver3707; + public mjSolverStat_ solver3708; + public mjSolverStat_ solver3709; + public mjSolverStat_ solver3710; + public mjSolverStat_ solver3711; + public mjSolverStat_ solver3712; + public mjSolverStat_ solver3713; + public mjSolverStat_ solver3714; + public mjSolverStat_ solver3715; + public mjSolverStat_ solver3716; + public mjSolverStat_ solver3717; + public mjSolverStat_ solver3718; + public mjSolverStat_ solver3719; + public mjSolverStat_ solver3720; + public mjSolverStat_ solver3721; + public mjSolverStat_ solver3722; + public mjSolverStat_ solver3723; + public mjSolverStat_ solver3724; + public mjSolverStat_ solver3725; + public mjSolverStat_ solver3726; + public mjSolverStat_ solver3727; + public mjSolverStat_ solver3728; + public mjSolverStat_ solver3729; + public mjSolverStat_ solver3730; + public mjSolverStat_ solver3731; + public mjSolverStat_ solver3732; + public mjSolverStat_ solver3733; + public mjSolverStat_ solver3734; + public mjSolverStat_ solver3735; + public mjSolverStat_ solver3736; + public mjSolverStat_ solver3737; + public mjSolverStat_ solver3738; + public mjSolverStat_ solver3739; + public mjSolverStat_ solver3740; + public mjSolverStat_ solver3741; + public mjSolverStat_ solver3742; + public mjSolverStat_ solver3743; + public mjSolverStat_ solver3744; + public mjSolverStat_ solver3745; + public mjSolverStat_ solver3746; + public mjSolverStat_ solver3747; + public mjSolverStat_ solver3748; + public mjSolverStat_ solver3749; + public mjSolverStat_ solver3750; + public mjSolverStat_ solver3751; + public mjSolverStat_ solver3752; + public mjSolverStat_ solver3753; + public mjSolverStat_ solver3754; + public mjSolverStat_ solver3755; + public mjSolverStat_ solver3756; + public mjSolverStat_ solver3757; + public mjSolverStat_ solver3758; + public mjSolverStat_ solver3759; + public mjSolverStat_ solver3760; + public mjSolverStat_ solver3761; + public mjSolverStat_ solver3762; + public mjSolverStat_ solver3763; + public mjSolverStat_ solver3764; + public mjSolverStat_ solver3765; + public mjSolverStat_ solver3766; + public mjSolverStat_ solver3767; + public mjSolverStat_ solver3768; + public mjSolverStat_ solver3769; + public mjSolverStat_ solver3770; + public mjSolverStat_ solver3771; + public mjSolverStat_ solver3772; + public mjSolverStat_ solver3773; + public mjSolverStat_ solver3774; + public mjSolverStat_ solver3775; + public mjSolverStat_ solver3776; + public mjSolverStat_ solver3777; + public mjSolverStat_ solver3778; + public mjSolverStat_ solver3779; + public mjSolverStat_ solver3780; + public mjSolverStat_ solver3781; + public mjSolverStat_ solver3782; + public mjSolverStat_ solver3783; + public mjSolverStat_ solver3784; + public mjSolverStat_ solver3785; + public mjSolverStat_ solver3786; + public mjSolverStat_ solver3787; + public mjSolverStat_ solver3788; + public mjSolverStat_ solver3789; + public mjSolverStat_ solver3790; + public mjSolverStat_ solver3791; + public mjSolverStat_ solver3792; + public mjSolverStat_ solver3793; + public mjSolverStat_ solver3794; + public mjSolverStat_ solver3795; + public mjSolverStat_ solver3796; + public mjSolverStat_ solver3797; + public mjSolverStat_ solver3798; + public mjSolverStat_ solver3799; + public mjSolverStat_ solver3800; + public mjSolverStat_ solver3801; + public mjSolverStat_ solver3802; + public mjSolverStat_ solver3803; + public mjSolverStat_ solver3804; + public mjSolverStat_ solver3805; + public mjSolverStat_ solver3806; + public mjSolverStat_ solver3807; + public mjSolverStat_ solver3808; + public mjSolverStat_ solver3809; + public mjSolverStat_ solver3810; + public mjSolverStat_ solver3811; + public mjSolverStat_ solver3812; + public mjSolverStat_ solver3813; + public mjSolverStat_ solver3814; + public mjSolverStat_ solver3815; + public mjSolverStat_ solver3816; + public mjSolverStat_ solver3817; + public mjSolverStat_ solver3818; + public mjSolverStat_ solver3819; + public mjSolverStat_ solver3820; + public mjSolverStat_ solver3821; + public mjSolverStat_ solver3822; + public mjSolverStat_ solver3823; + public mjSolverStat_ solver3824; + public mjSolverStat_ solver3825; + public mjSolverStat_ solver3826; + public mjSolverStat_ solver3827; + public mjSolverStat_ solver3828; + public mjSolverStat_ solver3829; + public mjSolverStat_ solver3830; + public mjSolverStat_ solver3831; + public mjSolverStat_ solver3832; + public mjSolverStat_ solver3833; + public mjSolverStat_ solver3834; + public mjSolverStat_ solver3835; + public mjSolverStat_ solver3836; + public mjSolverStat_ solver3837; + public mjSolverStat_ solver3838; + public mjSolverStat_ solver3839; + public mjSolverStat_ solver3840; + public mjSolverStat_ solver3841; + public mjSolverStat_ solver3842; + public mjSolverStat_ solver3843; + public mjSolverStat_ solver3844; + public mjSolverStat_ solver3845; + public mjSolverStat_ solver3846; + public mjSolverStat_ solver3847; + public mjSolverStat_ solver3848; + public mjSolverStat_ solver3849; + public mjSolverStat_ solver3850; + public mjSolverStat_ solver3851; + public mjSolverStat_ solver3852; + public mjSolverStat_ solver3853; + public mjSolverStat_ solver3854; + public mjSolverStat_ solver3855; + public mjSolverStat_ solver3856; + public mjSolverStat_ solver3857; + public mjSolverStat_ solver3858; + public mjSolverStat_ solver3859; + public mjSolverStat_ solver3860; + public mjSolverStat_ solver3861; + public mjSolverStat_ solver3862; + public mjSolverStat_ solver3863; + public mjSolverStat_ solver3864; + public mjSolverStat_ solver3865; + public mjSolverStat_ solver3866; + public mjSolverStat_ solver3867; + public mjSolverStat_ solver3868; + public mjSolverStat_ solver3869; + public mjSolverStat_ solver3870; + public mjSolverStat_ solver3871; + public mjSolverStat_ solver3872; + public mjSolverStat_ solver3873; + public mjSolverStat_ solver3874; + public mjSolverStat_ solver3875; + public mjSolverStat_ solver3876; + public mjSolverStat_ solver3877; + public mjSolverStat_ solver3878; + public mjSolverStat_ solver3879; + public mjSolverStat_ solver3880; + public mjSolverStat_ solver3881; + public mjSolverStat_ solver3882; + public mjSolverStat_ solver3883; + public mjSolverStat_ solver3884; + public mjSolverStat_ solver3885; + public mjSolverStat_ solver3886; + public mjSolverStat_ solver3887; + public mjSolverStat_ solver3888; + public mjSolverStat_ solver3889; + public mjSolverStat_ solver3890; + public mjSolverStat_ solver3891; + public mjSolverStat_ solver3892; + public mjSolverStat_ solver3893; + public mjSolverStat_ solver3894; + public mjSolverStat_ solver3895; + public mjSolverStat_ solver3896; + public mjSolverStat_ solver3897; + public mjSolverStat_ solver3898; + public mjSolverStat_ solver3899; + public mjSolverStat_ solver3900; + public mjSolverStat_ solver3901; + public mjSolverStat_ solver3902; + public mjSolverStat_ solver3903; + public mjSolverStat_ solver3904; + public mjSolverStat_ solver3905; + public mjSolverStat_ solver3906; + public mjSolverStat_ solver3907; + public mjSolverStat_ solver3908; + public mjSolverStat_ solver3909; + public mjSolverStat_ solver3910; + public mjSolverStat_ solver3911; + public mjSolverStat_ solver3912; + public mjSolverStat_ solver3913; + public mjSolverStat_ solver3914; + public mjSolverStat_ solver3915; + public mjSolverStat_ solver3916; + public mjSolverStat_ solver3917; + public mjSolverStat_ solver3918; + public mjSolverStat_ solver3919; + public mjSolverStat_ solver3920; + public mjSolverStat_ solver3921; + public mjSolverStat_ solver3922; + public mjSolverStat_ solver3923; + public mjSolverStat_ solver3924; + public mjSolverStat_ solver3925; + public mjSolverStat_ solver3926; + public mjSolverStat_ solver3927; + public mjSolverStat_ solver3928; + public mjSolverStat_ solver3929; + public mjSolverStat_ solver3930; + public mjSolverStat_ solver3931; + public mjSolverStat_ solver3932; + public mjSolverStat_ solver3933; + public mjSolverStat_ solver3934; + public mjSolverStat_ solver3935; + public mjSolverStat_ solver3936; + public mjSolverStat_ solver3937; + public mjSolverStat_ solver3938; + public mjSolverStat_ solver3939; + public mjSolverStat_ solver3940; + public mjSolverStat_ solver3941; + public mjSolverStat_ solver3942; + public mjSolverStat_ solver3943; + public mjSolverStat_ solver3944; + public mjSolverStat_ solver3945; + public mjSolverStat_ solver3946; + public mjSolverStat_ solver3947; + public mjSolverStat_ solver3948; + public mjSolverStat_ solver3949; + public mjSolverStat_ solver3950; + public mjSolverStat_ solver3951; + public mjSolverStat_ solver3952; + public mjSolverStat_ solver3953; + public mjSolverStat_ solver3954; + public mjSolverStat_ solver3955; + public mjSolverStat_ solver3956; + public mjSolverStat_ solver3957; + public mjSolverStat_ solver3958; + public mjSolverStat_ solver3959; + public mjSolverStat_ solver3960; + public mjSolverStat_ solver3961; + public mjSolverStat_ solver3962; + public mjSolverStat_ solver3963; + public mjSolverStat_ solver3964; + public mjSolverStat_ solver3965; + public mjSolverStat_ solver3966; + public mjSolverStat_ solver3967; + public mjSolverStat_ solver3968; + public mjSolverStat_ solver3969; + public mjSolverStat_ solver3970; + public mjSolverStat_ solver3971; + public mjSolverStat_ solver3972; + public mjSolverStat_ solver3973; + public mjSolverStat_ solver3974; + public mjSolverStat_ solver3975; + public mjSolverStat_ solver3976; + public mjSolverStat_ solver3977; + public mjSolverStat_ solver3978; + public mjSolverStat_ solver3979; + public mjSolverStat_ solver3980; + public mjSolverStat_ solver3981; + public mjSolverStat_ solver3982; + public mjSolverStat_ solver3983; + public mjSolverStat_ solver3984; + public mjSolverStat_ solver3985; + public mjSolverStat_ solver3986; + public mjSolverStat_ solver3987; + public mjSolverStat_ solver3988; + public mjSolverStat_ solver3989; + public mjSolverStat_ solver3990; + public mjSolverStat_ solver3991; + public mjSolverStat_ solver3992; + public mjSolverStat_ solver3993; + public mjSolverStat_ solver3994; + public mjSolverStat_ solver3995; + public mjSolverStat_ solver3996; + public mjSolverStat_ solver3997; + public mjSolverStat_ solver3998; + public mjSolverStat_ solver3999; + public int solver_nisland; + public fixed int solver_niter[20]; + public fixed int solver_nnz[20]; public fixed double solver_fwdinv[2]; public int nbodypair_broad; public int nbodypair_narrow;