From 5b6c4a9ebb10f0de7f693c4c9d2e1052ebe80f8f Mon Sep 17 00:00:00 2001 From: Francesco Lannutti Date: Sun, 22 Sep 2013 21:36:17 +0200 Subject: [PATCH] GMIN Stepping trials --- src/maths/ni/niconv.c | 24 +++++++++++++++++++++--- src/spicelib/analysis/cktload.c | 6 +++--- 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/maths/ni/niconv.c b/src/maths/ni/niconv.c index ebedfb01a..bfdfa3059 100644 --- a/src/maths/ni/niconv.c +++ b/src/maths/ni/niconv.c @@ -22,6 +22,7 @@ NIconvTest (CKTcircuit *ckt) int i ; /* generic loop variable */ int size ; /* size of the matrix */ CKTnode *node ; /* current matrix entry */ + double old, new, tol ; #ifdef KIRCHHOFF double maximum ; @@ -30,8 +31,6 @@ NIconvTest (CKTcircuit *ckt) #ifdef STEPDEBUG int j ; #endif -#else - double old, new, tol ; #endif size = SMPmatSize (ckt->CKTmatrix) ; @@ -53,9 +52,27 @@ NIconvTest (CKTcircuit *ckt) node = node->next ; #ifdef KIRCHHOFF - /* KCL Verification */ if ((node->type == SP_VOLTAGE) && (!ckt->CKTnodeIsLinear [i])) { + new = ckt->CKTrhs [i] ; + old = ckt->CKTrhsOld [i] ; + tol = ckt->CKTreltol * (MAX (fabs (old), fabs (new))) + ckt->CKTvoltTol ; + if (fabs (new - old) > tol) + { + +#ifdef STEPDEBUG + fprintf (err, " non-convergence at node (type=3) %s (fabs(new-old)>tol --> fabs(%g-%g)>%g)\n", CKTnodName (ckt, i), new, old, tol) ; + fprintf (err, " 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 ; + } + + + /* KCL Verification */ + maximum = 0 ; ptr = ckt->CKTmkCurKCLarray [i] ; @@ -87,6 +104,7 @@ NIconvTest (CKTcircuit *ckt) /* Check Convergence */ if (fabs (ckt->CKTfvk [i] + ckt->CKTgmin * ckt->CKTrhsOld [i]) > (ckt->CKTreltol * maximum + ckt->CKTabstol)) +// if (fabs (ckt->CKTfvk [i]) > (ckt->CKTreltol * maximum + ckt->CKTabstol)) { ckt->CKTtroubleNode = i ; ckt->CKTtroubleElt = NULL ; diff --git a/src/spicelib/analysis/cktload.c b/src/spicelib/analysis/cktload.c index 964037af8..f9ceade55 100644 --- a/src/spicelib/analysis/cktload.c +++ b/src/spicelib/analysis/cktload.c @@ -81,13 +81,13 @@ CKTload(CKTcircuit *ckt) #ifdef KIRCHHOFF /* GMIN Stepping */ - for (i = 1 ; i <= size ; i++) +/* for (i = 1 ; i <= size ; i++) { if (ckt->CKTdiag [i] != NULL) { - *(ckt->CKTdiag [i]) += ckt->CKTgmin ; + *(ckt->CKTdiag [i]) += ckt->CKTdiagGmin ; } - } + }*/ #endif #ifdef XSPICE