Jspice3
srcdefs.h
Go to the documentation of this file.
1 /***************************************************************************
2 JSPICE3 adaptation of Spice3f2 - Copyright (c) Stephen R. Whiteley 1992
3 Copyright 1990 Regents of the University of California. All rights reserved.
4 Authors: 1985 Thomas L. Quarles
5  1987 Kanwar Jit Singh
6  1993 Stephen R. Whiteley
7 ****************************************************************************/
8 
9 #ifndef SRC
10 #define SRC
11 
12 #include "devdefs.h"
13 
14 /*
15  * structures to describe Arbitrary sources
16  */
17 
18 /* information to describe a single instance */
19 
20 typedef struct sSRCinstance {
21 
22  /* backpointer to model */
24 
25  /* pointer to next instance of current model */
27 
28  /* pointer to character string naming this instance */
30 
31  /* state info */
32  int SRCstate;
33 
34  /* number of positive node of source */
36 
37  /* number of negative node of source */
39 
40  /* number of positive node of linear controlling voltage source */
42 
43  /* number of negative node of linear controlling voltage source */
45 
46  /* number of branch equation added for voltage source */
47  int SRCbranch;
48 
49  /* number of branch eq of controlling current source */
51 
52  /* pointer to pointers of the elements in the sparse matrix */
53  double **SRCposptr;
54 
55  /* functions to call to obtain source output */
56 #ifdef __STDC__
57  void (*SRCtranFunc)(CKTcircuit*,struct sSRCinstance*);
58  void (*SRCdcFunc)(CKTcircuit*,struct sSRCinstance*);
59 #else
60  void (*SRCtranFunc)();
61  void (*SRCdcFunc)();
62 #endif
63 
64  /* whether source is voltage or current */
65  int SRCtype;
66 
67  /* whether the source is a linear dependent source and what kind */
68  int SRCdep;
69 
70  /* linear gain coefficient */
71  double SRCcoeff;
72 
73  /* pointer to name of controlling instance */
75 
76  /* DC and TRANSIENT value of source */
77  double SRCdcValue;
78 
79  /* AC magnitude and phase */
80  double SRCacVec[2];
81 #define SRCacMag SRCacVec[0]
82 #define SRCacPhase SRCacVec[1]
83 
84  /* AC real component */
85  double SRCacReal;
86 
87  /* AC imaginary component */
88  double SRCacImag;
89 
90  /* distortion f1 magnitude */
91  double SRCdF1mag;
92 
93  /* distortion f2 magnitude */
94  double SRCdF2mag;
95 
96  /* distortion f1 phase */
97  double SRCdF1phase;
98 
99  /* distortion f2 phase */
100  double SRCdF2phase;
101 
102  /* the parse tree */
104 
105  /* store rhs and derivatives for ac anal */
106  double *SRCacValues;
107 
108  /* store input values to function */
109  double *SRCvalues;
110 
111  /* present source value */
112  double SRCvalue;
113 
114  /* store partial derivatives */
115  double *SRCderivs;
116 
117  /* store equation numbers of input values */
118  int *SRCeqns;
119 
120  /* previous value for the convergence test */
121  double SRCprev;
122 
123  /* pointer to sparse matrix element at
124  (positive node, control positive node) */
126 
127  /* pointer to sparse matrix element at
128  (positive node, control negative node) */
130 
131  /* pointer to sparse matrix element at
132  (negative node, control positive node) */
134 
135  /* pointer to sparse matrix element at
136  (negative node, control negative node) */
138 
139  /* pointer to sparse matrix element at
140  (positive node, control branch eq) */
142 
143  /* pointer to sparse matrix element at
144  (negative node, control branch eq) */
146 
147  /* pointer to sparse matrix element at
148  (branch equation, control positive node) */
150 
151  /* pointer to sparse matrix element at
152  (branch equation, control negative node) */
154 
155  /* pointer to sparse matrix element at
156  (branch equation, control branch eq) */
158 
159  /* pointer to sparse matrix element at
160  (positive node, branch equation) */
161  double *SRCposIbrptr;
162 
163  /* pointer to sparse matrix element at
164  (negative node, branch equation) */
165  double *SRCnegIbrptr;
166 
167  /* pointer to sparse matrix element at
168  (branch equation, positive node) */
169  double *SRCibrPosptr;
170 
171  /* pointer to sparse matrix element at
172  (branch equation, negative node) */
173  double *SRCibrNegptr;
174 
175  /* pointer to sparse matrix element at
176  (branch equation, branch equation) */
177  double *SRCibrIbrptr;
178 
179  /* flags to indicate: */
180  unsigned SRCdcGiven :1; /* dc value given */
181  unsigned SRCacGiven :1; /* ac keyword given */
182  unsigned SRCacMGiven :1; /* ac magnitude given */
183  unsigned SRCacPGiven :1; /* ac phase given */
184  unsigned SRCdGiven :1; /* source is a disto input */
185  unsigned SRCdF1given :1; /* source is an f1 dist input */
186  unsigned SRCdF2given :1; /* source is an f2 dist input */
187  unsigned SRCccCoeffGiven :1; /* current controlled gain coeff given */
188  unsigned SRCvcCoeffGiven :1; /* voltage controlled gain coeff given */
189 
190 } SRCinstance;
191 
192 
193 /* per model data */
194 
195 /* model structure for a source */
196 typedef struct sSRCmodel {
197 
198  /* type index of this device */
200 
201  /* pointer to next possible model in linked list */
203 
204  /* pointer to list of instances that have this model */
206 
207  /* pointer to character string naming this model */
209 
210 } SRCmodel;
211 
212 #define SRC_CC 1
213 #define SRC_VC 2
214 
215 /* device parameters */
216 #define SRC_I 1
217 #define SRC_V 2
218 #define SRC_DEP 3
219 #define SRC_DC 4
220 #define SRC_AC 5
221 #define SRC_AC_MAG 6
222 #define SRC_AC_PHASE 7
223 #define SRC_FUNC 8
224 #define SRC_D_F1 9
225 #define SRC_D_F2 10
226 #define SRC_GAIN 11
227 #define SRC_CONTROL 12
228 #define SRC_POS_NODE 13
229 #define SRC_NEG_NODE 14
230 #define SRC_AC_REAL 15
231 #define SRC_AC_IMAG 16
232 #define SRC_CURRENT 17
233 #define SRC_POWER 18
234 #define SRC_CONT_P_NODE 19
235 #define SRC_CONT_N_NODE 20
236 
237 #ifdef __STDC__
238 
239 extern int SRCacLoad(GENmodel*,CKTcircuit*);
240 extern int SRCask(CKTcircuit*,GENinstance *,int,IFvalue *,IFvalue*);
241 extern int SRCconvTest(GENmodel *,CKTcircuit*);
242 extern int SRCdelete(GENmodel *,IFuid,GENinstance **);
243 extern void SRCdestroy(GENmodel**);
244 extern int SRCfindBr(CKTcircuit *,GENmodel *,IFuid);
245 extern int SRCload(GENmodel *,CKTcircuit*);
246 extern int SRCmDelete(GENmodel**,IFuid,GENmodel*);
247 extern int SRCparam(CKTcircuit*,int,IFvalue*,GENinstance*,IFvalue*);
248 extern void SRCparse(int,GENERIC*,GENERIC*,GENERIC*);
249 extern int SRCpzLoad(GENmodel*,CKTcircuit*,SPcomplex*);
250 extern int SRCsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*);
251 
252 #else /* stdc */
253 
254 extern int SRCacLoad();
255 extern int SRCask();
256 extern int SRCconvTest();
257 extern int SRCdelete();
258 extern void SRCdestroy();
259 extern int SRCfindBr();
260 extern int SRCload();
261 extern int SRCmDelete();
262 extern int SRCparam();
263 extern void SRCparse();
264 extern int SRCpzLoad();
265 extern int SRCsetup();
266 
267 #endif /* stdc */
268 
269 
270 #endif /* SRC */
double SRCdF2mag
Definition: srcdefs.h:94
struct sSRCinstance * SRCnextInstance
Definition: srcdefs.h:26
double * SRCibrContBrptr
Definition: srcdefs.h:157
void SRCparse()
unsigned SRCdF2given
Definition: srcdefs.h:186
double * SRCvalues
Definition: srcdefs.h:109
double * SRCibrNegptr
Definition: srcdefs.h:173
unsigned SRCccCoeffGiven
Definition: srcdefs.h:187
double SRCcoeff
Definition: srcdefs.h:71
int SRCmDelete()
struct sSRCinstance SRCinstance
IFuid SRCcontName
Definition: srcdefs.h:74
int * SRCeqns
Definition: srcdefs.h:118
int SRCpzLoad()
void(* SRCdcFunc)()
Definition: srcdefs.h:61
double SRCprev
Definition: srcdefs.h:121
IFuid SRCmodName
Definition: srcdefs.h:208
int SRCnegNode
Definition: srcdefs.h:38
int SRCposNode
Definition: srcdefs.h:35
unsigned SRCdF1given
Definition: srcdefs.h:185
double SRCdcValue
Definition: srcdefs.h:77
double * SRCnegContBrptr
Definition: srcdefs.h:145
double * SRCibrContPosptr
Definition: srcdefs.h:149
int SRCask()
int SRCstate
Definition: srcdefs.h:32
unsigned SRCdGiven
Definition: srcdefs.h:184
int SRCdep
Definition: srcdefs.h:68
unsigned SRCdcGiven
Definition: srcdefs.h:180
struct sSRCmodel * SRCmodPtr
Definition: srcdefs.h:23
double SRCacReal
Definition: srcdefs.h:85
GENERIC * IFuid
Definition: ifsim.h:72
int SRCdelete()
int SRCcontNegNode
Definition: srcdefs.h:44
int SRCbranch
Definition: srcdefs.h:47
int SRCload()
int SRCconvTest()
double * SRCibrIbrptr
Definition: srcdefs.h:177
SRCinstance * SRCinstances
Definition: srcdefs.h:205
int SRCcontPosNode
Definition: srcdefs.h:41
double SRCdF1phase
Definition: srcdefs.h:97
double * SRCposContPosptr
Definition: srcdefs.h:125
double * SRCnegIbrptr
Definition: srcdefs.h:165
unsigned SRCvcCoeffGiven
Definition: srcdefs.h:188
double * SRCposContNegptr
Definition: srcdefs.h:129
struct sSRCmodel SRCmodel
int SRCcontBranch
Definition: srcdefs.h:50
int SRCsetup()
double * SRCposIbrptr
Definition: srcdefs.h:161
double ** SRCposptr
Definition: srcdefs.h:53
double SRCdF2phase
Definition: srcdefs.h:100
unsigned SRCacGiven
Definition: srcdefs.h:181
double * SRCacValues
Definition: srcdefs.h:106
double * SRCibrContNegptr
Definition: srcdefs.h:153
double * SRCderivs
Definition: srcdefs.h:115
void SRCdestroy()
int SRCacLoad()
double SRCdF1mag
Definition: srcdefs.h:91
int SRCmodType
Definition: srcdefs.h:199
unsigned SRCacMGiven
Definition: srcdefs.h:182
double * SRCnegContNegptr
Definition: srcdefs.h:137
double SRCacVec[2]
Definition: srcdefs.h:80
int SRCparam()
double SRCvalue
Definition: srcdefs.h:112
double * SRCposContBrptr
Definition: srcdefs.h:141
IFuid SRCname
Definition: srcdefs.h:29
#define SMPmatrix
Definition: smpdefs.h:11
double * SRCibrPosptr
Definition: srcdefs.h:169
int SRCtype
Definition: srcdefs.h:65
int SRCfindBr()
IFparseTree * SRCtree
Definition: srcdefs.h:103
void(* SRCtranFunc)()
Definition: srcdefs.h:60
double SRCacImag
Definition: srcdefs.h:88
double * SRCnegContPosptr
Definition: srcdefs.h:133
struct sSRCmodel * SRCnextModel
Definition: srcdefs.h:202
char GENERIC
Definition: ifsim.h:27
unsigned SRCacPGiven
Definition: srcdefs.h:183