Jspice3
trasetup.c
Go to the documentation of this file.
1 /**********
2 Copyright 1990 Regents of the University of California. All rights reserved.
3 Author: 1985 Thomas L. Quarles
4 **********/
5 
6 #include "spice.h"
7 #include <stdio.h>
8 #include "tradefs.h"
9 #include "sperror.h"
10 #include "util.h"
11 #include "cktext.h"
12 
13 
14 /* ARGSUSED */
15 int
16 TRAsetup(matrix,inModel,ckt,state)
17 
18 SMPmatrix *matrix;
19 GENmodel *inModel;
20 CKTcircuit *ckt;
21 int *state;
22  /* load the transmission line structure with those pointers needed later
23  * for fast matrix loading
24  */
25 {
26  TRAmodel *model = (TRAmodel *)inModel;
27  TRAinstance *here;
28  int error;
29  CKTnode *tmp;
30 
31  /* loop through all the transmission line models */
32  for( ; model != NULL; model = model->TRAnextModel ) {
33 
34  /* loop through all the instances of the model */
35  for (here = model->TRAinstances; here != NULL ;
36  here=here->TRAnextInstance) {
37 
38  if(here->TRAbrEq1==0) {
39  error = CKTmkVolt(ckt,&tmp,here->TRAname,"i1");
40  if(error) return(error);
41  here->TRAbrEq1 = tmp->number;
42  }
43 
44  if(here->TRAbrEq2==0) {
45  error = CKTmkVolt(ckt,&tmp,here->TRAname,"i2");
46  if(error) return(error);
47  here->TRAbrEq2 = tmp->number;
48  }
49 
50  if(here->TRAintNode1==0) {
51  error = CKTmkVolt(ckt,&tmp,here->TRAname,"int1");
52  if(error) return(error);
53  here->TRAintNode1 = tmp->number;
54  }
55 
56  if(here->TRAintNode2==0) {
57  error = CKTmkVolt(ckt,&tmp,here->TRAname,"int2");
58  if(error) return(error);
59  here->TRAintNode2 = tmp->number;
60  }
61 
62  /* allocate the delay table */
63  here->TRAdelays = (double *)MALLOC(15*sizeof(double));
64  here->TRAallocDelay = 4;
65 
66  TSTALLOC(TRAibr1Ibr2Ptr, TRAbrEq1, TRAbrEq2)
67  TSTALLOC(TRAibr1Int1Ptr, TRAbrEq1, TRAintNode1)
68  TSTALLOC(TRAibr1Neg1Ptr, TRAbrEq1, TRAnegNode1)
69  TSTALLOC(TRAibr1Neg2Ptr, TRAbrEq1, TRAnegNode2)
70  TSTALLOC(TRAibr1Pos2Ptr, TRAbrEq1, TRAposNode2)
71  TSTALLOC(TRAibr2Ibr1Ptr, TRAbrEq2, TRAbrEq1)
72  TSTALLOC(TRAibr2Int2Ptr, TRAbrEq2, TRAintNode2)
73  TSTALLOC(TRAibr2Neg1Ptr, TRAbrEq2, TRAnegNode1)
74  TSTALLOC(TRAibr2Neg2Ptr, TRAbrEq2, TRAnegNode2)
75  TSTALLOC(TRAibr2Pos1Ptr, TRAbrEq2, TRAposNode1)
76  TSTALLOC(TRAint1Ibr1Ptr, TRAintNode1, TRAbrEq1)
77  TSTALLOC(TRAint1Int1Ptr, TRAintNode1, TRAintNode1)
78  TSTALLOC(TRAint1Pos1Ptr, TRAintNode1, TRAposNode1)
79  TSTALLOC(TRAint2Ibr2Ptr, TRAintNode2, TRAbrEq2)
80  TSTALLOC(TRAint2Int2Ptr, TRAintNode2, TRAintNode2)
81  TSTALLOC(TRAint2Pos2Ptr, TRAintNode2, TRAposNode2)
82  TSTALLOC(TRAneg1Ibr1Ptr, TRAnegNode1, TRAbrEq1)
83  TSTALLOC(TRAneg2Ibr2Ptr, TRAnegNode2, TRAbrEq2)
84  TSTALLOC(TRApos1Int1Ptr, TRAposNode1, TRAintNode1)
85  TSTALLOC(TRApos1Pos1Ptr, TRAposNode1, TRAposNode1)
86  TSTALLOC(TRApos2Int2Ptr, TRAposNode2, TRAintNode2)
87  TSTALLOC(TRApos2Pos2Ptr, TRAposNode2, TRAposNode2)
88 
89  if(!here->TRAnlGiven) {
90  here->TRAnl = .25;
91  }
92  if(!here->TRAfGiven) {
93  here->TRAf = 1e9;
94  }
95  if(!here->TRAreltolGiven) {
96  here->TRAreltol = 1;
97  }
98  if(!here->TRAabstolGiven) {
99  here->TRAabstol = 1;
100  }
101  if(!here->TRAimpedGiven) {
102  (*(SPfrontEnd->IFerror))(ERR_FATAL,
103  "%s: transmission line z0 must be given",
104  &(here->TRAname));
105  return(E_BADPARM);
106  }
107  }
108  }
109  return(OK);
110 }
struct sTRAinstance * TRAnextInstance
Definition: tradefs.h:20
TRAinstance * TRAinstances
Definition: tradefs.h:89
int TRAallocDelay
Definition: tradefs.h:45
int TRAbrEq1
Definition: tradefs.h:46
struct sTRAmodel * TRAnextModel
Definition: tradefs.h:87
#define ERR_FATAL
Definition: ifsim.h:518
int TRAintNode1
Definition: tradefs.h:28
unsigned TRAimpedGiven
Definition: tradefs.h:70
IFfrontEnd * SPfrontEnd
Definition: main.c:917
#define E_BADPARM
Definition: iferrmsg.h:26
double TRAnl
Definition: tradefs.h:33
double TRAf
Definition: tradefs.h:34
double TRAreltol
Definition: tradefs.h:41
#define TSTALLOC(ptr, first, second)
Definition: devdefs.h:124
#define OK
Definition: iferrmsg.h:17
#define MALLOC(x)
Definition: util.h:9
#define NULL
Definition: spdefs.h:121
unsigned TRAfGiven
Definition: tradefs.h:73
unsigned TRAnlGiven
Definition: tradefs.h:72
int number
Definition: cktdefs.h:39
double TRAabstol
Definition: tradefs.h:42
unsigned TRAabstolGiven
Definition: tradefs.h:79
static char model[32]
Definition: subckt.c:76
unsigned TRAreltolGiven
Definition: tradefs.h:78
IFuid TRAname
Definition: tradefs.h:22
int CKTmkVolt()
#define SMPmatrix
Definition: smpdefs.h:11
double * TRAdelays
Definition: tradefs.h:43
int TRAbrEq2
Definition: tradefs.h:47
int TRAsetup(SMPmatrix *matrix, GENmodel *inModel, CKTcircuit *ckt, int *state)
Definition: trasetup.c:16
int TRAintNode2
Definition: tradefs.h:29