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

📄 pointfac.c

📁 电力系统分析计算 学习调试程序 UNIX / LINUX / CYGWIN 系统使用
💻 C
📖 第 1 页 / 共 2 页
字号:
     if (!strpbrk(TCSCptr->From->Type,"S")) {       JacElement(Jac,k+N,i+4,-Vk*Vm*cos(thk-thm)*x0[i+1]-Vk*Vm*sin(thk-thm)*x0[i+2]-Vk*Vm*sin(thk-thm)*x0[i+3]);       if (dVk) JacElement(Jac,k+N,k+1,-Vm*Be*cos(thk-thm)*x0[i+1]-Vm*Be*sin(thk-thm)*x0[i+2]-Vm*Be*sin(thk-thm)*x0[i+3]);       else JacElement(Jac,k+N,k+1,0.0);       if (dVm) JacElement(Jac,k+N,m+1,-Vk*Be*cos(thk-thm)*x0[i+1]-Vk*Be*sin(thk-thm)*x0[i+2]-Vk*Be*sin(thk-thm)*x0[i+3]);       else JacElement(Jac,k+N,m+1,0.0);       JacElement(Jac,k+N,k,Vk*Vm*Be*(sin(thk-thm)*x0[i+1]-cos(thk-thm)*x0[i+2]-cos(thk-thm)*x0[i+3]));       if (!strpbrk(TCSCptr->To->Type,"S"))         JacElement(Jac,k+N,k,-Vk*Vm*Be*(sin(thk-thm)*x0[i+1]-cos(thk-thm)*x0[i+2]-cos(thk-thm)*x0[i+3]));     }     if (dVk) {       JacElement(Jac,k+N+1,i+4,-Vm*sin(thk-thm)*x0[i+1]+(-2.0*Vk+Vm*cos(thk-thm))*x0[i+2]+Vm*cos(thk-thm)*x0[i+3]);       JacElement(Jac,k+N+1,i+6,-x0[i+5]);       JacElement(Jac,k+N+1,k+1,-2*Be*x0[i+2]);       if (dVm) JacElement(Jac,k+N+1,m+1,-Be*sin(thk-thm)*x0[i+1]+Be*cos(thk-thm)*x0[i+2]+Be*cos(thk-thm)*x0[i+3]);       else JacElement(Jac,k+N+1,m+1,0.0);       if (!strpbrk(TCSCptr->From->Type,"S"))         JacElement(Jac,k+N+1,k,-Vm*Be*cos(thk-thm)*x0[i+1]-Vm*Be*sin(thk-thm)*x0[i+2]-Vm*Be*sin(thk-thm)*x0[i+3]);       if (!strpbrk(TCSCptr->To->Type,"S"))         JacElement(Jac,k+N+1,m,Vm*Be*cos(thk-thm)*x0[i+1]+Vm*Be*sin(thk-thm)*x0[i+2]+Vm*Be*sin(thk-thm)*x0[i+3]);     } else {       JacElement(Jac,k+N+1,i+4,0.0);       JacElement(Jac,k+N+1,i+6,0.0);       JacElement(Jac,k+N+1,k+1,0.0);       JacElement(Jac,k+N+1,m+1,0.0);       if (!strpbrk(TCSCptr->From->Type,"S")) JacElement(Jac,k+N+1,k,0.0);       if (!strpbrk(TCSCptr->To->Type,"S")) JacElement(Jac,k+N+1,m,0.0);     }     if (!strpbrk(TCSCptr->To->Type,"S")) {       JacElement(Jac,m+N,i+4,Vk*Vm*cos(thk-thm)*x0[i+1]+Vk*Vm*sin(thk-thm)*x0[i+2]+Vk*Vm*sin(thk-thm)*x0[i+3]);       if (dVk) JacElement(Jac,m+N,k+1,Vm*Be*cos(thk-thm)*x0[i+1]+Vm*Be*sin(thk-thm)*x0[i+2]+Vm*Be*sin(thk-thm)*x0[i+3]);       else JacElement(Jac,m+N,k+1,0.0);       if (dVm) JacElement(Jac,m+N,m+1,Vk*Be*cos(thk-thm)*x0[i+1]+Vk*Be*sin(thk-thm)*x0[i+2]+Vk*Be*sin(thk-thm)*x0[i+3]);       else JacElement(Jac,m+N,m+1,0.0);       if (!strpbrk(TCSCptr->From->Type,"S"))         JacElement(Jac,m+N,k,-Vk*Vm*Be*(sin(thk-thm)*x0[i+1]-cos(thk-thm)*x0[i+2]-cos(thk-thm)*x0[i+3]));       JacElement(Jac,m+N,k,Vk*Vm*Be*(sin(thk-thm)*x0[i+1]-cos(thk-thm)*x0[i+2]-cos(thk-thm)*x0[i+3]));     }     if (dVm) {       JacElement(Jac,m+N+1,i+4,-Vk*sin(thk-thm)*x0[i+1]+(-2.0*Vm+Vk*cos(thk-thm))*x0[i+3]+Vk*cos(thk-thm)*x0[i+2]);       if (dVk) JacElement(Jac,m+N+1,k+1,-Be*sin(thk-thm)*x0[i+1]+Be*cos(thk-thm)*x0[i+3]+Be*cos(thk-thm)*x0[i+2]);       else JacElement(Jac,m+N+1,k+1,0.0);       JacElement(Jac,m+N+1,m+1,-2.0*Be*x0[i+3]);       if (!strpbrk(TCSCptr->From->Type,"S"))         JacElement(Jac,m+N+1,k,-Vk*Be*cos(thk-thm)*x0[i+1]-Vk*Be*sin(thk-thm)*x0[i+2]-Vk*Be*sin(thk-thm)*x0[i+3]);       if (!strpbrk(TCSCptr->To->Type,"S"))         JacElement(Jac,m+N+1,k,Vk*Be*cos(thk-thm)*x0[i+1]+Vk*Be*sin(thk-thm)*x0[i+2]+Vk*Be*sin(thk-thm)*x0[i+3]);     } else {       JacElement(Jac,m+N+1,i+4,0.0);       JacElement(Jac,m+N+1,k+1,0.0);       JacElement(Jac,m+N+1,m+1,0.0);       if (!strpbrk(TCSCptr->From->Type,"S")) JacElement(Jac,m+N+1,k,0.0);       if (!strpbrk(TCSCptr->To->Type,"S")) JacElement(Jac,m+N+1,m,0.0);     }   }   i=i+7;   j=j+7; }}/* ------------------ STATCOMFunHes ----------------------------- */#ifdef ANSIPROTOvoid STATCOMFunHes(BOOLEAN flagF,BOOLEAN flagJ)#elsevoid STATCOMFunHes(flagF,flagJ)BOOLEAN flagF,flagJ;#endif/* Construct the STATCOM part of the PoC Jacobian and mismatch. */{ INDEX i,j,k,l,N; STATCOMbusData *STATCOMptr; VALUETYPE Vk,Xsl,delta,R,G,B,Gc,I,theta,Vdc,K,alpha,Q; BOOLEAN flagLimits,flagPWM; i=NacVar+11*Ndc/2+3*Nsvc+NtcscVar; N=NacVar+11*Ndc/2+3*Nsvc+NtcscVar+7*Nstatcom; j=N+i; for(STATCOMptr=dataPtr->STATCOMbus;STATCOMptr!=NULL;STATCOMptr=STATCOMptr->Next){   k=ACvar[STATCOMptr->From->N];   Vk=STATCOMptr->From->V;   delta=STATCOMptr->From->Ang;   l=ACvar[STATCOMptr->Ctrl->N];   if (!strcmp(STATCOMptr->Cont,"PW") || !strcmp(STATCOMptr->Cont,"AL")) flagLimits=FALSE;   else                                                                  flagLimits=TRUE;   if (!strcmp(STATCOMptr->Cont1,"PW")) flagPWM=TRUE;   else                                 flagPWM=FALSE;   R=STATCOMptr->R;   G=STATCOMptr->G;   B=STATCOMptr->B;   Gc=STATCOMptr->Gc;   Xsl=STATCOMptr->slope;   I=STATCOMptr->I;   theta=STATCOMptr->theta;   Vdc=STATCOMptr->Vdc;   K=STATCOMptr->k;   alpha=STATCOMptr->alpha;   Q=STATCOMptr->Q;   if(flagF){     if (!flagLimits) {        dF[j+1]= x0[i+3]*(-2.0*R*I)+ x0[i+4]*(-Vk*cos(delta-theta))+x0[i+5]*(-Vk*sin(delta-theta));        if (Q>0) dF[j+1] += x0[i+1]*(-Xsl);        else     dF[j+1] += x0[i+1]*Xsl;     } else {        dF[j+1] = -x0[i+1];     }     dF[j+2]= x0[i+4]*(-Vk*I*sin(delta-theta))+x0[i+5]*(Vk*I*cos(delta-theta));     dF[j+3]= x0[i+3]*(-2.0*Gc*Vdc)             +x0[i+6]*(G*K*Vk*cos(delta-alpha)+B*K*Vk*sin(delta-alpha))             +x0[i+7]*(-B*K*Vk*cos(delta-alpha)+G*K*Vk*sin(delta-alpha));     if (flagPWM) dF[j+3]+= x0[i+2];     dF[j+4]= x0[i+6]*(G*Vdc*Vk*cos(delta-alpha)+B*Vdc*Vk*sin(delta-alpha))             +x0[i+7]*(-B*Vdc*Vk*cos(delta-alpha)+G*Vdc*Vk*sin(delta-alpha));     if (!flagPWM) dF[j+4]+= x0[i+2];     dF[j+5]= x0[i+6]*(G*K*Vdc*Vk*sin(delta-alpha)-B*K*Vdc*Vk*cos(delta-alpha))             +x0[i+7]*(-B*K*Vdc*Vk*sin(delta-alpha)-G*K*Vdc*Vk*cos(delta-alpha));     dF[j+6]= x0[i+3]+x0[i+4]+x0[i+6]-x0[k];     dF[j+7]= x0[i+5]+x0[i+7]-x0[k+1];     dF[l+1+N]+= x0[i+1];     dF[k+1+N]+= x0[i+4]*(-I*cos(delta-theta))+x0[i+5]*(-I*sin(delta-theta))                +x0[i+6]*(-2.0*G*Vk+G*K*Vdc*cos(delta-alpha)+B*K*Vdc*sin(delta-alpha))                +x0[i+7]*(2.0*B*Vk-B*K*Vdc*cos(delta-alpha)-G*K*Vdc*sin(delta-alpha));     if (!strpbrk(STATCOMptr->From->Type,"S"))        dF[k+N]+= x0[i+4]*(Vk*I*sin(delta-theta))+x0[i+5]*(-Vk*I*cos(delta-theta))                 +x0[i+6]*(-G*K*Vdc*Vk*sin(delta-alpha)+B*K*Vdc*Vk*cos(delta-alpha))                 +x0[i+7]*(B*K*Vdc*Vk*sin(delta-alpha)+G*K*Vdc*Vk*cos(delta-alpha));   }   if(flagJ){     if (!flagLimits) {        JacElement(Jac,j+1,i+1,x0[i+3]*(-2.0*R));        JacElement(Jac,j+1,i+2,x0[i+4]*(-Vk*sin(delta-theta))+x0[i+5]*(Vk*cos(delta-theta)));        JacElement(Jac,j+1,k+1,x0[i+4]*(-cos(delta-theta))+x0[i+5]*(-sin(delta-theta)));        if (!strpbrk(STATCOMptr->From->Type,"S"))           JacElement(Jac,j+1,k,x0[i+4]*(Vk*sin(delta-theta))+x0[i+5]*(-Vk*cos(delta-theta)));     } else {        JacElement(Jac,j+1,i+1,0.);        JacElement(Jac,j+1,i+2,0.);        JacElement(Jac,j+1,k+1,0.);        if (!strpbrk(STATCOMptr->From->Type,"S")) JacElement(Jac,j+1,k,0.);     }     if (!flagLimits)        JacElement(Jac,j+2,i+1,x0[i+4]*(-Vk*sin(delta-theta))+x0[i+5]*(Vk*cos(delta-theta)));     else JacElement(Jac,j+2,i+1,0.);     JacElement(Jac,j+2,i+2,x0[i+4]*(Vk*I*cos(delta-theta))+x0[i+5]*(Vk*I*sin(delta-theta)));     JacElement(Jac,j+2,k+1,x0[i+4]*(-I*sin(delta-theta))+x0[i+5]*(I*cos(delta-theta)));     if (!strpbrk(STATCOMptr->From->Type,"S"))        JacElement(Jac,j+2,k,x0[i+4]*(-Vk*I*cos(delta-theta))+x0[i+5]*(-Vk*I*sin(delta-theta)));     JacElement(Jac,j+3,i+3,x0[i+3]*(-2.0*Gc));     JacElement(Jac,j+3,i+4,x0[i+6]*(G*Vk*cos(delta-alpha)+B*Vk*sin(delta-alpha))                            +x0[i+7]*(-B*Vk*cos(delta-alpha)+G*Vk*sin(delta-alpha)));     JacElement(Jac,j+3,i+5,x0[i+6]*(G*K*Vk*sin(delta-alpha)-B*K*Vk*cos(delta-alpha))                            +x0[i+7]*(-B*K*Vk*sin(delta-alpha)-G*K*Vk*cos(delta-alpha)));     JacElement(Jac,j+3,k+1,x0[i+6]*(G*K*cos(delta-alpha)+B*K*sin(delta-alpha))                            +x0[i+7]*(-B*K*cos(delta-alpha)+G*K*sin(delta-alpha)));     if (!strpbrk(STATCOMptr->From->Type,"S"))        JacElement(Jac,j+3,k,x0[i+6]*(-G*K*Vk*sin(delta-alpha)+B*K*Vk*cos(delta-alpha))                             +x0[i+7]*(B*K*Vk*sin(delta-alpha)+G*K*Vk*cos(delta-alpha)));     JacElement(Jac,j+4,i+3,x0[i+6]*(G*Vk*cos(delta-alpha)+B*Vk*sin(delta-alpha))                            +x0[i+7]*(-B*Vk*cos(delta-alpha)+G*Vk*sin(delta-alpha)));     JacElement(Jac,j+4,i+5,x0[i+6]*(G*Vdc*Vk*sin(delta-alpha)-B*Vdc*Vk*cos(delta-alpha))                            +x0[i+7]*(-B*Vdc*Vk*sin(delta-alpha)-G*Vdc*Vk*cos(delta-alpha)));     JacElement(Jac,j+4,k+1,x0[i+6]*(G*Vdc*cos(delta-alpha)+B*Vdc*sin(delta-alpha))                            +x0[i+7]*(-B*Vdc*cos(delta-alpha)+G*Vdc*sin(delta-alpha)));     if (!strpbrk(STATCOMptr->From->Type,"S"))        JacElement(Jac,j+4,k,x0[i+6]*(-G*Vdc*Vk*sin(delta-alpha)+B*Vdc*Vk*cos(delta-alpha))                             +x0[i+7]*(B*Vdc*Vk*sin(delta-alpha)+G*Vdc*Vk*cos(delta-alpha)));     JacElement(Jac,j+5,i+3,x0[i+6]*(G*K*Vk*sin(delta-alpha)-B*K*Vk*cos(delta-alpha))                            +x0[i+7]*(-B*K*Vk*sin(delta-alpha)-G*K*Vk*cos(delta-alpha)));     JacElement(Jac,j+5,i+4,x0[i+6]*(G*Vdc*Vk*sin(delta-alpha)-B*Vdc*Vk*cos(delta-alpha))                            +x0[i+7]*(-B*Vdc*Vk*sin(delta-alpha)-G*Vdc*Vk*cos(delta-alpha)));     JacElement(Jac,j+5,i+5,x0[i+6]*(-G*K*Vdc*Vk*cos(delta-alpha)-B*K*Vdc*Vk*sin(delta-alpha))                            +x0[i+7]*(B*K*Vdc*Vk*cos(delta-alpha)-G*K*Vdc*Vk*sin(delta-alpha)));     JacElement(Jac,j+5,k+1,x0[i+6]*(G*K*Vdc*sin(delta-alpha)-B*K*Vdc*cos(delta-alpha))                            +x0[i+7]*(-B*K*Vdc*sin(delta-alpha)-G*K*Vdc*cos(delta-alpha)));     if (!strpbrk(STATCOMptr->From->Type,"S"))       JacElement(Jac,j+5,k,x0[i+6]*(G*K*Vdc*Vk*cos(delta-alpha)+B*K*Vdc*Vk*sin(delta-alpha))                            +x0[i+7]*(-B*K*Vdc*Vk*cos(delta-alpha)+G*K*Vdc*Vk*sin(delta-alpha)));     if (!flagLimits)       JacElement(Jac,k+1+N,i+1,x0[i+4]*(-cos(delta-theta))+x0[i+5]*(-sin(delta-theta)));     else JacElement(Jac,k+1+N,i+1,0.);     JacElement(Jac,k+1+N,i+2,x0[i+4]*(-I*sin(delta-theta))+x0[i+5]*(I*cos(delta-theta)));     JacElement(Jac,k+1+N,i+3,x0[i+6]*(G*K*cos(delta-alpha)+B*K*sin(delta-alpha))                              +x0[i+7]*(-B*K*cos(delta-alpha)-G*K*sin(delta-alpha)));     JacElement(Jac,k+1+N,i+4,x0[i+6]*(G*Vdc*cos(delta-alpha)+B*Vdc*sin(delta-alpha))                              +x0[i+7]*(-B*Vdc*cos(delta-alpha)-G*Vdc*sin(delta-alpha)));     JacElement(Jac,k+1+N,i+5,x0[i+6]*(G*K*Vdc*sin(delta-alpha)-B*K*Vdc*cos(delta-alpha))                              +x0[i+7]*(-B*K*Vdc*sin(delta-alpha)+G*K*Vdc*cos(delta-alpha)));     JacElement(Jac,k+1+N,k+1,x0[i+6]*(-2.0*G)+x0[i+7]*(2.0*B));     if (!strpbrk(STATCOMptr->From->Type,"S"))       JacElement(Jac,k+1+N,k,x0[i+4]*(I*sin(delta-theta))+x0[i+5]*(-I*cos(delta-theta))                              +x0[i+6]*(-G*K*Vdc*sin(delta-alpha)+B*K*Vdc*cos(delta-alpha))                              +x0[i+7]*(B*K*Vdc*sin(delta-alpha)-G*K*Vdc*cos(delta-alpha)));     if (!strpbrk(STATCOMptr->From->Type,"S")) {        if (!flagLimits)           JacElement(Jac,k+N,i+1,x0[i+4]*(Vk*sin(delta-theta))+x0[i+5]*(-Vk*cos(delta-theta)));        else JacElement(Jac,k+N,i+1,0.);        JacElement(Jac,k+N,i+2,x0[i+4]*(-Vk*I*cos(delta-theta))+x0[i+5]*(-Vk*I*sin(delta-theta)));        JacElement(Jac,k+N,i+3,x0[i+6]*(-G*K*Vk*sin(delta-alpha)+B*K*Vk*cos(delta-alpha))                               +x0[i+7]*(B*K*Vk*sin(delta-alpha)+G*K*Vk*cos(delta-alpha)));        JacElement(Jac,k+N,i+4,x0[i+6]*(-G*Vdc*Vk*sin(delta-alpha)+B*Vdc*Vk*cos(delta-alpha))                               +x0[i+7]*(B*Vdc*Vk*sin(delta-alpha)+G*Vdc*Vk*cos(delta-alpha)));        JacElement(Jac,k+N,i+5,x0[i+6]*(G*K*Vdc*Vk*cos(delta-alpha)+B*K*Vdc*Vk*sin(delta-alpha))                               +x0[i+7]*(-B*K*Vdc*Vk*cos(delta-alpha)+G*K*Vdc*Vk*sin(delta-alpha)));        JacElement(Jac,k+N,k+1,x0[i+4]*(I*sin(delta-theta))+x0[i+5]*(-I*cos(delta-theta))                               +x0[i+6]*(-G*K*Vdc*sin(delta-alpha)+B*K*Vdc*cos(delta-alpha))                               +x0[i+7]*(B*K*Vdc*sin(delta-alpha)+G*K*Vdc*cos(delta-alpha)));        JacElement(Jac,k+N,k,x0[i+4]*(Vk*I*cos(delta-theta))+x0[i+5]*(Vk*I*sin(delta-theta))                             +x0[i+6]*(-G*K*Vdc*Vk*cos(delta-alpha)-B*K*Vdc*Vk*sin(delta-alpha))                             +x0[i+7]*(B*K*Vdc*Vk*cos(delta-alpha)-G*K*Vdc*Vk*sin(delta-alpha)));     }   }   i=i+7;   j=j+7; }}

⌨️ 快捷键说明

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