⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 senssetp.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
字号:
/**********Copyright 1991 Regents of the University of California.  All rights reserved.**********/#include "spice.h"#include <stdio.h>#include "ifsim.h"#include "iferrmsg.h"#include "cktdefs.h"#include "sensdefs.h"#include "suffix.h"/* ARGSUSED */int SENSsetParam(ckt,anal,which,value)    CKTcircuit *ckt;    GENERIC *anal;    int which;    IFvalue *value;{    SENS_AN	*sinfo = (SENS_AN *) anal;    switch(which) {    case SENS_POS:        sinfo->output_pos = (CKTnode *) value->nValue;        sinfo->output_neg = NULL;        sinfo->output_volt = 1;        sinfo->step_type = SENS_DC;        break;    case SENS_NEG:        sinfo->output_neg = (CKTnode *) value->nValue;        break;    case SENS_SRC:        sinfo->output_src = value->uValue;        sinfo->output_volt = 0;        sinfo->step_type = SENS_DC;        break;    case SENS_NAME:        sinfo->output_name = value->sValue;        break;    case SENS_START:        sinfo->start_freq = value->rValue;        break;    case SENS_STOP:        sinfo->stop_freq = value->rValue;        break;    case SENS_STEPS:        sinfo->n_freq_steps = value->iValue;        break;    case SENS_DEC:	sinfo->step_type = SENS_DECADE;        break;    case SENS_OCT:	sinfo->step_type = SENS_OCTAVE;        break;    case SENS_LIN:	sinfo->step_type = SENS_LINEAR;	break;    case SENS_DC:	sinfo->step_type = SENS_DC;	break;    case SENS_DEFTOL:	sinfo->deftol = value->rValue;	break;    case SENS_DEFPERTURB:	sinfo->defperturb = value->rValue;	break;    default:        return(E_BADPARM);    }    return(OK);}static IFparm SENSparms[] = {    /* TF like parameters */    { "outpos",     SENS_POS, IF_SET|IF_ASK|IF_NODE, "output positive node" },    { "outneg",     SENS_NEG, IF_SET|IF_ASK|IF_NODE, "output negative node" },    { "outsrc",     SENS_SRC, IF_SET|IF_ASK|IF_INSTANCE, "output current" },    { "outname",    SENS_NAME, IF_SET|IF_ASK|IF_STRING,	    "Name of output variable" },    /* AC parameters */    { "start",      SENS_START, IF_SET|IF_ASK|IF_REAL, "starting frequency" },    { "stop",       SENS_STOP,  IF_SET|IF_ASK|IF_REAL, "ending frequency" },    { "numsteps",   SENS_STEPS,IF_SET|IF_ASK|IF_INTEGER,	    "number of frequencies"},    { "dec",        SENS_DEC,     IF_SET|IF_FLAG, "step by decades" },    { "oct",        SENS_OCT,     IF_SET|IF_FLAG, "step by octaves" },    { "lin",        SENS_LIN,     IF_SET|IF_FLAG, "step linearly" },    { "dc",         SENS_DC,      IF_SET|IF_FLAG, "analysis at DC" },#ifdef notdef	/* Future coding */    /* perturbation limits */    /* defaults for the analysis */    { "deftol",	    SENS_DEFTOL, IF_SET|IF_REAL, "default tolerance" },    { "defperturb", SENS_DEFPERT, IF_SET|IF_REAL, "default perterbation" },    { "type",       SENS_TYPE, IF_SET|IF_INTEGER,	    "describe device, model or element parameters" },    { "device",     SENS_DEVICE, IF_STRING, "type of model or device" },    { "devdeftol",  SENS_DEVDEFTOL, IF_SET|IF_REAL,	    "default tolerance (device type)" },    { "devdefperturb",SENS_DEVDEFPERT, IF_SET|IF_REAL,	    "default perturbation (device type)" },    { "moddeftol",  SENS_DEVDEFTOL, IF_SET|IF_REAL,	    "default tolerance (model)" },    { "moddefperturb",SENS_DEVDEFPERT, IF_SET|IF_REAL,	    "default perturbation (model)" },    /*{ "name",       SENS_NAME, IF_SET|IF_STRING,	    "name of model or element" }, */    { "param",      SENS_PARAM,IF_SET|IF_STRING, "name of parameter" },    { "tol",	    SENS_TOL, IF_SET|IF_REAL, "tolerance" },    { "perturb",    SENS_PERT, IF_SET|IF_REAL, "perturbation" }#endif};SPICEanalysis SENSinfo  = {    {         "SENS",        "Sensitivity analysis",        sizeof(SENSparms)/sizeof(IFparm),        SENSparms    },    sizeof(SENS_AN),    FREQUENCYDOMAIN,    1,    SENSsetParam,    SENSask,    NULL,    sens_sens};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -