86 lines
2.2 KiB
C
86 lines
2.2 KiB
C
/**********
|
|
Copyright 1990 Regents of the University of California. All rights reserved.
|
|
Author: 1985 Thomas L. Quarles
|
|
**********/
|
|
|
|
#include "ngspice.h"
|
|
#include "ifsim.h"
|
|
#include "iferrmsg.h"
|
|
#include "trandefs.h"
|
|
#include "cktdefs.h"
|
|
|
|
#include "analysis.h"
|
|
|
|
/* ARGSUSED */
|
|
int
|
|
TRANsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
|
|
{
|
|
NG_IGNORE(ckt);
|
|
|
|
switch(which) {
|
|
|
|
case TRAN_TSTOP:
|
|
if (value->rValue <= 0.0) {
|
|
errMsg = copy("TST0P is invalid, must be greater than zero.");
|
|
((TRANan *)anal)->TRANfinalTime = 1.0;
|
|
return(E_PARMVAL);
|
|
}
|
|
((TRANan *)anal)->TRANfinalTime = value->rValue;
|
|
break;
|
|
case TRAN_TSTEP:
|
|
if (value->rValue <= 0.0) {
|
|
errMsg = copy( "TSTEP is invalid, must be greater than zero." );
|
|
((TRANan *)anal)->TRANstep = 1.0;
|
|
return(E_PARMVAL);
|
|
}
|
|
((TRANan *)anal)->TRANstep = value->rValue;
|
|
break;
|
|
case TRAN_TSTART:
|
|
if (value->rValue >= ((TRANan *)anal)->TRANfinalTime ) {
|
|
errMsg = copy("TSTART is invalid, must be less than TSTOP.");
|
|
((TRANan *)anal)->TRANinitTime = 0.0;
|
|
return(E_PARMVAL);
|
|
}
|
|
((TRANan *)anal)->TRANinitTime = value->rValue;
|
|
break;
|
|
case TRAN_TMAX:
|
|
((TRANan *)anal)->TRANmaxStep = value->rValue;
|
|
break;
|
|
case TRAN_UIC:
|
|
if(value->iValue) {
|
|
((TRANan *)anal)->TRANmode |= MODEUIC;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return(E_BADPARM);
|
|
}
|
|
return(OK);
|
|
}
|
|
|
|
|
|
static IFparm TRANparms[] = {
|
|
{ "tstart", TRAN_TSTART, IF_SET|IF_REAL, "starting time" },
|
|
{ "tstop", TRAN_TSTOP, IF_SET|IF_REAL, "ending time" },
|
|
{ "tstep", TRAN_TSTEP, IF_SET|IF_REAL, "time step" },
|
|
{ "tmax", TRAN_TMAX, IF_SET|IF_REAL, "maximum time step" },
|
|
{ "uic", TRAN_UIC, IF_SET|IF_FLAG, "use initial conditions" },
|
|
};
|
|
|
|
SPICEanalysis TRANinfo = {
|
|
{
|
|
"TRAN",
|
|
"Transient analysis",
|
|
|
|
NUMELEMS(TRANparms),
|
|
TRANparms
|
|
},
|
|
sizeof(TRANan),
|
|
TIMEDOMAIN,
|
|
1,
|
|
TRANsetParm,
|
|
TRANaskQuest,
|
|
TRANinit,
|
|
DCtran
|
|
};
|