From 0b7dc09fc191c672edc2df902f25a7cdbc6b665e Mon Sep 17 00:00:00 2001 From: Francesco Lannutti Date: Sun, 9 Aug 2020 09:12:53 +0200 Subject: [PATCH] Fixed the accounting statistics for SPICE and CIDER about number of elements in KLU --- src/ciderlib/oned/onesolve.c | 10 ++++------ src/ciderlib/twod/twosolve.c | 12 ++++-------- src/spicelib/analysis/cktacct.c | 5 ++--- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/src/ciderlib/oned/onesolve.c b/src/ciderlib/oned/onesolve.c index e446e1e89..95a09e2a2 100644 --- a/src/ciderlib/oned/onesolve.c +++ b/src/ciderlib/oned/onesolve.c @@ -635,9 +635,7 @@ ONEequilSolve(ONEdevice *pDevice) return ; // Francesco Lannutti - Fix KLU return values } } - printf ("CIDER: KLU to be fixed: spElementCount\n") ; - pDevice->numOrigEquil = 0 ; //pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->lnz + pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->unz - //+ pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->nzoff ; + pDevice->numOrigEquil = (int)pDevice->matrix->SMPkluMatrix->KLUmatrixNZ ; } else { pDevice->numOrigEquil = spElementCount (pDevice->matrix->SPmatrix) ; } @@ -668,7 +666,7 @@ ONEequilSolve(ONEdevice *pDevice) #ifdef KLU if (pDevice->matrix->CKTkluMODE) { pDevice->numFillEquil = pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->lnz + pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->unz - + pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->nzoff - (int)pDevice->matrix->SMPkluMatrix->KLUmatrixNZ ; + - (int)pDevice->matrix->SMPkluMatrix->KLUmatrixNZ ; } else { #endif @@ -781,7 +779,7 @@ ONEbiasSolve(ONEdevice *pDevice, int iterationLimit, return ; // Francesco Lannutti - Fix KLU return values } } - pDevice->numOrigBias = 0 ; // Francesco Lannutti - Fix for KLU + pDevice->numOrigBias = (int)pDevice->matrix->SMPkluMatrix->KLUmatrixNZ ; } else { pDevice->numOrigBias = spElementCount(pDevice->matrix->SPmatrix); } @@ -827,7 +825,7 @@ ONEbiasSolve(ONEdevice *pDevice, int iterationLimit, #ifdef KLU if (pDevice->matrix->CKTkluMODE) { pDevice->numFillBias = pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->lnz + pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->unz - + pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->nzoff - (int)pDevice->matrix->SMPkluMatrix->KLUmatrixNZ ; + - (int)pDevice->matrix->SMPkluMatrix->KLUmatrixNZ ; } else { #endif diff --git a/src/ciderlib/twod/twosolve.c b/src/ciderlib/twod/twosolve.c index 64617a14c..bc744667f 100644 --- a/src/ciderlib/twod/twosolve.c +++ b/src/ciderlib/twod/twosolve.c @@ -549,9 +549,7 @@ int TWOequilSolve(TWOdevice *pDevice) return E_NOMEM ; // Francesco Lannutti - Fix KLU return values } } - printf ("CIDER: KLU to be fixed: spElementCount\n") ; - pDevice->numOrigEquil = 0 ; //pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->lnz + pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->unz - //+ pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->nzoff ; + pDevice->numOrigEquil = (int)pDevice->matrix->SMPkluMatrix->KLUmatrixNZ ; } else { pDevice->numOrigEquil = spElementCount (pDevice->matrix->SPmatrix) ; } @@ -582,7 +580,7 @@ int TWOequilSolve(TWOdevice *pDevice) #ifdef KLU if (pDevice->matrix->CKTkluMODE) { pDevice->numFillEquil = pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->lnz + pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->unz - + pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->nzoff - (int)pDevice->matrix->SMPkluMatrix->KLUmatrixNZ ; + - (int)pDevice->matrix->SMPkluMatrix->KLUmatrixNZ ; } else { #endif @@ -708,9 +706,7 @@ TWObiasSolve(TWOdevice *pDevice, int iterationLimit, BOOLEAN tranAnalysis, return ; // Francesco Lannutti - Fix KLU return values } } - printf ("CIDER: KLU to be fixed: spElementCount\n") ; - pDevice->numOrigBias = 0 ; //pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->lnz + pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->unz - //+ pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->nzoff ; + pDevice->numOrigBias = (int)pDevice->matrix->SMPkluMatrix->KLUmatrixNZ ; } else { pDevice->numOrigBias = spElementCount(pDevice->matrix->SPmatrix); } @@ -756,7 +752,7 @@ TWObiasSolve(TWOdevice *pDevice, int iterationLimit, BOOLEAN tranAnalysis, #ifdef KLU if (pDevice->matrix->CKTkluMODE) { pDevice->numFillBias = pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->lnz + pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->unz - + pDevice->matrix->SMPkluMatrix->KLUmatrixNumeric->nzoff - (int)pDevice->matrix->SMPkluMatrix->KLUmatrixNZ ; + - (int)pDevice->matrix->SMPkluMatrix->KLUmatrixNZ ; } else { #endif diff --git a/src/spicelib/analysis/cktacct.c b/src/spicelib/analysis/cktacct.c index 52a38c0a2..91253f90b 100644 --- a/src/spicelib/analysis/cktacct.c +++ b/src/spicelib/analysis/cktacct.c @@ -59,7 +59,7 @@ CKTacct(CKTcircuit *ckt, JOB *anal, int which, IFvalue *val) #ifdef KLU if (ckt->CKTmatrix->CKTkluMODE) val->iValue = ckt->CKTmatrix->SMPkluMatrix->KLUmatrixNumeric->lnz + ckt->CKTmatrix->SMPkluMatrix->KLUmatrixNumeric->unz - + ckt->CKTmatrix->SMPkluMatrix->KLUmatrixNumeric->nzoff - (int)ckt->CKTmatrix->SMPkluMatrix->KLUmatrixNZ ; + - (int)ckt->CKTmatrix->SMPkluMatrix->KLUmatrixNZ ; else val->iValue = spFillinCount(ckt->CKTmatrix->SPmatrix); #else @@ -73,8 +73,7 @@ CKTacct(CKTcircuit *ckt, JOB *anal, int which, IFvalue *val) if ( ckt->CKTmatrix != NULL ) { #ifdef KLU if (ckt->CKTmatrix->CKTkluMODE) - val->iValue = ckt->CKTmatrix->SMPkluMatrix->KLUmatrixNumeric->lnz + ckt->CKTmatrix->SMPkluMatrix->KLUmatrixNumeric->unz - + ckt->CKTmatrix->SMPkluMatrix->KLUmatrixNumeric->nzoff ; + val->iValue = ckt->CKTmatrix->SMPkluMatrix->KLUmatrixNumeric->lnz + ckt->CKTmatrix->SMPkluMatrix->KLUmatrixNumeric->unz ; else val->iValue = spElementCount(ckt->CKTmatrix->SPmatrix); #else