Jspice3
jjdefs.h
Go to the documentation of this file.
1 /***************************************************************************
2 JSPICE3 adaptation of Spice3e2 - Copyright (c) Stephen R. Whiteley 1992
3 Author: 1992 Stephen R. Whiteley
4 ****************************************************************************/
5 
6 #ifndef JJ
7 #define JJ
8 
9 #include "devdefs.h"
10 
11 /* data structures used to describe Jopsephson junctions */
12 
13 /* information needed per instance */
14 
15 typedef struct sJJinstance {
16  struct sJJmodel *JJmodPtr; /* backpointer to model */
17  struct sJJinstance *JJnextInstance; /* pointer to next instance of
18  * current model */
19  IFuid JJname; /* pointer to character string naming
20  * this instance */
21  int JJstate; /* pointer to start of state vector for
22  * junction */
23  int JJposNode; /* number of positive node of junction */
24  int JJnegNode; /* number of negative node of junction */
25  int JJphsNode; /* number of phase node of junction */
26  int JJbranch; /* number of control current branch */
27  IFuid JJcontrol; /* name of controlling device */
28  double JJarea; /* area factor for the junction */
29 
30  double JJinitCnd[2]; /* initial condition vector */
31 #define JJinitVoltage JJinitCnd[0]
32 #define JJinitPhase JJinitCnd[1]
33 
34  double JJinitControl; /* initial control current */
35 
36  double JJdelVdelT; /* dvdt storage */
37 
38  /* These parameters scale with area */
39  double JJcriti; /* junction critical current */
40  double JJcap; /* junction capacitance */
41  double JJg0; /* junction subgap conductance */
42  double JJgn; /* junction normal conductance */
43  double JJgs; /* junction step conductance */
44  double JJg1; /* NbN model parameter */
45  double JJg2; /* NbN model parameter */
46 
47  double *JJposNegPtr; /* pointer to sparse matrix at
48  * (positive, negative) */
49  double *JJnegPosPtr; /* pointer to sparse matrix at
50  * (negative, positive) */
51  double *JJposPosPtr; /* pointer to sparse matrix at
52  * (positive, positive) */
53  double *JJnegNegPtr; /* pointer to sparse matrix at
54  * (negative, negative) */
55  double *JJphsPhsPtr; /* pointer to sparse matrix at
56  * (phase, phase) */
57  double *JJposIbrPtr; /* pointer to sparse matrix at
58  * (positive, branch equation) */
59  double *JJnegIbrPtr; /* pointer to sparse matrix at
60  * (negative, branch equation) */
61  int JJtopcod; /* connection topology code */
62  unsigned JJareaGiven : 1; /* flag to indicate area was specified */
63  unsigned JJinitVoltGiven : 1; /* flag to indicate ic was specified */
64  unsigned JJinitPhaseGiven : 1; /* flag to indicate ic was specified */
65  unsigned JJcontrolGiven : 1; /* control ind or vsource specified */
66 
67 } JJinstance;
68 
69 
70 #define JJvoltage JJstate
71 #define JJdvdt JJstate + 1
72 #define JJphase JJstate + 2
73 #define JJconI JJstate + 3
74 #define JJphsInt JJstate + 4
75 #define JJxtra1 JJstate + 5
76 #define JJxtra2 JJstate + 6
77 
78 /* per model data */
79 
80 typedef struct sJJmodel { /* model structure for a junction */
81  int JJmodType; /* type index of this device */
82  struct sJJmodel *JJnextModel; /* pointer to next possible model in
83  * linked list */
84  JJinstance * JJinstances; /* pointer to list of instances
85  * that have this model */
86  IFuid JJmodName; /* pointer to character string naming
87  * this model */
88  int JJrtype;
89  int JJictype;
90  double JJvg;
91  double JJdelv;
92  double JJcriti;
93  double JJcap;
94  double JJr0;
95  double JJrn;
96  double JJccsens;
97  double JJvless;
98  double JJvmore;
99  double JJvdpbak;
100  unsigned JJrtypeGiven : 1;
101  unsigned JJictypeGiven : 1;
102  unsigned JJvgGiven : 1;
103  unsigned JJdelvGiven : 1;
104  unsigned JJccsensGiven : 1;
105  unsigned JJr0Given : 1;
106  unsigned JJrnGiven : 1;
107  unsigned JJcritiGiven : 1;
108  unsigned JJcapGiven : 1;
109 
110 } JJmodel;
111 
112 
113 /* from jspice2
114 #define JJcphi 3.291090738e-16
115 */
116 /* from jsim */
117 #define JJcphi 3.291086546e-16
118 
119 extern double JJdphi; /* max phase change between time points */
120 
121 /* device parameters */
122 #define JJ_AREA 1
123 #define JJ_IC 2
124 #define JJ_ICP 3
125 #define JJ_ICV 4
126 #define JJ_CON 5
127 
128 /* device questions */
129 
130 #define JJ_QUEST_CRT 6
131 #define JJ_QUEST_CAP 7
132 #define JJ_QUEST_G0 8
133 #define JJ_QUEST_GN 9
134 #define JJ_QUEST_GS 10
135 #define JJ_QUEST_G1 11
136 #define JJ_QUEST_G2 12
137 
138 /* model parameters */
139 
140 #define JJ_MOD_RT 101
141 #define JJ_MOD_IC 102
142 #define JJ_MOD_VG 103
143 #define JJ_MOD_DV 104
144 #define JJ_MOD_CRT 105
145 #define JJ_MOD_CAP 106
146 #define JJ_MOD_R0 107
147 #define JJ_MOD_RN 108
148 #define JJ_MOD_CCS 109
149 #define JJ_MOD_JJ 113
150 
151 /* model questions */
152 
153 #define JJ_MQUEST_VL 110
154 #define JJ_MQUEST_VM 111
155 #define JJ_MQUEST_VDP 112
156 
157 #ifdef __STDC__
158 
159 extern int JJaccept(CKTcircuit*,GENmodel*);
160 extern int JJask(CKTcircuit*,GENinstance*,int,IFvalue*,IFvalue*);
161 extern int JJgetic(GENmodel*,CKTcircuit*);
162 extern int JJload(GENmodel*,CKTcircuit*);
163 extern int JJmAsk(CKTcircuit*,GENmodel*,int,IFvalue*);
164 extern int JJmParam(int,IFvalue*,GENmodel*);
165 extern int JJparam(CKTcircuit*,int,IFvalue*,GENinstance*,IFvalue*);
166 extern void JJparse(int,GENERIC*,GENERIC*,GENERIC*);
167 extern int JJsetup(SMPmatrix*,GENmodel*,CKTcircuit*,int*);
168 extern int JJtrunc(GENmodel*,CKTcircuit*,double*);
169 
170 #else /* stdc */
171 
172 extern int JJaccept();
173 extern int JJask();
174 extern int JJgetic();
175 extern int JJload();
176 extern int JJmAsk();
177 extern int JJmParam();
178 extern int JJparam();
179 extern void JJparse();
180 extern int JJsetup();
181 extern int JJtrunc();
182 
183 #endif /* stdc */
184 
185 #endif /*JJ*/
double JJg1
Definition: jjdefs.h:44
double JJarea
Definition: jjdefs.h:28
double JJrn
Definition: jjdefs.h:95
unsigned JJictypeGiven
Definition: jjdefs.h:101
IFuid JJcontrol
Definition: jjdefs.h:27
double JJr0
Definition: jjdefs.h:94
double JJcap
Definition: jjdefs.h:40
double JJcriti
Definition: jjdefs.h:92
double JJinitControl
Definition: jjdefs.h:34
unsigned JJcapGiven
Definition: jjdefs.h:108
unsigned JJareaGiven
Definition: jjdefs.h:62
double JJdelv
Definition: jjdefs.h:91
struct sJJmodel JJmodel
double JJccsens
Definition: jjdefs.h:96
double JJdphi
Definition: options.c:21
int JJmodType
Definition: jjdefs.h:81
unsigned JJcontrolGiven
Definition: jjdefs.h:65
double JJvless
Definition: jjdefs.h:97
int JJtopcod
Definition: jjdefs.h:61
struct sJJinstance JJinstance
int JJphsNode
Definition: jjdefs.h:25
int JJmParam()
double JJcap
Definition: jjdefs.h:93
unsigned JJr0Given
Definition: jjdefs.h:105
IFuid JJname
Definition: jjdefs.h:19
double * JJnegPosPtr
Definition: jjdefs.h:49
int JJposNode
Definition: jjdefs.h:23
JJinstance * JJinstances
Definition: jjdefs.h:84
unsigned JJrtypeGiven
Definition: jjdefs.h:100
int JJnegNode
Definition: jjdefs.h:24
int JJparam()
double JJg0
Definition: jjdefs.h:41
double JJvmore
Definition: jjdefs.h:98
double * JJnegIbrPtr
Definition: jjdefs.h:59
GENERIC * IFuid
Definition: ifsim.h:72
double JJcriti
Definition: jjdefs.h:39
double JJg2
Definition: jjdefs.h:45
double JJdelVdelT
Definition: jjdefs.h:36
unsigned JJinitPhaseGiven
Definition: jjdefs.h:64
int JJstate
Definition: jjdefs.h:21
double JJgs
Definition: jjdefs.h:43
int JJmAsk()
int JJtrunc()
unsigned JJinitVoltGiven
Definition: jjdefs.h:63
int JJload()
double JJvdpbak
Definition: jjdefs.h:99
unsigned JJccsensGiven
Definition: jjdefs.h:104
int JJsetup()
double JJvg
Definition: jjdefs.h:90
int JJictype
Definition: jjdefs.h:89
struct sJJmodel * JJnextModel
Definition: jjdefs.h:82
int JJaccept()
double * JJnegNegPtr
Definition: jjdefs.h:53
IFuid JJmodName
Definition: jjdefs.h:86
unsigned JJcritiGiven
Definition: jjdefs.h:107
int JJrtype
Definition: jjdefs.h:88
struct sJJmodel * JJmodPtr
Definition: jjdefs.h:16
double * JJposNegPtr
Definition: jjdefs.h:47
struct sJJinstance * JJnextInstance
Definition: jjdefs.h:17
double * JJphsPhsPtr
Definition: jjdefs.h:55
unsigned JJdelvGiven
Definition: jjdefs.h:103
double * JJposIbrPtr
Definition: jjdefs.h:57
double * JJposPosPtr
Definition: jjdefs.h:51
#define SMPmatrix
Definition: smpdefs.h:11
unsigned JJrnGiven
Definition: jjdefs.h:106
int JJgetic()
double JJgn
Definition: jjdefs.h:42
double JJinitCnd[2]
Definition: jjdefs.h:30
unsigned JJvgGiven
Definition: jjdefs.h:102
char GENERIC
Definition: ifsim.h:27
int JJask()
void JJparse()
int JJbranch
Definition: jjdefs.h:26