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

📄 pointfac.cpp

📁 用于电力系统潮流计算 c++程序
💻 CPP
📖 第 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 ANSIPROTO
void STATCOMFunHes(BOOLEAN flagF,BOOLEAN flagJ)
#else
void 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 + -