diff --git a/src/spicelib/devices/hicum2/hicum2acld.c b/src/spicelib/devices/hicum2/hicum2acld.c index 0e9cb3801..bbc66a578 100644 --- a/src/spicelib/devices/hicum2/hicum2acld.c +++ b/src/spicelib/devices/hicum2/hicum2acld.c @@ -62,10 +62,8 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt) double XQrbi_Vbiei; double XQrbi_Vbici; double XQrbi_Vrth; - double XQdeix_Vbiei; double XQjei_Vbiei; double XQjei_Vrth; - double XQdci_Vbici; double XQjci_Vbici; double XQjci_Vrth; double XQjep_Vbpei; @@ -86,6 +84,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt) double XQbcpar1_Vbci; double XQbcpar2_Vbpci; double XQsu_Vsis; + double XQcth_Vrth; double XQf_Vbiei; double XQf_Vbici; double XQf_Vrth; @@ -110,7 +109,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt) Ibbp_Vrth = -*(ckt->CKTstate0 + here->HICUMvbbp)/here->HICUMrbx_t.rpart/here->HICUMrbx_t.rpart*here->HICUMrbx_t.dpart; Icic_Vrth = -*(ckt->CKTstate0 + here->HICUMvcic)/here->HICUMrcx_t.rpart/here->HICUMrcx_t.rpart*here->HICUMrcx_t.dpart; - Icic_Vrth = -*(ckt->CKTstate0 + here->HICUMveie)/here->HICUMre_t.rpart/here->HICUMre_t.rpart*here->HICUMre_t.dpart; + Ieie_Vrth = -*(ckt->CKTstate0 + here->HICUMveie)/here->HICUMre_t.rpart/here->HICUMre_t.rpart*here->HICUMre_t.dpart; Isis_Vrth = 0.0; Ibiei_Vbiei = *(ckt->CKTstate0 + here->HICUMibiei_Vbiei); @@ -307,6 +306,8 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt) XQbcpar2_Vbpci = *(ckt->CKTstate0 + here->HICUMcqbcpar2) * ckt->CKTomega; //Qsu XQsu_Vsis = *(ckt->CKTstate0 + here->HICUMcqsu) * ckt->CKTomega; + //Qcth + XQcth_Vrth = *(ckt->CKTstate0 + here->HICUMcqcth) * ckt->CKTomega; //Qrbi *(here->HICUMbaseBPBaseBPPtr + 1) += XQrbi_Vbpbi; @@ -473,7 +474,45 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt) *(here->HICUMtempEmitPtr) += +Ith_Veie; // finish - //TODO derivatives of charges with temp here + //the charges + //Qrbi from Bp to Bi f_Bi=- f_Bp=+ + *(here->HICUMbaseBItempPtr + 1) += -XQrbi_Vrth; + *(here->HICUMbaseBPtempPtr + 1) += +XQrbi_Vrth; + //Qjei from Bi to Ei f_Bi=- f_Ei=+ + *(here->HICUMbaseBItempPtr + 1) += -XQjei_Vrth; + *(here->HICUMemitEItempPtr + 1) += +XQjei_Vrth; + //Qf from Bi to Ei f_Bi=- f_Ei=+ + *(here->HICUMbaseBItempPtr + 1) += -XQf_Vrth; + *(here->HICUMemitEItempPtr + 1) += +XQf_Vrth; + //Qr from Bi to Ci f_Bi=- f_Ci=+ + *(here->HICUMbaseBItempPtr + 1) += -XQr_Vrth; + *(here->HICUMcollCItempPtr + 1) += +XQr_Vrth; + //Qjci from Bi to Ci f_Bi=- f_Ci=+ + *(here->HICUMbaseBItempPtr + 1) += -XQjci_Vrth; + *(here->HICUMcollCItempPtr + 1) += +XQjci_Vrth; + //Qjep from Bp to Ei f_Bp=- f_Ei=+ + *(here->HICUMbaseBPtempPtr + 1) += -XQjep_Vrth; + *(here->HICUMemitEItempPtr + 1) += +XQjep_Vrth; + //Qjcx_i from B to Ci f_B =- f_Ci=+ + *(here->HICUMbaseTempPtr + 1) += -Xqjcx0_t_i_Vrth; + *(here->HICUMcollCItempPtr + 1) += +Xqjcx0_t_i_Vrth; + //Qjcx_ii from Bp to Ci f_Bp=- f_Ci=+ + *(here->HICUMbaseBPtempPtr + 1) += -Xqjcx0_t_ii_Vrth; + *(here->HICUMcollCItempPtr + 1) += +Xqjcx0_t_ii_Vrth; + //Qdsu from Bp to Ci f_Bp=- f_Ci=+ + *(here->HICUMbaseBPtempPtr + 1) += -XQdsu_Vrth; + *(here->HICUMcollCItempPtr + 1) += +XQdsu_Vrth; + //Qjs from Si to Ci f_Si=- f_Ci=+ + *(here->HICUMsubsSItempPtr + 1) += -XQjs_Vrth; + *(here->HICUMcollCItempPtr + 1) += +XQjs_Vrth; + //Qscp from S to C f_S =- f_C =+ + // Jacobian entry not implemented + // *(here->HICUMsubsTempPtr) += -XQscp_Vrth; + // *(here->HICUMcollTempPtr) += +XQscp_Vrth; + //Qcth from 0 to T f_0=- f_T=+ + *(here->HICUMtempTempPtr + 1) += -XQcth_Vrth; + + } diff --git a/src/spicelib/devices/hicum2/hicumL2.cpp b/src/spicelib/devices/hicum2/hicumL2.cpp index 682d8816d..13daa56b1 100644 --- a/src/spicelib/devices/hicum2/hicumL2.cpp +++ b/src/spicelib/devices/hicum2/hicumL2.cpp @@ -494,7 +494,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt) double Ibpbi, Ibpbi_Vbpbi, Ibpbi_Vbici, Ibpbi_Vbiei; double Ibpsi, Ibpsi_Vbpci, Ibpsi_Vsici, Ibpsi_Vrth=0; double Icic_Vcic=0; - double Ibci=0, Ibci_Vbci=0, Ibci_dT; + double Ibci=0, Ibci_Vbci=0; double volatile hjei_vbe_Vbiei, hjei_vbe_dT, ibet_Vbpei=0.0, ibet_dT=0, ibet_Vbiei=0.0, ibh_rec_Vbiei, ibh_rec_dT, ibh_rec_Vbici; double irei_Vbiei, irei_dT; double ibep_Vbpei, ibep_dT; @@ -521,8 +521,6 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt) double Qrbi_Vrth; double Qrbi_Vbiei; double Qrbi_Vbici; - double Qdeix_Vbiei; - double Qdci_Vbici; double Qjep_Vbpei,Qjep_dT; double Qbepar1_Vbe; double Qbepar2_Vbpe; @@ -1071,7 +1069,6 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt) int extra_round=0; double T_dpart = T.dpart(); int l_it; - bool condition_; VT = CONSTboltz * T / CHARGE; c10_t = here->HICUMc10_t.rpart; @@ -2733,14 +2730,13 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt) // end of Load_sources - // calculate charge derivatives over electrostatic caps + // calculate charge derivatives for electrostatic caps Qbepar1_Vbe = cbepar1; Qbepar2_Vbpe = cbepar2; Qbcpar1_Vbci = cbcpar1; Qbcpar2_Vbpci = cbcpar2; Qsu_Vsis = model->HICUMcsu; Qcth_Vrth = model->HICUMcth; - if( (ckt->CKTmode & (MODEDCTRANCURVE | MODETRAN | MODEAC)) || ((ckt->CKTmode & MODETRANOP) && (ckt->CKTmode & MODEUIC)) || (ckt->CKTmode & MODEINITSMSIG)) { @@ -2853,13 +2849,12 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt) (!(ckt->CKTmode & MODEUIC)) ) { if(ckt->CKTmode & MODEINITSMSIG) { - //TODO + //TODO (transient not yet implented) *(ckt->CKTstate0 + here->HICUMcqf) = Qf_Vbiei; *(ckt->CKTstate0 + here->HICUMqf_Vbici) = Qf_Vbici; *(ckt->CKTstate0 + here->HICUMqf_Vrth) = Qf_dT; *(ckt->CKTstate0 + here->HICUMcqjei) = Cjei; - *(ckt->CKTstate0 + here->HICUMcqr) = Qdci_Vbici; *(ckt->CKTstate0 + here->HICUMcqjci) = Cjci; *(ckt->CKTstate0 + here->HICUMcqjep) = Qjep_Vbpei; *(ckt->CKTstate0 + here->HICUMcqcx0_t_i) = Qjcx_i_Vbci;