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

📄 homotloa.cpp

📁 用于电力系统潮流计算 c++程序
💻 CPP
📖 第 1 页 / 共 4 页
字号:
    }
  }

  if (FlagUpdateVar)  for (ACptr=dataPtr->ACbus; ACptr!=NULL; ACptr=ACptr->Next){
    if(QRcont && strpbrk(ACptr->Type,"G") && strpbrk(ACptr->cont,"V")){
      i=ACvar[ACptr->Cont->N]+1;
      ACptr->Qg=(x0[i]+Dx[i])*ACptr->Kbg;
      if (Qlim && ACptr->Qg>=ACptr->Max){
        count++; val=fabs((ACptr->Qg-ACptr->Max)/(Dx[i]*ACptr->Kbg));
        if(ExistParameter('d')) fprintf(stderr,"%s %d %s %s %lf\n",ACptr->Type,ACptr->Num,ACptr->Name,Qmax,val);
        ACptr->Qg=ACptr->Max;}
      else if (Qlim && ACptr->Qg<=ACptr->Min){
        count++; val=fabs((ACptr->Qg-ACptr->Min)/(Dx[i]*ACptr->Kbg));
        if(ExistParameter('d')) fprintf(stderr,"%s %d %s %s %lf\n",ACptr->Type,ACptr->Num,ACptr->Name,Qmin,val);
        ACptr->Qg=ACptr->Min;}
      else val=0;
      if (val>consp) consp=val;
    }
  }

  i=NacVar;
  for(DCptrR=dataPtr->DCbus;DCptrR!=NULL;DCptrR=DCptrR->Next){
    DCptrI=DCptrR->To;
    if(!strcmp(DCptrR->Type,"R")){
      for (j=1;j<=2;j++) {
        if (j==1) DCptr=DCptrR;
        else DCptr=DCptrI;
        if(strcmp(DCptr->Cont1,"VD")&&strcmp(DCptr->Cont2,"VD")) {
          i++; if (FlagLoadX0) x0[i]=DCptr->Vd;
          if (FlagUpdateVar) {
            DCptr->Vd=x0[i]+Dx[i];
            if (j==2 && ((DCptr->Tap>=DCptr->TapMax && DCptr->Vd>=DCptr->VdN)||
                (DCptr->Tap<=DCptr->TapMin && DCptr->Vd<=DCptr->VdN) ||
                (strpbrk(DCptr->Cont2,"IP")&&DCptr->Tap>DCptr->TapMin&&DCptr->Vd>=DCptr->VdN))){
              val=fabs((DCptr->Vd-DCptr->VdN)/Dx[i]);
              if(ExistParameter('d')) fprintf(stderr,"%s %s VdN %lf\n",DCptr->Type,DCptr->Name,val);
              DCptr->Vd=DCptr->VdN;}
            else val=0;
            if (val>consp) consp=val;
          }
        }
        if(strcmp(DCptr->Cont1,"AT")&&strcmp(DCptr->Cont2,"AT")) {
          i++; if (FlagLoadX0) x0[i]=DCptr->Tap*DCptr->Ntrf;
          if (FlagUpdateVar) {
            DCptr->Tap=(x0[i]+Dx[i])/DCptr->Ntrf;
            if (DCptr->Tap>=DCptr->TapMax){
              val=fabs(DCptr->Ntrf*(DCptr->Tap-DCptr->TapMax)/Dx[i]);
              if(ExistParameter('d')) fprintf(stderr,"%s %s Tmax %lf\n",DCptr->Type,DCptr->Name,val);
              DCptr->Tap=DCptr->TapMax;}
            else if (DCptr->Tap<=DCptr->TapMin){
              val=fabs(DCptr->Ntrf*(DCptr->Tap-DCptr->TapMin)/Dx[i]);
              if(ExistParameter('d')) fprintf(stderr,"%s %s Tmin %lf\n",DCptr->Type,DCptr->Name,val);
              DCptr->Tap=DCptr->TapMin;}
            else val=0;
            if (val>consp) consp=val;
          }
        }
        if(strcmp(DCptr->Cont1,"AL")&&strcmp(DCptr->Cont2,"AL")) {
          i++; if (FlagLoadX0) x0[i]=cos(DCptr->Alfa);
          if (FlagUpdateVar) {
            DCptr->val[0]=x0[i]+Dx[i];
            if (DCptr->val[0]<=cos(DCptr->AlfaMax)){
              val=fabs((DCptr->val[0]-cos(DCptr->AlfaMax))/Dx[i]);
              if(ExistParameter('d')) fprintf(stderr,"%s %s Amax %lf\n",DCptr->Type,DCptr->Name,val);
              DCptr->Alfa=DCptr->AlfaMax;}
            if (DCptr->val[0]>=cos(DCptr->AlfaMin)){
              val=fabs((DCptr->val[0]-cos(DCptr->AlfaMin))/Dx[i]);
              if(ExistParameter('d')) fprintf(stderr,"%s %s Amin %lf\n",DCptr->Type,DCptr->Name,val);
              DCptr->Alfa=DCptr->AlfaMin;}
            else if (j==1 && ((DCptr->Tap>=DCptr->TapMax && DCptr->val[0]<=cos(DCptr->AlfaN))||
                     (DCptr->Tap<=DCptr->TapMin && DCptr->val[0]>=cos(DCptr->AlfaN)))){
              val=fabs((DCptr->val[0]-cos(DCptr->AlfaN))/Dx[i]);
              if(ExistParameter('d')) fprintf(stderr,"%s %s Anom %lf\n",DCptr->Type,DCptr->Name,val);
              DCptr->Alfa=DCptr->AlfaN;}
            else { val=0; DCptr->Alfa=acos(DCptr->val[0]);}
            if (val>consp) consp=val;
          }
        }
        if(strcmp(DCptr->Cont1,"GA")&&strcmp(DCptr->Cont2,"GA")) {
          i++; if (FlagLoadX0) x0[i]=cos(DCptr->Gamma);
          if (FlagUpdateVar) {
            DCptr->val[0]=x0[i]+Dx[i];
            if (DCptr->val[0]>=cos(DCptr->GammaMin)){
              val=fabs((DCptr->val[0]-cos(DCptr->GammaMin))/Dx[i]);
              if(ExistParameter('d')) fprintf(stderr,"%s %s Gmin %lf\n",DCptr->Type,DCptr->Name,val);
              DCptr->Gamma=DCptr->GammaMin;}
            else { val=0; DCptr->Gamma=acos(DCptr->val[0]);}
            if (val>consp) consp=val;
          }
        }
        i++; if (FlagLoadX0) x0[i]=DCptr->MVA;
        if (FlagUpdateVar) DCptr->MVA=x0[i]+Dx[i];
        if(strcmp(DCptr->Cont1,"PA")&&strcmp(DCptr->Cont2,"PA")) {
          i++; if (FlagLoadX0) x0[i]=DCptr->P;
          if (FlagUpdateVar) DCptr->P=x0[i]+Dx[i];
        }
        if(strcmp(DCptr->Cont1,"QA")&&strcmp(DCptr->Cont2,"QA")) {
          i++; if (FlagLoadX0) x0[i]=DCptr->Q;
          if (FlagUpdateVar) DCptr->Q=x0[i]+Dx[i];
        }
      }
      if(strcmp(DCptrR->Cont1,"ID")&&strcmp(DCptrR->Cont2,"ID")&&
         strcmp(DCptrI->Cont1,"ID")&&strcmp(DCptrI->Cont2,"ID")) {
        i++; if (FlagLoadX0) x0[i]=DCptrR->Id;
        if (FlagUpdateVar) DCptrR->Id=DCptrI->Id=x0[i]+Dx[i];
      }
    }
  }
                            /* FACTS */
  i=NacVar+11*Ndc/2;
  for(SVCptr=dataPtr->SVCbus;SVCptr!=NULL;SVCptr=SVCptr->Next){
   i++; if(FlagLoadX0) x0[i]=SVCptr->Qsvc;
   if(FlagUpdateVar) SVCptr->Qsvc=x0[i]+Dx[i];
   i++; if(FlagLoadX0) x0[i]=SVCptr->Bv;
   if(FlagUpdateVar) SVCptr->Bv=x0[i]+Dx[i];
   if(!strcmp(SVCptr->Cont,"AL")){
     i++; if(FlagLoadX0) x0[i]=SVCptr->alpha_svc;
     if(FlagUpdateVar){
        SVCptr->val=x0[i]+Dx[i];
        if(SVCptr->val>=SVCptr->AlphaMax){
          val=fabs((SVCptr->val-SVCptr->AlphaMax)/Dx[i]);
          if(ExistParameter('d')) fprintf(stderr,"%s AlphaMax %lf\n",SVCptr->Name,val);
          SVCptr->alpha_svc=SVCptr->AlphaMax;}
        else if(SVCptr->val<=SVCptr->AlphaMin){
          val=fabs((SVCptr->val-SVCptr->AlphaMin)/Dx[i]);
          if(ExistParameter('d')) fprintf(stderr,"%s AlphaMin %lf\n",SVCptr->Name,val);
          SVCptr->alpha_svc=SVCptr->AlphaMin;}
        else {val=0;SVCptr->alpha_svc=SVCptr->val;}
        if (val>consp) consp=val;
     }
   }
   else if(!strcmp(SVCptr->Cont,"MN")){
     i++; if(FlagLoadX0) x0[i]=SVCptr->Vvar;
     if(FlagUpdateVar){
        SVCptr->val=x0[i]+Dx[i];
        if(SVCptr->val<=SVCptr->Vref){
          val=fabs((SVCptr->val-SVCptr->Vref)/Dx[i]);
          if(ExistParameter('d')) fprintf(stderr,"%s Vref_min %lf\n",SVCptr->Name,val);
          SVCptr->Vvar=SVCptr->Vref;}
        else {val=0;SVCptr->Vvar=SVCptr->val;}
        if (val>consp) consp=val;
     }
   }
   else {
     i++; if(FlagLoadX0) x0[i]=SVCptr->Vvar;
     if(FlagUpdateVar){
        SVCptr->val=x0[i]+Dx[i];
        if(SVCptr->val>=SVCptr->Vref){
          val=fabs((SVCptr->val-SVCptr->Vref)/Dx[i]);
          if(ExistParameter('d')) fprintf(stderr,"%s Vref_max %lf\n",SVCptr->Name,val);
          SVCptr->Vvar=SVCptr->Vref;}
        else {val=0;SVCptr->Vvar=SVCptr->val;}
        if (val>consp) consp=val;
     }
   }
  }

  i=NacVar+11*Ndc/2+3*Nsvc;
  for(TCSCptr=dataPtr->TCSCbus;TCSCptr!=NULL;TCSCptr=TCSCptr->Next){
   i++; if(FlagLoadX0) x0[i]=TCSCptr->Ptcsc;
   if(FlagUpdateVar) TCSCptr->Ptcsc=x0[i]+Dx[i];
   i++; if(FlagLoadX0) x0[i]=TCSCptr->Qtcsck;
   if(FlagUpdateVar) TCSCptr->Qtcsck=x0[i]+Dx[i];
   i++; if(FlagLoadX0) x0[i]=TCSCptr->Qtcscm;
   if(FlagUpdateVar) TCSCptr->Qtcscm=x0[i]+Dx[i];
   i++; if(FlagLoadX0) x0[i]=TCSCptr->Be;
   if(FlagUpdateVar) TCSCptr->Be=x0[i]+Dx[i];
   i++; if(FlagLoadX0) x0[i]=TCSCptr->alpha_tcsc;
   if(FlagUpdateVar){
     TCSCptr->val=x0[i]+Dx[i];
     if(TCSCptr->val>=TCSCptr->AlphaMax){
       val=fabs((TCSCptr->val-TCSCptr->AlphaMax)/Dx[i]);
       if(ExistParameter('d')) fprintf(stderr,"%s AlphaMax %lf\n",TCSCptr->Name,val);
       TCSCptr->alpha_tcsc=TCSCptr->AlphaMax;}
     else if(TCSCptr->val<=TCSCptr->AlphaMin){
       val=fabs((TCSCptr->val-TCSCptr->AlphaMin)/Dx[i]);
       if(ExistParameter('d')) fprintf(stderr,"%s AlphaMin %lf\n",TCSCptr->Name,val);
       TCSCptr->alpha_tcsc=TCSCptr->AlphaMin;}
     else {val=0; TCSCptr->alpha_tcsc=TCSCptr->val;}
     if (val>consp) consp=val;
   }
   i++; if(FlagLoadX0) x0[i]=TCSCptr->Itcsc;
   if(FlagUpdateVar) TCSCptr->Itcsc=x0[i]+Dx[i];
   i++; if(FlagLoadX0) x0[i]=TCSCptr->delta_t;
   if(FlagUpdateVar) TCSCptr->delta_t=x0[i]+Dx[i];
  }

  i=NacVar+11*Ndc/2+3*Nsvc+NtcscVar;
  for(STATCOMptr=dataPtr->STATCOMbus;STATCOMptr!=NULL;STATCOMptr=STATCOMptr->Next){
   Q=STATCOMptr->Q;
   if(!strcmp(STATCOMptr->Cont,"PW") || !strcmp(STATCOMptr->Cont,"AL")){
     i++; if(FlagLoadX0) x0[i]=STATCOMptr->I;
     if(FlagUpdateVar){
        STATCOMptr->val=x0[i]+Dx[i];
        if(STATCOMptr->val<=0){
          val=fabs((STATCOMptr->val-0.0001)/Dx[i]);
          if(ExistParameter('d')) fprintf(stderr,"%s Izero %lf\n",STATCOMptr->Name,val);
          STATCOMptr->I=0.0001;}
        else if (STATCOMptr->val>=STATCOMptr->Imax && Q>0){
          val=fabs((STATCOMptr->val-STATCOMptr->Imax)/Dx[i]);
          if(ExistParameter('d')) fprintf(stderr,"%s Imax %lf\n",STATCOMptr->Name,val);
          STATCOMptr->I=STATCOMptr->Imax;}
        else if(STATCOMptr->val>=STATCOMptr->Imin && Q<0){
          val=fabs((STATCOMptr->val-STATCOMptr->Imin)/Dx[i]);
          if(ExistParameter('d')) fprintf(stderr,"%s Imin %lf\n",STATCOMptr->Name,val);
          STATCOMptr->I=STATCOMptr->Imin;}
        else {val=0;STATCOMptr->I=STATCOMptr->val;}
        if (val>consp) consp=val;
     }
   }
   else if(!strcmp(STATCOMptr->Cont,"MX")){
     i++; if(FlagLoadX0) x0[i]=STATCOMptr->Vvar;
     if(FlagUpdateVar){
        STATCOMptr->val=x0[i]+Dx[i];
        if(STATCOMptr->val<=STATCOMptr->Vref){
          val=fabs((STATCOMptr->val-STATCOMptr->Vref)/Dx[i]);
          if(ExistParameter('d')) fprintf(stderr,"%s Vref_max %lf\n",STATCOMptr->Name,val);
          STATCOMptr->Vvar=STATCOMptr->Vref;}
        else {val=0;STATCOMptr->Vvar=STATCOMptr->val;}
        if (val>consp) consp=val;
     }
   }
   else {
     i++; if(FlagLoadX0) x0[i]=STATCOMptr->Vvar;
     if(FlagUpdateVar){
        STATCOMptr->val=x0[i]+Dx[i];
        if(STATCOMptr->val>=STATCOMptr->Vref){
          val=fabs((STATCOMptr->val-STATCOMptr->Vref)/Dx[i]);
          if(ExistParameter('d')) fprintf(stderr,"%s Vref_min %lf\n",STATCOMptr->Name,val);
          STATCOMptr->Vvar=STATCOMptr->Vref;}
        else {val=0;STATCOMptr->Vvar=STATCOMptr->val;}
        if (val>consp) consp=val;
     }
   }
   i++; if(FlagLoadX0) x0[i]=STATCOMptr->theta;
   if(FlagUpdateVar) STATCOMptr->theta=x0[i]+Dx[i];
   i++; if(FlagLoadX0) x0[i]=STATCOMptr->Vdc;
   if(FlagUpdateVar) STATCOMptr->Vdc=x0[i]+Dx[i];
   i++; if(FlagLoadX0) x0[i]=STATCOMptr->k;
   if(FlagUpdateVar) STATCOMptr->k=x0[i]+Dx[i];
   i++; if(FlagLoadX0) x0[i]=STATCOMptr->alpha;
   if(FlagUpdateVar) STATCOMptr->alpha=x0[i]+Dx[i];
   i++; if(FlagLoadX0) x0[i]=STATCOMptr->P;
   if(FlagUpdateVar) STATCOMptr->P=x0[i]+Dx[i];
   i++; if(FlagLoadX0) x0[i]=STATCOMptr->Q;
   if(FlagUpdateVar) STATCOMptr->Q=x0[i]+Dx[i];
  }
                        /* END FACTS */

  if (consp>1) consp=1;

  if(Ptr!=NULL) {
    BlPtr=Ptr; DxiMax=fabs(valp/Dparam);
    if(ExistParameter('d')) fprintf(stderr,"%s %d %s Dx=%lf Max.dx_i=%lf\n",Ptr->Type,Ptr->Num,Ptr->Name,Dx[ACvar[Ptr->N]+1],DxiMax);
  }
/*  if (FlagLoadX0 && ExistParameter('d') && DxZero!=NULL && NewNumEq<Jac->n1-1) {
      for(i=1;i<=Jac->n1-1;i++) {if (DxZero[i]) fprintf(stderr,"%d ",i);}
      fprintf(stderr,"\n",i);
    } */
  if (FlagMakeDxZero) return(consp);
  else return(count);
}

⌨️ 快捷键说明

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