From 42d749ef7d8ca3f6f5080fa9d82c45f2015a9d4b Mon Sep 17 00:00:00 2001 From: Francesco Lannutti Date: Tue, 6 Feb 2018 23:54:25 +0100 Subject: [PATCH] Additional fix proposal for CKTnoncon in NIiter --- src/maths/ni/niiter.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/maths/ni/niiter.c b/src/maths/ni/niiter.c index 882476cf7..540ce1d27 100644 --- a/src/maths/ni/niiter.c +++ b/src/maths/ni/niiter.c @@ -193,11 +193,15 @@ NIiter(CKTcircuit *ckt, int maxIter) return(E_ITERLIM); } - if ((ckt->CKTnoncon == 0) && (iterno != 1)) { - ckt->CKTnoncon = NIconvTest(ckt); - printf("niiter[%d], NIconvTest->%d\n", iterno, ckt->CKTnoncon); + if ((ckt->CKTnoncon == 0) && (iterno > 1)) { + if (old_noncon == 0) { + ckt->CKTnoncon = NIconvTest(ckt); + printf("niiter[%d], NIconvTest->%d\n", iterno, ckt->CKTnoncon); + } else { + printf("niiter[%d], skipping NIconvTest - CKTnoncon: %d\n", iterno, ckt->CKTnoncon); + } } else { - printf("niiter[%d], skipping NIconvTest\n", iterno); + printf("niiter[%d], skipping NIconvTest - CKTnoncon: %d\n", iterno, ckt->CKTnoncon); ckt->CKTnoncon = 1; } @@ -242,7 +246,7 @@ NIiter(CKTcircuit *ckt, int maxIter) ckt->CKTnoncon = ipass; ipass = 0; } - if (ckt->CKTnoncon == 0 && old_noncon == 0) { + if ((ckt->CKTnoncon == 0) && (old_noncon == 0)) { ckt->CKTstat->STATnumIter += iterno; FREE(OldCKTstate0); printf("niiter[%d], accepted and return\n", iterno);