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

📄 jacobfac.cpp

📁 用于潮流计算的程序请让我下载我需要的吧感谢了啊
💻 CPP
字号:
/* FACTS mismatch vectors and Jacobian */

#include "jacob.h"

#ifdef ANSIPROTO
void SVCFunJac(SparseMatrix *Mptr,BOOLEAN flagF,BOOLEAN flagJ);
void TCSCFunJac(SparseMatrix *Mptr,BOOLEAN flagF,BOOLEAN flagJ);
void STATCOMFunJac(SparseMatrix *Mptr,BOOLEAN flagF,BOOLEAN flagJ);
#else
void SVCFunJac();
void TCSCFunJac();
void STATCOMFunJac();
#endif


/*  Construct the SVC part of the mismatch vector and Jacobian  */
#ifdef ANSIPROTO
void SVCFunJac(SparseMatrix *Mptr,BOOLEAN flagF,BOOLEAN flagJ)
#else
void SVCFunJac(Mptr,flagF,flagJ)
BOOLEAN flagF,flagJ;
SparseMatrix *Mptr;
#endif
{
 INDEX i,k,l;
 SVCbusData *SVCptr;
 VALUETYPE Vref,Vk,Vl,Xl,Xc,Bv,Xsl,Qsvc,alpha;
 BOOLEAN flag1;

 i=NacVar+11*Ndc/2;
 for(SVCptr=dataPtr->SVCbus;SVCptr!=NULL;SVCptr=SVCptr->Next){
   k=ACvar[SVCptr->From->N];
   Vk=SVCptr->From->V;
   l=ACvar[SVCptr->Ctrl->N];
   Vl=SVCptr->Ctrl->V;
   if (!strcmp(SVCptr->Cont,"AL")) flag1=FALSE;
   else flag1=TRUE;
   if(!flag1)Vref=SVCptr->Vref;
   else Vref=SVCptr->Vvar;
   Xl=SVCptr->Xl;
   Xc=SVCptr->Xc;
   Xsl=SVCptr->slope;
   Bv=SVCptr->Bv;
   Qsvc=SVCptr->Qsvc;
   alpha=SVCptr->alpha_svc;
   if(flagF){
     dF[i+1]=Vl-Vref-Xsl*Vk*(Bv-1.0/Xc);
     dF[i+2]=Vk*Vk*(Bv-1.0/Xc)+Qsvc;
     dF[i+3]=-PI*Xl*Bv+2.0*(PI-alpha)+sin(2.0*alpha);
     dF[k+1]=dF[k+1]+Qsvc;
   }
   if(flagJ){
     JacElement(Mptr,k+1,i+1,1.0);
     JacElement(Mptr,i+1,k+1,-Xsl*(Bv-1.0/Xc));
     JacElement(Mptr,i+1,l+1,1.0);
     JacElement(Mptr,i+1,i+2,-Xsl*Vk);
     JacElement(Mptr,i+2,k+1,-2.0*Vk*(1.0/Xc-Bv));
     JacElement(Mptr,i+2,i+1,1.0);
     JacElement(Mptr,i+2,i+2,Vk*Vk);
     JacElement(Mptr,i+3,i+2,-PI*Xl);
     if(!flag1){
       JacElement(Mptr,i+1,i+3,0.0);
       JacElement(Mptr,i+3,i+3,-2.0*(1.0-cos(2.0*alpha)));}
     else {
       JacElement(Mptr,i+1,i+3,-1.0);
       JacElement(Mptr,i+3,i+3,0.0);}
     if(flagH){
       if(strpbrk(SVCptr->From->Type,"L")){
         JacElement(Mptr,i+1,Mptr->n1,-Xsl*(Bv-1.0/Xc));
         JacElement(Mptr,i+2,Mptr->n1,2.0*Vk*(Bv-1.0/Xc));
       }
       if(strpbrk(SVCptr->Ctrl->Type,"L")){
         JacElement(Mptr,i+1,Mptr->n1,1.0);
       }
     }
   }
   i=i+3;
 }
}

