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 "spice.h"
9 #include <stdio.h>
10 #include "cktdefs.h"
11 #include "trandefs.h"
12 #include "jobdefs.h"
13 #include "iferrmsg.h"
14 
15 
16 /* ARGSUSED */
17 int
TRANsetParm(cktp,anal,which,value)18 TRANsetParm(cktp,anal,which,value)
19 
20 GENERIC *cktp;
21 GENERIC *anal;
22 int which;
23 IFvalue *value;
24 {
25     TRANAN *job = (TRANAN *) anal;
26 
27     switch (which) {
28 
29         case TRAN_TSTOP:
30             job->TRANfinalTime = value->rValue;
31             break;
32 
33         case TRAN_TSTEP:
34             job->TRANstep = value->rValue;
35             break;
36 
37         case TRAN_TSTART:
38             job->TRANinitTime = value->rValue;
39             break;
40 
41         case TRAN_TMAX:
42             job->TRANmaxStep = value->rValue;
43             break;
44 
45         case TRAN_UIC:
46             if (value->iValue) {
47                 job->TRANmode |= MODEUIC;
48             }
49             break;
50 
51         default:
52             if (DCTsetp(&job->DC,which,value) == OK)
53                 return (OK);
54             return (E_BADPARM);
55     }
56     return (OK);
57 }
58 
59 
60 static IFparm TRANparms[] = {
61  { "tstart",   TRAN_TSTART, IFP|IF_REAL,     "starting time" },
62  { "tstop",    TRAN_TSTOP,  IFP|IF_REAL,     "ending time" },
63  { "tstep",    TRAN_TSTEP,  IFP|IF_REAL,     "time step" },
64  { "tmax",     TRAN_TMAX,   IFP|IF_REAL,     "maximum time step" },
65  { "uic",      TRAN_UIC,    IFP|IF_FLAG,     "use initial conditions" },
66  { "name1",    DC_NAME1,    IFP|IF_INSTANCE, "name of source to step" },
67  { "start1",   DC_START1,   IFP|IF_REAL,     "starting voltage/current"},
68  { "stop1",    DC_STOP1,    IFP|IF_REAL,     "ending voltage/current" },
69  { "step1",    DC_STEP1,    IFP|IF_REAL,     "voltage/current step" },
70  { "name2",    DC_NAME2,    IFP|IF_INSTANCE, "name of source to step" },
71  { "start2",   DC_START2,   IFP|IF_REAL,     "starting voltage/current"},
72  { "stop2",    DC_STOP2,    IFP|IF_REAL,     "ending voltage/current" },
73  { "step2",    DC_STEP2,    IFP|IF_REAL,     "voltage/current step" }
74 };
75 
76 SPICEanalysis TRANinfo  = {
77     {
78         "TRAN",
79         "Transient analysis",
80 
81         sizeof(TRANparms)/sizeof(IFparm),
82         TRANparms
83     },
84     sizeof(TRANAN),
85     TIMEDOMAIN,
86     TRANparse,
87     TRANsetParm,
88     TRANaskQuest,
89     TRANan
90 };
91