HICUM limit for avalanche
This commit is contained in:
parent
284583e0cc
commit
cc9682f9e5
|
|
@ -374,7 +374,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
double Qdei,Qrbi;
|
double Qdei,Qrbi;
|
||||||
double Qdei_Vbiei, Qdei_Vbici, Qdei_dT;
|
double Qdei_Vbiei, Qdei_Vbici, Qdei_dT;
|
||||||
double it,ibei,irei,ibci,ibep,irep,ibh_rec;
|
double it,ibei,irei,ibci,ibep,irep,ibh_rec;
|
||||||
double ibet,iavl,iavl_dT,iavl_Vbiei;
|
double volatile ibet,iavl,iavl_dT,iavl_Vbiei,iavl_Vbici;
|
||||||
double ijbcx,ijbcx_dT,ijbcx_Vbpci,ijsc,ijsc_Vsici,ijsc_Vrth,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 HSI_Tsu_Vbpci, HSI_Tsu_Vsici, HSI_Tsu_dT;
|
||||||
double Qdsu_Vbpci, Qdsu_Vsici, Qdsu_dT;
|
double Qdsu_Vbpci, Qdsu_Vsici, Qdsu_dT;
|
||||||
|
|
@ -429,6 +429,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
double hjei_vbe;
|
double hjei_vbe;
|
||||||
|
|
||||||
double Vbiei, Vbici, Vciei, Vbpei, Vbpbi, Vbpci, Vsici, Vbci, Vsc;
|
double Vbiei, Vbici, Vciei, Vbpei, Vbpbi, Vbpci, Vsici, Vbci, Vsc;
|
||||||
|
double Vbici_temp;
|
||||||
|
|
||||||
// Model flags
|
// Model flags
|
||||||
int use_aval;
|
int use_aval;
|
||||||
|
|
@ -477,7 +478,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
double 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 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 irei_Vbiei, irei_dT;
|
||||||
double ibep_Vbpei, ibep_dT;
|
double ibep_Vbpei, ibep_dT;
|
||||||
double irep_Vbpei, irep_dT, iavl_Vbici, rbi_dT, rbi_Vbiei, rbi_Vbici;
|
double irep_Vbpei, irep_dT, rbi_dT, rbi_Vbiei, rbi_Vbici;
|
||||||
double ibei_Vbiei, ibei_dT;
|
double ibei_Vbiei, ibei_dT;
|
||||||
double ibci_Vbici, ibci_dT;
|
double ibci_Vbici, ibci_dT;
|
||||||
double Q_0_Vbiei, Q_0_Vbici, Q_0_dT;
|
double Q_0_Vbiei, Q_0_Vbici, Q_0_dT;
|
||||||
|
|
@ -1829,8 +1830,22 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
ichk1 = 1, ichk2 = 1, ichk3 = 1, ichk4 = 1, ichk5=1, ichk6 = 0;
|
ichk1 = 1, ichk2 = 1, ichk3 = 1, ichk4 = 1, ichk5=1, ichk6 = 0;
|
||||||
Vbiei = DEVpnjlim(Vbiei,*(ckt->CKTstate0 + here->HICUMvbiei),here->HICUMvt.rpart,
|
Vbiei = DEVpnjlim(Vbiei,*(ckt->CKTstate0 + here->HICUMvbiei),here->HICUMvt.rpart,
|
||||||
here->HICUMtVcrit,&icheck);
|
here->HICUMtVcrit,&icheck);
|
||||||
Vbici = DEVpnjlim(Vbici,*(ckt->CKTstate0 + here->HICUMvbici),here->HICUMvt.rpart,
|
if ( 1 || (iavl==0.0) || (-Vbici<here->HICUMvdci_t.rpart) ) {
|
||||||
here->HICUMtVcrit,&ichk1);
|
Vbici = DEVpnjlim(Vbici,*(ckt->CKTstate0 + here->HICUMvbici),here->HICUMvt.rpart,
|
||||||
|
here->HICUMtVcrit,&ichk1);
|
||||||
|
|
||||||
|
} else { //limit change around 3*vdci_t, also iavl_Vbiei sign inverted -> somehow this brings convergence
|
||||||
|
Vbici_temp = - (Vbici + here->HICUMvdci_t.rpart*3),
|
||||||
|
Vbici_temp = DEVpnjlim(
|
||||||
|
Vbici_temp,
|
||||||
|
-(*(ckt->CKTstate0 + here->HICUMvbici) + here->HICUMvdci_t.rpart*3),
|
||||||
|
here->HICUMvt.rpart/10,
|
||||||
|
here->HICUMtVcrit,
|
||||||
|
&ichk1
|
||||||
|
);
|
||||||
|
Vbici = - (Vbici_temp+here->HICUMvdci_t.rpart*3);
|
||||||
|
|
||||||
|
}
|
||||||
Vbpei = DEVpnjlim(Vbpei,*(ckt->CKTstate0 + here->HICUMvbpei),here->HICUMvt.rpart,
|
Vbpei = DEVpnjlim(Vbpei,*(ckt->CKTstate0 + here->HICUMvbpei),here->HICUMvt.rpart,
|
||||||
here->HICUMtVcrit,&ichk2);
|
here->HICUMtVcrit,&ichk2);
|
||||||
Vbpci = DEVpnjlim(Vbpci,*(ckt->CKTstate0 + here->HICUMvbpci),here->HICUMvt.rpart,
|
Vbpci = DEVpnjlim(Vbpci,*(ckt->CKTstate0 + here->HICUMvbpci),here->HICUMvt.rpart,
|
||||||
|
|
@ -2076,7 +2091,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
|
||||||
iavl_Vbici = result.dpart();
|
iavl_Vbici = result.dpart();
|
||||||
|
|
||||||
result = calc_iavl(Vbici, Cjci, itf+1_e*itf_Vbiei , Temp);
|
result = calc_iavl(Vbici, Cjci, itf+1_e*itf_Vbiei , Temp);
|
||||||
iavl_Vbiei = result.dpart();
|
iavl_Vbiei = -result.dpart();
|
||||||
|
|
||||||
result = calc_iavl(Vbici , Cjci+1_e*Cjci_dT , itf+1_e*itf_dT , Temp+1_e);
|
result = calc_iavl(Vbici , Cjci+1_e*Cjci_dT , itf+1_e*itf_dT , Temp+1_e);
|
||||||
iavl_dT = result.dpart();
|
iavl_dT = result.dpart();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue