📄 pointfac.c
字号:
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 + -