niiter.c: indentations

This commit is contained in:
h_vogt 2012-12-15 20:07:42 +01:00
parent ba6dd7b1af
commit cea4eb09d6
1 changed files with 60 additions and 59 deletions

View File

@ -44,35 +44,35 @@ NIiter(CKTcircuit *ckt, int maxIter)
ipass=0;
if( (ckt->CKTmode & MODETRANOP) && (ckt->CKTmode & MODEUIC)){
if( (ckt->CKTmode & MODETRANOP) && (ckt->CKTmode & MODEUIC)) {
temp = ckt->CKTrhsOld;
ckt->CKTrhsOld = ckt->CKTrhs;
ckt->CKTrhs = temp;
error = CKTload(ckt);
if(error) {
return(error);
}
error = CKTload(ckt);
if(error) {
return(error);
}
return(OK);
}
#ifdef WANT_SENSE2
if(ckt->CKTsenInfo){
if(ckt->CKTsenInfo) {
error = NIsenReinit(ckt);
if(error) return(error);
}
#endif
if(ckt->CKTniState & NIUNINITIALIZED) {
error = NIreinit(ckt);
if(error){
if(error) {
#ifdef STEPDEBUG
printf("re-init returned error \n");
#endif
return(error);
}
}
/* OldCKTstate0=TMALLOC(double, ckt->CKTnumStates + 1); */
for(;;){
/* OldCKTstate0=TMALLOC(double, ckt->CKTnumStates + 1); */
for(;;) {
ckt->CKTnoncon=0;
#ifdef NEWPRED
if(!(ckt->CKTmode & MODEINITPRED)) {
@ -88,7 +88,7 @@ NIiter(CKTcircuit *ckt, int maxIter)
#ifdef STEPDEBUG
printf("load returned error \n");
#endif
FREE(OldCKTstate0);
FREE(OldCKTstate0);
return(error);
}
/*printf("after loading, before solving\n");*/
@ -101,12 +101,12 @@ NIiter(CKTcircuit *ckt, int maxIter)
#ifdef STEPDEBUG
printf("pre-order returned error \n");
#endif
FREE(OldCKTstate0);
FREE(OldCKTstate0);
return(error); /* badly formed matrix */
}
ckt->CKTniState |= NIDIDPREORDER;
}
if( (ckt->CKTmode & MODEINITJCT) ||
if( (ckt->CKTmode & MODEINITJCT) ||
( (ckt->CKTmode & MODEINITTRAN) && (iterno==1))) {
ckt->CKTniState |= NISHOULDREORDER;
}
@ -114,18 +114,18 @@ NIiter(CKTcircuit *ckt, int maxIter)
if(ckt->CKTniState & NISHOULDREORDER) {
startTime = SPfrontEnd->IFseconds();
error = SMPreorder(ckt->CKTmatrix,ckt->CKTpivotAbsTol,
ckt->CKTpivotRelTol,ckt->CKTdiagGmin);
ckt->CKTpivotRelTol,ckt->CKTdiagGmin);
ckt->CKTstat->STATreorderTime +=
SPfrontEnd->IFseconds() - startTime;
SPfrontEnd->IFseconds() - startTime;
if(error) {
/* new feature - we can now find out something about what is
* wrong - so we ask for the troublesome entry
* wrong - so we ask for the troublesome entry
*/
SMPgetError(ckt->CKTmatrix,&i,&j);
message = TMALLOC(char, 1000); /* should be enough */
(void)sprintf(message,
"singular matrix: check nodes %s and %s\n",
NODENAME(ckt,i),NODENAME(ckt,j));
"singular matrix: check nodes %s and %s\n",
NODENAME(ckt,i),NODENAME(ckt,j));
SPfrontEnd->IFerror (ERR_WARNING, message, NULL);
FREE(message);
ckt->CKTstat->STATnumIter += iterno;
@ -139,9 +139,9 @@ NIiter(CKTcircuit *ckt, int maxIter)
} else {
startTime = SPfrontEnd->IFseconds();
error=SMPluFac(ckt->CKTmatrix,ckt->CKTpivotAbsTol,
ckt->CKTdiagGmin);
ckt->CKTdiagGmin);
ckt->CKTstat->STATdecompTime +=
SPfrontEnd->IFseconds() - startTime;
SPfrontEnd->IFseconds() - startTime;
if(error) {
if( error == E_SINGULAR ) {
ckt->CKTniState |= NISHOULDREORDER;
@ -155,46 +155,47 @@ NIiter(CKTcircuit *ckt, int maxIter)
#ifdef STEPDEBUG
printf("lufac returned error \n");
#endif
FREE(OldCKTstate0);
FREE(OldCKTstate0);
return(error);
}
}
/*moved it to here as if xspice is included then CKTload changes
CKTnumStates the first time it is run */
if(!OldCKTstate0)
OldCKTstate0=TMALLOC(double, ckt->CKTnumStates + 1);
for(i=0;i<ckt->CKTnumStates;i++) {
}
/*moved it to here as if xspice is included then CKTload changes
CKTnumStates the first time it is run */
if(!OldCKTstate0)
OldCKTstate0=TMALLOC(double, ckt->CKTnumStates + 1);
for(i=0; i<ckt->CKTnumStates; i++) {
*(OldCKTstate0+i) = *(ckt->CKTstate0+i);
}
startTime = SPfrontEnd->IFseconds();
SMPsolve(ckt->CKTmatrix,ckt->CKTrhs,ckt->CKTrhsSpare);
ckt->CKTstat->STATsolveTime += SPfrontEnd->IFseconds() -
startTime;
startTime;
#ifdef STEPDEBUG
/*XXXX*/
if (*ckt->CKTrhs != 0.0)
printf("NIiter: CKTrhs[0] = %g\n", *ckt->CKTrhs);
if (*ckt->CKTrhsSpare != 0.0)
printf("NIiter: CKTrhsSpare[0] = %g\n", *ckt->CKTrhsSpare);
if (*ckt->CKTrhsOld != 0.0)
printf("NIiter: CKTrhsOld[0] = %g\n", *ckt->CKTrhsOld);
/*XXXX*/
/*XXXX*/
if (*ckt->CKTrhs != 0.0)
printf("NIiter: CKTrhs[0] = %g\n", *ckt->CKTrhs);
if (*ckt->CKTrhsSpare != 0.0)
printf("NIiter: CKTrhsSpare[0] = %g\n", *ckt->CKTrhsSpare);
if (*ckt->CKTrhsOld != 0.0)
printf("NIiter: CKTrhsOld[0] = %g\n", *ckt->CKTrhsOld);
/*XXXX*/
#endif
*ckt->CKTrhs = 0;
*ckt->CKTrhsSpare = 0;
*ckt->CKTrhsOld = 0;
if(iterno > maxIter) {
/*fprintf(stderr,"too many iterations without convergence: %d iter's (max iter == %d)\n",
iterno,maxIter);*/
if(iterno > maxIter) {
/*fprintf(stderr,"too many iterations without convergence: %d iter's (max iter == %d)\n",
iterno,maxIter);*/
ckt->CKTstat->STATnumIter += iterno;
FREE(errMsg);
errMsg = TMALLOC(char, strlen(msg) + 1);
strcpy(errMsg,msg);
#ifdef STEPDEBUG
printf("iterlim exceeded \n");
printf("iterlim exceeded \n");
#endif
FREE(OldCKTstate0);
FREE(OldCKTstate0);
return(E_ITERLIM);
}
if(ckt->CKTnoncon==0 && iterno!=1) {
@ -207,33 +208,33 @@ NIiter(CKTcircuit *ckt, int maxIter)
#endif
}
if( (ckt->CKTnodeDamping!=0) && (ckt->CKTnoncon!=0) &&
if( (ckt->CKTnodeDamping!=0) && (ckt->CKTnoncon!=0) &&
((ckt->CKTmode & MODETRANOP) || (ckt->CKTmode & MODEDCOP)) &&
(iterno>1) ) {
maxdiff=0;
for (node = ckt->CKTnodes->next; node; node = node->next) {
maxdiff=0;
for (node = ckt->CKTnodes->next; node; node = node->next) {
if(node->type == NODE_VOLTAGE) {
diff = (ckt->CKTrhs)[node->number] -
(ckt->CKTrhsOld)[node->number];
if (diff>maxdiff) maxdiff=diff;
diff = (ckt->CKTrhs)[node->number] -
(ckt->CKTrhsOld)[node->number];
if (diff>maxdiff) maxdiff=diff;
}
}
if (maxdiff>10) {
}
if (maxdiff>10) {
damp_factor=10/maxdiff;
if (damp_factor<0.1) damp_factor=0.1;
for (node = ckt->CKTnodes->next; node; node = node->next) {
diff = (ckt->CKTrhs)[node->number] -
(ckt->CKTrhsOld)[node->number];
(ckt->CKTrhs)[node->number]=(ckt->CKTrhsOld)[node->number] +
diff = (ckt->CKTrhs)[node->number] -
(ckt->CKTrhsOld)[node->number];
(ckt->CKTrhs)[node->number]=(ckt->CKTrhsOld)[node->number] +
(damp_factor * diff);
}
for(i=0;i<ckt->CKTnumStates;i++) {
for(i=0; i<ckt->CKTnumStates; i++) {
diff = *(ckt->CKTstate0+i) - *(OldCKTstate0+i);
*(ckt->CKTstate0+i) = *(OldCKTstate0+i) +
(damp_factor * diff);
(damp_factor * diff);
}
}
}
}
@ -267,13 +268,13 @@ NIiter(CKTcircuit *ckt, int maxIter)
} else {
ckt->CKTstat->STATnumIter += iterno;
#ifdef STEPDEBUG
printf("bad initf state \n");
printf("bad initf state \n");
#endif
FREE(OldCKTstate0);
return(E_INTERN);
/* impossible - no such INITF flag! */
}
/* build up the lvnim1 array from the lvn array */
temp = ckt->CKTrhsOld;
ckt->CKTrhsOld = ckt->CKTrhs;