|
|
@ -131,10 +131,13 @@ BJTload(GENmodel *inModel, CKTcircuit *ckt) |
|
|
double vrci=0.0, delvrci; |
|
|
double vrci=0.0, delvrci; |
|
|
double Irci=0.0, Irci_Vrci=0.0, Irci_Vbci=0.0, Irci_Vbcx=0.0; |
|
|
double Irci=0.0, Irci_Vrci=0.0, Irci_Vbci=0.0, Irci_Vbcx=0.0; |
|
|
double Qbci=0.0, Qbci_Vbci=0.0, Qbcx, Qbcx_Vbcx=0.0, gbcx, cbcx; |
|
|
double Qbci=0.0, Qbci_Vbci=0.0, Qbcx, Qbcx_Vbcx=0.0, gbcx, cbcx; |
|
|
|
|
|
int ttype; |
|
|
|
|
|
|
|
|
/* loop through all the models */ |
|
|
/* loop through all the models */ |
|
|
for( ; model != NULL; model = BJTnextModel(model)) { |
|
|
for( ; model != NULL; model = BJTnextModel(model)) { |
|
|
|
|
|
|
|
|
|
|
|
ttype = model->BJTtype*model->BJTsubs; |
|
|
|
|
|
|
|
|
/* loop through all the instances of the model */ |
|
|
/* loop through all the instances of the model */ |
|
|
for (here = BJTinstances(model); here != NULL ; |
|
|
for (here = BJTinstances(model); here != NULL ; |
|
|
here=BJTnextInstance(here)) { |
|
|
here=BJTnextInstance(here)) { |
|
|
@ -179,7 +182,7 @@ BJTload(GENmodel *inModel, CKTcircuit *ckt) |
|
|
vbx=model->BJTtype*( |
|
|
vbx=model->BJTtype*( |
|
|
*(ckt->CKTrhsOp+here->BJTbaseNode)- |
|
|
*(ckt->CKTrhsOp+here->BJTbaseNode)- |
|
|
*(ckt->CKTrhsOp+here->BJTcolPrimeNode)); |
|
|
*(ckt->CKTrhsOp+here->BJTcolPrimeNode)); |
|
|
vsub=model->BJTtype*model->BJTsubs*( |
|
|
|
|
|
|
|
|
vsub=ttype*( |
|
|
*(ckt->CKTrhsOp+here->BJTsubstNode)- |
|
|
*(ckt->CKTrhsOp+here->BJTsubstNode)- |
|
|
*(ckt->CKTrhsOp+here->BJTsubstConNode)); |
|
|
*(ckt->CKTrhsOp+here->BJTsubstConNode)); |
|
|
} |
|
|
} |
|
|
@ -193,7 +196,7 @@ BJTload(GENmodel *inModel, CKTcircuit *ckt) |
|
|
vbx=model->BJTtype*( |
|
|
vbx=model->BJTtype*( |
|
|
*(ckt->CKTrhsOld+here->BJTbaseNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTbaseNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTcolPrimeNode)); |
|
|
*(ckt->CKTrhsOld+here->BJTcolPrimeNode)); |
|
|
vsub=model->BJTtype*model->BJTsubs*( |
|
|
|
|
|
|
|
|
vsub=ttype*( |
|
|
*(ckt->CKTrhsOld+here->BJTsubstNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTsubstNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTsubstConNode)); |
|
|
*(ckt->CKTrhsOld+here->BJTsubstConNode)); |
|
|
} |
|
|
} |
|
|
@ -201,7 +204,7 @@ BJTload(GENmodel *inModel, CKTcircuit *ckt) |
|
|
vbx=model->BJTtype*( |
|
|
vbx=model->BJTtype*( |
|
|
*(ckt->CKTrhsOp+here->BJTbaseNode)- |
|
|
*(ckt->CKTrhsOp+here->BJTbaseNode)- |
|
|
*(ckt->CKTrhsOp+here->BJTcolPrimeNode)); |
|
|
*(ckt->CKTrhsOp+here->BJTcolPrimeNode)); |
|
|
vsub=model->BJTtype*model->BJTsubs*( |
|
|
|
|
|
|
|
|
vsub=ttype*( |
|
|
*(ckt->CKTrhsOp+here->BJTsubstNode)- |
|
|
*(ckt->CKTrhsOp+here->BJTsubstNode)- |
|
|
*(ckt->CKTrhsOp+here->BJTsubstConNode)); |
|
|
*(ckt->CKTrhsOp+here->BJTsubstConNode)); |
|
|
} |
|
|
} |
|
|
@ -221,7 +224,7 @@ BJTload(GENmodel *inModel, CKTcircuit *ckt) |
|
|
vbx=model->BJTtype*( |
|
|
vbx=model->BJTtype*( |
|
|
*(ckt->CKTrhsOld+here->BJTbaseNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTbaseNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTcolPrimeNode)); |
|
|
*(ckt->CKTrhsOld+here->BJTcolPrimeNode)); |
|
|
vsub=model->BJTtype*model->BJTsubs*( |
|
|
|
|
|
|
|
|
vsub=ttype*( |
|
|
*(ckt->CKTrhsOld+here->BJTsubstNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTsubstNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTsubstConNode)); |
|
|
*(ckt->CKTrhsOld+here->BJTsubstConNode)); |
|
|
} else if(ckt->CKTmode & MODEINITTRAN) { |
|
|
} else if(ckt->CKTmode & MODEINITTRAN) { |
|
|
@ -232,7 +235,7 @@ BJTload(GENmodel *inModel, CKTcircuit *ckt) |
|
|
vbx=model->BJTtype*( |
|
|
vbx=model->BJTtype*( |
|
|
*(ckt->CKTrhsOld+here->BJTbaseNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTbaseNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTcolPrimeNode)); |
|
|
*(ckt->CKTrhsOld+here->BJTcolPrimeNode)); |
|
|
vsub=model->BJTtype*model->BJTsubs*( |
|
|
|
|
|
|
|
|
vsub=ttype*( |
|
|
*(ckt->CKTrhsOld+here->BJTsubstNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTsubstNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTsubstConNode)); |
|
|
*(ckt->CKTrhsOld+here->BJTsubstConNode)); |
|
|
if( (ckt->CKTmode & MODETRAN) && (ckt->CKTmode & MODEUIC) ) { |
|
|
if( (ckt->CKTmode & MODETRAN) && (ckt->CKTmode & MODEUIC) ) { |
|
|
@ -331,7 +334,7 @@ BJTload(GENmodel *inModel, CKTcircuit *ckt) |
|
|
vbx=model->BJTtype*( |
|
|
vbx=model->BJTtype*( |
|
|
*(ckt->CKTrhsOld+here->BJTbaseNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTbaseNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTcolPrimeNode)); |
|
|
*(ckt->CKTrhsOld+here->BJTcolPrimeNode)); |
|
|
vsub=model->BJTtype*model->BJTsubs*( |
|
|
|
|
|
|
|
|
vsub=ttype*( |
|
|
*(ckt->CKTrhsOld+here->BJTsubstNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTsubstNode)- |
|
|
*(ckt->CKTrhsOld+here->BJTsubstConNode)); |
|
|
*(ckt->CKTrhsOld+here->BJTsubstConNode)); |
|
|
cchat= *(ckt->CKTstate0 + here->BJTcc)+(*(ckt->CKTstate0 + |
|
|
cchat= *(ckt->CKTstate0 + here->BJTcc)+(*(ckt->CKTstate0 + |
|
|
@ -882,7 +885,7 @@ load: |
|
|
* load current excitation vector |
|
|
* load current excitation vector |
|
|
*/ |
|
|
*/ |
|
|
geqsub = gcsub + gdsub; |
|
|
geqsub = gcsub + gdsub; |
|
|
ceqsub=model->BJTtype * model->BJTsubs * |
|
|
|
|
|
|
|
|
ceqsub=ttype * |
|
|
(*(ckt->CKTstate0 + here->BJTcqsub) + cdsub - vsub*geqsub); |
|
|
(*(ckt->CKTstate0 + here->BJTcqsub) + cdsub - vsub*geqsub); |
|
|
ceqbx=model->BJTtype * (*(ckt->CKTstate0 + here->BJTcqbx) - |
|
|
ceqbx=model->BJTtype * (*(ckt->CKTstate0 + here->BJTcqbx) - |
|
|
vbx * geqbx); |
|
|
vbx * geqbx); |
|
|
|