/*  Construct the TCSC part of the mismatch vector and Jacobian  */
#ifdef ANSIPROTO
void TCSCFunJac(SparseMatrix *Mptr,BOOLEAN flagF,BOOLEAN flagJ)
#else
void TCSCFunJac(Mptr,flagF,flagJ)
BOOLEAN flagF,flagJ;
SparseMatrix *Mptr;
#endif
{
 INDEX i,k,kp,m,mp;
 TCSCbusData *TCSCptr;
 VALUETYPE Vk,Vm,thk,thm,Xl,Xc,Ptcsc,Qtcsck,Qtcscm,Be,alpha,Itcsc,delta_t;
 VALUETYPE Bset,Pset,Iset,delta_set,Ctrl,Kf;
 VALUETYPE s1,s2,s3,s4,s5,s6,s7,s8;
 BOOLEAN dVk=FALSE,dVm=FALSE;

 i=NacVar+11*Ndc/2+3*Nsvc;
 for(TCSCptr=dataPtr->TCSCbus;TCSCptr!=NULL;TCSCptr=TCSCptr->Next){
   k=ACvar[TCSCptr->From->N];
   kp=k+1;
   Vk=TCSCptr->From->V;
   thk=TCSCptr->From->Ang;
   m=ACvar[TCSCptr->To->N];
   mp=m+1;
   Vm=TCSCptr->To->V;
   thm=TCSCptr->To->Ang;
   Xc=TCSCptr->Xc;
   Xl=TCSCptr->Xl;
   Kf=sqrt(Xc/Xl);
   Ctrl=TCSCptr->Control;
   if(!strcmp(TCSCptr->Cont,"X")) Bset=TCSCptr->Bset;
   else if(!strcmp(TCSCptr->Cont,"P")) Pset=Ctrl;
   else if(!strcmp(TCSCptr->Cont,"I")) Iset=Ctrl;
   else if(!strcmp(TCSCptr->Cont,"D")) delta_set=Ctrl;
   Ptcsc=TCSCptr->Ptcsc;
   Qtcsck=TCSCptr->Qtcsck;
   Qtcscm=TCSCptr->Qtcscm;
   Be=TCSCptr->Be;
   alpha=TCSCptr->alpha_tcsc;
   Itcsc=TCSCptr->Itcsc;
   delta_t=TCSCptr->delta_t;
   if (TCSCptr->From->Cont!=NULL) dVk=TRUE;
   else dVk=FALSE;
   if (TCSCptr->To->Cont!=NULL) dVm=TRUE;
   else dVm=FALSE;
   if(flagF){
     dF[i+1]=-Vk*Vm*Be*sin(thk-thm)-Ptcsc;
     dF[i+2]=-Vk*Vk*Be+Vk*Vm*Be*cos(thk-thm)-Qtcsck;
     dF[i+3]=-Vm*Vm*Be+Vk*Vm*Be*cos(thk-thm)-Qtcscm;
     /*
     dF[i+4]=1.0/Xc-(2.0*(PI-alpha)+sin(2.0*alpha))/(PI*Xl)-Be;
     */
     dF[i+4]= PI*cos(Kf*(-PI+alpha))*(pow(Kf,4.0)-2.0*Kf*Kf+1.0)/Xc/(-PI*pow(Kf,4.0)*
      cos(Kf*(-PI+alpha))+PI*cos(Kf*(-PI+alpha))+2.0*pow(Kf,4.0)*alpha*
      cos(Kf*(-PI+alpha))-2.0*alpha*Kf*Kf*cos(Kf*(-PI+alpha))+pow(Kf,4.0)*
      sin(-2.0*PI+2.0*alpha)*cos(Kf*(-PI+alpha))-sin(-2.0*PI+2.0*alpha)*
      Kf*Kf*cos(Kf*(-PI+alpha))-4.0*Kf*Kf*Kf*pow(cos(-PI+alpha),2.0)*
      sin(Kf*(-PI+alpha))+4.0*Kf*Kf*cos(-PI+alpha)*sin(-PI+alpha)*
      cos(Kf*(-PI+alpha)))-Be;
     if(Itcsc >= 0)dF[i+5]=sqrt(Ptcsc*Ptcsc+Qtcsck*Qtcsck)-Itcsc*Vk;
     else dF[i+5]=-sqrt(Ptcsc*Ptcsc+Qtcsck*Qtcsck)-Itcsc*Vk;
     dF[i+6]=thk-thm-delta_t;
     if(!strcmp(TCSCptr->Cont,"X"))dF[i+7]=Bset-Be;
     else if(!strcmp(TCSCptr->Cont,"P"))dF[i+7]=Pset-Ptcsc;
     else if(!strcmp(TCSCptr->Cont,"I"))dF[i+7]=Iset-Itcsc;
     else if(!strcmp(TCSCptr->Cont,"D"))dF[i+7]=delta_set-delta_t;
     dF[k]=dF[k]-Ptcsc;
     dF[k+1]=dF[k+1]-Qtcsck;
     dF[m]=dF[m]+Ptcsc;
     dF[m+1]=dF[m+1]-Qtcscm;
   }
   if(flagJ){
     JacElement(Mptr,k,i+1,-1.0);
     JacElement(Mptr,k+1,i+2,-1.0);
     JacElement(Mptr,m,i+1,1.0);
     JacElement(Mptr,m+1,i+3,-1.0);
     if (!strpbrk(TCSCptr->From->Type,"S")) JacElement(Mptr,i+1,k,-Vk*Vm*Be*cos(thk-thm));
     if(dVk){
       JacElement(Mptr,i+1,kp,-Vm*Be*sin(thk-thm));
       JacElement(Mptr,i+2,kp,-2.0*Vk*Be+Vm*Be*cos(thk-thm));
       JacElement(Mptr,i+3,kp,Vm*Be*cos(thk-thm));
       JacElement(Mptr,i+5,kp,-Itcsc);
     }else{
       JacElement(Mptr,i+1,kp,0.0);
       JacElement(Mptr,i+2,kp,0.0);
       JacElement(Mptr,i+3,kp,0.0);
       JacElement(Mptr,i+5,kp,0.0);
     }
     if (!strpbrk(TCSCptr->To->Type,"S")) JacElement(Mptr,i+1,m,Vk*Vm*Be*cos(thk-thm));
     if(dVm){
       JacElement(Mptr,i+1,mp,-Vk*Be*sin(thk-thm));
       JacElement(Mptr,i+2,mp,Vk*Be*cos(thk-thm));
       JacElement(Mptr,i+3,mp,-2*Vm*Be+Vk*Be*cos(thk-thm));
     }else{
       JacElement(Mptr,i+1,mp,0.0);
       JacElement(Mptr,i+2,mp,0.0);
       JacElement(Mptr,i+3,mp,0.0);
     }
     JacElement(Mptr,i+1,i+1,-1.0);
     JacElement(Mptr,i+1,i+4,-Vk*Vm*sin(thk-thm));
     if (!strpbrk(TCSCptr->From->Type,"S")) JacElement(Mptr,i+2,k,-Vk*Vm*Be*sin(thk-thm));
     if (!strpbrk(TCSCptr->To->Type,"S")) JacElement(Mptr,i+2,m,Vk*Vm*Be*sin(thk-thm));
     JacElement(Mptr,i+2,i+2,-1.0);
     JacElement(Mptr,i+2,i+4,-Vk*Vk+Vk*Vm*cos(thk-thm));
     if (!strpbrk(TCSCptr->From->Type,"S")) JacElement(Mptr,i+3,k,-Vk*Vm*Be*sin(thk-thm));
     if (!strpbrk(TCSCptr->To->Type,"S")) JacElement(Mptr,i+3,m,Vk*Vm*Be*sin(thk-thm));
     JacElement(Mptr,i+3,i+3,-1.0);
     JacElement(Mptr,i+3,i+4,-Vm*Vm+Vk*Vm*cos(thk-thm));
     JacElement(Mptr,i+4,i+4,-1.0);
     /*  JacElement(Mptr,i+4,i+5,(2.0-2.0*cos(2*alpha))/(PI*Xl));  */
     s1 = -PI*sin(Kf*(-PI+alpha))*Kf*(pow(Kf,4.0)-2.0*Kf*Kf+1.0)/Xc/(-PI*
     pow(Kf,4.0)*cos(Kf*(-PI+alpha))+PI*cos(Kf*(-PI+alpha))+2.0*pow(Kf,4.0)*
     alpha*cos(Kf*(-PI+alpha))-2.0*alpha*Kf*Kf*cos(Kf*(-PI+alpha))+
     pow(Kf,4.0)*sin(-2.0*PI+2.0*alpha)*cos(Kf*(-PI+alpha))-
     sin(-2.0*PI+2.0*alpha)*Kf*Kf*cos(Kf*(-PI+alpha))-4.0*Kf*Kf*Kf*
     pow(cos(-PI+alpha),2.0)*sin(Kf*(-PI+alpha))+4.0*Kf*Kf*cos(-PI+alpha)*
     sin(-PI+alpha)*cos(Kf*(-PI+alpha)));
     s3 = -PI*cos(Kf*(-PI+alpha));
     s5 = (pow(Kf,4.0)-2.0*Kf*Kf+1.0)/Xc;
     s7 = 1/(pow(-PI*pow(Kf,4.0)*cos(Kf*(-PI+alpha))+PI*cos(Kf*(-PI+alpha))
     +2.0*pow(Kf,4.0)*alpha*cos(Kf*(-PI+alpha))-2.0*alpha*Kf*Kf*
     cos(Kf*(-PI+alpha))+pow(Kf,4.0)*sin(-2.0*PI+2.0*alpha)*
     cos(Kf*(-PI+alpha))-sin(-2.0*PI+2.0*alpha)*Kf*Kf*cos(Kf*(-PI+alpha))
     -4.0*Kf*Kf*Kf*pow(cos(-PI+alpha),2.0)*sin(Kf*(-PI+alpha))
     +4.0*Kf*Kf*cos(-PI+alpha)*sin(-PI+alpha)*cos(Kf*(-PI+alpha)),2.0));
     s8 = PI*pow(Kf,5.0)*sin(Kf*(-PI+alpha))-PI*sin(Kf*(-PI+alpha))*Kf
     +2.0*pow(Kf,4.0)*cos(Kf*(-PI+alpha))-2.0*pow(Kf,5.0)*alpha*
     sin(Kf*(-PI+alpha))-2.0*Kf*Kf*cos(Kf*(-PI+alpha))+2.0*alpha*Kf*Kf*Kf*
     sin(Kf*(-PI+alpha))+2.0*pow(Kf,4.0)*cos(-2.0*PI+2.0*alpha)*
     cos(Kf*(-PI+alpha))-pow(Kf,5.0)*sin(-2.0*PI+2.0*alpha)*
     sin(Kf*(-PI+alpha))-2.0*cos(-2.0*PI+2.0*alpha)*Kf*Kf*
     cos(Kf*(-PI+alpha))+sin(-2.0*PI+2.0*alpha)*Kf*Kf*Kf*
     sin(Kf*(-PI+alpha))+4.0*Kf*Kf*Kf*cos(-PI+alpha)*sin(Kf*(-PI+alpha))*
     sin(-PI+alpha)-4.0*pow(Kf,4.0)*pow(cos(-PI+alpha),2.0)*
     cos(Kf*(-PI+alpha))-4.0*Kf*Kf*pow(sin(-PI+alpha),2.0)*
     cos(Kf*(-PI+alpha))+4.0*Kf*Kf*pow(cos(-PI+alpha),2.0)*
     cos(Kf*(-PI+alpha));
     s6 = s7*s8;
     s4 = s5*s6;
     s2 = s3*s4;
     JacElement(Mptr,i+4,i+5,s1+s2);
     if(Itcsc >= 0){
       if (Ptcsc==0)JacElement(Mptr,i+5,i+1,0.);
       else JacElement(Mptr,i+5,i+1,Ptcsc/(sqrt(Ptcsc*Ptcsc+Qtcsck*Qtcsck)));
       if (Qtcsck==0)JacElement(Mptr,i+5,i+2,0.);
       else JacElement(Mptr,i+5,i+2,Qtcsck/(sqrt(Ptcsc*Ptcsc+Qtcsck*Qtcsck)));}
     else {
       if (Ptcsc==0)JacElement(Mptr,i+5,i+1,0.);
       else JacElement(Mptr,i+5,i+1,-Ptcsc/(sqrt(Ptcsc*Ptcsc+Qtcsck*Qtcsck)));
       if (Qtcsck==0)JacElement(Mptr,i+5,i+2,0.);
       else JacElement(Mptr,i+5,i+2,-Qtcsck/(sqrt(Ptcsc*Ptcsc+Qtcsck*Qtcsck)));}
     JacElement(Mptr,i+5,i+6,-Vk);
     if (!strpbrk(TCSCptr->From->Type,"S")) JacElement(Mptr,i+6,k,1.0);
     if (!strpbrk(TCSCptr->To->Type,"S")) JacElement(Mptr,i+6,m,-1.0);
     JacElement(Mptr,i+6,i+7,-1.0);
     if(!strcmp(TCSCptr->Cont,"X")) JacElement(Mptr,i+7,i+4,-1.0);
     else {
       JacElement(Mptr,i+7,i+4,0.0);
       if (!strcmp(TCSCptr->Cont,"P")) JacElement(Mptr,i+7,i+1,-1.0);
       else if (!strcmp(TCSCptr->Cont,"I")) JacElement(Mptr,i+7,i+6,-1.0);
       else if (!strcmp(TCSCptr->Cont,"D")) JacElement(Mptr,i+7,i+7,-1.0);
     }
     if(flagH){
       if(strpbrk(TCSCptr->From->Type,"L")){
          JacElement(Mptr,i+1,Mptr->n1,-Vm*Be*sin(thk-thm));
          JacElement(Mptr,i+2,Mptr->n1,-2.0*Vk*Be+Vm*Be*cos(thk-thm));
          JacElement(Mptr,i+3,Mptr->n1,Vm*Be*cos(thk-thm));
          JacElement(Mptr,i+5,Mptr->n1,-Itcsc);
       }
       else if(strpbrk(TCSCptr->To->Type,"L")){
          JacElement(Mptr,i+1,Mptr->n1,-Vk*Be*sin(thk-thm));
          JacElement(Mptr,i+2,Mptr->n1,Vk*Be*cos(thk-thm));
          JacElement(Mptr,i+3,Mptr->n1,-2.0*Vm*Be+Vk*Be*cos(thk-thm));
       }
     }
   }
   i=i+7;
 }
}


