📄 mos1dist.c
字号:
/* capgs over */ /* loading capgd term */ temp = -ckt->CKTomega * D1iF12(here->capgd2, r1h1x - r1h1z, i1h1x - i1h1z, r1hm2x - r1hm2z, i1hm2x - i1hm2z); itemp = ckt->CKTomega * D1nF12(here->capgd2, r1h1x - r1h1z, i1h1x - i1h1z, r1hm2x - r1hm2z, i1hm2x - i1hm2z); *(ckt->CKTrhs + (here->MOS1gNode)) -= temp; *(ckt->CKTirhs + (here->MOS1gNode)) -= itemp; *(ckt->CKTrhs + (here->MOS1dNodePrime)) += temp; *(ckt->CKTirhs + (here->MOS1dNodePrime)) += itemp; /* capgd over */ /* loading capgb term */ temp = -ckt->CKTomega * D1iF12(here->capgb2, r1h1x - r1h1y, i1h1x - i1h1y, r1hm2x - r1hm2y, i1hm2x - i1hm2y); itemp = ckt->CKTomega * D1nF12(here->capgb2, r1h1x - r1h1y, i1h1x - i1h1y, r1hm2x - r1hm2y, i1hm2x - i1hm2y); *(ckt->CKTrhs + (here->MOS1gNode)) -= temp; *(ckt->CKTirhs + (here->MOS1gNode)) -= itemp; *(ckt->CKTrhs + (here->MOS1bNode)) += temp; *(ckt->CKTirhs + (here->MOS1bNode)) += itemp; /* capgb over */ /* loading capbs term */ temp = -ckt->CKTomega * D1iF12(here->capbs2, r1h1y, i1h1y, r1hm2y, i1hm2y); itemp = ckt->CKTomega * D1nF12(here->capbs2, r1h1y, i1h1y, r1hm2y, i1hm2y); *(ckt->CKTrhs + (here->MOS1bNode)) -= temp; *(ckt->CKTirhs + (here->MOS1bNode)) -= itemp; *(ckt->CKTrhs + (here->MOS1sNodePrime)) += temp; *(ckt->CKTirhs + (here->MOS1sNodePrime)) += itemp; /* capbs over */ /* loading capbd term */ temp = -ckt->CKTomega * D1iF12(here->capbd2, r1h1y - r1h1z, i1h1y - i1h1z, r1hm2y - r1hm2z, i1hm2y - i1hm2z); itemp = ckt->CKTomega * D1nF12(here->capbd2, r1h1y - r1h1z, i1h1y - i1h1z, r1hm2y - r1hm2z, i1hm2y - i1hm2z); *(ckt->CKTrhs + (here->MOS1bNode)) -= temp; *(ckt->CKTirhs + (here->MOS1bNode)) -= itemp; *(ckt->CKTrhs + (here->MOS1dNodePrime)) += temp; *(ckt->CKTirhs + (here->MOS1dNodePrime)) += itemp; /* capbd over */ /* all done */ break; case D_2F1MF2: /* x = vgs, y = vbs z = vds */ /* getting first order (linear) Volterra kernel */ r1h1x = *(job->r1H1ptr + (here->MOS1gNode)) - *(job->r1H1ptr + (here->MOS1sNodePrime)); i1h1x = *(job->i1H1ptr + (here->MOS1gNode)) - *(job->i1H1ptr + (here->MOS1sNodePrime)); r1h1y = *(job->r1H1ptr + (here->MOS1bNode)) - *(job->r1H1ptr + (here->MOS1sNodePrime)); i1h1y = *(job->i1H1ptr + (here->MOS1bNode)) - *(job->i1H1ptr + (here->MOS1sNodePrime)); r1h1z = *(job->r1H1ptr + (here->MOS1dNodePrime)) - *(job->r1H1ptr + (here->MOS1sNodePrime)); i1h1z = *(job->i1H1ptr + (here->MOS1dNodePrime)) - *(job->i1H1ptr + (here->MOS1sNodePrime)); r1hm2x = *(job->r1H2ptr + (here->MOS1gNode)) - *(job->r1H2ptr + (here->MOS1sNodePrime)); i1hm2x = -(*(job->i1H2ptr + (here->MOS1gNode)) - *(job->i1H2ptr + (here->MOS1sNodePrime))); r1hm2y = *(job->r1H2ptr + (here->MOS1bNode)) - *(job->r1H2ptr + (here->MOS1sNodePrime)); i1hm2y = -(*(job->i1H2ptr + (here->MOS1bNode)) - *(job->i1H2ptr + (here->MOS1sNodePrime))); r1hm2z = *(job->r1H2ptr + (here->MOS1dNodePrime)) - *(job->r1H2ptr + (here->MOS1sNodePrime)); i1hm2z = -(*(job->i1H2ptr + (here->MOS1dNodePrime)) - *(job->i1H2ptr + (here->MOS1sNodePrime))); r2h11x = *(job->r1H1ptr + (here->MOS1gNode)) - *(job->r1H1ptr + (here->MOS1sNodePrime)); i2h11x = *(job->i1H1ptr + (here->MOS1gNode)) - *(job->i1H1ptr + (here->MOS1sNodePrime)); r2h11y = *(job->r1H1ptr + (here->MOS1bNode)) - *(job->r1H1ptr + (here->MOS1sNodePrime)); i2h11y = *(job->i1H1ptr + (here->MOS1bNode)) - *(job->i1H1ptr + (here->MOS1sNodePrime)); r2h11z = *(job->r1H1ptr + (here->MOS1dNodePrime)) - *(job->r1H1ptr + (here->MOS1sNodePrime)); i2h11z = *(job->i1H1ptr + (here->MOS1dNodePrime)) - *(job->i1H1ptr + (here->MOS1sNodePrime)); r2h1m2x = *(job->r2H1m2ptr + (here->MOS1gNode)) - *(job->r2H1m2ptr + (here->MOS1sNodePrime)); i2h1m2x = *(job->i2H1m2ptr + (here->MOS1gNode)) - *(job->i2H1m2ptr + (here->MOS1sNodePrime)); r2h1m2y = *(job->r2H1m2ptr + (here->MOS1bNode)) - *(job->r2H1m2ptr + (here->MOS1sNodePrime)); i2h1m2y = *(job->i2H1m2ptr + (here->MOS1bNode)) - *(job->i2H1m2ptr + (here->MOS1sNodePrime));r2h1m2z = *(job->r2H1m2ptr + (here->MOS1dNodePrime)) - *(job->r2H1m2ptr + (here->MOS1sNodePrime));i2h1m2z = *(job->i2H1m2ptr + (here->MOS1dNodePrime)) - *(job->i2H1m2ptr + (here->MOS1sNodePrime)); /* loading starts here */ /* loading cdrain term */pass.cxx = here->cdr_x2;pass.cyy = here->cdr_y2;pass.czz = here->cdr_z2;pass.cxy = here->cdr_xy;pass.cyz = here->cdr_yz;pass.cxz = here->cdr_xz;pass.cxxx = here->cdr_x3;pass.cyyy = here->cdr_y3;pass.czzz = here->cdr_z3;pass.cxxy = here->cdr_x2y;pass.cxxz = here->cdr_x2z;pass.cxyy = here->cdr_xy2;pass.cyyz = here->cdr_y2z;pass.cxzz = here->cdr_xz2;pass.cyzz = here->cdr_yz2;pass.cxyz = here->cdr_xyz;pass.r1h1x = r1h1x;pass.i1h1x = i1h1x;pass.r1h1y = r1h1y;pass.i1h1y = i1h1y;pass.r1h1z = r1h1z;pass.i1h1z = i1h1z;pass.r1h2x = r1hm2x;pass.i1h2x = i1hm2x;pass.r1h2y = r1hm2y;pass.i1h2y = i1hm2y;pass.r1h2z = r1hm2z;pass.i1h2z = i1hm2z;pass.r2h11x = r2h11x;pass.i2h11x = i2h11x;pass.r2h11y = r2h11y;pass.i2h11y = i2h11y;pass.r2h11z = r2h11z;pass.i2h11z = i2h11z;pass.h2f1f2x = r2h1m2x;pass.ih2f1f2x = i2h1m2x;pass.h2f1f2y = r2h1m2y;pass.ih2f1f2y = i2h1m2y;pass.h2f1f2z = r2h1m2z;pass.ih2f1f2z = i2h1m2z; temp = DFn2F12(&pass); itemp = DFi2F12(&pass); *(ckt->CKTrhs + (here->MOS1dNodePrime)) -= temp; *(ckt->CKTirhs + (here->MOS1dNodePrime)) -= itemp; *(ckt->CKTrhs + (here->MOS1sNodePrime)) += temp; *(ckt->CKTirhs + (here->MOS1sNodePrime)) += itemp; /* cdrain term over */ /* loading gbs term */ temp = D1n2F12(here->gbs2, here->gbs3, r1h1y, i1h1y, r1hm2y, i1hm2y, r2h11y, i2h11y, r2h1m2y, i2h1m2y); itemp = D1i2F12(here->gbs2, here->gbs3, r1h1y, i1h1y, r1hm2y, i1hm2y, r2h11y, i2h11y, r2h1m2y, i2h1m2y); *(ckt->CKTrhs + (here->MOS1bNode)) -= temp; *(ckt->CKTirhs + (here->MOS1bNode)) -= itemp; *(ckt->CKTrhs + (here->MOS1sNodePrime)) += temp; *(ckt->CKTirhs + (here->MOS1sNodePrime)) += itemp; /* gbs over */ /* loading gbd term */ temp = D1n2F12(here->gbd2, here->gbd3, r1h1y - r1h1z, i1h1y - i1h1z, r1hm2y - r1hm2z, i1hm2y - i1hm2z, r2h11y - r2h11z, i2h11y - i2h11z, r2h1m2y - r2h1m2z, i2h1m2y - i2h1m2z); itemp = D1i2F12(here->gbd2, here->gbd3, r1h1y - r1h1z, i1h1y - i1h1z, r1hm2y - r1hm2z, i1hm2y - i1hm2z, r2h11y - r2h11z, i2h11y - i2h11z, r2h1m2y - r2h1m2z, i2h1m2y - i2h1m2z); *(ckt->CKTrhs + (here->MOS1bNode)) -= temp; *(ckt->CKTirhs + (here->MOS1bNode)) -= itemp; *(ckt->CKTrhs + (here->MOS1dNodePrime)) += temp; *(ckt->CKTirhs + (here->MOS1dNodePrime)) += itemp; /* gbd over */ /* loading capgs term */ temp = -ckt->CKTomega * D1i2F12(here->capgs2, here->capgs3, r1h1x, i1h1x, r1hm2x, i1hm2x, r2h11x, i2h11x, r2h1m2x, i2h1m2x); itemp = ckt->CKTomega * D1n2F12(here->capgs2, here->capgs3, r1h1x, i1h1x, r1hm2x, i1hm2x, r2h11x, i2h11x, r2h1m2x, i2h1m2x); *(ckt->CKTrhs + (here->MOS1gNode)) -= temp; *(ckt->CKTirhs + (here->MOS1gNode)) -= itemp; *(ckt->CKTrhs + (here->MOS1sNodePrime)) += temp; *(ckt->CKTirhs + (here->MOS1sNodePrime)) += itemp; /* capgs over */ /* loading capgd term */ temp = -ckt->CKTomega * D1i2F12(here->capgd2, here->capgd3, r1h1x - r1h1z, i1h1x - i1h1z, r1hm2x - r1hm2z, i1hm2x - i1hm2z, r2h11x - r2h11z, i2h11x - i2h11z, r2h1m2x - r2h1m2z, i2h1m2x - i2h1m2z); itemp = ckt->CKTomega * D1n2F12(here->capgd2, here->capgd3, r1h1x - r1h1z, i1h1x - i1h1z, r1hm2x - r1hm2z, i1hm2x - i1hm2z, r2h11x - r2h11z, i2h11x - i2h11z, r2h1m2x - r2h1m2z, i2h1m2x - i2h1m2z); *(ckt->CKTrhs + (here->MOS1gNode)) -= temp; *(ckt->CKTirhs + (here->MOS1gNode)) -= itemp; *(ckt->CKTrhs + (here->MOS1dNodePrime)) += temp; *(ckt->CKTirhs + (here->MOS1dNodePrime)) += itemp; /* capgd over */ /* loading capgb term */ temp = -ckt->CKTomega * D1i2F12(here->capgb2, here->capgb3, r1h1x - r1h1y, i1h1x - i1h1y, r1hm2x - r1hm2y, i1hm2x - i1hm2y, r2h11x - r2h11y, i2h11x - i2h11y, r2h1m2x - r2h1m2y, i2h1m2x - i2h1m2y); itemp = ckt->CKTomega * D1n2F12(here->capgb2, here->capgb3, r1h1x - r1h1y, i1h1x - i1h1y, r1hm2x - r1hm2y, i1hm2x - i1hm2y, r2h11x - r2h11y, i2h11x - i2h11y, r2h1m2x - r2h1m2y, i2h1m2x - i2h1m2y); *(ckt->CKTrhs + (here->MOS1gNode)) -= temp; *(ckt->CKTirhs + (here->MOS1gNode)) -= itemp; *(ckt->CKTrhs + (here->MOS1bNode)) += temp; *(ckt->CKTirhs + (here->MOS1bNode)) += itemp; /* capgb over */ /* loading capbs term */ temp = -ckt->CKTomega * D1i2F12(here->capbs2, here->capbs3, r1h1y, i1h1y, r1hm2y, i1hm2y, r2h11y, i2h11y, r2h1m2y, i2h1m2y); itemp = ckt->CKTomega * D1n2F12(here->capbs2, here->capbs3, r1h1y, i1h1y, r1hm2y, i1hm2y, r2h11y, i2h11y, r2h1m2y, i2h1m2y); *(ckt->CKTrhs + (here->MOS1bNode)) -= temp; *(ckt->CKTirhs + (here->MOS1bNode)) -= itemp; *(ckt->CKTrhs + (here->MOS1sNodePrime)) += temp; *(ckt->CKTirhs + (here->MOS1sNodePrime)) += itemp; /* capbs over */ /* loading capbd term */ temp = -ckt->CKTomega * D1i2F12(here->capbd2, here->capbd3, r1h1y - r1h1z, i1h1y - i1h1z, r1hm2y - r1hm2z, i1hm2y - i1hm2z, r2h11y - r2h11z, i2h11y - i2h11z, r2h1m2y - r2h1m2z, i2h1m2y - i2h1m2z); itemp = ckt->CKTomega * D1n2F12(here->capbd2, here->capbd3, r1h1y - r1h1z, i1h1y - i1h1z, r1hm2y - r1hm2z, i1hm2y - i1hm2z, r2h11y - r2h11z, i2h11y - i2h11z, r2h1m2y - r2h1m2z, i2h1m2y - i2h1m2z); *(ckt->CKTrhs + (here->MOS1bNode)) -= temp; *(ckt->CKTirhs + (here->MOS1bNode)) -= itemp; *(ckt->CKTrhs + (here->MOS1dNodePrime)) += temp; *(ckt->CKTirhs + (here->MOS1dNodePrime)) += itemp; /* capbd over */ /* all done */ break; default:; } }}return(OK);} else return(E_BADPARM);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -