1 /**********
2 Copyright 1990 Regents of the University of California. All rights reserved.
3 Author: 1985 Thomas L. Quarles
4 **********/
5
6
7 #include "ngspice/ngspice.h"
8 #include "ngspice/ifsim.h"
9 #include "ngspice/iferrmsg.h"
10 #include "ngspice/pzdefs.h"
11 #include "ngspice/cktdefs.h"
12
13 #include "analysis.h"
14
15 /* ARGSUSED */
16 int
PZsetParm(CKTcircuit * ckt,JOB * anal,int which,IFvalue * value)17 PZsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
18 {
19 PZAN *job = (PZAN *) anal;
20
21 NG_IGNORE(ckt);
22
23 switch(which) {
24
25 case PZ_NODEI:
26 job->PZin_pos = value->nValue->number;
27 break;
28
29 case PZ_NODEG:
30 job->PZin_neg = value->nValue->number;
31 break;
32
33 case PZ_NODEJ:
34 job->PZout_pos = value->nValue->number;
35 break;
36
37 case PZ_NODEK:
38 job->PZout_neg = value->nValue->number;
39 break;
40
41 case PZ_V:
42 if(value->iValue) {
43 job->PZinput_type = PZ_IN_VOL;
44 }
45 break;
46
47 case PZ_I:
48 if(value->iValue) {
49 job->PZinput_type = PZ_IN_CUR;
50 }
51 break;
52
53 case PZ_POL:
54 if(value->iValue) {
55 job->PZwhich = PZ_DO_POLES;
56 }
57 break;
58
59 case PZ_ZER:
60 if(value->iValue) {
61 job->PZwhich = PZ_DO_ZEROS;
62 }
63 break;
64
65 case PZ_PZ:
66 if(value->iValue) {
67 job->PZwhich = PZ_DO_POLES | PZ_DO_ZEROS;
68 }
69 break;
70
71 default:
72 return(E_BADPARM);
73 }
74 return(OK);
75 }
76
77
78 static IFparm PZparms[] = {
79 { "nodei", PZ_NODEI, IF_SET|IF_ASK|IF_NODE, "" },
80 { "nodeg", PZ_NODEG, IF_SET|IF_ASK|IF_NODE, "" },
81 { "nodej", PZ_NODEJ, IF_SET|IF_ASK|IF_NODE, "" },
82 { "nodek", PZ_NODEK, IF_SET|IF_ASK|IF_NODE, "" },
83 { "vol", PZ_V, IF_SET|IF_ASK|IF_FLAG, "" },
84 { "cur", PZ_I, IF_SET|IF_ASK|IF_FLAG, "" },
85 { "pol", PZ_POL, IF_SET|IF_ASK|IF_FLAG, "" },
86 { "zer", PZ_ZER, IF_SET|IF_ASK|IF_FLAG, "" },
87 { "pz", PZ_PZ, IF_SET|IF_ASK|IF_FLAG, "" }
88 };
89
90 SPICEanalysis PZinfo = {
91 {
92 "PZ",
93 "pole-zero analysis",
94
95 NUMELEMS(PZparms),
96 PZparms
97 },
98 sizeof(PZAN),
99 NODOMAIN,
100 1,
101 PZsetParm,
102 PZaskQuest,
103 NULL,
104 PZan
105 };
106