auxiliary define (ANALYSIS*) anal --> `job'

This commit is contained in:
rlar 2011-12-13 18:00:23 +00:00
parent 5333ab2a4b
commit ef04192ec0
16 changed files with 183 additions and 135 deletions

View File

@ -1,3 +1,21 @@
2011-12-13 Robert Larice
* src/spicelib/analysis/acaskq.c ,
* src/spicelib/analysis/acsetp.c ,
* src/spicelib/analysis/daskq.c ,
* src/spicelib/analysis/dsetparm.c ,
* src/spicelib/analysis/naskq.c ,
* src/spicelib/analysis/nsetparm.c ,
* src/spicelib/analysis/pssaskq.c ,
* src/spicelib/analysis/pssinit.c ,
* src/spicelib/analysis/psssetp.c ,
* src/spicelib/analysis/pzaskq.c ,
* src/spicelib/analysis/pzsetp.c ,
* src/spicelib/analysis/tfsetp.c ,
* src/spicelib/analysis/tranaskq.c ,
* src/spicelib/analysis/traninit.c ,
* src/spicelib/analysis/transetp.c :
auxiliary define (ANALYSIS*) anal --> `job'
2011-12-13 Robert Larice
* autogen.sh ,
* src/spicelib/devices/adms/admst/ngspice.xml :

View File