/*  Construct the STATCOM part of the mismatch vector and Jacobian  */
#ifdef ANSIPROTO
void STATCOMFunJac(SparseMatrix *Mptr,BOOLEAN flagF,BOOLEAN flagJ)
#else
void STATCOMFunJac(Mptr,flagF,flagJ)
BOOLEAN flagF,flagJ;
SparseMatrix *Mptr;
#endif
{
 INDEX i,k,l;
 STATCOMbusData *STATCOMptr;
 VALUETYPE Vk,delta,Vl,R,G,B,Gc,Xsl,Vref,P,Q,I,theta,Vdc,alpha,K,Cref;
 BOOLEAN flagLimits,flagPWM;

 i=NacVar+11*Ndc/2+3*Nsvc+NtcscVar;
 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];
   Vl=STATCOMptr->Ctrl->V;
   if (!strcmp(STATCOMptr->Cont,"PW") || !strcmp(STATCOMptr->Cont,"AL")) flagLimits=FALSE;
   else flagLimits=TRUE;
   if(!flagLimits) Vref=STATCOMptr->Vref;
   else Vref=STATCOMptr->Vvar;
   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;
   P=STATCOMptr->P;
   Q=STATCOMptr->Q;
   Cref=STATCOMptr->Contref;
   if(flagF){
     if (Q>0) dF[i+1]=Vl-Vref-Xsl*I;
     else     dF[i+1]=Vl-Vref+Xsl*I;
     if (flagPWM) dF[i+2]=Vdc-Cref;
     else         dF[i+2]=K-Cref;
     dF[i+3]=P-Gc*Vdc*Vdc-R*I*I;
     dF[i+4]=P-Vk*I*cos(delta-theta);
     dF[i+5]=Q-Vk*I*sin(delta-theta);
     dF[i+6]=P-G*Vk*Vk+G*K*Vdc*Vk*cos(delta-alpha)+B*K*Vdc*Vk*sin(delta-alpha);
     dF[i+7]=Q+B*Vk*Vk-B*K*Vdc*Vk*cos(delta-alpha)+G*K*Vdc*Vk*sin(delta-alpha);
     dF[k]=dF[k]-P;
     dF[k+1]=dF[k+1]-Q;
   }
   if(flagJ){
     if (!flagLimits) {
        if (Q>0) JacElement(Mptr,i+1,i+1,-Xsl);
        else     JacElement(Mptr,i+1,i+1,+Xsl);
     }  else     JacElement(Mptr,i+1,i+1,-1.0);
     JacElement(Mptr,i+1,l+1,1.0);

     if (flagPWM) JacElement(Mptr,i+2,i+3,1.0);
     else         JacElement(Mptr,i+2,i+4,1.0);

     if (!flagLimits) JacElement(Mptr,i+3,i+1,-2.0*R*I);
     else             JacElement(Mptr,i+3,i+1,0.0);
     JacElement(Mptr,i+3,i+3,-2.0*Gc*Vdc);
     JacElement(Mptr,i+3,i+6,1.0);

     if (!flagLimits) JacElement(Mptr,i+4,i+1,-Vk*cos(delta-theta));
     else             JacElement(Mptr,i+4,i+1,0.0);
     JacElement(Mptr,i+4,i+2,-Vk*I*sin(delta-theta));
     JacElement(Mptr,i+4,i+6,1.0);
     JacElement(Mptr,i+4,k+1,-I*cos(delta-theta));
     if (!strpbrk(STATCOMptr->From->Type,"S")) JacElement(Mptr,i+4,k,Vk*I*sin(delta-theta));

     if (!flagLimits) JacElement(Mptr,i+5,i+1,-Vk*sin(delta-theta));
     else             JacElement(Mptr,i+5,i+1,0.0);
     JacElement(Mptr,i+5,i+2,Vk*I*cos(delta-theta));
     JacElement(Mptr,i+5,i+7,1.0);
     JacElement(Mptr,i+5,k+1,-I*sin(delta-theta));
     if (!strpbrk(STATCOMptr->From->Type,"S")) JacElement(Mptr,i+5,k,-Vk*I*cos(delta-theta));

     JacElement(Mptr,i+6,i+3,G*K*Vk*cos(delta-alpha)+B*K*Vk*sin(delta-alpha));
     JacElement(Mptr,i+6,i+4,G*Vdc*Vk*cos(delta-alpha)+B*Vdc*Vk*sin(delta-alpha));
     JacElement(Mptr,i+6,i+5,G*K*Vdc*Vk*sin(delta-alpha)-B*K*Vdc*Vk*cos(delta-alpha));
     JacElement(Mptr,i+6,i+6,1.0);
     JacElement(Mptr,i+6,k+1,-2.0*G*Vk+G*K*Vdc*cos(delta-alpha)+B*K*Vdc*sin(delta-alpha));
     if (!strpbrk(STATCOMptr->From->Type,"S")) JacElement(Mptr,i+6,k,-G*K*Vdc*Vk*sin(delta-alpha)+B*K*Vdc*Vk*cos(delta-alpha));

     JacElement(Mptr,i+7,i+3,-B*K*Vk*cos(delta-alpha)+G*K*Vk*sin(delta-alpha));
     JacElement(Mptr,i+7,i+4,-B*Vdc*Vk*cos(delta-alpha)+G*Vdc*Vk*sin(delta-alpha));
     JacElement(Mptr,i+7,i+5,-B*K*Vdc*Vk*sin(delta-alpha)-G*K*Vdc*Vk*cos(delta-alpha));
     JacElement(Mptr,i+7,i+7,1.0);
     JacElement(Mptr,i+7,k+1,2.0*B*Vk-B*K*Vdc*cos(delta-alpha)-G*K*Vdc*sin(delta-alpha));
     if (!strpbrk(STATCOMptr->From->Type,"S")) JacElement(Mptr,i+7,k,B*K*Vdc*Vk*sin(delta-alpha)+G*K*Vdc*Vk*cos(delta-alpha));

     JacElement(Mptr,k,i+6,-1.0);

     JacElement(Mptr,k+1,i+7,-1.0);

     if(flagH){
       if(strpbrk(STATCOMptr->From->Type,"L")){
         JacElement(Mptr,i+4,Mptr->n1,-I*cos(delta-theta));
         JacElement(Mptr,i+5,Mptr->n1,-I*sin(delta-theta));
         JacElement(Mptr,i+6,Mptr->n1,-2.0*G*Vk+G*K*Vdc*cos(delta-alpha)+B*K*Vdc*sin(delta-alpha));
         JacElement(Mptr,i+7,Mptr->n1,2.0*B*Vk-B*K*Vdc*cos(delta-alpha)-G*K*Vdc*sin(delta-alpha));
       }
       if(strpbrk(STATCOMptr->Ctrl->Type,"L")){
         JacElement(Mptr,i+1,Mptr->n1,1.0);
       }
     }
   }
   i=i+7;
 }
}

⌨️ 快捷键说明

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