Fixed the case in which the KCL is not enabled
This commit is contained in:
parent
0e59399e2a
commit
d75fe9e10c
|
|
@ -28,9 +28,10 @@ NIconvTest(CKTcircuit *ckt)
|
||||||
double tol;
|
double tol;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
size = SMPmatSize (ckt->CKTmatrix) ;
|
size = SMPmatSize(ckt->CKTmatrix);
|
||||||
|
|
||||||
#ifndef KIRCHHOFF
|
#ifndef KIRCHHOFF
|
||||||
|
node = ckt->CKTnodes;
|
||||||
#ifdef STEPDEBUG
|
#ifdef STEPDEBUG
|
||||||
for (i=1;i<=size;i++) {
|
for (i=1;i<=size;i++) {
|
||||||
new = ckt->CKTrhs [i] ;
|
new = ckt->CKTrhs [i] ;
|
||||||
|
|
@ -38,8 +39,6 @@ NIconvTest(CKTcircuit *ckt)
|
||||||
printf("chk for convergence: %s new: %g old: %g\n",CKTnodName(ckt,i),new,old);
|
printf("chk for convergence: %s new: %g old: %g\n",CKTnodName(ckt,i),new,old);
|
||||||
}
|
}
|
||||||
#endif /* STEPDEBUG */
|
#endif /* STEPDEBUG */
|
||||||
|
|
||||||
node = ckt->CKTnodes ;
|
|
||||||
for (i=1;i<=size;i++) {
|
for (i=1;i<=size;i++) {
|
||||||
node = node->next;
|
node = node->next;
|
||||||
new = ckt->CKTrhs [i] ;
|
new = ckt->CKTrhs [i] ;
|
||||||
|
|
@ -51,6 +50,18 @@ NIconvTest(CKTcircuit *ckt)
|
||||||
#ifdef STEPDEBUG
|
#ifdef STEPDEBUG
|
||||||
printf(" non-convergence at node (type=3) %s (fabs(new-old)>tol --> fabs(%g-%g)>%g)\n",CKTnodName(ckt,i),new,old,tol);
|
printf(" non-convergence at node (type=3) %s (fabs(new-old)>tol --> fabs(%g-%g)>%g)\n",CKTnodName(ckt,i),new,old,tol);
|
||||||
printf(" reltol: %g voltTol: %g (tol=reltol*(MAX(fabs(old),fabs(new))) + voltTol)\n",ckt->CKTreltol,ckt->CKTvoltTol);
|
printf(" reltol: %g voltTol: %g (tol=reltol*(MAX(fabs(old),fabs(new))) + voltTol)\n",ckt->CKTreltol,ckt->CKTvoltTol);
|
||||||
|
#endif /* STEPDEBUG */
|
||||||
|
ckt->CKTtroubleNode = i;
|
||||||
|
ckt->CKTtroubleElt = NULL;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
tol = ckt->CKTreltol * (MAX(fabs(old),fabs(new))) +
|
||||||
|
ckt->CKTabstol;
|
||||||
|
if (fabs(new-old) >tol ) {
|
||||||
|
#ifdef STEPDEBUG
|
||||||
|
printf(" non-convergence at node (type=%d) %s (fabs(new-old)>tol --> fabs(%g-%g)>%g)\n",node->type,CKTnodName(ckt,i),new,old,tol);
|
||||||
|
printf(" reltol: %g abstol: %g (tol=reltol*(MAX(fabs(old),fabs(new))) + abstol)\n",ckt->CKTreltol,ckt->CKTabstol);
|
||||||
#endif /* STEPDEBUG */
|
#endif /* STEPDEBUG */
|
||||||
ckt->CKTtroubleNode = i;
|
ckt->CKTtroubleNode = i;
|
||||||
ckt->CKTtroubleElt = NULL;
|
ckt->CKTtroubleElt = NULL;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue