cleaned up

This commit is contained in:
Markus Mueller 2020-06-01 20:07:25 +02:00
parent d61b510207
commit ee25c6ce42
6 changed files with 142 additions and 110 deletions

View File

@ -26,6 +26,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
double Ibiei_Vbiei;
double Ibiei_Vbici;
double Ibici_Vbici;
double Ibici_Vbiei;
double Ibpci_Vbpci;
double Isici_Vsici;
double Iciei_Vbiei;
@ -75,6 +76,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
Iciei_Vbiei = *(ckt->CKTstate0 + here->HICUMiciei_Vbiei);
Iciei_Vbici = *(ckt->CKTstate0 + here->HICUMiciei_Vbici);
Ibici_Vbici = *(ckt->CKTstate0 + here->HICUMibici_Vbici);
Ibici_Vbiei = *(ckt->CKTstate0 + here->HICUMibici_Vbiei);
Ibpbi_Vbpbi = *(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi);
Ibpbi_Vbiei = *(ckt->CKTstate0 + here->HICUMibpbi_Vbiei);
Ibpbi_Vciei = *(ckt->CKTstate0 + here->HICUMibpbi_Vbici);
@ -113,7 +115,7 @@ c Stamp element: Iciei
*(here->HICUMemitEIBaseBIPtr) += -Iciei_Vbici;
*(here->HICUMemitEICollCIPtr) += Iciei_Vbici;
/*
c Stamp element: Ibici
c Stamp element: Ibici (missing Ibici_Vbiei)
*/
*(here->HICUMbaseBIBaseBIPtr) += Ibici_Vbici;
*(here->HICUMbaseBICollCIPtr) += -Ibici_Vbici;

View File

@ -82,7 +82,8 @@ HICUMconvTest(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTstate0 + here->HICUMibiei_Vbiei)*delvbiei +
*(ckt->CKTstate0 + here->HICUMibiei_Vbici)*delvbici;
ibicihat = *(ckt->CKTstate0 + here->HICUMibici) +
*(ckt->CKTstate0 + here->HICUMibici_Vbici)*delvbici;
*(ckt->CKTstate0 + here->HICUMibici_Vbici)*delvbici+
*(ckt->CKTstate0 + here->HICUMibici_Vbiei)*delvbiei;
icieihat = *(ckt->CKTstate0 + here->HICUMiciei) +
*(ckt->CKTstate0 + here->HICUMiciei_Vbiei)*delvbiei +
*(ckt->CKTstate0 + here->HICUMiciei_Vbici)*delvbici;

View File

@ -324,112 +324,113 @@ typedef struct sHICUMinstance {
#define HICUMibici HICUMstate+14
#define HICUMibici_Vbici HICUMstate+15
#define HICUMibici_Vbiei HICUMstate+16
#define HICUMibpbi HICUMstate+16
#define HICUMibpbi_Vbpbi HICUMstate+17
#define HICUMibpbi_Vbiei HICUMstate+18
#define HICUMibpbi_Vbici HICUMstate+19
#define HICUMibpbi HICUMstate+17
#define HICUMibpbi_Vbpbi HICUMstate+18
#define HICUMibpbi_Vbiei HICUMstate+19
#define HICUMibpbi_Vbici HICUMstate+20
#define HICUMibpci HICUMstate+20
#define HICUMibpci_Vbpci HICUMstate+21
#define HICUMibpci HICUMstate+21
#define HICUMibpci_Vbpci HICUMstate+22
#define HICUMisici HICUMstate+22
#define HICUMisici_Vsici HICUMstate+23
#define HICUMisici HICUMstate+23
#define HICUMisici_Vsici HICUMstate+24
#define HICUMibpsi HICUMstate+24
#define HICUMibpsi_Vbpci HICUMstate+25
#define HICUMibpsi_Vsici HICUMstate+26
#define HICUMibpsi HICUMstate+25
#define HICUMibpsi_Vbpci HICUMstate+26
#define HICUMibpsi_Vsici HICUMstate+27
#define HICUMisis_Vsis HICUMstate+27
#define HICUMisis_Vsis HICUMstate+28
#define HICUMieie HICUMstate+28 // needed for re-flicker noise
#define HICUMieie HICUMstate+29 // needed for re-flicker noise
#define HICUMqrbi HICUMstate+29
#define HICUMcqrbi HICUMstate+30
#define HICUMqrbi HICUMstate+30
#define HICUMcqrbi HICUMstate+31
#define HICUMqjei HICUMstate+31
#define HICUMcqjei HICUMstate+32
#define HICUMqjei HICUMstate+32
#define HICUMcqjei HICUMstate+33
#define HICUMqdeix HICUMstate+33
#define HICUMcqdeix HICUMstate+34
#define HICUMqdeix HICUMstate+34
#define HICUMcqdeix HICUMstate+35
#define HICUMqjci HICUMstate+35
#define HICUMcqjci HICUMstate+36
#define HICUMqjci HICUMstate+36
#define HICUMcqjci HICUMstate+37
#define HICUMqdci HICUMstate+37
#define HICUMcqdci HICUMstate+38
#define HICUMqdci HICUMstate+38
#define HICUMcqdci HICUMstate+39
#define HICUMqjep HICUMstate+39
#define HICUMcqjep HICUMstate+40
#define HICUMqjep HICUMstate+40
#define HICUMcqjep HICUMstate+41
#define HICUMqjcx0_i HICUMstate+41
#define HICUMcqcx0_t_i HICUMstate+42
#define HICUMqjcx0_i HICUMstate+42
#define HICUMcqcx0_t_i HICUMstate+43
#define HICUMqjcx0_ii HICUMstate+43
#define HICUMcqcx0_t_ii HICUMstate+44
#define HICUMqjcx0_ii HICUMstate+44
#define HICUMcqcx0_t_ii HICUMstate+45
#define HICUMqdsu HICUMstate+45
#define HICUMcqdsu HICUMstate+46
#define HICUMqdsu HICUMstate+46
#define HICUMcqdsu HICUMstate+47
#define HICUMqjs HICUMstate+47
#define HICUMcqjs HICUMstate+48
#define HICUMqjs HICUMstate+48
#define HICUMcqjs HICUMstate+49
#define HICUMqscp HICUMstate+49
#define HICUMcqscp HICUMstate+50
#define HICUMqscp HICUMstate+50
#define HICUMcqscp HICUMstate+51
#define HICUMqbepar1 HICUMstate+51
#define HICUMcqbepar1 HICUMstate+52
#define HICUMgqbepar1 HICUMstate+53
#define HICUMqbepar1 HICUMstate+52
#define HICUMcqbepar1 HICUMstate+53
#define HICUMgqbepar1 HICUMstate+54
#define HICUMqbepar2 HICUMstate+54
#define HICUMcqbepar2 HICUMstate+55
#define HICUMgqbepar2 HICUMstate+56
#define HICUMqbepar2 HICUMstate+55
#define HICUMcqbepar2 HICUMstate+56
#define HICUMgqbepar2 HICUMstate+57
#define HICUMqbcpar1 HICUMstate+57
#define HICUMcqbcpar1 HICUMstate+58
#define HICUMgqbcpar1 HICUMstate+59
#define HICUMqbcpar1 HICUMstate+58
#define HICUMcqbcpar1 HICUMstate+59
#define HICUMgqbcpar1 HICUMstate+60
#define HICUMqbcpar2 HICUMstate+60
#define HICUMcqbcpar2 HICUMstate+61
#define HICUMgqbcpar2 HICUMstate+62
#define HICUMqbcpar2 HICUMstate+61
#define HICUMcqbcpar2 HICUMstate+62
#define HICUMgqbcpar2 HICUMstate+63
#define HICUMqsu HICUMstate+63
#define HICUMcqsu HICUMstate+64
#define HICUMgqsu HICUMstate+65
#define HICUMqsu HICUMstate+64
#define HICUMcqsu HICUMstate+65
#define HICUMgqsu HICUMstate+66
#define HICUMqcth HICUMstate+66 /* thermal capacitor charge */
#define HICUMcqcth HICUMstate+67 /* thermal capacitor current */
#define HICUMqcth HICUMstate+67 /* thermal capacitor charge */
#define HICUMcqcth HICUMstate+68 /* thermal capacitor current */
#define HICUMvrth HICUMstate+68
#define HICUMicth_dT HICUMstate+69
#define HICUMvrth HICUMstate+69
#define HICUMicth_dT HICUMstate+70
#define HICUMvxf HICUMstate+70
#define HICUMqxf HICUMstate+71
#define HICUMcqxf HICUMstate+72
#define HICUMgqxf HICUMstate+73
#define HICUMixf_Vbiei HICUMstate+74
#define HICUMixf_Vbici HICUMstate+75
#define HICUMvxf HICUMstate+71
#define HICUMqxf HICUMstate+72
#define HICUMcqxf HICUMstate+73
#define HICUMgqxf HICUMstate+74
#define HICUMixf_Vbiei HICUMstate+75
#define HICUMixf_Vbici HICUMstate+76
#define HICUMvxf1 HICUMstate+76
#define HICUMqxf1 HICUMstate+77
#define HICUMcqxf1 HICUMstate+78
#define HICUMgqxf1 HICUMstate+79
#define HICUMixf1_Vbiei HICUMstate+80
#define HICUMixf1_Vbici HICUMstate+81
#define HICUMixf1_Vfx2 HICUMstate+82
#define HICUMvxf1 HICUMstate+77
#define HICUMqxf1 HICUMstate+78
#define HICUMcqxf1 HICUMstate+79
#define HICUMgqxf1 HICUMstate+80
#define HICUMixf1_Vbiei HICUMstate+81
#define HICUMixf1_Vbici HICUMstate+82
#define HICUMixf1_Vfx2 HICUMstate+83
#define HICUMvxf2 HICUMstate+83
#define HICUMqxf2 HICUMstate+84
#define HICUMcqxf2 HICUMstate+85
#define HICUMgqxf2 HICUMstate+86
#define HICUMixf2_Vbiei HICUMstate+87
#define HICUMixf2_Vbici HICUMstate+88
#define HICUMixf2_Vfx1 HICUMstate+89
#define HICUMvxf2 HICUMstate+84
#define HICUMqxf2 HICUMstate+85
#define HICUMcqxf2 HICUMstate+86
#define HICUMgqxf2 HICUMstate+87
#define HICUMixf2_Vbiei HICUMstate+88
#define HICUMixf2_Vbici HICUMstate+89
#define HICUMixf2_Vfx1 HICUMstate+90
#define HICUMith HICUMstate+90
#define HICUMith_Vrth HICUMstate+91
#define HICUMith HICUMstate+91
#define HICUMith_Vrth HICUMstate+92
#define HICUMnumStates 92
#define HICUMnumStates 93
/* per model data */
typedef struct sHICUMmodel { /* model structure for a hicum */

View File

@ -835,6 +835,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTstate1 + here->HICUMibici);
*(ckt->CKTstate0 + here->HICUMibici_Vbici) =
*(ckt->CKTstate1 + here->HICUMibici_Vbici);
*(ckt->CKTstate0 + here->HICUMibici_Vbiei) =
*(ckt->CKTstate1 + here->HICUMibici_Vbiei);
*(ckt->CKTstate0 + here->HICUMibpei) =
*(ckt->CKTstate1 + here->HICUMibpei);
*(ckt->CKTstate0 + here->HICUMibpbi) =
@ -956,7 +958,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTstate0 + here->HICUMibiei_Vbiei)*delvbiei +
*(ckt->CKTstate0 + here->HICUMibiei_Vbici)*delvbici;
ibicihat = *(ckt->CKTstate0 + here->HICUMibici) +
*(ckt->CKTstate0 + here->HICUMibici_Vbici)*delvbici;
*(ckt->CKTstate0 + here->HICUMibici_Vbici)*delvbici+
*(ckt->CKTstate0 + here->HICUMibici_Vbiei)*delvbiei;
ibpeihat = *(ckt->CKTstate0 + here->HICUMibpei) +
*(ckt->CKTstate0 + here->HICUMibpei_Vbpei)*delvbpei;
ibpcihat = *(ckt->CKTstate0 + here->HICUMibpci) +
@ -1058,6 +1061,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Ibici = *(ckt->CKTstate0 + here->HICUMibici);
Ibici_Vbici = *(ckt->CKTstate0 + here->HICUMibici_Vbici);
Ibici_Vbiei = *(ckt->CKTstate0 + here->HICUMibici_Vbiei);
Ibpbi = *(ckt->CKTstate0 + here->HICUMibpbi);
Ibpbi_Vbpbi = *(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi);
@ -2091,6 +2095,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTstate0 + here->HICUMibici) = Ibici;
*(ckt->CKTstate0 + here->HICUMibici_Vbici) = Ibici_Vbici;
*(ckt->CKTstate0 + here->HICUMibici_Vbiei) = Ibici_Vbiei;
*(ckt->CKTstate0 + here->HICUMibpbi) = Ibpbi;
*(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi) = Ibpbi_Vbpbi;

View File

@ -26,6 +26,7 @@ HICUMpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
double Ibiei_Vbiei;
double Ibiei_Vbici;
double Ibici_Vbici;
double Ibici_Vbiei;
double Ibpci_Vbpci;
double Isici_Vsici;
double Iciei_Vbiei;
@ -75,6 +76,7 @@ HICUMpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
Iciei_Vbiei = *(ckt->CKTstate0 + here->HICUMiciei_Vbiei);
Iciei_Vbici = *(ckt->CKTstate0 + here->HICUMiciei_Vbici);
Ibici_Vbici = *(ckt->CKTstate0 + here->HICUMibici_Vbici);
Ibici_Vbiei = *(ckt->CKTstate0 + here->HICUMibici_Vbiei);
Ibpbi_Vbpbi = *(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi);
Ibpbi_Vbiei = *(ckt->CKTstate0 + here->HICUMibpbi_Vbiei);
Ibpbi_Vciei = *(ckt->CKTstate0 + here->HICUMibpbi_Vbici);

View File

@ -471,6 +471,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
double ibpbihat;
double isicihat;
double ibpsihat;
double ithhat;
double ceq, geq=0.0;
double volatile rhs_current;
int icheck=1;
@ -479,19 +480,19 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
double Vbe, Vcic, Vbbp, Veie, Vsis, Vbpe;
double Ibiei, Ibiei_Vbiei, Ibiei_Vbici;
double Ibici, Ibici_Vbici;
double Ibici, Ibici_Vbici, Ibici_Vbiei;
double Ibpei, Ibpei_Vbpei;
double Ibpci, Ibpci_Vbpci;
double Isici, Isici_Vsici;
double Isici, Isici_Vsici;//
double Isc=0, Isc_Vsc=0;
double Iciei, Iciei_Vbiei, Iciei_Vbici, Iciei_dT;
double Ibbp_Vbbp=0;
double Isis_Vsis;
double Ieie, Ieie_Veie=0;
double Ibpbi, Ibpbi_Vbpbi, Ibpbi_Vbici, Ibpbi_Vbiei;
double Ibpsi, Ibpsi_Vbpci, Ibpsi_Vsici;
double Ibpsi, Ibpsi_Vbpci, Ibpsi_Vsici, Ibpsi_dT=0;
double Icic_Vcic=0;
// double Ibci, Ibci_Vbci, Ibci_dT;
double Ibci=0, Ibci_Vbci=0, Ibci_dT;
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;
@ -1414,6 +1415,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTstate1 + here->HICUMibici);
*(ckt->CKTstate0 + here->HICUMibici_Vbici) =
*(ckt->CKTstate1 + here->HICUMibici_Vbici);
*(ckt->CKTstate0 + here->HICUMibici_Vbiei) =
*(ckt->CKTstate1 + here->HICUMibici_Vbiei);
*(ckt->CKTstate0 + here->HICUMibpei) =
*(ckt->CKTstate1 + here->HICUMibpei);
*(ckt->CKTstate0 + here->HICUMibpbi) =
@ -1538,7 +1541,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTstate0 + here->HICUMibiei_Vbiei)*delvbiei+
*(ckt->CKTstate0 + here->HICUMibiei_Vbici)*delvbici,
ibicihat = *(ckt->CKTstate0 + here->HICUMibici) +
*(ckt->CKTstate0 + here->HICUMibici_Vbici)*delvbici;
*(ckt->CKTstate0 + here->HICUMibici_Vbici)*delvbici+
*(ckt->CKTstate0 + here->HICUMibici_Vbiei)*delvbiei;
ibpeihat = *(ckt->CKTstate0 + here->HICUMibpei) +
*(ckt->CKTstate0 + here->HICUMibpei_Vbpei)*delvbpei;
ibpcihat = *(ckt->CKTstate0 + here->HICUMibpci) +
@ -1555,6 +1559,8 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
ibpsihat = *(ckt->CKTstate0 + here->HICUMibpsi) +
*(ckt->CKTstate0 + here->HICUMibpsi_Vbpci)*delvbpci +
*(ckt->CKTstate0 + here->HICUMibpsi_Vsici)*delvsici;
ithhat = *(ckt->CKTstate0 + here->HICUMith) +
*(ckt->CKTstate0 + here->HICUMith_Vrth)*delvrth;
/*
* bypass if solution has not changed
*/
@ -1607,6 +1613,10 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
ckt->CKTreltol* MAX(fabs(isicihat),
fabs(*(ckt->CKTstate0 + here->HICUMisici)))+
ckt->CKTabstol) )
if( (fabs(ithhat-*(ckt->CKTstate0 + here->HICUMith)) <
ckt->CKTreltol* MAX(fabs(ithhat),
fabs(*(ckt->CKTstate0 + here->HICUMith)))+
ckt->CKTabstol) )
if( (fabs(ibpsihat-*(ckt->CKTstate0 + here->HICUMibpsi)) <
ckt->CKTreltol* MAX(fabs(ibpsihat),
fabs(*(ckt->CKTstate0 + here->HICUMibpsi)))+
@ -1634,6 +1644,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Ibici = *(ckt->CKTstate0 + here->HICUMibici);
Ibici_Vbici = *(ckt->CKTstate0 + here->HICUMibici_Vbici);
Ibici_Vbiei = *(ckt->CKTstate0 + here->HICUMibici_Vbiei);
Ibpbi = *(ckt->CKTstate0 + here->HICUMibpbi);
Ibpbi_Vbpbi = *(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi);
@ -1895,8 +1906,6 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Tf_dT += Tf_dick*ick_dT;
} else { //Newton needed
//todo: derivatives of temperature dependent hicum parameters
//todo: it should be enough to run the newtone once -> potential for performance improvement is exactly here
result = calc_it(here->HICUMtemp+1_e, Vbiei , Vbici , Q_0 , T_f0 , ick );
Q_pT = result.rpart();
Q_pT_dT = result.dpart();
@ -2160,7 +2169,6 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
result = calc_ibet(Vbiei, Vbpei, here->HICUMtemp+1_e);
ibet_dT = result.dpart();
//Base currents across peripheral b-c junction (bp,ci)
hicum_diode(here->HICUMtemp,here->HICUMibcxs_t,model->HICUMmbcx, Vbpci, &ijbcx, &ijbcx_Vbpci, &ijbcx_dT);
@ -2315,26 +2323,30 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Ibiei += model->HICUMtype*ibh_rec;
Ibiei_Vbiei += model->HICUMtype*ibh_rec_Vbiei;
Ibiei_dT += model->HICUMtype*ibh_rec_dT;
Ibiei_Vbici += model->HICUMtype*ibh_rec_Vbici;
Ibiei_Vbici = model->HICUMtype*ibh_rec_Vbici;
if (model->HICUMtunode==1.0) {
Ibpei += -model->HICUMtype*ibet;
Ibpei_Vbpei += -model->HICUMtype*ibet_Vbpei;
Ibpei_dT += -model->HICUMtype*ibet_dT;
} else {
Ibiei += -model->HICUMtype*ibet;
Ibiei_Vbiei += -model->HICUMtype*ibet_Vbiei;
Ibiei_dT += -model->HICUMtype*ibet_dT;
}
//printf("Vbiei: %f ibei: %g irei: %g ibh_rec: %g ibet: %g\n",Vbiei,ibei,irei,ibh_rec,ibet);
Ibpsi = model->HICUMtype*HSI_Tsu;
Ibpsi_Vbpci = model->HICUMtype*HSI_Tsu_Vbpci;
Ibpsi_Vsici = model->HICUMtype*HSI_Tsu_Vsici;
Ibpsi_dT = model->HICUMtype*HSI_Tsu_dT;
Ibpci = model->HICUMtype*ijbcx;
Ibpci_Vbpci = model->HICUMtype*ijbcx_Vbpci;
Ibpci_dT = model->HICUMtype*ijbcx_dT;
Ibici = model->HICUMtype*(ibci - iavl);
Ibici_Vbici = model->HICUMtype*(ibci_Vbici - iavl_Vbici); //@Dietmar: What about Ibici_Vbiei from Iavl?
Ibici_Vbici = model->HICUMtype*(ibci_Vbici - iavl_Vbici);
Ibici_Vbiei = model->HICUMtype*(iavl_Vbiei);
Ibici_dT = model->HICUMtype*(ibci_dT - iavl_dT);
Isici = model->HICUMtype*ijsc;
@ -2414,7 +2426,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Ith_dT = pterm_dT;
Ith_dT += -1/here->HICUMrth_t.rpart;
Ith_dT += +Vrth/here->HICUMrth_t.rpart/here->HICUMrth_t.rpart * here->HICUMrth_t.dpart; //Mario check this please
Ith_dT += +Vrth/here->HICUMrth_t.rpart/here->HICUMrth_t.rpart * here->HICUMrth_t.dpart;
if (model->HICUMflsh == 1) {
//Iciei(Vbiei,Vbici)*(Vbiei-Vbici)
Ith_Vbiei += it_Vbiei*(Vbiei-Vbici) + it;
@ -2424,14 +2436,14 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Ith_Vbici += (here->HICUMvdci_t.rpart-Vbici)*iavl_Vbici - iavl;
} else if (model->HICUMflsh == 2) {
//Iciei(Vbiei,Vbici)*Vciei
Ith_Vciei += it;
Ith_Vbiei += it_Vbiei*Vciei;
Ith_Vbici += it_Vbici*Vciei;
Ith_Vbiei += it_Vbiei*(Vbiei-Vbici) + it;
Ith_Vbici += it_Vbici*(Vbiei-Vbici) - it;
//Vbiei*Ibiei(Vbiei)
Ith_Vbiei += Ibiei + Ibiei_Vbiei*Vbiei;
Ith_Vbici += Ibiei_Vbici*Vbiei;
//Vbici*Ibici(Vbici)
//Vbici*Ibici(Vbici,Vbiei)
Ith_Vbici += Ibici + Ibici_Vbici*Vbici;
Ith_Vbiei += Ibici_Vbiei*Vbici;
Ith_Vbici += (here->HICUMvdci_t.rpart-Vbici)*iavl_Vbici - iavl;
//Vbpei*Ibpei(Vbpei)
Ith_Vbpei += Ibpei + Ibpei_Vbpei*Vbpei;
@ -2479,7 +2491,6 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Qsu_Vsis = model->HICUMcsu;
Qjs_Vsici = Cjs;
//TODO: all the derivatives have to be known dI/dT
//TODO: @Dietmar: what about dQ/dT ?
@ -2649,10 +2660,10 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Isici += *(ckt->CKTstate0 + here->HICUMcqjs);
// Ibci += ddt(model->HICUMtype*qjcx0_t_i);
// error = NIintegrate(ckt,&geq,&ceq,Cjcx_i,here->HICUMqjcx0_i);
// if(error) return(error);
// Ibci_Vbci = geq;
// Ibci = *(ckt->CKTstate0 + here->HICUMcqcx0_t_i);
error = NIintegrate(ckt,&geq,&ceq,Cjcx_i,here->HICUMqjcx0_i);
if(error) return(error);
Ibci_Vbci = geq;
Ibci = *(ckt->CKTstate0 + here->HICUMcqcx0_t_i);
// Ibpci += ddt(model->HICUMtype*(qjcx0_t_ii+Qdsu));
error = NIintegrate(ckt,&geq,&ceq,Cjcx_ii,here->HICUMqjcx0_ii);
@ -2755,7 +2766,6 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
// Isis += ddt(model->HICUMcsu*Vsis);
error = NIintegrate(ckt,&gqsu,&cqsu,model->HICUMcsu,here->HICUMqsu);
if(error) return(error);
//tocheck: Currents and conductances must used in stamping below
if(ckt->CKTmode & MODEINITTRAN) {
*(ckt->CKTstate1 + here->HICUMcqbepar1) =
*(ckt->CKTstate0 + here->HICUMcqbepar1);
@ -2791,6 +2801,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTstate0 + here->HICUMibici) = Ibici;
*(ckt->CKTstate0 + here->HICUMibici_Vbici) = Ibici_Vbici;
*(ckt->CKTstate0 + here->HICUMibici_Vbiei) = Ibici_Vbiei;
*(ckt->CKTstate0 + here->HICUMibpbi) = Ibpbi;
*(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi) = Ibpbi_Vbpbi;
@ -2940,15 +2951,15 @@ load:
*(here->HICUMemitEIBaseBIPtr) += -Iciei_Vbici;
// finish
// Branch: bci, Stamp element: Qbcx
// rhs_current = model->HICUMtype * (Ibci - Ibci_Vbci*Vbci);
// *(ckt->CKTrhs + here->HICUMbaseNode) += -rhs_current;
// *(ckt->CKTrhs + here->HICUMcollCINode) += rhs_current;
// with respect to Vbci
// *(here->HICUMbaseBasePtr) += Ibci_Vbci;
// *(here->HICUMcollCICollCIPtr) += Ibci_Vbci;
// *(here->HICUMbaseCollCIPtr) += -Ibci_Vbci;
// *(here->HICUMcollCIBasePtr) += -Ibci_Vbci;
// Branch: bci, Stamp element: Qbcx
rhs_current = model->HICUMtype * (Ibci - Ibci_Vbci*Vbci);
*(ckt->CKTrhs + here->HICUMbaseNode) += -rhs_current;
*(ckt->CKTrhs + here->HICUMcollCINode) += rhs_current;
//with respect to Vbci
*(here->HICUMbaseBasePtr) += Ibci_Vbci;
*(here->HICUMcollCICollCIPtr) += Ibci_Vbci;
*(here->HICUMbaseCollCIPtr) += -Ibci_Vbci;
*(here->HICUMcollCIBasePtr) += -Ibci_Vbci;
// finish
// Branch: bpci, Stamp element: Ibpci ( was Ijbcx )
@ -3148,6 +3159,16 @@ c Branch: xf-ground, Stamp element: Rxf
*(here->HICUMcollCItempPtr) += -Ibici_dT;
// finish
// Branch: bpsi, Stamp element: Its
rhs_current = - Ibpsi_dT*Vsici;
*(ckt->CKTrhs + here->HICUMbaseBPNode) += -rhs_current;
*(ckt->CKTrhs + here->HICUMsubsSINode) += rhs_current;
// f_Bp = + f_Si = -
// with respect to Vrth
*(here->HICUMbaseBPtempPtr) += Ibpsi_Vsici;
*(here->HICUMsubsSItempPtr) += -Ibpsi_Vsici;
// finish
// Stamp element: Iciei f_Ci = + f_Ei = -
rhs_current = -Iciei_dT*Vrth;
*(ckt->CKTrhs + here->HICUMcollCINode) += -rhs_current;