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

📄 mesaacl.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
字号:
/**********Copyright 1993: T. Ytterdal, K. Lee, M. Shur and T. A. Fjeldly. All rights reserved.Author: Trond Ytterdal**********/#include "ngspice.h"#include "cktdefs.h"#include "mesadefs.h"#include "sperror.h"#include "suffix.h"intMESAacLoad(GENmodel *inModel, CKTcircuit *ckt){    MESAmodel *model = (MESAmodel*)inModel;    MESAinstance *here;    double gm;    double gds;    double ggspp;    double ggdpp;    double ggs;    double xgs;    double ggd;    double xgd;    double f;    double lambda;    double vds;    double delidgch;    double delidvds;    double m;    for( ; model != NULL; model = model->MESAnextModel ) {        for( here = model->MESAinstances; here != NULL;              here = here->MESAnextInstance) {            if (here->MESAowner != ARCHme) continue;            f      = ckt->CKTomega/2/M_PI;            if(here->MESAdelf == 0)              lambda = here->MESAtLambda;            else              lambda = here->MESAtLambda+0.5*(here->MESAtLambdahf-here->MESAtLambda)*                       (1+tanh((f-here->MESAfl)/here->MESAdelf));            vds= *(ckt->CKTstate0 + here->MESAvgs) -                 *(ckt->CKTstate0 + here->MESAvgd);            delidgch = here->MESAdelidgch0*(1+lambda*vds);            delidvds = here->MESAdelidvds0*(1+2*lambda*vds) -                       here->MESAdelidvds1;            gm       = (delidgch*here->MESAgm0+here->MESAgm1)*here->MESAgm2;            gds      = delidvds+here->MESAgds0;            ggspp=*(ckt->CKTstate0 + here->MESAggspp);            ggdpp=*(ckt->CKTstate0 + here->MESAggdpp);            ggs= *(ckt->CKTstate0 + here->MESAggs) ;            xgs= *(ckt->CKTstate0 + here->MESAqgs) * ckt->CKTomega ;            ggd= *(ckt->CKTstate0 + here->MESAggd) ;            xgd= *(ckt->CKTstate0 + here->MESAqgd) * ckt->CKTomega ;                        m = here->MESAm;            *(here->MESAdrainDrainPtr)                 += m * (here->MESAdrainConduct);            *(here->MESAsourceSourcePtr)               += m * (here->MESAsourceConduct);            *(here->MESAgateGatePtr)                   += m * (here->MESAgateConduct);            *(here->MESAsourcePrmPrmSourcePrmPrmPtr)   += m * (here->MESAtGi+ggspp);            *(here->MESAdrainPrmPrmDrainPrmPrmPtr)     += m * (here->MESAtGf+ggdpp);            *(here->MESAdrainDrainPrimePtr)            -= m * (here->MESAdrainConduct);            *(here->MESAdrainPrimeDrainPtr)            -= m * (here->MESAdrainConduct);            *(here->MESAsourceSourcePrimePtr)          -= m * (here->MESAsourceConduct);            *(here->MESAsourcePrimeSourcePtr)          -= m * (here->MESAsourceConduct);            *(here->MESAgateGatePrimePtr)              -= m * (here->MESAgateConduct);            *(here->MESAgatePrimeGatePtr)              -= m * (here->MESAgateConduct);            *(here->MESAgatePrimeDrainPrimePtr)        += m * (-ggd);            *(here->MESAgatePrimeSourcePrimePtr)       += m * (-ggs);            *(here->MESAdrainPrimeGatePrimePtr)        += m * (gm-ggd);            *(here->MESAdrainPrimeSourcePrimePtr)      += m * (-gds-gm);            *(here->MESAsourcePrimeGatePrimePtr)       += m * (-ggs-gm);            *(here->MESAsourcePrimeDrainPrimePtr)      += m * (-gds);            *(here->MESAgatePrimeGatePrimePtr)         += m * (ggd+ggs+here->MESAgateConduct+ggspp+ggdpp);            *(here->MESAdrainPrimeDrainPrimePtr)       += m * (gds+ggd+here->MESAdrainConduct+here->MESAtGf);            *(here->MESAsourcePrimeSourcePrimePtr)     += m * (gds+gm+ggs+here->MESAsourceConduct+here->MESAtGi);            *(here->MESAsourcePrimeSourcePrmPrmPtr)    -= m * (here->MESAtGi);            *(here->MESAsourcePrmPrmSourcePrimePtr)    -= m * (here->MESAtGi);            *(here->MESAgatePrimeSourcePrmPrmPtr)      -= m * (ggspp);            *(here->MESAsourcePrmPrmGatePrimePtr)      -= m * (ggspp);            *(here->MESAdrainPrimeDrainPrmPrmPtr)      -= m * (here->MESAtGf);            *(here->MESAdrainPrmPrmDrainPrimePtr)      -= m * (here->MESAtGf);            *(here->MESAgatePrimeDrainPrmPrmPtr)       -= m * (ggdpp);            *(here->MESAdrainPrmPrmGatePrimePtr)       -= m * (ggdpp);            *(here->MESAsourcePrmPrmSourcePrmPrmPtr+1) += m * (xgs);            *(here->MESAdrainPrmPrmDrainPrmPrmPtr+1)   += m * (xgd);            *(here->MESAgatePrimeGatePrimePtr+1)       += m * (xgd+xgs);            *(here->MESAgatePrimeDrainPrmPrmPtr+1)     -= m * (xgd);            *(here->MESAdrainPrmPrmGatePrimePtr+1)     -= m * (xgd);            *(here->MESAgatePrimeSourcePrmPrmPtr+1)    -= m * (xgs);            *(here->MESAsourcePrmPrmGatePrimePtr+1)    -= m * (xgs);        }    }    return(OK);}

⌨️ 快捷键说明

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