📄 mesaask.c
字号:
/**********Copyright 1990 Regents of the University of California. All rights reserved.Author: 1987 Thomas L. Quarles**********//*Imported into MESA model: 2001 Paolo Nenzi */#include "ngspice.h"#include "cktdefs.h"#include "devdefs.h"#include "ifsim.h"#include "mesadefs.h"#include "sperror.h"#include "suffix.h"/* ARGSUSED */intMESAask(CKTcircuit *ckt, GENinstance *inst, int which, IFvalue *value, IFvalue *select){ MESAinstance *here = (MESAinstance*)inst; static char *msg = "Current and power not available in ac analysis"; switch(which) { case MESA_LENGTH: value->rValue = here->MESAlength; return (OK); case MESA_WIDTH: value->rValue = here->MESAwidth; value->rValue *= here->MESAm; return (OK); case MESA_M: value->rValue = here->MESAm; return (OK); case MESA_IC_VDS: value->rValue = here->MESAicVDS; return (OK); case MESA_IC_VGS: value->rValue = here->MESAicVGS; return (OK); case MESA_OFF: value->iValue = here->MESAoff; return (OK); case MESA_TD: value->rValue = here->MESAtd - CONSTCtoK; return (OK); case MESA_TS: value->rValue = here->MESAts - CONSTCtoK; return (OK); case MESA_DTEMP: value->rValue = here->MESAdtemp; return (OK); case MESA_DRAINNODE: value->iValue = here->MESAdrainNode; return (OK); case MESA_GATENODE: value->iValue = here->MESAgateNode; return (OK); case MESA_SOURCENODE: value->iValue = here->MESAsourceNode; return (OK); case MESA_DRAINPRIMENODE: value->iValue = here->MESAdrainPrimeNode; return (OK); case MESA_SOURCEPRIMENODE: value->iValue = here->MESAsourcePrimeNode; return (OK); case MESA_GATEPRIMENODE: value->iValue = here->MESAgatePrimeNode; return (OK); case MESA_VGS: value->rValue = *(ckt->CKTstate0 + here->MESAvgs); return (OK); case MESA_VGD: value->rValue = *(ckt->CKTstate0 + here->MESAvgd); return (OK); case MESA_CG: value->rValue = *(ckt->CKTstate0 + here->MESAcg); value->rValue *= here->MESAm; return (OK); case MESA_CD: value->rValue = *(ckt->CKTstate0 + here->MESAcd); value->rValue *= here->MESAm; return (OK); case MESA_CGD: value->rValue = *(ckt->CKTstate0 + here->MESAcgd); value->rValue *= here->MESAm; return (OK); case MESA_GM: value->rValue = *(ckt->CKTstate0 + here->MESAgm); value->rValue *= here->MESAm; return (OK); case MESA_GDS: value->rValue = *(ckt->CKTstate0 + here->MESAgds); value->rValue *= here->MESAm; return (OK); case MESA_GGS: value->rValue = *(ckt->CKTstate0 + here->MESAggs); value->rValue *= here->MESAm; return (OK); case MESA_GGD: value->rValue = *(ckt->CKTstate0 + here->MESAggd); value->rValue *= here->MESAm; return (OK); case MESA_QGS: value->rValue = *(ckt->CKTstate0 + here->MESAqgs); value->rValue *= here->MESAm; return (OK); case MESA_CQGS: value->rValue = *(ckt->CKTstate0 + here->MESAcqgs); value->rValue *= here->MESAm; return (OK); case MESA_QGD: value->rValue = *(ckt->CKTstate0 + here->MESAqgd); value->rValue *= here->MESAm; return (OK); case MESA_CQGD: value->rValue = *(ckt->CKTstate0 + here->MESAcqgd); value->rValue *= here->MESAm; return (OK); case MESA_CS : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "MESAask"; strcpy(errMsg,msg); return(E_ASKCURRENT); } else { value->rValue = -*(ckt->CKTstate0 + here->MESAcd); value->rValue -= *(ckt->CKTstate0 + here->MESAcg); value->rValue *= here->MESAm; } return(OK); case MESA_POWER : if (ckt->CKTcurrentAnalysis & DOING_AC) { errMsg = MALLOC(strlen(msg)+1); errRtn = "MESAask"; strcpy(errMsg,msg); return(E_ASKPOWER); } else { value->rValue = *(ckt->CKTstate0 + here->MESAcd) * *(ckt->CKTrhsOld + here->MESAdrainNode); value->rValue += *(ckt->CKTstate0 + here->MESAcg) * *(ckt->CKTrhsOld + here->MESAgateNode); value->rValue -= (*(ckt->CKTstate0+here->MESAcd) + *(ckt->CKTstate0 + here->MESAcg)) * *(ckt->CKTrhsOld + here->MESAsourceNode); value->rValue *= here->MESAm; } return(OK); default: return (E_BADPARM); } /* NOTREACHED */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -