Remove mj_jacDifPairCount by incorporating the counting into mj_jacDifPair
PiperOrigin-RevId: 884366070 Change-Id: I7490ca205a315bc661414e32c91ad1ec753a8fe7
This commit is contained in:
committed by
Copybara-Service
parent
50dfc255b8
commit
55f5ac0a1d
@@ -1927,24 +1927,6 @@ void mj_makeImpedance(const mjModel* m, mjData* d) {
|
|||||||
|
|
||||||
//------------------------------------- constraint counting ----------------------------------------
|
//------------------------------------- constraint counting ----------------------------------------
|
||||||
|
|
||||||
// count the non-zero columns in the Jacobian difference of two bodies
|
|
||||||
static int mj_jacDifPairCount(const mjModel* m, int* chain,
|
|
||||||
int b1, int b2, int issparse) {
|
|
||||||
if (!m->nv) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (issparse) {
|
|
||||||
if (m->body_simple[b1] && m->body_simple[b2]) {
|
|
||||||
return mj_mergeChainSimple(m, chain, b1, b2);
|
|
||||||
}
|
|
||||||
return mj_mergeChain(m, chain, b1, b2, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
return m->nv;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// count the non-zero columns of the Jacobian returned by mj_jacSum
|
// count the non-zero columns of the Jacobian returned by mj_jacSum
|
||||||
static int mj_jacSumCount(const mjModel* m, mjData* d, int* chain,
|
static int mj_jacSumCount(const mjModel* m, mjData* d, int* chain,
|
||||||
int n, const int* body) {
|
int n, const int* body) {
|
||||||
@@ -2042,7 +2024,8 @@ static int mj_ne(const mjModel* m, mjData* d, int* nnz) {
|
|||||||
id[1] = m->site_bodyid[id[1]];
|
id[1] = m->site_bodyid[id[1]];
|
||||||
}
|
}
|
||||||
|
|
||||||
NV = mj_jacDifPairCount(m, chain, id[1], id[0], issparse);
|
NV = mj_jacDifPair(m, NULL, chain, id[1], id[0], NULL, NULL,
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL, issparse);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case mjEQ_WELD:
|
case mjEQ_WELD:
|
||||||
@@ -2057,7 +2040,8 @@ static int mj_ne(const mjModel* m, mjData* d, int* nnz) {
|
|||||||
id[1] = m->site_bodyid[id[1]];
|
id[1] = m->site_bodyid[id[1]];
|
||||||
}
|
}
|
||||||
|
|
||||||
NV = mj_jacDifPairCount(m, chain, id[1], id[0], issparse);
|
NV = mj_jacDifPair(m, NULL, chain, id[1], id[0], NULL, NULL,
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL, issparse);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case mjEQ_JOINT:
|
case mjEQ_JOINT:
|
||||||
@@ -2111,7 +2095,8 @@ static int mj_ne(const mjModel* m, mjData* d, int* nnz) {
|
|||||||
if (nnz) {
|
if (nnz) {
|
||||||
int b1 = m->flex_vertbodyid[m->flex_vertadr[id[0]] + m->flex_edge[2*e]];
|
int b1 = m->flex_vertbodyid[m->flex_vertadr[id[0]] + m->flex_edge[2*e]];
|
||||||
int b2 = m->flex_vertbodyid[m->flex_vertadr[id[0]] + m->flex_edge[2*e+1]];
|
int b2 = m->flex_vertbodyid[m->flex_vertadr[id[0]] + m->flex_edge[2*e+1]];
|
||||||
NV += mj_jacDifPairCount(m, chain, b1, b2, issparse);
|
NV += mj_jacDifPair(m, NULL, chain, b1, b2, NULL, NULL,
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL, issparse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -456,6 +456,11 @@ int mj_jacDifPair(const mjModel* m, const mjData* d, int* chain,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// count-only mode
|
||||||
|
if (!jacdifp && !jacdifr && !jac1p && !jac1r) {
|
||||||
|
return NV;
|
||||||
|
}
|
||||||
|
|
||||||
// sparse case
|
// sparse case
|
||||||
if (issparse) {
|
if (issparse) {
|
||||||
// simple: fast processing
|
// simple: fast processing
|
||||||
|
|||||||
Reference in New Issue
Block a user