jfetask.c

来自「spice中支持多层次元件模型仿真的可单独运行的插件源码」· C语言 代码 · 共 134 行

C
134
字号
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1987 Mathew Lew and Thomas L. Quarles**********//* */#include "spice.h"#include <stdio.h>#include "const.h"#include "ifsim.h"#include "cktdefs.h"#include "devdefs.h"#include "jfetdefs.h"#include "sperror.h"#include "util.h"#include "suffix.h"/*ARGSUSED*/intJFETask(ckt,inst,which,value,select)    CKTcircuit *ckt;    GENinstance *inst;    int which;    IFvalue *value;    IFvalue *select;{    JFETinstance *here = (JFETinstance*)inst;    static char *msg = "Current and power not available for ac analysis";    switch(which) {        case JFET_TEMP:            value->rValue = here->JFETtemp-CONSTCtoK;            return(OK);        case JFET_AREA:            value->rValue = here->JFETarea;            return(OK);        case JFET_IC_VDS:            value->rValue = here->JFETicVDS;            return(OK);        case JFET_IC_VGS:            value->rValue = here->JFETicVGS;            return(OK);        case JFET_OFF:            value->iValue = here->JFEToff;            return(OK);        case JFET_DRAINNODE:            value->iValue = here->JFETdrainNode;            return(OK);        case JFET_GATENODE:            value->iValue = here->JFETgateNode;            return(OK);        case JFET_SOURCENODE:            value->iValue = here->JFETsourceNode;            return(OK);        case JFET_DRAINPRIMENODE:            value->iValue = here->JFETdrainPrimeNode;            return(OK);        case JFET_SOURCEPRIMENODE:            value->iValue = here->JFETsourcePrimeNode;            return(OK);        case JFET_VGS:            value->rValue = *(ckt->CKTstate0 + here->JFETvgs);            return(OK);        case JFET_VGD:            value->rValue = *(ckt->CKTstate0 + here->JFETvgd);            return(OK);        case JFET_CG:            value->rValue = *(ckt->CKTstate0 + here->JFETcg);            return(OK);        case JFET_CD:            value->rValue = *(ckt->CKTstate0 + here->JFETcd);            return(OK);        case JFET_CGD:            value->rValue = *(ckt->CKTstate0 + here->JFETcgd);            return(OK);        case JFET_GM:            value->rValue = *(ckt->CKTstate0 + here->JFETgm);            return(OK);        case JFET_GDS:            value->rValue = *(ckt->CKTstate0 + here->JFETgds);            return(OK);        case JFET_GGS:            value->rValue = *(ckt->CKTstate0 + here->JFETggs);            return(OK);        case JFET_GGD:            value->rValue = *(ckt->CKTstate0 + here->JFETggd);            return(OK);        case JFET_QGS:            value->rValue = *(ckt->CKTstate0 + here->JFETqgs);            return(OK);        case JFET_CQGS:            value->rValue = *(ckt->CKTstate0 + here->JFETcqgs);            return(OK);        case JFET_QGD:            value->rValue = *(ckt->CKTstate0 + here->JFETqgd);            return(OK);        case JFET_CQGD:            value->rValue = *(ckt->CKTstate0 + here->JFETcqgd);            return(OK);        case JFET_CS :            if (ckt->CKTcurrentAnalysis & DOING_AC) {                errMsg = MALLOC(strlen(msg)+1);                errRtn = "JFETask";                strcpy(errMsg,msg);                return(E_ASKCURRENT);            } else {                value->rValue = -*(ckt->CKTstate0 + here->JFETcd);                value->rValue -= *(ckt->CKTstate0 + here->JFETcg);            }            return(OK);        case JFET_POWER :            if (ckt->CKTcurrentAnalysis & DOING_AC) {                errMsg = MALLOC(strlen(msg)+1);                errRtn = "JFETask";                strcpy(errMsg,msg);                return(E_ASKPOWER);            } else {                value->rValue = *(ckt->CKTstate0 + here->JFETcd) *                        *(ckt->CKTrhsOld + here->JFETdrainNode);                value->rValue += *(ckt->CKTstate0 + here->JFETcg) *                         *(ckt->CKTrhsOld + here->JFETgateNode);                value->rValue -= (*(ckt->CKTstate0 + here->JFETcd) +                        *(ckt->CKTstate0 + here->JFETcg)) *                *(ckt->CKTrhsOld + here->JFETsourceNode);            }            return(OK);        default:            return(E_BADPARM);    }    /* NOTREACHED */}

⌨️ 快捷键说明

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