auxiliary define (ANALYSIS*) anal --> `job'
This commit is contained in:
parent
5333ab2a4b
commit
ef04192ec0
18
ChangeLog
18
ChangeLog
|
|
@ -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 :
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue