diff --git a/src/spicelib/analysis/cktterr.c b/src/spicelib/analysis/cktterr.c index 9852b2acf..66f56fea7 100644 --- a/src/spicelib/analysis/cktterr.c +++ b/src/spicelib/analysis/cktterr.c @@ -10,68 +10,77 @@ Author: 1985 Thomas L. Quarles void -CKTterr(int qcap, CKTcircuit *ckt, double *timeStep) +CKTterr (int qcap, CKTcircuit *ckt, double *timeStep) { - double volttol; - double chargetol; - double tol; - double del; - double diff[8]; - double deltmp[8]; - double factor=0; - int i; - int j; - static double gearCoeff[] = { + double volttol, chargetol, tol, del ; + double diff [8] ; + double deltmp [8] ; + double factor = 0 ; + int i, j ; + static double gearCoeff [] = { .5, .2222222222, .1363636364, .096, .07299270073, .05830903790 - }; - static double trapCoeff[] = { + } ; + static double trapCoeff [] = { .5, .08333333333 - }; + } ; + + volttol = ckt->CKTabstol + ckt->CKTreltol * MAX (fabs (ckt->CKTstate0 [ccap]), fabs (ckt->CKTstate1 [ccap])) ; + + chargetol = MAX (fabs (ckt->CKTstate0 [qcap]), fabs (ckt->CKTstate1 [qcap])) ; + chargetol = ckt->CKTreltol * MAX (chargetol, ckt->CKTchgtol) / ckt->CKTdelta ; + + tol = MAX (volttol, chargetol) ; - volttol = ckt->CKTabstol + ckt->CKTreltol * - MAX( fabs(ckt->CKTstate0[ccap]), fabs(ckt->CKTstate1[ccap])); - - chargetol = MAX(fabs(ckt->CKTstate0[qcap]),fabs(ckt->CKTstate1[qcap])); - chargetol = ckt->CKTreltol * MAX(chargetol,ckt->CKTchgtol)/ckt->CKTdelta; - tol = MAX(volttol,chargetol); /* now divided differences */ - for(i=ckt->CKTorder+1;i>=0;i--) { - diff[i] = ckt->CKTstates[i][qcap]; + for (i = ckt->CKTorder + 1 ; i >= 0 ; i--) + { + diff [i] = ckt->CKTstates[i] [qcap] ; } - for(i=0 ; i <= ckt->CKTorder ; i++) { - deltmp[i] = ckt->CKTdeltaOld[i]; + for (i = 0 ; i <= ckt->CKTorder ; i++) + { + deltmp [i] = ckt->CKTdeltaOld [i] ; } - j = ckt->CKTorder; - for (;;) { - for(i=0;i <= j;i++) { - diff[i] = (diff[i] - diff[i+1])/deltmp[i]; + j = ckt->CKTorder ; + for (;;) + { + for (i = 0 ; i <= j ; i++) + { + diff [i] = (diff [i] - diff [i + 1]) / deltmp [i] ; } - if (--j < 0) break; - for(i=0;i <= j;i++) { - deltmp[i] = deltmp[i+1] + ckt->CKTdeltaOld[i]; + + if (--j < 0) + break ; + + for (i = 0 ; i <= j ; i++) + { + deltmp [i] = deltmp [i + 1] + ckt->CKTdeltaOld [i] ; } } - switch(ckt->CKTintegrateMethod) { + switch (ckt->CKTintegrateMethod) + { case GEAR: - factor = gearCoeff[ckt->CKTorder-1]; - break; + factor = gearCoeff [ckt->CKTorder - 1] ; + break ; case TRAPEZOIDAL: - factor = trapCoeff[ckt->CKTorder - 1] ; - break; + factor = trapCoeff [ckt->CKTorder - 1] ; + break ; } - del = ckt->CKTtrtol * tol/MAX(ckt->CKTabstol,factor * fabs(diff[0])); - if(ckt->CKTorder == 2) { - del = sqrt(del); + del = ckt->CKTtrtol * tol / MAX (ckt->CKTabstol, factor * fabs (diff [0])) ; + if (ckt->CKTorder == 2) + { + del = sqrt (del) ; } else if (ckt->CKTorder > 2) { - del = exp(log(del)/ckt->CKTorder); + del = exp (log (del) / ckt->CKTorder) ; } - *timeStep = MIN(*timeStep,del); - return; + + *timeStep = MIN (*timeStep, del) ; + + return ; } diff --git a/src/spicelib/analysis/ckttrunc.c b/src/spicelib/analysis/ckttrunc.c index cbf57dcc5..a139dc363 100644 --- a/src/spicelib/analysis/ckttrunc.c +++ b/src/spicelib/analysis/ckttrunc.c @@ -17,43 +17,51 @@ Author: 1985 Thomas L. Quarles int -CKTtrunc(CKTcircuit *ckt, double *timeStep) +CKTtrunc (CKTcircuit *ckt, double *timeStep) { #ifndef NEWTRUNC - int i; - double timetemp; -#ifdef STEPDEBUG - double debugtemp; -#endif /* STEPDEBUG */ - double startTime; - int error = OK; + int i ; + double timetemp ; - startTime = SPfrontEnd->IFseconds(); - - timetemp = HUGE; - for (i=0;iDEVtrunc && ckt->CKThead[i]) { #ifdef STEPDEBUG - debugtemp = timetemp; + double debugtemp ; #endif /* STEPDEBUG */ - error = DEVices[i]->DEVtrunc (ckt->CKThead[i], ckt, &timetemp); - if(error) { - ckt->CKTstat->STATtranTruncTime += SPfrontEnd->IFseconds() - - startTime; - return(error); + + double startTime ; + int error = OK ; + + startTime = SPfrontEnd->IFseconds () ; + + timetemp = HUGE ; + for (i = 0 ; i < DEVmaxnum ; i++) + { + if (DEVices[i] && DEVices[i]->DEVtrunc && ckt->CKThead[i]) + { + +#ifdef STEPDEBUG + debugtemp = timetemp ; +#endif /* STEPDEBUG */ + + error = DEVices[i]->DEVtrunc (ckt->CKThead[i], ckt, &timetemp) ; + if (error) + { + ckt->CKTstat->STATtranTruncTime += SPfrontEnd->IFseconds () - startTime ; + return (error) ; } + #ifdef STEPDEBUG - if(debugtemp != timetemp) { - printf("timestep cut by device type %s from %g to %g\n", - DEVices[i]->DEVpublic.name, debugtemp, timetemp); + if (debugtemp != timetemp) + { + printf ("timestep cut by device type %s from %g to %g\n", DEVices[i]->DEVpublic.name, debugtemp, timetemp) ; } #endif /* STEPDEBUG */ + } } - *timeStep = MIN(2 * *timeStep,timetemp); + *timeStep = MIN (2 * *timeStep, timetemp) ; - ckt->CKTstat->STATtranTruncTime += SPfrontEnd->IFseconds() - startTime; - return(OK); + ckt->CKTstat->STATtranTruncTime += SPfrontEnd->IFseconds () - startTime ; + return (OK) ; #else /* NEWTRUNC */ int i; CKTnode *node; diff --git a/src/spicelib/devices/bsim4/b4trunc.c b/src/spicelib/devices/bsim4/b4trunc.c index aa107ca0b..24819f401 100644 --- a/src/spicelib/devices/bsim4/b4trunc.c +++ b/src/spicelib/devices/bsim4/b4trunc.c @@ -18,43 +18,49 @@ int -BSIM4trunc( -GENmodel *inModel, -CKTcircuit *ckt, -double *timeStep) +BSIM4trunc (GENmodel *inModel, CKTcircuit *ckt, double *timeStep) { -BSIM4model *model = (BSIM4model*)inModel; -BSIM4instance *here; + BSIM4model *model = (BSIM4model*)inModel ; + BSIM4instance *here ; #ifdef STEPDEBUG - double debugtemp; + double debugtemp ; #endif /* STEPDEBUG */ - for (; model != NULL; model = model->BSIM4nextModel) - { for (here = model->BSIM4instances; here != NULL; - here = here->BSIM4nextInstance) - { + for ( ; model != NULL ; model = model->BSIM4nextModel) + { + for (here = model->BSIM4instances ; here != NULL ; here = here->BSIM4nextInstance) + { + #ifdef STEPDEBUG - debugtemp = *timeStep; + debugtemp = *timeStep ; #endif /* STEPDEBUG */ - CKTterr(here->BSIM4qb,ckt,timeStep); - CKTterr(here->BSIM4qg,ckt,timeStep); - CKTterr(here->BSIM4qd,ckt,timeStep); + + CKTterr (here->BSIM4qb, ckt, timeStep) ; + CKTterr (here->BSIM4qg, ckt, timeStep) ; + CKTterr (here->BSIM4qd, ckt, timeStep) ; + if (here->BSIM4trnqsMod) - CKTterr(here->BSIM4qcdump,ckt,timeStep); + CKTterr (here->BSIM4qcdump, ckt, timeStep) ; + if (here->BSIM4rbodyMod) - { CKTterr(here->BSIM4qbs,ckt,timeStep); - CKTterr(here->BSIM4qbd,ckt,timeStep); - } - if (here->BSIM4rgateMod == 3) - CKTterr(here->BSIM4qgmid,ckt,timeStep); + { + CKTterr (here->BSIM4qbs, ckt, timeStep) ; + CKTterr (here->BSIM4qbd, ckt, timeStep) ; + } + + if (here->BSIM4rgateMod == 3) + CKTterr (here->BSIM4qgmid, ckt, timeStep) ; + #ifdef STEPDEBUG - if(debugtemp != *timeStep) - { printf("device %s reduces step from %g to %g\n", - here->BSIM4name,debugtemp,*timeStep); + if (debugtemp != *timeStep) + { + printf ("device %s reduces step from %g to %g\n", here->BSIM4name, debugtemp, *timeStep) ; } #endif /* STEPDEBUG */ + } } - return(OK); + + return (OK) ; } diff --git a/src/spicelib/devices/cap/captrunc.c b/src/spicelib/devices/cap/captrunc.c index add70b94a..3948eef98 100644 --- a/src/spicelib/devices/cap/captrunc.c +++ b/src/spicelib/devices/cap/captrunc.c @@ -14,17 +14,18 @@ Modified: September 2003 Paolo Nenzi int -CAPtrunc(GENmodel *inModel, CKTcircuit *ckt, double *timeStep) +CAPtrunc (GENmodel *inModel, CKTcircuit *ckt, double *timeStep) { - CAPmodel *model = (CAPmodel*)inModel; - CAPinstance *here; + CAPmodel *model = (CAPmodel*)inModel ; + CAPinstance *here ; - for( ; model!= NULL; model = model->CAPnextModel) { - for(here = model->CAPinstances ; here != NULL ; - here = here->CAPnextInstance) { - - CKTterr(here->CAPqcap,ckt,timeStep); + for ( ; model != NULL ; model = model->CAPnextModel) + { + for (here = model->CAPinstances ; here != NULL ; here = here->CAPnextInstance) + { + CKTterr (here->CAPqcap, ckt, timeStep) ; } } - return(OK); + + return (OK) ; } diff --git a/src/spicelib/devices/ind/indtrunc.c b/src/spicelib/devices/ind/indtrunc.c index 7d42cd895..f1ec0763d 100644 --- a/src/spicelib/devices/ind/indtrunc.c +++ b/src/spicelib/devices/ind/indtrunc.c @@ -13,16 +13,17 @@ Author: 1985 Thomas L. Quarles int -INDtrunc(GENmodel *inModel, CKTcircuit *ckt, double *timeStep) +INDtrunc (GENmodel *inModel, CKTcircuit *ckt, double *timeStep) { - INDmodel *model = (INDmodel*)inModel; - INDinstance *here; - for( ; model!= NULL; model = model->INDnextModel) { - for(here = model->INDinstances ; here != NULL ; - here = here->INDnextInstance) { - - CKTterr(here->INDflux,ckt,timeStep); + INDmodel *model = (INDmodel*)inModel ; + INDinstance *here ; + for ( ; model!= NULL ; model = model->INDnextModel) + { + for (here = model->INDinstances ; here != NULL ; here = here->INDnextInstance) + { + CKTterr (here->INDflux, ckt, timeStep) ; } } - return(OK); + + return (OK) ; }