minor changes, cleaning

This commit is contained in:
Markus Mueller 2020-06-03 19:25:35 +02:00
parent 55367a44a5
commit 7f1493bddb
1 changed files with 24 additions and 23 deletions

View File

@ -402,7 +402,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
double Qdei,Qdci,Qrbi;
double it,ibei,irei,ibci,ibep,irep,ibh_rec;
double ibet,iavl,iavl_ditf,iavl_dT,iavl_Vbiei,iavl_dCjci;
double ijbcx,ijbcx_dT,ijbcx_Vbpci,ijsc,ijsc_Vsici,ijsc_dT,Qjs,Qscp,HSI_Tsu,Qdsu;
double ijbcx,ijbcx_dT,ijbcx_Vbpci,ijsc,ijsc_Vsici,ijsc_Vrth,Qjs,Qscp,HSI_Tsu,Qdsu;
double HSI_Tsu_Vbpci, HSI_Tsu_Vsici, HSI_Tsu_dT;
double Qdsu_Vbpci, Qdsu_Vsici, Qdsu_dT;
duals::duald result_Qdsu, result_HSI_TSU;
@ -546,8 +546,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
double Isici_Vrth=0;
double Ibpbi_Vrth=0;
double Ieie_Vrth=0;
double Icic_dT=0;
double Ibbp_dT=0;
double Icic_Vrth=0;
double Ibbp_Vrth=0;
double Ith_Vrth =0;
double Ith_Vciei=0;
@ -2035,7 +2035,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Tf_dick = result_Tf.dpart();
// add derivatives of Q_0 = f(Vbici,Vbiei,T)
itf_dT += itf_dQ_pT*Q_0_dT; //WHY NOT QPT -> since we used Q_pT variable here instead of Q_0 to save space, see above
itf_dT += itf_dQ_pT*Q_0_dT; //WHY NOT Q_0 -> since we used Q_pT variable here instead of Q_0 to save space, see above
itr_dT += itr_dQ_pT*Q_0_dT;
Qf_dT += Qf_dQ_pT*Q_0_dT;
Qr_dT += Qr_dQ_pT*Q_0_dT;
@ -2123,8 +2123,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
// Q_pT_dick_numerical = (result.rpart() - Q_pT)/(ick*1e-3);
//add derivatives of ick
Q_pT_dVciei = Q_pT_dick*ick_Vciei; //additional component not seen in equivalent circuit of HiCUM...jesus
Q_pT_dT += Q_pT_dick*ick_dT;
Q_pT_dVciei = Q_pT_dick*ick_Vciei; //additional component not seen in equivalent circuit of HiCUM...jesus
Q_pT_dT += Q_pT_dick*ick_dT;
// //add derivatives of Q_0
Q_pT_dVbiei += Q_pT_dQ_0*Q_0_Vbiei;
@ -2280,7 +2280,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Qdci = Qr;
//High-frequency emitter current crowding (lateral NQS)
//TODO : no derivatives for temp ??
//TODO : derivatives missing here???
Cdei = T_f0*itf/here->HICUMvt.rpart;
Cdci = model->HICUMtr*itr/here->HICUMvt.rpart;
Crbi = model->HICUMfcrbi*(Cjei+Cjci+Cdei+Cdci);
@ -2307,8 +2307,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
result = calc_iavl(Vbici , Cjci , itf+1_e, Temp);
iavl_ditf = result.dpart();
iavl_Vbici += iavl_ditf*itf_Vbici;
iavl_Vbiei = iavl_ditf*itf_Vbiei;
iavl_Vbici += iavl_ditf*(itf_Vbici-itf_Vciei);
iavl_Vbiei = iavl_ditf*(itf_Vbiei+itf_Vciei);
result = calc_iavl(Vbici , Cjci , itf , Temp+1_e);
iavl_dT = result.dpart();
@ -2338,9 +2338,9 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
rbi_dQf = result.dpart();
here->HICUMrbi = rbi;
rbi_Vbiei = rbi_dQjei* Qjei_Vbiei + rbi_dQf *Qf_Vbiei ;
rbi_Vbici = rbi_dQf * Qf_Vbici;
rbi_dT += rbi_dQjei*Qjei_dT + rbi_dQf*Qf_dT;
rbi_Vbiei = rbi_dQjei* Qjei_Vbiei + rbi_dQf *(Qf_Vbiei+Qf_Vciei) ;
rbi_Vbici = rbi_dQf * (Qf_Vbici-Qf_Vciei);
rbi_dT += rbi_dQjei*Qjei_dT + rbi_dQf*Qf_dT;
//Base currents across peripheral b-e junction
hicum_diode(Temp,here->HICUMibeps_t,model->HICUMmbep, Vbpei, &ibep, &ibep_Vbpei, &ibep_dT);
@ -2412,7 +2412,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Ieie = Veie/here->HICUMre_t.rpart; // only needed for re flicker noise
//Diode current for s-c junction (si,ci)
hicum_diode(Temp,here->HICUMiscs_t,model->HICUMmsc, Vsici, &ijsc, &ijsc_Vsici, &ijsc_dT);
hicum_diode(Temp,here->HICUMiscs_t,model->HICUMmsc, Vsici, &ijsc, &ijsc_Vsici, &ijsc_Vrth);
// Self-heating calculation
if (model->HICUMflsh == 1 && model->HICUMrth >= MIN_R) {
@ -2423,7 +2423,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
pterm = (Vbiei-Vbici)*it + (here->HICUMvdci_t.rpart-Vbici)*iavl + ibei*Vbiei + ibci*Vbici + ibep*Vbpei + ijbcx*Vbpci + ijsc*Vsici;
// assuming Vciei_dT, Vbiei_dT, Vbpei_dT, Vbpci_dT, Vsici and Vbici_dT are 0
pterm_dT = (Vbiei-Vbici)*it_dT + (here->HICUMvdci_t.rpart-Vbici)*iavl_dT + here->HICUMvdci_t.dpart*iavl +
ibei_dT*Vbiei + ibci_dT*Vbici + ibep_dT*Vbpei + ijbcx_dT*Vbpci + ijsc_dT*Vsici;
ibei_dT*Vbiei + ibci_dT*Vbici + ibep_dT*Vbpei + ijbcx_dT*Vbpci + ijsc_Vrth*Vsici;
if (rbi >= MIN_R) {
pterm += Vbpbi*Vbpbi/rbi;
@ -2490,9 +2490,9 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
//resistors
Ibbp_Vbbp = 1/here->HICUMrbx_t.rpart;
Ibbp_dT = -here->HICUMrbx_t.dpart*Vbbp/here->HICUMrbx_t.rpart/here->HICUMrbx_t.rpart;
Ibbp_Vrth = -here->HICUMrbx_t.dpart*Vbbp/here->HICUMrbx_t.rpart/here->HICUMrbx_t.rpart;
Icic_Vcic = 1/here->HICUMrcx_t.rpart;
Icic_dT = -here->HICUMrcx_t.dpart*Vcic/here->HICUMrcx_t.rpart/here->HICUMrcx_t.rpart;
Icic_Vrth = -here->HICUMrcx_t.dpart*Vcic/here->HICUMrcx_t.rpart/here->HICUMrcx_t.rpart;
Ieie_Veie = 1/here->HICUMre_t.rpart;
Ieie_Vrth = -here->HICUMre_t.dpart*Veie/here->HICUMre_t.rpart/here->HICUMre_t.rpart;
Isis_Vsis = 1/model->HICUMrsu;
@ -2541,6 +2541,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Isici = model->HICUMtype*ijsc;
Isici_Vsici = model->HICUMtype*ijsc_Vsici;
Isici_Vrth = model->HICUMtype*ijsc_Vrth;
Iciei = model->HICUMtype*it;
Iciei_Vbiei = model->HICUMtype*it_Vbiei;
@ -2559,7 +2560,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Ibpbi_Vbpbi = 1 / MIN_R;
Ibpbi_Vbiei = 0;
Ibpbi_Vbici = 0;
Ibpbi_Vrth = 0;
Ibpbi_Vrth = 0;
}
Ibiei += ckt->CKTgmin*Vbiei;
@ -3434,21 +3435,21 @@ c Branch: xf-ground, Stamp element: Rxf
// finish
// Stamp element: Rcx f_Ci = + f_C = -
rhs_current = -Icic_dT*Vrth;
rhs_current = -Icic_Vrth*Vrth;
*(ckt->CKTrhs + here->HICUMcollCINode) += -rhs_current;
*(ckt->CKTrhs + here->HICUMcollNode) += rhs_current;
// with respect to Potential Vrth
*(here->HICUMcollCItempPtr) += Icic_dT;
*(here->HICUMcollTempPtr) += -Icic_dT;
*(here->HICUMcollCItempPtr) += Icic_Vrth;
*(here->HICUMcollTempPtr) += -Icic_Vrth;
// finish
// Stamp element: Rbx f_B = + f_Bp = -
rhs_current = -Ibbp_dT*Vrth;
rhs_current = -Ibbp_Vrth*Vrth;
*(ckt->CKTrhs + here->HICUMbaseNode) += -rhs_current;
*(ckt->CKTrhs + here->HICUMbaseBPNode) += rhs_current;
// with respect to Potential Vrth
*(here->HICUMbaseTempPtr) += Ibbp_dT;
*(here->HICUMbaseBPtempPtr) += -Ibbp_dT;
*(here->HICUMbaseTempPtr) += Ibbp_Vrth;
*(here->HICUMbaseBPtempPtr) += -Ibbp_Vrth;
// finish
// Stamp element: Re f_Ei = + f_E = -