complete vbic nqs effect implementation
This commit is contained in:
parent
065b1c817c
commit
aae53f3641
|
|
@ -39,6 +39,10 @@ VBICacLoad(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Ith_Vrci, Ith_Vbcx, Ith_Vrbi, Ith_Vrbp, Ith_Vrcx, Ith_Vrbx, Ith_Vre, Ith_Vrs;
|
||||
double XQcth_Vrth, XQbe_Vrth, XQbex_Vrth, XQbc_Vrth, XQbcx_Vrth, XQbep_Vrth, XQbcp_Vrth;
|
||||
|
||||
//NQS
|
||||
double Itxf_Vrxf, Ibc_Vrxf, Ith_Vrxf, Ixzf_Vrth, Ixxf_Vrxf, XQcxf_Vcxf;
|
||||
double Ixzf_Vbei, Ixzf_Vbci, Xl;
|
||||
|
||||
/* loop through all the models */
|
||||
for( ; model != NULL; model = VBICnextModel(model)) {
|
||||
|
||||
|
|
@ -90,17 +94,20 @@ c Stamp element: Ibex
|
|||
*(here->VBICbaseBXEmitEIPtr) += -Ibex_Vbex;
|
||||
*(here->VBICemitEIBaseBXPtr) += -Ibex_Vbex;
|
||||
*(here->VBICemitEIEmitEIPtr) += Ibex_Vbex;
|
||||
|
||||
if (!here->VBIC_excessPhase) {
|
||||
/*
|
||||
c Stamp element: Itzf
|
||||
*/
|
||||
*(here->VBICcollCIBaseBIPtr) += Itzf_Vbei;
|
||||
*(here->VBICcollCIEmitEIPtr) += -Itzf_Vbei;
|
||||
*(here->VBICcollCIBaseBIPtr) += Itzf_Vbci;
|
||||
*(here->VBICcollCICollCIPtr) += -Itzf_Vbci;
|
||||
*(here->VBICemitEIBaseBIPtr) += -Itzf_Vbei;
|
||||
*(here->VBICemitEIEmitEIPtr) += Itzf_Vbei;
|
||||
*(here->VBICemitEIBaseBIPtr) += -Itzf_Vbci;
|
||||
*(here->VBICemitEICollCIPtr) += Itzf_Vbci;
|
||||
*(here->VBICcollCIBaseBIPtr) += Itzf_Vbei;
|
||||
*(here->VBICcollCIEmitEIPtr) += -Itzf_Vbei;
|
||||
*(here->VBICcollCIBaseBIPtr) += Itzf_Vbci;
|
||||
*(here->VBICcollCICollCIPtr) += -Itzf_Vbci;
|
||||
*(here->VBICemitEIBaseBIPtr) += -Itzf_Vbei;
|
||||
*(here->VBICemitEIEmitEIPtr) += Itzf_Vbei;
|
||||
*(here->VBICemitEIBaseBIPtr) += -Itzf_Vbci;
|
||||
*(here->VBICemitEICollCIPtr) += Itzf_Vbci;
|
||||
}
|
||||
/*
|
||||
c Stamp element: Itzr
|
||||
*/
|
||||
|
|
@ -230,7 +237,8 @@ c Stamp element: Rs
|
|||
|
||||
Ibe_Vrth = here->VBICibe_Vrth;
|
||||
Ibex_Vrth = here->VBICibex_Vrth;
|
||||
Itzf_Vrth = here->VBICitzf_vrth;
|
||||
if (!here->VBIC_excessPhase)
|
||||
Itzf_Vrth = here->VBICitzf_vrth;
|
||||
Itzr_Vrth = here->VBICitzr_Vrth;
|
||||
Ibc_Vrth = here->VBICibc_Vrth;
|
||||
Ibep_Vrth = here->VBICibep_Vrth;
|
||||
|
|
@ -271,11 +279,14 @@ c Stamp element: Ibex
|
|||
*/
|
||||
*(here->VBICbaseBXtempPtr) += Ibex_Vrth;
|
||||
*(here->VBICemitEItempPtr) += -Ibex_Vrth;
|
||||
|
||||
if (!here->VBIC_excessPhase) {
|
||||
/*
|
||||
c Stamp element: Itzf
|
||||
*/
|
||||
*(here->VBICcollCItempPtr) += Itzf_Vrth;
|
||||
*(here->VBICemitEItempPtr) += -Itzf_Vrth;
|
||||
*(here->VBICcollCItempPtr) += Itzf_Vrth;
|
||||
*(here->VBICemitEItempPtr) += -Itzf_Vrth;
|
||||
}
|
||||
/*
|
||||
c Stamp element: Itzr
|
||||
*/
|
||||
|
|
@ -375,6 +386,44 @@ c Stamp element: Ith
|
|||
*(here->VBICtempEmitEIPtr) += +Ith_Vre;
|
||||
*(here->VBICtempSubsPtr) += -Ith_Vrs;
|
||||
*(here->VBICtempSubsSIPtr) += +Ith_Vrs;
|
||||
if (here->VBIC_excessPhase) {
|
||||
Ith_Vrxf = *(ckt->CKTstate0 + here->VBICith_Vrxf);
|
||||
*(here->VBICtempXf2Ptr) += +Ith_Vrxf;
|
||||
}
|
||||
}
|
||||
|
||||
if (here->VBIC_excessPhase) {
|
||||
Itxf_Vrxf = *(ckt->CKTstate0 + here->VBICitxf_Vrxf);
|
||||
Ibc_Vrxf = *(ckt->CKTstate0 + here->VBICibc_Vrxf);
|
||||
Ixzf_Vbei = *(ckt->CKTstate0 + here->VBICixzf_Vbei);
|
||||
Ixzf_Vbci = *(ckt->CKTstate0 + here->VBICixzf_Vbci);
|
||||
Ixxf_Vrxf = *(ckt->CKTstate0 + here->VBICixxf_Vrxf);
|
||||
/*
|
||||
c Stamp element: Itxf
|
||||
*/
|
||||
*(here->VBICcollCIXf2Ptr) += Itxf_Vrxf;
|
||||
*(here->VBICemitEIXf2Ptr) += -Itxf_Vrxf;
|
||||
/*
|
||||
c Stamp element: Ibc
|
||||
*/
|
||||
*(here->VBICbaseBIXf2Ptr) += Ibc_Vrxf;
|
||||
*(here->VBICcollCIXf2Ptr) += -Ibc_Vrxf;
|
||||
/*
|
||||
c Stamp element: Ixzf, Branch: xf1-ground
|
||||
*/
|
||||
*(here->VBICxf1BaseBIPtr) += +Ixzf_Vbei;
|
||||
*(here->VBICxf1EmitEIPtr) += -Ixzf_Vbei;
|
||||
*(here->VBICxf1BaseBIPtr) += +Ixzf_Vbci;
|
||||
*(here->VBICxf1CollCIPtr) += -Ixzf_Vbci;
|
||||
if (here->VBIC_selfheat) {
|
||||
Ixzf_Vrth = *(ckt->CKTstate0 + here->VBICixzf_Vrth);
|
||||
*(here->VBICxf1TempPtr) += Ixzf_Vrth;
|
||||
}
|
||||
/*
|
||||
c Stamp element: Ixxf, Branch: xf2-ground
|
||||
*/
|
||||
*(here->VBICxf2Xf2Ptr) += +Ixxf_Vrxf;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -479,6 +528,24 @@ c Stamp element: Qbco
|
|||
*(here->VBICsubsSItempPtr + 1) += XQbcp_Vrth;
|
||||
*(here->VBICbaseBPtempPtr + 1) += -XQbcp_Vrth;
|
||||
}
|
||||
if (here->VBIC_excessPhase) {
|
||||
/*
|
||||
c Stamp element: Qcxf
|
||||
*/
|
||||
XQcxf_Vcxf = here->VBICcapQcxf * ckt->CKTomega;
|
||||
*(here->VBICxf1Xf1Ptr + 1) += XQcxf_Vcxf;
|
||||
/*
|
||||
c Stamp element: L = TD/3
|
||||
*/
|
||||
Xl = here->VBICindInduct * ckt->CKTomega;
|
||||
|
||||
*(here->VBICxf1IbrPtr) += 1;
|
||||
*(here->VBICxf2IbrPtr) -= 1;
|
||||
*(here->VBICibrXf1Ptr) += 1;
|
||||
*(here->VBICibrXf2Ptr) -= 1;
|
||||
*(here->VBICibrIbrPtr + 1) -= Xl;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ VBICbindCSC (GENmodel *inModel, CKTcircuit *ckt)
|
|||
CREATE_KLU_BINDING_TABLE(VBICemitEIEmitEIPtr, VBICemitEIEmitEIBinding, VBICemitEINode, VBICemitEINode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICbaseBPBaseBPPtr, VBICbaseBPBaseBPBinding, VBICbaseBPNode, VBICbaseBPNode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICsubsSISubsSIPtr, VBICsubsSISubsSIBinding, VBICsubsSINode, VBICsubsSINode);
|
||||
|
||||
CREATE_KLU_BINDING_TABLE(VBICbaseEmitPtr, VBICbaseEmitBinding, VBICbaseNode, VBICemitNode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICemitBasePtr, VBICemitBaseBinding, VBICemitNode, VBICbaseNode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICbaseCollPtr, VBICbaseCollBinding, VBICbaseNode, VBICcollNode);
|
||||
|
|
@ -56,6 +57,7 @@ VBICbindCSC (GENmodel *inModel, CKTcircuit *ckt)
|
|||
CREATE_KLU_BINDING_TABLE(VBICbaseBXSubsSIPtr, VBICbaseBXSubsSIBinding, VBICbaseBXNode, VBICsubsSINode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICbaseBIEmitEIPtr, VBICbaseBIEmitEIBinding, VBICbaseBINode, VBICemitEINode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICbaseBPSubsSIPtr, VBICbaseBPSubsSIBinding, VBICbaseBPNode, VBICsubsSINode);
|
||||
|
||||
CREATE_KLU_BINDING_TABLE(VBICcollCXCollPtr, VBICcollCXCollBinding, VBICcollCXNode, VBICcollNode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICbaseBXBasePtr, VBICbaseBXBaseBinding, VBICbaseBXNode, VBICbaseNode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICemitEIEmitPtr, VBICemitEIEmitBinding, VBICemitEINode, VBICemitNode);
|
||||
|
|
@ -101,7 +103,30 @@ VBICbindCSC (GENmodel *inModel, CKTcircuit *ckt)
|
|||
CREATE_KLU_BINDING_TABLE(VBICtempSubsPtr, VBICtempSubsBinding, VBICtempNode, VBICsubsNode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICtempSubsSIPtr, VBICtempSubsSIBinding, VBICtempNode, VBICsubsSINode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICtempTempPtr, VBICtempTempBinding, VBICtempNode, VBICtempNode);
|
||||
if (here->VBIC_excessPhase) {
|
||||
CREATE_KLU_BINDING_TABLE(VBICtempXf2Ptr, VBICtempXf2Binding, VBICtempNode, VBICxf2Node);
|
||||
CREATE_KLU_BINDING_TABLE(VBICxf1TempPtr, VBICxf1TempBinding, VBICxf1Node ,VBICtempNode);
|
||||
}
|
||||
}
|
||||
|
||||
if (here->VBIC_excessPhase) {
|
||||
CREATE_KLU_BINDING_TABLE(VBICxf1Xf1Ptr , VBICxf1Xf1Binding , VBICxf1Node , VBICxf1Node);
|
||||
CREATE_KLU_BINDING_TABLE(VBICxf1Xf2Ptr , VBICxf1Xf2Binding , VBICxf1Node , VBICxf2Node);
|
||||
CREATE_KLU_BINDING_TABLE(VBICxf1CollCIPtr, VBICxf1CollCIBinding, VBICxf1Node , VBICcollCINode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICxf1BaseBIPtr, VBICxf1BaseBIBinding, VBICxf1Node , VBICbaseBINode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICxf1EmitEIPtr, VBICxf1EmitEIBinding, VBICxf1Node , VBICemitEINode);
|
||||
CREATE_KLU_BINDING_TABLE(VBICxf2Xf2Ptr , VBICxf2Xf2Binding , VBICxf2Node , VBICxf2Node);
|
||||
CREATE_KLU_BINDING_TABLE(VBICxf2Xf1Ptr , VBICxf2Xf1Binding , VBICxf2Node , VBICxf1Node);
|
||||
CREATE_KLU_BINDING_TABLE(VBICcollCIXf2Ptr, VBICcollCIXf2Binding, VBICcollCINode, VBICxf2Node);
|
||||
CREATE_KLU_BINDING_TABLE(VBICbaseBIXf2Ptr, VBICbaseBIXf2Binding, VBICbaseBINode, VBICxf2Node);
|
||||
CREATE_KLU_BINDING_TABLE(VBICemitEIXf2Ptr, VBICemitEIXf2Binding, VBICemitEINode, VBICxf2Node);
|
||||
CREATE_KLU_BINDING_TABLE(VBICxf1IbrPtr , VBICxf1IbrBinding , VBICxf1Node , VBICbrEq);
|
||||
CREATE_KLU_BINDING_TABLE(VBICxf2IbrPtr , VBICxf2IbrBinding , VBICxf2Node , VBICbrEq);
|
||||
CREATE_KLU_BINDING_TABLE(VBICibrXf2Ptr , VBICibrXf2Binding , VBICbrEq , VBICxf2Node);
|
||||
CREATE_KLU_BINDING_TABLE(VBICibrXf1Ptr , VBICibrXf1Binding , VBICbrEq , VBICxf1Node);
|
||||
CREATE_KLU_BINDING_TABLE(VBICibrIbrPtr , VBICibrIbrBinding , VBICbrEq , VBICbrEq);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -309,7 +309,6 @@ typedef struct sVBICinstance {
|
|||
double VBICith_Vbex;
|
||||
double VBICith_Vbep;
|
||||
double VBICith_Vbcp;
|
||||
double VBICqf_Vxf;
|
||||
double VBICith_Vcep;
|
||||
double VBICith_Vrci;
|
||||
double VBICith_Vbcx;
|
||||
|
|
@ -321,6 +320,7 @@ typedef struct sVBICinstance {
|
|||
double VBICith_Vrs;
|
||||
|
||||
double VBICindInduct;
|
||||
double VBICcapQcxf;
|
||||
|
||||
int VBIC_selfheat; /* self-heating enabled */
|
||||
int VBIC_excessPhase; /* excess phase enabled */
|
||||
|
|
@ -344,6 +344,7 @@ typedef struct sVBICinstance {
|
|||
BindElement *VBICemitEIEmitEIBinding ;
|
||||
BindElement *VBICbaseBPBaseBPBinding ;
|
||||
BindElement *VBICsubsSISubsSIBinding ;
|
||||
|
||||
BindElement *VBICbaseEmitBinding ;
|
||||
BindElement *VBICemitBaseBinding ;
|
||||
BindElement *VBICbaseCollBinding ;
|
||||
|
|
@ -364,6 +365,7 @@ typedef struct sVBICinstance {
|
|||
BindElement *VBICbaseBXSubsSIBinding ;
|
||||
BindElement *VBICbaseBIEmitEIBinding ;
|
||||
BindElement *VBICbaseBPSubsSIBinding ;
|
||||
|
||||
BindElement *VBICcollCXCollBinding ;
|
||||
BindElement *VBICbaseBXBaseBinding ;
|
||||
BindElement *VBICemitEIEmitBinding ;
|
||||
|
|
@ -384,6 +386,7 @@ typedef struct sVBICinstance {
|
|||
BindElement *VBICsubsSICollCIBinding ;
|
||||
BindElement *VBICsubsSIBaseBIBinding ;
|
||||
BindElement *VBICsubsSIBaseBPBinding ;
|
||||
|
||||
BindElement *VBICcollTempBinding ;
|
||||
BindElement *VBICbaseTempBinding ;
|
||||
BindElement *VBICemitTempBinding ;
|
||||
|
|
@ -407,8 +410,10 @@ typedef struct sVBICinstance {
|
|||
BindElement *VBICtempSubsBinding ;
|
||||
BindElement *VBICtempSubsSIBinding ;
|
||||
BindElement *VBICtempTempBinding ;
|
||||
|
||||
BindElement *VBICtempXf2Binding ;
|
||||
BindElement *VBICxf1TempBinding ;
|
||||
|
||||
BindElement *VBICxf1Xf1Binding ;
|
||||
BindElement *VBICxf1Xf2Binding ;
|
||||
BindElement *VBICxf1CollCIBinding ;
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
,Ith_Vrci=0.0,Ith_Vbcx=0.0,Ith_Vrbx=0.0,Ith_Vrbi=0.0,Ith_Vre=0.0,Ith_Vrbp=0.0,Qcth=0.0
|
||||
,Qcth_Vrth=0.0,SCALE;
|
||||
//NQS
|
||||
double Vrxf, Vcxf, Itxf, Itxf_Vrxf, Ibc_Vrxf, Ith_Vrxf, Ixzf_Vrth,
|
||||
double Vrxf, Vcxf, Itxf=0.0, Itxf_Vrxf=0.0, Ibc_Vrxf, Ith_Vrxf, Ixzf_Vrth,
|
||||
Ixxf_Vrxf, Qcxf, Qcxf_Vcxf, Flxf, Flxf_Vrxf;
|
||||
double Vxf1xf2, Rxf1xf2, newmind, req, veq;
|
||||
|
||||
|
|
@ -135,7 +135,6 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
int error;
|
||||
double gqbeo, cqbeo, gqbco, cqbco, gbcx, cbcx;
|
||||
double Icth, Icth_Vrth;
|
||||
|
||||
//NQS
|
||||
double Ixzf,Ixxf;
|
||||
double Ixzf_Vbei, Ixzf_Vbci;
|
||||
|
|
@ -381,7 +380,7 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->VBICitzr) =
|
||||
*(ckt->CKTstate1 + here->VBICitzr);
|
||||
*(ckt->CKTstate0 + here->VBICitzr_Vbei) =
|
||||
*(ckt->CKTstate1 + here->VBICitzf_Vbei);
|
||||
*(ckt->CKTstate1 + here->VBICitzr_Vbei);
|
||||
*(ckt->CKTstate0 + here->VBICitzr_Vbci) =
|
||||
*(ckt->CKTstate1 + here->VBICitzr_Vbci);
|
||||
*(ckt->CKTstate0 + here->VBICibc) =
|
||||
|
|
@ -453,14 +452,14 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0+here->VBICixzf)=*(ckt->CKTstate1+here->VBICixzf;
|
||||
*(ckt->CKTstate0+here->VBICixzf_Vbei)=*(ckt->CKTstate1+here->VBICixzf_Vbei);
|
||||
*(ckt->CKTstate0+here->VBICixzf_Vbci)=*(ckt->CKTstate1+here->VBICixzf_Vbci);
|
||||
*(ckt->CKTstate0+here->VBICixzf_Vrth)=*(ckt->CKTstate1+here->VBICixzf_Vrth);
|
||||
*(ckt->CKTstate0+here->VBICixxf)=*(ckt->CKTstate1+here->VBICixxf;
|
||||
*(ckt->CKTstate0+here->VBICixxf_Vrxf)=*(ckt->CKTstate1+here->VBICixxf_Vrxf);
|
||||
*(ckt->CKTstate0+here->VBICitxf)=*(ckt->CKTstate1+here->VBICitxf;
|
||||
*(ckt->CKTstate0+here->VBICitxf_Vrxf)=*(ckt->CKTstate1+here->VBICitxf_Vrxf);
|
||||
*(ckt->CKTstate0+here->VBICith_Vrxf)=*(ckt->CKTstate1+here->VBICitxf_Vrxf);
|
||||
if (here->VBIC_selfheat)
|
||||
if (here->VBIC_selfheat) {
|
||||
*(ckt->CKTstate0+here->VBICixzf_Vrth)=*(ckt->CKTstate1+here->VBICixzf_Vrth);
|
||||
*(ckt->CKTstate0+here->VBICith_Vrxf)=*(ckt->CKTstate1+here->VBICith_Vrxf);
|
||||
}
|
||||
*(ckt->CKTstate0+here->VBICindFlux)=*(ckt->CKTstate1+here->VBICindFlux);
|
||||
}
|
||||
} else {
|
||||
|
|
@ -610,7 +609,6 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
ckt->CKTreltol* MAX(fabs(ibexhat),
|
||||
fabs(*(ckt->CKTstate0 + here->VBICibex)))+
|
||||
ckt->CKTabstol) )
|
||||
|
||||
if (!here->VBIC_excessPhase)
|
||||
if( (fabs(itzfhat-*(ckt->CKTstate0 + here->VBICitzf)) <
|
||||
ckt->CKTreltol* MAX(fabs(itzfhat),
|
||||
|
|
@ -621,7 +619,6 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
ckt->CKTreltol* MAX(fabs(ixzfhat),
|
||||
fabs(*(ckt->CKTstate0 + here->VBICixzf)))+
|
||||
ckt->CKTabstol) )
|
||||
|
||||
if( (fabs(itzrhat-*(ckt->CKTstate0 + here->VBICitzr)) <
|
||||
ckt->CKTreltol* MAX(fabs(itzrhat),
|
||||
fabs(*(ckt->CKTstate0 + here->VBICitzr)))+
|
||||
|
|
@ -714,7 +711,6 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Itxf_Vrxf = *(ckt->CKTstate0 + here->VBICitxf_Vrxf);
|
||||
Ixxf = *(ckt->CKTstate0 + here->VBICixxf);
|
||||
Ixxf_Vrxf = *(ckt->CKTstate0 + here->VBICixxf_Vrxf);
|
||||
Ith_Vrxf = *(ckt->CKTstate0 + here->VBICith_Vrxf);
|
||||
Qcxf = *(ckt->CKTstate0 + here->VBICqcxf);
|
||||
Icxf = *(ckt->CKTstate0 + here->VBICcqcxf);
|
||||
Icxf_Vcxf = *(ckt->CKTstate0 + here->VBICgqcxf);
|
||||
|
|
@ -723,8 +719,10 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
Ixzf_Vbei = *(ckt->CKTstate0 + here->VBICixzf_Vbei);
|
||||
Ixzf_Vbci = *(ckt->CKTstate0 + here->VBICixzf_Vbci);
|
||||
Ixzf_Vrth = *(ckt->CKTstate0 + here->VBICixzf_Vrth);
|
||||
if (here->VBIC_selfheat)
|
||||
if (here->VBIC_selfheat) {
|
||||
Ixzf_Vrth = *(ckt->CKTstate0 + here->VBICixzf_Vrth);
|
||||
Ith_Vrxf = *(ckt->CKTstate0 + here->VBICith_Vrxf);
|
||||
}
|
||||
Flxf = *(ckt->CKTstate0 + here->VBICindFlux);
|
||||
}
|
||||
goto load;
|
||||
|
|
@ -887,7 +885,7 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
here->VBICcapqbcpth = Qbcp_Vrth;
|
||||
}
|
||||
if (here->VBIC_excessPhase) {
|
||||
*(ckt->CKTstate0 + here->VBICcqcxf) = Qcxf_Vcxf;
|
||||
here->VBICcapQcxf = Qcxf_Vcxf;
|
||||
}
|
||||
continue; /* go to 1000 */
|
||||
}
|
||||
|
|
@ -1121,7 +1119,6 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->VBICitxf_Vrxf) = Itxf_Vrxf;
|
||||
*(ckt->CKTstate0 + here->VBICixxf) = Ixxf;
|
||||
*(ckt->CKTstate0 + here->VBICixxf_Vrxf) = Ixxf_Vrxf;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrxf) = Ith_Vrxf;
|
||||
*(ckt->CKTstate0 + here->VBICqcxf) = Qcxf;
|
||||
*(ckt->CKTstate0 + here->VBICcqcxf) = Icxf;
|
||||
*(ckt->CKTstate0 + here->VBICgqcxf) = Icxf_Vcxf;
|
||||
|
|
@ -1129,9 +1126,10 @@ VBICload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
*(ckt->CKTstate0 + here->VBICixzf) = Ixzf;
|
||||
*(ckt->CKTstate0 + here->VBICixzf_Vbei) = Ixzf_Vbei;
|
||||
*(ckt->CKTstate0 + here->VBICixzf_Vbci) = Ixzf_Vbci;
|
||||
*(ckt->CKTstate0 + here->VBICixzf_Vrth) = Ixzf_Vrth;
|
||||
if (here->VBIC_selfheat)
|
||||
if (here->VBIC_selfheat) {
|
||||
*(ckt->CKTstate0 + here->VBICixzf_Vrth) = Ixzf_Vrth;
|
||||
*(ckt->CKTstate0 + here->VBICith_Vrxf) = Ith_Vrxf;
|
||||
}
|
||||
*(ckt->CKTstate0 + here->VBICindFlux) = Flxf;
|
||||
}
|
||||
|
||||
|
|
@ -1549,7 +1547,7 @@ c Stamp element: Ith
|
|||
*(here->VBICtempSubsSIPtr) += +Ith_Vrs;
|
||||
if (here->VBIC_excessPhase) {
|
||||
rhs_current = -Ith_Vrxf*Vrxf;
|
||||
*(ckt->CKTrhs + here->VBICxf2Node) += -rhs_current;
|
||||
*(ckt->CKTrhs + here->VBICtempNode) += -rhs_current;
|
||||
*(here->VBICtempXf2Ptr) += +Ith_Vrxf;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -127,11 +127,16 @@ VBICnoise (int mode, int operation, GENmodel *genmodel, CKTcircuit *ckt, Ndata *
|
|||
ckt,THERMNOISE,inst->VBICsubsSINode,inst->VBICsubsNode,
|
||||
*(ckt->CKTstate0 + inst->VBICirs_Vrs), dtemp);
|
||||
|
||||
|
||||
NevalSrc(&noizDens[VBICICNOIZ],&lnNdens[VBICICNOIZ],
|
||||
ckt,SHOTNOISE,inst->VBICcollCINode, inst->VBICemitEINode,
|
||||
*(ckt->CKTstate0 + inst->VBICitzf));
|
||||
|
||||
if (!inst->VBIC_excessPhase) {
|
||||
NevalSrc(&noizDens[VBICICNOIZ],&lnNdens[VBICICNOIZ],
|
||||
ckt,SHOTNOISE,inst->VBICcollCINode, inst->VBICemitEINode,
|
||||
*(ckt->CKTstate0 + inst->VBICitzf));
|
||||
}
|
||||
if (inst->VBIC_excessPhase) {
|
||||
NevalSrc(&noizDens[VBICICNOIZ],&lnNdens[VBICICNOIZ],
|
||||
ckt,SHOTNOISE,inst->VBICcollCINode, inst->VBICemitEINode,
|
||||
*(ckt->CKTstate0 + inst->VBICitxf));
|
||||
}
|
||||
NevalSrc(&noizDens[VBICIBNOIZ],&lnNdens[VBICIBNOIZ],
|
||||
ckt,SHOTNOISE,inst->VBICbaseBINode, inst->VBICemitEINode,
|
||||
*(ckt->CKTstate0 + inst->VBICibe));
|
||||
|
|
|
|||
|
|
@ -30,7 +30,18 @@ VBICpzLoad(GENmodel *inModel, CKTcircuit *ckt, SPcomplex *s)
|
|||
,Ibcp_Vbcp,Iccp_Vbep,Irs_Vrs,Iccp_Vbci,Iccp_Vbcp;
|
||||
double XQbe_Vbei, XQbe_Vbci, XQbex_Vbex, XQbc_Vbci,
|
||||
XQbcx_Vbcx, XQbep_Vbep, XQbep_Vbci,
|
||||
XQbcp_Vbcp;
|
||||
XQbcp_Vbcp, XQbeo_Vbe, XQbco_Vbc;
|
||||
|
||||
double Ibe_Vrth, Ibex_Vrth, Itzf_Vrth, Itzr_Vrth, Ibc_Vrth, Ibep_Vrth,
|
||||
Ircx_Vrth, Irci_Vrth, Irbx_Vrth, Irbi_Vrth, Ire_Vrth, Irbp_Vrth,
|
||||
Ibcp_Vrth, Iccp_Vrth, Irs_Vrth, Irth_Vrth, Ith_Vrth,
|
||||
Ith_Vbei, Ith_Vbci, Ith_Vcei, Ith_Vbex, Ith_Vbep, Ith_Vbcp, Ith_Vcep,
|
||||
Ith_Vrci, Ith_Vbcx, Ith_Vrbi, Ith_Vrbp, Ith_Vrcx, Ith_Vrbx, Ith_Vre, Ith_Vrs;
|
||||
double XQcth_Vrth, XQbe_Vrth, XQbex_Vrth, XQbc_Vrth, XQbcx_Vrth, XQbep_Vrth, XQbcp_Vrth;
|
||||
|
||||
//NQS
|
||||
double Itxf_Vrxf, Ibc_Vrxf, Ith_Vrxf, Ixzf_Vrth, Ixxf_Vrxf, XQcxf_Vcxf;
|
||||
double Ixzf_Vbei, Ixzf_Vbci, Xl;
|
||||
|
||||
/* loop through all the models */
|
||||
for( ; model != NULL; model = VBICnextModel(model)) {
|
||||
|
|
@ -83,17 +94,20 @@ c Stamp element: Ibex
|
|||
*(here->VBICbaseBXEmitEIPtr) += -Ibex_Vbex;
|
||||
*(here->VBICemitEIBaseBXPtr) += -Ibex_Vbex;
|
||||
*(here->VBICemitEIEmitEIPtr) += Ibex_Vbex;
|
||||
|
||||
if (!here->VBIC_excessPhase) {
|
||||
/*
|
||||
c Stamp element: Itzf
|
||||
*/
|
||||
*(here->VBICcollCIBaseBIPtr) += Itzf_Vbei;
|
||||
*(here->VBICcollCIEmitEIPtr) += -Itzf_Vbei;
|
||||
*(here->VBICcollCIBaseBIPtr) += Itzf_Vbci;
|
||||
*(here->VBICcollCICollCIPtr) += -Itzf_Vbci;
|
||||
*(here->VBICemitEIBaseBIPtr) += -Itzf_Vbei;
|
||||
*(here->VBICemitEIEmitEIPtr) += Itzf_Vbei;
|
||||
*(here->VBICemitEIBaseBIPtr) += -Itzf_Vbci;
|
||||
*(here->VBICemitEICollCIPtr) += Itzf_Vbci;
|
||||
*(here->VBICcollCIBaseBIPtr) += Itzf_Vbei;
|
||||
*(here->VBICcollCIEmitEIPtr) += -Itzf_Vbei;
|
||||
*(here->VBICcollCIBaseBIPtr) += Itzf_Vbci;
|
||||
*(here->VBICcollCICollCIPtr) += -Itzf_Vbci;
|
||||
*(here->VBICemitEIBaseBIPtr) += -Itzf_Vbei;
|
||||
*(here->VBICemitEIEmitEIPtr) += Itzf_Vbei;
|
||||
*(here->VBICemitEIBaseBIPtr) += -Itzf_Vbci;
|
||||
*(here->VBICemitEICollCIPtr) += Itzf_Vbci;
|
||||
}
|
||||
/*
|
||||
c Stamp element: Itzr
|
||||
*/
|
||||
|
|
@ -126,10 +140,10 @@ c Stamp element: Ibep
|
|||
/*
|
||||
c Stamp element: Ircx
|
||||
*/
|
||||
*(here->VBICcollCollPtr) += Ircx_Vrcx;
|
||||
*(here->VBICcollCollPtr) += Ircx_Vrcx;
|
||||
*(here->VBICcollCXCollCXPtr) += Ircx_Vrcx;
|
||||
*(here->VBICcollCXCollPtr) += -Ircx_Vrcx;
|
||||
*(here->VBICcollCollCXPtr) += -Ircx_Vrcx;
|
||||
*(here->VBICcollCXCollPtr) += -Ircx_Vrcx;
|
||||
*(here->VBICcollCollCXPtr) += -Ircx_Vrcx;
|
||||
/*
|
||||
c Stamp element: Irci
|
||||
*/
|
||||
|
|
@ -148,10 +162,10 @@ c Stamp element: Irci
|
|||
/*
|
||||
c Stamp element: Irbx
|
||||
*/
|
||||
*(here->VBICbaseBasePtr) += Irbx_Vrbx;
|
||||
*(here->VBICbaseBasePtr) += Irbx_Vrbx;
|
||||
*(here->VBICbaseBXBaseBXPtr) += Irbx_Vrbx;
|
||||
*(here->VBICbaseBXBasePtr) += -Irbx_Vrbx;
|
||||
*(here->VBICbaseBaseBXPtr) += -Irbx_Vrbx;
|
||||
*(here->VBICbaseBXBasePtr) += -Irbx_Vrbx;
|
||||
*(here->VBICbaseBaseBXPtr) += -Irbx_Vrbx;
|
||||
/*
|
||||
c Stamp element: Irbi
|
||||
*/
|
||||
|
|
@ -170,10 +184,10 @@ c Stamp element: Irbi
|
|||
/*
|
||||
c Stamp element: Ire
|
||||
*/
|
||||
*(here->VBICemitEmitPtr) += Ire_Vre;
|
||||
*(here->VBICemitEmitPtr) += Ire_Vre;
|
||||
*(here->VBICemitEIEmitEIPtr) += Ire_Vre;
|
||||
*(here->VBICemitEIEmitPtr) += -Ire_Vre;
|
||||
*(here->VBICemitEmitEIPtr) += -Ire_Vre;
|
||||
*(here->VBICemitEIEmitPtr) += -Ire_Vre;
|
||||
*(here->VBICemitEmitEIPtr) += -Ire_Vre;
|
||||
/*
|
||||
c Stamp element: Irbp
|
||||
*/
|
||||
|
|
@ -214,10 +228,204 @@ c Stamp element: Iccp
|
|||
/*
|
||||
c Stamp element: Irs
|
||||
*/
|
||||
*(here->VBICsubsSubsPtr) += Irs_Vrs;
|
||||
*(here->VBICsubsSubsPtr) += Irs_Vrs;
|
||||
*(here->VBICsubsSISubsSIPtr) += Irs_Vrs;
|
||||
*(here->VBICsubsSISubsPtr) += -Irs_Vrs;
|
||||
*(here->VBICsubsSubsSIPtr) += -Irs_Vrs;
|
||||
*(here->VBICsubsSISubsPtr) += -Irs_Vrs;
|
||||
*(here->VBICsubsSubsSIPtr) += -Irs_Vrs;
|
||||
|
||||
if (here->VBIC_selfheat) {
|
||||
|
||||
Ibe_Vrth = here->VBICibe_Vrth;
|
||||
Ibex_Vrth = here->VBICibex_Vrth;
|
||||
if (!here->VBIC_excessPhase)
|
||||
Itzf_Vrth = here->VBICitzf_vrth;
|
||||
Itzr_Vrth = here->VBICitzr_Vrth;
|
||||
Ibc_Vrth = here->VBICibc_Vrth;
|
||||
Ibep_Vrth = here->VBICibep_Vrth;
|
||||
Ircx_Vrth = here->VBICircx_Vrth;
|
||||
Irci_Vrth = here->VBICirci_Vrth;
|
||||
Irbx_Vrth = here->VBICirbx_Vrth;
|
||||
Irbi_Vrth = here->VBICirbi_Vrth;
|
||||
Ire_Vrth = here->VBICire_Vrth;
|
||||
Irbp_Vrth = here->VBICirbp_Vrth;
|
||||
Ibcp_Vrth = here->VBICibcp_Vrth;
|
||||
Iccp_Vrth = here->VBICiccp_Vrth;
|
||||
Irs_Vrth = here->VBICirs_Vrth;
|
||||
Irth_Vrth = here->VBICirth_Vrth;
|
||||
Ith_Vrth = here->VBICith_Vrth;
|
||||
Ith_Vbei = here->VBICith_Vbei;
|
||||
Ith_Vbci = here->VBICith_Vbci;
|
||||
Ith_Vcei = here->VBICith_Vcei;
|
||||
Ith_Vbex = here->VBICith_Vbex;
|
||||
Ith_Vbep = here->VBICith_Vbep;
|
||||
Ith_Vbcp = here->VBICith_Vbcp;
|
||||
Ith_Vcep = here->VBICith_Vcep;
|
||||
Ith_Vrci = here->VBICith_Vrci;
|
||||
Ith_Vbcx = here->VBICith_Vbcx;
|
||||
Ith_Vrbi = here->VBICith_Vrbi;
|
||||
Ith_Vrbp = here->VBICith_Vrbp;
|
||||
Ith_Vrcx = here->VBICith_Vrcx;
|
||||
Ith_Vrbx = here->VBICith_Vrbx;
|
||||
Ith_Vre = here->VBICith_Vre;
|
||||
Ith_Vrs = here->VBICith_Vrs;
|
||||
|
||||
/*
|
||||
c Stamp element: Ibe
|
||||
*/
|
||||
*(here->VBICbaseBItempPtr) += Ibe_Vrth;
|
||||
*(here->VBICemitEItempPtr) += -Ibe_Vrth;
|
||||
/*
|
||||
c Stamp element: Ibex
|
||||
*/
|
||||
*(here->VBICbaseBXtempPtr) += Ibex_Vrth;
|
||||
*(here->VBICemitEItempPtr) += -Ibex_Vrth;
|
||||
|
||||
if (!here->VBIC_excessPhase) {
|
||||
/*
|
||||
c Stamp element: Itzf
|
||||
*/
|
||||
*(here->VBICcollCItempPtr) += Itzf_Vrth;
|
||||
*(here->VBICemitEItempPtr) += -Itzf_Vrth;
|
||||
}
|
||||
/*
|
||||
c Stamp element: Itzr
|
||||
*/
|
||||
*(here->VBICemitEItempPtr) += Itzr_Vrth;
|
||||
*(here->VBICcollCItempPtr) += -Itzr_Vrth;
|
||||
/*
|
||||
c Stamp element: Ibc
|
||||
*/
|
||||
*(here->VBICbaseBItempPtr) += Ibc_Vrth;
|
||||
*(here->VBICcollCItempPtr) += -Ibc_Vrth;
|
||||
/*
|
||||
c Stamp element: Ibep
|
||||
*/
|
||||
*(here->VBICbaseBXtempPtr) += Ibep_Vrth;
|
||||
*(here->VBICbaseBPtempPtr) += -Ibep_Vrth;
|
||||
/*
|
||||
c Stamp element: Rcx
|
||||
*/
|
||||
*(here->VBICcollTempPtr) += Ircx_Vrth;
|
||||
*(here->VBICcollCXtempPtr) += -Ircx_Vrth;
|
||||
/*
|
||||
c Stamp element: Irci
|
||||
*/
|
||||
*(here->VBICcollCXtempPtr) += Irci_Vrth;
|
||||
*(here->VBICcollCItempPtr) += -Irci_Vrth;
|
||||
/*
|
||||
c Stamp element: Rbx
|
||||
*/
|
||||
*(here->VBICbaseTempPtr) += Irbx_Vrth;
|
||||
*(here->VBICbaseBXtempPtr) += -Irbx_Vrth;
|
||||
/*
|
||||
c Stamp element: Irbi
|
||||
*/
|
||||
*(here->VBICbaseBXtempPtr) += Irbi_Vrth;
|
||||
*(here->VBICbaseBItempPtr) += -Irbi_Vrth;
|
||||
/*
|
||||
c Stamp element: Re
|
||||
*/
|
||||
*(here->VBICemitTempPtr) += Ire_Vrth;
|
||||
*(here->VBICemitEItempPtr) += -Ire_Vrth;
|
||||
/*
|
||||
c Stamp element: Irbp
|
||||
*/
|
||||
*(here->VBICbaseBPtempPtr) += Irbp_Vrth;
|
||||
*(here->VBICcollCXtempPtr) += -Irbp_Vrth;
|
||||
/*
|
||||
c Stamp element: Ibcp
|
||||
*/
|
||||
*(here->VBICsubsSItempPtr) += Ibcp_Vrth;
|
||||
*(here->VBICbaseBPtempPtr) += -Ibcp_Vrth;
|
||||
/*
|
||||
c Stamp element: Iccp
|
||||
*/
|
||||
*(here->VBICbaseBXtempPtr) += Iccp_Vrth;
|
||||
*(here->VBICsubsSItempPtr) += -Iccp_Vrth;
|
||||
/*
|
||||
c Stamp element: Rs
|
||||
*/
|
||||
*(here->VBICsubsTempPtr) += Irs_Vrth;
|
||||
*(here->VBICsubsSItempPtr) += -Irs_Vrth;
|
||||
/*
|
||||
c Stamp element: Rth
|
||||
*/
|
||||
*(here->VBICtempTempPtr) += Irth_Vrth;
|
||||
/*
|
||||
c Stamp element: Ith
|
||||
*/
|
||||
*(here->VBICtempTempPtr) += -Ith_Vrth;
|
||||
|
||||
*(here->VBICtempBaseBIPtr) += -Ith_Vbei;
|
||||
*(here->VBICtempEmitEIPtr) += +Ith_Vbei;
|
||||
*(here->VBICtempBaseBIPtr) += -Ith_Vbci;
|
||||
*(here->VBICtempCollCIPtr) += +Ith_Vbci;
|
||||
*(here->VBICtempCollCIPtr) += -Ith_Vcei;
|
||||
*(here->VBICtempEmitEIPtr) += +Ith_Vcei;
|
||||
*(here->VBICtempBaseBXPtr) += -Ith_Vbex;
|
||||
*(here->VBICtempEmitEIPtr) += +Ith_Vbex;
|
||||
*(here->VBICtempBaseBXPtr) += -Ith_Vbep;
|
||||
*(here->VBICtempBaseBPPtr) += +Ith_Vbep;
|
||||
*(here->VBICtempSubsPtr) += -Ith_Vbcp;
|
||||
*(here->VBICtempBaseBPPtr) += +Ith_Vbcp;
|
||||
*(here->VBICtempBaseBXPtr) += -Ith_Vcep;
|
||||
*(here->VBICtempSubsPtr) += +Ith_Vcep;
|
||||
*(here->VBICtempCollCXPtr) += -Ith_Vrci;
|
||||
*(here->VBICtempCollCIPtr) += +Ith_Vrci;
|
||||
*(here->VBICtempBaseBIPtr) += -Ith_Vbcx;
|
||||
*(here->VBICtempCollCXPtr) += +Ith_Vbcx;
|
||||
*(here->VBICtempBaseBXPtr) += -Ith_Vrbi;
|
||||
*(here->VBICtempBaseBIPtr) += +Ith_Vrbi;
|
||||
*(here->VBICtempBaseBPPtr) += -Ith_Vrbp;
|
||||
*(here->VBICtempCollCXPtr) += +Ith_Vrbp;
|
||||
*(here->VBICtempCollPtr) += -Ith_Vrcx;
|
||||
*(here->VBICtempCollCXPtr) += +Ith_Vrcx;
|
||||
*(here->VBICtempBasePtr) += -Ith_Vrbx;
|
||||
*(here->VBICtempBaseBXPtr) += +Ith_Vrbx;
|
||||
*(here->VBICtempEmitPtr) += -Ith_Vre;
|
||||
*(here->VBICtempEmitEIPtr) += +Ith_Vre;
|
||||
*(here->VBICtempSubsPtr) += -Ith_Vrs;
|
||||
*(here->VBICtempSubsSIPtr) += +Ith_Vrs;
|
||||
if (here->VBIC_excessPhase) {
|
||||
Ith_Vrxf = *(ckt->CKTstate0 + here->VBICith_Vrxf);
|
||||
*(here->VBICtempXf2Ptr) += +Ith_Vrxf;
|
||||
}
|
||||
}
|
||||
|
||||
if (here->VBIC_excessPhase) {
|
||||
Itxf_Vrxf = *(ckt->CKTstate0 + here->VBICitxf_Vrxf);
|
||||
Ibc_Vrxf = *(ckt->CKTstate0 + here->VBICibc_Vrxf);
|
||||
Ixzf_Vbei = *(ckt->CKTstate0 + here->VBICixzf_Vbei);
|
||||
Ixzf_Vbci = *(ckt->CKTstate0 + here->VBICixzf_Vbci);
|
||||
Ixxf_Vrxf = *(ckt->CKTstate0 + here->VBICixxf_Vrxf);
|
||||
/*
|
||||
c Stamp element: Itxf
|
||||
*/
|
||||
*(here->VBICcollCIXf2Ptr) += Itxf_Vrxf;
|
||||
*(here->VBICemitEIXf2Ptr) += -Itxf_Vrxf;
|
||||
/*
|
||||
c Stamp element: Ibc
|
||||
*/
|
||||
*(here->VBICbaseBIXf2Ptr) += Ibc_Vrxf;
|
||||
*(here->VBICcollCIXf2Ptr) += -Ibc_Vrxf;
|
||||
/*
|
||||
c Stamp element: Ixzf, Branch: xf1-ground
|
||||
*/
|
||||
*(here->VBICxf1BaseBIPtr) += +Ixzf_Vbei;
|
||||
*(here->VBICxf1EmitEIPtr) += -Ixzf_Vbei;
|
||||
*(here->VBICxf1BaseBIPtr) += +Ixzf_Vbci;
|
||||
*(here->VBICxf1CollCIPtr) += -Ixzf_Vbci;
|
||||
if (here->VBIC_selfheat) {
|
||||
Ixzf_Vrth = *(ckt->CKTstate0 + here->VBICixzf_Vrth);
|
||||
*(here->VBICxf1TempPtr) += Ixzf_Vrth;
|
||||
}
|
||||
/*
|
||||
c Stamp element: Ixxf, Branch: xf2-ground
|
||||
*/
|
||||
*(here->VBICxf2Xf2Ptr) += +Ixxf_Vrxf;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
c The complex part
|
||||
*/
|
||||
|
|
@ -229,6 +437,8 @@ c The complex part
|
|||
XQbep_Vbep = *(ckt->CKTstate0 + here->VBICcqbep);
|
||||
XQbep_Vbci = *(ckt->CKTstate0 + here->VBICcqbepci);
|
||||
XQbcp_Vbcp = *(ckt->CKTstate0 + here->VBICcqbcp);
|
||||
XQbeo_Vbe = *(ckt->CKTstate0 + here->VBICcqbeo);
|
||||
XQbco_Vbc = *(ckt->CKTstate0 + here->VBICcqbco);
|
||||
/*
|
||||
c Stamp element: Qbe
|
||||
*/
|
||||
|
|
@ -312,6 +522,87 @@ c Stamp element: Qbcp
|
|||
*(here->VBICbaseBPBaseBPPtr) += XQbcp_Vbcp * (s->real);
|
||||
*(here->VBICbaseBPBaseBPPtr + 1) += XQbcp_Vbcp * (s->imag);
|
||||
|
||||
/*
|
||||
c Stamp element: Qbeo
|
||||
*/
|
||||
*(here->VBICbaseBasePtr ) += XQbeo_Vbe * (s->real);
|
||||
*(here->VBICbaseBasePtr + 1) += XQbeo_Vbe * (s->imag);
|
||||
*(here->VBICemitEmitPtr ) += XQbeo_Vbe * (s->real);
|
||||
*(here->VBICemitEmitPtr + 1) += XQbeo_Vbe * (s->imag);
|
||||
*(here->VBICbaseEmitPtr ) += -XQbeo_Vbe * (s->real);
|
||||
*(here->VBICbaseEmitPtr + 1) += -XQbeo_Vbe * (s->imag);
|
||||
*(here->VBICemitBasePtr ) += -XQbeo_Vbe * (s->real);
|
||||
*(here->VBICemitBasePtr + 1) += -XQbeo_Vbe * (s->imag);
|
||||
/*
|
||||
c Stamp element: Qbco
|
||||
*/
|
||||
*(here->VBICbaseBasePtr ) += XQbco_Vbc * (s->real);
|
||||
*(here->VBICbaseBasePtr + 1) += XQbco_Vbc * (s->imag);
|
||||
*(here->VBICcollCollPtr ) += XQbco_Vbc * (s->real);
|
||||
*(here->VBICcollCollPtr + 1) += XQbco_Vbc * (s->imag);
|
||||
*(here->VBICbaseCollPtr ) += -XQbco_Vbc * (s->real);
|
||||
*(here->VBICbaseCollPtr + 1) += -XQbco_Vbc * (s->imag);
|
||||
*(here->VBICcollBasePtr ) += -XQbco_Vbc * (s->real);
|
||||
*(here->VBICcollBasePtr + 1) += -XQbco_Vbc * (s->imag);
|
||||
|
||||
if (here->VBIC_selfheat) {
|
||||
XQcth_Vrth = here->VBICcapcth;
|
||||
XQbe_Vrth = here->VBICcapqbeth;
|
||||
XQbex_Vrth = here->VBICcapqbexth;
|
||||
XQbc_Vrth = here->VBICcapqbcth;
|
||||
XQbcx_Vrth = here->VBICcapqbcxth;
|
||||
XQbep_Vrth = here->VBICcapqbepth;
|
||||
XQbcp_Vrth = here->VBICcapqbcpth;
|
||||
|
||||
*(here->VBICtempTempPtr ) += XQcth_Vrth * (s->real);
|
||||
*(here->VBICtempTempPtr + 1) += XQcth_Vrth * (s->imag);
|
||||
|
||||
*(here->VBICbaseBItempPtr ) += XQbe_Vrth * (s->real);
|
||||
*(here->VBICbaseBItempPtr + 1) += XQbe_Vrth * (s->imag);
|
||||
*(here->VBICemitEItempPtr ) += -XQbe_Vrth * (s->real);
|
||||
*(here->VBICemitEItempPtr + 1) += -XQbe_Vrth * (s->imag);
|
||||
*(here->VBICbaseBXtempPtr ) += XQbex_Vrth * (s->real);
|
||||
*(here->VBICbaseBXtempPtr + 1) += XQbex_Vrth * (s->imag);
|
||||
*(here->VBICemitEItempPtr ) += -XQbex_Vrth * (s->real);
|
||||
*(here->VBICemitEItempPtr + 1) += -XQbex_Vrth * (s->imag);
|
||||
*(here->VBICbaseBItempPtr ) += XQbc_Vrth * (s->real);
|
||||
*(here->VBICbaseBItempPtr + 1) += XQbc_Vrth * (s->imag);
|
||||
*(here->VBICcollCItempPtr ) += -XQbc_Vrth * (s->real);
|
||||
*(here->VBICcollCItempPtr + 1) += -XQbc_Vrth * (s->imag);
|
||||
*(here->VBICbaseBItempPtr ) += XQbcx_Vrth * (s->real);
|
||||
*(here->VBICbaseBItempPtr + 1) += XQbcx_Vrth * (s->imag);
|
||||
*(here->VBICcollCXtempPtr ) += -XQbcx_Vrth * (s->real);
|
||||
*(here->VBICcollCXtempPtr + 1) += -XQbcx_Vrth * (s->imag);
|
||||
*(here->VBICbaseBXtempPtr ) += XQbep_Vrth * (s->real);
|
||||
*(here->VBICbaseBXtempPtr + 1) += XQbep_Vrth * (s->imag);
|
||||
*(here->VBICbaseBPtempPtr ) += -XQbep_Vrth * (s->real);
|
||||
*(here->VBICbaseBPtempPtr + 1) += -XQbep_Vrth * (s->imag);
|
||||
*(here->VBICsubsSItempPtr ) += XQbcp_Vrth * (s->real);
|
||||
*(here->VBICsubsSItempPtr + 1) += XQbcp_Vrth * (s->imag);
|
||||
*(here->VBICbaseBPtempPtr ) += -XQbcp_Vrth * (s->real);
|
||||
*(here->VBICbaseBPtempPtr + 1) += -XQbcp_Vrth * (s->imag);
|
||||
|
||||
}
|
||||
if (here->VBIC_excessPhase) {
|
||||
/*
|
||||
c Stamp element: Qcxf
|
||||
*/
|
||||
XQcxf_Vcxf = here->VBICcapQcxf;
|
||||
*(here->VBICxf1Xf1Ptr ) += XQcxf_Vcxf * s->real;
|
||||
*(here->VBICxf1Xf1Ptr + 1) += XQcxf_Vcxf * s->imag;
|
||||
/*
|
||||
c Stamp element: L = TD/3
|
||||
*/
|
||||
Xl = here->VBICindInduct;
|
||||
|
||||
*(here->VBICxf1IbrPtr) += 1;
|
||||
*(here->VBICxf2IbrPtr) -= 1;
|
||||
*(here->VBICibrXf1Ptr) += 1;
|
||||
*(here->VBICibrXf2Ptr) -= 1;
|
||||
*(here->VBICibrIbrPtr ) -= Xl * s->real;
|
||||
*(here->VBICibrIbrPtr + 1) -= Xl * s->imag;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
|
|
@ -623,20 +623,18 @@ do { if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
TSTALLOC(VBICxf1CollCIPtr, VBICxf1Node , VBICcollCINode);
|
||||
TSTALLOC(VBICxf1BaseBIPtr, VBICxf1Node , VBICbaseBINode);
|
||||
TSTALLOC(VBICxf1EmitEIPtr, VBICxf1Node , VBICemitEINode);
|
||||
|
||||
TSTALLOC(VBICxf2Xf2Ptr , VBICxf2Node , VBICxf2Node);
|
||||
TSTALLOC(VBICxf2Xf1Ptr , VBICxf2Node , VBICxf1Node);
|
||||
TSTALLOC(VBICcollCIXf2Ptr, VBICcollCINode, VBICxf2Node);
|
||||
TSTALLOC(VBICbaseBIXf2Ptr, VBICbaseBINode, VBICxf2Node);
|
||||
TSTALLOC(VBICemitEIXf2Ptr, VBICemitEINode, VBICxf2Node);
|
||||
|
||||
TSTALLOC(VBICxf1IbrPtr, VBICxf1Node, VBICbrEq);
|
||||
TSTALLOC(VBICxf2IbrPtr, VBICxf2Node, VBICbrEq);
|
||||
TSTALLOC(VBICibrXf2Ptr, VBICbrEq, VBICxf2Node);
|
||||
TSTALLOC(VBICibrXf1Ptr, VBICbrEq, VBICxf1Node);
|
||||
TSTALLOC(VBICibrIbrPtr, VBICbrEq, VBICbrEq);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
Loading…
Reference in New Issue