a new variant of a fix, don't accept solution if previous one was marked CKTnoncon
this is only a "sketch" for the test-poly-3.cir debugging session. there are more CKTnoncon in niiter, and all need to be studied/ponderd with respect to this "fix"
This commit is contained in:
parent
cf6625a5a8
commit
acb7a6dffe
|
|
@ -26,6 +26,7 @@ int
|
||||||
NIiter(CKTcircuit *ckt, int maxIter)
|
NIiter(CKTcircuit *ckt, int maxIter)
|
||||||
{
|
{
|
||||||
double startTime, *OldCKTstate0 = NULL;
|
double startTime, *OldCKTstate0 = NULL;
|
||||||
|
int old_noncon;
|
||||||
int error, i, j;
|
int error, i, j;
|
||||||
|
|
||||||
int iterno = 0;
|
int iterno = 0;
|
||||||
|
|
@ -66,6 +67,7 @@ NIiter(CKTcircuit *ckt, int maxIter)
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
|
||||||
|
old_noncon = ckt->CKTnoncon;
|
||||||
ckt->CKTnoncon = 0;
|
ckt->CKTnoncon = 0;
|
||||||
|
|
||||||
#ifdef NEWPRED
|
#ifdef NEWPRED
|
||||||
|
|
@ -240,7 +242,7 @@ NIiter(CKTcircuit *ckt, int maxIter)
|
||||||
ckt->CKTnoncon = ipass;
|
ckt->CKTnoncon = ipass;
|
||||||
ipass = 0;
|
ipass = 0;
|
||||||
}
|
}
|
||||||
if (ckt->CKTnoncon == 0) {
|
if (ckt->CKTnoncon == 0 && old_noncon == 0) {
|
||||||
ckt->CKTstat->STATnumIter += iterno;
|
ckt->CKTstat->STATnumIter += iterno;
|
||||||
FREE(OldCKTstate0);
|
FREE(OldCKTstate0);
|
||||||
printf("niiter[%d], accepted and return\n", iterno);
|
printf("niiter[%d], accepted and return\n", iterno);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue