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

View File

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

View File

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

View File

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

View File

@ -1391,94 +1391,205 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
xfact * *(ckt->CKTstate2 + here->HICUMvxf1); xfact * *(ckt->CKTstate2 + here->HICUMvxf1);
Vbxf2 = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvxf2)- Vbxf2 = (1+xfact) * *(ckt->CKTstate1 + here->HICUMvxf2)-
xfact * *(ckt->CKTstate2 + here->HICUMvxf2); xfact * *(ckt->CKTstate2 + here->HICUMvxf2);
*(ckt->CKTstate0 + here->HICUMvbiei) = /////////////////////////
*(ckt->CKTstate1 + here->HICUMvbiei); // begin copy state vector
*(ckt->CKTstate0 + here->HICUMvbpei) = /////////////////////////
*(ckt->CKTstate1 + here->HICUMvbpei); //below is obsolete, I leave it here to remember old code since I am no ngspice expert
*(ckt->CKTstate0 + here->HICUMvbici) = // *(ckt->CKTstate0 + here->HICUMvbiei) =
*(ckt->CKTstate1 + here->HICUMvbici); // *(ckt->CKTstate1 + here->HICUMvbiei);
*(ckt->CKTstate0 + here->HICUMvbpei) = // *(ckt->CKTstate0 + here->HICUMvbpei) =
*(ckt->CKTstate1 + here->HICUMvbpei); // *(ckt->CKTstate1 + here->HICUMvbpei);
*(ckt->CKTstate0 + here->HICUMvbpbi) = // *(ckt->CKTstate0 + here->HICUMvbici) =
*(ckt->CKTstate1 + here->HICUMvbpbi); // *(ckt->CKTstate1 + here->HICUMvbici);
*(ckt->CKTstate0 + here->HICUMvsici) = // *(ckt->CKTstate0 + here->HICUMvbpei) =
*(ckt->CKTstate1 + here->HICUMvsici); // *(ckt->CKTstate1 + here->HICUMvbpei);
*(ckt->CKTstate0 + here->HICUMvxf) = // *(ckt->CKTstate0 + here->HICUMvbpbi) =
*(ckt->CKTstate1 + here->HICUMvxf); // *(ckt->CKTstate1 + here->HICUMvbpbi);
*(ckt->CKTstate0 + here->HICUMvxf1) = // *(ckt->CKTstate0 + here->HICUMvsici) =
*(ckt->CKTstate1 + here->HICUMvxf1); // *(ckt->CKTstate1 + here->HICUMvsici);
*(ckt->CKTstate0 + here->HICUMvxf2) = // *(ckt->CKTstate0 + here->HICUMvxf) =
*(ckt->CKTstate1 + here->HICUMvxf2); // *(ckt->CKTstate1 + here->HICUMvxf);
*(ckt->CKTstate0 + here->HICUMibiei) = // *(ckt->CKTstate0 + here->HICUMvxf1) =
*(ckt->CKTstate1 + here->HICUMibiei); // *(ckt->CKTstate1 + here->HICUMvxf1);
*(ckt->CKTstate0 + here->HICUMibiei_Vbiei) = // *(ckt->CKTstate0 + here->HICUMvxf2) =
*(ckt->CKTstate1 + here->HICUMibiei_Vbiei); // *(ckt->CKTstate1 + here->HICUMvxf2);
*(ckt->CKTstate0 + here->HICUMibiei_Vbici) = // *(ckt->CKTstate0 + here->HICUMibiei) =
*(ckt->CKTstate1 + here->HICUMibiei_Vbici); // *(ckt->CKTstate1 + here->HICUMibiei);
*(ckt->CKTstate0 + here->HICUMibpei) = // *(ckt->CKTstate0 + here->HICUMibiei_Vbiei) =
*(ckt->CKTstate1 + here->HICUMibpei); // *(ckt->CKTstate1 + here->HICUMibiei_Vbiei);
*(ckt->CKTstate0 + here->HICUMibpei_Vbpei) = // *(ckt->CKTstate0 + here->HICUMibiei_Vbici) =
*(ckt->CKTstate1 + here->HICUMibpei_Vbpei); // *(ckt->CKTstate1 + here->HICUMibiei_Vbici);
*(ckt->CKTstate0 + here->HICUMiciei) = // *(ckt->CKTstate0 + here->HICUMibpei) =
*(ckt->CKTstate1 + here->HICUMiciei); // *(ckt->CKTstate1 + here->HICUMibpei);
*(ckt->CKTstate0 + here->HICUMiciei_Vbiei) = // *(ckt->CKTstate0 + here->HICUMibpei_Vbpei) =
*(ckt->CKTstate1 + here->HICUMiciei_Vbiei); // *(ckt->CKTstate1 + here->HICUMibpei_Vbpei);
*(ckt->CKTstate0 + here->HICUMiciei_Vbici) = // *(ckt->CKTstate0 + here->HICUMiciei) =
*(ckt->CKTstate1 + here->HICUMiciei_Vbici); // *(ckt->CKTstate1 + here->HICUMiciei);
*(ckt->CKTstate0 + here->HICUMibici) = // *(ckt->CKTstate0 + here->HICUMiciei_Vbiei) =
*(ckt->CKTstate1 + here->HICUMibici); // *(ckt->CKTstate1 + here->HICUMiciei_Vbiei);
*(ckt->CKTstate0 + here->HICUMibici_Vbici) = // *(ckt->CKTstate0 + here->HICUMiciei_Vbici) =
*(ckt->CKTstate1 + here->HICUMibici_Vbici); // *(ckt->CKTstate1 + here->HICUMiciei_Vbici);
*(ckt->CKTstate0 + here->HICUMibici_Vbiei) = // *(ckt->CKTstate0 + here->HICUMibici) =
*(ckt->CKTstate1 + here->HICUMibici_Vbiei); // *(ckt->CKTstate1 + here->HICUMibici);
*(ckt->CKTstate0 + here->HICUMibpei) = // *(ckt->CKTstate0 + here->HICUMibici_Vbici) =
*(ckt->CKTstate1 + here->HICUMibpei); // *(ckt->CKTstate1 + here->HICUMibici_Vbici);
*(ckt->CKTstate0 + here->HICUMibpbi) = // *(ckt->CKTstate0 + here->HICUMibici_Vbiei) =
*(ckt->CKTstate1 + here->HICUMibpbi); // *(ckt->CKTstate1 + here->HICUMibici_Vbiei);
*(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi) = // *(ckt->CKTstate0 + here->HICUMibpei) =
*(ckt->CKTstate1 + here->HICUMibpbi_Vbpbi); // *(ckt->CKTstate1 + here->HICUMibpei);
*(ckt->CKTstate0 + here->HICUMibpbi_Vbiei) = // *(ckt->CKTstate0 + here->HICUMibpbi) =
*(ckt->CKTstate1 + here->HICUMibpbi_Vbiei); // *(ckt->CKTstate1 + here->HICUMibpbi);
*(ckt->CKTstate0 + here->HICUMibpbi_Vbici) = // *(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi) =
*(ckt->CKTstate1 + here->HICUMibpbi_Vbici); // *(ckt->CKTstate1 + here->HICUMibpbi_Vbpbi);
*(ckt->CKTstate0 + here->HICUMisici) = // *(ckt->CKTstate0 + here->HICUMibpbi_Vbiei) =
*(ckt->CKTstate1 + here->HICUMisici); // *(ckt->CKTstate1 + here->HICUMibpbi_Vbiei);
*(ckt->CKTstate0 + here->HICUMisici_Vsici) = // *(ckt->CKTstate0 + here->HICUMibpbi_Vbici) =
*(ckt->CKTstate1 + here->HICUMisici_Vsici); // *(ckt->CKTstate1 + here->HICUMibpbi_Vbici);
*(ckt->CKTstate0 + here->HICUMibpsi) = // *(ckt->CKTstate0 + here->HICUMisici) =
*(ckt->CKTstate1 + here->HICUMibpsi); // *(ckt->CKTstate1 + here->HICUMisici);
*(ckt->CKTstate0 + here->HICUMibpsi_Vbpci) = // *(ckt->CKTstate0 + here->HICUMisici_Vsici) =
*(ckt->CKTstate1 + here->HICUMibpsi_Vbpci); // *(ckt->CKTstate1 + here->HICUMisici_Vsici);
*(ckt->CKTstate0 + here->HICUMibpsi_Vsici) = // *(ckt->CKTstate0 + here->HICUMibpsi) =
*(ckt->CKTstate1 + here->HICUMibpsi_Vsici); // *(ckt->CKTstate1 + here->HICUMibpsi);
*(ckt->CKTstate0 + here->HICUMgqbepar1) = // *(ckt->CKTstate0 + here->HICUMibpsi_Vbpci) =
*(ckt->CKTstate1 + here->HICUMgqbepar1); // *(ckt->CKTstate1 + here->HICUMibpsi_Vbpci);
*(ckt->CKTstate0 + here->HICUMgqbepar2) = // *(ckt->CKTstate0 + here->HICUMibpsi_Vsici) =
*(ckt->CKTstate1 + here->HICUMgqbepar2); // *(ckt->CKTstate1 + here->HICUMibpsi_Vsici);
*(ckt->CKTstate0 + here->HICUMieie) = // *(ckt->CKTstate0 + here->HICUMgqbepar1) =
*(ckt->CKTstate1 + here->HICUMieie); // *(ckt->CKTstate1 + here->HICUMgqbepar1);
*(ckt->CKTstate0 + here->HICUMisis_Vsis) = // *(ckt->CKTstate0 + here->HICUMgqbepar2) =
*(ckt->CKTstate1 + here->HICUMisis_Vsis); // *(ckt->CKTstate1 + here->HICUMgqbepar2);
//NQS // *(ckt->CKTstate0 + here->HICUMieie) =
*(ckt->CKTstate0 + here->HICUMgqxf) = // *(ckt->CKTstate1 + here->HICUMieie);
*(ckt->CKTstate1 + here->HICUMgqxf); // *(ckt->CKTstate0 + here->HICUMisis_Vsis) =
*(ckt->CKTstate0 + here->HICUMixf_Vbiei) = // *(ckt->CKTstate1 + here->HICUMisis_Vsis);
*(ckt->CKTstate1 + here->HICUMixf_Vbiei); // //NQS
*(ckt->CKTstate0 + here->HICUMixf_Vbici) = // *(ckt->CKTstate0 + here->HICUMgqxf) =
*(ckt->CKTstate1 + here->HICUMixf_Vbici); // *(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) { // if (model->HICUMflsh) {
Vrth = (1.0 + xfact)* (*(ckt->CKTstate1 + here->HICUMvrth)) // Vrth = (1.0 + xfact)* (*(ckt->CKTstate1 + here->HICUMvrth))
- ( xfact * (*(ckt->CKTstate2 + here->HICUMvrth))); // - ( xfact * (*(ckt->CKTstate2 + here->HICUMvrth)));
*(ckt->CKTstate0 + here->HICUMvrth) = // *(ckt->CKTstate0 + here->HICUMvrth) =
*(ckt->CKTstate1 + here->HICUMvrth); // *(ckt->CKTstate1 + here->HICUMvrth);
*(ckt->CKTstate0 + here->HICUMith) = // *(ckt->CKTstate0 + here->HICUMith) =
*(ckt->CKTstate1 + here->HICUMith); // *(ckt->CKTstate1 + here->HICUMith);
*(ckt->CKTstate0 + here->HICUMith_Vrth) = // *(ckt->CKTstate0 + here->HICUMith_Vrth) =
*(ckt->CKTstate1 + here->HICUMith_Vrth); // *(ckt->CKTstate1 + here->HICUMith_Vrth);
*(ckt->CKTstate0 + here->HICUMqcth) = // *(ckt->CKTstate0 + here->HICUMqcth) =
*(ckt->CKTstate1 + 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 { } else {
#endif /* PREDICTOR */ #endif /* PREDICTOR */
/* /*
@ -1520,8 +1631,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
delvbpbi = Vbpbi - *(ckt->CKTstate0 + here->HICUMvbpbi); delvbpbi = Vbpbi - *(ckt->CKTstate0 + here->HICUMvbpbi);
delvbpci = Vbpci - *(ckt->CKTstate0 + here->HICUMvbpci); delvbpci = Vbpci - *(ckt->CKTstate0 + here->HICUMvbpci);
delvsici = Vsici - *(ckt->CKTstate0 + here->HICUMvsici); delvsici = Vsici - *(ckt->CKTstate0 + here->HICUMvsici);
if (model->HICUMflsh) delvrth = Vrth - *(ckt->CKTstate0 + here->HICUMvrth);
delvrth = Vrth - *(ckt->CKTstate0 + here->HICUMvrth);
Vbe = model->HICUMtype*( Vbe = model->HICUMtype*(
*(ckt->CKTrhsOld+here->HICUMbaseNode)- *(ckt->CKTrhsOld+here->HICUMbaseNode)-
*(ckt->CKTrhsOld+here->HICUMemitNode)); *(ckt->CKTrhsOld+here->HICUMemitNode));
@ -1553,28 +1663,36 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Vrth = *(ckt->CKTrhsOld + here->HICUMtempNode); Vrth = *(ckt->CKTrhsOld + here->HICUMtempNode);
ibieihat = *(ckt->CKTstate0 + here->HICUMibiei) + ibieihat = *(ckt->CKTstate0 + here->HICUMibiei) +
*(ckt->CKTstate0 + here->HICUMibiei_Vbiei)*delvbiei+ *(ckt->CKTstate0 + here->HICUMibiei_Vbiei)*delvbiei+
*(ckt->CKTstate0 + here->HICUMibiei_Vrth)*delvrth+
*(ckt->CKTstate0 + here->HICUMibiei_Vbici)*delvbici, *(ckt->CKTstate0 + here->HICUMibiei_Vbici)*delvbici,
ibicihat = *(ckt->CKTstate0 + here->HICUMibici) + ibicihat = *(ckt->CKTstate0 + here->HICUMibici) +
*(ckt->CKTstate0 + here->HICUMibici_Vbici)*delvbici+ *(ckt->CKTstate0 + here->HICUMibici_Vbici)*delvbici+
*(ckt->CKTstate0 + here->HICUMibici_Vrth)*delvrth+
*(ckt->CKTstate0 + here->HICUMibici_Vbiei)*delvbiei; *(ckt->CKTstate0 + here->HICUMibici_Vbiei)*delvbiei;
ibpeihat = *(ckt->CKTstate0 + here->HICUMibpei) + 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) + 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) + icieihat = *(ckt->CKTstate0 + here->HICUMiciei) +
*(ckt->CKTstate0 + here->HICUMiciei_Vbiei)*delvbiei + *(ckt->CKTstate0 + here->HICUMiciei_Vbiei)*delvbiei +
*(ckt->CKTstate0 + here->HICUMiciei_Vrth)*delvrth +
*(ckt->CKTstate0 + here->HICUMiciei_Vbici)*delvbici; *(ckt->CKTstate0 + here->HICUMiciei_Vbici)*delvbici;
ibpbihat = *(ckt->CKTstate0 + here->HICUMibpbi) + ibpbihat = *(ckt->CKTstate0 + here->HICUMibpbi) +
*(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi)*delvbpbi + *(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi)*delvbpbi +
*(ckt->CKTstate0 + here->HICUMibpbi_Vrth)*delvrth +
*(ckt->CKTstate0 + here->HICUMibpbi_Vbiei)*delvbiei + *(ckt->CKTstate0 + here->HICUMibpbi_Vbiei)*delvbiei +
*(ckt->CKTstate0 + here->HICUMibpbi_Vbici)*delvbici; *(ckt->CKTstate0 + here->HICUMibpbi_Vbici)*delvbici;
isicihat = *(ckt->CKTstate0 + here->HICUMisici) + 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) + ibpsihat = *(ckt->CKTstate0 + here->HICUMibpsi) +
*(ckt->CKTstate0 + here->HICUMibpsi_Vbpci)*delvbpci + *(ckt->CKTstate0 + here->HICUMibpsi_Vbpci)*delvbpci +
*(ckt->CKTstate0 + here->HICUMibpsi_Vrth)*delvrth +
*(ckt->CKTstate0 + here->HICUMibpsi_Vsici)*delvsici; *(ckt->CKTstate0 + here->HICUMibpsi_Vsici)*delvsici;
ithhat = *(ckt->CKTstate0 + here->HICUMith) + 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 * bypass if solution has not changed
*/ */
@ -1648,34 +1766,43 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
Ibiei = *(ckt->CKTstate0 + here->HICUMibiei); Ibiei = *(ckt->CKTstate0 + here->HICUMibiei);
Ibiei_Vbiei = *(ckt->CKTstate0 + here->HICUMibiei_Vbiei); Ibiei_Vbiei = *(ckt->CKTstate0 + here->HICUMibiei_Vbiei);
Ibiei_Vbici = *(ckt->CKTstate0 + here->HICUMibiei_Vbici); Ibiei_Vbici = *(ckt->CKTstate0 + here->HICUMibiei_Vbici);
Ibiei_dT = *(ckt->CKTstate0 + here->HICUMibiei_Vrth);
Ibpei = *(ckt->CKTstate0 + here->HICUMibpei); Ibpei = *(ckt->CKTstate0 + here->HICUMibpei);
Ibpei_Vbpei = *(ckt->CKTstate0 + here->HICUMibpei_Vbpei); Ibpei_Vbpei = *(ckt->CKTstate0 + here->HICUMibpei_Vbpei);
Ibpei_dT = *(ckt->CKTstate0 + here->HICUMibpei_Vrth);
Iciei = *(ckt->CKTstate0 + here->HICUMiciei); Iciei = *(ckt->CKTstate0 + here->HICUMiciei);
Iciei_Vbiei = *(ckt->CKTstate0 + here->HICUMiciei_Vbiei); Iciei_Vbiei = *(ckt->CKTstate0 + here->HICUMiciei_Vbiei);
Iciei_Vbici = *(ckt->CKTstate0 + here->HICUMiciei_Vbici); Iciei_Vbici = *(ckt->CKTstate0 + here->HICUMiciei_Vbici);
Iciei_dT = *(ckt->CKTstate0 + here->HICUMiciei_Vrth);
Ibici = *(ckt->CKTstate0 + here->HICUMibici); Ibici = *(ckt->CKTstate0 + here->HICUMibici);
Ibici_Vbici = *(ckt->CKTstate0 + here->HICUMibici_Vbici); Ibici_Vbici = *(ckt->CKTstate0 + here->HICUMibici_Vbici);
Ibici_Vbiei = *(ckt->CKTstate0 + here->HICUMibici_Vbiei); Ibici_Vbiei = *(ckt->CKTstate0 + here->HICUMibici_Vbiei);
Ibici_dT = *(ckt->CKTstate0 + here->HICUMibici_Vrth);
Ibpbi = *(ckt->CKTstate0 + here->HICUMibpbi); Ibpbi = *(ckt->CKTstate0 + here->HICUMibpbi);
Ibpbi_Vbpbi = *(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi); Ibpbi_Vbpbi = *(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi);
Ibpbi_Vbiei = *(ckt->CKTstate0 + here->HICUMibpbi_Vbiei); Ibpbi_Vbiei = *(ckt->CKTstate0 + here->HICUMibpbi_Vbiei);
Ibpbi_Vbici = *(ckt->CKTstate0 + here->HICUMibpbi_Vbici); Ibpbi_Vbici = *(ckt->CKTstate0 + here->HICUMibpbi_Vbici);
Ibpbi_dT = *(ckt->CKTstate0 + here->HICUMibpbi_Vrth);
Isici = *(ckt->CKTstate0 + here->HICUMisici); Isici = *(ckt->CKTstate0 + here->HICUMisici);
Isici_Vsici = *(ckt->CKTstate0 + here->HICUMisici_Vsici); Isici_Vsici = *(ckt->CKTstate0 + here->HICUMisici_Vsici);
Isici_dT = *(ckt->CKTstate0 + here->HICUMisici_Vrth);
Ibpsi = *(ckt->CKTstate0 + here->HICUMibpsi); Ibpsi = *(ckt->CKTstate0 + here->HICUMibpsi);
Ibpsi_Vbpci = *(ckt->CKTstate0 + here->HICUMibpsi_Vbpci); Ibpsi_Vbpci = *(ckt->CKTstate0 + here->HICUMibpsi_Vbpci);
Ibpsi_Vsici = *(ckt->CKTstate0 + here->HICUMibpsi_Vsici); Ibpsi_Vsici = *(ckt->CKTstate0 + here->HICUMibpsi_Vsici);
Ibpsi_dT = *(ckt->CKTstate0 + here->HICUMibpsi_Vrth);
Ibpci = *(ckt->CKTstate0 + here->HICUMibpci); Ibpci = *(ckt->CKTstate0 + here->HICUMibpci);
Ibpci_Vbpci = *(ckt->CKTstate0 + here->HICUMibpci_Vbpci); Ibpci_Vbpci = *(ckt->CKTstate0 + here->HICUMibpci_Vbpci);
Ibpci_dT = *(ckt->CKTstate0 + here->HICUMibpci_Vrth);
Ieie = *(ckt->CKTstate0 + here->HICUMieie); Ieie = *(ckt->CKTstate0 + here->HICUMieie);
Ieie_dT = *(ckt->CKTstate0 + here->HICUMieie_Vrth);
Isis_Vsis = *(ckt->CKTstate0 + here->HICUMisis_Vsis); Isis_Vsis = *(ckt->CKTstate0 + here->HICUMisis_Vsis);
@ -1712,7 +1839,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
//todo: check for double multiplication on pnp's //todo: check for double multiplication on pnp's
Vbiei = model->HICUMtype*Vbiei; Vbiei = model->HICUMtype*Vbiei;
Vbici = model->HICUMtype*Vbici; Vbici = model->HICUMtype*Vbici;
Vciei = Vbiei-Vbici; Vciei = model->HICUMtype*(Vbiei-Vbici);
Vbpei = model->HICUMtype*Vbpei; Vbpei = model->HICUMtype*Vbpei;
Vbpci = model->HICUMtype*Vbpci; Vbpci = model->HICUMtype*Vbpci;
Vbci = model->HICUMtype*Vbci; Vbci = model->HICUMtype*Vbci;
@ -1727,6 +1854,7 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
here->HICUMdtemp_sh = Temp - ckt->CKTtemp; here->HICUMdtemp_sh = Temp - ckt->CKTtemp;
} else { } else {
Temp = here->HICUMtemp;
here->HICUMdtemp_sh = 0; here->HICUMdtemp_sh = 0;
} }
@ -2809,36 +2937,45 @@ HICUMload(GENmodel *inModel, CKTcircuit *ckt)
*(ckt->CKTstate0 + here->HICUMibiei) = Ibiei; *(ckt->CKTstate0 + here->HICUMibiei) = Ibiei;
*(ckt->CKTstate0 + here->HICUMibiei_Vbiei) = Ibiei_Vbiei; *(ckt->CKTstate0 + here->HICUMibiei_Vbiei) = Ibiei_Vbiei;
*(ckt->CKTstate0 + here->HICUMibiei_Vbici) = Ibiei_Vbici; *(ckt->CKTstate0 + here->HICUMibiei_Vbici) = Ibiei_Vbici;
*(ckt->CKTstate0 + here->HICUMibiei_Vrth) = Ibiei_dT;
*(ckt->CKTstate0 + here->HICUMibpei) = Ibpei; *(ckt->CKTstate0 + here->HICUMibpei) = Ibpei;
*(ckt->CKTstate0 + here->HICUMibpei_Vbpei) = Ibpei_Vbpei; *(ckt->CKTstate0 + here->HICUMibpei_Vbpei) = Ibpei_Vbpei;
*(ckt->CKTstate0 + here->HICUMibpei_Vrth) = Ibpei_dT;
*(ckt->CKTstate0 + here->HICUMiciei) = Iciei; *(ckt->CKTstate0 + here->HICUMiciei) = Iciei;
*(ckt->CKTstate0 + here->HICUMiciei_Vbiei) = Iciei_Vbiei; *(ckt->CKTstate0 + here->HICUMiciei_Vbiei) = Iciei_Vbiei;
*(ckt->CKTstate0 + here->HICUMiciei_Vbici) = Iciei_Vbici; *(ckt->CKTstate0 + here->HICUMiciei_Vbici) = Iciei_Vbici;
*(ckt->CKTstate0 + here->HICUMiciei_Vrth) = Iciei_dT;
*(ckt->CKTstate0 + here->HICUMibici) = Ibici; *(ckt->CKTstate0 + here->HICUMibici) = Ibici;
*(ckt->CKTstate0 + here->HICUMibici_Vbici) = Ibici_Vbici; *(ckt->CKTstate0 + here->HICUMibici_Vbici) = Ibici_Vbici;
*(ckt->CKTstate0 + here->HICUMibici_Vbiei) = Ibici_Vbiei; *(ckt->CKTstate0 + here->HICUMibici_Vbiei) = Ibici_Vbiei;
*(ckt->CKTstate0 + here->HICUMibici_Vrth) = Ibici_dT;
*(ckt->CKTstate0 + here->HICUMibpbi) = Ibpbi; *(ckt->CKTstate0 + here->HICUMibpbi) = Ibpbi;
*(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi) = Ibpbi_Vbpbi; *(ckt->CKTstate0 + here->HICUMibpbi_Vbpbi) = Ibpbi_Vbpbi;
*(ckt->CKTstate0 + here->HICUMibpbi_Vbiei) = Ibpbi_Vbiei; *(ckt->CKTstate0 + here->HICUMibpbi_Vbiei) = Ibpbi_Vbiei;
*(ckt->CKTstate0 + here->HICUMibpbi_Vbici) = Ibpbi_Vbici; *(ckt->CKTstate0 + here->HICUMibpbi_Vbici) = Ibpbi_Vbici;
*(ckt->CKTstate0 + here->HICUMibpbi_Vrth) = Ibpbi_dT;
*(ckt->CKTstate0 + here->HICUMibpci) = Ibpci; *(ckt->CKTstate0 + here->HICUMibpci) = Ibpci;
*(ckt->CKTstate0 + here->HICUMibpci_Vbpci) = Ibpci_Vbpci; *(ckt->CKTstate0 + here->HICUMibpci_Vbpci) = Ibpci_Vbpci;
*(ckt->CKTstate0 + here->HICUMibpci_Vrth) = Ibpci_dT;
*(ckt->CKTstate0 + here->HICUMisici) = Isici; *(ckt->CKTstate0 + here->HICUMisici) = Isici;
*(ckt->CKTstate0 + here->HICUMisici_Vsici) = Isici_Vsici; *(ckt->CKTstate0 + here->HICUMisici_Vsici) = Isici_Vsici;
*(ckt->CKTstate0 + here->HICUMisici_Vrth) = Isici_dT;
*(ckt->CKTstate0 + here->HICUMibpsi) = Ibpsi; *(ckt->CKTstate0 + here->HICUMibpsi) = Ibpsi;
*(ckt->CKTstate0 + here->HICUMibpsi_Vbpci) = Ibpsi_Vbpci; *(ckt->CKTstate0 + here->HICUMibpsi_Vbpci) = Ibpsi_Vbpci;
*(ckt->CKTstate0 + here->HICUMibpsi_Vsici) = Ibpsi_Vsici; *(ckt->CKTstate0 + here->HICUMibpsi_Vsici) = Ibpsi_Vsici;
*(ckt->CKTstate0 + here->HICUMibpsi_Vrth) = Ibpsi_dT;
*(ckt->CKTstate0 + here->HICUMisis_Vsis) = Isis_Vsis; *(ckt->CKTstate0 + here->HICUMisis_Vsis) = Isis_Vsis;
*(ckt->CKTstate0 + here->HICUMieie) = Ieie; *(ckt->CKTstate0 + here->HICUMieie) = Ieie;
*(ckt->CKTstate0 + here->HICUMieie_Vrth) = Ieie_dT;
*(ckt->CKTstate0 + here->HICUMcqcth) = Icth; *(ckt->CKTstate0 + here->HICUMcqcth) = Icth;
*(ckt->CKTstate0 + here->HICUMicth_dT) = Icth_dT; *(ckt->CKTstate0 + here->HICUMicth_dT) = Icth_dT;