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
PZsetParm(cktp,anal,which,value)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
92 SPICEanalysis PZinfo = {
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 };
107