@ -16,24 +16,26 @@ Author: 1985 Thomas L. Quarles
int
ACaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
{
#define job ((ACAN *) anal)
NG_IGNORE(ckt);
switch(which) {
case AC_START:
value->rValue = ((ACAN*)anal)->ACstartFreq;
value->rValue = job->ACstartFreq;
break;
case AC_STOP:
value->rValue = ((ACAN*)anal)->ACstopFreq ;
value->rValue = job->ACstopFreq ;
break;
case AC_STEPS:
value->iValue = ((ACAN*)anal)->ACnumberSteps;
value->iValue = job->ACnumberSteps;
break;
case AC_DEC:
if(((ACAN*)anal)->ACstepType == DECADE) {
if (job->ACstepType == DECADE) {
value->iValue=1;
} else {
value->iValue=0;
@ -41,7 +43,7 @@ ACaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
break;
case AC_OCT:
if(((ACAN*)anal)->ACstepType == OCTAVE) {
if (job->ACstepType == OCTAVE) {
value->iValue=1;
} else {
value->iValue=0;
@ -49,7 +51,7 @@ ACaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
break;
case AC_LIN:
if(((ACAN*)anal)->ACstepType == LINEAR) {
if (job->ACstepType == LINEAR) {
value->iValue=1;
} else {
value->iValue=0;

View File

@ -15,6 +15,8 @@ Author: 1985 Thomas L. Quarles
int
ACsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
{
#define job ((ACAN *) anal)
NG_IGNORE(ckt);
switch(which) {
@ -22,53 +24,53 @@ ACsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
case AC_START:
if (value->rValue <= 0.0) {
errMsg = copy("Frequency of 0 is invalid for AC start");
((ACAN*)anal)->ACstartFreq = 1.0;
job->ACstartFreq = 1.0;
return(E_PARMVAL);
}
((ACAN*)anal)->ACstartFreq = value->rValue;
job->ACstartFreq = value->rValue;
break;
case AC_STOP:
if (value->rValue <= 0.0) {
errMsg = copy("Frequency of 0 is invalid for AC stop");
((ACAN*)anal)->ACstartFreq = 1.0;
job->ACstartFreq = 1.0;
return(E_PARMVAL);
}
((ACAN*)anal)->ACstopFreq = value->rValue;
job->ACstopFreq = value->rValue;
break;
case AC_STEPS:
((ACAN*)anal)->ACnumberSteps = value->iValue;
job->ACnumberSteps = value->iValue;
break;
case AC_DEC:
if(value->iValue) {
((ACAN*)anal)->ACstepType = DECADE;
job->ACstepType = DECADE;
} else {
if( ((ACAN*)anal)->ACstepType == DECADE) {
((ACAN*)anal)->ACstepType = 0;
if (job->ACstepType == DECADE) {
job->ACstepType = 0;
}
}
break;
case AC_OCT:
if(value->iValue) {
((ACAN*)anal)->ACstepType = OCTAVE;
job->ACstepType = OCTAVE;
} else {
if( ((ACAN*)anal)->ACstepType == OCTAVE) {
((ACAN*)anal)->ACstepType = 0;
if (job->ACstepType == OCTAVE) {
job->ACstepType = 0;
}
}
break;
case AC_LIN:
if(value->iValue) {
((ACAN*)anal)->ACstepType = LINEAR;
job->ACstepType = LINEAR;
} else {
if( ((ACAN*)anal)->ACstepType == LINEAR) {
((ACAN*)anal)->ACstepType = 0;
if (job->ACstepType == LINEAR) {
job->ACstepType = 0;
}
}
break;

View File

@ -14,24 +14,26 @@ Author: 1988 Jaijeet S Roychowdhury
int
DaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
{
#define job ((DISTOAN *) anal)
NG_IGNORE(ckt);
switch(which) {
case D_START:
value->rValue = ((DISTOAN*)anal)->DstartF1;
value->rValue = job->DstartF1;
break;
case D_STOP:
value->rValue = ((DISTOAN*)anal)->DstopF1 ;
value->rValue = job->DstopF1 ;
break;
case D_STEPS:
value->iValue = ((DISTOAN*)anal)->DnumSteps;
value->iValue = job->DnumSteps;
break;
case D_DEC:
if(((DISTOAN*)anal)->DstepType == DECADE) {
if (job->DstepType == DECADE) {
value->iValue=1;
} else {
value->iValue=0;
@ -39,7 +41,7 @@ DaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
break;
case D_OCT:
if(((DISTOAN*)anal)->DstepType == OCTAVE) {
if (job->DstepType == OCTAVE) {
value->iValue=1;
} else {
value->iValue=0;
@ -47,7 +49,7 @@ DaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
break;
case D_LIN:
if(((DISTOAN*)anal)->DstepType == LINEAR) {
if (job->DstepType == LINEAR) {
value->iValue=1;
} else {
value->iValue=0;
@ -55,7 +57,7 @@ DaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
break;
case D_F2OVRF1:
value->rValue = ((DISTOAN*)anal)->Df2ovrF1;
value->rValue = job->Df2ovrF1;
break;
default:
return(E_BADPARM);

View File

@ -15,6 +15,8 @@ Author: 1988 Jaijeet S Roychowdhury
int
DsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
{
#define job ((DISTOAN *) anal)
NG_IGNORE(ckt);
switch(which) {
@ -22,42 +24,42 @@ DsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
case D_START:
if (value->rValue <= 0.0) {
errMsg = copy("Frequency of 0 is invalid");
((DISTOAN*)anal)->DstartF1 = 1.0;
job->DstartF1 = 1.0;
return(E_PARMVAL);
}
((DISTOAN*)anal)->DstartF1 = value->rValue;
job->DstartF1 = value->rValue;
break;
case D_STOP:
if (value->rValue <= 0.0) {
errMsg = copy("Frequency of 0 is invalid");
((DISTOAN*)anal)->DstartF1 = 1.0;
job->DstartF1 = 1.0;
return(E_PARMVAL);
}
((DISTOAN*)anal)->DstopF1 = value->rValue;
job->DstopF1 = value->rValue;
break;
case D_STEPS:
((DISTOAN*)anal)->DnumSteps = value->iValue;
job->DnumSteps = value->iValue;
break;
case D_DEC:
((DISTOAN*)anal)->DstepType = DECADE;
job->DstepType = DECADE;
break;
case D_OCT:
((DISTOAN*)anal)->DstepType = OCTAVE;
job->DstepType = OCTAVE;
break;
case D_LIN:
((DISTOAN*)anal)->DstepType = LINEAR;
job->DstepType = LINEAR;
break;
case D_F2OVRF1:
((DISTOAN*)anal)->Df2ovrF1 = value->rValue;
((DISTOAN*)anal)->Df2wanted = 1;
job->Df2ovrF1 = value->rValue;
job->Df2wanted = 1;
break;
default:

View File

@ -13,24 +13,26 @@ Author: 1987 Gary W. Ng
int
NaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
{
#define job ((NOISEAN *) anal)
NG_IGNORE(ckt);
switch(which) {
case N_OUTPUT:
value->nValue = ((NOISEAN*)anal)->output;
value->nValue = job->output;
break;
case N_OUTREF:
value->nValue = ((NOISEAN*)anal)->outputRef;
value->nValue = job->outputRef;
break;
case N_INPUT:
value->uValue = ((NOISEAN*)anal)->input;
value->uValue = job->input;
break;
case N_DEC:
if(((NOISEAN*)anal)->NstpType == DECADE) {
if (job->NstpType == DECADE) {
value->iValue=1;
} else {
value->iValue=0;
@ -38,7 +40,7 @@ NaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
break;
case N_OCT:
if(((NOISEAN*)anal)->NstpType == OCTAVE) {
if (job->NstpType == OCTAVE) {
value->iValue=1;
} else {
value->iValue=0;
@ -46,7 +48,7 @@ NaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
break;
case N_LIN:
if(((NOISEAN*)anal)->NstpType == LINEAR) {
if (job->NstpType == LINEAR) {
value->iValue=1;
} else {
value->iValue=0;
@ -54,19 +56,19 @@ NaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
break;
case N_STEPS:
value->iValue = ((NOISEAN*)anal)->NnumSteps;
value->iValue = job->NnumSteps;
break;
case N_START:
value->rValue = ((NOISEAN*)anal)->NstartFreq;
value->rValue = job->NstartFreq;
break;
case N_STOP:
value->rValue = ((NOISEAN*)anal)->NstopFreq;
value->rValue = job->NstopFreq;
break;
case N_PTSPERSUM:
value->iValue = ((NOISEAN*)anal)->NStpsSm;
value->iValue = job->NStpsSm;
break;
default:

View File

@ -14,60 +14,62 @@ Author: 1987 Gary W. Ng
int
NsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
{
#define job ((NOISEAN *) anal)
NG_IGNORE(ckt);
switch(which) {
case N_OUTPUT:
((NOISEAN*)anal)->output = value->nValue;
job->output = value->nValue;
break;
case N_OUTREF:
((NOISEAN*)anal)->outputRef = value->nValue;
job->outputRef = value->nValue;
break;
case N_INPUT:
((NOISEAN*)anal)->input = value->uValue;
job->input = value->uValue;
break;
case N_DEC:
((NOISEAN*)anal)->NstpType = DECADE;
job->NstpType = DECADE;
break;
case N_OCT:
((NOISEAN*)anal)->NstpType = OCTAVE;
job->NstpType = OCTAVE;
break;
case N_LIN:
((NOISEAN*)anal)->NstpType = LINEAR;
job->NstpType = LINEAR;
break;
case N_STEPS:
((NOISEAN*)anal)->NnumSteps = value->iValue;
job->NnumSteps = value->iValue;
break;
case N_START:
if (value->rValue <= 0.0) {
errMsg = copy("Frequency of 0 is invalid");
((NOISEAN*)anal)->NstartFreq = 1.0;
job->NstartFreq = 1.0;
return(E_PARMVAL);
}
((NOISEAN*)anal)->NstartFreq = value->rValue;
job->NstartFreq = value->rValue;
break;
case N_STOP:
if (value->rValue <= 0.0) {
errMsg = copy("Frequency of 0 is invalid");
((NOISEAN*)anal)->NstartFreq = 1.0;
job->NstartFreq = 1.0;
return(E_PARMVAL);
}
((NOISEAN*)anal)->NstopFreq = value->rValue;
job->NstopFreq = value->rValue;
break;
case N_PTSPERSUM:
((NOISEAN*)anal)->NStpsSm = value->iValue;
job->NStpsSm = value->iValue;
break;
default:

View File

@ -12,37 +12,39 @@ Author: 2010-05 Stefano Perticaroli ``spertica''
int
PSSaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
{
#define job ((PSSan *) anal)
NG_IGNORE(ckt);
switch(which) {
case GUESSED_FREQ:
value->rValue = ((PSSan *)anal)->PSSguessedFreq;
value->rValue = job->PSSguessedFreq;
break;
case OSC_NODE:
value->nValue = ((PSSan *)anal)->PSSoscNode;
value->nValue = job->PSSoscNode;
break;
case STAB_TIME:
value->rValue = ((PSSan *)anal)->PSSstabTime;
value->rValue = job->PSSstabTime;
break;
case PSS_UIC:
if(((PSSan *)anal)->PSSmode & MODEUIC) {
if (job->PSSmode & MODEUIC) {
value->iValue = 1;
} else {
value->iValue = 0;
}
break;
case PSS_POINTS:
value->iValue = ((PSSan *)anal)->PSSpoints;
value->iValue = job->PSSpoints;
break;
case PSS_HARMS:
value->iValue = ((PSSan *)anal)->PSSharms;
value->iValue = job->PSSharms;
break;
case SC_ITER:
value->iValue = ((PSSan *)anal)->sc_iter;
value->iValue = job->sc_iter;
break;
case STEADY_COEFF:
value->rValue = ((PSSan *)anal)->steady_coeff;
value->rValue = job->steady_coeff;
break;
default:

View File

@ -8,26 +8,28 @@ Author: 2010-05 Stefano Perticaroli ``spertica''
#include "ngspice/pssdefs.h"
#include "ngspice/iferrmsg.h"
int PSSinit(CKTcircuit *ckt, JOB *job)
int PSSinit(CKTcircuit *ckt, JOB *anal)
{
#define job ((PSSan *) anal)
/* Final time depends on stabilization time requested for PSS
and on at least one more oscillation period */
ckt->CKTfinalTime = ((PSSan*)job)->PSSstabTime + 2/((PSSan*)job)->PSSguessedFreq;
ckt->CKTfinalTime = job->PSSstabTime + 2/job->PSSguessedFreq;
/* Step is chosen empirically to be 1% of PSSguessedFreq */
ckt->CKTstep = 0.01 * (1/((PSSan*)job)->PSSguessedFreq);
ckt->CKTstep = 0.01 * (1/job->PSSguessedFreq);
/* Init time should be always zero */
ckt->CKTinitTime = 0;
/* MaxStep should not exceed Nyquist criterion */
ckt->CKTmaxStep = 0.5*(1/((PSSan*)job)->PSSguessedFreq);
ckt->CKTmaxStep = 0.5*(1/job->PSSguessedFreq);
ckt->CKTdelmin = 1e-9*ckt->CKTmaxStep;
ckt->CKTmode = ((PSSan*)job)->PSSmode;
ckt->CKTmode = job->PSSmode;
/* modified CKTdefs.h for the following - 100609 */
ckt->CKTstabTime = ((PSSan*)job)->PSSstabTime;
ckt->CKTguessedFreq = ((PSSan*)job)->PSSguessedFreq;
ckt->CKTharms = ((PSSan*)job)->PSSharms;
ckt->CKTpsspoints = ((PSSan*)job)->PSSpoints;
ckt->CKTsc_iter = ((PSSan*)job)->sc_iter;
ckt->CKTsteady_coeff = ((PSSan*)job)->steady_coeff;
ckt->CKTstabTime = job->PSSstabTime;
ckt->CKTguessedFreq = job->PSSguessedFreq;
ckt->CKTharms = job->PSSharms;
ckt->CKTpsspoints = job->PSSpoints;
ckt->CKTsc_iter = job->sc_iter;
ckt->CKTsteady_coeff = job->steady_coeff;
return OK;
}

View File

@ -14,35 +14,37 @@ Author: 2010-05 Stefano Perticaroli ``spertica''
int
PSSsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
{
#define job ((PSSan *) anal)
NG_IGNORE(ckt);
switch(which) {
case GUESSED_FREQ:
((PSSan *)anal)->PSSguessedFreq = value->rValue;
job->PSSguessedFreq = value->rValue;
break;
case OSC_NODE:
((PSSan *)anal)->PSSoscNode = value->nValue;
job->PSSoscNode = value->nValue;
break;
case STAB_TIME:
((PSSan *)anal)->PSSstabTime = value->rValue;
job->PSSstabTime = value->rValue;
break;
case PSS_POINTS:
((PSSan *)anal)->PSSpoints = value->iValue;
job->PSSpoints = value->iValue;
break;
case PSS_HARMS:
((PSSan *)anal)->PSSharms = value->iValue;
job->PSSharms = value->iValue;
break;
case PSS_UIC:
if(value->iValue) {
((PSSan *)anal)->PSSmode |= MODEUIC;
job->PSSmode |= MODEUIC;
}
break;
case SC_ITER:
((PSSan *)anal)->sc_iter = value->iValue;
job->sc_iter = value->iValue;
break;
case STEADY_COEFF:
((PSSan *)anal)->steady_coeff = value->rValue;
job->steady_coeff = value->rValue;
break;
default:

View File

@ -15,26 +15,28 @@ Author: 1985 Thomas L. Quarles
int
PZaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
{
#define job ((PZAN *) anal)
switch(which) {
case PZ_NODEI:
value->nValue = CKTnum2nod(ckt, ((PZAN*)anal)->PZin_pos);
value->nValue = CKTnum2nod(ckt, job->PZin_pos);
break;
case PZ_NODEG:
value->nValue = CKTnum2nod(ckt, ((PZAN*)anal)->PZin_neg);
value->nValue = CKTnum2nod(ckt, job->PZin_neg);
break;
case PZ_NODEJ:
value->nValue = CKTnum2nod(ckt, ((PZAN*)anal)->PZout_pos);
value->nValue = CKTnum2nod(ckt, job->PZout_pos);
break;
case PZ_NODEK:
value->nValue = CKTnum2nod(ckt, ((PZAN*)anal)->PZout_neg);
value->nValue = CKTnum2nod(ckt, job->PZout_neg);
break;
case PZ_V:
if( ((PZAN*)anal)->PZinput_type == PZ_IN_VOL) {
if (job->PZinput_type == PZ_IN_VOL) {
value->iValue=1;
} else {
value->iValue=0;
@ -42,7 +44,7 @@ PZaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
break;
case PZ_I:
if( ((PZAN*)anal)->PZinput_type == PZ_IN_CUR) {
if (job->PZinput_type == PZ_IN_CUR) {
value->iValue=1;
} else {
value->iValue=0;
@ -50,7 +52,7 @@ PZaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
break;
case PZ_POL:
if( ((PZAN*)anal)->PZwhich == PZ_DO_POLES) {
if (job->PZwhich == PZ_DO_POLES) {
value->iValue=1;
} else {
value->iValue=0;
@ -58,7 +60,7 @@ PZaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
break;
case PZ_ZER:
if( ((PZAN*)anal)->PZwhich == PZ_DO_ZEROS) {
if (job->PZwhich == PZ_DO_ZEROS) {
value->iValue=1;
} else {
value->iValue=0;
@ -66,7 +68,7 @@ PZaskQuest(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
break;
case PZ_PZ:
if( ((PZAN*)anal)->PZwhich == (PZ_DO_POLES | PZ_DO_ZEROS)) {
if (job->PZwhich == (PZ_DO_POLES | PZ_DO_ZEROS)) {
value->iValue=1;
} else {
value->iValue=0;

View File

@ -16,53 +16,55 @@ Author: 1985 Thomas L. Quarles
int
PZsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
{
#define job ((PZAN *) anal)
NG_IGNORE(ckt);
switch(which) {
case PZ_NODEI:
((PZAN*)anal)->PZin_pos = (value->nValue)->number;
job->PZin_pos = value->nValue->number;
break;
case PZ_NODEG:
((PZAN*)anal)->PZin_neg = (value->nValue)->number;
job->PZin_neg = value->nValue->number;
break;
case PZ_NODEJ:
((PZAN*)anal)->PZout_pos = (value->nValue)->number;
job->PZout_pos = value->nValue->number;
break;
case PZ_NODEK:
((PZAN*)anal)->PZout_neg = (value->nValue)->number;
job->PZout_neg = value->nValue->number;
break;
case PZ_V:
if(value->iValue) {
((PZAN*)anal)->PZinput_type = PZ_IN_VOL;
job->PZinput_type = PZ_IN_VOL;
}
break;
case PZ_I:
if(value->iValue) {
((PZAN*)anal)->PZinput_type = PZ_IN_CUR;
job->PZinput_type = PZ_IN_CUR;
}
break;
case PZ_POL:
if(value->iValue) {
((PZAN*)anal)->PZwhich = PZ_DO_POLES;
job->PZwhich = PZ_DO_POLES;
}
break;
case PZ_ZER:
if(value->iValue) {
((PZAN*)anal)->PZwhich = PZ_DO_ZEROS;
job->PZwhich = PZ_DO_ZEROS;
}
break;
case PZ_PZ:
if(value->iValue) {
((PZAN*)anal)->PZwhich = PZ_DO_POLES | PZ_DO_ZEROS;
job->PZwhich = PZ_DO_POLES | PZ_DO_ZEROS;
}
break;

View File

@ -15,30 +15,32 @@ Author: 1985 Thomas L. Quarles
int
TFsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
{
#define job ((TFan *) anal)
NG_IGNORE(ckt);
switch(which) {
case TF_OUTPOS:
((TFan *)anal)->TFoutPos = value->nValue;
((TFan *)anal)->TFoutIsV = TRUE;
((TFan *)anal)->TFoutIsI = FALSE;
job->TFoutPos = value->nValue;
job->TFoutIsV = TRUE;
job->TFoutIsI = FALSE;
break;
case TF_OUTNEG:
((TFan *)anal)->TFoutNeg = value->nValue;
((TFan *)anal)->TFoutIsV = TRUE;
((TFan *)anal)->TFoutIsI = FALSE;
job->TFoutNeg = value->nValue;
job->TFoutIsV = TRUE;
job->TFoutIsI = FALSE;
break;
case TF_OUTNAME:
((TFan *)anal)->TFoutName = value->sValue;
job->TFoutName = value->sValue;
break;
case TF_OUTSRC:
((TFan *)anal)->TFoutSrc = value->uValue;
((TFan *)anal)->TFoutIsV = FALSE;
((TFan *)anal)->TFoutIsI = TRUE;
job->TFoutSrc = value->uValue;
job->TFoutIsV = FALSE;
job->TFoutIsI = TRUE;
break;
case TF_INSRC:
((TFan *)anal)->TFinSrc = value->uValue;
job->TFinSrc = value->uValue;
break;
default:

View File

@ -13,24 +13,26 @@ Author: 1985 Thomas L. Quarles
int
TRANaskQuest(CKTcircuit *ckt, JOB *anal, int which,IFvalue *value)
{
#define job ((TRANan *) anal)
NG_IGNORE(ckt);
switch(which) {
case TRAN_TSTOP:
value->rValue = ((TRANan *)anal)->TRANfinalTime;
value->rValue = job->TRANfinalTime;
break;
case TRAN_TSTEP:
value->rValue = ((TRANan *)anal)->TRANstep;
value->rValue = job->TRANstep;
break;
case TRAN_TSTART:
value->rValue = ((TRANan *)anal)->TRANinitTime;
value->rValue = job->TRANinitTime;
break;
case TRAN_TMAX:
value->rValue = ((TRANan *)anal)->TRANmaxStep;
value->rValue = job->TRANmaxStep;
break;
case TRAN_UIC:
if(((TRANan *)anal)->TRANmode & MODEUIC) {
if (job->TRANmode & MODEUIC) {
value->iValue = 1;
} else {
value->iValue = 0;

View File

@ -13,12 +13,14 @@ Modified: 2000 AlansFixes
* (must be done after mode is set as below)
*/
int TRANinit(CKTcircuit *ckt, JOB *job)
int TRANinit(CKTcircuit *ckt, JOB *anal)
{
ckt->CKTfinalTime = ((TRANan*)job)->TRANfinalTime;
ckt->CKTstep = ((TRANan*)job)->TRANstep;
ckt->CKTinitTime = ((TRANan*)job)->TRANinitTime;
ckt->CKTmaxStep = ((TRANan*)job)->TRANmaxStep;
#define job ((TRANan *) anal)
ckt->CKTfinalTime = job->TRANfinalTime;
ckt->CKTstep = job->TRANstep;
ckt->CKTinitTime = job->TRANinitTime;
ckt->CKTmaxStep = job->TRANmaxStep;
@ -39,7 +41,7 @@ int TRANinit(CKTcircuit *ckt, JOB *job)
ckt->CKTdelmin = 1e-11*ckt->CKTmaxStep; /* XXX */
ckt->CKTmode = ((TRANan*)job)->TRANmode;
ckt->CKTmode = job->TRANmode;
return OK;
}

View File

@ -15,6 +15,8 @@ Author: 1985 Thomas L. Quarles
int
TRANsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
{
#define job ((TRANan *) anal)
NG_IGNORE(ckt);
switch(which) {
@ -22,33 +24,33 @@ TRANsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
case TRAN_TSTOP:
if (value->rValue <= 0.0) {
errMsg = copy("TST0P is invalid, must be greater than zero.");
((TRANan *)anal)->TRANfinalTime = 1.0;
job->TRANfinalTime = 1.0;
return(E_PARMVAL);
}
((TRANan *)anal)->TRANfinalTime = value->rValue;
job->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;
job->TRANstep = 1.0;
return(E_PARMVAL);
}
((TRANan *)anal)->TRANstep = value->rValue;
job->TRANstep = value->rValue;
break;
case TRAN_TSTART:
if (value->rValue >= ((TRANan *)anal)->TRANfinalTime ) {
if (value->rValue >= job->TRANfinalTime) {
errMsg = copy("TSTART is invalid, must be less than TSTOP.");
((TRANan *)anal)->TRANinitTime = 0.0;
job->TRANinitTime = 0.0;
return(E_PARMVAL);
}
((TRANan *)anal)->TRANinitTime = value->rValue;
job->TRANinitTime = value->rValue;
break;
case TRAN_TMAX:
((TRANan *)anal)->TRANmaxStep = value->rValue;
job->TRANmaxStep = value->rValue;
break;
case TRAN_UIC:
if(value->iValue) {
((TRANan *)anal)->TRANmode |= MODEUIC;
job->TRANmode |= MODEUIC;
}
break;