New Binding Method extended to LTRA device
This commit is contained in:
parent
f7effb3234
commit
6d7c50a4b8
|
|
@ -1,5 +1,5 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
Author: 2013 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
|
|
@ -7,280 +7,281 @@ Author: 2012 Francesco Lannutti
|
|||
#include "ltradefs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
static
|
||||
int
|
||||
LTRAbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
BindCompare (const void *a, const void *b)
|
||||
{
|
||||
LTRAmodel *model = (LTRAmodel *)inModel;
|
||||
int i ;
|
||||
BindElement *A, *B ;
|
||||
A = (BindElement *)a ;
|
||||
B = (BindElement *)b ;
|
||||
|
||||
/* loop through all the ltra models */
|
||||
for( ; model != NULL; model = model->LTRAnextModel ) {
|
||||
LTRAinstance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->LTRAinstances; here != NULL ;
|
||||
here = here->LTRAnextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode1 != 0)) {
|
||||
while (here->LTRAibr1Pos1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode1 != 0)) {
|
||||
while (here->LTRAibr1Neg1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr1Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode2 != 0)) {
|
||||
while (here->LTRAibr1Pos2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr1Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode2 != 0)) {
|
||||
while (here->LTRAibr1Neg2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr1Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRAibr1Ibr1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRAibr1Ibr2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr1Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode1 != 0)) {
|
||||
while (here->LTRAibr2Pos1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr2Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode1 != 0)) {
|
||||
while (here->LTRAibr2Neg1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr2Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode2 != 0)) {
|
||||
while (here->LTRAibr2Pos2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode2 != 0)) {
|
||||
while (here->LTRAibr2Neg2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr2Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRAibr2Ibr1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr2Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRAibr2Ibr2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAibr2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRApos1Ibr1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRApos1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRAneg1Ibr1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAneg1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRApos2Ibr2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRApos2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRAneg2Ibr2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAneg2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAposNode1 != 0)) {
|
||||
while (here->LTRApos1Pos1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRApos1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAnegNode1 != 0)) {
|
||||
while (here->LTRAneg1Neg1Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAneg1Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAposNode2 != 0)) {
|
||||
while (here->LTRApos2Pos2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRApos2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAnegNode2 != 0)) {
|
||||
while (here->LTRAneg2Neg2Ptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->LTRAneg2Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
return ((int)(A->Sparse - B->Sparse)) ;
|
||||
}
|
||||
|
||||
int
|
||||
LTRAbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
LTRAbindCSC (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
LTRAmodel *model = (LTRAmodel *)inModel;
|
||||
int i ;
|
||||
LTRAmodel *model = (LTRAmodel *)inModel ;
|
||||
LTRAinstance *here ;
|
||||
double *i ;
|
||||
BindElement *matched, *BindStruct ;
|
||||
size_t nz ;
|
||||
|
||||
/* loop through all the ltra models */
|
||||
for( ; model != NULL; model = model->LTRAnextModel ) {
|
||||
LTRAinstance *here;
|
||||
BindStruct = ckt->CKTmatrix->CKTbindStruct ;
|
||||
nz = (size_t)ckt->CKTmatrix->CKTklunz ;
|
||||
|
||||
/* loop through all the LTRA models */
|
||||
for ( ; model != NULL ; model = model->LTRAnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->LTRAinstances; here != NULL ;
|
||||
here = here->LTRAnextInstance) {
|
||||
for (here = model->LTRAinstances ; here != NULL ; here = here->LTRAnextInstance)
|
||||
{
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode1 != 0))
|
||||
{
|
||||
i = here->LTRAibr1Pos1Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAibr1Pos1StructPtr = matched ;
|
||||
here->LTRAibr1Pos1Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode1 != 0)) {
|
||||
while (here->LTRAibr1Pos1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode1 != 0))
|
||||
{
|
||||
i = here->LTRAibr1Neg1Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAibr1Neg1StructPtr = matched ;
|
||||
here->LTRAibr1Neg1Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode1 != 0)) {
|
||||
while (here->LTRAibr1Neg1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr1Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode2 != 0))
|
||||
{
|
||||
i = here->LTRAibr1Pos2Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAibr1Pos2StructPtr = matched ;
|
||||
here->LTRAibr1Pos2Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode2 != 0)) {
|
||||
while (here->LTRAibr1Pos2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr1Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode2 != 0))
|
||||
{
|
||||
i = here->LTRAibr1Neg2Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAibr1Neg2StructPtr = matched ;
|
||||
here->LTRAibr1Neg2Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode2 != 0)) {
|
||||
while (here->LTRAibr1Neg2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr1Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq1 != 0))
|
||||
{
|
||||
i = here->LTRAibr1Ibr1Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAibr1Ibr1StructPtr = matched ;
|
||||
here->LTRAibr1Ibr1Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRAibr1Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq2 != 0))
|
||||
{
|
||||
i = here->LTRAibr1Ibr2Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAibr1Ibr2StructPtr = matched ;
|
||||
here->LTRAibr1Ibr2Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRAibr1Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr1Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode1 != 0))
|
||||
{
|
||||
i = here->LTRAibr2Pos1Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAibr2Pos1StructPtr = matched ;
|
||||
here->LTRAibr2Pos1Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode1 != 0)) {
|
||||
while (here->LTRAibr2Pos1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr2Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode1 != 0))
|
||||
{
|
||||
i = here->LTRAibr2Neg1Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAibr2Neg1StructPtr = matched ;
|
||||
here->LTRAibr2Neg1Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode1 != 0)) {
|
||||
while (here->LTRAibr2Neg1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr2Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode2 != 0))
|
||||
{
|
||||
i = here->LTRAibr2Pos2Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAibr2Pos2StructPtr = matched ;
|
||||
here->LTRAibr2Pos2Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode2 != 0)) {
|
||||
while (here->LTRAibr2Pos2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode2 != 0))
|
||||
{
|
||||
i = here->LTRAibr2Neg2Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAibr2Neg2StructPtr = matched ;
|
||||
here->LTRAibr2Neg2Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode2 != 0)) {
|
||||
while (here->LTRAibr2Neg2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr2Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq1 != 0))
|
||||
{
|
||||
i = here->LTRAibr2Ibr1Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAibr2Ibr1StructPtr = matched ;
|
||||
here->LTRAibr2Ibr1Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRAibr2Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr2Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq2 != 0))
|
||||
{
|
||||
i = here->LTRAibr2Ibr2Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAibr2Ibr2StructPtr = matched ;
|
||||
here->LTRAibr2Ibr2Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRAibr2Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAibr2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAbrEq1 != 0))
|
||||
{
|
||||
i = here->LTRApos1Ibr1Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRApos1Ibr1StructPtr = matched ;
|
||||
here->LTRApos1Ibr1Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRApos1Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRApos1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAbrEq1 != 0))
|
||||
{
|
||||
i = here->LTRAneg1Ibr1Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAneg1Ibr1StructPtr = matched ;
|
||||
here->LTRAneg1Ibr1Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAbrEq1 != 0)) {
|
||||
while (here->LTRAneg1Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAneg1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAbrEq2 != 0))
|
||||
{
|
||||
i = here->LTRApos2Ibr2Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRApos2Ibr2StructPtr = matched ;
|
||||
here->LTRApos2Ibr2Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRApos2Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRApos2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAbrEq2 != 0))
|
||||
{
|
||||
i = here->LTRAneg2Ibr2Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAneg2Ibr2StructPtr = matched ;
|
||||
here->LTRAneg2Ibr2Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAbrEq2 != 0)) {
|
||||
while (here->LTRAneg2Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAneg2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAposNode1 != 0))
|
||||
{
|
||||
i = here->LTRApos1Pos1Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRApos1Pos1StructPtr = matched ;
|
||||
here->LTRApos1Pos1Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAposNode1 != 0)) {
|
||||
while (here->LTRApos1Pos1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRApos1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAnegNode1 != 0))
|
||||
{
|
||||
i = here->LTRAneg1Neg1Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAneg1Neg1StructPtr = matched ;
|
||||
here->LTRAneg1Neg1Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAnegNode1 != 0)) {
|
||||
while (here->LTRAneg1Neg1Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAneg1Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAposNode2 != 0))
|
||||
{
|
||||
i = here->LTRApos2Pos2Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRApos2Pos2StructPtr = matched ;
|
||||
here->LTRApos2Pos2Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAposNode2 != 0)) {
|
||||
while (here->LTRApos2Pos2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRApos2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAnegNode2 != 0))
|
||||
{
|
||||
i = here->LTRAneg2Neg2Ptr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->LTRAneg2Neg2StructPtr = matched ;
|
||||
here->LTRAneg2Neg2Ptr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAnegNode2 != 0)) {
|
||||
while (here->LTRAneg2Neg2Ptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->LTRAneg2Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
||||
int
|
||||
LTRAbindCSCComplex (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
LTRAmodel *model = (LTRAmodel *)inModel ;
|
||||
LTRAinstance *here ;
|
||||
|
||||
NG_IGNORE (ckt) ;
|
||||
|
||||
/* loop through all the LTRA models */
|
||||
for ( ; model != NULL ; model = model->LTRAnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->LTRAinstances ; here != NULL ; here = here->LTRAnextInstance)
|
||||
{
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode1 != 0))
|
||||
here->LTRAibr1Pos1Ptr = here->LTRAibr1Pos1StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode1 != 0))
|
||||
here->LTRAibr1Neg1Ptr = here->LTRAibr1Neg1StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode2 != 0))
|
||||
here->LTRAibr1Pos2Ptr = here->LTRAibr1Pos2StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode2 != 0))
|
||||
here->LTRAibr1Neg2Ptr = here->LTRAibr1Neg2StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq1 != 0))
|
||||
here->LTRAibr1Ibr1Ptr = here->LTRAibr1Ibr1StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq2 != 0))
|
||||
here->LTRAibr1Ibr2Ptr = here->LTRAibr1Ibr2StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode1 != 0))
|
||||
here->LTRAibr2Pos1Ptr = here->LTRAibr2Pos1StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode1 != 0))
|
||||
here->LTRAibr2Neg1Ptr = here->LTRAibr2Neg1StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode2 != 0))
|
||||
here->LTRAibr2Pos2Ptr = here->LTRAibr2Pos2StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode2 != 0))
|
||||
here->LTRAibr2Neg2Ptr = here->LTRAibr2Neg2StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq1 != 0))
|
||||
here->LTRAibr2Ibr1Ptr = here->LTRAibr2Ibr1StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq2 != 0))
|
||||
here->LTRAibr2Ibr2Ptr = here->LTRAibr2Ibr2StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAbrEq1 != 0))
|
||||
here->LTRApos1Ibr1Ptr = here->LTRApos1Ibr1StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAbrEq1 != 0))
|
||||
here->LTRAneg1Ibr1Ptr = here->LTRAneg1Ibr1StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAbrEq2 != 0))
|
||||
here->LTRApos2Ibr2Ptr = here->LTRApos2Ibr2StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAbrEq2 != 0))
|
||||
here->LTRAneg2Ibr2Ptr = here->LTRAneg2Ibr2StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAposNode1 != 0))
|
||||
here->LTRApos1Pos1Ptr = here->LTRApos1Pos1StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAnegNode1 != 0))
|
||||
here->LTRAneg1Neg1Ptr = here->LTRAneg1Neg1StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAposNode2 != 0))
|
||||
here->LTRApos2Pos2Ptr = here->LTRApos2Pos2StructPtr->CSC_Complex ;
|
||||
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAnegNode2 != 0))
|
||||
here->LTRAneg2Neg2Ptr = here->LTRAneg2Neg2StructPtr->CSC_Complex ;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
||||
int
|
||||
|
|
@ -288,155 +289,77 @@ LTRAbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
|||
{
|
||||
LTRAmodel *model = (LTRAmodel *)inModel ;
|
||||
LTRAinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the TransmissionLine models */
|
||||
NG_IGNORE (ckt) ;
|
||||
|
||||
/* loop through all the LTRA models */
|
||||
for ( ; model != NULL ; model = model->LTRAnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->LTRAinstances ; here != NULL ; here = here->LTRAnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->LTRAbrEq1 != 0) && (here->LTRAposNode1 != 0))
|
||||
{
|
||||
while (here->LTRAibr1Pos1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAibr1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode1 != 0))
|
||||
here->LTRAibr1Pos1Ptr = here->LTRAibr1Pos1StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAbrEq1 != 0) && (here->LTRAnegNode1 != 0))
|
||||
{
|
||||
while (here->LTRAibr1Neg1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAibr1Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode1 != 0))
|
||||
here->LTRAibr1Neg1Ptr = here->LTRAibr1Neg1StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAbrEq1 != 0) && (here->LTRAposNode2 != 0))
|
||||
{
|
||||
while (here->LTRAibr1Pos2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAibr1Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAposNode2 != 0))
|
||||
here->LTRAibr1Pos2Ptr = here->LTRAibr1Pos2StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAbrEq1 != 0) && (here->LTRAnegNode2 != 0))
|
||||
{
|
||||
while (here->LTRAibr1Neg2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAibr1Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAnegNode2 != 0))
|
||||
here->LTRAibr1Neg2Ptr = here->LTRAibr1Neg2StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAbrEq1 != 0) && (here->LTRAbrEq1 != 0))
|
||||
{
|
||||
while (here->LTRAibr1Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAibr1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq1 != 0))
|
||||
here->LTRAibr1Ibr1Ptr = here->LTRAibr1Ibr1StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAbrEq1 != 0) && (here->LTRAbrEq2 != 0))
|
||||
{
|
||||
while (here->LTRAibr1Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAibr1Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq1 != 0) && (here-> LTRAbrEq2 != 0))
|
||||
here->LTRAibr1Ibr2Ptr = here->LTRAibr1Ibr2StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAbrEq2 != 0) && (here->LTRAposNode1 != 0))
|
||||
{
|
||||
while (here->LTRAibr2Pos1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAibr2Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode1 != 0))
|
||||
here->LTRAibr2Pos1Ptr = here->LTRAibr2Pos1StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAbrEq2 != 0) && (here->LTRAnegNode1 != 0))
|
||||
{
|
||||
while (here->LTRAibr2Neg1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAibr2Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode1 != 0))
|
||||
here->LTRAibr2Neg1Ptr = here->LTRAibr2Neg1StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAbrEq2 != 0) && (here->LTRAposNode2 != 0))
|
||||
{
|
||||
while (here->LTRAibr2Pos2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAibr2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAposNode2 != 0))
|
||||
here->LTRAibr2Pos2Ptr = here->LTRAibr2Pos2StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAbrEq2 != 0) && (here->LTRAnegNode2 != 0))
|
||||
{
|
||||
while (here->LTRAibr2Neg2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAibr2Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAnegNode2 != 0))
|
||||
here->LTRAibr2Neg2Ptr = here->LTRAibr2Neg2StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAbrEq2 != 0) && (here->LTRAbrEq1 != 0))
|
||||
{
|
||||
while (here->LTRAibr2Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAibr2Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq1 != 0))
|
||||
here->LTRAibr2Ibr1Ptr = here->LTRAibr2Ibr1StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAbrEq2 != 0) && (here->LTRAbrEq2 != 0))
|
||||
{
|
||||
while (here->LTRAibr2Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAibr2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAbrEq2 != 0) && (here-> LTRAbrEq2 != 0))
|
||||
here->LTRAibr2Ibr2Ptr = here->LTRAibr2Ibr2StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAposNode1 != 0) && (here->LTRAbrEq1 != 0))
|
||||
{
|
||||
while (here->LTRApos1Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRApos1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAbrEq1 != 0))
|
||||
here->LTRApos1Ibr1Ptr = here->LTRApos1Ibr1StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAnegNode1 != 0) && (here->LTRAbrEq1 != 0))
|
||||
{
|
||||
while (here->LTRAneg1Ibr1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAneg1Ibr1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAbrEq1 != 0))
|
||||
here->LTRAneg1Ibr1Ptr = here->LTRAneg1Ibr1StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAposNode2 != 0) && (here->LTRAbrEq2 != 0))
|
||||
{
|
||||
while (here->LTRApos2Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRApos2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAbrEq2 != 0))
|
||||
here->LTRApos2Ibr2Ptr = here->LTRApos2Ibr2StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAnegNode2 != 0) && (here->LTRAbrEq2 != 0))
|
||||
{
|
||||
while (here->LTRAneg2Ibr2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAneg2Ibr2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAbrEq2 != 0))
|
||||
here->LTRAneg2Ibr2Ptr = here->LTRAneg2Ibr2StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAposNode1 != 0) && (here->LTRAposNode1 != 0))
|
||||
{
|
||||
while (here->LTRApos1Pos1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRApos1Pos1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAposNode1 != 0) && (here-> LTRAposNode1 != 0))
|
||||
here->LTRApos1Pos1Ptr = here->LTRApos1Pos1StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAnegNode1 != 0) && (here->LTRAnegNode1 != 0))
|
||||
{
|
||||
while (here->LTRAneg1Neg1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAneg1Neg1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAnegNode1 != 0) && (here-> LTRAnegNode1 != 0))
|
||||
here->LTRAneg1Neg1Ptr = here->LTRAneg1Neg1StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAposNode2 != 0) && (here->LTRAposNode2 != 0))
|
||||
{
|
||||
while (here->LTRApos2Pos2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRApos2Pos2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
if ((here-> LTRAposNode2 != 0) && (here-> LTRAposNode2 != 0))
|
||||
here->LTRApos2Pos2Ptr = here->LTRApos2Pos2StructPtr->CSC ;
|
||||
|
||||
if ((here-> LTRAnegNode2 != 0) && (here-> LTRAnegNode2 != 0))
|
||||
here->LTRAneg2Neg2Ptr = here->LTRAneg2Neg2StructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->LTRAnegNode2 != 0) && (here->LTRAnegNode2 != 0))
|
||||
{
|
||||
while (here->LTRAneg2Neg2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->LTRAneg2Neg2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,6 +67,30 @@ typedef struct sLTRAinstance {
|
|||
unsigned LTRAicC1Given : 1; /* flag to ind. init. current at port 1 given */
|
||||
unsigned LTRAicV2Given : 1; /* flag to ind. init. voltage at port 2 given */
|
||||
unsigned LTRAicC2Given : 1; /* flag to ind. init. current at port 2 given */
|
||||
|
||||
#ifdef KLU
|
||||
BindElement *LTRAibr1Pos1StructPtr ;
|
||||
BindElement *LTRAibr1Neg1StructPtr ;
|
||||
BindElement *LTRAibr1Pos2StructPtr ;
|
||||
BindElement *LTRAibr1Neg2StructPtr ;
|
||||
BindElement *LTRAibr1Ibr1StructPtr ;
|
||||
BindElement *LTRAibr1Ibr2StructPtr ;
|
||||
BindElement *LTRAibr2Pos1StructPtr ;
|
||||
BindElement *LTRAibr2Neg1StructPtr ;
|
||||
BindElement *LTRAibr2Pos2StructPtr ;
|
||||
BindElement *LTRAibr2Neg2StructPtr ;
|
||||
BindElement *LTRAibr2Ibr1StructPtr ;
|
||||
BindElement *LTRAibr2Ibr2StructPtr ;
|
||||
BindElement *LTRApos1Ibr1StructPtr ;
|
||||
BindElement *LTRAneg1Ibr1StructPtr ;
|
||||
BindElement *LTRApos2Ibr2StructPtr ;
|
||||
BindElement *LTRAneg2Ibr2StructPtr ;
|
||||
BindElement *LTRApos1Pos1StructPtr ;
|
||||
BindElement *LTRAneg1Neg1StructPtr ;
|
||||
BindElement *LTRApos2Pos2StructPtr ;
|
||||
BindElement *LTRAneg2Neg2StructPtr ;
|
||||
#endif
|
||||
|
||||
} LTRAinstance ;
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue