📄 b1disto.c
字号:
here->qd_z2, here->qd_xy, here->qd_yz, here->qd_xz, here->qd_x3, here->qd_y3, here->qd_z3, here->qd_x2y, here->qd_x2z, here->qd_xy2, here->qd_y2z, here->qd_xz2, here->qd_yz2, here->qd_xyz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r2h11x, i2h11x, r2h11y, i2h11y, r2h11z, i2h11z); *(ckt->CKTrhs + here->B1dNodePrime) -= temp; *(ckt->CKTirhs + here->B1dNodePrime) -= itemp; *(ckt->CKTrhs + here->B1sNodePrime) += temp; *(ckt->CKTirhs + here->B1sNodePrime) += itemp; /* qd term over */ /* loading here->B1gbs term */ r1h1x = *(job->r1H1ptr + here->B1bNode) - *(job->r1H1ptr + here->B1sNodePrime); i1h1x = *(job->i1H1ptr + here->B1bNode) - *(job->i1H1ptr + here->B1sNodePrime); r2h11x = *(job->r2H11ptr + here->B1bNode) - *(job->r2H11ptr + here->B1sNodePrime); i2h11x = *(job->i2H11ptr + here->B1bNode) - *(job->i2H11ptr + here->B1sNodePrime); /* now r1h1x = vbs */ temp = D1n3F1(here->gbs2, here->gbs3, r1h1x, i1h1x, r2h11x, i2h11x); itemp = D1i3F1(here->gbs2, here->gbs3, r1h1x, i1h1x, r2h11x, i2h11x); *(ckt->CKTrhs + here->B1bNode) -= temp; *(ckt->CKTirhs + here->B1bNode) -= itemp; *(ckt->CKTrhs + here->B1sNodePrime) += temp; *(ckt->CKTirhs + here->B1sNodePrime) += itemp; /* here->B1gbs term over */ /* loading here->B1gbd term */ r1h1x = *(job->r1H1ptr + here->B1bNode) - *(job->r1H1ptr + here->B1dNodePrime); i1h1x = *(job->i1H1ptr + here->B1bNode) - *(job->i1H1ptr + here->B1dNodePrime); r2h11x = *(job->r2H11ptr + here->B1bNode) - *(job->r2H11ptr + here->B1dNodePrime); i2h11x = *(job->i2H11ptr + here->B1bNode) - *(job->i2H11ptr + here->B1dNodePrime); /* now r1h1x = vbd */ temp = D1n3F1(here->gbd2, here->gbd3, r1h1x, i1h1x, r2h11x, i2h11x); itemp = D1i3F1(here->gbd2, here->gbd3, r1h1x, i1h1x, r2h11x, i2h11x); *(ckt->CKTrhs + here->B1bNode) -= temp; *(ckt->CKTirhs + here->B1bNode) -= itemp; *(ckt->CKTrhs + here->B1dNodePrime) += temp; *(ckt->CKTirhs + here->B1dNodePrime) += itemp; /* here->B1gbd term over */ /* all done */ } break; case D_F1PF2: /* from now on, in the 3-var case, x=vgs,y=vbs,z=vds */ { /* draincurrent term */ r1h1x = *(job->r1H1ptr + here->B1gNode) - *(job->r1H1ptr + here->B1sNodePrime); i1h1x = *(job->i1H1ptr + here->B1gNode) - *(job->i1H1ptr + here->B1sNodePrime); r1h1y = *(job->r1H1ptr + here->B1bNode) - *(job->r1H1ptr + here->B1sNodePrime); i1h1y = *(job->i1H1ptr + here->B1bNode) - *(job->i1H1ptr + here->B1sNodePrime); r1h1z = *(job->r1H1ptr + here->B1dNodePrime) - *(job->r1H1ptr + here->B1sNodePrime); i1h1z = *(job->i1H1ptr + here->B1dNodePrime) - *(job->i1H1ptr + here->B1sNodePrime); r1h2x = *(job->r1H2ptr + here->B1gNode) - *(job->r1H2ptr + here->B1sNodePrime); i1h2x = (*(job->i1H2ptr + here->B1gNode) - *(job->i1H2ptr + here->B1sNodePrime)); r1h2y = *(job->r1H2ptr + here->B1bNode) - *(job->r1H2ptr + here->B1sNodePrime); i1h2y = (*(job->i1H2ptr + here->B1bNode) - *(job->i1H2ptr + here->B1sNodePrime)); r1h2z = *(job->r1H2ptr + here->B1dNodePrime) - *(job->r1H2ptr + here->B1sNodePrime); i1h2z = (*(job->i1H2ptr + here->B1dNodePrime) - *(job->i1H2ptr + here->B1sNodePrime)); /* draincurrent is a function of vgs,vbs,and vds; * have got their linear kernels; now to call * load functions */ temp = DFnF12(here->DrC_x2, here->DrC_y2, here->DrC_z2, here->DrC_xy, here->DrC_yz, here->DrC_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1h2x, i1h2x, r1h2y, i1h2y, r1h2z, i1h2z); itemp = DFiF12(here->DrC_x2, here->DrC_y2, here->DrC_z2, here->DrC_xy, here->DrC_yz, here->DrC_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1h2x, i1h2x, r1h2y, i1h2y, r1h2z, i1h2z); *(ckt->CKTrhs + here->B1dNodePrime) -= temp; *(ckt->CKTirhs + here->B1dNodePrime) -= itemp; *(ckt->CKTrhs + here->B1sNodePrime) += temp; *(ckt->CKTirhs + here->B1sNodePrime) += itemp; /* draincurrent term loading over */ /* loading qg term */ /* kernels for vgs,vbs and vds already set up */ temp = -ckt->CKTomega * DFiF12(here->qg_x2, here->qg_y2, here->qg_z2, here->qg_xy, here->qg_yz, here->qg_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1h2x, i1h2x, r1h2y, i1h2y, r1h2z, i1h2z); itemp = ckt->CKTomega * DFnF12(here->qg_x2, here->qg_y2, here->qg_z2, here->qg_xy, here->qg_yz, here->qg_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1h2x, i1h2x, r1h2y, i1h2y, r1h2z, i1h2z); *(ckt->CKTrhs + here->B1gNode) -= temp; *(ckt->CKTirhs + here->B1gNode) -= itemp; *(ckt->CKTrhs + here->B1sNodePrime) += temp; *(ckt->CKTirhs + here->B1sNodePrime) += itemp; /* qg term over */ /* loading qb term */ /* kernels for vgs,vbs and vds already set up */ temp = -ckt->CKTomega * DFiF12(here->qb_x2, here->qb_y2, /* XXX Bug fixed: fewer arguments passed than declared */ here->qb_z2, here->qb_xy, here->qb_yz, here->qb_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1h2x, i1h2x, r1h2y, i1h2y, r1h2z, i1h2z); itemp = ckt->CKTomega * DFnF12(here->qb_x2, here->qb_y2, here->qb_z2, here->qb_xy, here->qb_yz, here->qb_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1h2x, i1h2x, r1h2y, i1h2y, r1h2z, i1h2z); *(ckt->CKTrhs + here->B1bNode) -= temp; *(ckt->CKTirhs + here->B1bNode) -= itemp; *(ckt->CKTrhs + here->B1sNodePrime) += temp; *(ckt->CKTirhs + here->B1sNodePrime) += itemp; /* qb term over */ /* loading qd term */ /* kernels for vgs,vbs and vds already set up */ temp = -ckt->CKTomega * DFiF12(here->qd_x2, here->qd_y2, here->qd_z2, here->qd_xy, here->qd_yz, here->qd_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1h2x, i1h2x, r1h2y, i1h2y, r1h2z, i1h2z); itemp = ckt->CKTomega * DFnF12(here->qd_x2, here->qd_y2, here->qd_z2, here->qd_xy, here->qd_yz, here->qd_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1h2x, i1h2x, r1h2y, i1h2y, r1h2z, i1h2z); *(ckt->CKTrhs + here->B1dNodePrime) -= temp; *(ckt->CKTirhs + here->B1dNodePrime) -= itemp; *(ckt->CKTrhs + here->B1sNodePrime) += temp; *(ckt->CKTirhs + here->B1sNodePrime) += itemp; /* qd term over */ /* loading here->B1gbs term */ r1h1x = *(job->r1H1ptr + here->B1bNode) - *(job->r1H1ptr + here->B1sNodePrime); i1h1x = *(job->i1H1ptr + here->B1bNode) - *(job->i1H1ptr + here->B1sNodePrime); r1h2x = *(job->r1H2ptr + here->B1bNode) - *(job->r1H2ptr + here->B1sNodePrime); i1h2x = *(job->i1H2ptr + here->B1bNode) - *(job->i1H2ptr + here->B1sNodePrime); /* now r1h1x = vbs */ temp = D1nF12(here->gbs2, r1h1x, i1h1x, r1h2x, i1h2x); itemp = D1iF12(here->gbs2, r1h1x, i1h1x, r1h2x, i1h2x); *(ckt->CKTrhs + here->B1bNode) -= temp; *(ckt->CKTirhs + here->B1bNode) -= itemp; *(ckt->CKTrhs + here->B1sNodePrime) += temp; *(ckt->CKTirhs + here->B1sNodePrime) += itemp; /* here->B1gbs term over */ /* loading here->B1gbd term */ r1h1x = *(job->r1H1ptr + here->B1bNode) - *(job->r1H1ptr + here->B1dNodePrime); i1h1x = *(job->i1H1ptr + here->B1bNode) - *(job->i1H1ptr + here->B1dNodePrime); r1h2x = *(job->r1H2ptr + here->B1bNode) - *(job->r1H2ptr + here->B1dNodePrime); i1h2x = *(job->i1H2ptr + here->B1bNode) - *(job->i1H2ptr + here->B1dNodePrime); /* now r1h1x = vbd */ temp = D1nF12(here->gbd2, r1h1x, i1h1x, r1h2x, i1h2x); itemp = D1iF12(here->gbd2, r1h1x, i1h1x, r1h2x, i1h2x); *(ckt->CKTrhs + here->B1gNode) -= temp; *(ckt->CKTirhs + here->B1gNode) -= itemp; *(ckt->CKTrhs + here->B1dNodePrime) += temp; *(ckt->CKTirhs + here->B1dNodePrime) += itemp; /* here->B1gbd term over */ /* all done */ } break; case D_F1MF2: /* from now on, in the 3-var case, x=vgs,y=vbs,z=vds */ { /* draincurrent term */ r1h1x = *(job->r1H1ptr + here->B1gNode) - *(job->r1H1ptr + here->B1sNodePrime); i1h1x = *(job->i1H1ptr + here->B1gNode) - *(job->i1H1ptr + here->B1sNodePrime); r1h1y = *(job->r1H1ptr + here->B1bNode) - *(job->r1H1ptr + here->B1sNodePrime); i1h1y = *(job->i1H1ptr + here->B1bNode) - *(job->i1H1ptr + here->B1sNodePrime); r1h1z = *(job->r1H1ptr + here->B1dNodePrime) - *(job->r1H1ptr + here->B1sNodePrime); i1h1z = *(job->i1H1ptr + here->B1dNodePrime) - *(job->i1H1ptr + here->B1sNodePrime); r1hm2x = *(job->r1H2ptr + here->B1gNode) - *(job->r1H2ptr + here->B1sNodePrime); i1hm2x = -(*(job->i1H2ptr + here->B1gNode) - *(job->i1H2ptr + here->B1sNodePrime)); r1hm2y = *(job->r1H2ptr + here->B1bNode) - *(job->r1H2ptr + here->B1sNodePrime); i1hm2y = -(*(job->i1H2ptr + here->B1bNode) - *(job->i1H2ptr + here->B1sNodePrime)); r1hm2z = *(job->r1H2ptr + here->B1dNodePrime) - *(job->r1H2ptr + here->B1sNodePrime); i1hm2z = -(*(job->i1H2ptr + here->B1dNodePrime) - *(job->i1H2ptr + here->B1sNodePrime)); /* draincurrent is a function of vgs,vbs,and vds; * have got their linear kernels; now to call * load functions */ temp = DFnF12(here->DrC_x2, here->DrC_y2, here->DrC_z2, here->DrC_xy, here->DrC_yz, here->DrC_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1hm2x, i1hm2x, r1hm2y, i1hm2y, r1hm2z, i1hm2z); itemp = DFiF12(here->DrC_x2, here->DrC_y2, here->DrC_z2, here->DrC_xy, here->DrC_yz, here->DrC_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1hm2x, i1hm2x, r1hm2y, i1hm2y, r1hm2z, i1hm2z); *(ckt->CKTrhs + here->B1dNodePrime) -= temp; *(ckt->CKTirhs + here->B1dNodePrime) -= itemp; *(ckt->CKTrhs + here->B1sNodePrime) += temp; *(ckt->CKTirhs + here->B1sNodePrime) += itemp; /* draincurrent term loading over */ /* loading qg term */ /* kernels for vgs,vbs and vds already set up */ temp = -ckt->CKTomega * DFiF12(here->qg_x2, here->qg_y2, here->qg_z2, here->qg_xy, here->qg_yz, here->qg_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1hm2x, i1hm2x, r1hm2y, i1hm2y, r1hm2z, i1hm2z); itemp = ckt->CKTomega * DFnF12(here->qg_x2, here->qg_y2, here->qg_z2, here->qg_xy, here->qg_yz, here->qg_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z, i1h1z, r1hm2x, i1hm2x, r1hm2y, i1hm2y, r1hm2z, i1hm2z); *(ckt->CKTrhs + here->B1gNode) -= temp; *(ckt->CKTirhs + here->B1gNode) -= itemp; *(ckt->CKTrhs + here->B1sNodePrime) += temp; *(ckt->CKTirhs + here->B1sNodePrime) += itemp; /* qg term over */ /* loading qb term */ /* kernels for vgs,vbs and vds already set up */ temp = -ckt->CKTomega * DFiF12(here->qb_x2, here->qb_y2, /* XXX Bug fixed: fewer arguments passed than declared */ here->qb_z2, here->qb_xy, here->qb_yz, here->qb_xz, r1h1x, i1h1x, r1h1y, i1h1y, r1h1z,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -