From 14a5cd873ba402f2b7c371b997dcdb3f6c18cb0f Mon Sep 17 00:00:00 2001 From: Markus Mueller Date: Fri, 24 Jul 2020 11:25:51 +0200 Subject: [PATCH] remove rbi stamps if nodes collapsed finish --- src/spicelib/devices/hicum2/hicum2acld.c | 52 ++++++++------- src/spicelib/devices/hicum2/hicum2pzld.c | 84 +++++++++++++----------- src/spicelib/devices/hicum2/hicumL2.cpp | 2 +- 3 files changed, 74 insertions(+), 64 deletions(-) diff --git a/src/spicelib/devices/hicum2/hicum2acld.c b/src/spicelib/devices/hicum2/hicum2acld.c index 99332c082..b6382bd1a 100644 --- a/src/spicelib/devices/hicum2/hicum2acld.c +++ b/src/spicelib/devices/hicum2/hicum2acld.c @@ -286,18 +286,20 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt) *(here->HICUMemitEmitEIPtr) += -Ieie_Veie; // Stamp element: Ibpbi - *(here->HICUMbaseBPBaseBPPtr) += Ibpbi_Vbpbi; - *(here->HICUMbaseBIBaseBIPtr) += Ibpbi_Vbpbi; - *(here->HICUMbaseBPBaseBIPtr) += -Ibpbi_Vbpbi; - *(here->HICUMbaseBIBaseBPPtr) += -Ibpbi_Vbpbi; - *(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbiei; - *(here->HICUMbaseBIEmitEIPtr) += Ibpbi_Vbiei; - *(here->HICUMbaseBPEmitEIPtr) += -Ibpbi_Vbiei; - *(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbiei; - *(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbici; - *(here->HICUMbaseBICollCIPtr) += Ibpbi_Vbici; - *(here->HICUMbaseBPCollCIPtr) += -Ibpbi_Vbici; - *(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbici; + if (here->HICUMrbi>0.0) { + *(here->HICUMbaseBPBaseBPPtr) += Ibpbi_Vbpbi; + *(here->HICUMbaseBIBaseBIPtr) += Ibpbi_Vbpbi; + *(here->HICUMbaseBPBaseBIPtr) += -Ibpbi_Vbpbi; + *(here->HICUMbaseBIBaseBPPtr) += -Ibpbi_Vbpbi; + *(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbiei; + *(here->HICUMbaseBIEmitEIPtr) += Ibpbi_Vbiei; + *(here->HICUMbaseBPEmitEIPtr) += -Ibpbi_Vbiei; + *(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbiei; + *(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbici; + *(here->HICUMbaseBICollCIPtr) += Ibpbi_Vbici; + *(here->HICUMbaseBPCollCIPtr) += -Ibpbi_Vbici; + *(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbici; + }; // Stamp element: Isici *(here->HICUMsubsSISubsSIPtr) += Isici_Vsici; @@ -405,18 +407,20 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt) XQxf2_Vxf2 = *(ckt->CKTstate0 + here->HICUMcqxf2) * ckt->CKTomega; //Qrbi f_bp=+ f_bi=- - *(here->HICUMbaseBPBaseBPPtr + 1) += XQrbi_Vbpbi; - *(here->HICUMbaseBIBaseBIPtr + 1) += XQrbi_Vbpbi; - *(here->HICUMbaseBPBaseBIPtr + 1) += -XQrbi_Vbpbi; - *(here->HICUMbaseBIBaseBPPtr + 1) += -XQrbi_Vbpbi; - *(here->HICUMbaseBPBaseBIPtr + 1) += XQrbi_Vbiei; - *(here->HICUMbaseBIEmitEIPtr + 1) += XQrbi_Vbiei; - *(here->HICUMbaseBPEmitEIPtr + 1) += -XQrbi_Vbiei; - *(here->HICUMbaseBIBaseBIPtr + 1) += -XQrbi_Vbiei; - *(here->HICUMbaseBPBaseBIPtr + 1) += XQrbi_Vbici; - *(here->HICUMbaseBICollCIPtr + 1) += XQrbi_Vbici; - *(here->HICUMbaseBPCollCIPtr + 1) += -XQrbi_Vbici; - *(here->HICUMbaseBIBaseBIPtr + 1) += -XQrbi_Vbici; + if (here->HICUMrbi>0.0) { + *(here->HICUMbaseBPBaseBPPtr + 1) += XQrbi_Vbpbi; + *(here->HICUMbaseBIBaseBIPtr + 1) += XQrbi_Vbpbi; + *(here->HICUMbaseBPBaseBIPtr + 1) += -XQrbi_Vbpbi; + *(here->HICUMbaseBIBaseBPPtr + 1) += -XQrbi_Vbpbi; + *(here->HICUMbaseBPBaseBIPtr + 1) += XQrbi_Vbiei; + *(here->HICUMbaseBIEmitEIPtr + 1) += XQrbi_Vbiei; + *(here->HICUMbaseBPEmitEIPtr + 1) += -XQrbi_Vbiei; + *(here->HICUMbaseBIBaseBIPtr + 1) += -XQrbi_Vbiei; + *(here->HICUMbaseBPBaseBIPtr + 1) += XQrbi_Vbici; + *(here->HICUMbaseBICollCIPtr + 1) += XQrbi_Vbici; + *(here->HICUMbaseBPCollCIPtr + 1) += -XQrbi_Vbici; + *(here->HICUMbaseBIBaseBIPtr + 1) += -XQrbi_Vbici; + } //Qjei *(here->HICUMbaseBIBaseBIPtr + 1) += XQjei_Vbiei; *(here->HICUMemitEIEmitEIPtr + 1) += XQjei_Vbiei; diff --git a/src/spicelib/devices/hicum2/hicum2pzld.c b/src/spicelib/devices/hicum2/hicum2pzld.c index ff535b212..ee2896f8e 100644 --- a/src/spicelib/devices/hicum2/hicum2pzld.c +++ b/src/spicelib/devices/hicum2/hicum2pzld.c @@ -286,18 +286,20 @@ HICUMpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s) *(here->HICUMemitEmitEIPtr) += -Ieie_Veie; // Stamp element: Ibpbi - *(here->HICUMbaseBPBaseBPPtr) += Ibpbi_Vbpbi; - *(here->HICUMbaseBIBaseBIPtr) += Ibpbi_Vbpbi; - *(here->HICUMbaseBPBaseBIPtr) += -Ibpbi_Vbpbi; - *(here->HICUMbaseBIBaseBPPtr) += -Ibpbi_Vbpbi; - *(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbiei; - *(here->HICUMbaseBIEmitEIPtr) += Ibpbi_Vbiei; - *(here->HICUMbaseBPEmitEIPtr) += -Ibpbi_Vbiei; - *(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbiei; - *(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbici; - *(here->HICUMbaseBICollCIPtr) += Ibpbi_Vbici; - *(here->HICUMbaseBPCollCIPtr) += -Ibpbi_Vbici; - *(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbici; + if (here->HICUMrbi>0.0) { + *(here->HICUMbaseBPBaseBPPtr) += Ibpbi_Vbpbi; + *(here->HICUMbaseBIBaseBIPtr) += Ibpbi_Vbpbi; + *(here->HICUMbaseBPBaseBIPtr) += -Ibpbi_Vbpbi; + *(here->HICUMbaseBIBaseBPPtr) += -Ibpbi_Vbpbi; + *(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbiei; + *(here->HICUMbaseBIEmitEIPtr) += Ibpbi_Vbiei; + *(here->HICUMbaseBPEmitEIPtr) += -Ibpbi_Vbiei; + *(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbiei; + *(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbici; + *(here->HICUMbaseBICollCIPtr) += Ibpbi_Vbici; + *(here->HICUMbaseBPCollCIPtr) += -Ibpbi_Vbici; + *(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbici; + }; // Stamp element: Isici *(here->HICUMsubsSISubsSIPtr) += Isici_Vsici; @@ -405,30 +407,32 @@ HICUMpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s) XQxf2_Vxf2 = *(ckt->CKTstate0 + here->HICUMcqxf2); //Qrbi f_bp=+ f_bi=- - *(here->HICUMbaseBPBaseBPPtr + 1) += XQrbi_Vbpbi*(s->imag); - *(here->HICUMbaseBPBaseBPPtr ) += XQrbi_Vbpbi*(s->real); - *(here->HICUMbaseBIBaseBIPtr + 1) += XQrbi_Vbpbi*(s->imag); - *(here->HICUMbaseBIBaseBIPtr ) += XQrbi_Vbpbi*(s->real); - *(here->HICUMbaseBPBaseBIPtr + 1) += -XQrbi_Vbpbi*(s->imag); - *(here->HICUMbaseBPBaseBIPtr ) += -XQrbi_Vbpbi*(s->real); - *(here->HICUMbaseBIBaseBPPtr + 1) += -XQrbi_Vbpbi*(s->imag); - *(here->HICUMbaseBIBaseBPPtr ) += -XQrbi_Vbpbi*(s->real); - *(here->HICUMbaseBPBaseBIPtr + 1) += XQrbi_Vbiei*(s->imag); - *(here->HICUMbaseBPBaseBIPtr ) += XQrbi_Vbiei*(s->real); - *(here->HICUMbaseBIEmitEIPtr + 1) += XQrbi_Vbiei*(s->imag); - *(here->HICUMbaseBIEmitEIPtr ) += XQrbi_Vbiei*(s->real); - *(here->HICUMbaseBPEmitEIPtr + 1) += -XQrbi_Vbiei*(s->imag); - *(here->HICUMbaseBPEmitEIPtr ) += -XQrbi_Vbiei*(s->real); - *(here->HICUMbaseBIBaseBIPtr + 1) += -XQrbi_Vbiei*(s->imag); - *(here->HICUMbaseBIBaseBIPtr ) += -XQrbi_Vbiei*(s->real); - *(here->HICUMbaseBPBaseBIPtr + 1) += XQrbi_Vbici*(s->imag); - *(here->HICUMbaseBPBaseBIPtr ) += XQrbi_Vbici*(s->real); - *(here->HICUMbaseBICollCIPtr + 1) += XQrbi_Vbici*(s->imag); - *(here->HICUMbaseBICollCIPtr ) += XQrbi_Vbici*(s->real); - *(here->HICUMbaseBPCollCIPtr + 1) += -XQrbi_Vbici*(s->imag); - *(here->HICUMbaseBPCollCIPtr ) += -XQrbi_Vbici*(s->real); - *(here->HICUMbaseBIBaseBIPtr + 1) += -XQrbi_Vbici*(s->imag); - *(here->HICUMbaseBIBaseBIPtr ) += -XQrbi_Vbici*(s->real); + if (here->HICUMrbi>0.0) { + *(here->HICUMbaseBPBaseBPPtr + 1) += XQrbi_Vbpbi*(s->imag); + *(here->HICUMbaseBPBaseBPPtr ) += XQrbi_Vbpbi*(s->real); + *(here->HICUMbaseBIBaseBIPtr + 1) += XQrbi_Vbpbi*(s->imag); + *(here->HICUMbaseBIBaseBIPtr ) += XQrbi_Vbpbi*(s->real); + *(here->HICUMbaseBPBaseBIPtr + 1) += -XQrbi_Vbpbi*(s->imag); + *(here->HICUMbaseBPBaseBIPtr ) += -XQrbi_Vbpbi*(s->real); + *(here->HICUMbaseBIBaseBPPtr + 1) += -XQrbi_Vbpbi*(s->imag); + *(here->HICUMbaseBIBaseBPPtr ) += -XQrbi_Vbpbi*(s->real); + *(here->HICUMbaseBPBaseBIPtr + 1) += XQrbi_Vbiei*(s->imag); + *(here->HICUMbaseBPBaseBIPtr ) += XQrbi_Vbiei*(s->real); + *(here->HICUMbaseBIEmitEIPtr + 1) += XQrbi_Vbiei*(s->imag); + *(here->HICUMbaseBIEmitEIPtr ) += XQrbi_Vbiei*(s->real); + *(here->HICUMbaseBPEmitEIPtr + 1) += -XQrbi_Vbiei*(s->imag); + *(here->HICUMbaseBPEmitEIPtr ) += -XQrbi_Vbiei*(s->real); + *(here->HICUMbaseBIBaseBIPtr + 1) += -XQrbi_Vbiei*(s->imag); + *(here->HICUMbaseBIBaseBIPtr ) += -XQrbi_Vbiei*(s->real); + *(here->HICUMbaseBPBaseBIPtr + 1) += XQrbi_Vbici*(s->imag); + *(here->HICUMbaseBPBaseBIPtr ) += XQrbi_Vbici*(s->real); + *(here->HICUMbaseBICollCIPtr + 1) += XQrbi_Vbici*(s->imag); + *(here->HICUMbaseBICollCIPtr ) += XQrbi_Vbici*(s->real); + *(here->HICUMbaseBPCollCIPtr + 1) += -XQrbi_Vbici*(s->imag); + *(here->HICUMbaseBPCollCIPtr ) += -XQrbi_Vbici*(s->real); + *(here->HICUMbaseBIBaseBIPtr + 1) += -XQrbi_Vbici*(s->imag); + *(here->HICUMbaseBIBaseBIPtr ) += -XQrbi_Vbici*(s->real); + }; //Qjei *(here->HICUMbaseBIBaseBIPtr + 1) += XQjei_Vbiei*(s->imag); *(here->HICUMbaseBIBaseBIPtr ) += XQjei_Vbiei*(s->real); @@ -633,9 +637,11 @@ HICUMpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s) // Stamp element: Re f_Ei = + f_E = - *(here->HICUMemitEItempPtr) += Ieie_Vrth; *(here->HICUMemitTempPtr) += -Ieie_Vrth; -// Stamp element: Rbi f_Bp = + f_Bi = - - *(here->HICUMbaseBPtempPtr) += Ibpbi_Vrth; - *(here->HICUMbaseBItempPtr) += -Ibpbi_Vrth; + if (here->HICUMrbi>0.0) { +// Stamp element: Rbi f_Bp = + f_Bi = - + *(here->HICUMbaseBPtempPtr) += Ibpbi_Vrth; + *(here->HICUMbaseBItempPtr) += -Ibpbi_Vrth; + }; // Stamp element: Isici f_Si = + f_Ci = - *(here->HICUMsubsSItempPtr) += Isici_Vrth; *(here->HICUMcollCItempPtr) += -Isici_Vrth; diff --git a/src/spicelib/devices/hicum2/hicumL2.cpp b/src/spicelib/devices/hicum2/hicumL2.cpp index 270db9e78..b3a3a89c3 100644 --- a/src/spicelib/devices/hicum2/hicumL2.cpp +++ b/src/spicelib/devices/hicum2/hicumL2.cpp @@ -361,7 +361,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt) double Cscp_Vsc, Cscp_dT; //Base resistance and self-heating power - double rbi,pterm,pterm_dT; + double rbi=0,pterm,pterm_dT; //Model initialization double C_1;