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

📄 soi3ask.c

📁 ngspice又一个电子CAD仿真软件代码.功能更全
💻 C
📖 第 1 页 / 共 2 页
字号:
        case SOI3_CGBGF:            value->rValue = *(ckt->CKTstate0 + here->SOI3cgbgf);	    value->rValue *= here->SOI3m;            return (OK);        case SOI3_CGBD:            value->rValue = *(ckt->CKTstate0 + here->SOI3cgbd);	    value->rValue *= here->SOI3m;            return (OK);        case SOI3_CGBS:            value->rValue = *(ckt->CKTstate0 + here->SOI3cgbs);	    value->rValue *= here->SOI3m;            return (OK);        case SOI3_CGBDELTAT:            value->rValue = *(ckt->CKTstate0 + here->SOI3cgbdeltaT);	    value->rValue *= here->SOI3m;            return (OK);        case SOI3_CGBGB:            value->rValue = *(ckt->CKTstate0 + here->SOI3cgbgb);	    value->rValue *= here->SOI3m;            return (OK);        case SOI3_QBD:            value->rValue = *(ckt->CKTstate0 + here->SOI3qbd);	    value->rValue *= here->SOI3m;            return(OK);        case SOI3_IQBD:            value->rValue = *(ckt->CKTstate0 + here->SOI3iqbd);	    value->rValue *= here->SOI3m;            return(OK);        case SOI3_QBS:            value->rValue = *(ckt->CKTstate0 + here->SOI3qbs);	    value->rValue *= here->SOI3m;            return(OK);        case SOI3_IQBS:            value->rValue = *(ckt->CKTstate0 + here->SOI3iqbs);	    value->rValue *= here->SOI3m;            return(OK);/* extra stuff for newer model - msll Jan96 */        case SOI3_VFBB:            value->rValue = here->SOI3tVfbB;            return(OK);        case SOI3_RT1:            value->rValue = here->SOI3rt1;	    value->rValue /= here->SOI3m;            return(OK);        case SOI3_CT1:            value->rValue = here->SOI3ct1;	    value->rValue *= here->SOI3m;            return(OK);        case SOI3_RT2:            value->rValue = here->SOI3rt2;	    value->rValue /= here->SOI3m;            return(OK);        case SOI3_CT2:            value->rValue = here->SOI3ct2;	    value->rValue *= here->SOI3m;            return(OK);        case SOI3_RT3:            value->rValue = here->SOI3rt3;	    value->rValue /= here->SOI3m;            return(OK);        case SOI3_CT3:            value->rValue = here->SOI3ct3;	    value->rValue *= here->SOI3m;            return(OK);        case SOI3_RT4:            value->rValue = here->SOI3rt4;	    value->rValue /= here->SOI3m;            return(OK);        case SOI3_CT4:            value->rValue = here->SOI3ct4;	    value->rValue *= here->SOI3m;            return(OK);/*        case SOI3_L_SENS_DC:            if(ckt->CKTsenInfo && here->SOI3sens_l){               value->rValue = *(ckt->CKTsenInfo->SEN_Sap[select->iValue + 1]+                       here->SOI3senParmNo);            }            return(OK);        case SOI3_L_SENS_REAL:            if(ckt->CKTsenInfo && here->SOI3sens_l){               value->rValue = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+                       here->SOI3senParmNo);            }            return(OK);        case SOI3_L_SENS_IMAG:            if(ckt->CKTsenInfo && here->SOI3sens_l){               value->rValue = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+                       here->SOI3senParmNo);            }            return(OK);        case SOI3_L_SENS_MAG:            if(ckt->CKTsenInfo && here->SOI3sens_l){                vr = *(ckt->CKTrhsOld + select->iValue + 1);                vi = *(ckt->CKTirhsOld + select->iValue + 1);                vm = sqrt(vr*vr + vi*vi);                if(vm == 0){                    value->rValue = 0;                    return(OK);                }                sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+                        here->SOI3senParmNo);                si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+                        here->SOI3senParmNo);                value->rValue = (vr * sr + vi * si)/vm;            }            return(OK);        case SOI3_L_SENS_PH:            if(ckt->CKTsenInfo && here->SOI3sens_l){                vr = *(ckt->CKTrhsOld + select->iValue + 1);                vi = *(ckt->CKTirhsOld + select->iValue + 1);                vm = vr*vr + vi*vi;                if(vm == 0){                    value->rValue = 0;                    return(OK);                }                sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+                        here->SOI3senParmNo);                si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+                        here->SOI3senParmNo);                value->rValue =  (vr * si - vi * sr)/vm;            }            return(OK);        case SOI3_L_SENS_CPLX:            if(ckt->CKTsenInfo && here->SOI3sens_l){                value->cValue.real=                        *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+                        here->SOI3senParmNo);                value->cValue.imag=                        *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+                        here->SOI3senParmNo);            }            return(OK);        case SOI3_W_SENS_DC:            if(ckt->CKTsenInfo && here->SOI3sens_w){                value->rValue = *(ckt->CKTsenInfo->SEN_Sap[select->iValue + 1]+                        here->SOI3senParmNo + here->SOI3sens_l);            }            return(OK);        case SOI3_W_SENS_REAL:            if(ckt->CKTsenInfo && here->SOI3sens_w){                value->rValue = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+                        here->SOI3senParmNo + here->SOI3sens_l);            }             return(OK);        case SOI3_W_SENS_IMAG:            if(ckt->CKTsenInfo && here->SOI3sens_w){                value->rValue = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+                        here->SOI3senParmNo + here->SOI3sens_l);            }            return(OK);        case SOI3_W_SENS_MAG:            if(ckt->CKTsenInfo && here->SOI3sens_w){                vr = *(ckt->CKTrhsOld + select->iValue + 1);                vi = *(ckt->CKTirhsOld + select->iValue + 1);                vm = sqrt(vr*vr + vi*vi);                if(vm == 0){                    value->rValue = 0;                    return(OK);                }                sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+                        here->SOI3senParmNo + here->SOI3sens_l);                si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+                        here->SOI3senParmNo + here->SOI3sens_l);                value->rValue = (vr * sr + vi * si)/vm;            }            return(OK);        case SOI3_W_SENS_PH:            if(ckt->CKTsenInfo && here->SOI3sens_w){                vr = *(ckt->CKTrhsOld + select->iValue + 1);                vi = *(ckt->CKTirhsOld + select->iValue + 1);                vm = vr*vr + vi*vi;                if(vm == 0){                    value->rValue = 0;                    return(OK);                }                sr = *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+                        here->SOI3senParmNo + here->SOI3sens_l);                si = *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+                        here->SOI3senParmNo + here->SOI3sens_l);                value->rValue =  (vr * si - vi * sr)/vm;            }                    return(OK);        case SOI3_W_SENS_CPLX:            if(ckt->CKTsenInfo && here->SOI3sens_w){                value->cValue.real=                        *(ckt->CKTsenInfo->SEN_RHS[select->iValue + 1]+                        here->SOI3senParmNo + here->SOI3sens_l);                value->cValue.imag=                        *(ckt->CKTsenInfo->SEN_iRHS[select->iValue + 1]+                        here->SOI3senParmNo + here->SOI3sens_l);            }            return(OK);                           *//*        case SOI3_IS :            if (ckt->CKTcurrentAnalysis & DOING_AC) {                errMsg = MALLOC(strlen(msg)+1);                errRtn = "SOI3ask.c";                strcpy(errMsg,msg);                return(E_ASKCURRENT);            } else {                value->rValue = -here->SOI3id;                value->rValue -= here->SOI3ibd + here->SOI3ibs -                        *(ckt->CKTstate0 + here->SOI3iqgfb);                if ((ckt->CKTcurrentAnalysis & DOING_TRAN) &&                        !(ckt->CKTmode & MODETRANOP)) {                    value->rValue -= *(ckt->CKTstate0 + here->SOI3iqgfb) +                            *(ckt->CKTstate0 + here->SOI3iqgfd) +                            *(ckt->CKTstate0 + here->SOI3iqgfs);                }            }            return(OK);        case SOI3_IB :            if (ckt->CKTcurrentAnalysis & DOING_AC) {                errMsg = MALLOC(strlen(msg)+1);                errRtn = "SOI3ask.c";                strcpy(errMsg,msg);                return(E_ASKCURRENT);            } else {                value->rValue = here->SOI3ibd + here->SOI3ibs -                        *(ckt->CKTstate0 + here->SOI3iqgfb);            }            return(OK);        case SOI3_IGF :            if (ckt->CKTcurrentAnalysis & DOING_AC) {                errMsg = MALLOC(strlen(msg)+1);                errRtn = "SOI3ask.c";                strcpy(errMsg,msg);                return(E_ASKCURRENT);            } else if (ckt->CKTcurrentAnalysis & (DOING_DCOP | DOING_TRCV)) {                value->rValue = 0;            } else if ((ckt->CKTcurrentAnalysis & DOING_TRAN) &&                    (ckt->CKTmode & MODETRANOP)) {                value->rValue = 0;            } else {                value->rValue =   *(ckt->CKTstate0 + here->SOI3iqgfb) +                        *(ckt->CKTstate0 + here->SOI3iqgfd) + *(ckt->CKTstate0 +                        here->SOI3iqgfs);            }            return(OK);        case SOI3_IGB :            if (ckt->CKTcurrentAnalysis & DOING_AC) {                errMsg = MALLOC(strlen(msg)+1);                errRtn = "SOI3ask.c";                strcpy(errMsg,msg);                return(E_ASKCURRENT);            } else if (ckt->CKTcurrentAnalysis & (DOING_DCOP | DOING_TRCV)) {                value->rValue = 0;            } else if ((ckt->CKTcurrentAnalysis & DOING_TRAN) &&                    (ckt->CKTmode & MODETRANOP)) {                value->rValue = 0;            } else {                value->rValue =  *(ckt->CKTstate0 + here->SOI3iqgfb) +                        *(ckt->CKTstate0 + here->SOI3iqgfd) + *(ckt->CKTstate0 +                        here->SOI3iqgfs);            }            return(OK);        case SOI3_POWER :            if (ckt->CKTcurrentAnalysis & DOING_AC) {                errMsg = MALLOC(strlen(msg)+1);                errRtn = "SOI3ask.c";                strcpy(errMsg,msg);                return(E_ASKPOWER);            } else {                double temp;                value->rValue = here->SOI3id *                        *(ckt->CKTrhsOld + here->SOI3dNode);                value->rValue += ((here->SOI3ibd + here->SOI3ibs) -                        *(ckt->CKTstate0 + here->SOI3iqgfb)) *                        *(ckt->CKTrhsOld + here->SOI3bNode);                if ((ckt->CKTcurrentAnalysis & DOING_TRAN) &&                        !(ckt->CKTmode & MODETRANOP)) {                    value->rValue += (*(ckt->CKTstate0 + here->SOI3iqgfb) +                            *(ckt->CKTstate0 + here->SOI3iqgfd) +                            *(ckt->CKTstate0 + here->SOI3iqgfs)) *                            *(ckt->CKTrhsOld + here->SOI3gfNode);                }                temp = -here->SOI3id;                temp -= here->SOI3ibd + here->SOI3ibs ;                if ((ckt->CKTcurrentAnalysis & DOING_TRAN) &&                        !(ckt->CKTmode & MODETRANOP)) {                    temp -= *(ckt->CKTstate0 + here->SOI3iqgfb) +                            *(ckt->CKTstate0 + here->SOI3iqgfd) +                            *(ckt->CKTstate0 + here->SOI3iqgfs);                }                value->rValue += temp * *(ckt->CKTrhsOld + here->SOI3sNode);            }            return(OK);*/        default:            return(E_BADPARM);    }    /* NOTREACHED */}

⌨️ 快捷键说明

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