Added a function called DEVbindCSCComplexToReal
in order to switch back from a Complex Matrix to a Real Matrix. This is useful inside the AC Analysis. BE CAREFUL that all the files involved in this change are generated automatically by a script! Added a flag that indicates if the matrix is Real or Complex Revisited AC Analysis using KLU. Now it's possible to have any sort of analysis in queue and all the jobs will be executed successfully. No more Segmentation Faults :) Removed the CSC Conversion from CKTop and moved to CKTsetup Solved some bugs in the KLU-SMP interface
This commit is contained in:
parent
9975d6f08a
commit
88ef8f71fb
264
ChangeLog
264
ChangeLog
|
|
@ -5423,6 +5423,270 @@
|
|||
Removed the PARALLEL_ARCH macro
|
||||
Removed the Combine algorithm from Sparse and Analyses
|
||||
|
||||
2012-08-11 Francesco Lannutti
|
||||
* src/include/ngspice/devdefs.h
|
||||
* src/include/ngspice/smpdefs.h
|
||||
* src/spicelib/devices/asrc/asrcinit.c
|
||||
* src/spicelib/devices/bjt/bjtbindCSC.c
|
||||
* src/spicelib/devices/bjt/bjtext.h
|
||||
* src/spicelib/devices/bjt/bjtinit.c
|
||||
* src/spicelib/devices/bsim1/b1bindCSC.c
|
||||
* src/spicelib/devices/bsim1/bsim1ext.h
|
||||
* src/spicelib/devices/bsim1/bsim1init.c
|
||||
* src/spicelib/devices/bsim2/b2bindCSC.c
|
||||
* src/spicelib/devices/bsim2/bsim2ext.h
|
||||
* src/spicelib/devices/bsim2/bsim2init.c
|
||||
* src/spicelib/devices/bsim3/b3bindCSC.c
|
||||
* src/spicelib/devices/bsim3/bsim3ext.h
|
||||
* src/spicelib/devices/bsim3/bsim3init.c
|
||||
* src/spicelib/devices/bsim3soi/b4soibindCSC.c
|
||||
* src/spicelib/devices/bsim3soi/b4soiext.h
|
||||
* src/spicelib/devices/bsim3soi/b4soiinit.c
|
||||
* src/spicelib/devices/bsim3soi_dd/b3soiddbindCSC.c
|
||||
* src/spicelib/devices/bsim3soi_dd/b3soiddext.h
|
||||
* src/spicelib/devices/bsim3soi_dd/b3soiddinit.c
|
||||
* src/spicelib/devices/bsim3soi_fd/b3soifdbindCSC.c
|
||||
* src/spicelib/devices/bjt/bjtinit.c
|
||||
* src/spicelib/devices/bsim1/b1bindCSC.c
|
||||
* src/spicelib/devices/bsim1/bsim1ext.h
|
||||
* src/spicelib/devices/bsim1/bsim1init.c
|
||||
* src/spicelib/devices/bsim2/b2bindCSC.c
|
||||
* src/spicelib/devices/bsim2/bsim2ext.h
|
||||
* src/spicelib/devices/bsim2/bsim2init.c
|
||||
* src/spicelib/devices/bsim3/b3bindCSC.c
|
||||
* src/spicelib/devices/bsim3/bsim3ext.h
|
||||
* src/spicelib/devices/bsim3/bsim3init.c
|
||||
* src/spicelib/devices/bsim3soi/b4soibindCSC.c
|
||||
* src/spicelib/devices/bsim3soi/b4soiext.h
|
||||
* src/spicelib/devices/bsim3soi/b4soiinit.c
|
||||
* src/spicelib/devices/bsim3soi_dd/b3soiddbindCSC.c
|
||||
* src/spicelib/devices/bsim3soi_dd/b3soiddext.h
|
||||
* src/spicelib/devices/bsim3soi_dd/b3soiddinit.c
|
||||
* src/spicelib/devices/bsim3soi_fd/b3soifdbindCSC.c
|
||||
* src/spicelib/devices/bsim3soi_fd/b3soifdext.h
|
||||
* src/spicelib/devices/bsim3soi_fd/b3soifdinit.c
|
||||
* src/spicelib/devices/bsim3soi_pd/b3soipdbindCSC.c
|
||||
* src/spicelib/devices/bsim3soi_pd/b3soipdext.h
|
||||
* src/spicelib/devices/bsim3soi_pd/b3soipdinit.c
|
||||
* src/spicelib/devices/bsim3v0/b3v0bindCSC.c
|
||||
* src/spicelib/devices/bsim3v0/bsim3v0ext.h
|
||||
* src/spicelib/devices/bsim3v0/bsim3v0init.c
|
||||
* src/spicelib/devices/bsim3v1/b3v1bindCSC.c
|
||||
* src/spicelib/devices/bsim3v1/bsim3v1ext.h
|
||||
* src/spicelib/devices/bsim3v1/bsim3v1init.c
|
||||
* src/spicelib/devices/bsim3v32/b3v32bindCSC.c
|
||||
* src/spicelib/devices/bsim3v32/bsim3v32ext.h
|
||||
* src/spicelib/devices/bsim3v32/bsim3v32init.c
|
||||
* src/spicelib/devices/bsim4/b4bindCSC.c
|
||||
* src/spicelib/devices/bsim4/bsim4ext.h
|
||||
* src/spicelib/devices/bsim4/bsim4init.c
|
||||
* src/spicelib/devices/bsim4v4/b4v4bindCSC.c
|
||||
* src/spicelib/devices/bsim3soi_fd/b3soifdinit.c
|
||||
* src/spicelib/devices/bsim3soi_pd/b3soipdbindCSC.c
|
||||
* src/spicelib/devices/bsim3soi_pd/b3soipdext.h
|
||||
* src/spicelib/devices/bsim3soi_pd/b3soipdinit.c
|
||||
* src/spicelib/devices/bsim3v0/b3v0bindCSC.c
|
||||
* src/spicelib/devices/bsim3v0/bsim3v0ext.h
|
||||
* src/spicelib/devices/bsim3v0/bsim3v0init.c
|
||||
* src/spicelib/devices/bsim3v1/b3v1bindCSC.c
|
||||
* src/spicelib/devices/bsim3v1/bsim3v1ext.h
|
||||
* src/spicelib/devices/bsim3v1/bsim3v1init.c
|
||||
* src/spicelib/devices/bsim3v32/b3v32bindCSC.c
|
||||
* src/spicelib/devices/bsim3v32/bsim3v32ext.h
|
||||
* src/spicelib/devices/bsim3v32/bsim3v32init.c
|
||||
* src/spicelib/devices/bsim4/b4bindCSC.c
|
||||
* src/spicelib/devices/bsim4/bsim4ext.h
|
||||
* src/spicelib/devices/bsim4/bsim4init.c
|
||||
* src/spicelib/devices/bsim4v4/b4v4bindCSC.c
|
||||
* src/spicelib/devices/bsim4v4/bsim4v4ext.h
|
||||
* src/spicelib/devices/bsim4v4/bsim4v4init.c
|
||||
* src/spicelib/devices/bsim4v5/b4v5bindCSC.c
|
||||
* src/spicelib/devices/bsim4v5/bsim4v5ext.h
|
||||
* src/spicelib/devices/bsim4v5/bsim4v5init.c
|
||||
* src/spicelib/devices/bsim4v6/b4v6bindCSC.c
|
||||
* src/spicelib/devices/bsim4v6/bsim4v6ext.h
|
||||
* src/spicelib/devices/bsim4v6/bsim4v6init.c
|
||||
* src/spicelib/devices/cap/capbindCSC.c
|
||||
* src/spicelib/devices/cap/capext.h
|
||||
* src/spicelib/devices/cap/capinit.c
|
||||
* src/spicelib/devices/cap/capload.c
|
||||
* src/spicelib/devices/cccs/cccsbindCSC.c
|
||||
* src/spicelib/devices/cccs/cccsext.h
|
||||
* src/spicelib/devices/cccs/cccsinit.c
|
||||
* src/spicelib/devices/ccvs/ccvsbindCSC.c
|
||||
* src/spicelib/devices/ccvs/ccvsext.h
|
||||
* src/spicelib/devices/ccvs/ccvsinit.c
|
||||
* src/spicelib/devices/bsim4v4/bsim4v4init.c
|
||||
* src/spicelib/devices/bsim4v5/b4v5bindCSC.c
|
||||
* src/spicelib/devices/bsim4v5/bsim4v5ext.h
|
||||
* src/spicelib/devices/bsim4v5/bsim4v5init.c
|
||||
* src/spicelib/devices/bsim4v6/b4v6bindCSC.c
|
||||
* src/spicelib/devices/bsim4v6/bsim4v6ext.h
|
||||
* src/spicelib/devices/bsim4v6/bsim4v6init.c
|
||||
* src/spicelib/devices/cap/capbindCSC.c
|
||||
* src/spicelib/devices/cap/capext.h
|
||||
* src/spicelib/devices/cap/capinit.c
|
||||
* src/spicelib/devices/cap/capload.c
|
||||
* src/spicelib/devices/cccs/cccsbindCSC.c
|
||||
* src/spicelib/devices/cccs/cccsext.h
|
||||
* src/spicelib/devices/cccs/cccsinit.c
|
||||
* src/spicelib/devices/ccvs/ccvsbindCSC.c
|
||||
* src/spicelib/devices/ccvs/ccvsext.h
|
||||
* src/spicelib/devices/ccvs/ccvsinit.c
|
||||
* src/spicelib/devices/cpl/cplinit.c
|
||||
* src/spicelib/devices/csw/cswbindCSC.c
|
||||
* src/spicelib/devices/csw/cswext.h
|
||||
* src/spicelib/devices/csw/cswinit.c
|
||||
* src/spicelib/devices/dio/diobindCSC.c
|
||||
* src/spicelib/devices/dio/dioext.h
|
||||
* src/spicelib/devices/dio/dioinit.c
|
||||
* src/spicelib/devices/hfet1/hfetbindCSC.c
|
||||
* src/spicelib/devices/hfet1/hfetext.h
|
||||
* src/spicelib/devices/hfet1/hfetinit.c
|
||||
* src/spicelib/devices/hfet2/hfet2bindCSC.c
|
||||
* src/spicelib/devices/hfet2/hfet2ext.h
|
||||
* src/spicelib/devices/hfet2/hfet2init.c
|
||||
* src/spicelib/devices/hisim2/hsm2bindCSC.c
|
||||
* src/spicelib/devices/hisim2/hsm2ext.h
|
||||
* src/spicelib/devices/hisim2/hsm2init.c
|
||||
* src/spicelib/devices/hisimhv/hsmhvbindCSC.c
|
||||
* src/spicelib/devices/hisimhv/hsmhvext.h
|
||||
* src/spicelib/devices/csw/cswbindCSC.c
|
||||
* src/spicelib/devices/csw/cswext.h
|
||||
* src/spicelib/devices/csw/cswinit.c
|
||||
* src/spicelib/devices/dio/diobindCSC.c
|
||||
* src/spicelib/devices/dio/dioext.h
|
||||
* src/spicelib/devices/dio/dioinit.c
|
||||
* src/spicelib/devices/hfet1/hfetbindCSC.c
|
||||
* src/spicelib/devices/hfet1/hfetext.h
|
||||
* src/spicelib/devices/hfet1/hfetinit.c
|
||||
* src/spicelib/devices/hfet2/hfet2bindCSC.c
|
||||
* src/spicelib/devices/hfet2/hfet2ext.h
|
||||
* src/spicelib/devices/hfet2/hfet2init.c
|
||||
* src/spicelib/devices/hisim2/hsm2bindCSC.c
|
||||
* src/spicelib/devices/hisim2/hsm2ext.h
|
||||
* src/spicelib/devices/hisim2/hsm2init.c
|
||||
* src/spicelib/devices/hisimhv/hsmhvbindCSC.c
|
||||
* src/spicelib/devices/hisimhv/hsmhvext.h
|
||||
* src/spicelib/devices/hisimhv/hsmhvinit.c
|
||||
* src/spicelib/devices/ind/indMUTbindCSC.c
|
||||
* src/spicelib/devices/ind/indext.h
|
||||
* src/spicelib/devices/ind/indinit.c
|
||||
* src/spicelib/devices/isrc/isrcinit.c
|
||||
* src/spicelib/devices/jfet/jfetbindCSC.c
|
||||
* src/spicelib/devices/jfet/jfetext.h
|
||||
* src/spicelib/devices/jfet/jfetinit.c
|
||||
* src/spicelib/devices/jfet2/jfet2bindCSC.c
|
||||
* src/spicelib/devices/jfet2/jfet2ext.h
|
||||
* src/spicelib/devices/jfet2/jfet2init.c
|
||||
* src/spicelib/devices/ltra/ltrabindCSC.c
|
||||
* src/spicelib/devices/ltra/ltraext.h
|
||||
* src/spicelib/devices/ltra/ltrainit.c
|
||||
* src/spicelib/devices/mes/mesbindCSC.c
|
||||
* src/spicelib/devices/mes/mesext.h
|
||||
* src/spicelib/devices/mes/mesinit.c
|
||||
* src/spicelib/devices/mesa/mesabindCSC.c
|
||||
* src/spicelib/devices/ind/indMUTbindCSC.c
|
||||
* src/spicelib/devices/ind/indext.h
|
||||
* src/spicelib/devices/ind/indinit.c
|
||||
* src/spicelib/devices/isrc/isrcinit.c
|
||||
* src/spicelib/devices/jfet/jfetbindCSC.c
|
||||
* src/spicelib/devices/jfet/jfetext.h
|
||||
* src/spicelib/devices/jfet/jfetinit.c
|
||||
* src/spicelib/devices/jfet2/jfet2bindCSC.c
|
||||
* src/spicelib/devices/jfet2/jfet2ext.h
|
||||
* src/spicelib/devices/jfet2/jfet2init.c
|
||||
* src/spicelib/devices/ltra/ltrabindCSC.c
|
||||
* src/spicelib/devices/ltra/ltraext.h
|
||||
* src/spicelib/devices/ltra/ltrainit.c
|
||||
* src/spicelib/devices/mes/mesbindCSC.c
|
||||
* src/spicelib/devices/mes/mesext.h
|
||||
* src/spicelib/devices/mes/mesinit.c
|
||||
* src/spicelib/devices/mesa/mesabindCSC.c
|
||||
* src/spicelib/devices/mesa/mesaext.h
|
||||
* src/spicelib/devices/mesa/mesainit.c
|
||||
* src/spicelib/devices/mos1/mos1bindCSC.c
|
||||
* src/spicelib/devices/mos1/mos1ext.h
|
||||
* src/spicelib/devices/mos1/mos1init.c
|
||||
* src/spicelib/devices/mos2/mos2bindCSC.c
|
||||
* src/spicelib/devices/mos2/mos2ext.h
|
||||
* src/spicelib/devices/mos2/mos2init.c
|
||||
* src/spicelib/devices/mos3/mos3bindCSC.c
|
||||
* src/spicelib/devices/mos3/mos3ext.h
|
||||
* src/spicelib/devices/mos3/mos3init.c
|
||||
* src/spicelib/devices/mos6/mos6bindCSC.c
|
||||
* src/spicelib/devices/mos6/mos6ext.h
|
||||
* src/spicelib/devices/mos6/mos6init.c
|
||||
* src/spicelib/devices/mos9/mos9bindCSC.c
|
||||
* src/spicelib/devices/mos9/mos9ext.h
|
||||
* src/spicelib/devices/mos9/mos9init.c
|
||||
* src/spicelib/devices/res/resbindCSC.c
|
||||
* src/spicelib/devices/mesa/mesainit.c
|
||||
* src/spicelib/devices/mos1/mos1bindCSC.c
|
||||
* src/spicelib/devices/mos1/mos1ext.h
|
||||
* src/spicelib/devices/mos1/mos1init.c
|
||||
* src/spicelib/devices/mos2/mos2bindCSC.c
|
||||
* src/spicelib/devices/mos2/mos2ext.h
|
||||
* src/spicelib/devices/mos2/mos2init.c
|
||||
* src/spicelib/devices/mos3/mos3bindCSC.c
|
||||
* src/spicelib/devices/mos3/mos3ext.h
|
||||
* src/spicelib/devices/mos3/mos3init.c
|
||||
* src/spicelib/devices/mos6/mos6bindCSC.c
|
||||
* src/spicelib/devices/mos6/mos6ext.h
|
||||
* src/spicelib/devices/mos6/mos6init.c
|
||||
* src/spicelib/devices/mos9/mos9bindCSC.c
|
||||
* src/spicelib/devices/mos9/mos9ext.h
|
||||
* src/spicelib/devices/mos9/mos9init.c
|
||||
* src/spicelib/devices/res/resbindCSC.c
|
||||
* src/spicelib/devices/res/resext.h
|
||||
* src/spicelib/devices/res/resinit.c
|
||||
* src/spicelib/devices/soi3/soi3bindCSC.c
|
||||
* src/spicelib/devices/soi3/soi3ext.h
|
||||
* src/spicelib/devices/soi3/soi3init.c
|
||||
* src/spicelib/devices/sw/swbindCSC.c
|
||||
* src/spicelib/devices/sw/swext.h
|
||||
* src/spicelib/devices/sw/swinit.c
|
||||
* src/spicelib/devices/tra/trabindCSC.c
|
||||
* src/spicelib/devices/tra/traext.h
|
||||
* src/spicelib/devices/tra/trainit.c
|
||||
* src/spicelib/devices/txl/txlbindCSC.c
|
||||
* src/spicelib/devices/txl/txlext.h
|
||||
* src/spicelib/devices/txl/txlinit.c
|
||||
* src/spicelib/devices/urc/urcinit.c
|
||||
* src/spicelib/devices/vbic/vbicbindCSC.c
|
||||
* src/spicelib/devices/vbic/vbicext.h
|
||||
* src/spicelib/devices/vbic/vbicinit.c
|
||||
* src/spicelib/devices/vccs/vccsbindCSC.c
|
||||
* src/spicelib/devices/vccs/vccsext.h
|
||||
* src/spicelib/devices/vccs/vccsinit.c
|
||||
* src/spicelib/devices/vcvs/vcvsbindCSC.c
|
||||
* src/spicelib/devices/vcvs/vcvsext.h
|
||||
* src/spicelib/devices/vcvs/vcvsinit.c
|
||||
* src/spicelib/devices/vsrc/vsrcbindCSC.c
|
||||
* src/spicelib/devices/vsrc/vsrcext.h
|
||||
* src/spicelib/devices/vsrc/vsrcinit.c
|
||||
Added a function called DEVbindCSCComplexToReal
|
||||
in order to switch back from a Complex Matrix
|
||||
to a Real Matrix. This is useful inside the
|
||||
AC Analysis. BE CAREFUL that all the files
|
||||
involved in this change are generated automatically
|
||||
by a script!
|
||||
Added a flag that indicates if the matrix is
|
||||
Real or Complex
|
||||
|
||||
* src/maths/KLU/klusmp.c
|
||||
* src/maths/ni/niinit.c
|
||||
* src/spicelib/analysis/acan.c
|
||||
* src/spicelib/analysis/cktop.c
|
||||
* src/spicelib/analysis/cktsetup.c
|
||||
Revisited AC Analysis using KLU. Now it's possible
|
||||
to have any sort of analysis in queue and all
|
||||
the jobs will be executed successfully. No more
|
||||
Segmentation Faults :)
|
||||
Removed the CSC Conversion from CKTop and moved
|
||||
to CKTsetup
|
||||
Solved some bugs in the KLU-SMP interface
|
||||
|
||||
2012-05-04 Francesco Lannutti
|
||||
* src/frontend/misccoms.c
|
||||
Added an hint about which solver has been compiled,
|
||||
|
|
|
|||
|
|
@ -102,8 +102,12 @@ typedef struct SPICEdev {
|
|||
int *DEVmodSize; /* size of a model */
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
int (*DEVbindCSC)(GENmodel*, CKTcircuit*);
|
||||
int (*DEVbindCSCComplex)(GENmodel*, CKTcircuit*);
|
||||
int (*DEVbindCSC)(GENmodel *, CKTcircuit *) ;
|
||||
/* routine to convert Sparse linked list to Real CSC array */
|
||||
int (*DEVbindCSCComplex)(GENmodel *, CKTcircuit *) ;
|
||||
/* routine to convert Real CSC array to Complex CSC array */
|
||||
int (*DEVbindCSCComplexToReal)(GENmodel *, CKTcircuit *) ;
|
||||
/* routine to convert Complex CSC array to Real CSC array */
|
||||
#endif
|
||||
|
||||
} SPICEdev; /* instance of structure for each possible type of device */
|
||||
|
|
|
|||
|
|
@ -35,17 +35,21 @@ struct SMPmatrix {
|
|||
klu_numeric *CKTkluNumeric ; /* KLU numeric object */
|
||||
int *CKTkluAp ; /* KLU column pointer */
|
||||
int *CKTkluAi ; /* KLU row pointer */
|
||||
double *CKTkluAx ; /* KLU element */
|
||||
double *CKTkluAx ; /* KLU Real Elements */
|
||||
double *CKTkluAx_Complex ; /* KLU Complex Elements */
|
||||
int CKTkluMatrixIsComplex ; /* KLU Matrix Is Complex Flag */
|
||||
#define CKTkluMatrixReal 0 /* KLU Matrix Real definition */
|
||||
#define CKTkluMatrixComplex 1 /* KLU Matrix Complex definition */
|
||||
double *CKTkluIntermediate ; /* KLU RHS Intermediate for Solve Real Step */
|
||||
double *CKTkluIntermediate_Complex ; /* KLU iRHS Intermediate for Solve Complex Step */
|
||||
double **CKTbind_Sparse ; /* KLU - Sparse original element position */
|
||||
double **CKTbind_CSC ; /* KLU - KLU new element position */
|
||||
double **CKTbind_CSC_Complex ; /* KLU - KLU new element position in Complex analysis */
|
||||
double **CKTdiag_CSC ; /* KLU pointer to diagonal element to perform Gmin */
|
||||
double **CKTbind_Sparse ; /* KLU Sparse original element position */
|
||||
double **CKTbind_CSC ; /* KLU new element position */
|
||||
double **CKTbind_CSC_Complex ; /* KLU new element position in Complex analysis */
|
||||
double **CKTdiag_CSC ; /* KLU pointer to diagonal element to perform Gmin */
|
||||
int CKTkluN ; /* KLU N, copied */
|
||||
int CKTklunz ; /* KLU nz, copied for AC Analysis */
|
||||
int CKTkluMODE ; /* KLU MODE parameter to enable KLU or not from the heuristic */
|
||||
#define CKTkluON 1 /* KLU MODE ON definition */
|
||||
#define CKTkluON 1 /* KLU MODE ON definition */
|
||||
#define CKTkluOFF 0 /* KLU MODE OFF definition */
|
||||
#elif defined(SuperLU)
|
||||
int *CKTsuperluAp ;
|
||||
|
|
|
|||
|
|
@ -158,10 +158,10 @@ SMPcClear (SMPmatrix *Matrix)
|
|||
if (Matrix->CKTkluMODE)
|
||||
{
|
||||
spClear (Matrix->SPmatrix) ;
|
||||
if (Matrix->CKTkluAx != NULL)
|
||||
if (Matrix->CKTkluAx_Complex != NULL)
|
||||
{
|
||||
for (i = 0 ; i < 2 * Matrix->CKTklunz ; i++)
|
||||
Matrix->CKTkluAx [i] = 0 ;
|
||||
Matrix->CKTkluAx_Complex [i] = 0 ;
|
||||
}
|
||||
} else {
|
||||
spClear (Matrix->SPmatrix) ;
|
||||
|
|
@ -206,7 +206,7 @@ SMPcLUfac (SMPmatrix *Matrix, double PivTol)
|
|||
if (Matrix->CKTkluMODE)
|
||||
{
|
||||
spSetComplex (Matrix->SPmatrix) ;
|
||||
ret = klu_z_refactor (Matrix->CKTkluAp, Matrix->CKTkluAi, Matrix->CKTkluAx,
|
||||
ret = klu_z_refactor (Matrix->CKTkluAp, Matrix->CKTkluAi, Matrix->CKTkluAx_Complex,
|
||||
Matrix->CKTkluSymbolic, Matrix->CKTkluNumeric, Matrix->CKTkluCommon) ;
|
||||
return (!ret) ;
|
||||
} else {
|
||||
|
|
@ -252,8 +252,14 @@ SMPcReorder (SMPmatrix *Matrix, double PivTol, double PivRel, int *NumSwaps)
|
|||
{
|
||||
*NumSwaps = 1 ;
|
||||
spSetComplex (Matrix->SPmatrix) ;
|
||||
klu_z_free_numeric (&(Matrix->CKTkluNumeric), Matrix->CKTkluCommon) ;
|
||||
Matrix->CKTkluNumeric = klu_z_factor (Matrix->CKTkluAp, Matrix->CKTkluAi, Matrix->CKTkluAx, Matrix->CKTkluSymbolic, Matrix->CKTkluCommon) ;
|
||||
|
||||
if (Matrix->CKTkluNumeric != NULL)
|
||||
{
|
||||
klu_z_free_numeric (&(Matrix->CKTkluNumeric), Matrix->CKTkluCommon) ;
|
||||
Matrix->CKTkluNumeric = klu_z_factor (Matrix->CKTkluAp, Matrix->CKTkluAi, Matrix->CKTkluAx_Complex, Matrix->CKTkluSymbolic, Matrix->CKTkluCommon) ;
|
||||
} else
|
||||
Matrix->CKTkluNumeric = klu_z_factor (Matrix->CKTkluAp, Matrix->CKTkluAi, Matrix->CKTkluAx_Complex, Matrix->CKTkluSymbolic, Matrix->CKTkluCommon) ;
|
||||
|
||||
if (Matrix->CKTkluNumeric == NULL)
|
||||
return 1 ;
|
||||
else
|
||||
|
|
@ -281,9 +287,8 @@ SMPreorder (SMPmatrix *Matrix, double PivTol, double PivRel, double Gmin)
|
|||
{
|
||||
klu_free_numeric (&(Matrix->CKTkluNumeric), Matrix->CKTkluCommon) ;
|
||||
Matrix->CKTkluNumeric = klu_factor (Matrix->CKTkluAp, Matrix->CKTkluAi, Matrix->CKTkluAx, Matrix->CKTkluSymbolic, Matrix->CKTkluCommon) ;
|
||||
} else {
|
||||
} else
|
||||
Matrix->CKTkluNumeric = klu_factor (Matrix->CKTkluAp, Matrix->CKTkluAi, Matrix->CKTkluAx, Matrix->CKTkluSymbolic, Matrix->CKTkluCommon) ;
|
||||
}
|
||||
|
||||
if (Matrix->CKTkluNumeric == NULL)
|
||||
return 1 ;
|
||||
|
|
@ -326,17 +331,17 @@ SMPcSolve (SMPmatrix *Matrix, double RHS[], double iRHS[], double Spare[], doubl
|
|||
pExtOrder = &Matrix->SPmatrix->IntToExtRowMap [Matrix->CKTkluN] ;
|
||||
for (i = 2 * Matrix->CKTkluN - 1 ; i > 0 ; i -= 2)
|
||||
{
|
||||
Matrix->CKTkluIntermediate [i] = RHS [*(pExtOrder)] ;
|
||||
Matrix->CKTkluIntermediate [i - 1] = iRHS [*(pExtOrder--)] ;
|
||||
Matrix->CKTkluIntermediate_Complex [i] = RHS [*(pExtOrder)] ;
|
||||
Matrix->CKTkluIntermediate_Complex [i - 1] = iRHS [*(pExtOrder--)] ;
|
||||
}
|
||||
|
||||
ret = klu_z_solve (Matrix->CKTkluSymbolic, Matrix->CKTkluNumeric, Matrix->CKTkluN, 1, Matrix->CKTkluIntermediate, Matrix->CKTkluCommon) ;
|
||||
ret = klu_z_solve (Matrix->CKTkluSymbolic, Matrix->CKTkluNumeric, Matrix->CKTkluN, 1, Matrix->CKTkluIntermediate_Complex, Matrix->CKTkluCommon) ;
|
||||
|
||||
pExtOrder = &Matrix->SPmatrix->IntToExtColMap [Matrix->CKTkluN] ;
|
||||
for (i = 2 * Matrix->CKTkluN - 1 ; i > 0 ; i -= 2)
|
||||
{
|
||||
RHS [*(pExtOrder)] = Matrix->CKTkluIntermediate [i] ;
|
||||
iRHS [*(pExtOrder--)] = Matrix->CKTkluIntermediate [i - 1] ;
|
||||
RHS [*(pExtOrder)] = Matrix->CKTkluIntermediate_Complex [i] ;
|
||||
iRHS [*(pExtOrder--)] = Matrix->CKTkluIntermediate_Complex [i - 1] ;
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
@ -455,7 +460,13 @@ SMPprint (SMPmatrix *Matrix, FILE *File)
|
|||
void
|
||||
SMPgetError (SMPmatrix *Matrix, int *Col, int *Row)
|
||||
{
|
||||
spWhereSingular (Matrix->SPmatrix, Row, Col) ;
|
||||
if (Matrix->CKTkluMODE)
|
||||
{
|
||||
*Row = Matrix->SPmatrix->IntToExtRowMap [Matrix->CKTkluCommon->singular_col] ;
|
||||
*Col = Matrix->SPmatrix->IntToExtColMap [Matrix->CKTkluCommon->singular_col] ;
|
||||
} else {
|
||||
spWhereSingular (Matrix->SPmatrix, Row, Col) ;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ NIinit(CKTcircuit *ckt)
|
|||
int Error;
|
||||
#endif /* SPARSE */
|
||||
|
||||
/* Allocation of the new SMPmatrix structure - Francesco Lannuti (2012-02) */
|
||||
/* Allocation of the new SMPmatrix structure - Francesco Lannutti (2012-02) */
|
||||
ckt->CKTmatrix = TMALLOC (SMPmatrix, 1) ;
|
||||
|
||||
#if defined(KLU)
|
||||
|
|
@ -38,6 +38,7 @@ NIinit(CKTcircuit *ckt)
|
|||
ckt->CKTmatrix->CKTkluAp = NULL ;
|
||||
ckt->CKTmatrix->CKTkluAi = NULL ;
|
||||
ckt->CKTmatrix->CKTkluAx = NULL ;
|
||||
ckt->CKTmatrix->CKTkluMatrixIsComplex = CKTkluMatrixReal ;
|
||||
ckt->CKTmatrix->CKTkluIntermediate = NULL ;
|
||||
ckt->CKTmatrix->CKTkluIntermediate_Complex = NULL ;
|
||||
ckt->CKTmatrix->CKTbind_Sparse = NULL ;
|
||||
|
|
|
|||
|
|
@ -243,24 +243,29 @@ ACan(CKTcircuit *ckt, int restart)
|
|||
ckt->CKTcurrentAnalysis = DOING_AC;
|
||||
|
||||
#ifdef KLU
|
||||
if (ckt->CKTmatrix->CKTkluMODE) {
|
||||
int i, m;
|
||||
double *temp;
|
||||
temp = TMALLOC (double, 2 * ckt->CKTmatrix->CKTklunz) ;
|
||||
ckt->CKTmatrix->CKTbind_CSC_Complex = TMALLOC (double *, ckt->CKTmatrix->CKTklunz) ;
|
||||
ckt->CKTmatrix->CKTkluIntermediate_Complex = TMALLOC (double, 2 * ckt->CKTmatrix->CKTkluN) ;
|
||||
m = 0;
|
||||
for (i = 0 ; i < ckt->CKTmatrix->CKTklunz ; i++) {
|
||||
ckt->CKTmatrix->CKTbind_CSC_Complex [i] = &(temp [m]) ;
|
||||
m += 2;
|
||||
int i, m ;
|
||||
|
||||
if (ckt->CKTmatrix->CKTkluMODE)
|
||||
{
|
||||
if (!ckt->CKTmatrix->CKTkluMatrixIsComplex)
|
||||
{
|
||||
ckt->CKTmatrix->CKTkluAx_Complex = TMALLOC (double, 2 * ckt->CKTmatrix->CKTklunz) ;
|
||||
ckt->CKTmatrix->CKTbind_CSC_Complex = TMALLOC (double *, ckt->CKTmatrix->CKTklunz) ;
|
||||
ckt->CKTmatrix->CKTkluIntermediate_Complex = TMALLOC (double, 2 * ckt->CKTmatrix->CKTkluN) ;
|
||||
|
||||
m = 0 ;
|
||||
for (i = 0 ; i < ckt->CKTmatrix->CKTklunz ; i++)
|
||||
{
|
||||
ckt->CKTmatrix->CKTbind_CSC_Complex [i] = &(ckt->CKTmatrix->CKTkluAx_Complex [m]) ;
|
||||
m += 2 ;
|
||||
}
|
||||
|
||||
for (i = 0 ; i < DEVmaxnum ; i++)
|
||||
if (DEVices [i] && DEVices [i]->DEVbindCSCComplex)
|
||||
DEVices [i]->DEVbindCSCComplex (ckt->CKThead [i], ckt) ;
|
||||
|
||||
ckt->CKTmatrix->CKTkluMatrixIsComplex = CKTkluMatrixComplex ;
|
||||
}
|
||||
|
||||
for (i = 0 ; i < DEVmaxnum ; i++)
|
||||
if (DEVices [i] && DEVices [i]->DEVbindCSCComplex)
|
||||
DEVices [i]->DEVbindCSCComplex (ckt->CKThead [i], ckt) ;
|
||||
|
||||
free (ckt->CKTmatrix->CKTkluAx) ;
|
||||
ckt->CKTmatrix->CKTkluAx = temp ;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -275,6 +280,19 @@ ACan(CKTcircuit *ckt, int restart)
|
|||
|
||||
/* Update opertating point, if variable 'hertz' is given */
|
||||
if (ckt->CKTvarHertz) {
|
||||
|
||||
#ifdef KLU
|
||||
if (ckt->CKTmatrix->CKTkluMODE)
|
||||
{
|
||||
/* Conversion from Complex Matrix to Real Matrix */
|
||||
for (i = 0 ; i < DEVmaxnum ; i++)
|
||||
if (DEVices [i] && DEVices [i]->DEVbindCSCComplexToReal)
|
||||
DEVices [i]->DEVbindCSCComplexToReal (ckt->CKThead [i], ckt) ;
|
||||
|
||||
ckt->CKTmatrix->CKTkluMatrixIsComplex = CKTkluMatrixReal ;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef XSPICE
|
||||
/* Call EVTop if event-driven instances exist */
|
||||
|
||||
|
|
@ -286,8 +304,7 @@ ACan(CKTcircuit *ckt, int restart)
|
|||
MIF_TRUE);
|
||||
EVTdump(ckt, IPC_ANAL_DCOP, 0.0);
|
||||
EVTop_save(ckt, MIF_TRUE, 0.0);
|
||||
}
|
||||
else
|
||||
} else
|
||||
#endif
|
||||
// If no event-driven instances, do what SPICE normally does
|
||||
error = CKTop(ckt,
|
||||
|
|
@ -303,6 +320,19 @@ ACan(CKTcircuit *ckt, int restart)
|
|||
ckt->CKTmode = (ckt->CKTmode & MODEUIC) | MODEDCOP | MODEINITSMSIG;
|
||||
error = CKTload(ckt);
|
||||
if(error) return(error);
|
||||
|
||||
#ifdef KLU
|
||||
if (ckt->CKTmatrix->CKTkluMODE)
|
||||
{
|
||||
/* Conversion from Real Matrix to Complex Matrix */
|
||||
for (i = 0 ; i < DEVmaxnum ; i++)
|
||||
if (DEVices [i] && DEVices [i]->DEVbindCSCComplex)
|
||||
DEVices [i]->DEVbindCSCComplex (ckt->CKThead [i], ckt) ;
|
||||
|
||||
ckt->CKTmatrix->CKTkluMatrixIsComplex = CKTkluMatrixComplex ;
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
ckt->CKTmode = (ckt->CKTmode&MODEUIC) | MODEAC;
|
||||
|
|
@ -402,6 +432,19 @@ endsweep:
|
|||
SPfrontEnd->OUTendPlot (acPlot);
|
||||
acPlot = NULL;
|
||||
UPDATE_STATS(0);
|
||||
|
||||
#ifdef KLU
|
||||
if (ckt->CKTmatrix->CKTkluMODE)
|
||||
{
|
||||
/* Conversion from Complex Matrix to Real Matrix */
|
||||
for (i = 0 ; i < DEVmaxnum ; i++)
|
||||
if (DEVices [i] && DEVices [i]->DEVbindCSCComplexToReal)
|
||||
DEVices [i]->DEVbindCSCComplexToReal (ckt->CKThead [i], ckt) ;
|
||||
|
||||
ckt->CKTmatrix->CKTkluMatrixIsComplex = CKTkluMatrixReal ;
|
||||
}
|
||||
#endif
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,91 +27,6 @@ CKTop (CKTcircuit * ckt, long int firstmode, long int continuemode,
|
|||
#endif
|
||||
ckt->CKTmode = firstmode;
|
||||
|
||||
#if defined(KLU)
|
||||
if (ckt->CKTmatrix->CKTkluMODE) {
|
||||
|
||||
int i ;
|
||||
int n = ckt->CKTmatrix->CKTkluN ;
|
||||
int nz = ckt->CKTmatrix->CKTklunz ;
|
||||
|
||||
ckt->CKTmatrix->CKTkluAp = TMALLOC (int, n + 1) ;
|
||||
ckt->CKTmatrix->CKTkluAi = TMALLOC (int, nz) ;
|
||||
ckt->CKTmatrix->CKTkluAx = TMALLOC (double, nz) ;
|
||||
ckt->CKTmatrix->CKTkluIntermediate = TMALLOC (double, n ) ;
|
||||
|
||||
ckt->CKTmatrix->CKTbind_Sparse = TMALLOC (double *, nz) ;
|
||||
ckt->CKTmatrix->CKTbind_CSC = TMALLOC (double *, nz) ;
|
||||
|
||||
ckt->CKTmatrix->CKTdiag_CSC = TMALLOC (double *, n) ;
|
||||
|
||||
SMPmatrix_CSC (ckt->CKTmatrix) ;
|
||||
|
||||
for (i = 0 ; i < DEVmaxnum ; i++)
|
||||
if (DEVices [i] && DEVices [i]->DEVbindCSC)
|
||||
DEVices [i]->DEVbindCSC (ckt->CKThead [i], ckt) ;
|
||||
}
|
||||
#elif defined(SuperLU)
|
||||
if (ckt->CKTmatrix->CKTsuperluMODE)
|
||||
{
|
||||
int i ;
|
||||
int n = ckt->CKTmatrix->CKTsuperluN ;
|
||||
int nz = ckt->CKTmatrix->CKTsuperlunz ;
|
||||
|
||||
ckt->CKTmatrix->CKTsuperluAp = TMALLOC (int, n + 1) ;
|
||||
ckt->CKTmatrix->CKTsuperluAi = TMALLOC (int, nz) ;
|
||||
ckt->CKTmatrix->CKTsuperluAx = TMALLOC (double, nz) ;
|
||||
ckt->CKTmatrix->CKTsuperluPerm_c = TMALLOC (int, n) ;
|
||||
ckt->CKTmatrix->CKTsuperluPerm_r = TMALLOC (int, n) ;
|
||||
ckt->CKTmatrix->CKTsuperluEtree = TMALLOC (int, n) ;
|
||||
|
||||
ckt->CKTmatrix->CKTsuperluIntermediate = TMALLOC (double, n) ;
|
||||
|
||||
ckt->CKTmatrix->CKTbind_Sparse = TMALLOC (double *, nz) ;
|
||||
ckt->CKTmatrix->CKTbind_CSC = TMALLOC (double *, nz) ;
|
||||
|
||||
ckt->CKTmatrix->CKTdiag_CSC = TMALLOC (double *, n) ;
|
||||
|
||||
SMPmatrix_CSC (ckt->CKTmatrix) ;
|
||||
|
||||
dCreate_CompCol_Matrix (&(ckt->CKTmatrix->CKTsuperluA), n, n, nz, ckt->CKTmatrix->CKTsuperluAx,
|
||||
ckt->CKTmatrix->CKTsuperluAi, ckt->CKTmatrix->CKTsuperluAp, SLU_NC, SLU_D, SLU_GE) ;
|
||||
dCreate_Dense_Matrix (&(ckt->CKTmatrix->CKTsuperluI), n, 1, ckt->CKTmatrix->CKTsuperluIntermediate,
|
||||
n, SLU_DN, SLU_D, SLU_GE) ;
|
||||
StatInit (&(ckt->CKTmatrix->CKTsuperluStat)) ;
|
||||
|
||||
for (i = 0 ; i < DEVmaxnum ; i++)
|
||||
if (DEVices [i] && DEVices [i]->DEVbindCSC)
|
||||
DEVices [i]->DEVbindCSC (ckt->CKThead [i], ckt) ;
|
||||
}
|
||||
#elif defined(UMFPACK)
|
||||
if (ckt->CKTmatrix->CKTumfpackMODE)
|
||||
{
|
||||
int i ;
|
||||
int n = ckt->CKTmatrix->CKTumfpackN ;
|
||||
int nz = ckt->CKTmatrix->CKTumfpacknz ;
|
||||
ckt->CKTmatrix->CKTumfpackAp = TMALLOC (int, n + 1) ;
|
||||
ckt->CKTmatrix->CKTumfpackAi = TMALLOC (int, nz) ;
|
||||
ckt->CKTmatrix->CKTumfpackAx = TMALLOC (double, nz) ;
|
||||
ckt->CKTmatrix->CKTumfpackControl = TMALLOC (double, UMFPACK_CONTROL) ;
|
||||
ckt->CKTmatrix->CKTumfpackInfo = TMALLOC (double, UMFPACK_INFO) ;
|
||||
|
||||
ckt->CKTmatrix->CKTumfpackIntermediate = TMALLOC (double, n) ;
|
||||
|
||||
ckt->CKTmatrix->CKTumfpackX = TMALLOC (double, n) ;
|
||||
|
||||
ckt->CKTmatrix->CKTbind_Sparse = TMALLOC (double *, nz) ;
|
||||
ckt->CKTmatrix->CKTbind_CSC = TMALLOC (double *, nz) ;
|
||||
|
||||
ckt->CKTmatrix->CKTdiag_CSC = TMALLOC (double *, n) ;
|
||||
|
||||
SMPmatrix_CSC (ckt->CKTmatrix) ;
|
||||
|
||||
for (i = 0 ; i < DEVmaxnum ; i++)
|
||||
if (DEVices [i] && DEVices [i]->DEVbindCSC)
|
||||
DEVices [i]->DEVbindCSC (ckt->CKThead [i], ckt) ;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (!ckt->CKTnoOpIter){
|
||||
#ifdef XSPICE
|
||||
/* gtri - begin - wbk - add convergence problem reporting flags */
|
||||
|
|
|
|||
|
|
@ -89,6 +89,93 @@ CKTsetup(CKTcircuit *ckt)
|
|||
SMPnnz (ckt->CKTmatrix) ;
|
||||
#endif
|
||||
|
||||
#if defined(KLU)
|
||||
if (ckt->CKTmatrix->CKTkluMODE)
|
||||
{
|
||||
int i ;
|
||||
int n = ckt->CKTmatrix->CKTkluN ;
|
||||
int nz = ckt->CKTmatrix->CKTklunz ;
|
||||
|
||||
ckt->CKTmatrix->CKTkluAp = TMALLOC (int, n + 1) ;
|
||||
ckt->CKTmatrix->CKTkluAi = TMALLOC (int, nz) ;
|
||||
ckt->CKTmatrix->CKTkluAx = TMALLOC (double, nz) ;
|
||||
ckt->CKTmatrix->CKTkluIntermediate = TMALLOC (double, n ) ;
|
||||
|
||||
ckt->CKTmatrix->CKTbind_Sparse = TMALLOC (double *, nz) ;
|
||||
ckt->CKTmatrix->CKTbind_CSC = TMALLOC (double *, nz) ;
|
||||
|
||||
ckt->CKTmatrix->CKTdiag_CSC = TMALLOC (double *, n) ;
|
||||
|
||||
SMPmatrix_CSC (ckt->CKTmatrix) ;
|
||||
|
||||
for (i = 0 ; i < DEVmaxnum ; i++)
|
||||
if (DEVices [i] && DEVices [i]->DEVbindCSC)
|
||||
DEVices [i]->DEVbindCSC (ckt->CKThead [i], ckt) ;
|
||||
|
||||
ckt->CKTmatrix->CKTkluMatrixIsComplex = CKTkluMatrixReal ;
|
||||
}
|
||||
#elif defined(SuperLU)
|
||||
if (ckt->CKTmatrix->CKTsuperluMODE)
|
||||
{
|
||||
int i ;
|
||||
int n = ckt->CKTmatrix->CKTsuperluN ;
|
||||
int nz = ckt->CKTmatrix->CKTsuperlunz ;
|
||||
|
||||
ckt->CKTmatrix->CKTsuperluAp = TMALLOC (int, n + 1) ;
|
||||
ckt->CKTmatrix->CKTsuperluAi = TMALLOC (int, nz) ;
|
||||
ckt->CKTmatrix->CKTsuperluAx = TMALLOC (double, nz) ;
|
||||
ckt->CKTmatrix->CKTsuperluPerm_c = TMALLOC (int, n) ;
|
||||
ckt->CKTmatrix->CKTsuperluPerm_r = TMALLOC (int, n) ;
|
||||
ckt->CKTmatrix->CKTsuperluEtree = TMALLOC (int, n) ;
|
||||
|
||||
ckt->CKTmatrix->CKTsuperluIntermediate = TMALLOC (double, n) ;
|
||||
|
||||
ckt->CKTmatrix->CKTbind_Sparse = TMALLOC (double *, nz) ;
|
||||
ckt->CKTmatrix->CKTbind_CSC = TMALLOC (double *, nz) ;
|
||||
|
||||
ckt->CKTmatrix->CKTdiag_CSC = TMALLOC (double *, n) ;
|
||||
|
||||
SMPmatrix_CSC (ckt->CKTmatrix) ;
|
||||
|
||||
dCreate_CompCol_Matrix (&(ckt->CKTmatrix->CKTsuperluA), n, n, nz, ckt->CKTmatrix->CKTsuperluAx,
|
||||
ckt->CKTmatrix->CKTsuperluAi, ckt->CKTmatrix->CKTsuperluAp, SLU_NC, SLU_D, SLU_GE) ;
|
||||
dCreate_Dense_Matrix (&(ckt->CKTmatrix->CKTsuperluI), n, 1, ckt->CKTmatrix->CKTsuperluIntermediate,
|
||||
n, SLU_DN, SLU_D, SLU_GE) ;
|
||||
StatInit (&(ckt->CKTmatrix->CKTsuperluStat)) ;
|
||||
|
||||
for (i = 0 ; i < DEVmaxnum ; i++)
|
||||
if (DEVices [i] && DEVices [i]->DEVbindCSC)
|
||||
DEVices [i]->DEVbindCSC (ckt->CKThead [i], ckt) ;
|
||||
}
|
||||
#elif defined(UMFPACK)
|
||||
if (ckt->CKTmatrix->CKTumfpackMODE)
|
||||
{
|
||||
int i ;
|
||||
int n = ckt->CKTmatrix->CKTumfpackN ;
|
||||
int nz = ckt->CKTmatrix->CKTumfpacknz ;
|
||||
ckt->CKTmatrix->CKTumfpackAp = TMALLOC (int, n + 1) ;
|
||||
ckt->CKTmatrix->CKTumfpackAi = TMALLOC (int, nz) ;
|
||||
ckt->CKTmatrix->CKTumfpackAx = TMALLOC (double, nz) ;
|
||||
ckt->CKTmatrix->CKTumfpackControl = TMALLOC (double, UMFPACK_CONTROL) ;
|
||||
ckt->CKTmatrix->CKTumfpackInfo = TMALLOC (double, UMFPACK_INFO) ;
|
||||
|
||||
ckt->CKTmatrix->CKTumfpackIntermediate = TMALLOC (double, n) ;
|
||||
|
||||
ckt->CKTmatrix->CKTumfpackX = TMALLOC (double, n) ;
|
||||
|
||||
ckt->CKTmatrix->CKTbind_Sparse = TMALLOC (double *, nz) ;
|
||||
ckt->CKTmatrix->CKTbind_CSC = TMALLOC (double *, nz) ;
|
||||
|
||||
ckt->CKTmatrix->CKTdiag_CSC = TMALLOC (double *, n) ;
|
||||
|
||||
SMPmatrix_CSC (ckt->CKTmatrix) ;
|
||||
|
||||
for (i = 0 ; i < DEVmaxnum ; i++)
|
||||
if (DEVices [i] && DEVices [i]->DEVbindCSC)
|
||||
DEVices [i]->DEVbindCSC (ckt->CKThead [i], ckt) ;
|
||||
}
|
||||
#endif
|
||||
|
||||
for(i=0;i<=MAX(2,ckt->CKTmaxOrder)+1;i++) { /* dctran needs 3 states as minimum */
|
||||
CKALLOC(ckt->CKTstates[i],ckt->CKTnumStates,double);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@ SPICEdev ASRCinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ NULL,
|
||||
/* DEVbindCSCComplex */ NULL,
|
||||
/* DEVbindCSCComplexToReal */ NULL,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -334,3 +334,182 @@ BJTbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BJTbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BJTmodel *model = (BJTmodel *)inModel ;
|
||||
BJTinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bjt models */
|
||||
for ( ; model != NULL ; model = model->BJTnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BJTinstances ; here != NULL ; here = here->BJTnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->BJTcolNode != 0) && (here->BJTcolPrimeNode != 0))
|
||||
{
|
||||
while (here->BJTcolColPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTcolColPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbaseNode != 0) && (here->BJTbasePrimeNode != 0))
|
||||
{
|
||||
while (here->BJTbaseBasePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTbaseBasePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitNode != 0) && (here->BJTemitPrimeNode != 0))
|
||||
{
|
||||
while (here->BJTemitEmitPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTemitEmitPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTcolNode != 0))
|
||||
{
|
||||
while (here->BJTcolPrimeColPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTcolPrimeColPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTbasePrimeNode != 0))
|
||||
{
|
||||
while (here->BJTcolPrimeBasePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTcolPrimeBasePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTemitPrimeNode != 0))
|
||||
{
|
||||
while (here->BJTcolPrimeEmitPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTcolPrimeEmitPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbasePrimeNode != 0) && (here->BJTbaseNode != 0))
|
||||
{
|
||||
while (here->BJTbasePrimeBasePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTbasePrimeBasePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbasePrimeNode != 0) && (here->BJTcolPrimeNode != 0))
|
||||
{
|
||||
while (here->BJTbasePrimeColPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTbasePrimeColPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbasePrimeNode != 0) && (here->BJTemitPrimeNode != 0))
|
||||
{
|
||||
while (here->BJTbasePrimeEmitPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTbasePrimeEmitPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitPrimeNode != 0) && (here->BJTemitNode != 0))
|
||||
{
|
||||
while (here->BJTemitPrimeEmitPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTemitPrimeEmitPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitPrimeNode != 0) && (here->BJTcolPrimeNode != 0))
|
||||
{
|
||||
while (here->BJTemitPrimeColPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTemitPrimeColPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitPrimeNode != 0) && (here->BJTbasePrimeNode != 0))
|
||||
{
|
||||
while (here->BJTemitPrimeBasePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTemitPrimeBasePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolNode != 0) && (here->BJTcolNode != 0))
|
||||
{
|
||||
while (here->BJTcolColPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTcolColPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbaseNode != 0) && (here->BJTbaseNode != 0))
|
||||
{
|
||||
while (here->BJTbaseBasePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTbaseBasePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitNode != 0) && (here->BJTemitNode != 0))
|
||||
{
|
||||
while (here->BJTemitEmitPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTemitEmitPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTcolPrimeNode != 0))
|
||||
{
|
||||
while (here->BJTcolPrimeColPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTcolPrimeColPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbasePrimeNode != 0) && (here->BJTbasePrimeNode != 0))
|
||||
{
|
||||
while (here->BJTbasePrimeBasePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTbasePrimeBasePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTemitPrimeNode != 0) && (here->BJTemitPrimeNode != 0))
|
||||
{
|
||||
while (here->BJTemitPrimeEmitPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTemitPrimeEmitPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTsubstNode != 0) && (here->BJTsubstNode != 0))
|
||||
{
|
||||
while (here->BJTsubstSubstPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTsubstSubstPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTsubstConNode != 0) && (here->BJTsubstNode != 0))
|
||||
{
|
||||
while (here->BJTsubstConSubstPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTsubstConSubstPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTsubstNode != 0) && (here->BJTsubstConNode != 0))
|
||||
{
|
||||
while (here->BJTsubstSubstConPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTsubstSubstConPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTbaseNode != 0) && (here->BJTcolPrimeNode != 0))
|
||||
{
|
||||
while (here->BJTbaseColPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTbaseColPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BJTcolPrimeNode != 0) && (here->BJTbaseNode != 0))
|
||||
{
|
||||
while (here->BJTcolPrimeBasePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BJTcolPrimeBasePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -35,6 +35,7 @@ extern int BJTdSetup(GENmodel*, register CKTcircuit*);
|
|||
#endif
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int BJTbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int BJTbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int BJTbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int BJTbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int BJTbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ SPICEdev BJTinfo = { /* description from struct IFdevice */
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ BJTbindCSC,
|
||||
/* DEVbindCSCComplex */ BJTbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ BJTbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -306,3 +306,175 @@ B1bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
B1bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
B1model *model = (B1model *)inModel ;
|
||||
B1instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim1 models */
|
||||
for ( ; model != NULL ; model = model->B1nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->B1instances ; here != NULL ; here = here->B1nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->B1dNode != 0) && (here->B1dNode != 0))
|
||||
{
|
||||
while (here->B1DdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1gNode != 0) && (here->B1gNode != 0))
|
||||
{
|
||||
while (here->B1GgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1sNode != 0) && (here->B1sNode != 0))
|
||||
{
|
||||
while (here->B1SsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1bNode != 0) && (here->B1bNode != 0))
|
||||
{
|
||||
while (here->B1BbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1dNodePrime != 0) && (here->B1dNodePrime != 0))
|
||||
{
|
||||
while (here->B1DPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1sNodePrime != 0) && (here->B1sNodePrime != 0))
|
||||
{
|
||||
while (here->B1SPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1dNode != 0) && (here->B1dNodePrime != 0))
|
||||
{
|
||||
while (here->B1DdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1gNode != 0) && (here->B1bNode != 0))
|
||||
{
|
||||
while (here->B1GbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1gNode != 0) && (here->B1dNodePrime != 0))
|
||||
{
|
||||
while (here->B1GdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1gNode != 0) && (here->B1sNodePrime != 0))
|
||||
{
|
||||
while (here->B1GspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1sNode != 0) && (here->B1sNodePrime != 0))
|
||||
{
|
||||
while (here->B1SspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1bNode != 0) && (here->B1dNodePrime != 0))
|
||||
{
|
||||
while (here->B1BdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1bNode != 0) && (here->B1sNodePrime != 0))
|
||||
{
|
||||
while (here->B1BspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1dNodePrime != 0) && (here->B1sNodePrime != 0))
|
||||
{
|
||||
while (here->B1DPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1dNodePrime != 0) && (here->B1dNode != 0))
|
||||
{
|
||||
while (here->B1DPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1bNode != 0) && (here->B1gNode != 0))
|
||||
{
|
||||
while (here->B1BgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1dNodePrime != 0) && (here->B1gNode != 0))
|
||||
{
|
||||
while (here->B1DPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1sNodePrime != 0) && (here->B1gNode != 0))
|
||||
{
|
||||
while (here->B1SPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1sNodePrime != 0) && (here->B1sNode != 0))
|
||||
{
|
||||
while (here->B1SPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1dNodePrime != 0) && (here->B1bNode != 0))
|
||||
{
|
||||
while (here->B1DPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1sNodePrime != 0) && (here->B1bNode != 0))
|
||||
{
|
||||
while (here->B1SPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B1sNodePrime != 0) && (here->B1dNodePrime != 0))
|
||||
{
|
||||
while (here->B1SPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B1SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -31,6 +31,7 @@ extern int B1disto(int,GENmodel*,CKTcircuit*);
|
|||
extern int B1dSetup(GENmodel*, register CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int B1bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int B1bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int B1bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int B1bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int B1bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ SPICEdev B1info = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ B1bindCSC,
|
||||
/* DEVbindCSCComplex */ B1bindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ B1bindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -306,3 +306,175 @@ B2bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
B2bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
B2model *model = (B2model *)inModel ;
|
||||
B2instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim2 models */
|
||||
for ( ; model != NULL ; model = model->B2nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->B2instances ; here != NULL ; here = here->B2nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->B2dNode != 0) && (here->B2dNode != 0))
|
||||
{
|
||||
while (here->B2DdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2gNode != 0) && (here->B2gNode != 0))
|
||||
{
|
||||
while (here->B2GgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2sNode != 0) && (here->B2sNode != 0))
|
||||
{
|
||||
while (here->B2SsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2bNode != 0) && (here->B2bNode != 0))
|
||||
{
|
||||
while (here->B2BbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2dNodePrime != 0) && (here->B2dNodePrime != 0))
|
||||
{
|
||||
while (here->B2DPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2sNodePrime != 0) && (here->B2sNodePrime != 0))
|
||||
{
|
||||
while (here->B2SPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2dNode != 0) && (here->B2dNodePrime != 0))
|
||||
{
|
||||
while (here->B2DdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2gNode != 0) && (here->B2bNode != 0))
|
||||
{
|
||||
while (here->B2GbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2gNode != 0) && (here->B2dNodePrime != 0))
|
||||
{
|
||||
while (here->B2GdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2gNode != 0) && (here->B2sNodePrime != 0))
|
||||
{
|
||||
while (here->B2GspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2sNode != 0) && (here->B2sNodePrime != 0))
|
||||
{
|
||||
while (here->B2SspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2bNode != 0) && (here->B2dNodePrime != 0))
|
||||
{
|
||||
while (here->B2BdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2bNode != 0) && (here->B2sNodePrime != 0))
|
||||
{
|
||||
while (here->B2BspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2dNodePrime != 0) && (here->B2sNodePrime != 0))
|
||||
{
|
||||
while (here->B2DPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2dNodePrime != 0) && (here->B2dNode != 0))
|
||||
{
|
||||
while (here->B2DPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2bNode != 0) && (here->B2gNode != 0))
|
||||
{
|
||||
while (here->B2BgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2dNodePrime != 0) && (here->B2gNode != 0))
|
||||
{
|
||||
while (here->B2DPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2sNodePrime != 0) && (here->B2gNode != 0))
|
||||
{
|
||||
while (here->B2SPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2sNodePrime != 0) && (here->B2sNode != 0))
|
||||
{
|
||||
while (here->B2SPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2dNodePrime != 0) && (here->B2bNode != 0))
|
||||
{
|
||||
while (here->B2DPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2sNodePrime != 0) && (here->B2bNode != 0))
|
||||
{
|
||||
while (here->B2SPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B2sNodePrime != 0) && (here->B2dNodePrime != 0))
|
||||
{
|
||||
while (here->B2SPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B2SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -27,6 +27,7 @@ extern int B2temp(GENmodel*,CKTcircuit*);
|
|||
extern int B2trunc(GENmodel*,CKTcircuit*,double*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int B2bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int B2bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int B2bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int B2bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int B2bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ SPICEdev B2info = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ B2bindCSC,
|
||||
/* DEVbindCSCComplex */ B2bindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ B2bindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -414,3 +414,238 @@ BSIM3bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM3bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM3model *model = (BSIM3model *)inModel ;
|
||||
BSIM3instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim3 models */
|
||||
for ( ; model != NULL ; model = model->BSIM3nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM3instances ; here != NULL ; here = here->BSIM3nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->BSIM3dNode != 0) && (here->BSIM3dNode != 0))
|
||||
{
|
||||
while (here->BSIM3DdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3gNode != 0) && (here->BSIM3gNode != 0))
|
||||
{
|
||||
while (here->BSIM3GgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3sNode != 0) && (here->BSIM3sNode != 0))
|
||||
{
|
||||
while (here->BSIM3SsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3bNode != 0) && (here->BSIM3bNode != 0))
|
||||
{
|
||||
while (here->BSIM3BbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3dNodePrime != 0) && (here->BSIM3dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3DPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3sNodePrime != 0) && (here->BSIM3sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3SPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3dNode != 0) && (here->BSIM3dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3DdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3gNode != 0) && (here->BSIM3bNode != 0))
|
||||
{
|
||||
while (here->BSIM3GbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3gNode != 0) && (here->BSIM3dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3GdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3gNode != 0) && (here->BSIM3sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3GspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3sNode != 0) && (here->BSIM3sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3SspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3bNode != 0) && (here->BSIM3dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3BdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3bNode != 0) && (here->BSIM3sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3BspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3dNodePrime != 0) && (here->BSIM3sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3DPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3dNodePrime != 0) && (here->BSIM3dNode != 0))
|
||||
{
|
||||
while (here->BSIM3DPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3bNode != 0) && (here->BSIM3gNode != 0))
|
||||
{
|
||||
while (here->BSIM3BgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3dNodePrime != 0) && (here->BSIM3gNode != 0))
|
||||
{
|
||||
while (here->BSIM3DPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3sNodePrime != 0) && (here->BSIM3gNode != 0))
|
||||
{
|
||||
while (here->BSIM3SPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3sNodePrime != 0) && (here->BSIM3sNode != 0))
|
||||
{
|
||||
while (here->BSIM3SPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3dNodePrime != 0) && (here->BSIM3bNode != 0))
|
||||
{
|
||||
while (here->BSIM3DPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3sNodePrime != 0) && (here->BSIM3bNode != 0))
|
||||
{
|
||||
while (here->BSIM3SPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3sNodePrime != 0) && (here->BSIM3dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3SPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3qNode != 0) && (here->BSIM3qNode != 0))
|
||||
{
|
||||
while (here->BSIM3QqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3qNode != 0) && (here->BSIM3dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3QdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3qNode != 0) && (here->BSIM3sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3QspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3qNode != 0) && (here->BSIM3gNode != 0))
|
||||
{
|
||||
while (here->BSIM3QgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3QgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3qNode != 0) && (here->BSIM3bNode != 0))
|
||||
{
|
||||
while (here->BSIM3QbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3QbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3dNodePrime != 0) && (here->BSIM3qNode != 0))
|
||||
{
|
||||
while (here->BSIM3DPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3sNodePrime != 0) && (here->BSIM3qNode != 0))
|
||||
{
|
||||
while (here->BSIM3SPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3gNode != 0) && (here->BSIM3qNode != 0))
|
||||
{
|
||||
while (here->BSIM3GqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3GqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3bNode != 0) && (here->BSIM3qNode != 0))
|
||||
{
|
||||
while (here->BSIM3BqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3BqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -30,6 +30,7 @@ extern int BSIM3noise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
|||
extern int BSIM3unsetup(GENmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int BSIM3bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM3bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM3bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM3bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM3bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ SPICEdev BSIM3info = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ BSIM3bindCSC,
|
||||
/* DEVbindCSCComplex */ BSIM3bindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ BSIM3bindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1198,3 +1198,679 @@ B3SOIDDbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
B3SOIDDbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
B3SOIDDmodel *model = (B3SOIDDmodel *)inModel ;
|
||||
B3SOIDDinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim3SiliconOnInsulatorDepleted models */
|
||||
for ( ; model != NULL ; model = model->B3SOIDDnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->B3SOIDDinstances ; here != NULL ; here = here->B3SOIDDnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDtempNode != 0) && (here->B3SOIDDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDTemptempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDTemptempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDtempNode != 0) && (here->B3SOIDDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDTempdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDTempdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDtempNode != 0) && (here->B3SOIDDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDTempspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDTempspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDtempNode != 0) && (here->B3SOIDDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDTempgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDTempgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDtempNode != 0) && (here->B3SOIDDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDTempbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDTempbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDtempNode != 0) && (here->B3SOIDDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDTempePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDTempePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDgNode != 0) && (here->B3SOIDDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDGtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDGtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdNodePrime != 0) && (here->B3SOIDDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDDPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDsNodePrime != 0) && (here->B3SOIDDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDSPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDSPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDeNode != 0) && (here->B3SOIDDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDEtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDEtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDbNode != 0) && (here->B3SOIDDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDBtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDBtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDpNode != 0) && (here->B3SOIDDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDbNode != 0) && (here->B3SOIDDpNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDBpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDBpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDpNode != 0) && (here->B3SOIDDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDpNode != 0) && (here->B3SOIDDpNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDPpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDPpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDpNode != 0) && (here->B3SOIDDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDpNode != 0) && (here->B3SOIDDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDpNode != 0) && (here->B3SOIDDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDpNode != 0) && (here->B3SOIDDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDPePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDPePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDeNode != 0) && (here->B3SOIDDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDEgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDEgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDeNode != 0) && (here->B3SOIDDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDEdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDeNode != 0) && (here->B3SOIDDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDEspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDgNode != 0) && (here->B3SOIDDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDGePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDGePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdNodePrime != 0) && (here->B3SOIDDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDDPePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDPePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDsNodePrime != 0) && (here->B3SOIDDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDSPePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDSPePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDeNode != 0) && (here->B3SOIDDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDEbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDEbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDgNode != 0) && (here->B3SOIDDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDGbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDGbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdNodePrime != 0) && (here->B3SOIDDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDDPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDsNodePrime != 0) && (here->B3SOIDDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDSPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDSPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDbNode != 0) && (here->B3SOIDDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDBePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDBePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDbNode != 0) && (here->B3SOIDDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDBgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDBgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDbNode != 0) && (here->B3SOIDDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDBdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDbNode != 0) && (here->B3SOIDDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDBspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDbNode != 0) && (here->B3SOIDDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDeNode != 0) && (here->B3SOIDDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDEbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDEbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDeNode != 0) && (here->B3SOIDDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDEePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDEePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDgNode != 0) && (here->B3SOIDDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDGgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDGgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDgNode != 0) && (here->B3SOIDDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDGdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDGdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDgNode != 0) && (here->B3SOIDDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDGspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDGspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdNodePrime != 0) && (here->B3SOIDDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDDPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdNodePrime != 0) && (here->B3SOIDDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDDPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdNodePrime != 0) && (here->B3SOIDDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDDPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdNodePrime != 0) && (here->B3SOIDDdNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDDPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDsNodePrime != 0) && (here->B3SOIDDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDSPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDSPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDsNodePrime != 0) && (here->B3SOIDDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDSPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDSPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDsNodePrime != 0) && (here->B3SOIDDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDSPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDSPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDsNodePrime != 0) && (here->B3SOIDDsNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDSPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDSPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdNode != 0) && (here->B3SOIDDdNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDDdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdNode != 0) && (here->B3SOIDDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDDdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDsNode != 0) && (here->B3SOIDDsNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDSsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDSsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDsNode != 0) && (here->B3SOIDDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIDDSspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDSspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDvbsNode != 0) && (here->B3SOIDDvbsNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDVbsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDVbsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDidsNode != 0) && (here->B3SOIDDidsNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDIdsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDIdsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDicNode != 0) && (here->B3SOIDDicNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDIcPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDIcPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDibsNode != 0) && (here->B3SOIDDibsNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDIbsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDIbsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDibdNode != 0) && (here->B3SOIDDibdNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDIbdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDIbdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDiiiNode != 0) && (here->B3SOIDDiiiNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDIiiPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDIiiPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDigidlNode != 0) && (here->B3SOIDDigidlNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDIgidlPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDIgidlPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDitunNode != 0) && (here->B3SOIDDitunNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDItunPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDItunPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDibpNode != 0) && (here->B3SOIDDibpNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDIbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDIbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDabeffNode != 0) && (here->B3SOIDDabeffNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDAbeffPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDAbeffPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDvbs0effNode != 0) && (here->B3SOIDDvbs0effNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDVbs0effPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDVbs0effPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDvbseffNode != 0) && (here->B3SOIDDvbseffNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDVbseffPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDVbseffPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDxcNode != 0) && (here->B3SOIDDxcNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDXcPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDXcPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDcbbNode != 0) && (here->B3SOIDDcbbNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDCbbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDCbbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDcbdNode != 0) && (here->B3SOIDDcbdNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDCbdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDCbdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDcbgNode != 0) && (here->B3SOIDDcbgNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDCbgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDCbgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDqbNode != 0) && (here->B3SOIDDqbNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDqbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDqbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDqbfNode != 0) && (here->B3SOIDDqbfNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDQbfPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDQbfPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDqjsNode != 0) && (here->B3SOIDDqjsNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDQjsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDQjsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDqjdNode != 0) && (here->B3SOIDDqjdNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDQjdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDQjdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDgmNode != 0) && (here->B3SOIDDgmNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDGmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDGmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDgmbsNode != 0) && (here->B3SOIDDgmbsNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDGmbsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDGmbsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDgdsNode != 0) && (here->B3SOIDDgdsNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDGdsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDGdsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDgmeNode != 0) && (here->B3SOIDDgmeNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDGmePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDGmePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDvbs0teffNode != 0) && (here->B3SOIDDvbs0teffNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDVbs0teffPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDVbs0teffPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDvthNode != 0) && (here->B3SOIDDvthNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDVthPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDVthPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDvgsteffNode != 0) && (here->B3SOIDDvgsteffNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDVgsteffPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDVgsteffPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDxcsatNode != 0) && (here->B3SOIDDxcsatNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDXcsatPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDXcsatPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDvcscvNode != 0) && (here->B3SOIDDvcscvNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDVcscvPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDVcscvPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDvdscvNode != 0) && (here->B3SOIDDvdscvNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDVdscvPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDVdscvPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDcbeNode != 0) && (here->B3SOIDDcbeNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDCbePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDCbePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdum1Node != 0) && (here->B3SOIDDdum1Node != 0))
|
||||
{
|
||||
while (here->B3SOIDDDum1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDum1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdum2Node != 0) && (here->B3SOIDDdum2Node != 0))
|
||||
{
|
||||
while (here->B3SOIDDDum2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDum2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdum3Node != 0) && (here->B3SOIDDdum3Node != 0))
|
||||
{
|
||||
while (here->B3SOIDDDum3Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDum3Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdum4Node != 0) && (here->B3SOIDDdum4Node != 0))
|
||||
{
|
||||
while (here->B3SOIDDDum4Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDum4Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDdum5Node != 0) && (here->B3SOIDDdum5Node != 0))
|
||||
{
|
||||
while (here->B3SOIDDDum5Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDDum5Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDqaccNode != 0) && (here->B3SOIDDqaccNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDQaccPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDQaccPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDqsub0Node != 0) && (here->B3SOIDDqsub0Node != 0))
|
||||
{
|
||||
while (here->B3SOIDDQsub0Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDQsub0Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDqsubs1Node != 0) && (here->B3SOIDDqsubs1Node != 0))
|
||||
{
|
||||
while (here->B3SOIDDQsubs1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDQsubs1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDqsubs2Node != 0) && (here->B3SOIDDqsubs2Node != 0))
|
||||
{
|
||||
while (here->B3SOIDDQsubs2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDQsubs2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDqeNode != 0) && (here->B3SOIDDqeNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDqePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDqePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDqdNode != 0) && (here->B3SOIDDqdNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDqdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDqdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIDDqgNode != 0) && (here->B3SOIDDqgNode != 0))
|
||||
{
|
||||
while (here->B3SOIDDqgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIDDqgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -30,6 +30,7 @@ extern int B3SOIDDnoise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
|||
extern int B3SOIDDunsetup(GENmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int B3SOIDDbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int B3SOIDDbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int B3SOIDDbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int B3SOIDDbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int B3SOIDDbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ SPICEdev B3SOIDDinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ B3SOIDDbindCSC,
|
||||
/* DEVbindCSCComplex */ B3SOIDDbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ B3SOIDDbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1090,3 +1090,616 @@ B3SOIFDbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
B3SOIFDbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
B3SOIFDmodel *model = (B3SOIFDmodel *)inModel ;
|
||||
B3SOIFDinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim3SiliconOnInsulatorFullyDepleted models */
|
||||
for ( ; model != NULL ; model = model->B3SOIFDnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->B3SOIFDinstances ; here != NULL ; here = here->B3SOIFDnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDtempNode != 0) && (here->B3SOIFDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDTemptempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDTemptempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDtempNode != 0) && (here->B3SOIFDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDTempdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDTempdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDtempNode != 0) && (here->B3SOIFDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDTempspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDTempspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDtempNode != 0) && (here->B3SOIFDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDTempgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDTempgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDtempNode != 0) && (here->B3SOIFDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDTempbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDTempbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDtempNode != 0) && (here->B3SOIFDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDTempePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDTempePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDgNode != 0) && (here->B3SOIFDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDGtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDGtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdNodePrime != 0) && (here->B3SOIFDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDDPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDsNodePrime != 0) && (here->B3SOIFDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDSPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDSPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDeNode != 0) && (here->B3SOIFDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDEtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDEtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDbNode != 0) && (here->B3SOIFDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDBtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDBtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDpNode != 0) && (here->B3SOIFDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDbNode != 0) && (here->B3SOIFDpNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDBpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDBpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDpNode != 0) && (here->B3SOIFDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDpNode != 0) && (here->B3SOIFDpNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDPpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDPpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDpNode != 0) && (here->B3SOIFDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDpNode != 0) && (here->B3SOIFDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDpNode != 0) && (here->B3SOIFDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDpNode != 0) && (here->B3SOIFDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDPePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDPePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDeNode != 0) && (here->B3SOIFDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDEgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDEgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDeNode != 0) && (here->B3SOIFDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDEdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDeNode != 0) && (here->B3SOIFDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDEspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDgNode != 0) && (here->B3SOIFDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDGePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDGePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdNodePrime != 0) && (here->B3SOIFDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDDPePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDPePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDsNodePrime != 0) && (here->B3SOIFDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDSPePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDSPePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDeNode != 0) && (here->B3SOIFDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDEbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDEbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDeNode != 0) && (here->B3SOIFDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDEePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDEePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDgNode != 0) && (here->B3SOIFDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDGgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDGgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDgNode != 0) && (here->B3SOIFDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDGdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDGdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDgNode != 0) && (here->B3SOIFDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDGspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDGspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdNodePrime != 0) && (here->B3SOIFDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDDPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdNodePrime != 0) && (here->B3SOIFDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDDPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdNodePrime != 0) && (here->B3SOIFDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDDPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdNodePrime != 0) && (here->B3SOIFDdNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDDPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDsNodePrime != 0) && (here->B3SOIFDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDSPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDSPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDsNodePrime != 0) && (here->B3SOIFDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDSPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDSPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDsNodePrime != 0) && (here->B3SOIFDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDSPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDSPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDsNodePrime != 0) && (here->B3SOIFDsNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDSPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDSPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdNode != 0) && (here->B3SOIFDdNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDDdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdNode != 0) && (here->B3SOIFDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDDdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDsNode != 0) && (here->B3SOIFDsNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDSsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDSsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDsNode != 0) && (here->B3SOIFDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIFDSspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDSspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDvbsNode != 0) && (here->B3SOIFDvbsNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDVbsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDVbsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDidsNode != 0) && (here->B3SOIFDidsNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDIdsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDIdsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDicNode != 0) && (here->B3SOIFDicNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDIcPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDIcPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDibsNode != 0) && (here->B3SOIFDibsNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDIbsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDIbsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDibdNode != 0) && (here->B3SOIFDibdNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDIbdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDIbdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDiiiNode != 0) && (here->B3SOIFDiiiNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDIiiPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDIiiPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDigidlNode != 0) && (here->B3SOIFDigidlNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDIgidlPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDIgidlPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDitunNode != 0) && (here->B3SOIFDitunNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDItunPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDItunPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDibpNode != 0) && (here->B3SOIFDibpNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDIbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDIbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDabeffNode != 0) && (here->B3SOIFDabeffNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDAbeffPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDAbeffPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDvbs0effNode != 0) && (here->B3SOIFDvbs0effNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDVbs0effPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDVbs0effPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDvbseffNode != 0) && (here->B3SOIFDvbseffNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDVbseffPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDVbseffPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDxcNode != 0) && (here->B3SOIFDxcNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDXcPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDXcPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDcbbNode != 0) && (here->B3SOIFDcbbNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDCbbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDCbbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDcbdNode != 0) && (here->B3SOIFDcbdNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDCbdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDCbdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDcbgNode != 0) && (here->B3SOIFDcbgNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDCbgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDCbgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDqbNode != 0) && (here->B3SOIFDqbNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDqbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDqbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDqbfNode != 0) && (here->B3SOIFDqbfNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDQbfPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDQbfPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDqjsNode != 0) && (here->B3SOIFDqjsNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDQjsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDQjsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDqjdNode != 0) && (here->B3SOIFDqjdNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDQjdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDQjdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDgmNode != 0) && (here->B3SOIFDgmNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDGmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDGmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDgmbsNode != 0) && (here->B3SOIFDgmbsNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDGmbsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDGmbsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDgdsNode != 0) && (here->B3SOIFDgdsNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDGdsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDGdsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDgmeNode != 0) && (here->B3SOIFDgmeNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDGmePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDGmePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDvbs0teffNode != 0) && (here->B3SOIFDvbs0teffNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDVbs0teffPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDVbs0teffPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDvthNode != 0) && (here->B3SOIFDvthNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDVthPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDVthPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDvgsteffNode != 0) && (here->B3SOIFDvgsteffNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDVgsteffPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDVgsteffPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDxcsatNode != 0) && (here->B3SOIFDxcsatNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDXcsatPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDXcsatPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDvcscvNode != 0) && (here->B3SOIFDvcscvNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDVcscvPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDVcscvPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDvdscvNode != 0) && (here->B3SOIFDvdscvNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDVdscvPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDVdscvPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDcbeNode != 0) && (here->B3SOIFDcbeNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDCbePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDCbePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdum1Node != 0) && (here->B3SOIFDdum1Node != 0))
|
||||
{
|
||||
while (here->B3SOIFDDum1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDum1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdum2Node != 0) && (here->B3SOIFDdum2Node != 0))
|
||||
{
|
||||
while (here->B3SOIFDDum2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDum2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdum3Node != 0) && (here->B3SOIFDdum3Node != 0))
|
||||
{
|
||||
while (here->B3SOIFDDum3Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDum3Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdum4Node != 0) && (here->B3SOIFDdum4Node != 0))
|
||||
{
|
||||
while (here->B3SOIFDDum4Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDum4Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDdum5Node != 0) && (here->B3SOIFDdum5Node != 0))
|
||||
{
|
||||
while (here->B3SOIFDDum5Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDDum5Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDqaccNode != 0) && (here->B3SOIFDqaccNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDQaccPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDQaccPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDqsub0Node != 0) && (here->B3SOIFDqsub0Node != 0))
|
||||
{
|
||||
while (here->B3SOIFDQsub0Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDQsub0Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDqsubs1Node != 0) && (here->B3SOIFDqsubs1Node != 0))
|
||||
{
|
||||
while (here->B3SOIFDQsubs1Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDQsubs1Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDqsubs2Node != 0) && (here->B3SOIFDqsubs2Node != 0))
|
||||
{
|
||||
while (here->B3SOIFDQsubs2Ptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDQsubs2Ptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDqeNode != 0) && (here->B3SOIFDqeNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDqePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDqePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDqdNode != 0) && (here->B3SOIFDqdNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDqdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDqdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIFDqgNode != 0) && (here->B3SOIFDqgNode != 0))
|
||||
{
|
||||
while (here->B3SOIFDqgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIFDqgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -31,6 +31,7 @@ extern int B3SOIFDunsetup(GENmodel*,CKTcircuit*);
|
|||
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int B3SOIFDbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int B3SOIFDbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int B3SOIFDbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int B3SOIFDbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int B3SOIFDbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ SPICEdev B3SOIFDinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ B3SOIFDbindCSC,
|
||||
/* DEVbindCSCComplex */ B3SOIFDbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ B3SOIFDbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -850,3 +850,476 @@ B3SOIPDbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
B3SOIPDbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
B3SOIPDmodel *model = (B3SOIPDmodel *)inModel ;
|
||||
B3SOIPDinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim3SiliconOnInsulatorPartiallyDepleted models */
|
||||
for ( ; model != NULL ; model = model->B3SOIPDnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->B3SOIPDinstances ; here != NULL ; here = here->B3SOIPDnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDtempNode != 0) && (here->B3SOIPDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDTemptempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDTemptempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDtempNode != 0) && (here->B3SOIPDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDTempdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDTempdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDtempNode != 0) && (here->B3SOIPDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDTempspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDTempspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDtempNode != 0) && (here->B3SOIPDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDTempgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDTempgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDtempNode != 0) && (here->B3SOIPDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDTempbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDTempbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDgNode != 0) && (here->B3SOIPDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDGtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDGtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDdNodePrime != 0) && (here->B3SOIPDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDDPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDDPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDsNodePrime != 0) && (here->B3SOIPDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDSPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDSPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDeNode != 0) && (here->B3SOIPDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDEtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDEtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDbNode != 0) && (here->B3SOIPDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDBtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDBtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDpNode != 0) && (here->B3SOIPDtempNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDbNode != 0) && (here->B3SOIPDpNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDBpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDBpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDpNode != 0) && (here->B3SOIPDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDpNode != 0) && (here->B3SOIPDpNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDPpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDPpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDeNode != 0) && (here->B3SOIPDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDEbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDEbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDgNode != 0) && (here->B3SOIPDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDGbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDGbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDdNodePrime != 0) && (here->B3SOIPDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDDPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDDPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDsNodePrime != 0) && (here->B3SOIPDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDSPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDSPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDbNode != 0) && (here->B3SOIPDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDBePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDBePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDbNode != 0) && (here->B3SOIPDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDBgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDBgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDbNode != 0) && (here->B3SOIPDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDBdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDbNode != 0) && (here->B3SOIPDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDBspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDbNode != 0) && (here->B3SOIPDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDeNode != 0) && (here->B3SOIPDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDEgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDEgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDeNode != 0) && (here->B3SOIPDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDEdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDeNode != 0) && (here->B3SOIPDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDEspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDgNode != 0) && (here->B3SOIPDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDGePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDGePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDdNodePrime != 0) && (here->B3SOIPDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDDPePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDDPePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDsNodePrime != 0) && (here->B3SOIPDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDSPePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDSPePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDeNode != 0) && (here->B3SOIPDbNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDEbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDEbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDeNode != 0) && (here->B3SOIPDeNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDEePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDEePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDgNode != 0) && (here->B3SOIPDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDGgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDGgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDgNode != 0) && (here->B3SOIPDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDGdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDGdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDgNode != 0) && (here->B3SOIPDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDGspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDGspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDdNodePrime != 0) && (here->B3SOIPDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDDPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDDPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDdNodePrime != 0) && (here->B3SOIPDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDDPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDDPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDdNodePrime != 0) && (here->B3SOIPDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDDPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDDPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDdNodePrime != 0) && (here->B3SOIPDdNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDDPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDDPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDsNodePrime != 0) && (here->B3SOIPDgNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDSPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDSPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDsNodePrime != 0) && (here->B3SOIPDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDSPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDSPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDsNodePrime != 0) && (here->B3SOIPDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDSPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDSPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDsNodePrime != 0) && (here->B3SOIPDsNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDSPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDSPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDdNode != 0) && (here->B3SOIPDdNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDDdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDDdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDdNode != 0) && (here->B3SOIPDdNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDDdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDDdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDsNode != 0) && (here->B3SOIPDsNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDSsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDSsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDsNode != 0) && (here->B3SOIPDsNodePrime != 0))
|
||||
{
|
||||
while (here->B3SOIPDSspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDSspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDvbsNode != 0) && (here->B3SOIPDvbsNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDVbsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDVbsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDidsNode != 0) && (here->B3SOIPDidsNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDIdsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDIdsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDicNode != 0) && (here->B3SOIPDicNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDIcPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDIcPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDibsNode != 0) && (here->B3SOIPDibsNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDIbsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDIbsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDibdNode != 0) && (here->B3SOIPDibdNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDIbdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDIbdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDiiiNode != 0) && (here->B3SOIPDiiiNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDIiiPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDIiiPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDigNode != 0) && (here->B3SOIPDigNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDIgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDIgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDgiggNode != 0) && (here->B3SOIPDgiggNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDGiggPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDGiggPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDgigdNode != 0) && (here->B3SOIPDgigdNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDGigdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDGigdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDgigbNode != 0) && (here->B3SOIPDgigbNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDGigbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDGigbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDigidlNode != 0) && (here->B3SOIPDigidlNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDIgidlPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDIgidlPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDitunNode != 0) && (here->B3SOIPDitunNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDItunPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDItunPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDibpNode != 0) && (here->B3SOIPDibpNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDIbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDIbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDcbbNode != 0) && (here->B3SOIPDcbbNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDCbbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDCbbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDcbdNode != 0) && (here->B3SOIPDcbdNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDCbdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDCbdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDcbgNode != 0) && (here->B3SOIPDcbgNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDCbgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDCbgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDqbfNode != 0) && (here->B3SOIPDqbfNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDQbfPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDQbfPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDqjsNode != 0) && (here->B3SOIPDqjsNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDQjsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDQjsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B3SOIPDqjdNode != 0) && (here->B3SOIPDqjdNode != 0))
|
||||
{
|
||||
while (here->B3SOIPDQjdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B3SOIPDQjdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -30,6 +30,7 @@ extern int B3SOIPDnoise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
|||
extern int B3SOIPDunsetup(GENmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int B3SOIPDbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int B3SOIPDbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int B3SOIPDbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int B3SOIPDbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int B3SOIPDbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ SPICEdev B3SOIPDinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ B3SOIPDbindCSC,
|
||||
/* DEVbindCSCComplex */ B3SOIPDbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ B3SOIPDbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -414,3 +414,238 @@ BSIM3v0bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM3v0bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM3v0model *model = (BSIM3v0model *)inModel ;
|
||||
BSIM3v0instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim3v0 models */
|
||||
for ( ; model != NULL ; model = model->BSIM3v0nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM3v0instances ; here != NULL ; here = here->BSIM3v0nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0dNode != 0) && (here->BSIM3v0dNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0DdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0gNode != 0) && (here->BSIM3v0gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0GgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0sNode != 0) && (here->BSIM3v0sNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0SsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0bNode != 0) && (here->BSIM3v0bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0BbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0dNodePrime != 0) && (here->BSIM3v0dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v0DPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0sNodePrime != 0) && (here->BSIM3v0sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v0SPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0dNode != 0) && (here->BSIM3v0dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v0DdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0gNode != 0) && (here->BSIM3v0bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0GbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0gNode != 0) && (here->BSIM3v0dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v0GdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0gNode != 0) && (here->BSIM3v0sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v0GspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0sNode != 0) && (here->BSIM3v0sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v0SspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0bNode != 0) && (here->BSIM3v0dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v0BdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0bNode != 0) && (here->BSIM3v0sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v0BspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0dNodePrime != 0) && (here->BSIM3v0sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v0DPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0dNodePrime != 0) && (here->BSIM3v0dNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0DPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0bNode != 0) && (here->BSIM3v0gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0BgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0dNodePrime != 0) && (here->BSIM3v0gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0DPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0sNodePrime != 0) && (here->BSIM3v0gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0SPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0sNodePrime != 0) && (here->BSIM3v0sNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0SPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0dNodePrime != 0) && (here->BSIM3v0bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0DPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0sNodePrime != 0) && (here->BSIM3v0bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0SPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0sNodePrime != 0) && (here->BSIM3v0dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v0SPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0qNode != 0) && (here->BSIM3v0qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0QqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0qNode != 0) && (here->BSIM3v0dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v0QdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0qNode != 0) && (here->BSIM3v0sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v0QspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0qNode != 0) && (here->BSIM3v0gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0QgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0QgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0qNode != 0) && (here->BSIM3v0bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0QbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0QbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0dNodePrime != 0) && (here->BSIM3v0qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0DPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0sNodePrime != 0) && (here->BSIM3v0qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0SPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0gNode != 0) && (here->BSIM3v0qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0GqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0GqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v0bNode != 0) && (here->BSIM3v0qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v0BqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v0BqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -30,6 +30,7 @@ extern int BSIM3v0unsetup(GENmodel *, CKTcircuit *);
|
|||
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int BSIM3v0bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM3v0bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM3v0bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM3v0bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM3v0bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ SPICEdev B3v0info = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ BSIM3v0bindCSC,
|
||||
/* DEVbindCSCComplex */ BSIM3v0bindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ BSIM3v0bindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -414,3 +414,238 @@ BSIM3v1bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM3v1bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM3v1model *model = (BSIM3v1model *)inModel ;
|
||||
BSIM3v1instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim3v1 models */
|
||||
for ( ; model != NULL ; model = model->BSIM3v1nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM3v1instances ; here != NULL ; here = here->BSIM3v1nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1dNode != 0) && (here->BSIM3v1dNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1DdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1gNode != 0) && (here->BSIM3v1gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1GgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1sNode != 0) && (here->BSIM3v1sNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1SsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1bNode != 0) && (here->BSIM3v1bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1BbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1dNodePrime != 0) && (here->BSIM3v1dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v1DPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1sNodePrime != 0) && (here->BSIM3v1sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v1SPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1dNode != 0) && (here->BSIM3v1dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v1DdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1gNode != 0) && (here->BSIM3v1bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1GbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1gNode != 0) && (here->BSIM3v1dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v1GdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1gNode != 0) && (here->BSIM3v1sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v1GspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1sNode != 0) && (here->BSIM3v1sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v1SspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1bNode != 0) && (here->BSIM3v1dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v1BdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1bNode != 0) && (here->BSIM3v1sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v1BspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1dNodePrime != 0) && (here->BSIM3v1sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v1DPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1dNodePrime != 0) && (here->BSIM3v1dNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1DPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1bNode != 0) && (here->BSIM3v1gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1BgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1dNodePrime != 0) && (here->BSIM3v1gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1DPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1sNodePrime != 0) && (here->BSIM3v1gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1SPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1sNodePrime != 0) && (here->BSIM3v1sNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1SPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1dNodePrime != 0) && (here->BSIM3v1bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1DPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1sNodePrime != 0) && (here->BSIM3v1bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1SPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1sNodePrime != 0) && (here->BSIM3v1dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v1SPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1qNode != 0) && (here->BSIM3v1qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1QqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1qNode != 0) && (here->BSIM3v1dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v1QdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1qNode != 0) && (here->BSIM3v1sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v1QspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1qNode != 0) && (here->BSIM3v1gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1QgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1QgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1qNode != 0) && (here->BSIM3v1bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1QbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1QbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1dNodePrime != 0) && (here->BSIM3v1qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1DPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1sNodePrime != 0) && (here->BSIM3v1qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1SPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1gNode != 0) && (here->BSIM3v1qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1GqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1GqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v1bNode != 0) && (here->BSIM3v1qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v1BqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v1BqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -31,6 +31,7 @@ extern int BSIM3v1unsetup(GENmodel *, CKTcircuit *);
|
|||
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int BSIM3v1bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM3v1bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM3v1bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM3v1bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM3v1bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ SPICEdev BSIM3v1info = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ BSIM3v1bindCSC,
|
||||
/* DEVbindCSCComplex */ BSIM3v1bindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ BSIM3v1bindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -414,3 +414,238 @@ BSIM3v32bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM3v32bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM3v32model *model = (BSIM3v32model *)inModel ;
|
||||
BSIM3v32instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim3v32 models */
|
||||
for ( ; model != NULL ; model = model->BSIM3v32nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM3v32instances ; here != NULL ; here = here->BSIM3v32nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32dNode != 0) && (here->BSIM3v32dNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32DdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32gNode != 0) && (here->BSIM3v32gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32GgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32sNode != 0) && (here->BSIM3v32sNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32SsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32bNode != 0) && (here->BSIM3v32bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32BbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32dNodePrime != 0) && (here->BSIM3v32dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v32DPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32sNodePrime != 0) && (here->BSIM3v32sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v32SPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32dNode != 0) && (here->BSIM3v32dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v32DdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32gNode != 0) && (here->BSIM3v32bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32GbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32GbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32gNode != 0) && (here->BSIM3v32dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v32GdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32gNode != 0) && (here->BSIM3v32sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v32GspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32sNode != 0) && (here->BSIM3v32sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v32SspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32bNode != 0) && (here->BSIM3v32dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v32BdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32BdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32bNode != 0) && (here->BSIM3v32sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v32BspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32BspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32dNodePrime != 0) && (here->BSIM3v32sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v32DPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32dNodePrime != 0) && (here->BSIM3v32dNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32DPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32bNode != 0) && (here->BSIM3v32gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32BgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32BgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32dNodePrime != 0) && (here->BSIM3v32gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32DPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32DPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32sNodePrime != 0) && (here->BSIM3v32gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32SPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32SPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32sNodePrime != 0) && (here->BSIM3v32sNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32SPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32dNodePrime != 0) && (here->BSIM3v32bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32DPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32DPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32sNodePrime != 0) && (here->BSIM3v32bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32SPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32SPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32sNodePrime != 0) && (here->BSIM3v32dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v32SPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32qNode != 0) && (here->BSIM3v32qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32QqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32qNode != 0) && (here->BSIM3v32dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v32QdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32qNode != 0) && (here->BSIM3v32sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM3v32QspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32qNode != 0) && (here->BSIM3v32gNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32QgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32QgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32qNode != 0) && (here->BSIM3v32bNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32QbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32QbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32dNodePrime != 0) && (here->BSIM3v32qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32DPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32sNodePrime != 0) && (here->BSIM3v32qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32SPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32gNode != 0) && (here->BSIM3v32qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32GqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32GqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM3v32bNode != 0) && (here->BSIM3v32qNode != 0))
|
||||
{
|
||||
while (here->BSIM3v32BqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM3v32BqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -31,6 +31,7 @@ extern int BSIM3v32noise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
|||
extern int BSIM3v32unsetup(GENmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int BSIM3v32bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM3v32bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM3v32bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM3v32bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM3v32bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ SPICEdev BSIM3v32info = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ BSIM3v32bindCSC,
|
||||
/* DEVbindCSCComplex */ BSIM3v32bindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ BSIM3v32bindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -900,3 +900,511 @@ BSIM4bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM4bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4model *model = (BSIM4model *)inModel ;
|
||||
BSIM4instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim4 models */
|
||||
for ( ; model != NULL ; model = model->BSIM4nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM4instances ; here != NULL ; here = here->BSIM4nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNodePrime != 0) && (here->BSIM4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4DPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodePrime != 0) && (here->BSIM4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4GPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNodePrime != 0) && (here->BSIM4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4SPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4bNodePrime != 0) && (here->BSIM4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4BPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4BPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4bNodePrime != 0) && (here->BSIM4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4BPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4BPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4bNodePrime != 0) && (here->BSIM4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4BPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4BPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4bNodePrime != 0) && (here->BSIM4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4BPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4BPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNode != 0) && (here->BSIM4dNode != 0))
|
||||
{
|
||||
while (here->BSIM4DdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodePrime != 0) && (here->BSIM4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4GPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNode != 0) && (here->BSIM4sNode != 0))
|
||||
{
|
||||
while (here->BSIM4SsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNodePrime != 0) && (here->BSIM4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4DPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNodePrime != 0) && (here->BSIM4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4SPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNode != 0) && (here->BSIM4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4DdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodePrime != 0) && (here->BSIM4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4GPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodePrime != 0) && (here->BSIM4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4GPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNode != 0) && (here->BSIM4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4SspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNodePrime != 0) && (here->BSIM4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4DPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNodePrime != 0) && (here->BSIM4dNode != 0))
|
||||
{
|
||||
while (here->BSIM4DPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNodePrime != 0) && (here->BSIM4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4DPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNodePrime != 0) && (here->BSIM4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4SPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNodePrime != 0) && (here->BSIM4sNode != 0))
|
||||
{
|
||||
while (here->BSIM4SPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNodePrime != 0) && (here->BSIM4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4SPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4qNode != 0) && (here->BSIM4qNode != 0))
|
||||
{
|
||||
while (here->BSIM4QqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4qNode != 0) && (here->BSIM4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4QbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4QbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4qNode != 0) && (here->BSIM4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4QdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4qNode != 0) && (here->BSIM4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4QspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4qNode != 0) && (here->BSIM4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4QgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4QgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNodePrime != 0) && (here->BSIM4qNode != 0))
|
||||
{
|
||||
while (here->BSIM4DPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNodePrime != 0) && (here->BSIM4qNode != 0))
|
||||
{
|
||||
while (here->BSIM4SPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodePrime != 0) && (here->BSIM4qNode != 0))
|
||||
{
|
||||
while (here->BSIM4GPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodeExt != 0) && (here->BSIM4gNodeExt != 0))
|
||||
{
|
||||
while (here->BSIM4GEgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GEgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodeExt != 0) && (here->BSIM4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4GEgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GEgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodePrime != 0) && (here->BSIM4gNodeExt != 0))
|
||||
{
|
||||
while (here->BSIM4GPgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GPgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodeExt != 0) && (here->BSIM4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4GEdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodeExt != 0) && (here->BSIM4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4GEspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodeExt != 0) && (here->BSIM4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4GEbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GEbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodeMid != 0) && (here->BSIM4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4GMdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GMdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodeMid != 0) && (here->BSIM4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4GMgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GMgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodeMid != 0) && (here->BSIM4gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4GMgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GMgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodeMid != 0) && (here->BSIM4gNodeExt != 0))
|
||||
{
|
||||
while (here->BSIM4GMgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GMgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodeMid != 0) && (here->BSIM4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4GMspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GMspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodeMid != 0) && (here->BSIM4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4GMbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GMbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNodePrime != 0) && (here->BSIM4gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4DPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodePrime != 0) && (here->BSIM4gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4GPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4gNodeExt != 0) && (here->BSIM4gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4GEgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4GEgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNodePrime != 0) && (here->BSIM4gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4SPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4bNodePrime != 0) && (here->BSIM4gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4BPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4BPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNodePrime != 0) && (here->BSIM4dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4DPdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNodePrime != 0) && (here->BSIM4sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4SPsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dbNode != 0) && (here->BSIM4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4DBdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dbNode != 0) && (here->BSIM4dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4DBdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dbNode != 0) && (here->BSIM4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4DBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dbNode != 0) && (here->BSIM4bNode != 0))
|
||||
{
|
||||
while (here->BSIM4DBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4bNodePrime != 0) && (here->BSIM4dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4BPdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4BPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4bNodePrime != 0) && (here->BSIM4bNode != 0))
|
||||
{
|
||||
while (here->BSIM4BPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4BPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4bNodePrime != 0) && (here->BSIM4sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4BPsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4BPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sbNode != 0) && (here->BSIM4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4SBspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sbNode != 0) && (here->BSIM4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4SBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sbNode != 0) && (here->BSIM4bNode != 0))
|
||||
{
|
||||
while (here->BSIM4SBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sbNode != 0) && (here->BSIM4sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4SBsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4bNode != 0) && (here->BSIM4dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4BdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4BdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4bNode != 0) && (here->BSIM4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4BbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4BbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4bNode != 0) && (here->BSIM4sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4BsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4BsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4bNode != 0) && (here->BSIM4bNode != 0))
|
||||
{
|
||||
while (here->BSIM4BbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNode != 0) && (here->BSIM4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4DgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNode != 0) && (here->BSIM4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4DspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4dNode != 0) && (here->BSIM4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4DbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4DbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNode != 0) && (here->BSIM4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4SdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNode != 0) && (here->BSIM4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4SgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4sNode != 0) && (here->BSIM4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4SbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4SbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -30,6 +30,7 @@ extern int BSIM4noise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
|||
extern int BSIM4unsetup(GENmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int BSIM4bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM4bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM4bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM4bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM4bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -74,8 +74,9 @@ SPICEdev BSIM4info = {
|
|||
&BSIM4iSize, /* DEVinstSize */
|
||||
&BSIM4mSize, /* DEVmodSize */
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ BSIM4bindCSC,
|
||||
/* DEVbindCSCComplex */ BSIM4bindCSCComplex,
|
||||
BSIM4bindCSC, /* DEVbindCSC */
|
||||
BSIM4bindCSCComplex, /* DEVbindCSCComplex */
|
||||
BSIM4bindCSCComplexToReal, /* DEVbindCSCComplexToReal */
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -900,3 +900,511 @@ BSIM4v4bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM4v4bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4v4model *model = (BSIM4v4model *)inModel ;
|
||||
BSIM4v4instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim4v4 models */
|
||||
for ( ; model != NULL ; model = model->BSIM4v4nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM4v4instances ; here != NULL ; here = here->BSIM4v4nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNodePrime != 0) && (here->BSIM4v4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4DPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodePrime != 0) && (here->BSIM4v4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4GPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNodePrime != 0) && (here->BSIM4v4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4SPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4bNodePrime != 0) && (here->BSIM4v4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4BPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4BPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4bNodePrime != 0) && (here->BSIM4v4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4BPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4BPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4bNodePrime != 0) && (here->BSIM4v4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4BPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4BPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4bNodePrime != 0) && (here->BSIM4v4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4BPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4BPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNode != 0) && (here->BSIM4v4dNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4DdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodePrime != 0) && (here->BSIM4v4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4GPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNode != 0) && (here->BSIM4v4sNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4SsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNodePrime != 0) && (here->BSIM4v4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4DPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNodePrime != 0) && (here->BSIM4v4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4SPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNode != 0) && (here->BSIM4v4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4DdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodePrime != 0) && (here->BSIM4v4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4GPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodePrime != 0) && (here->BSIM4v4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4GPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNode != 0) && (here->BSIM4v4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4SspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNodePrime != 0) && (here->BSIM4v4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4DPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNodePrime != 0) && (here->BSIM4v4dNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4DPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNodePrime != 0) && (here->BSIM4v4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4DPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNodePrime != 0) && (here->BSIM4v4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4SPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNodePrime != 0) && (here->BSIM4v4sNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4SPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNodePrime != 0) && (here->BSIM4v4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4SPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4qNode != 0) && (here->BSIM4v4qNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4QqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4qNode != 0) && (here->BSIM4v4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4QbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4QbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4qNode != 0) && (here->BSIM4v4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4QdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4qNode != 0) && (here->BSIM4v4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4QspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4qNode != 0) && (here->BSIM4v4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4QgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4QgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNodePrime != 0) && (here->BSIM4v4qNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4DPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNodePrime != 0) && (here->BSIM4v4qNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4SPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodePrime != 0) && (here->BSIM4v4qNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4GPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodeExt != 0) && (here->BSIM4v4gNodeExt != 0))
|
||||
{
|
||||
while (here->BSIM4v4GEgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GEgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodeExt != 0) && (here->BSIM4v4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4GEgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GEgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodePrime != 0) && (here->BSIM4v4gNodeExt != 0))
|
||||
{
|
||||
while (here->BSIM4v4GPgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GPgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodeExt != 0) && (here->BSIM4v4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4GEdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodeExt != 0) && (here->BSIM4v4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4GEspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodeExt != 0) && (here->BSIM4v4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4GEbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GEbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodeMid != 0) && (here->BSIM4v4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4GMdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GMdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodeMid != 0) && (here->BSIM4v4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4GMgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GMgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodeMid != 0) && (here->BSIM4v4gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v4GMgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GMgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodeMid != 0) && (here->BSIM4v4gNodeExt != 0))
|
||||
{
|
||||
while (here->BSIM4v4GMgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GMgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodeMid != 0) && (here->BSIM4v4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4GMspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GMspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodeMid != 0) && (here->BSIM4v4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4GMbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GMbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNodePrime != 0) && (here->BSIM4v4gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v4DPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodePrime != 0) && (here->BSIM4v4gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v4GPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4gNodeExt != 0) && (here->BSIM4v4gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v4GEgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4GEgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNodePrime != 0) && (here->BSIM4v4gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v4SPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4bNodePrime != 0) && (here->BSIM4v4gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v4BPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4BPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNodePrime != 0) && (here->BSIM4v4dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4DPdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNodePrime != 0) && (here->BSIM4v4sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4SPsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dbNode != 0) && (here->BSIM4v4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4DBdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dbNode != 0) && (here->BSIM4v4dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4DBdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dbNode != 0) && (here->BSIM4v4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4DBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dbNode != 0) && (here->BSIM4v4bNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4DBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4bNodePrime != 0) && (here->BSIM4v4dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4BPdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4BPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4bNodePrime != 0) && (here->BSIM4v4bNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4BPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4BPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4bNodePrime != 0) && (here->BSIM4v4sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4BPsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4BPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sbNode != 0) && (here->BSIM4v4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4SBspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sbNode != 0) && (here->BSIM4v4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4SBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sbNode != 0) && (here->BSIM4v4bNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4SBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sbNode != 0) && (here->BSIM4v4sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4SBsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4bNode != 0) && (here->BSIM4v4dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4BdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4BdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4bNode != 0) && (here->BSIM4v4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4BbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4BbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4bNode != 0) && (here->BSIM4v4sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4BsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4BsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4bNode != 0) && (here->BSIM4v4bNode != 0))
|
||||
{
|
||||
while (here->BSIM4v4BbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNode != 0) && (here->BSIM4v4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4DgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNode != 0) && (here->BSIM4v4sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4DspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4dNode != 0) && (here->BSIM4v4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4DbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4DbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNode != 0) && (here->BSIM4v4dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4SdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNode != 0) && (here->BSIM4v4gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4SgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v4sNode != 0) && (here->BSIM4v4bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v4SbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v4SbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -33,6 +33,7 @@ extern int BSIM4v4unsetup(GENmodel*,CKTcircuit*);
|
|||
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int BSIM4v4bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM4v4bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM4v4bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM4v4bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM4v4bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -74,8 +74,9 @@ SPICEdev BSIM4v4info = {
|
|||
&BSIM4v4iSize, /* DEVinstSize */
|
||||
&BSIM4v4mSize, /* DEVmodSize */
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ BSIM4v4bindCSC,
|
||||
/* DEVbindCSCComplex */ BSIM4v4bindCSCComplex,
|
||||
BSIM4v4bindCSC, /* DEVbindCSC */
|
||||
BSIM4v4bindCSCComplex, /* DEVbindCSCComplex */
|
||||
BSIM4v4bindCSCComplexToReal, /* DEVbindCSCComplexToReal */
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -900,3 +900,511 @@ BSIM4v5bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM4v5bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4v5model *model = (BSIM4v5model *)inModel ;
|
||||
BSIM4v5instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim4v5 models */
|
||||
for ( ; model != NULL ; model = model->BSIM4v5nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM4v5instances ; here != NULL ; here = here->BSIM4v5nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNodePrime != 0) && (here->BSIM4v5bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5DPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodePrime != 0) && (here->BSIM4v5bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5GPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNodePrime != 0) && (here->BSIM4v5bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5SPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5bNodePrime != 0) && (here->BSIM4v5dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5BPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5BPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5bNodePrime != 0) && (here->BSIM4v5gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5BPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5BPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5bNodePrime != 0) && (here->BSIM4v5sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5BPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5BPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5bNodePrime != 0) && (here->BSIM4v5bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5BPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5BPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNode != 0) && (here->BSIM4v5dNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5DdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodePrime != 0) && (here->BSIM4v5gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5GPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNode != 0) && (here->BSIM4v5sNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5SsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNodePrime != 0) && (here->BSIM4v5dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5DPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNodePrime != 0) && (here->BSIM4v5sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5SPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNode != 0) && (here->BSIM4v5dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5DdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodePrime != 0) && (here->BSIM4v5dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5GPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodePrime != 0) && (here->BSIM4v5sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5GPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNode != 0) && (here->BSIM4v5sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5SspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNodePrime != 0) && (here->BSIM4v5sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5DPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNodePrime != 0) && (here->BSIM4v5dNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5DPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNodePrime != 0) && (here->BSIM4v5gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5DPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNodePrime != 0) && (here->BSIM4v5gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5SPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNodePrime != 0) && (here->BSIM4v5sNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5SPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNodePrime != 0) && (here->BSIM4v5dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5SPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5qNode != 0) && (here->BSIM4v5qNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5QqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5qNode != 0) && (here->BSIM4v5bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5QbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5QbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5qNode != 0) && (here->BSIM4v5dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5QdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5qNode != 0) && (here->BSIM4v5sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5QspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5qNode != 0) && (here->BSIM4v5gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5QgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5QgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNodePrime != 0) && (here->BSIM4v5qNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5DPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNodePrime != 0) && (here->BSIM4v5qNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5SPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodePrime != 0) && (here->BSIM4v5qNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5GPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodeExt != 0) && (here->BSIM4v5gNodeExt != 0))
|
||||
{
|
||||
while (here->BSIM4v5GEgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GEgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodeExt != 0) && (here->BSIM4v5gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5GEgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GEgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodePrime != 0) && (here->BSIM4v5gNodeExt != 0))
|
||||
{
|
||||
while (here->BSIM4v5GPgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GPgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodeExt != 0) && (here->BSIM4v5dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5GEdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodeExt != 0) && (here->BSIM4v5sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5GEspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodeExt != 0) && (here->BSIM4v5bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5GEbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GEbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodeMid != 0) && (here->BSIM4v5dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5GMdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GMdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodeMid != 0) && (here->BSIM4v5gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5GMgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GMgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodeMid != 0) && (here->BSIM4v5gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v5GMgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GMgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodeMid != 0) && (here->BSIM4v5gNodeExt != 0))
|
||||
{
|
||||
while (here->BSIM4v5GMgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GMgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodeMid != 0) && (here->BSIM4v5sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5GMspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GMspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodeMid != 0) && (here->BSIM4v5bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5GMbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GMbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNodePrime != 0) && (here->BSIM4v5gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v5DPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodePrime != 0) && (here->BSIM4v5gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v5GPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5gNodeExt != 0) && (here->BSIM4v5gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v5GEgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5GEgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNodePrime != 0) && (here->BSIM4v5gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v5SPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5bNodePrime != 0) && (here->BSIM4v5gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v5BPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5BPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNodePrime != 0) && (here->BSIM4v5dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5DPdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNodePrime != 0) && (here->BSIM4v5sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5SPsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dbNode != 0) && (here->BSIM4v5dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5DBdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dbNode != 0) && (here->BSIM4v5dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5DBdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dbNode != 0) && (here->BSIM4v5bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5DBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dbNode != 0) && (here->BSIM4v5bNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5DBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5bNodePrime != 0) && (here->BSIM4v5dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5BPdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5BPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5bNodePrime != 0) && (here->BSIM4v5bNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5BPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5BPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5bNodePrime != 0) && (here->BSIM4v5sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5BPsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5BPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sbNode != 0) && (here->BSIM4v5sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5SBspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sbNode != 0) && (here->BSIM4v5bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5SBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sbNode != 0) && (here->BSIM4v5bNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5SBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sbNode != 0) && (here->BSIM4v5sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5SBsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5bNode != 0) && (here->BSIM4v5dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5BdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5BdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5bNode != 0) && (here->BSIM4v5bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5BbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5BbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5bNode != 0) && (here->BSIM4v5sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5BsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5BsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5bNode != 0) && (here->BSIM4v5bNode != 0))
|
||||
{
|
||||
while (here->BSIM4v5BbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNode != 0) && (here->BSIM4v5gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5DgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNode != 0) && (here->BSIM4v5sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5DspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5dNode != 0) && (here->BSIM4v5bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5DbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5DbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNode != 0) && (here->BSIM4v5dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5SdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNode != 0) && (here->BSIM4v5gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5SgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v5sNode != 0) && (here->BSIM4v5bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v5SbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v5SbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -30,6 +30,7 @@ extern int BSIM4v5noise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
|||
extern int BSIM4v5unsetup(GENmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int BSIM4v5bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM4v5bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM4v5bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM4v5bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM4v5bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -74,8 +74,9 @@ SPICEdev BSIM4v5info = {
|
|||
&BSIM4v5iSize, /* DEVinstSize */
|
||||
&BSIM4v5mSize, /* DEVmodSize */
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ BSIM4v5bindCSC,
|
||||
/* DEVbindCSCComplex */ BSIM4v5bindCSCComplex,
|
||||
BSIM4v5bindCSC, /* DEVbindCSC */
|
||||
BSIM4v5bindCSCComplex, /* DEVbindCSCComplex */
|
||||
BSIM4v5bindCSCComplexToReal, /* DEVbindCSCComplexToReal */
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -906,3 +906,511 @@ BSIM4v6bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
BSIM4v6bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
BSIM4v6model *model = (BSIM4v6model *)inModel ;
|
||||
BSIM4v6instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim4v6 models */
|
||||
for ( ; model != NULL ; model = model->BSIM4v6nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->BSIM4v6instances ; here != NULL ; here = here->BSIM4v6nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6DPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6GPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6SPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6BPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6BPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6BPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6BPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6BPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6BPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6BPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6BPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6dNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6DdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6GPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6sNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6SsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6DPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6SPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6DdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6GPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6GPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6SspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6DPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6DPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6DPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6SPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6SPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6SPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6qNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6QqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6QqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6QbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6QbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6QdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6QdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6QspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6QspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6qNode != 0) && (here->BSIM4v6gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6QgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6QgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6qNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6DPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6qNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6SPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6qNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6GPqPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GPqPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodeExt != 0))
|
||||
{
|
||||
while (here->BSIM4v6GEgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GEgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6GEgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GEgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodeExt != 0))
|
||||
{
|
||||
while (here->BSIM4v6GPgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GPgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6GEdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6GEspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6GEbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GEbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6GMdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GMdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6GMgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GMgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v6GMgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GMgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6gNodeExt != 0))
|
||||
{
|
||||
while (here->BSIM4v6GMgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GMgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6GMspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GMspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeMid != 0) && (here->BSIM4v6bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6GMbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GMbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v6DPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodePrime != 0) && (here->BSIM4v6gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v6GPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6gNodeExt != 0) && (here->BSIM4v6gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v6GEgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6GEgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v6SPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6gNodeMid != 0))
|
||||
{
|
||||
while (here->BSIM4v6BPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6BPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNodePrime != 0) && (here->BSIM4v6dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6DPdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNodePrime != 0) && (here->BSIM4v6sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6SPsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6DBdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6DBdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6DBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dbNode != 0) && (here->BSIM4v6bNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6DBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6BPdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6BPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6bNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6BPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6BPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNodePrime != 0) && (here->BSIM4v6sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6BPsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6BPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6SBspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6SBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6bNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6SBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sbNode != 0) && (here->BSIM4v6sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6SBsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6dbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6BdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6BdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6BbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6BbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6sbNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6BsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6BsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6bNode != 0) && (here->BSIM4v6bNode != 0))
|
||||
{
|
||||
while (here->BSIM4v6BbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6DgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6sNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6DspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6dNode != 0) && (here->BSIM4v6bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6DbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6DbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6dNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6SdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6gNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6SgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->BSIM4v6sNode != 0) && (here->BSIM4v6bNodePrime != 0))
|
||||
{
|
||||
while (here->BSIM4v6SbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->BSIM4v6SbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -30,6 +30,7 @@ extern int BSIM4v6noise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
|||
extern int BSIM4v6unsetup(GENmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int BSIM4v6bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM4v6bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int BSIM4v6bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM4v6bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int BSIM4v6bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -74,8 +74,9 @@ SPICEdev BSIM4v6info = {
|
|||
&BSIM4v6iSize, /* DEVinstSize */
|
||||
&BSIM4v6mSize, /* DEVmodSize */
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
BSIM4v6bindCSC, /* DEVbindklu */
|
||||
BSIM4v6bindCSCComplex, /* DEVbindkluComplex */
|
||||
BSIM4v6bindCSC, /* DEVbindCSC */
|
||||
BSIM4v6bindCSCComplex, /* DEVbindCSCComplex */
|
||||
BSIM4v6bindCSCComplexToReal, /* DEVbindCSCComplexToReal */
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1340,3 +1340,735 @@ B4SOIbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
B4SOIbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
B4SOImodel *model = (B4SOImodel *)inModel ;
|
||||
B4SOIinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the bsim4SiliconOnInsulator models */
|
||||
for ( ; model != NULL ; model = model->B4SOInextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->B4SOIinstances ; here != NULL ; here = here->B4SOInextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->B4SOItempNode != 0) && (here->B4SOItempNode != 0))
|
||||
{
|
||||
while (here->B4SOITemptempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOITemptempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOItempNode != 0) && (here->B4SOIdNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOITempdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOITempdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOItempNode != 0) && (here->B4SOIsNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOITempspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOITempspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOItempNode != 0) && (here->B4SOIgNode != 0))
|
||||
{
|
||||
while (here->B4SOITempgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOITempgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOItempNode != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOITempbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOITempbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNode != 0) && (here->B4SOItempNode != 0))
|
||||
{
|
||||
while (here->B4SOIGtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNodePrime != 0) && (here->B4SOItempNode != 0))
|
||||
{
|
||||
while (here->B4SOIDPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNodePrime != 0) && (here->B4SOItempNode != 0))
|
||||
{
|
||||
while (here->B4SOISPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIeNode != 0) && (here->B4SOItempNode != 0))
|
||||
{
|
||||
while (here->B4SOIEtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIEtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIbNode != 0) && (here->B4SOItempNode != 0))
|
||||
{
|
||||
while (here->B4SOIBtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIBtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIpNode != 0) && (here->B4SOItempNode != 0))
|
||||
{
|
||||
while (here->B4SOIPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOItempNode != 0) && (here->B4SOIeNode != 0))
|
||||
{
|
||||
while (here->B4SOITempePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOITempePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIbNode != 0) && (here->B4SOIpNode != 0))
|
||||
{
|
||||
while (here->B4SOIBpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIBpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIpNode != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOIPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIpNode != 0) && (here->B4SOIpNode != 0))
|
||||
{
|
||||
while (here->B4SOIPpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIPpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIpNode != 0) && (here->B4SOIgNode != 0))
|
||||
{
|
||||
while (here->B4SOIPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNode != 0) && (here->B4SOIpNode != 0))
|
||||
{
|
||||
while (here->B4SOIGpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeExt != 0) && (here->B4SOIgNodeExt != 0))
|
||||
{
|
||||
while (here->B4SOIGEgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGEgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeExt != 0) && (here->B4SOIgNode != 0))
|
||||
{
|
||||
while (here->B4SOIGEgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGEgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNode != 0) && (here->B4SOIgNodeExt != 0))
|
||||
{
|
||||
while (here->B4SOIGgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeExt != 0) && (here->B4SOIdNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIGEdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeExt != 0) && (here->B4SOIsNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIGEspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeExt != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOIGEbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGEbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeMid != 0) && (here->B4SOIdNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIGMdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGMdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeMid != 0) && (here->B4SOIgNode != 0))
|
||||
{
|
||||
while (here->B4SOIGMgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGMgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeMid != 0) && (here->B4SOIgNodeMid != 0))
|
||||
{
|
||||
while (here->B4SOIGMgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGMgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeMid != 0) && (here->B4SOIgNodeExt != 0))
|
||||
{
|
||||
while (here->B4SOIGMgePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGMgePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeMid != 0) && (here->B4SOIsNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIGMspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGMspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeMid != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOIGMbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGMbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeMid != 0) && (here->B4SOIeNode != 0))
|
||||
{
|
||||
while (here->B4SOIGMePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGMePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNodePrime != 0) && (here->B4SOIgNodeMid != 0))
|
||||
{
|
||||
while (here->B4SOIDPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNode != 0) && (here->B4SOIgNodeMid != 0))
|
||||
{
|
||||
while (here->B4SOIGgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNodeExt != 0) && (here->B4SOIgNodeMid != 0))
|
||||
{
|
||||
while (here->B4SOIGEgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGEgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNodePrime != 0) && (here->B4SOIgNodeMid != 0))
|
||||
{
|
||||
while (here->B4SOISPgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISPgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIeNode != 0) && (here->B4SOIgNodeMid != 0))
|
||||
{
|
||||
while (here->B4SOIEgmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIEgmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIeNode != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOIEbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIEbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNode != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOIGbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNodePrime != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOIDPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNodePrime != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOISPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIbNode != 0) && (here->B4SOIeNode != 0))
|
||||
{
|
||||
while (here->B4SOIBePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIBePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIbNode != 0) && (here->B4SOIgNode != 0))
|
||||
{
|
||||
while (here->B4SOIBgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIBgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIbNode != 0) && (here->B4SOIdNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIBdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIbNode != 0) && (here->B4SOIsNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIBspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIbNode != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOIBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIeNode != 0) && (here->B4SOIgNode != 0))
|
||||
{
|
||||
while (here->B4SOIEgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIEgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIeNode != 0) && (here->B4SOIdNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIEdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIEdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIeNode != 0) && (here->B4SOIsNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIEspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIEspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNode != 0) && (here->B4SOIeNode != 0))
|
||||
{
|
||||
while (here->B4SOIGePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNodePrime != 0) && (here->B4SOIeNode != 0))
|
||||
{
|
||||
while (here->B4SOIDPePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDPePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNodePrime != 0) && (here->B4SOIeNode != 0))
|
||||
{
|
||||
while (here->B4SOISPePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISPePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIeNode != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOIEbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIEbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIeNode != 0) && (here->B4SOIeNode != 0))
|
||||
{
|
||||
while (here->B4SOIEePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIEePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNode != 0) && (here->B4SOIgNode != 0))
|
||||
{
|
||||
while (here->B4SOIGgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNode != 0) && (here->B4SOIdNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIGdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgNode != 0) && (here->B4SOIsNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIGspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNodePrime != 0) && (here->B4SOIgNode != 0))
|
||||
{
|
||||
while (here->B4SOIDPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNodePrime != 0) && (here->B4SOIdNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIDPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNodePrime != 0) && (here->B4SOIsNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIDPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNodePrime != 0) && (here->B4SOIdNode != 0))
|
||||
{
|
||||
while (here->B4SOIDPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNodePrime != 0) && (here->B4SOIgNode != 0))
|
||||
{
|
||||
while (here->B4SOISPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNodePrime != 0) && (here->B4SOIdNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOISPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNodePrime != 0) && (here->B4SOIsNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOISPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNodePrime != 0) && (here->B4SOIsNode != 0))
|
||||
{
|
||||
while (here->B4SOISPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNode != 0) && (here->B4SOIdNode != 0))
|
||||
{
|
||||
while (here->B4SOIDdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNode != 0) && (here->B4SOIdNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIDdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNode != 0) && (here->B4SOIsNode != 0))
|
||||
{
|
||||
while (here->B4SOISsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNode != 0) && (here->B4SOIsNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOISspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNodePrime != 0) && (here->B4SOIdbNode != 0))
|
||||
{
|
||||
while (here->B4SOIDPdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNodePrime != 0) && (here->B4SOIsbNode != 0))
|
||||
{
|
||||
while (here->B4SOISPsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdbNode != 0) && (here->B4SOIdNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIDBdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdbNode != 0) && (here->B4SOIdbNode != 0))
|
||||
{
|
||||
while (here->B4SOIDBdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdbNode != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOIDBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsbNode != 0) && (here->B4SOIsNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOISBspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsbNode != 0) && (here->B4SOIsbNode != 0))
|
||||
{
|
||||
while (here->B4SOISBsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsbNode != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOISBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIbNode != 0) && (here->B4SOIdbNode != 0))
|
||||
{
|
||||
while (here->B4SOIBdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIbNode != 0) && (here->B4SOIsbNode != 0))
|
||||
{
|
||||
while (here->B4SOIBsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNode != 0) && (here->B4SOIgNode != 0))
|
||||
{
|
||||
while (here->B4SOIDgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNode != 0) && (here->B4SOIsNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOIDspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNode != 0) && (here->B4SOIdNodePrime != 0))
|
||||
{
|
||||
while (here->B4SOISdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNode != 0) && (here->B4SOIgNode != 0))
|
||||
{
|
||||
while (here->B4SOISgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIdNode != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOIDbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIDbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIsNode != 0) && (here->B4SOIbNode != 0))
|
||||
{
|
||||
while (here->B4SOISbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOISbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIvbsNode != 0) && (here->B4SOIvbsNode != 0))
|
||||
{
|
||||
while (here->B4SOIVbsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIVbsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIidsNode != 0) && (here->B4SOIidsNode != 0))
|
||||
{
|
||||
while (here->B4SOIIdsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIIdsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIicNode != 0) && (here->B4SOIicNode != 0))
|
||||
{
|
||||
while (here->B4SOIIcPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIIcPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIibsNode != 0) && (here->B4SOIibsNode != 0))
|
||||
{
|
||||
while (here->B4SOIIbsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIIbsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIibdNode != 0) && (here->B4SOIibdNode != 0))
|
||||
{
|
||||
while (here->B4SOIIbdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIIbdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIiiiNode != 0) && (here->B4SOIiiiNode != 0))
|
||||
{
|
||||
while (here->B4SOIIiiPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIIiiPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIigNode != 0) && (here->B4SOIigNode != 0))
|
||||
{
|
||||
while (here->B4SOIIgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIIgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgiggNode != 0) && (here->B4SOIgiggNode != 0))
|
||||
{
|
||||
while (here->B4SOIGiggPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGiggPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgigdNode != 0) && (here->B4SOIgigdNode != 0))
|
||||
{
|
||||
while (here->B4SOIGigdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGigdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIgigbNode != 0) && (here->B4SOIgigbNode != 0))
|
||||
{
|
||||
while (here->B4SOIGigbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIGigbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIigidlNode != 0) && (here->B4SOIigidlNode != 0))
|
||||
{
|
||||
while (here->B4SOIIgidlPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIIgidlPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIitunNode != 0) && (here->B4SOIitunNode != 0))
|
||||
{
|
||||
while (here->B4SOIItunPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIItunPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIibpNode != 0) && (here->B4SOIibpNode != 0))
|
||||
{
|
||||
while (here->B4SOIIbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIIbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIcbbNode != 0) && (here->B4SOIcbbNode != 0))
|
||||
{
|
||||
while (here->B4SOICbbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOICbbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIcbdNode != 0) && (here->B4SOIcbdNode != 0))
|
||||
{
|
||||
while (here->B4SOICbdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOICbdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIcbgNode != 0) && (here->B4SOIcbgNode != 0))
|
||||
{
|
||||
while (here->B4SOICbgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOICbgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIqbfNode != 0) && (here->B4SOIqbfNode != 0))
|
||||
{
|
||||
while (here->B4SOIQbfPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIQbfPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIqjsNode != 0) && (here->B4SOIqjsNode != 0))
|
||||
{
|
||||
while (here->B4SOIQjsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIQjsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->B4SOIqjdNode != 0) && (here->B4SOIqjdNode != 0))
|
||||
{
|
||||
while (here->B4SOIQjdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->B4SOIQjdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -32,6 +32,7 @@ extern int B4SOInoise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
|||
extern int B4SOIunsetup(GENmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int B4SOIbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int B4SOIbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int B4SOIbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int B4SOIbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int B4SOIbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ SPICEdev B4SOIinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ B4SOIbindCSC,
|
||||
/* DEVbindCSCComplex */ B4SOIbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ B4SOIbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -8,19 +8,18 @@ Author: 2012 Francesco Lannutti
|
|||
#include "ngspice/sperror.h"
|
||||
|
||||
int
|
||||
CAPbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
CAPbindCSC (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CAPmodel *model = (CAPmodel *)inModel;
|
||||
CAPinstance *here;
|
||||
CAPmodel *model = (CAPmodel *)inModel ;
|
||||
CAPinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the capacitor models */
|
||||
for( ; model != NULL; model = model->CAPnextModel ) {
|
||||
|
||||
for ( ; model != NULL ; model = model->CAPnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->CAPinstances; here != NULL ;
|
||||
here=here->CAPnextInstance) {
|
||||
|
||||
for (here = model->CAPinstances ; here != NULL ; here = here->CAPnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->CAPposNode != 0) && (here->CAPposNode != 0)) {
|
||||
while (here->CAPposPosptr != ckt->CKTmatrix->CKTbind_Sparse [i]) i ++ ;
|
||||
|
|
@ -46,23 +45,23 @@ CAPbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
||||
int
|
||||
CAPbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
||||
CAPbindCSCComplex (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CAPmodel *model = (CAPmodel *)inModel;
|
||||
CAPinstance *here;
|
||||
CAPmodel *model = (CAPmodel *)inModel ;
|
||||
CAPinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the capacitor models */
|
||||
for( ; model != NULL; model = model->CAPnextModel ) {
|
||||
|
||||
for ( ; model != NULL ; model = model->CAPnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->CAPinstances; here != NULL ;
|
||||
here=here->CAPnextInstance) {
|
||||
|
||||
for (here = model->CAPinstances ; here != NULL ; here = here->CAPnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->CAPposNode != 0) && (here->CAPposNode != 0)) {
|
||||
while (here->CAPposPosptr != ckt->CKTmatrix->CKTbind_CSC [i]) i ++ ;
|
||||
|
|
@ -88,5 +87,52 @@ CAPbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
}
|
||||
}
|
||||
return(OK);
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
||||
int
|
||||
CAPbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CAPmodel *model = (CAPmodel *)inModel ;
|
||||
CAPinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the capacitor models */
|
||||
for ( ; model != NULL ; model = model->CAPnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->CAPinstances ; here != NULL ; here = here->CAPnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->CAPposNode != 0) && (here->CAPposNode != 0))
|
||||
{
|
||||
while (here->CAPposPosptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CAPposPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CAPnegNode != 0) && (here->CAPnegNode != 0))
|
||||
{
|
||||
while (here->CAPnegNegptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CAPnegNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CAPposNode != 0) && (here->CAPnegNode != 0))
|
||||
{
|
||||
while (here->CAPposNegptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CAPposNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CAPnegNode != 0) && (here->CAPposNode != 0))
|
||||
{
|
||||
while (here->CAPnegPosptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CAPnegPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -24,6 +24,7 @@ extern int CAPtemp(GENmodel*,CKTcircuit*);
|
|||
extern int CAPtrunc(GENmodel*,CKTcircuit*,double*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int CAPbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int CAPbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int CAPbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int CAPbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int CAPbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -73,8 +73,9 @@ SPICEdev CAPinfo = {
|
|||
/* DEVinstSize */ &CAPiSize,
|
||||
/* DEVmodSize */ &CAPmSize,
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindklu */ CAPbindCSC,
|
||||
/* DEVbindkluComplex */ CAPbindCSCComplex,
|
||||
/* DEVbindCSC */ CAPbindCSC,
|
||||
/* DEVbindCSCComplex */ CAPbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ CAPbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -84,4 +84,3 @@ CAPload(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -66,3 +66,35 @@ CCCSbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
CCCSbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CCCSmodel *model = (CCCSmodel *)inModel ;
|
||||
CCCSinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the CurrentControlledCurrentSource models */
|
||||
for ( ; model != NULL ; model = model->CCCSnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->CCCSinstances ; here != NULL ; here = here->CCCSnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->CCCSposNode != 0) && (here->CCCScontBranch != 0))
|
||||
{
|
||||
while (here->CCCSposContBrptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CCCSposContBrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CCCSnegNode != 0) && (here->CCCScontBranch != 0))
|
||||
{
|
||||
while (here->CCCSnegContBrptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CCCSnegContBrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -19,6 +19,7 @@ extern int CCCSsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*);
|
|||
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int CCCSbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int CCCSbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int CCCSbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int CCCSbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int CCCSbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ SPICEdev CCCSinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ CCCSbindCSC,
|
||||
/* DEVbindCSCComplex */ CCCSbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ CCCSbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -102,3 +102,56 @@ CCVSbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
CCVSbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CCVSmodel *model = (CCVSmodel *)inModel ;
|
||||
CCVSinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the CurrentControlledVoltageSource models */
|
||||
for ( ; model != NULL ; model = model->CCVSnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->CCVSinstances ; here != NULL ; here = here->CCVSnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->CCVSposNode != 0) && (here->CCVSbranch != 0))
|
||||
{
|
||||
while (here->CCVSposIbrptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CCVSposIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CCVSnegNode != 0) && (here->CCVSbranch != 0))
|
||||
{
|
||||
while (here->CCVSnegIbrptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CCVSnegIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CCVSbranch != 0) && (here->CCVSnegNode != 0))
|
||||
{
|
||||
while (here->CCVSibrNegptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CCVSibrNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CCVSbranch != 0) && (here->CCVSposNode != 0))
|
||||
{
|
||||
while (here->CCVSibrPosptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CCVSibrPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CCVSbranch != 0) && (here->CCVScontBranch != 0))
|
||||
{
|
||||
while (here->CCVSibrContBrptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CCVSibrContBrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -19,6 +19,7 @@ extern int CCVSsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*);
|
|||
extern int CCVSunsetup(GENmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int CCVSbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int CCVSbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int CCVSbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int CCVSbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int CCVSbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ SPICEdev CCVSinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ CCVSbindCSC,
|
||||
/* DEVbindCSCComplex */ CCVSbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ CCVSbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ SPICEdev CPLinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ NULL,
|
||||
/* DEVbindCSCComplex */ NULL,
|
||||
/* DEVbindCSCComplexToReal */ NULL,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -90,3 +90,49 @@ CSWbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
CSWbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
CSWmodel *model = (CSWmodel *)inModel ;
|
||||
CSWinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the csw models */
|
||||
for ( ; model != NULL ; model = model->CSWnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->CSWinstances ; here != NULL ; here = here->CSWnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->CSWposNode != 0) && (here->CSWposNode != 0))
|
||||
{
|
||||
while (here->CSWposPosptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CSWposPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CSWposNode != 0) && (here->CSWnegNode != 0))
|
||||
{
|
||||
while (here->CSWposNegptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CSWposNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CSWnegNode != 0) && (here->CSWposNode != 0))
|
||||
{
|
||||
while (here->CSWnegPosptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CSWnegPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->CSWnegNode != 0) && (here->CSWnegNode != 0))
|
||||
{
|
||||
while (here->CSWnegNegptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->CSWnegNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -19,6 +19,7 @@ extern int CSWnoise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
|||
extern int CSWtrunc(GENmodel*,CKTcircuit*,double*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int CSWbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int CSWbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int CSWbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int CSWbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int CSWbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ SPICEdev CSWinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ CSWbindCSC,
|
||||
/* DEVbindCSCComplex */ CSWbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ CSWbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -114,3 +114,70 @@ DIObindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
DIObindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
DIOmodel *model = (DIOmodel *)inModel ;
|
||||
DIOinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the Diode models */
|
||||
for ( ; model != NULL ; model = model->DIOnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->DIOinstances ; here != NULL ; here = here->DIOnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->DIOposNode != 0) && (here->DIOposPrimeNode != 0))
|
||||
{
|
||||
while (here->DIOposPosPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->DIOposPosPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->DIOnegNode != 0) && (here->DIOposPrimeNode != 0))
|
||||
{
|
||||
while (here->DIOnegPosPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->DIOnegPosPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->DIOposPrimeNode != 0) && (here->DIOposNode != 0))
|
||||
{
|
||||
while (here->DIOposPrimePosPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->DIOposPrimePosPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->DIOposPrimeNode != 0) && (here->DIOnegNode != 0))
|
||||
{
|
||||
while (here->DIOposPrimeNegPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->DIOposPrimeNegPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->DIOposNode != 0) && (here->DIOposNode != 0))
|
||||
{
|
||||
while (here->DIOposPosPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->DIOposPosPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->DIOnegNode != 0) && (here->DIOnegNode != 0))
|
||||
{
|
||||
while (here->DIOnegNegPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->DIOnegNegPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->DIOposPrimeNode != 0) && (here->DIOposPrimeNode != 0))
|
||||
{
|
||||
while (here->DIOposPrimePosPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->DIOposPrimePosPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -30,6 +30,7 @@ extern int DIOnoise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
|||
extern int DIOdSetup(DIOmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int DIObindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int DIObindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int DIObindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int DIObindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int DIObindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -77,6 +77,7 @@ SPICEdev DIOinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ DIObindCSC,
|
||||
/* DEVbindCSCComplex */ DIObindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ DIObindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -378,3 +378,217 @@ HFETAbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
HFETAbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
HFETAmodel *model = (HFETAmodel *)inModel ;
|
||||
HFETAinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the HfetA models */
|
||||
for ( ; model != NULL ; model = model->HFETAnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->HFETAinstances ; here != NULL ; here = here->HFETAnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainNode != 0) && (here->HFETAdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAgatePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAgatePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAgatePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAgatePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourceNode != 0) && (here->HFETAsourcePrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAsourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAsourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainNode != 0))
|
||||
{
|
||||
while (here->HFETAdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAgatePrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAdrainPrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAdrainPrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAsourcePrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAdrainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAdrainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAgatePrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAsourcePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAsourcePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourceNode != 0))
|
||||
{
|
||||
while (here->HFETAsourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAsourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAsourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAsourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainNode != 0) && (here->HFETAdrainNode != 0))
|
||||
{
|
||||
while (here->HFETAdrainDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgatePrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAgatePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAgatePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourceNode != 0) && (here->HFETAsourceNode != 0))
|
||||
{
|
||||
while (here->HFETAsourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAdrainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAdrainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAsourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAsourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0))
|
||||
{
|
||||
while (here->HFETAdrainPrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAdrainPrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAdrainPrmPrmDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAdrainPrmPrmDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAdrainPrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAdrainPrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAdrainPrmPrmNode != 0))
|
||||
{
|
||||
while (here->HFETAgatePrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAgatePrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAdrainPrmPrmNode != 0) && (here->HFETAdrainPrmPrmNode != 0))
|
||||
{
|
||||
while (here->HFETAdrainPrmPrmDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAdrainPrmPrmDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0))
|
||||
{
|
||||
while (here->HFETAsourcePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAsourcePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAsourcePrmPrmSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAsourcePrmPrmSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAgatePrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAsourcePrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAsourcePrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAsourcePrmPrmNode != 0))
|
||||
{
|
||||
while (here->HFETAgatePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAgatePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAsourcePrmPrmNode != 0) && (here->HFETAsourcePrmPrmNode != 0))
|
||||
{
|
||||
while (here->HFETAsourcePrmPrmSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAsourcePrmPrmSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgateNode != 0) && (here->HFETAgateNode != 0))
|
||||
{
|
||||
while (here->HFETAgateGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAgateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgateNode != 0) && (here->HFETAgatePrimeNode != 0))
|
||||
{
|
||||
while (here->HFETAgateGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAgateGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFETAgatePrimeNode != 0) && (here->HFETAgateNode != 0))
|
||||
{
|
||||
while (here->HFETAgatePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFETAgatePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -20,6 +20,7 @@ extern int HFETAtrunc(GENmodel*,CKTcircuit*,double*);
|
|||
extern int HFETAunsetup(GENmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int HFETAbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int HFETAbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int HFETAbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int HFETAbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int HFETAbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ SPICEdev HFETAinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ HFETAbindCSC,
|
||||
/* DEVbindCSCComplex */ HFETAbindCSC,
|
||||
/* DEVbindCSCComplexToReal */ HFETAbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -222,3 +222,126 @@ HFET2bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
HFET2bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
HFET2model *model = (HFET2model *)inModel ;
|
||||
HFET2instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the HfetB models */
|
||||
for ( ; model != NULL ; model = model->HFET2nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->HFET2instances ; here != NULL ; here = here->HFET2nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainNode != 0) && (here->HFET2drainPrimeNode != 0))
|
||||
{
|
||||
while (here->HFET2drainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2drainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2gateNode != 0) && (here->HFET2drainPrimeNode != 0))
|
||||
{
|
||||
while (here->HFET2gateDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2gateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2gateNode != 0) && (here->HFET2sourcePrimeNode != 0))
|
||||
{
|
||||
while (here->HFET2gateSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2gateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourceNode != 0) && (here->HFET2sourcePrimeNode != 0))
|
||||
{
|
||||
while (here->HFET2sourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2sourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainPrimeNode != 0) && (here->HFET2drainNode != 0))
|
||||
{
|
||||
while (here->HFET2drainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2drainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainPrimeNode != 0) && (here->HFET2gateNode != 0))
|
||||
{
|
||||
while (here->HFET2drainPrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2drainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainPrimeNode != 0) && (here->HFET2sourcePrimeNode != 0))
|
||||
{
|
||||
while (here->HFET2drainPriHFET2ourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2drainPriHFET2ourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourcePrimeNode != 0) && (here->HFET2gateNode != 0))
|
||||
{
|
||||
while (here->HFET2sourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2sourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourcePrimeNode != 0) && (here->HFET2sourceNode != 0))
|
||||
{
|
||||
while (here->HFET2sourcePriHFET2ourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2sourcePriHFET2ourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourcePrimeNode != 0) && (here->HFET2drainPrimeNode != 0))
|
||||
{
|
||||
while (here->HFET2sourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2sourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainNode != 0) && (here->HFET2drainNode != 0))
|
||||
{
|
||||
while (here->HFET2drainDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2drainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2gateNode != 0) && (here->HFET2gateNode != 0))
|
||||
{
|
||||
while (here->HFET2gateGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2gateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourceNode != 0) && (here->HFET2sourceNode != 0))
|
||||
{
|
||||
while (here->HFET2sourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2sourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2drainPrimeNode != 0) && (here->HFET2drainPrimeNode != 0))
|
||||
{
|
||||
while (here->HFET2drainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2drainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HFET2sourcePrimeNode != 0) && (here->HFET2sourcePrimeNode != 0))
|
||||
{
|
||||
while (here->HFET2sourcePriHFET2ourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HFET2sourcePriHFET2ourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ extern int HFET2trunc(GENmodel*,CKTcircuit*,double*);
|
|||
extern int HFET2unsetup( GENmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int HFET2bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int HFET2bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int HFET2bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int HFET2bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int HFET2bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ SPICEdev HFET2info = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ HFET2bindCSC,
|
||||
/* DEVbindCSCComplex */ HFET2bindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ HFET2bindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -594,3 +594,336 @@ HSM2bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
HSM2bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
HSM2model *model = (HSM2model *)inModel ;
|
||||
HSM2instance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the hsm2 models */
|
||||
for ( ; model != NULL ; model = model->HSM2nextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->HSM2instances ; here != NULL ; here = here->HSM2nextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->HSM2dNodePrime != 0) && (here->HSM2bNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2DPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2DPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2sNodePrime != 0) && (here->HSM2bNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2SPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2SPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2gNodePrime != 0) && (here->HSM2bNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2GPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2GPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2bNodePrime != 0) && (here->HSM2dNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2BPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2BPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2bNodePrime != 0) && (here->HSM2sNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2BPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2BPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2bNodePrime != 0) && (here->HSM2gNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2BPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2BPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2bNodePrime != 0) && (here->HSM2bNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2BPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2BPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2dNode != 0) && (here->HSM2dNode != 0))
|
||||
{
|
||||
while (here->HSM2DdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2DdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2gNodePrime != 0) && (here->HSM2gNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2GPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2GPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2sNode != 0) && (here->HSM2sNode != 0))
|
||||
{
|
||||
while (here->HSM2SsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2SsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2dNodePrime != 0) && (here->HSM2dNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2DPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2DPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2sNodePrime != 0) && (here->HSM2sNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2SPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2SPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2dNode != 0) && (here->HSM2dNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2DdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2DdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2gNodePrime != 0) && (here->HSM2dNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2GPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2GPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2gNodePrime != 0) && (here->HSM2sNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2GPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2GPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2sNode != 0) && (here->HSM2sNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2SspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2SspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2dNodePrime != 0) && (here->HSM2sNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2DPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2DPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2dNodePrime != 0) && (here->HSM2dNode != 0))
|
||||
{
|
||||
while (here->HSM2DPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2DPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2dNodePrime != 0) && (here->HSM2gNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2DPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2DPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2sNodePrime != 0) && (here->HSM2gNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2SPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2SPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2sNodePrime != 0) && (here->HSM2sNode != 0))
|
||||
{
|
||||
while (here->HSM2SPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2SPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2sNodePrime != 0) && (here->HSM2dNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2SPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2SPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2gNode != 0) && (here->HSM2gNode != 0))
|
||||
{
|
||||
while (here->HSM2GgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2GgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2gNode != 0) && (here->HSM2gNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2GgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2GgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2gNodePrime != 0) && (here->HSM2gNode != 0))
|
||||
{
|
||||
while (here->HSM2GPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2GPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2gNode != 0) && (here->HSM2dNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2GdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2GdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2gNode != 0) && (here->HSM2sNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2GspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2GspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2gNode != 0) && (here->HSM2bNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2GbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2GbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2dNodePrime != 0) && (here->HSM2dbNode != 0))
|
||||
{
|
||||
while (here->HSM2DPdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2DPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2sNodePrime != 0) && (here->HSM2sbNode != 0))
|
||||
{
|
||||
while (here->HSM2SPsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2SPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2dbNode != 0) && (here->HSM2dNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2DBdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2DBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2dbNode != 0) && (here->HSM2dbNode != 0))
|
||||
{
|
||||
while (here->HSM2DBdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2DBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2dbNode != 0) && (here->HSM2bNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2DBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2DBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2dbNode != 0) && (here->HSM2bNode != 0))
|
||||
{
|
||||
while (here->HSM2DBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2DBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2bNodePrime != 0) && (here->HSM2dbNode != 0))
|
||||
{
|
||||
while (here->HSM2BPdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2BPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2bNodePrime != 0) && (here->HSM2bNode != 0))
|
||||
{
|
||||
while (here->HSM2BPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2BPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2bNodePrime != 0) && (here->HSM2sbNode != 0))
|
||||
{
|
||||
while (here->HSM2BPsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2BPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2sbNode != 0) && (here->HSM2sNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2SBspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2SBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2sbNode != 0) && (here->HSM2bNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2SBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2SBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2sbNode != 0) && (here->HSM2bNode != 0))
|
||||
{
|
||||
while (here->HSM2SBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2SBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2sbNode != 0) && (here->HSM2sbNode != 0))
|
||||
{
|
||||
while (here->HSM2SBsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2SBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2bNode != 0) && (here->HSM2dbNode != 0))
|
||||
{
|
||||
while (here->HSM2BdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2BdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2bNode != 0) && (here->HSM2bNodePrime != 0))
|
||||
{
|
||||
while (here->HSM2BbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2BbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2bNode != 0) && (here->HSM2sbNode != 0))
|
||||
{
|
||||
while (here->HSM2BsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2BsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSM2bNode != 0) && (here->HSM2bNode != 0))
|
||||
{
|
||||
while (here->HSM2BbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSM2BbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -39,6 +39,7 @@ extern int HSM2trunc(GENmodel*,CKTcircuit*,double*);
|
|||
extern int HSM2noise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int HSM2bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int HSM2bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int HSM2bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int HSM2bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int HSM2bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ SPICEdev HSM2info = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ HSM2bindCSC,
|
||||
/* DEVbindCSCComplex */ HSM2bindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ HSM2bindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1098,3 +1098,672 @@ HSMHVbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
HSMHVbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
HSMHVmodel *model = (HSMHVmodel *)inModel ;
|
||||
HSMHVinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the hsmhv models */
|
||||
for ( ; model != NULL ; model = model->HSMHVnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->HSMHVinstances ; here != NULL ; here = here->HSMHVnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNodePrime != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVDPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNodePrime != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVSPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNodePrime != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVGPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNodePrime != 0) && (here->HSMHVdNode != 0))
|
||||
{
|
||||
while (here->HSMHVBPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNodePrime != 0) && (here->HSMHVdNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVBPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNodePrime != 0) && (here->HSMHVsNode != 0))
|
||||
{
|
||||
while (here->HSMHVBPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNodePrime != 0) && (here->HSMHVsNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVBPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNodePrime != 0) && (here->HSMHVgNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVBPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNodePrime != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVBPbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBPbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNode != 0) && (here->HSMHVdNode != 0))
|
||||
{
|
||||
while (here->HSMHVDdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNodePrime != 0) && (here->HSMHVgNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVGPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNode != 0) && (here->HSMHVsNode != 0))
|
||||
{
|
||||
while (here->HSMHVSsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNodePrime != 0) && (here->HSMHVdNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVDPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNodePrime != 0) && (here->HSMHVsNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVSPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNode != 0) && (here->HSMHVdNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVDdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNodePrime != 0) && (here->HSMHVdNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVGPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNodePrime != 0) && (here->HSMHVsNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVGPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNode != 0) && (here->HSMHVsNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVSspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNodePrime != 0) && (here->HSMHVsNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVDPspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDPspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNodePrime != 0) && (here->HSMHVdNode != 0))
|
||||
{
|
||||
while (here->HSMHVDPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNodePrime != 0) && (here->HSMHVgNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVDPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNodePrime != 0) && (here->HSMHVgNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVSPgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSPgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNodePrime != 0) && (here->HSMHVsNode != 0))
|
||||
{
|
||||
while (here->HSMHVSPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNodePrime != 0) && (here->HSMHVdNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVSPdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSPdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNode != 0) && (here->HSMHVgNode != 0))
|
||||
{
|
||||
while (here->HSMHVGgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNode != 0) && (here->HSMHVgNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVGgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNodePrime != 0) && (here->HSMHVgNode != 0))
|
||||
{
|
||||
while (here->HSMHVGPgPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGPgPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
/* i = 0 ;
|
||||
if ((here->HSMHVgNode != 0) && (here->HSMHVdNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVGdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNode != 0) && (here->HSMHVsNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVGspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNode != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVGbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
*/
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNode != 0) && (here->HSMHVdbNode != 0))
|
||||
{
|
||||
while (here->HSMHVDdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNode != 0) && (here->HSMHVsbNode != 0))
|
||||
{
|
||||
while (here->HSMHVSsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdbNode != 0) && (here->HSMHVdNode != 0))
|
||||
{
|
||||
while (here->HSMHVDBdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDBdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdbNode != 0) && (here->HSMHVdbNode != 0))
|
||||
{
|
||||
while (here->HSMHVDBdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdbNode != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVDBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
/* i = 0 ;
|
||||
if ((here->HSMHVdbNode != 0) && (here->HSMHVbNode != 0))
|
||||
{
|
||||
while (here->HSMHVDBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
*/
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNodePrime != 0) && (here->HSMHVdbNode != 0))
|
||||
{
|
||||
while (here->HSMHVBPdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBPdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNodePrime != 0) && (here->HSMHVbNode != 0))
|
||||
{
|
||||
while (here->HSMHVBPbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBPbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNodePrime != 0) && (here->HSMHVsbNode != 0))
|
||||
{
|
||||
while (here->HSMHVBPsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBPsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsbNode != 0) && (here->HSMHVsNode != 0))
|
||||
{
|
||||
while (here->HSMHVSBsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSBsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsbNode != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVSBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
/* i = 0 ;
|
||||
if ((here->HSMHVsbNode != 0) && (here->HSMHVbNode != 0))
|
||||
{
|
||||
while (here->HSMHVSBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
*/
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsbNode != 0) && (here->HSMHVsbNode != 0))
|
||||
{
|
||||
while (here->HSMHVSBsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
/* i = 0 ;
|
||||
if ((here->HSMHVbNode != 0) && (here->HSMHVdbNode != 0))
|
||||
{
|
||||
while (here->HSMHVBdbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBdbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
*/
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNode != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
/* i = 0 ;
|
||||
if ((here->HSMHVbNode != 0) && (here->HSMHVsbNode != 0))
|
||||
{
|
||||
while (here->HSMHVBsbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBsbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
*/
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNode != 0) && (here->HSMHVbNode != 0))
|
||||
{
|
||||
while (here->HSMHVBbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNode != 0) && (here->HSMHVgNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVDgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNode != 0) && (here->HSMHVsNode != 0))
|
||||
{
|
||||
while (here->HSMHVDsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNode != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVDbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNodePrime != 0) && (here->HSMHVsNode != 0))
|
||||
{
|
||||
while (here->HSMHVDPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNode != 0) && (here->HSMHVgNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVSgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNode != 0) && (here->HSMHVdNode != 0))
|
||||
{
|
||||
while (here->HSMHVSdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNode != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVSbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNodePrime != 0) && (here->HSMHVdNode != 0))
|
||||
{
|
||||
while (here->HSMHVSPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNodePrime != 0) && (here->HSMHVdNode != 0))
|
||||
{
|
||||
while (here->HSMHVGPdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGPdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNodePrime != 0) && (here->HSMHVsNode != 0))
|
||||
{
|
||||
while (here->HSMHVGPsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGPsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNode != 0) && (here->HSMHVsubNode != 0))
|
||||
{
|
||||
while (here->HSMHVDsubPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDsubPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNodePrime != 0) && (here->HSMHVsubNode != 0))
|
||||
{
|
||||
while (here->HSMHVDPsubPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDPsubPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNode != 0) && (here->HSMHVsubNode != 0))
|
||||
{
|
||||
while (here->HSMHVSsubPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSsubPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNodePrime != 0) && (here->HSMHVsubNode != 0))
|
||||
{
|
||||
while (here->HSMHVSPsubPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSPsubPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVtempNode != 0) && (here->HSMHVtempNode != 0))
|
||||
{
|
||||
while (here->HSMHVTemptempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVTemptempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVtempNode != 0) && (here->HSMHVdNode != 0))
|
||||
{
|
||||
while (here->HSMHVTempdPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVTempdPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVtempNode != 0) && (here->HSMHVdNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVTempdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVTempdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVtempNode != 0) && (here->HSMHVsNode != 0))
|
||||
{
|
||||
while (here->HSMHVTempsPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVTempsPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVtempNode != 0) && (here->HSMHVsNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVTempspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVTempspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNodePrime != 0) && (here->HSMHVtempNode != 0))
|
||||
{
|
||||
while (here->HSMHVDPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNodePrime != 0) && (here->HSMHVtempNode != 0))
|
||||
{
|
||||
while (here->HSMHVSPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVtempNode != 0) && (here->HSMHVgNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVTempgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVTempgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVtempNode != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVTempbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVTempbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNodePrime != 0) && (here->HSMHVtempNode != 0))
|
||||
{
|
||||
while (here->HSMHVGPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNodePrime != 0) && (here->HSMHVtempNode != 0))
|
||||
{
|
||||
while (here->HSMHVBPtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBPtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdbNode != 0) && (here->HSMHVtempNode != 0))
|
||||
{
|
||||
while (here->HSMHVDBtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDBtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsbNode != 0) && (here->HSMHVtempNode != 0))
|
||||
{
|
||||
while (here->HSMHVSBtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSBtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNode != 0) && (here->HSMHVtempNode != 0))
|
||||
{
|
||||
while (here->HSMHVDtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNode != 0) && (here->HSMHVtempNode != 0))
|
||||
{
|
||||
while (here->HSMHVStempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVStempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVdNodePrime != 0) && (here->HSMHVqiNode != 0))
|
||||
{
|
||||
while (here->HSMHVDPqiPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVDPqiPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNodePrime != 0) && (here->HSMHVqiNode != 0))
|
||||
{
|
||||
while (here->HSMHVGPqiPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGPqiPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVgNodePrime != 0) && (here->HSMHVqbNode != 0))
|
||||
{
|
||||
while (here->HSMHVGPqbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVGPqbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVsNodePrime != 0) && (here->HSMHVqiNode != 0))
|
||||
{
|
||||
while (here->HSMHVSPqiPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVSPqiPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVbNodePrime != 0) && (here->HSMHVqbNode != 0))
|
||||
{
|
||||
while (here->HSMHVBPqbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVBPqbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVqiNode != 0) && (here->HSMHVdNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVQIdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVQIdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVqiNode != 0) && (here->HSMHVgNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVQIgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVQIgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVqiNode != 0) && (here->HSMHVsNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVQIspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVQIspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVqiNode != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVQIbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVQIbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVqiNode != 0) && (here->HSMHVqiNode != 0))
|
||||
{
|
||||
while (here->HSMHVQIqiPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVQIqiPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVqbNode != 0) && (here->HSMHVdNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVQBdpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVQBdpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVqbNode != 0) && (here->HSMHVgNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVQBgpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVQBgpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVqbNode != 0) && (here->HSMHVsNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVQBspPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVQBspPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVqbNode != 0) && (here->HSMHVbNodePrime != 0))
|
||||
{
|
||||
while (here->HSMHVQBbpPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVQBbpPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVqbNode != 0) && (here->HSMHVqbNode != 0))
|
||||
{
|
||||
while (here->HSMHVQBqbPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVQBqbPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVqiNode != 0) && (here->HSMHVtempNode != 0))
|
||||
{
|
||||
while (here->HSMHVQItempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVQItempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->HSMHVqbNode != 0) && (here->HSMHVtempNode != 0))
|
||||
{
|
||||
while (here->HSMHVQBtempPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->HSMHVQBtempPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ extern int HSMHVtrunc(GENmodel*,CKTcircuit*,double*);
|
|||
extern int HSMHVnoise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int HSMHVbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int HSMHVbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int HSMHVbindCSC (GENmodel*, CKTcircuit*);
|
||||
extern int HSMHVbindCSCComplex (GENmodel*, CKTcircuit*);
|
||||
extern int HSMHVbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ SPICEdev HSMHVinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ HSMHVbindCSC,
|
||||
/* DEVbindCSCComplex */ HSMHVbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ HSMHVbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -103,6 +103,59 @@ INDbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
INDbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
INDmodel *model = (INDmodel *)inModel ;
|
||||
INDinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the Inductor models */
|
||||
for ( ; model != NULL ; model = model->INDnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->INDinstances ; here != NULL ; here = here->INDnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->INDposNode != 0) && (here->INDbrEq != 0))
|
||||
{
|
||||
while (here->INDposIbrptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->INDposIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDnegNode != 0) && (here->INDbrEq != 0))
|
||||
{
|
||||
while (here->INDnegIbrptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->INDnegIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDbrEq != 0) && (here->INDnegNode != 0))
|
||||
{
|
||||
while (here->INDibrNegptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->INDibrNegptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDbrEq != 0) && (here->INDposNode != 0))
|
||||
{
|
||||
while (here->INDibrPosptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->INDibrPosptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->INDbrEq != 0) && (here->INDbrEq != 0))
|
||||
{
|
||||
while (here->INDibrIbrptr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->INDibrIbrptr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
||||
#ifdef MUTUAL
|
||||
int
|
||||
MUTbindCSC(GENmodel *inModel, CKTcircuit *ckt)
|
||||
|
|
@ -163,4 +216,36 @@ MUTbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
MUTbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MUTmodel *model = (MUTmodel *)inModel ;
|
||||
MUTinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the MutualInductor models */
|
||||
for ( ; model != NULL ; model = model->MUTnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MUTinstances ; here != NULL ; here = here->MUTnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->MUTind1->INDbrEq != 0) && (here->MUTind2->INDbrEq != 0))
|
||||
{
|
||||
while (here->MUTbr1br2 != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MUTbr1br2 = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MUTind2->INDbrEq != 0) && (here->MUTind1->INDbrEq != 0))
|
||||
{
|
||||
while (here->MUTbr2br1 != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MUTbr2br1 = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -38,10 +38,12 @@ extern int MUTsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*);
|
|||
extern int MUTtemp(GENmodel *inModel, CKTcircuit *ckt);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int INDbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int INDbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int MUTbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int MUTbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int INDbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int INDbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int INDbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
extern int MUTbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int MUTbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int MUTbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ SPICEdev INDinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ INDbindCSC,
|
||||
/* DEVbindCSCComplex */ INDbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ INDbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
@ -148,6 +149,7 @@ SPICEdev MUTinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ MUTbindCSC,
|
||||
/* DEVbindCSCComplex */ MUTbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ MUTbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ SPICEdev ISRCinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ NULL,
|
||||
/* DEVbindCSCComplex */ NULL,
|
||||
/* DEVbindCSCComplexToReal */ NULL,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -222,3 +222,85 @@ JFETbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
JFETbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
JFETmodel *model = (JFETmodel *)inModel ;
|
||||
JFETinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the Jfet models */
|
||||
for ( ; model != NULL ; model = model->JFETnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->JFETinstances ; here != NULL ; here = here->JFETnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainNode != 0) && (here->JFETdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->JFETdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFETdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETgateNode != 0) && (here->JFETdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->JFETgateDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFETgateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETgateNode != 0) && (here->JFETsourcePrimeNode != 0))
|
||||
{
|
||||
while (here->JFETgateSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFETgateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainPrimeNode != 0) && (here->JFETdrainNode != 0))
|
||||
{
|
||||
while (here->JFETdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFETdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainPrimeNode != 0) && (here->JFETgateNode != 0))
|
||||
{
|
||||
while (here->JFETdrainPrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFETdrainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourcePrimeNode != 0) && (here->JFETgateNode != 0))
|
||||
{
|
||||
while (here->JFETsourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFETsourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETdrainNode != 0) && (here->JFETdrainNode != 0))
|
||||
{
|
||||
while (here->JFETdrainDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFETdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETgateNode != 0) && (here->JFETgateNode != 0))
|
||||
{
|
||||
while (here->JFETgateGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFETgateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->JFETsourceNode != 0) && (here->JFETsourceNode != 0))
|
||||
{
|
||||
while (here->JFETsourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->JFETsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -24,6 +24,7 @@ extern int JFETnoise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
|||
extern int JFETdSetup(GENmodel*,CKTcircuit*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int JFETbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int JFETbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int JFETbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int JFETbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int JFETbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ SPICEdev JFETinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ JFETbindCSC,
|
||||
/* DEVbindCSCComplex */ JFETbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ JFETbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -222,3 +222,85 @@ JFET2bindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
JFET2bindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
JFET2model *model = (JFET2model *)inModel ;
|
||||
JFET2instance *here ;
|
||||
int i ;
|
||||
|
||||
/* 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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -24,6 +24,7 @@ extern int JFET2trunc(GENmodel*,CKTcircuit*,double*);
|
|||
extern int JFET2noise(int,int,GENmodel*,CKTcircuit*,Ndata*,double*);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int JFET2bindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int JFET2bindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int JFET2bindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int JFET2bindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int JFET2bindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ SPICEdev JFET2info = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ JFET2bindCSC,
|
||||
/* DEVbindCSCComplex */ JFET2bindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ JFET2bindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -282,3 +282,161 @@ LTRAbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
LTRAbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
LTRAmodel *model = (LTRAmodel *)inModel ;
|
||||
LTRAinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the TransmissionLine 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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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] ;
|
||||
}
|
||||
|
||||
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) ;
|
||||
}
|
||||
|
|
@ -46,6 +46,7 @@ extern void LTRArlcCoeffsSetup(double*,double*,double*,double*,double*,double*,i
|
|||
extern int LTRAstraightLineCheck(double,double,double,double,double,double,double,double);
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int LTRAbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int LTRAbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int LTRAbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int LTRAbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int LTRAbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ SPICEdev LTRAinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ LTRAbindCSC,
|
||||
/* DEVbindCSCComplex */ LTRAbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ LTRAbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -222,3 +222,85 @@ MESbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
MESbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MESmodel *model = (MESmodel *)inModel ;
|
||||
MESinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mes models */
|
||||
for ( ; model != NULL ; model = model->MESnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MESinstances ; here != NULL ; here = here->MESnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->MESdrainNode != 0) && (here->MESdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->MESdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESgateNode != 0) && (here->MESdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->MESgateDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESgateDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESgateNode != 0) && (here->MESsourcePrimeNode != 0))
|
||||
{
|
||||
while (here->MESgateSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESgateSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainPrimeNode != 0) && (here->MESdrainNode != 0))
|
||||
{
|
||||
while (here->MESdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainPrimeNode != 0) && (here->MESgateNode != 0))
|
||||
{
|
||||
while (here->MESdrainPrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESdrainPrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourcePrimeNode != 0) && (here->MESgateNode != 0))
|
||||
{
|
||||
while (here->MESsourcePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESsourcePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESdrainNode != 0) && (here->MESdrainNode != 0))
|
||||
{
|
||||
while (here->MESdrainDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESgateNode != 0) && (here->MESgateNode != 0))
|
||||
{
|
||||
while (here->MESgateGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESgateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESsourceNode != 0) && (here->MESsourceNode != 0))
|
||||
{
|
||||
while (here->MESsourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
|
|
@ -25,6 +25,7 @@ extern int MESdSetup(GENmodel*,CKTcircuit*);
|
|||
|
||||
|
||||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
extern int MESbindCSC(GENmodel*, CKTcircuit*);
|
||||
extern int MESbindCSCComplex(GENmodel*, CKTcircuit*);
|
||||
extern int MESbindCSC (GENmodel*, CKTcircuit*) ;
|
||||
extern int MESbindCSCComplex (GENmodel*, CKTcircuit*) ;
|
||||
extern int MESbindCSCComplexToReal (GENmodel*, CKTcircuit*) ;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ SPICEdev MESinfo = {
|
|||
#if defined(KLU) || defined(SuperLU) || defined(UMFPACK)
|
||||
/* DEVbindCSC */ MESbindCSC,
|
||||
/* DEVbindCSCComplex */ MESbindCSCComplex,
|
||||
/* DEVbindCSCComplexToReal */ MESbindCSCComplexToReal,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
|
|
|||
|
|
@ -378,3 +378,217 @@ MESAbindCSCComplex(GENmodel *inModel, CKTcircuit *ckt)
|
|||
}
|
||||
return(OK);
|
||||
}
|
||||
|
||||
int
|
||||
MESAbindCSCComplexToReal (GENmodel *inModel, CKTcircuit *ckt)
|
||||
{
|
||||
MESAmodel *model = (MESAmodel *)inModel ;
|
||||
MESAinstance *here ;
|
||||
int i ;
|
||||
|
||||
/* loop through all the mesa models */
|
||||
for ( ; model != NULL ; model = model->MESAnextModel)
|
||||
{
|
||||
/* loop through all the instances of the model */
|
||||
for (here = model->MESAinstances ; here != NULL ; here = here->MESAnextInstance)
|
||||
{
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainNode != 0) && (here->MESAdrainNode != 0))
|
||||
{
|
||||
while (here->MESAdrainDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAdrainDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->MESAdrainPrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAdrainPrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrmPrmNode != 0) && (here->MESAdrainPrmPrmNode != 0))
|
||||
{
|
||||
while (here->MESAdrainPrmPrmDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAdrainPrmPrmDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgateNode != 0) && (here->MESAgateNode != 0))
|
||||
{
|
||||
while (here->MESAgateGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAgateGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAgatePrimeNode != 0))
|
||||
{
|
||||
while (here->MESAgatePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAgatePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourceNode != 0) && (here->MESAsourceNode != 0))
|
||||
{
|
||||
while (here->MESAsourceSourcePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAsourceSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAsourcePrimeNode != 0))
|
||||
{
|
||||
while (here->MESAsourcePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAsourcePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrmPrmNode != 0) && (here->MESAsourcePrmPrmNode != 0))
|
||||
{
|
||||
while (here->MESAsourcePrmPrmSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAsourcePrmPrmSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainNode != 0) && (here->MESAdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->MESAdrainDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAdrainDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAdrainNode != 0))
|
||||
{
|
||||
while (here->MESAdrainPrimeDrainPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAdrainPrimeDrainPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->MESAgatePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAgatePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAgatePrimeNode != 0))
|
||||
{
|
||||
while (here->MESAdrainPrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAdrainPrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAsourcePrimeNode != 0))
|
||||
{
|
||||
while (here->MESAgatePrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAgatePrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAgatePrimeNode != 0))
|
||||
{
|
||||
while (here->MESAsourcePrimeGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAsourcePrimeGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourceNode != 0) && (here->MESAsourcePrimeNode != 0))
|
||||
{
|
||||
while (here->MESAsourceSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAsourceSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAsourceNode != 0))
|
||||
{
|
||||
while (here->MESAsourcePrimeSourcePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAsourcePrimeSourcePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAsourcePrimeNode != 0))
|
||||
{
|
||||
while (here->MESAdrainPrimeSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAdrainPrimeSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->MESAsourcePrimeDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAsourcePrimeDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAgateNode != 0))
|
||||
{
|
||||
while (here->MESAgatePrimeGatePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAgatePrimeGatePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgateNode != 0) && (here->MESAgatePrimeNode != 0))
|
||||
{
|
||||
while (here->MESAgateGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAgateGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrmPrmNode != 0) && (here->MESAsourcePrimeNode != 0))
|
||||
{
|
||||
while (here->MESAsourcePrmPrmSourcePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAsourcePrmPrmSourcePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrimeNode != 0) && (here->MESAsourcePrmPrmNode != 0))
|
||||
{
|
||||
while (here->MESAsourcePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAsourcePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAsourcePrmPrmNode != 0) && (here->MESAgatePrimeNode != 0))
|
||||
{
|
||||
while (here->MESAsourcePrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAsourcePrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAsourcePrmPrmNode != 0))
|
||||
{
|
||||
while (here->MESAgatePrimeSourcePrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAgatePrimeSourcePrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrmPrmNode != 0) && (here->MESAdrainPrimeNode != 0))
|
||||
{
|
||||
while (here->MESAdrainPrmPrmDrainPrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAdrainPrmPrmDrainPrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrimeNode != 0) && (here->MESAdrainPrmPrmNode != 0))
|
||||
{
|
||||
while (here->MESAdrainPrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAdrainPrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAdrainPrmPrmNode != 0) && (here->MESAgatePrimeNode != 0))
|
||||
{
|
||||
while (here->MESAdrainPrmPrmGatePrimePtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAdrainPrmPrmGatePrimePtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
|
||||
i = 0 ;
|
||||
if ((here->MESAgatePrimeNode != 0) && (here->MESAdrainPrmPrmNode != 0))
|
||||
{
|
||||
while (here->MESAgatePrimeDrainPrmPrmPtr != ckt->CKTmatrix->CKTbind_CSC_Complex [i]) i ++ ;
|
||||
here->MESAgatePrimeDrainPrmPrmPtr = ckt->CKTmatrix->CKTbind_CSC [i] ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return (OK) ;
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue