Skip to content

Commit

Permalink
Use state variables in handler execution.
Browse files Browse the repository at this point in the history
  • Loading branch information
joaquinffernandez committed Oct 27, 2022
1 parent ece46f1 commit 2fea43c
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 57 deletions.
23 changes: 5 additions & 18 deletions src/engine/qss/parallel/qss_par_integrator.c
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,6 @@ void QSS_PAR_internalEvent(QSS_simulator simulator)
int nSZ, nLHSSt, nRHSSt, nHD, nHZ;
SD_eventData event = qssData->event;
double *d = qssData->d;
double tmp1[qssData->maxRHS];
int **SZ = qssData->SZ;
int **ZS = qssData->ZS;
int **HD = qssData->HD;
Expand Down Expand Up @@ -338,22 +337,12 @@ void QSS_PAR_internalEvent(QSS_simulator simulator)
nRHSSt = event[index].nRHSSt;
for (i = 0; i < nRHSSt; i++) {
j = event[index].RHSSt[i];
elapsed = t - tq[j];
infCf0 = j * coeffs;
if (elapsed > 0) {
integrateState(infCf0, elapsed, q, qOrder);
}
tq[j] = t;
}
nLHSSt = event[index].nLHSSt;
for (i = 0; i < nLHSSt; i++) {
j = event[index].LHSSt[i];
elapsed = t - tx[j];
infCf0 = j * coeffs;
elapsed = t - tq[j];
tmp1[i] = q[infCf0];
if (elapsed > 0) {
q[infCf0] = evaluatePoly(infCf0, elapsed, q, qOrder);
integrateState(infCf0, elapsed, x, xOrder);
}
tx[j] = t;
}
if (s >= 0) {
qssModel->events->handlerPos(index, q, d, a, t);
Expand All @@ -367,12 +356,11 @@ void QSS_PAR_internalEvent(QSS_simulator simulator)
msg.value[i] = d[j];
}
}
nLHSSt = event[index].nLHSSt;
for (i = 0; i < nLHSSt; i++) {
j = event[index].LHSSt[i];
infCf0 = j * coeffs;
if (qMap[j] > NOT_ASSIGNED) {
x[infCf0] = q[infCf0];
q[infCf0] = tmp1[i];
tx[j] = t;
lqu[j] = dQRel[j] * fabs(x[infCf0]);
if (lqu[j] < dQMin[j]) {
Expand All @@ -389,8 +377,7 @@ void QSS_PAR_internalEvent(QSS_simulator simulator)
}
reinits++;
} else {
msg.value[nLHSDsc + i * coeffs] = q[infCf0];
q[infCf0] = tmp1[i];
msg.value[nLHSDsc + i * coeffs] = x[infCf0];
int updIdx;
for (updIdx = 1; updIdx <= xOrder; updIdx++) {
msg.value[nLHSDsc + updIdx + i * coeffs] = NOT_ASSIGNED;
Expand Down
25 changes: 6 additions & 19 deletions src/engine/qss/qss_hyb_integrator.c
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,6 @@ void QSS_HYB_integrate(SIM_simulator simulate)
int nSZ, nLHSSt, nRHSSt, nHD, nHZ;
SD_eventData event = qssData->event;
double *d = qssData->d;
double tmp1[qssData->maxRHS];
int **SZ = qssData->SZ;
int **ZS = qssData->ZS;
int **HD = qssData->HD;
Expand Down Expand Up @@ -712,33 +711,21 @@ void QSS_HYB_integrate(SIM_simulator simulate)
for (i = 0; i < nRHSSt; i++) {
j = event[index].RHSSt[i];
infCf0 = j * coeffs;
elapsed = t - tq[j];
if (elapsed > 0) {
integrateState(infCf0, elapsed, q, qOrder);
}
}
nLHSSt = event[index].nLHSSt;
for (i = 0; i < nLHSSt; i++) {
j = event[index].LHSSt[i];
infCf0 = j * coeffs;
elapsed = t - tq[j];
elapsed = t - tx[j];
if (elapsed > 0) {
tmp1[i] = q[infCf0];
q[infCf0] = evaluatePoly(infCf0, elapsed, q, qOrder);
} else {
tmp1[i] = q[infCf0];
integrateState(infCf0, elapsed, x, xOrder);
}
tx[j] = t;
}
if (s >= 0) {
qssModel->events->handlerPos(index, q, d, a, t);
qssModel->events->handlerPos(index, x, d, a, t);
} else {
qssModel->events->handlerNeg(index, q, d, a, t);
qssModel->events->handlerNeg(index, x, d, a, t);
}
nLHSSt = event[index].nLHSSt;
for (i = 0; i < nLHSSt; i++) {
j = event[index].LHSSt[i];
infCf0 = j * coeffs;
x[infCf0] = q[infCf0];
q[infCf0] = tmp1[i];
tx[j] = t;
lqu[j] = dQRel[j] * fabs(x[infCf0]);
if (lqu[j] < dQMin[j]) {
Expand Down
26 changes: 6 additions & 20 deletions src/engine/qss/qss_seq_integrator.c
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ void QSS_SEQ_integrate(SIM_simulator simulate)
int nSZ, nLHSSt, nRHSSt, nHD, nHZ;
SD_eventData event = qssData->event;
double *d = qssData->d;
double tmp1[qssData->maxRHS];
int **SZ = qssData->SZ;
int **ZS = qssData->ZS;
int **HD = qssData->HD;
Expand Down Expand Up @@ -198,34 +197,21 @@ void QSS_SEQ_integrate(SIM_simulator simulate)
for (i = 0; i < nRHSSt; i++) {
j = event[index].RHSSt[i];
infCf0 = j * coeffs;
elapsed = t - tq[j];
if (elapsed > 0) {
integrateState(infCf0, elapsed, q, qOrder);
}
tq[j] = t;
}
nLHSSt = event[index].nLHSSt;
for (i = 0; i < nLHSSt; i++) {
j = event[index].LHSSt[i];
infCf0 = j * coeffs;
elapsed = t - tq[j];
elapsed = t - tx[j];
if (elapsed > 0) {
tmp1[i] = q[infCf0];
q[infCf0] = evaluatePoly(infCf0, elapsed, q, qOrder);
} else {
tmp1[i] = q[infCf0];
integrateState(infCf0, elapsed, x, xOrder);
}
tx[j] = t;
}
if (s >= 0) {
qssModel->events->handlerPos(index, q, d, a, t);
qssModel->events->handlerPos(index, x, d, a, t);
} else {
qssModel->events->handlerNeg(index, q, d, a, t);
qssModel->events->handlerNeg(index, x, d, a, t);
}
nLHSSt = event[index].nLHSSt;
for (i = 0; i < nLHSSt; i++) {
j = event[index].LHSSt[i];
infCf0 = j * coeffs;
x[infCf0] = q[infCf0];
q[infCf0] = tmp1[i];
tx[j] = t;
lqu[j] = dQRel[j] * fabs(x[infCf0]);
if (lqu[j] < dQMin[j]) {
Expand Down

0 comments on commit 2fea43c

Please sign in to comment.