You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
2.5 KiB
107 lines
2.5 KiB
/**********
|
|
Copyright 1992 Regents of the University of California. All rights
|
|
reserved.
|
|
**********/
|
|
|
|
#ifndef CPL
|
|
#define CPL
|
|
|
|
#include "ngspice/ifsim.h"
|
|
#include "ngspice/cktdefs.h"
|
|
#include "ngspice/gendefs.h"
|
|
#include "ngspice/complex.h"
|
|
#include "ngspice/noisedef.h"
|
|
#include "ngspice/swec.h"
|
|
|
|
/* information used to describe a single instance */
|
|
|
|
typedef struct sCPLinstance {
|
|
struct sCPLmodel *CPLmodPtr; /* backpointer to model */
|
|
struct sCPLinstance *CPLnextInstance; /* pointer to next instance of
|
|
* current model*/
|
|
|
|
IFuid CPLname; /* pointer to character string naming this instance */
|
|
int CPLstate; /* not used */
|
|
|
|
int *CPLposNodes;
|
|
int *CPLnegNodes;
|
|
int dimension;
|
|
double CPLlength;
|
|
int *CPLibr1;
|
|
int *CPLibr2;
|
|
CPLine *cplines; /* pointer to SWEC cplines type */
|
|
CPLine *cplines2; /* temporary pointer to SWEC cplines type */
|
|
|
|
char **in_node_names;
|
|
char **out_node_names;
|
|
|
|
double **CPLibr1Ibr1;
|
|
double **CPLibr2Ibr2;
|
|
double **CPLposIbr1;
|
|
double **CPLnegIbr2;
|
|
/* trial */
|
|
double **CPLposPos;
|
|
double **CPLnegNeg;
|
|
double **CPLposNeg;
|
|
double **CPLnegPos;
|
|
|
|
double ***CPLibr1Pos;
|
|
double ***CPLibr2Neg;
|
|
double ***CPLibr1Neg;
|
|
double ***CPLibr2Pos;
|
|
double ***CPLibr1Ibr2;
|
|
double ***CPLibr2Ibr1;
|
|
|
|
unsigned CPLibr1Given : 1;
|
|
unsigned CPLibr2Given : 1;
|
|
unsigned CPLdcGiven : 1;
|
|
unsigned CPLlengthGiven : 1;
|
|
|
|
} CPLinstance ;
|
|
|
|
|
|
/* per model data */
|
|
|
|
typedef struct sCPLmodel { /* model structure for a cpl */
|
|
int CPLmodType; /* type index of this device type */
|
|
struct sCPLmodel *CPLnextModel; /* pointer to next possible model in
|
|
* linked list */
|
|
CPLinstance * CPLinstances; /* pointer to list of instances that have this
|
|
* model */
|
|
IFuid CPLmodName; /* pointer to character string naming this model */
|
|
|
|
double *Rm;
|
|
int Rm_counter;
|
|
double *Gm;
|
|
int Gm_counter;
|
|
double *Lm;
|
|
int Lm_counter;
|
|
double *Cm;
|
|
int Cm_counter;
|
|
double length;
|
|
unsigned Rmgiven : 1;
|
|
unsigned Lmgiven : 1;
|
|
unsigned Gmgiven : 1;
|
|
unsigned Cmgiven : 1;
|
|
unsigned lengthgiven : 1;
|
|
|
|
} CPLmodel;
|
|
|
|
/* instance parameters */
|
|
#define CPL_POS_NODE 1
|
|
#define CPL_NEG_NODE 2
|
|
#define CPL_DIM 3
|
|
#define CPL_LENGTH 4
|
|
|
|
/* model parameters */
|
|
#define CPL_R 101
|
|
#define CPL_C 102
|
|
#define CPL_G 103
|
|
#define CPL_L 104
|
|
#define CPL_length 105
|
|
#define CPL_MOD_R 106
|
|
|
|
#include "cplext.h"
|
|
extern VI_list *pool_vi;
|
|
|
|
#endif /*CPL*/
|