Jspice3
pzsetp.c
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  1993 Stephen R. Whiteley
6 ****************************************************************************/
7 
8 #include "suffix.h"
9 #include <stdio.h>
10 #include "cktdefs.h"
11 #include "pzdefs.h"
12 #include "jobdefs.h"
13 #include "iferrmsg.h"
14 
15 
16 /* ARGSUSED */
17 int
18 PZsetParm(cktp,anal,which,value)
19 
20 GENERIC *cktp;
21 GENERIC *anal;
22 int which;
23 IFvalue *value;
24 {
25  switch (which) {
26 
27  case PZ_NODEI:
28  ((PZAN*)anal)->PZin_pos = ((CKTnode*)value->nValue)->number;
29  break;
30 
31  case PZ_NODEG:
32  ((PZAN*)anal)->PZin_neg = ((CKTnode*)value->nValue)->number;
33  break;
34 
35  case PZ_NODEJ:
36  ((PZAN*)anal)->PZout_pos = ((CKTnode*)value->nValue)->number;
37  break;
38 
39  case PZ_NODEK:
40  ((PZAN*)anal)->PZout_neg = ((CKTnode*)value->nValue)->number;
41  break;
42 
43  case PZ_V:
44  if(value->iValue) {
45  ((PZAN*)anal)->PZinput_type = PZ_IN_VOL;
46  }
47  break;
48 
49  case PZ_I:
50  if(value->iValue) {
51  ((PZAN*)anal)->PZinput_type = PZ_IN_CUR;
52  }
53  break;
54 
55  case PZ_POL:
56  if(value->iValue) {
57  ((PZAN*)anal)->PZwhich = PZ_DO_POLES;
58  }
59  break;
60 
61  case PZ_ZER:
62  if(value->iValue) {
63  ((PZAN*)anal)->PZwhich = PZ_DO_ZEROS;
64  }
65  break;
66 
67  case PZ_PZ:
68  if(value->iValue) {
69  ((PZAN*)anal)->PZwhich = PZ_DO_POLES | PZ_DO_ZEROS;
70  }
71  break;
72 
73  default:
74  return (E_BADPARM);
75  }
76  return (OK);
77 }
78 
79 
80 static IFparm PZparms[] = {
81  { "nodei", PZ_NODEI, IF_SET|IF_ASK|IF_NODE, "" },
82  { "nodeg", PZ_NODEG, IF_SET|IF_ASK|IF_NODE, "" },
83  { "nodej", PZ_NODEJ, IF_SET|IF_ASK|IF_NODE, "" },
84  { "nodek", PZ_NODEK, IF_SET|IF_ASK|IF_NODE, "" },
85  { "v", PZ_V, IF_SET|IF_ASK|IF_FLAG, "" },
86  { "i", PZ_I, IF_SET|IF_ASK|IF_FLAG, "" },
87  { "pol", PZ_POL, IF_SET|IF_ASK|IF_FLAG, "" },
88  { "zer", PZ_ZER, IF_SET|IF_ASK|IF_FLAG, "" },
89  { "pz", PZ_PZ, IF_SET|IF_ASK|IF_FLAG, "" }
90 };
91 
93  {
94  "PZ",
95  "pole-zero analysis",
96 
97  sizeof(PZparms)/sizeof(IFparm),
98  PZparms
99  },
100  sizeof(PZAN),
101  NODOMAIN,
102  PZparse,
103  PZsetParm,
104  PZaskQuest,
105  PZan
106 };
#define PZ_NODEK
Definition: pzdefs.h:52
#define PZ_NODEG
Definition: pzdefs.h:50
#define NODOMAIN
Definition: jobdefs.h:32
#define PZ_NODEJ
Definition: pzdefs.h:51
#define IF_ASK
Definition: ifsim.h:136
#define E_BADPARM
Definition: iferrmsg.h:26
int iValue
Definition: ifsim.h:232
int PZsetParm(GENERIC *cktp, GENERIC *anal, int which, IFvalue *value)
Definition: pzsetp.c:18
int PZaskQuest()
#define OK
Definition: iferrmsg.h:17
#define PZ_POL
Definition: pzdefs.h:55
#define IF_SET
Definition: ifsim.h:135
static IFparm PZparms[]
Definition: pzsetp.c:80
IFnode nValue
Definition: ifsim.h:237
#define PZ_I
Definition: pzdefs.h:54
#define PZ_V
Definition: pzdefs.h:53
#define PZ_ZER
Definition: pzdefs.h:56
SPICEanalysis PZinfo
Definition: pzsetp.c:92
#define PZ_DO_POLES
Definition: pzdefs.h:44
Definition: ifsim.h:54
int PZparse()
#define IF_FLAG
Definition: ifsim.h:106
int PZan()
#define PZ_DO_ZEROS
Definition: pzdefs.h:45
#define PZ_IN_VOL
Definition: pzdefs.h:46
#define PZ_PZ
Definition: pzdefs.h:57
#define IF_NODE
Definition: ifsim.h:110
#define PZ_IN_CUR
Definition: pzdefs.h:47
#define PZ_NODEI
Definition: pzdefs.h:49
char GENERIC
Definition: ifsim.h:27
Definition: pzdefs.h:23