ngspice/src/spicelib/analysis/dctsetp.c

120 lines
3.1 KiB
C
Raw Normal View History

2000-04-27 22:03:57 +02:00
/**********
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 "trcvdefs.h"
#include "cktdefs.h"
* TODO, doc/ngspice.texi: Small updates * configure.in: New --enable-smoketest. * src/main.c src/ngspice.c src/frontend/outitf.c src/frontend/runcoms.c src/frontend/spiceif.c src/frontend/parser/numparse.c src/include/cktdefs.h src/include/fteext.h src/include/inpdefs.h src/include/jobdefs.h src/include/ngspice.h src/include/tskdefs.h src/spicelib/analysis/Makefile.am src/spicelib/analysis/acsetp.c src/spicelib/analysis/cktaskaq.c src/spicelib/analysis/cktdojob.c src/spicelib/analysis/cktnewan.c src/spicelib/analysis/cktsetap.c src/spicelib/analysis/cktsopt.c src/spicelib/analysis/ckttroub.c src/spicelib/analysis/dcosetp.c src/spicelib/analysis/dctsetp.c src/spicelib/analysis/dsetparm.c src/spicelib/analysis/nsetparm.c src/spicelib/analysis/pzsetp.c src/spicelib/analysis/senssetp.c src/spicelib/analysis/tfsetp.c src/spicelib/analysis/transetp.c src/spicelib/devices/bjt/bjtdset.h src/spicelib/devices/bjt/bjtext.h src/spicelib/devices/bjt/bjtsetup.c src/spicelib/devices/bsim2/b2set.c src/spicelib/devices/bsim3/b3acld.c src/spicelib/devices/bsim3/b3set.c src/spicelib/devices/bsim3/bsim3def.h src/spicelib/devices/csw/cswtrunc.c src/spicelib/devices/dio/diodset.c src/spicelib/devices/dio/dioinit.c src/spicelib/devices/jfet/jfetset.c src/spicelib/devices/mes/messetup.c src/spicelib/devices/mos1/mos1ask.c src/spicelib/devices/mos1/mos1set.c src/spicelib/devices/mos1/mos1temp.c src/spicelib/devices/mos3/mos3load.c src/spicelib/devices/mos6/mos6set.c src/spicelib/devices/sw/swtrunc.c src/spicelib/parser/inppas2.c src/spicelib/parser/inppas3.c src/spicelib/parser/inppas3.h: Paolo and I have integrated patches from Alan Gillespie <Alan.Gillespie@analog.com>.
2000-09-05 21:48:22 +02:00
#include "analysis.h"
2000-04-27 22:03:57 +02:00
/* ARGSUSED */
int
DCTsetParm(CKTcircuit *ckt, JOB *anal, int which, IFvalue *value)
2000-04-27 22:03:57 +02:00
{
TRCV* cv= (TRCV*)anal;
2010-11-16 20:11:32 +01:00
2010-11-16 21:38:24 +01:00
NG_IGNORE(ckt);
2010-11-16 20:11:32 +01:00
2000-04-27 22:03:57 +02:00
switch(which) {
case DCT_START1:
cv->TRCVvStart[0] = value->rValue;
cv->TRCVnestLevel = MAX(0,cv->TRCVnestLevel);
cv->TRCVset[0]=TRUE;
break;
case DCT_STOP1:
cv->TRCVvStop[0] = value->rValue;
cv->TRCVnestLevel = MAX(0,cv->TRCVnestLevel);
cv->TRCVset[0]=TRUE;
break;
case DCT_STEP1:
cv->TRCVvStep[0] = value->rValue;
cv->TRCVnestLevel = MAX(0,cv->TRCVnestLevel);
cv->TRCVset[0]=TRUE;
break;
case DCT_START2:
cv->TRCVvStart[1] = value->rValue;
cv->TRCVnestLevel = MAX(1,cv->TRCVnestLevel);
cv->TRCVset[1]=TRUE;
break;
case DCT_STOP2:
cv->TRCVvStop[1] = value->rValue;
cv->TRCVnestLevel = MAX(1,cv->TRCVnestLevel);
cv->TRCVset[1]=TRUE;
break;
case DCT_STEP2:
cv->TRCVvStep[1] = value->rValue;
cv->TRCVnestLevel = MAX(1,cv->TRCVnestLevel);
cv->TRCVset[1]=TRUE;
break;
case DCT_NAME1:
cv->TRCVvName[0] = value->uValue;
cv->TRCVnestLevel = MAX(0,cv->TRCVnestLevel);
cv->TRCVset[0]=TRUE;
break;
case DCT_NAME2:
cv->TRCVvName[1] = value->uValue;
cv->TRCVnestLevel = MAX(1,cv->TRCVnestLevel);
cv->TRCVset[1]=TRUE;
break;
case DCT_TYPE1:
cv->TRCVvType[0] = value->iValue;
cv->TRCVnestLevel = MAX(0,cv->TRCVnestLevel);
cv->TRCVset[0]=TRUE;
break;
case DCT_TYPE2:
cv->TRCVvType[1] = value->iValue;
cv->TRCVnestLevel = MAX(1,cv->TRCVnestLevel);
cv->TRCVset[1]=TRUE;
break;
default:
return(E_BADPARM);
}
return(OK);
}
static IFparm DCTparms[] = {
{ "start1", DCT_START1, IF_SET|IF_REAL, "starting voltage/current"},
{ "stop1", DCT_STOP1, IF_SET|IF_REAL, "ending voltage/current" },
{ "step1", DCT_STEP1, IF_SET|IF_REAL, "voltage/current step" },
{ "start2", DCT_START2, IF_SET|IF_REAL, "starting voltage/current"},
{ "stop2", DCT_STOP2, IF_SET|IF_REAL, "ending voltage/current" },
{ "step2", DCT_STEP2, IF_SET|IF_REAL, "voltage/current step" },
{ "name1", DCT_NAME1, IF_SET|IF_INSTANCE, "name of source to step" },
{ "name2", DCT_NAME2, IF_SET|IF_INSTANCE, "name of source to step" },
{ "type1", DCT_TYPE1, IF_SET|IF_INTEGER, "type of source to step" },
{ "type2", DCT_TYPE2, IF_SET|IF_INTEGER, "type of source to step" }
};
SPICEanalysis DCTinfo = {
{
"DC",
"D.C. Transfer curve analysis",
NUMELEMS(DCTparms),
2000-04-27 22:03:57 +02:00
DCTparms
},
sizeof(TRCV),
SWEEPDOMAIN,
1,
DCTsetParm,
DCTaskQuest,
NULL,
DCtrCurv
};