add real part of AC matrix

This commit is contained in:
Markus Mueller 2020-06-07 13:58:24 +02:00
parent 55e14e62e7
commit 6eefe34d56
1 changed files with 116 additions and 116 deletions

View File

@ -45,15 +45,14 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
double Ibpbi_Vbpbi; double Ibpbi_Vbpbi;
double Ibpbi_Vciei; double Ibpbi_Vbici;
double Ibpbi_Vbiei; double Ibpbi_Vbiei;
double Ibpbi_Vrth; double Ibpbi_Vrth;
double Isis_Vsis; double Isis_Vsis, Isis_Vrth;
double Icic_Vcic, Icic_Vrth;
double Icic_Vcic; double Ieie_Veie, Ieie_Vrth;
double Ieie_Veie; double Ibbp_Vbbp, Ibbp_Vrth;
double Ibbp_Vbbp;
double Ibpsi_Vbpci; double Ibpsi_Vbpci;
double Ibpsi_Vsici; double Ibpsi_Vsici;
@ -86,12 +85,17 @@ 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 // get all derivatives of branch DC currents
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;
Isis_Vsis = 1/model->HICUMrsu; Isis_Vsis = 1/model->HICUMrsu;
Ibbp_Vrth = -*(ckt->CKTstate0 + here->HICUMvbbp)/here->HICUMrbx_t.rpart/here->HICUMrbx_t.rpart*here->HICUMrbx_t.dpart;
Icic_Vrth = -*(ckt->CKTstate0 + here->HICUMvcic)/here->HICUMrcx_t.rpart/here->HICUMrcx_t.rpart*here->HICUMrcx_t.dpart;
Icic_Vrth = -*(ckt->CKTstate0 + here->HICUMveie)/here->HICUMre_t.rpart/here->HICUMre_t.rpart*here->HICUMre_t.dpart;
Isis_Vrth = 0.0;
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); Ibiei_Vrth = *(ckt->CKTstate0 + here->HICUMibiei_Vrth);
@ -109,9 +113,12 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
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_Vbici = *(ckt->CKTstate0 + here->HICUMibpbi_Vbici);
Ibpbi_Vrth = *(ckt->CKTstate0 + here->HICUMibpbi_Vrth); Ibpbi_Vrth = *(ckt->CKTstate0 + here->HICUMibpbi_Vrth);
Ibpci_Vbpci = *(ckt->CKTstate0 + here->HICUMibpci_Vbpci);
Ibpci_Vrth = *(ckt->CKTstate0 + here->HICUMibpci_Vrth);
Isici_Vsici = *(ckt->CKTstate0 + here->HICUMisici_Vsici); Isici_Vsici = *(ckt->CKTstate0 + here->HICUMisici_Vsici);
Isici_Vrth = *(ckt->CKTstate0 + here->HICUMisici_Vrth); Isici_Vrth = *(ckt->CKTstate0 + here->HICUMisici_Vrth);
@ -119,116 +126,109 @@ HICUMacLoad(GENmodel *inModel, CKTcircuit *ckt)
Ibpsi_Vsici = *(ckt->CKTstate0 + here->HICUMibpsi_Vsici); Ibpsi_Vsici = *(ckt->CKTstate0 + here->HICUMibpsi_Vsici);
Ibpsi_Vrth = *(ckt->CKTstate0 + here->HICUMibpsi_Vrth); Ibpsi_Vrth = *(ckt->CKTstate0 + here->HICUMibpsi_Vrth);
Ibpci_Vbpci = *(ckt->CKTstate0 + here->HICUMibpci_Vbpci); ////////////////////////////////////
Ibpci_Vrth = *(ckt->CKTstate0 + here->HICUMibpci_Vrth); ////////// The real part /////////
////////////////////////////////////
/* // Stamp element: Ibiei
c The real part *(here->HICUMbaseBIBaseBIPtr) += Ibiei_Vbiei;
*/ *(here->HICUMemitEIEmitEIPtr) += Ibiei_Vbiei;
/* *(here->HICUMbaseBIEmitEIPtr) += -Ibiei_Vbiei;
c Stamp element: Ibiei (missing Ibiei_Vbici) *(here->HICUMemitEIBaseBIPtr) += -Ibiei_Vbiei;
*/ *(here->HICUMbaseBIBaseBIPtr) += Ibiei_Vbici;
*(here->HICUMbaseBIBaseBIPtr) += Ibiei_Vbiei; *(here->HICUMemitEICollCIPtr) += Ibiei_Vbici;
*(here->HICUMbaseBIEmitEIPtr) += -Ibiei_Vbiei; *(here->HICUMbaseBICollCIPtr) += -Ibiei_Vbici;
*(here->HICUMemitEIBaseBIPtr) += -Ibiei_Vbiei; *(here->HICUMemitEIBaseBIPtr) += -Ibiei_Vbici;
*(here->HICUMemitEIEmitEIPtr) += Ibiei_Vbiei;
/*
c Stamp element: Ibpei
*/
*(here->HICUMbaseBPBaseBPPtr) += Ibpei_Vbpei;
*(here->HICUMbaseBPEmitEIPtr) += -Ibpei_Vbpei;
*(here->HICUMemitEIBaseBPPtr) += -Ibpei_Vbpei;
*(here->HICUMemitEIEmitEIPtr) += Ibpei_Vbpei;
/* // Stamp element: Ibpei
c Stamp element: Iciei *(here->HICUMbaseBPBaseBPPtr) += Ibpei_Vbpei;
*/ *(here->HICUMemitEIEmitEIPtr) += Ibpei_Vbpei;
*(here->HICUMcollCIBaseBIPtr) += Iciei_Vbiei; *(here->HICUMbaseBPEmitEIPtr) += -Ibpei_Vbpei;
*(here->HICUMcollCIEmitEIPtr) += -Iciei_Vbiei; *(here->HICUMemitEIBaseBPPtr) += -Ibpei_Vbpei;;
*(here->HICUMemitEIBaseBIPtr) += -Iciei_Vbiei;
*(here->HICUMemitEIEmitEIPtr) += Iciei_Vbiei; // Stamp element: Iciei
*(here->HICUMcollCIBaseBIPtr) += Iciei_Vbici; *(here->HICUMcollCIBaseBIPtr) += Iciei_Vbiei;
*(here->HICUMcollCICollCIPtr) += -Iciei_Vbici; *(here->HICUMemitEIEmitEIPtr) += Iciei_Vbiei;
*(here->HICUMemitEIBaseBIPtr) += -Iciei_Vbici; *(here->HICUMcollCIEmitEIPtr) += -Iciei_Vbiei;
*(here->HICUMemitEICollCIPtr) += Iciei_Vbici; *(here->HICUMemitEIBaseBIPtr) += -Iciei_Vbiei;
/* *(here->HICUMcollCIBaseBIPtr) += Iciei_Vbici;
c Stamp element: Ibici (missing Ibici_Vbiei) *(here->HICUMemitEICollCIPtr) += Iciei_Vbici;
*/ *(here->HICUMcollCICollCIPtr) += -Iciei_Vbici;
*(here->HICUMbaseBIBaseBIPtr) += Ibici_Vbici; *(here->HICUMemitEIBaseBIPtr) += -Iciei_Vbici;
*(here->HICUMbaseBICollCIPtr) += -Ibici_Vbici;
*(here->HICUMcollCIBaseBIPtr) += -Ibici_Vbici; // Stamp element: Ibici (missing Ibici_Vbiei)
*(here->HICUMcollCICollCIPtr) += Ibici_Vbici; *(here->HICUMbaseBIBaseBIPtr) += Ibici_Vbici;
/* *(here->HICUMcollCICollCIPtr) += Ibici_Vbici;
c Stamp element: Ibpci *(here->HICUMcollCIBaseBIPtr) += -Ibici_Vbici;
*/ *(here->HICUMbaseBICollCIPtr) += -Ibici_Vbici;
*(here->HICUMbaseBPCollCIPtr) += Ibpci_Vbpci; *(here->HICUMbaseBIBaseBIPtr) += Ibici_Vbiei;
*(here->HICUMbaseBPBaseBPPtr) += -Ibpci_Vbpci; *(here->HICUMcollCIEmitEIPtr) += Ibici_Vbiei;
*(here->HICUMcollCIBaseBPPtr) += -Ibpci_Vbpci; *(here->HICUMcollCIBaseBIPtr) += -Ibici_Vbiei;
*(here->HICUMcollCICollCIPtr) += Ibpci_Vbpci; *(here->HICUMbaseBIEmitEIPtr) += -Ibici_Vbiei;
/*
c Stamp element: Rcx // Stamp element: Ibpci
*/ *(here->HICUMbaseBPBaseBPPtr) += Ibpci_Vbpci;
*(here->HICUMcollCollPtr) += Icic_Vcic; *(here->HICUMcollCICollCIPtr) += Ibpci_Vbpci;
*(here->HICUMcollCICollPtr) += -Icic_Vcic; *(here->HICUMbaseBPCollCIPtr) += -Ibpci_Vbpci;
*(here->HICUMcollCollCIPtr) += -Icic_Vcic; *(here->HICUMcollCIBaseBPPtr) += -Ibpci_Vbpci;
*(here->HICUMcollCICollCIPtr) += Icic_Vcic;
/* // Stamp element: Rcx
c Stamp element: Rbx *(here->HICUMcollCollPtr) += Icic_Vcic;
*/ *(here->HICUMcollCICollCIPtr) += Icic_Vcic;
*(here->HICUMbaseBasePtr) += Ibbp_Vbbp; *(here->HICUMcollCICollPtr) += -Icic_Vcic;
*(here->HICUMbaseBPBasePtr) += -Ibbp_Vbbp; *(here->HICUMcollCollCIPtr) += -Icic_Vcic;
*(here->HICUMbaseBaseBPPtr) += -Ibbp_Vbbp;
*(here->HICUMbaseBPBaseBPPtr) += Ibbp_Vbbp; // Stamp element: Rbx
/* *(here->HICUMbaseBasePtr) += Ibbp_Vbbp;
c Stamp element: Ibpbi *(here->HICUMbaseBPBaseBPPtr) += Ibbp_Vbbp;
*/ *(here->HICUMbaseBPBasePtr) += -Ibbp_Vbbp;
*(here->HICUMbaseBPBaseBPPtr) += Ibpbi_Vbpbi; *(here->HICUMbaseBaseBPPtr) += -Ibbp_Vbbp;
*(here->HICUMbaseBPBaseBIPtr) += -Ibpbi_Vbpbi;
*(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbiei; // Stamp element: Ibpbi
*(here->HICUMbaseBPEmitEIPtr) += -Ibpbi_Vbiei; *(here->HICUMbaseBPBaseBPPtr) += Ibpbi_Vbpbi;
*(here->HICUMbaseBPCollCIPtr) += Ibpbi_Vciei; *(here->HICUMbaseBIBaseBIPtr) += Ibpbi_Vbpbi;
*(here->HICUMbaseBPEmitEIPtr) += -Ibpbi_Vciei; *(here->HICUMbaseBPBaseBIPtr) += -Ibpbi_Vbpbi;
*(here->HICUMbaseBIBaseBPPtr) += -Ibpbi_Vbpbi; *(here->HICUMbaseBIBaseBPPtr) += -Ibpbi_Vbpbi;
*(here->HICUMbaseBIBaseBIPtr) += Ibpbi_Vbpbi; *(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbiei;
*(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbiei; *(here->HICUMbaseBIEmitEIPtr) += Ibpbi_Vbiei;
*(here->HICUMbaseBIEmitEIPtr) += Ibpbi_Vbiei; *(here->HICUMbaseBPEmitEIPtr) += -Ibpbi_Vbiei;
*(here->HICUMbaseBICollCIPtr) += -Ibpbi_Vciei; *(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbiei;
*(here->HICUMbaseBIEmitEIPtr) += Ibpbi_Vciei; *(here->HICUMbaseBPBaseBIPtr) += Ibpbi_Vbici;
/* *(here->HICUMbaseBICollCIPtr) += Ibpbi_Vbici;
c Stamp element: Re *(here->HICUMbaseBPCollCIPtr) += -Ibpbi_Vbici;
*/ *(here->HICUMbaseBIBaseBIPtr) += -Ibpbi_Vbici
*(here->HICUMemitEmitPtr) += Ieie_Veie;
*(here->HICUMemitEIEmitPtr) += -Ieie_Veie; // Stamp element: Re
*(here->HICUMemitEmitEIPtr) += -Ieie_Veie; *(here->HICUMemitEmitPtr) += Ieie_Veie;
*(here->HICUMemitEIEmitEIPtr) += Ieie_Veie; *(here->HICUMemitEIEmitEIPtr) += Ieie_Veie;
/* *(here->HICUMemitEIEmitPtr) += -Ieie_Veie;
c Stamp element: Isici *(here->HICUMemitEmitEIPtr) += -Ieie_Veie;
*/
*(here->HICUMsubsSISubsSIPtr) += Isici_Vsici; // Stamp element: Isici
*(here->HICUMsubsSICollCIPtr) += -Isici_Vsici; *(here->HICUMsubsSISubsSIPtr) += Isici_Vsici;
*(here->HICUMcollCISubsSIPtr) += -Isici_Vsici; *(here->HICUMcollCICollCIPtr) += Isici_Vsici;
*(here->HICUMcollCICollCIPtr) += Isici_Vsici; *(here->HICUMsubsSICollCIPtr) += -Isici_Vsici;
/* *(here->HICUMcollCISubsSIPtr) += -Isici_Vsici;;
c Stamp element: Ibpsi
*/ // Stamp element: Ibpsi
*(here->HICUMbaseBPBaseBPPtr) += Ibpsi_Vbpci; *(here->HICUMbaseBPSubsSIPtr) += Ibpsi_Vsici;
*(here->HICUMbaseBPCollCIPtr) += -Ibpsi_Vbpci; *(here->HICUMsubsSICollCIPtr) += Ibpsi_Vsici;
*(here->HICUMbaseBPSubsSIPtr) += Ibpsi_Vsici; *(here->HICUMbaseBPCollCIPtr) += -Ibpsi_Vsici;
*(here->HICUMbaseBPCollCIPtr) += -Ibpsi_Vsici; *(here->HICUMsubsSISubsSIPtr) += -Ibpsi_Vsici;
*(here->HICUMsubsSIBaseBPPtr) += -Ibpsi_Vbpci; *(here->HICUMbaseBPBaseBPPtr) += Ibpsi_Vbpci;
*(here->HICUMsubsSICollCIPtr) += Ibpsi_Vbpci; *(here->HICUMsubsSICollCIPtr) += Ibpsi_Vbpci;
*(here->HICUMsubsSISubsSIPtr) += -Ibpsi_Vsici; *(here->HICUMbaseBPCollCIPtr) += -Ibpsi_Vbpci;
*(here->HICUMsubsSICollCIPtr) += Ibpsi_Vsici; *(here->HICUMsubsSIBaseBPPtr) += -Ibpsi_Vbpci;;
/*
c Stamp element: Rs // Stamp element: Rs
*/ *(here->HICUMsubsSubsPtr) += Isis_Vsis;
*(here->HICUMsubsSubsPtr) += Isis_Vsis; *(here->HICUMsubsSISubsSIPtr) += Isis_Vsis;
*(here->HICUMsubsSISubsPtr) += -Isis_Vsis; *(here->HICUMsubsSISubsPtr) += -Isis_Vsis;
*(here->HICUMsubsSubsSIPtr) += -Isis_Vsis; *(here->HICUMsubsSubsSIPtr) += -Isis_Vsis;;
*(here->HICUMsubsSISubsSIPtr) += Isis_Vsis;
/* ////////////////////////////////////
c The complex part ////////// The complex part //////
*/ ////////////////////////////////////
//todo: Complete with partial dervatives e.g. Qjs_Vsici, Qrbi_Vbici //todo: Complete with partial dervatives e.g. Qjs_Vsici, Qrbi_Vbici
XQrbi_Vbpbi = *(ckt->CKTstate0 + here->HICUMcqrbi) * ckt->CKTomega; XQrbi_Vbpbi = *(ckt->CKTstate0 + here->HICUMcqrbi) * ckt->CKTomega;