Tentative reduction of order for generating new time step.
Has to be checked further!
This commit is contained in:
parent
eb65673f92
commit
913c735139
|
|
@ -93,7 +93,7 @@ CKTtrunc(CKTcircuit *ckt, double *timeStep)
|
|||
if(diff != 0) {
|
||||
// if (!AlmostEqualUlps(diff, 0, 10)) {
|
||||
tmp = ckt->CKTlteTrtol * tol * 2 / diff;
|
||||
tmp = ckt->CKTdeltaOld[0]*sqrt(fabs(tmp));
|
||||
tmp = ckt->CKTdeltaOld[0]*fabs(tmp);
|
||||
timetemp = MIN(timetemp,tmp);
|
||||
#ifdef STEPDEBUG
|
||||
printf("tol = %g, diff = %g, h->%g\n",tol,diff,tmp);
|
||||
|
|
@ -112,6 +112,33 @@ CKTtrunc(CKTcircuit *ckt, double *timeStep)
|
|||
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++) {
|
||||
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]);
|
||||
|
|
@ -133,7 +160,7 @@ CKTtrunc(CKTcircuit *ckt, double *timeStep)
|
|||
#endif
|
||||
}
|
||||
}
|
||||
break;
|
||||
break; */
|
||||
default:
|
||||
return(E_ORDER);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in New Issue