45 if (ckt->CKTorder == 1) {
47 dd[0] = 1/ckt->CKTdeltaOld[0];
48 dd[1] = 1/ckt->CKTdeltaOld[1];
49 dd[2] = .5/(ckt->CKTdeltaOld[0] + ckt->CKTdeltaOld[1]);
55 dd[0] = 1/ckt->CKTdeltaOld[0];
56 dd[1] = 1/ckt->CKTdeltaOld[1];
57 dd[2] = 1/ckt->CKTdeltaOld[2];
58 dd[3] = 1/(ckt->CKTdeltaOld[0] + ckt->CKTdeltaOld[1]);
59 dd[4] = 1/(ckt->CKTdeltaOld[1] + ckt->CKTdeltaOld[2]);
60 dd[5] = .08333333333/(ckt->CKTdeltaOld[0] + ckt->CKTdeltaOld[1] +
71 dd[5] = ckt->CKTreltol/ckt->CKTdelta;
74 dtmp = ckt->CKTsols[0];
77 for (mh = ckt->CKTheadList; mh !=
NULL; mh = mh->
next) {
83 error = (*func)(mh->
head,ckt,&timetemp);
88 if (temp != timetemp) {
89 printf(
"timestep cut by device type %s from %g to %g\n",
103 if (ckt->CKTorder == 2) {
104 timetemp = sqrt(timetemp);
106 else if (ckt->CKTorder > 2) {
107 timetemp = exp(log(timetemp)/ckt->CKTorder);
110 ckt->CKTsols[0] = dtmp;
113 *timeStep =
MIN(temp,timetemp);
struct sCKTmodHead * next
int CKTtrunc(CKTcircuit *ckt, double *timeStep)