Tentative reduction of order for generating new time step.
Has to be checked further!
This commit is contained in:
parent
eb65673f92
commit
913c735139
|
|
@ -92,8 +92,8 @@ CKTtrunc(CKTcircuit *ckt, double *timeStep)
|
||||||
#endif
|
#endif
|
||||||
if(diff != 0) {
|
if(diff != 0) {
|
||||||
// if (!AlmostEqualUlps(diff, 0, 10)) {
|
// if (!AlmostEqualUlps(diff, 0, 10)) {
|
||||||
tmp = ckt->CKTlteTrtol * tol * 2 /diff;
|
tmp = ckt->CKTlteTrtol * tol * 2 / diff;
|
||||||
tmp = ckt->CKTdeltaOld[0]*sqrt(fabs(tmp));
|
tmp = ckt->CKTdeltaOld[0]*fabs(tmp);
|
||||||
timetemp = MIN(timetemp,tmp);
|
timetemp = MIN(timetemp,tmp);
|
||||||
#ifdef STEPDEBUG
|
#ifdef STEPDEBUG
|
||||||
printf("tol = %g, diff = %g, h->%g\n",tol,diff,tmp);
|
printf("tol = %g, diff = %g, h->%g\n",tol,diff,tmp);
|
||||||
|
|
@ -106,6 +106,33 @@ CKTtrunc(CKTcircuit *ckt, double *timeStep)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
for (i = 1; i < size; i++) {
|
||||||
|
tol = MAX(fabs(ckt->CKTrhs[i]), fabs(ckt->CKTpred[i])) *
|
||||||
|
ckt->CKTlteReltol + ckt->CKTlteAbstol;
|
||||||
|
node = node->next;
|
||||||
|
if (node->type != SP_VOLTAGE) continue;
|
||||||
|
diff = ckt->CKTrhs[i] - ckt->CKTpred[i];
|
||||||
|
#ifdef STEPDEBUG
|
||||||
|
printf("%s: cor=%g, pred=%g ", node->name,
|
||||||
|
ckt->CKTrhs[i], ckt->CKTpred[i]);
|
||||||
|
#endif
|
||||||
|
if (diff != 0) {
|
||||||
|
// if (!AlmostEqualUlps(diff, 0, 10)) {
|
||||||
|
tmp = ckt->CKTlteTrtol * tol * 2 / diff;
|
||||||
|
tmp = ckt->CKTdeltaOld[0] * sqrt(fabs(tmp));
|
||||||
|
timetemp = MIN(timetemp, tmp);
|
||||||
|
#ifdef STEPDEBUG
|
||||||
|
printf("tol = %g, diff = %g, h->%g\n", tol, diff, tmp);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
#ifdef STEPDEBUG
|
||||||
|
printf("diff is 0\n");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
/* case 2:
|
||||||
for(i=1;i<size;i++) {
|
for(i=1;i<size;i++) {
|
||||||
tol = MAX( fabs(ckt->CKTrhs[i]),fabs(ckt->CKTpred[i]))*
|
tol = MAX( fabs(ckt->CKTrhs[i]),fabs(ckt->CKTpred[i]))*
|
||||||
ckt->CKTlteReltol+ckt->CKTlteAbstol;
|
ckt->CKTlteReltol+ckt->CKTlteAbstol;
|
||||||
|
|
@ -133,7 +160,7 @@ CKTtrunc(CKTcircuit *ckt, double *timeStep)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break; */
|
||||||
default:
|
default:
|
||||||
return(E_ORDER);
|
return(E_ORDER);
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue