New Binding Method extended to JFET2 device
This commit is contained in:
parent
5c7c978689
commit
f7effb3234
|
|
@ -1,5 +1,5 @@
|
|||
/**********
|
||||
Author: 2012 Francesco Lannutti
|
||||
Author: 2013 Francesco Lannutti
|
||||
**********/
|
||||
|
||||
#include "ngspice/ngspice.h"
|
||||
|
|
@ -7,220 +7,226 @@ Author: 2012 Francesco Lannutti
|
|||
#include "jfet2defs.h"
|
||||
#include "ngspice/sperror.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
static
|
||||
int
|
||||
JFET2bindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
BindCompare (const void *a, const void *b)
|
||||
{
|
||||
JFET2model *model = (JFET2model *)inModel;
|
||||
int i ;
|
||||
BindElement *A, *B ;
|
||||
A = (BindElement *)a ;
|
||||
B = (BindElement *)b ;
|
||||
|
||||
/* loop through all the jfet2 models */
|
||||
for( ; model != NULL; model = model->JFET2nextModel ) {
|
||||
JFET2instance *here;
|
||||
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->JFET2instances; here != NULL ;
|
||||
here = here->JFET2nextInstance) {
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2drainDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2drainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2gateDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2gateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2gateSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2gateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2sourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2sourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainNode != 0)) {
|
||||
while (here->JFET2drainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2drainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2gateNode != 0)) {
|
||||
while (here->JFET2drainPrimeGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2drainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2drainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2drainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2gateNode != 0)) {
|
||||
while (here->JFET2sourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2sourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourceNode != 0)) {
|
||||
while (here->JFET2sourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2sourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2sourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2sourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainNode != 0)) {
|
||||
while (here->JFET2drainDrainPtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2drainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2gateNode != 0)) {
|
||||
while (here->JFET2gateGatePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2gateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourceNode != 0)) {
|
||||
while (here->JFET2sourceSourcePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2sourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2drainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2drainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2sourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
here->JFET2sourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
return ((int)(A->Sparse - B->Sparse)) ;
|
||||
}
|
||||
|
||||
int
|
||||
JFET2bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
JFET2bindCSC (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
JFET2model *model = (JFET2model *)inModel;
|
||||
int i ;
|
||||
JFET2model *model = (JFET2model *)inModel ;
|
||||
JFET2instance *here ;
|
||||
double *i ;
|
||||
BindElement *matched, *BindStruct ;
|
||||
size_t nz ;
|
||||
|
||||
/* loop through all the jfet2 models */
|
||||
for( ; model != NULL; model = model->JFET2nextModel ) {
|
||||
JFET2instance *here;
|
||||
BindStruct = ckt->CKTmatrix->CKTbindStruct ;
|
||||
nz = (size_t)ckt->CKTmatrix->CKTklunz ;
|
||||
|
||||
/* loop through all the JFET2 models */
|
||||
for ( ; model != NULL ; model = model->JFET2nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->JFET2instances; here != NULL ;
|
||||
here = here->JFET2nextInstance) {
|
||||
for (here = model->JFET2instances ; here != NULL ; here = here->JFET2nextInstance)
|
||||
{
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainPrimeNode != 0))
|
||||
{
|
||||
i = here->JFET2drainDrainPrimePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2drainDrainPrimeStructPtr = matched ;
|
||||
here->JFET2drainDrainPrimePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2drainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2drainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2drainPrimeNode != 0))
|
||||
{
|
||||
i = here->JFET2gateDrainPrimePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2gateDrainPrimeStructPtr = matched ;
|
||||
here->JFET2gateDrainPrimePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2gateDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2gateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2sourcePrimeNode != 0))
|
||||
{
|
||||
i = here->JFET2gateSourcePrimePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2gateSourcePrimeStructPtr = matched ;
|
||||
here->JFET2gateSourcePrimePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2gateSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2gateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourcePrimeNode != 0))
|
||||
{
|
||||
i = here->JFET2sourceSourcePrimePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2sourceSourcePrimeStructPtr = matched ;
|
||||
here->JFET2sourceSourcePrimePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2sourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2sourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainNode != 0))
|
||||
{
|
||||
i = here->JFET2drainPrimeDrainPtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2drainPrimeDrainStructPtr = matched ;
|
||||
here->JFET2drainPrimeDrainPtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainNode != 0)) {
|
||||
while (here->JFET2drainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2drainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2gateNode != 0))
|
||||
{
|
||||
i = here->JFET2drainPrimeGatePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2drainPrimeGateStructPtr = matched ;
|
||||
here->JFET2drainPrimeGatePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2gateNode != 0)) {
|
||||
while (here->JFET2drainPrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2drainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2sourcePrimeNode != 0))
|
||||
{
|
||||
i = here->JFET2drainPrimeSourcePrimePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2drainPrimeSourcePrimeStructPtr = matched ;
|
||||
here->JFET2drainPrimeSourcePrimePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2drainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2drainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2gateNode != 0))
|
||||
{
|
||||
i = here->JFET2sourcePrimeGatePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2sourcePrimeGateStructPtr = matched ;
|
||||
here->JFET2sourcePrimeGatePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2gateNode != 0)) {
|
||||
while (here->JFET2sourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2sourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourceNode != 0))
|
||||
{
|
||||
i = here->JFET2sourcePrimeSourcePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2sourcePrimeSourceStructPtr = matched ;
|
||||
here->JFET2sourcePrimeSourcePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourceNode != 0)) {
|
||||
while (here->JFET2sourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2sourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2drainPrimeNode != 0))
|
||||
{
|
||||
i = here->JFET2sourcePrimeDrainPrimePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2sourcePrimeDrainPrimeStructPtr = matched ;
|
||||
here->JFET2sourcePrimeDrainPrimePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2sourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2sourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainNode != 0))
|
||||
{
|
||||
i = here->JFET2drainDrainPtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2drainDrainStructPtr = matched ;
|
||||
here->JFET2drainDrainPtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainNode != 0)) {
|
||||
while (here->JFET2drainDrainPtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2drainDrainPtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2gateNode != 0))
|
||||
{
|
||||
i = here->JFET2gateGatePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2gateGateStructPtr = matched ;
|
||||
here->JFET2gateGatePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2gateNode != 0)) {
|
||||
while (here->JFET2gateGatePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2gateGatePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourceNode != 0))
|
||||
{
|
||||
i = here->JFET2sourceSourcePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2sourceSourceStructPtr = matched ;
|
||||
here->JFET2sourceSourcePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourceNode != 0)) {
|
||||
while (here->JFET2sourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2sourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainPrimeNode != 0))
|
||||
{
|
||||
i = here->JFET2drainPrimeDrainPrimePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2drainPrimeDrainPrimeStructPtr = matched ;
|
||||
here->JFET2drainPrimeDrainPrimePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainPrimeNode != 0)) {
|
||||
while (here->JFET2drainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2drainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourcePrimeNode != 0))
|
||||
{
|
||||
i = here->JFET2sourcePrimeSourcePrimePtr ;
|
||||
matched = (BindElement *) bsearch (&i, BindStruct, nz, sizeof(BindElement), BindCompare) ;
|
||||
here->JFET2sourcePrimeSourcePrimeStructPtr = matched ;
|
||||
here->JFET2sourcePrimeSourcePrimePtr = matched->CSC ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourcePrimeNode != 0)) {
|
||||
while (here->JFET2sourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
here->JFET2sourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC_Complex [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
||||
int
|
||||
JFET2bindCSCComplex (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
JFET2model *model = (JFET2model *)inModel ;
|
||||
JFET2instance *here ;
|
||||
|
||||
NG_IGNORE (ckt) ;
|
||||
|
||||
/* loop through all the JFET2 models */
|
||||
for ( ; model != NULL ; model = model->JFET2nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->JFET2instances ; here != NULL ; here = here->JFET2nextInstance)
|
||||
{
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainPrimeNode != 0))
|
||||
here->JFET2drainDrainPrimePtr = here->JFET2drainDrainPrimeStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2drainPrimeNode != 0))
|
||||
here->JFET2gateDrainPrimePtr = here->JFET2gateDrainPrimeStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2sourcePrimeNode != 0))
|
||||
here->JFET2gateSourcePrimePtr = here->JFET2gateSourcePrimeStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourcePrimeNode != 0))
|
||||
here->JFET2sourceSourcePrimePtr = here->JFET2sourceSourcePrimeStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainNode != 0))
|
||||
here->JFET2drainPrimeDrainPtr = here->JFET2drainPrimeDrainStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2gateNode != 0))
|
||||
here->JFET2drainPrimeGatePtr = here->JFET2drainPrimeGateStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2sourcePrimeNode != 0))
|
||||
here->JFET2drainPrimeSourcePrimePtr = here->JFET2drainPrimeSourcePrimeStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2gateNode != 0))
|
||||
here->JFET2sourcePrimeGatePtr = here->JFET2sourcePrimeGateStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourceNode != 0))
|
||||
here->JFET2sourcePrimeSourcePtr = here->JFET2sourcePrimeSourceStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2drainPrimeNode != 0))
|
||||
here->JFET2sourcePrimeDrainPrimePtr = here->JFET2sourcePrimeDrainPrimeStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainNode != 0))
|
||||
here->JFET2drainDrainPtr = here->JFET2drainDrainStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2gateNode != 0))
|
||||
here->JFET2gateGatePtr = here->JFET2gateGateStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourceNode != 0))
|
||||
here->JFET2sourceSourcePtr = here->JFET2sourceSourceStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainPrimeNode != 0))
|
||||
here->JFET2drainPrimeDrainPrimePtr = here->JFET2drainPrimeDrainPrimeStructPtr->CSC_Complex ;
|
||||
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourcePrimeNode != 0))
|
||||
here->JFET2sourcePrimeSourcePrimePtr = here->JFET2sourcePrimeSourcePrimeStructPtr->CSC_Complex ;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
||||
int
|
||||
|
|
@ -228,79 +234,62 @@ JFET2bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
|||
{
|
||||
JFET2model *model = (JFET2model *)inModel ;
|
||||
JFET2instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the Jfet2 models */
|
||||
NG_IGNORE (ckt) ;
|
||||
|
||||
/* loop through all the JFET2 models */
|
||||
for ( ; model != NULL ; model = model->JFET2nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->JFET2instances ; here != NULL ; here = here->JFET2nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainPrimeNode != 0))
|
||||
{
|
||||
while (here->JFET2drainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFET2drainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
here->JFET2drainDrainPrimePtr = here->JFET2drainDrainPrimeStructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2drainPrimeNode != 0))
|
||||
{
|
||||
while (here->JFET2gateDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFET2gateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
here->JFET2gateDrainPrimePtr = here->JFET2gateDrainPrimeStructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2sourcePrimeNode != 0))
|
||||
{
|
||||
while (here->JFET2gateSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFET2gateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
here->JFET2gateSourcePrimePtr = here->JFET2gateSourcePrimeStructPtr->CSC ;
|
||||
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourcePrimeNode != 0))
|
||||
here->JFET2sourceSourcePrimePtr = here->JFET2sourceSourcePrimeStructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainNode != 0))
|
||||
{
|
||||
while (here->JFET2drainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFET2drainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
here->JFET2drainPrimeDrainPtr = here->JFET2drainPrimeDrainStructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2gateNode != 0))
|
||||
{
|
||||
while (here->JFET2drainPrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFET2drainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
here->JFET2drainPrimeGatePtr = here->JFET2drainPrimeGateStructPtr->CSC ;
|
||||
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2sourcePrimeNode != 0))
|
||||
here->JFET2drainPrimeSourcePrimePtr = here->JFET2drainPrimeSourcePrimeStructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2gateNode != 0))
|
||||
{
|
||||
while (here->JFET2sourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFET2sourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
here->JFET2sourcePrimeGatePtr = here->JFET2sourcePrimeGateStructPtr->CSC ;
|
||||
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourceNode != 0))
|
||||
here->JFET2sourcePrimeSourcePtr = here->JFET2sourcePrimeSourceStructPtr->CSC ;
|
||||
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2drainPrimeNode != 0))
|
||||
here->JFET2sourcePrimeDrainPrimePtr = here->JFET2sourcePrimeDrainPrimeStructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2drainNode != 0) && (here->JFET2drainNode != 0))
|
||||
{
|
||||
while (here->JFET2drainDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFET2drainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
here->JFET2drainDrainPtr = here->JFET2drainDrainStructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2gateNode != 0) && (here->JFET2gateNode != 0))
|
||||
{
|
||||
while (here->JFET2gateGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFET2gateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
here->JFET2gateGatePtr = here->JFET2gateGateStructPtr->CSC ;
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFET2sourceNode != 0) && (here->JFET2sourceNode != 0))
|
||||
{
|
||||
while (here->JFET2sourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFET2sourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
here->JFET2sourceSourcePtr = here->JFET2sourceSourceStructPtr->CSC ;
|
||||
|
||||
if ((here->JFET2drainPrimeNode != 0) && (here->JFET2drainPrimeNode != 0))
|
||||
here->JFET2drainPrimeDrainPrimePtr = here->JFET2drainPrimeDrainPrimeStructPtr->CSC ;
|
||||
|
||||
if ((here->JFET2sourcePrimeNode != 0) && (here->JFET2sourcePrimeNode != 0))
|
||||
here->JFET2sourcePrimeSourcePrimePtr = here->JFET2sourcePrimeSourcePrimeStructPtr->CSC ;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -155,6 +155,24 @@ typedef struct sJFET2instance {
|
|||
double JFET2d3; /* Dual Power-law parameter */
|
||||
double JFET2alpha; /* capacitance model transition parameter */
|
||||
|
||||
#ifdef KLU
|
||||
BindElement *JFET2drainDrainPrimeStructPtr ;
|
||||
BindElement *JFET2gateDrainPrimeStructPtr ;
|
||||
BindElement *JFET2gateSourcePrimeStructPtr ;
|
||||
BindElement *JFET2sourceSourcePrimeStructPtr ;
|
||||
BindElement *JFET2drainPrimeDrainStructPtr ;
|
||||
BindElement *JFET2drainPrimeGateStructPtr ;
|
||||
BindElement *JFET2drainPrimeSourcePrimeStructPtr ;
|
||||
BindElement *JFET2sourcePrimeGateStructPtr ;
|
||||
BindElement *JFET2sourcePrimeSourceStructPtr ;
|
||||
BindElement *JFET2sourcePrimeDrainPrimeStructPtr ;
|
||||
BindElement *JFET2drainDrainStructPtr ;
|
||||
BindElement *JFET2gateGateStructPtr ;
|
||||
BindElement *JFET2sourceSourceStructPtr ;
|
||||
BindElement *JFET2drainPrimeDrainPrimeStructPtr ;
|
||||
BindElement *JFET2sourcePrimeSourcePrimeStructPtr ;
|
||||
#endif
|
||||
|
||||
} JFET2instance ;
|
||||
|
||||
#define JFET2vgs JFET2state
|
||||
|
|
|
|||
|
|
@ -106,24 +106,18 @@ if((here->ptr = SMPmakeElt(matrix, here->first, here->second)) == NULL){\
|
|||
TSTALLOC(JFET2drainDrainPrimePtr,JFET2drainNode,JFET2drainPrimeNode)
|
||||
TSTALLOC(JFET2gateDrainPrimePtr,JFET2gateNode,JFET2drainPrimeNode)
|
||||
TSTALLOC(JFET2gateSourcePrimePtr,JFET2gateNode,JFET2sourcePrimeNode)
|
||||
TSTALLOC(JFET2sourceSourcePrimePtr,JFET2sourceNode,
|
||||
JFET2sourcePrimeNode)
|
||||
TSTALLOC(JFET2sourceSourcePrimePtr,JFET2sourceNode,JFET2sourcePrimeNode)
|
||||
TSTALLOC(JFET2drainPrimeDrainPtr,JFET2drainPrimeNode,JFET2drainNode)
|
||||
TSTALLOC(JFET2drainPrimeGatePtr,JFET2drainPrimeNode,JFET2gateNode)
|
||||
TSTALLOC(JFET2drainPrimeSourcePrimePtr,JFET2drainPrimeNode,
|
||||
JFET2sourcePrimeNode)
|
||||
TSTALLOC(JFET2drainPrimeSourcePrimePtr,JFET2drainPrimeNode,JFET2sourcePrimeNode)
|
||||
TSTALLOC(JFET2sourcePrimeGatePtr,JFET2sourcePrimeNode,JFET2gateNode)
|
||||
TSTALLOC(JFET2sourcePrimeSourcePtr,JFET2sourcePrimeNode,
|
||||
JFET2sourceNode)
|
||||
TSTALLOC(JFET2sourcePrimeDrainPrimePtr,JFET2sourcePrimeNode,
|
||||
JFET2drainPrimeNode)
|
||||
TSTALLOC(JFET2sourcePrimeSourcePtr,JFET2sourcePrimeNode,JFET2sourceNode)
|
||||
TSTALLOC(JFET2sourcePrimeDrainPrimePtr,JFET2sourcePrimeNode,JFET2drainPrimeNode)
|
||||
TSTALLOC(JFET2drainDrainPtr,JFET2drainNode,JFET2drainNode)
|
||||
TSTALLOC(JFET2gateGatePtr,JFET2gateNode,JFET2gateNode)
|
||||
TSTALLOC(JFET2sourceSourcePtr,JFET2sourceNode,JFET2sourceNode)
|
||||
TSTALLOC(JFET2drainPrimeDrainPrimePtr,JFET2drainPrimeNode,
|
||||
JFET2drainPrimeNode)
|
||||
TSTALLOC(JFET2sourcePrimeSourcePrimePtr,JFET2sourcePrimeNode,
|
||||
JFET2sourcePrimeNode)
|
||||
TSTALLOC(JFET2drainPrimeDrainPrimePtr,JFET2drainPrimeNode,JFET2drainPrimeNode)
|
||||
TSTALLOC(JFET2sourcePrimeSourcePrimePtr,JFET2sourcePrimeNode,JFET2sourcePrimeNode)
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
|
|
|||
Loading…
Reference in New Issue