adding derivatives of branches with respect to Vrth to the state vector

This commit is contained in:
Markus Mueller 2020-06-03 18:17:49 +02:00
parent a6b39a749c
commit e4b4978368
5 changed files with 381 additions and 183 deletions

View File

@ -23,20 +23,41 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
HICUMinstance *here;
HICUMmodel *model = (HICUMmodel*)inModel;
double Ibpei_Vbpei;
double Ibpei_Vrth;
double Ibiei_Vbiei;
double Ibiei_Vbici;
double Ibiei_Vrth;
double Ibici_Vbici;
double Ibici_Vbiei;
double Ibici_Vrth;
double Ibpci_Vbpci;
double Ibpci_Vrth;
double Isici_Vsici;
double Isici_Vrth;
double Iciei_Vbiei;
double Iciei_Vbici;
double Ibbp_Vbbp;
double Iciei_Vrth;
double Ibpbi_Vbpbi;
double Ibpbi_Vciei;
double Ibpbi_Vbiei;
double Ibpbi_Vrth;
double Isis_Vsis;
double Ieie_Veie;
double Ibpbi_Vbpbi, Ibpbi_Vciei, Ibpbi_Vbiei;
double Ibpsi_Vbpci, Ibpsi_Vsici;
double Icic_Vcic;
double Ieie_Veie;
double Ibbp_Vbbp;
double Ibpsi_Vbpci;
double Ibpsi_Vsici;
double Ibpsi_Vrth;
double XQrbi_Vbpbi;
// double XQrbi_Vbiei;
@ -65,6 +86,7 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
for( here = HICUMinstances(model); here!= NULL;
here = HICUMnextInstance(here)) {
//todo: temperature derivatives
Ibbp_Vbbp = 1/here->HICUMrbx_t.rpart;
Icic_Vcic = 1/here->HICUMrcx_t.rpart;
Ieie_Veie = 1/here->HICUMre_t.rpart;
@ -72,18 +94,33 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
Ibiei_Vbiei = *(ckt->CKTstate0 + here->HICUMibiei_Vbiei);
Ibiei_Vbici = *(ckt->CKTstate0 + here->HICUMibiei_Vbici);
Ibiei_Vrth = *(ckt->CKTstate0 + here->HICUMibiei_Vrth);
Ibpei_Vbpei = *(ckt->CKTstate0 + here->HICUMibpei_Vbpei);
Ibpei_Vrth = *(ckt->CKTstate0 + here->HICUMibpei_Vrth);
Iciei_Vbiei = *(ckt->CKTstate0 + here->HICUMiciei_Vbiei);
Iciei_Vbici = *(ckt->CKTstate0 + here->HICUMiciei_Vbici);
Iciei_Vrth = *(ckt->CKTstate0 + here->HICUMiciei_Vrth);
Ibici_Vbici = *(ckt->CKTstate0 + here->HICUMibici_Vbici);
Ibici_Vbiei = *(ckt->CKTstate0 + here->HICUMibici_Vbiei);
Ibici_Vrth = *(ckt->CKTstate0 + here->HICUMibici_Vrth);
Ibpbi_Vbpbi = *(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi);
Ibpbi_Vbiei = *(ckt->CKTstate0 + here->HICUMibpbi_Vbiei);
Ibpbi_Vciei = *(ckt->CKTstate0 + here->HICUMibpbi_Vbici);
Ibpbi_Vrth = *(ckt->CKTstate0 + here->HICUMibpbi_Vrth);
Isici_Vsici = *(ckt->CKTstate0 + here->HICUMisici_Vsici);
Isici_Vrth = *(ckt->CKTstate0 + here->HICUMisici_Vrth);
Ibpsi_Vbpci = *(ckt->CKTstate0 + here->HICUMibpsi_Vbpci);
Ibpsi_Vsici = *(ckt->CKTstate0 + here->HICUMibpsi_Vsici);
Ibpsi_Vrth = *(ckt->CKTstate0 + here->HICUMibpsi_Vrth);
Ibpci_Vbpci = *(ckt->CKTstate0 + here->HICUMibpci_Vbpci);
Ibpci_Vrth = *(ckt->CKTstate0 + here->HICUMibpci_Vrth);
/*
c The real part

View File

@ -80,24 +80,32 @@ HICUMconvTest(GENmodel *inModel, CKTcircuit *ckt)
ibieihat = *(ckt->CKTstate0 + here->HICUMibiei) +
*(ckt->CKTstate0 + here->HICUMibiei_Vbiei)*delvbiei +
*(ckt->CKTstate0 + here->HICUMibiei_Vrth)*delvrth +
*(ckt->CKTstate0 + here->HICUMibiei_Vbici)*delvbici;
ibicihat = *(ckt->CKTstate0 + here->HICUMibici) +
*(ckt->CKTstate0 + here->HICUMibici_Vbici)*delvbici+
*(ckt->CKTstate0 + here->HICUMibici_Vrth)*delvrth+
*(ckt->CKTstate0 + here->HICUMibici_Vbiei)*delvbiei;
icieihat = *(ckt->CKTstate0 + here->HICUMiciei) +
*(ckt->CKTstate0 + here->HICUMiciei_Vbiei)*delvbiei +
*(ckt->CKTstate0 + here->HICUMiciei_Vrth)*delvrth +
*(ckt->CKTstate0 + here->HICUMiciei_Vbici)*delvbici;
ibpeihat = *(ckt->CKTstate0 + here->HICUMibpei) +
*(ckt->CKTstate0 + here->HICUMibpei_Vrth)*delvrth+
*(ckt->CKTstate0 + here->HICUMibpei_Vbpei)*delvbpei;
ibpbihat = *(ckt->CKTstate0 + here->HICUMibpbi) +
*(ckt->CKTstate0 + here->HICUMibpbi_Vbiei)*delvbiei +
*(ckt->CKTstate0 + here->HICUMibpbi_Vrth)*delvrth +
*(ckt->CKTstate0 + here->HICUMibpbi_Vbici)*delvbici;
ibpcihat = *(ckt->CKTstate0 + here->HICUMibpci) +
*(ckt->CKTstate0 + here->HICUMibpci_Vrth)*delvrth+
*(ckt->CKTstate0 + here->HICUMibpci_Vbpci)*delvbici;
ibpsihat = *(ckt->CKTstate0 + here->HICUMibpsi) +
*(ckt->CKTstate0 + here->HICUMibpsi_Vbpci)*delvbpci +
*(ckt->CKTstate0 + here->HICUMibpsi_Vrth)*delvrth +
*(ckt->CKTstate0 + here->HICUMibpsi_Vsici)*delvsici;
isicihat = *(ckt->CKTstate0 + here->HICUMisici) +
*(ckt->CKTstate0 + here->HICUMisici_Vrth)*delvrth+
*(ckt->CKTstate0 + here->HICUMisici_Vsici)*delvsici;
ithhat = *(ckt->CKTstate0 + here->HICUMith) +
*(ckt->CKTstate0 + here->HICUMith_Vrth)*delvrth;

View File

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

View File

@ -797,6 +797,10 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
xfact * *(ckt->CKTstate2 + here->HICUMvxf1);
Vbxf2 = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvxf2)-
xfact * *(ckt->CKTstate2 + here->HICUMvxf2);
////////////////////////
// begin copy state vector
////////////////////////
*(ckt->CKTstate0 + here->HICUMvbiei) =
*(ckt->CKTstate1 + here->HICUMvbiei);
*(ckt->CKTstate0 + here->HICUMvbpei) =
@ -885,6 +889,9 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTstate0 + here->HICUMith_Vrth) =
*(ckt->CKTstate1 + here->HICUMith_Vrth);
}
////////////////////////
// end copy state vector
////////////////////////
} else {
#endif /* PREDICTOR */
/*

View File

@ -1391,94 +1391,205 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
xfact * *(ckt->CKTstate2 + here->HICUMvxf1);
Vbxf2 = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvxf2)-
xfact * *(ckt->CKTstate2 + here->HICUMvxf2);
*(ckt->CKTstate0 + here->HICUMvbiei) =
*(ckt->CKTstate1 + here->HICUMvbiei);
*(ckt->CKTstate0 + here->HICUMvbpei) =
*(ckt->CKTstate1 + here->HICUMvbpei);
*(ckt->CKTstate0 + here->HICUMvbici) =
*(ckt->CKTstate1 + here->HICUMvbici);
*(ckt->CKTstate0 + here->HICUMvbpei) =
*(ckt->CKTstate1 + here->HICUMvbpei);
*(ckt->CKTstate0 + here->HICUMvbpbi) =
*(ckt->CKTstate1 + here->HICUMvbpbi);
*(ckt->CKTstate0 + here->HICUMvsici) =
*(ckt->CKTstate1 + here->HICUMvsici);
*(ckt->CKTstate0 + here->HICUMvxf) =
*(ckt->CKTstate1 + here->HICUMvxf);
*(ckt->CKTstate0 + here->HICUMvxf1) =
*(ckt->CKTstate1 + here->HICUMvxf1);
*(ckt->CKTstate0 + here->HICUMvxf2) =
*(ckt->CKTstate1 + here->HICUMvxf2);
*(ckt->CKTstate0 + here->HICUMibiei) =
*(ckt->CKTstate1 + here->HICUMibiei);
*(ckt->CKTstate0 + here->HICUMibiei_Vbiei) =
*(ckt->CKTstate1 + here->HICUMibiei_Vbiei);
*(ckt->CKTstate0 + here->HICUMibiei_Vbici) =
*(ckt->CKTstate1 + here->HICUMibiei_Vbici);
*(ckt->CKTstate0 + here->HICUMibpei) =
*(ckt->CKTstate1 + here->HICUMibpei);
*(ckt->CKTstate0 + here->HICUMibpei_Vbpei) =
*(ckt->CKTstate1 + here->HICUMibpei_Vbpei);
*(ckt->CKTstate0 + here->HICUMiciei) =
*(ckt->CKTstate1 + here->HICUMiciei);
*(ckt->CKTstate0 + here->HICUMiciei_Vbiei) =
*(ckt->CKTstate1 + here->HICUMiciei_Vbiei);
*(ckt->CKTstate0 + here->HICUMiciei_Vbici) =
*(ckt->CKTstate1 + here->HICUMiciei_Vbici);
*(ckt->CKTstate0 + here->HICUMibici) =
*(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) =
*(ckt->CKTstate1 + here->HICUMibpbi);
*(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi) =
*(ckt->CKTstate1 + here->HICUMibpbi_Vbpbi);
*(ckt->CKTstate0 + here->HICUMibpbi_Vbiei) =
*(ckt->CKTstate1 + here->HICUMibpbi_Vbiei);
*(ckt->CKTstate0 + here->HICUMibpbi_Vbici) =
*(ckt->CKTstate1 + here->HICUMibpbi_Vbici);
*(ckt->CKTstate0 + here->HICUMisici) =
*(ckt->CKTstate1 + here->HICUMisici);
*(ckt->CKTstate0 + here->HICUMisici_Vsici) =
*(ckt->CKTstate1 + here->HICUMisici_Vsici);
*(ckt->CKTstate0 + here->HICUMibpsi) =
*(ckt->CKTstate1 + here->HICUMibpsi);
*(ckt->CKTstate0 + here->HICUMibpsi_Vbpci) =
*(ckt->CKTstate1 + here->HICUMibpsi_Vbpci);
*(ckt->CKTstate0 + here->HICUMibpsi_Vsici) =
*(ckt->CKTstate1 + here->HICUMibpsi_Vsici);
*(ckt->CKTstate0 + here->HICUMgqbepar1) =
*(ckt->CKTstate1 + here->HICUMgqbepar1);
*(ckt->CKTstate0 + here->HICUMgqbepar2) =
*(ckt->CKTstate1 + here->HICUMgqbepar2);
*(ckt->CKTstate0 + here->HICUMieie) =
*(ckt->CKTstate1 + here->HICUMieie);
*(ckt->CKTstate0 + here->HICUMisis_Vsis) =
*(ckt->CKTstate1 + here->HICUMisis_Vsis);
//NQS
*(ckt->CKTstate0 + here->HICUMgqxf) =
*(ckt->CKTstate1 + here->HICUMgqxf);
*(ckt->CKTstate0 + here->HICUMixf_Vbiei) =
*(ckt->CKTstate1 + here->HICUMixf_Vbiei);
*(ckt->CKTstate0 + here->HICUMixf_Vbici) =
*(ckt->CKTstate1 + here->HICUMixf_Vbici);
/////////////////////////
// begin copy state vector
/////////////////////////
//below is obsolete, I leave it here to remember old code since I am no ngspice expert
// *(ckt->CKTstate0 + here->HICUMvbiei) =
// *(ckt->CKTstate1 + here->HICUMvbiei);
// *(ckt->CKTstate0 + here->HICUMvbpei) =
// *(ckt->CKTstate1 + here->HICUMvbpei);
// *(ckt->CKTstate0 + here->HICUMvbici) =
// *(ckt->CKTstate1 + here->HICUMvbici);
// *(ckt->CKTstate0 + here->HICUMvbpei) =
// *(ckt->CKTstate1 + here->HICUMvbpei);
// *(ckt->CKTstate0 + here->HICUMvbpbi) =
// *(ckt->CKTstate1 + here->HICUMvbpbi);
// *(ckt->CKTstate0 + here->HICUMvsici) =
// *(ckt->CKTstate1 + here->HICUMvsici);
// *(ckt->CKTstate0 + here->HICUMvxf) =
// *(ckt->CKTstate1 + here->HICUMvxf);
// *(ckt->CKTstate0 + here->HICUMvxf1) =
// *(ckt->CKTstate1 + here->HICUMvxf1);
// *(ckt->CKTstate0 + here->HICUMvxf2) =
// *(ckt->CKTstate1 + here->HICUMvxf2);
// *(ckt->CKTstate0 + here->HICUMibiei) =
// *(ckt->CKTstate1 + here->HICUMibiei);
// *(ckt->CKTstate0 + here->HICUMibiei_Vbiei) =
// *(ckt->CKTstate1 + here->HICUMibiei_Vbiei);
// *(ckt->CKTstate0 + here->HICUMibiei_Vbici) =
// *(ckt->CKTstate1 + here->HICUMibiei_Vbici);
// *(ckt->CKTstate0 + here->HICUMibpei) =
// *(ckt->CKTstate1 + here->HICUMibpei);
// *(ckt->CKTstate0 + here->HICUMibpei_Vbpei) =
// *(ckt->CKTstate1 + here->HICUMibpei_Vbpei);
// *(ckt->CKTstate0 + here->HICUMiciei) =
// *(ckt->CKTstate1 + here->HICUMiciei);
// *(ckt->CKTstate0 + here->HICUMiciei_Vbiei) =
// *(ckt->CKTstate1 + here->HICUMiciei_Vbiei);
// *(ckt->CKTstate0 + here->HICUMiciei_Vbici) =
// *(ckt->CKTstate1 + here->HICUMiciei_Vbici);
// *(ckt->CKTstate0 + here->HICUMibici) =
// *(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) =
// *(ckt->CKTstate1 + here->HICUMibpbi);
// *(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi) =
// *(ckt->CKTstate1 + here->HICUMibpbi_Vbpbi);
// *(ckt->CKTstate0 + here->HICUMibpbi_Vbiei) =
// *(ckt->CKTstate1 + here->HICUMibpbi_Vbiei);
// *(ckt->CKTstate0 + here->HICUMibpbi_Vbici) =
// *(ckt->CKTstate1 + here->HICUMibpbi_Vbici);
// *(ckt->CKTstate0 + here->HICUMisici) =
// *(ckt->CKTstate1 + here->HICUMisici);
// *(ckt->CKTstate0 + here->HICUMisici_Vsici) =
// *(ckt->CKTstate1 + here->HICUMisici_Vsici);
// *(ckt->CKTstate0 + here->HICUMibpsi) =
// *(ckt->CKTstate1 + here->HICUMibpsi);
// *(ckt->CKTstate0 + here->HICUMibpsi_Vbpci) =
// *(ckt->CKTstate1 + here->HICUMibpsi_Vbpci);
// *(ckt->CKTstate0 + here->HICUMibpsi_Vsici) =
// *(ckt->CKTstate1 + here->HICUMibpsi_Vsici);
// *(ckt->CKTstate0 + here->HICUMgqbepar1) =
// *(ckt->CKTstate1 + here->HICUMgqbepar1);
// *(ckt->CKTstate0 + here->HICUMgqbepar2) =
// *(ckt->CKTstate1 + here->HICUMgqbepar2);
// *(ckt->CKTstate0 + here->HICUMieie) =
// *(ckt->CKTstate1 + here->HICUMieie);
// *(ckt->CKTstate0 + here->HICUMisis_Vsis) =
// *(ckt->CKTstate1 + here->HICUMisis_Vsis);
// //NQS
// *(ckt->CKTstate0 + here->HICUMgqxf) =
// *(ckt->CKTstate1 + here->HICUMgqxf);
// *(ckt->CKTstate0 + here->HICUMixf_Vbiei) =
// *(ckt->CKTstate1 + here->HICUMixf_Vbiei);
// *(ckt->CKTstate0 + here->HICUMixf_Vbici) =
// *(ckt->CKTstate1 + here->HICUMixf_Vbici);
if (model->HICUMflsh) {
Vrth = (1.0 + xfact)* (*(ckt->CKTstate1 + here->HICUMvrth))
- ( xfact * (*(ckt->CKTstate2 + here->HICUMvrth)));
*(ckt->CKTstate0 + here->HICUMvrth) =
*(ckt->CKTstate1 + here->HICUMvrth);
*(ckt->CKTstate0 + here->HICUMith) =
*(ckt->CKTstate1 + here->HICUMith);
*(ckt->CKTstate0 + here->HICUMith_Vrth) =
*(ckt->CKTstate1 + here->HICUMith_Vrth);
*(ckt->CKTstate0 + here->HICUMqcth) =
*(ckt->CKTstate1 + here->HICUMqcth);
}
// if (model->HICUMflsh) {
// Vrth = (1.0 + xfact)* (*(ckt->CKTstate1 + here->HICUMvrth))
// - ( xfact * (*(ckt->CKTstate2 + here->HICUMvrth)));
// *(ckt->CKTstate0 + here->HICUMvrth) =
// *(ckt->CKTstate1 + here->HICUMvrth);
// *(ckt->CKTstate0 + here->HICUMith) =
// *(ckt->CKTstate1 + here->HICUMith);
// *(ckt->CKTstate0 + here->HICUMith_Vrth) =
// *(ckt->CKTstate1 + here->HICUMith_Vrth);
// *(ckt->CKTstate0 + here->HICUMqcth) =
// *(ckt->CKTstate1 + here->HICUMqcth);
// }
*(ckt->CKTstate0+here->HICUMvbiei)=*(ckt->CKTstate1+here->HICUMvbiei);
*(ckt->CKTstate0+here->HICUMvbici)=*(ckt->CKTstate1+here->HICUMvbici);
*(ckt->CKTstate0+here->HICUMvbpei)=*(ckt->CKTstate1+here->HICUMvbpei);
*(ckt->CKTstate0+here->HICUMvbpbi)=*(ckt->CKTstate1+here->HICUMvbpbi);
*(ckt->CKTstate0+here->HICUMvbpci)=*(ckt->CKTstate1+here->HICUMvbpci);
*(ckt->CKTstate0+here->HICUMvsici)=*(ckt->CKTstate1+here->HICUMvsici);
*(ckt->CKTstate0+here->HICUMibiei)=*(ckt->CKTstate1+here->HICUMibiei);
*(ckt->CKTstate0+here->HICUMibiei_Vbiei)=*(ckt->CKTstate1+here->HICUMibiei_Vbiei);
*(ckt->CKTstate0+here->HICUMibiei_Vbici)=*(ckt->CKTstate1+here->HICUMibiei_Vbici);
*(ckt->CKTstate0+here->HICUMibiei_Vrth)=*(ckt->CKTstate1+here->HICUMibiei_Vrth);
*(ckt->CKTstate0+here->HICUMibpei)=*(ckt->CKTstate1+here->HICUMibpei);
*(ckt->CKTstate0+here->HICUMibpei_Vbpei)=*(ckt->CKTstate1+here->HICUMibpei_Vbpei);
*(ckt->CKTstate0+here->HICUMibpei_Vrth)=*(ckt->CKTstate1+here->HICUMibpei_Vrth);
*(ckt->CKTstate0+here->HICUMiciei)=*(ckt->CKTstate1+here->HICUMiciei);
*(ckt->CKTstate0+here->HICUMiciei_Vbiei)=*(ckt->CKTstate1+here->HICUMiciei_Vbiei);
*(ckt->CKTstate0+here->HICUMiciei_Vbici)=*(ckt->CKTstate1+here->HICUMiciei_Vbici);
*(ckt->CKTstate0+here->HICUMiciei_Vrth)=*(ckt->CKTstate1+here->HICUMiciei_Vrth);
*(ckt->CKTstate0+here->HICUMibici)=*(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->HICUMibici_Vrth)=*(ckt->CKTstate1+here->HICUMibici_Vrth);
*(ckt->CKTstate0+here->HICUMibpbi)=*(ckt->CKTstate1+here->HICUMibpbi);
*(ckt->CKTstate0+here->HICUMibpbi_Vbpbi)=*(ckt->CKTstate1+here->HICUMibpbi_Vbpbi);
*(ckt->CKTstate0+here->HICUMibpbi_Vbiei)=*(ckt->CKTstate1+here->HICUMibpbi_Vbiei);
*(ckt->CKTstate0+here->HICUMibpbi_Vbici)=*(ckt->CKTstate1+here->HICUMibpbi_Vbici);
*(ckt->CKTstate0+here->HICUMibpbi_Vrth)=*(ckt->CKTstate1+here->HICUMibpbi_Vrth);
*(ckt->CKTstate0+here->HICUMibpci)=*(ckt->CKTstate1+here->HICUMibpci);
*(ckt->CKTstate0+here->HICUMibpci_Vbpci)=*(ckt->CKTstate1+here->HICUMibpci_Vbpci);
*(ckt->CKTstate0+here->HICUMibpci_Vrth)=*(ckt->CKTstate1+here->HICUMibpci_Vrth);
*(ckt->CKTstate0+here->HICUMisici)=*(ckt->CKTstate1+here->HICUMisici);
*(ckt->CKTstate0+here->HICUMisici_Vsici)=*(ckt->CKTstate1+here->HICUMisici_Vsici);
*(ckt->CKTstate0+here->HICUMisici_Vrth)=*(ckt->CKTstate1+here->HICUMisici_Vrth);
*(ckt->CKTstate0+here->HICUMibpsi)=*(ckt->CKTstate1+here->HICUMibpsi);
*(ckt->CKTstate0+here->HICUMibpsi_Vbpci)=*(ckt->CKTstate1+here->HICUMibpsi_Vbpci);
*(ckt->CKTstate0+here->HICUMibpsi_Vsici)=*(ckt->CKTstate1+here->HICUMibpsi_Vsici);
*(ckt->CKTstate0+here->HICUMibpsi_Vrth)=*(ckt->CKTstate1+here->HICUMibpsi_Vrth);
*(ckt->CKTstate0+here->HICUMisis_Vsis)=*(ckt->CKTstate1+here->HICUMisis_Vsis);
*(ckt->CKTstate0+here->HICUMieie)=*(ckt->CKTstate1+here->HICUMieie);
*(ckt->CKTstate0+here->HICUMieie_Vrth)=*(ckt->CKTstate1+here->HICUMieie_Vrth);
*(ckt->CKTstate0+here->HICUMqrbi)=*(ckt->CKTstate1+here->HICUMqrbi);
*(ckt->CKTstate0+here->HICUMcqrbi)=*(ckt->CKTstate1+here->HICUMcqrbi);
*(ckt->CKTstate0+here->HICUMqjei)=*(ckt->CKTstate1+here->HICUMqjei);
*(ckt->CKTstate0+here->HICUMcqjei)=*(ckt->CKTstate1+here->HICUMcqjei);
*(ckt->CKTstate0+here->HICUMqdeix)=*(ckt->CKTstate1+here->HICUMqdeix);
*(ckt->CKTstate0+here->HICUMcqdeix)=*(ckt->CKTstate1+here->HICUMcqdeix);
*(ckt->CKTstate0+here->HICUMqjci)=*(ckt->CKTstate1+here->HICUMqjci);
*(ckt->CKTstate0+here->HICUMcqjci)=*(ckt->CKTstate1+here->HICUMcqjci);
*(ckt->CKTstate0+here->HICUMqdci)=*(ckt->CKTstate1+here->HICUMqdci);
*(ckt->CKTstate0+here->HICUMcqdci)=*(ckt->CKTstate1+here->HICUMcqdci);
*(ckt->CKTstate0+here->HICUMqjep)=*(ckt->CKTstate1+here->HICUMqjep);
*(ckt->CKTstate0+here->HICUMcqjep)=*(ckt->CKTstate1+here->HICUMcqjep);
*(ckt->CKTstate0+here->HICUMqjcx0_i)=*(ckt->CKTstate1+here->HICUMqjcx0_i);
*(ckt->CKTstate0+here->HICUMcqcx0_t_i)=*(ckt->CKTstate1+here->HICUMcqcx0_t_i);
*(ckt->CKTstate0+here->HICUMqjcx0_ii)=*(ckt->CKTstate1+here->HICUMqjcx0_ii);
*(ckt->CKTstate0+here->HICUMcqcx0_t_ii)=*(ckt->CKTstate1+here->HICUMcqcx0_t_ii);
*(ckt->CKTstate0+here->HICUMqdsu)=*(ckt->CKTstate1+here->HICUMqdsu);
*(ckt->CKTstate0+here->HICUMcqdsu)=*(ckt->CKTstate1+here->HICUMcqdsu);
*(ckt->CKTstate0+here->HICUMqjs)=*(ckt->CKTstate1+here->HICUMqjs);
*(ckt->CKTstate0+here->HICUMcqjs)=*(ckt->CKTstate1+here->HICUMcqjs);
*(ckt->CKTstate0+here->HICUMqscp)=*(ckt->CKTstate1+here->HICUMqscp);
*(ckt->CKTstate0+here->HICUMcqscp)=*(ckt->CKTstate1+here->HICUMcqscp);
*(ckt->CKTstate0+here->HICUMqbepar1)=*(ckt->CKTstate1+here->HICUMqbepar1);
*(ckt->CKTstate0+here->HICUMcqbepar1)=*(ckt->CKTstate1+here->HICUMcqbepar1);
*(ckt->CKTstate0+here->HICUMgqbepar1)=*(ckt->CKTstate1+here->HICUMgqbepar1);
*(ckt->CKTstate0+here->HICUMqbepar2)=*(ckt->CKTstate1+here->HICUMqbepar2);
*(ckt->CKTstate0+here->HICUMcqbepar2)=*(ckt->CKTstate1+here->HICUMcqbepar2);
*(ckt->CKTstate0+here->HICUMgqbepar2)=*(ckt->CKTstate1+here->HICUMgqbepar2);
*(ckt->CKTstate0+here->HICUMqbcpar1)=*(ckt->CKTstate1+here->HICUMqbcpar1);
*(ckt->CKTstate0+here->HICUMcqbcpar1)=*(ckt->CKTstate1+here->HICUMcqbcpar1);
*(ckt->CKTstate0+here->HICUMgqbcpar1)=*(ckt->CKTstate1+here->HICUMgqbcpar1);
*(ckt->CKTstate0+here->HICUMqbcpar2)=*(ckt->CKTstate1+here->HICUMqbcpar2);
*(ckt->CKTstate0+here->HICUMcqbcpar2)=*(ckt->CKTstate1+here->HICUMcqbcpar2);
*(ckt->CKTstate0+here->HICUMgqbcpar2)=*(ckt->CKTstate1+here->HICUMgqbcpar2);
*(ckt->CKTstate0+here->HICUMqsu)=*(ckt->CKTstate1+here->HICUMqsu);
*(ckt->CKTstate0+here->HICUMcqsu)=*(ckt->CKTstate1+here->HICUMcqsu);
*(ckt->CKTstate0+here->HICUMgqsu)=*(ckt->CKTstate1+here->HICUMgqsu);
*(ckt->CKTstate0+here->HICUMqcth)=*(ckt->CKTstate1+here->HICUMqcth);
*(ckt->CKTstate0+here->HICUMcqcth)=*(ckt->CKTstate1+here->HICUMcqcth);
*(ckt->CKTstate0+here->HICUMvrth)=*(ckt->CKTstate1+here->HICUMvrth);
*(ckt->CKTstate0+here->HICUMicth_dT)=*(ckt->CKTstate1+here->HICUMicth_dT);
*(ckt->CKTstate0+here->HICUMvxf)=*(ckt->CKTstate1+here->HICUMvxf);
*(ckt->CKTstate0+here->HICUMqxf)=*(ckt->CKTstate1+here->HICUMqxf);
*(ckt->CKTstate0+here->HICUMcqxf)=*(ckt->CKTstate1+here->HICUMcqxf);
*(ckt->CKTstate0+here->HICUMgqxf)=*(ckt->CKTstate1+here->HICUMgqxf);
*(ckt->CKTstate0+here->HICUMixf_Vbiei)=*(ckt->CKTstate1+here->HICUMixf_Vbiei);
*(ckt->CKTstate0+here->HICUMixf_Vbici)=*(ckt->CKTstate1+here->HICUMixf_Vbici);
*(ckt->CKTstate0+here->HICUMvxf1)=*(ckt->CKTstate1+here->HICUMvxf1);
*(ckt->CKTstate0+here->HICUMqxf1)=*(ckt->CKTstate1+here->HICUMqxf1);
*(ckt->CKTstate0+here->HICUMcqxf1)=*(ckt->CKTstate1+here->HICUMcqxf1);
*(ckt->CKTstate0+here->HICUMgqxf1)=*(ckt->CKTstate1+here->HICUMgqxf1);
*(ckt->CKTstate0+here->HICUMixf1_Vbiei)=*(ckt->CKTstate1+here->HICUMixf1_Vbiei);
*(ckt->CKTstate0+here->HICUMixf1_Vbici)=*(ckt->CKTstate1+here->HICUMixf1_Vbici);
*(ckt->CKTstate0+here->HICUMixf1_Vfx2)=*(ckt->CKTstate1+here->HICUMixf1_Vfx2);
*(ckt->CKTstate0+here->HICUMvxf2)=*(ckt->CKTstate1+here->HICUMvxf2);
*(ckt->CKTstate0+here->HICUMqxf2)=*(ckt->CKTstate1+here->HICUMqxf2);
*(ckt->CKTstate0+here->HICUMcqxf2)=*(ckt->CKTstate1+here->HICUMcqxf2);
*(ckt->CKTstate0+here->HICUMgqxf2)=*(ckt->CKTstate1+here->HICUMgqxf2);
*(ckt->CKTstate0+here->HICUMixf2_Vbiei)=*(ckt->CKTstate1+here->HICUMixf2_Vbiei);
*(ckt->CKTstate0+here->HICUMixf2_Vbici)=*(ckt->CKTstate1+here->HICUMixf2_Vbici);
*(ckt->CKTstate0+here->HICUMixf2_Vfx1)=*(ckt->CKTstate1+here->HICUMixf2_Vfx1);
*(ckt->CKTstate0+here->HICUMith)=*(ckt->CKTstate1+here->HICUMith);
*(ckt->CKTstate0+here->HICUMith_Vrth)=*(ckt->CKTstate1+here->HICUMith_Vrth);
/////////////////////////
// end copy state vector
/////////////////////////
} else {
#endif /* PREDICTOR */
/*
@ -1520,8 +1631,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
delvbpbi = Vbpbi - *(ckt->CKTstate0 + here->HICUMvbpbi);
delvbpci = Vbpci - *(ckt->CKTstate0 + here->HICUMvbpci);
delvsici = Vsici - *(ckt->CKTstate0 + here->HICUMvsici);
if (model->HICUMflsh)
delvrth = Vrth - *(ckt->CKTstate0 + here->HICUMvrth);
delvrth = Vrth - *(ckt->CKTstate0 + here->HICUMvrth);
Vbe = model->HICUMtype*(
*(ckt->CKTrhsOld+here->HICUMbaseNode)-
*(ckt->CKTrhsOld+here->HICUMemitNode));
@ -1553,28 +1663,36 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Vrth = *(ckt->CKTrhsOld + here->HICUMtempNode);
ibieihat = *(ckt->CKTstate0 + here->HICUMibiei) +
*(ckt->CKTstate0 + here->HICUMibiei_Vbiei)*delvbiei+
*(ckt->CKTstate0 + here->HICUMibiei_Vrth)*delvrth+
*(ckt->CKTstate0 + here->HICUMibiei_Vbici)*delvbici,
ibicihat = *(ckt->CKTstate0 + here->HICUMibici) +
*(ckt->CKTstate0 + here->HICUMibici_Vbici)*delvbici+
*(ckt->CKTstate0 + here->HICUMibici_Vrth)*delvrth+
*(ckt->CKTstate0 + here->HICUMibici_Vbiei)*delvbiei;
ibpeihat = *(ckt->CKTstate0 + here->HICUMibpei) +
*(ckt->CKTstate0 + here->HICUMibpei_Vbpei)*delvbpei;
*(ckt->CKTstate0 + here->HICUMibpei_Vbpei)*delvbpei+
*(ckt->CKTstate0 + here->HICUMibpei_Vrth)*delvrth;
ibpcihat = *(ckt->CKTstate0 + here->HICUMibpci) +
*(ckt->CKTstate0 + here->HICUMibpci_Vbpci)*delvbpci;
*(ckt->CKTstate0 + here->HICUMibpci_Vbpci)*delvbpci+
*(ckt->CKTstate0 + here->HICUMibpci_Vrth)*delvrth;
icieihat = *(ckt->CKTstate0 + here->HICUMiciei) +
*(ckt->CKTstate0 + here->HICUMiciei_Vbiei)*delvbiei +
*(ckt->CKTstate0 + here->HICUMiciei_Vrth)*delvrth +
*(ckt->CKTstate0 + here->HICUMiciei_Vbici)*delvbici;
ibpbihat = *(ckt->CKTstate0 + here->HICUMibpbi) +
*(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi)*delvbpbi +
*(ckt->CKTstate0 + here->HICUMibpbi_Vrth)*delvrth +
*(ckt->CKTstate0 + here->HICUMibpbi_Vbiei)*delvbiei +
*(ckt->CKTstate0 + here->HICUMibpbi_Vbici)*delvbici;
isicihat = *(ckt->CKTstate0 + here->HICUMisici) +
*(ckt->CKTstate0 + here->HICUMisici_Vsici)*delvsici;
*(ckt->CKTstate0 + here->HICUMisici_Vsici)*delvsici+
*(ckt->CKTstate0 + here->HICUMisici_Vrth)*delvrth;
ibpsihat = *(ckt->CKTstate0 + here->HICUMibpsi) +
*(ckt->CKTstate0 + here->HICUMibpsi_Vbpci)*delvbpci +
*(ckt->CKTstate0 + here->HICUMibpsi_Vrth)*delvrth +
*(ckt->CKTstate0 + here->HICUMibpsi_Vsici)*delvsici;
ithhat = *(ckt->CKTstate0 + here->HICUMith) +
*(ckt->CKTstate0 + here->HICUMith_Vrth)*delvrth;
*(ckt->CKTstate0 + here->HICUMith_Vrth)*delvrth; //other dels are missing here... great :/
/*
* bypass if solution has not changed
*/
@ -1648,34 +1766,43 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Ibiei = *(ckt->CKTstate0 + here->HICUMibiei);
Ibiei_Vbiei = *(ckt->CKTstate0 + here->HICUMibiei_Vbiei);
Ibiei_Vbici = *(ckt->CKTstate0 + here->HICUMibiei_Vbici);
Ibiei_dT = *(ckt->CKTstate0 + here->HICUMibiei_Vrth);
Ibpei = *(ckt->CKTstate0 + here->HICUMibpei);
Ibpei_Vbpei = *(ckt->CKTstate0 + here->HICUMibpei_Vbpei);
Ibpei_dT = *(ckt->CKTstate0 + here->HICUMibpei_Vrth);
Iciei = *(ckt->CKTstate0 + here->HICUMiciei);
Iciei_Vbiei = *(ckt->CKTstate0 + here->HICUMiciei_Vbiei);
Iciei_Vbici = *(ckt->CKTstate0 + here->HICUMiciei_Vbici);
Iciei_dT = *(ckt->CKTstate0 + here->HICUMiciei_Vrth);
Ibici = *(ckt->CKTstate0 + here->HICUMibici);
Ibici_Vbici = *(ckt->CKTstate0 + here->HICUMibici_Vbici);
Ibici_Vbiei = *(ckt->CKTstate0 + here->HICUMibici_Vbiei);
Ibici_dT = *(ckt->CKTstate0 + here->HICUMibici_Vrth);
Ibpbi = *(ckt->CKTstate0 + here->HICUMibpbi);
Ibpbi_Vbpbi = *(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi);
Ibpbi_Vbiei = *(ckt->CKTstate0 + here->HICUMibpbi_Vbiei);
Ibpbi_Vbici = *(ckt->CKTstate0 + here->HICUMibpbi_Vbici);
Ibpbi_dT = *(ckt->CKTstate0 + here->HICUMibpbi_Vrth);
Isici = *(ckt->CKTstate0 + here->HICUMisici);
Isici_Vsici = *(ckt->CKTstate0 + here->HICUMisici_Vsici);
Isici_dT = *(ckt->CKTstate0 + here->HICUMisici_Vrth);
Ibpsi = *(ckt->CKTstate0 + here->HICUMibpsi);
Ibpsi_Vbpci = *(ckt->CKTstate0 + here->HICUMibpsi_Vbpci);
Ibpsi_Vsici = *(ckt->CKTstate0 + here->HICUMibpsi_Vsici);
Ibpsi_dT = *(ckt->CKTstate0 + here->HICUMibpsi_Vrth);
Ibpci = *(ckt->CKTstate0 + here->HICUMibpci);
Ibpci_Vbpci = *(ckt->CKTstate0 + here->HICUMibpci_Vbpci);
Ibpci_dT = *(ckt->CKTstate0 + here->HICUMibpci_Vrth);
Ieie = *(ckt->CKTstate0 + here->HICUMieie);
Ieie_dT = *(ckt->CKTstate0 + here->HICUMieie_Vrth);
Isis_Vsis = *(ckt->CKTstate0 + here->HICUMisis_Vsis);
@ -1712,7 +1839,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
//todo: check for double multiplication on pnp's
Vbiei = model->HICUMtype*Vbiei;
Vbici = model->HICUMtype*Vbici;
Vciei = Vbiei-Vbici;
Vciei = model->HICUMtype*(Vbiei-Vbici);
Vbpei = model->HICUMtype*Vbpei;
Vbpci = model->HICUMtype*Vbpci;
Vbci = model->HICUMtype*Vbci;
@ -1727,6 +1854,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
here->HICUMdtemp_sh = Temp - ckt->CKTtemp;
} else {
Temp = here->HICUMtemp;
here->HICUMdtemp_sh = 0;
}
@ -2809,36 +2937,45 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTstate0 + here->HICUMibiei) = Ibiei;
*(ckt->CKTstate0 + here->HICUMibiei_Vbiei) = Ibiei_Vbiei;
*(ckt->CKTstate0 + here->HICUMibiei_Vbici) = Ibiei_Vbici;
*(ckt->CKTstate0 + here->HICUMibiei_Vrth) = Ibiei_dT;
*(ckt->CKTstate0 + here->HICUMibpei) = Ibpei;
*(ckt->CKTstate0 + here->HICUMibpei_Vbpei) = Ibpei_Vbpei;
*(ckt->CKTstate0 + here->HICUMibpei_Vrth) = Ibpei_dT;
*(ckt->CKTstate0 + here->HICUMiciei) = Iciei;
*(ckt->CKTstate0 + here->HICUMiciei_Vbiei) = Iciei_Vbiei;
*(ckt->CKTstate0 + here->HICUMiciei_Vbici) = Iciei_Vbici;
*(ckt->CKTstate0 + here->HICUMiciei_Vrth) = Iciei_dT;
*(ckt->CKTstate0 + here->HICUMibici) = Ibici;
*(ckt->CKTstate0 + here->HICUMibici_Vbici) = Ibici_Vbici;
*(ckt->CKTstate0 + here->HICUMibici_Vbiei) = Ibici_Vbiei;
*(ckt->CKTstate0 + here->HICUMibici_Vrth) = Ibici_dT;
*(ckt->CKTstate0 + here->HICUMibpbi) = Ibpbi;
*(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi) = Ibpbi_Vbpbi;
*(ckt->CKTstate0 + here->HICUMibpbi_Vbiei) = Ibpbi_Vbiei;
*(ckt->CKTstate0 + here->HICUMibpbi_Vbici) = Ibpbi_Vbici;
*(ckt->CKTstate0 + here->HICUMibpbi_Vrth) = Ibpbi_dT;
*(ckt->CKTstate0 + here->HICUMibpci) = Ibpci;
*(ckt->CKTstate0 + here->HICUMibpci_Vbpci) = Ibpci_Vbpci;
*(ckt->CKTstate0 + here->HICUMibpci_Vrth) = Ibpci_dT;
*(ckt->CKTstate0 + here->HICUMisici) = Isici;
*(ckt->CKTstate0 + here->HICUMisici_Vsici) = Isici_Vsici;
*(ckt->CKTstate0 + here->HICUMisici_Vrth) = Isici_dT;
*(ckt->CKTstate0 + here->HICUMibpsi) = Ibpsi;
*(ckt->CKTstate0 + here->HICUMibpsi_Vbpci) = Ibpsi_Vbpci;
*(ckt->CKTstate0 + here->HICUMibpsi_Vsici) = Ibpsi_Vsici;
*(ckt->CKTstate0 + here->HICUMibpsi_Vrth) = Ibpsi_dT;
*(ckt->CKTstate0 + here->HICUMisis_Vsis) = Isis_Vsis;
*(ckt->CKTstate0 + here->HICUMieie) = Ieie;
*(ckt->CKTstate0 + here->HICUMieie_Vrth) = Ieie_dT;
*(ckt->CKTstate0 + here->HICUMcqcth) = Icth;
*(ckt->CKTstate0 + here->HICUMicth_dT) = Icth_dT;