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

📄 update.c

📁 电力系统分析计算 学习调试程序 UNIX / LINUX / CYGWIN 系统使用
💻 C
📖 第 1 页 / 共 2 页
字号:
        ACptrp=ACptr->ContBus->AC;        if (j==0) ACptr->val=ACptr->V;        ACptr->val=ACptr->val+cons*dx[k+1];        if (ACptr->val<=0) ACptr->V=0.00001;        else if (strpbrk(ACptrp->cont,"Q")) {          if (Recover && ACptrp->Qg>=ACptrp->Max && ACptr->val>ACptr->VCont && Limits)      ACptr->V=ACptr->VCont;          else if (Recover && ACptrp->Qg<=ACptrp->Min && ACptr->val<ACptr->VCont && Limits) ACptr->V=ACptr->VCont;          else                                                                              ACptr->V=ACptr->val;        }        else if (strpbrk(ACptrp->cont,"E")) {          if (Recover && ACptrp->Gen->Eq>=ACptrp->Gen->EqMax && ACptr->val>ACptr->VCont && Limits)      ACptr->V=ACptr->VCont;          else if (Recover && ACptrp->Gen->Eq<=ACptrp->Gen->EqMin && ACptr->val<ACptr->VCont && Limits) ACptr->V=ACptr->VCont;          else                                                                                          ACptr->V=ACptr->val;        }        else if (strpbrk(ACptrp->cont,"I")) {          if (Recover && ACptrp->Gen->Ia>=ACptrp->Gen->IaMax && ACptr->val>ACptr->VCont && Limits) ACptr->V=ACptr->VCont;          else                                                                                     ACptr->V=ACptr->val;        }        else ACptr->V=ACptr->val;      }      else        ACptr->Qr=ACptr->Qr+cons*dx[k+1];    }    else if (strpbrk(ACptr->Type,"R")) {      k=ACvar[ACptr->N];      ACptr->Ang=ACptr->Ang+cons*dx[k];      if (j==0) ACptr->val=ACptr->V;      ACptr->val=ACptr->val+cons*dx[k+1];      if (Rcont && ACptr->val>ACptr->Vmax && Limits)      ACptr->V=ACptr->Vmax;      else if (Rcont && ACptr->val<ACptr->Vmin && Limits) ACptr->V=ACptr->Vmin;      else if (ACptr->val<=0)                             ACptr->V=0.00001;      else                                                ACptr->V=ACptr->val;    }    else if (strpbrk(ACptr->Type,"T")){      k=ACvar[ACptr->N];      ACptr->Ang=ACptr->Ang+cons*dx[k];      if (Rcont) {        for(ELptr=ACptr->Reg;ELptr!=NULL;ELptr=ELptr->Next){          Eptr=ELptr->Eptr;          if (!strcmp(Eptr->Type,"R")) {            if (j==0) Eptr->val=Eptr->Tap;            Eptr->val=Eptr->val+cons*dx[k+1];            if (Tlim && Eptr->val<1/Eptr->Tmax+0.00001 && Limits) Eptr->Tap=1/Eptr->Tmax;            else if (Tlim && Eptr->val>1/Eptr->Tmin-0.00001 && Limits) Eptr->Tap=1/Eptr->Tmin;            else Eptr->Tap=Eptr->val;          }        }      } else {        if (j==0) ACptr->val=ACptr->V;        ACptr->val=ACptr->val+cons*dx[k+1];        if (ACptr->val<=0) ACptr->V=0.00001;        else ACptr->V=ACptr->val;      }    }    if (PQcont) for(ELptr=ACptr->Reg;ELptr!=NULL;ELptr=ELptr->Next) {      Eptr=ELptr->Eptr;      if(strpbrk(Eptr->Type,"PQMN")) {        k=ACvar[ACptr->N]+1;        if(Acont && strpbrk(ACptr->Type,"A")) k=k+1;        k=k+Eptr->Cont->Ncont-Eptr->Ncont;        if (!strcmp(Eptr->Type,"RP")) {          if (j==0) Eptr->val=Eptr->Ang;          Eptr->val=Eptr->val+cons*dx[k];          if (Tlim && Eptr->val>Eptr->Tmax && Limits) Eptr->Ang=Eptr->Tmax;          else if (Tlim && Eptr->val<Eptr->Tmin && Limits) Eptr->Ang=Eptr->Tmin;          else Eptr->Ang=Eptr->val;        }        else if (!strcmp(Eptr->Type,"RQ")) {          if (j==0) Eptr->val=Eptr->Tap;          Eptr->val=Eptr->val+cons*dx[k];          if (Tlim && Eptr->val<1/Eptr->Tmax+0.00001 && Limits) Eptr->Tap=1/Eptr->Tmax;          else if (Tlim && Eptr->val>1/Eptr->Tmin-0.00001 && Limits) Eptr->Tap=1/Eptr->Tmin;          else Eptr->Tap=Eptr->val;        }        else if (strpbrk(Eptr->Type,"MN")) {          if (j==0) Eptr->val=Eptr->Cvar;          Eptr->val=Eptr->val+cons*dx[k];          if (PQlim && Eptr->val>Eptr->Max && Limits) Eptr->Cvar=Eptr->Max;          else if (PQlim && Eptr->val<Eptr->Min && Limits) Eptr->Cvar=Eptr->Min;          else Eptr->Cvar=Eptr->val;        }        else Eptr->Cvar=Eptr->Cvar+cons*dx[k];      }    }    if (ACptr->Gen!=NULL) {      k=ACptr->Gen->Nvar;      if (!strpbrk(ACptr->cont,"E")) {        if (j==0) ACptr->vals=ACptr->Gen->Eq;        ACptr->vals=ACptr->vals+cons*dx[k+1];        if (Elim && ACptr->vals>ACptr->Gen->EqMax && Limits)      ACptr->Gen->Eq=ACptr->Gen->EqMax;        else if (Elim && ACptr->vals<ACptr->Gen->EqMin && Limits) ACptr->Gen->Eq=ACptr->Gen->EqMin;        else if (ACptr->vals<=0)                                  ACptr->Gen->Eq=0.00001;        else                                                      ACptr->Gen->Eq=ACptr->vals;      }      else {        if (j==0) ACptr->vals=ACptr->Qg;        ACptr->vals=ACptr->vals+cons*dx[k+1];        if (strpbrk(ACptr->Type,"V")) {          if (Recover && ACptr->Gen->Eq>=ACptr->Gen->EqMax && ACptr->vals>ACptr->VCont && Limits)      ACptr->Qg=ACptr->VCont;          else if (Recover && ACptr->Gen->Eq<=ACptr->Gen->EqMin && ACptr->vals<ACptr->VCont && Limits) ACptr->Qg=ACptr->VCont;          else                                                                                         ACptr->Qg=ACptr->vals;        }        else {          if (Qlim && ACptr->vals>ACptr->Max && Limits)      ACptr->Qg=ACptr->Max;          else if (Qlim && ACptr->vals<ACptr->Min && Limits) ACptr->Qg=ACptr->Min;          else                                               ACptr->Qg=ACptr->vals;        }      }      ACptr->Gen->dg=ACptr->Gen->dg+cons*dx[k+2];      ACptr->Gen->Vr=ACptr->Gen->Vr+cons*dx[k+3];      ACptr->Gen->Vi=ACptr->Gen->Vi+cons*dx[k+4];      ACptr->Gen->Ir=ACptr->Gen->Ir+cons*dx[k+5];      ACptr->Gen->Ii=ACptr->Gen->Ii+cons*dx[k+6];      ACptr->Gen->Vq=ACptr->Gen->Vq+cons*dx[k+7];      ACptr->Gen->Vd=ACptr->Gen->Vd+cons*dx[k+8];      ACptr->Gen->Iq=ACptr->Gen->Iq+cons*dx[k+9];      ACptr->Gen->Id=ACptr->Gen->Id+cons*dx[k+10];      if (!strpbrk(ACptr->cont,"I")) {        if (j==0) ACptr->valt=ACptr->Gen->Ia;        ACptr->valt=ACptr->valt+cons*dx[k+11];        if (Ilim && ACptr->valt>ACptr->Gen->IaMax && Limits) ACptr->Gen->Ia=ACptr->Gen->IaMax;        else if (ACptr->valt<=0)                             ACptr->Gen->Ia=0.00001;        else                                                 ACptr->Gen->Ia=ACptr->valt;      }      else {        if (j==0) ACptr->valt=ACptr->Qg;        ACptr->valt=ACptr->valt+cons*dx[k+11];        if (strpbrk(ACptr->Type,"V")) {          if (Recover && ACptr->Gen->Ia>=ACptr->Gen->IaMax && ACptr->valt>ACptr->VCont && Limits) ACptr->Qg=ACptr->VCont;          else                                                                                    ACptr->Qg=ACptr->valt;        }        else {          if (Qlim && ACptr->valt>ACptr->Max && Limits)      ACptr->Qg=ACptr->Max;          else if (Qlim && ACptr->valt<ACptr->Min && Limits) ACptr->Qg=ACptr->Min;          else                                               ACptr->Qg=ACptr->valt;        }      }    }  }  for (ACptr=dataPtr->ACbus; ACptr!=NULL; ACptr=ACptr->Next) {    if (QRcont && strpbrk(ACptr->Type,"G")  && strpbrk(ACptr->cont,"V")){      k=ACvar[ACptr->Cont->N];      if (ACptr->Cont->Qr>=0) ACptr->Kbg=ACptr->Kbg1;      else                    ACptr->Kbg=ACptr->Kbg2;      ACptr->valp=ACptr->Kbg*ACptr->Cont->Qr;      if (Qlim && ACptr->valp>ACptr->Max && Limits)      ACptr->Qg=ACptr->Max;      else if (Qlim && ACptr->valp<ACptr->Min && Limits) ACptr->Qg=ACptr->Min;      else                                               ACptr->Qg=ACptr->valp;    }  }  if (flagH && !Bl) lambda=lambda+cons*dx[Jac->n1];}/* -----------------UpdateDCvar ---------------------------- */#ifdef ANSIPROTOvoid UpdateDCvar(VALUETYPE cons,INDEX j,BOOLEAN Limits)#elsevoid UpdateDCvar(cons,j,Limits)VALUETYPE cons;INDEX j;BOOLEAN Limits;#endif{  DCbusData *DCptrR,*DCptrI,*DCptr;  INDEX i,k,m;  k=NacVar;  for (DCptrR=dataPtr->DCbus;DCptrR!=NULL;DCptrR=DCptrR->Next){    DCptrI=DCptrR->To;    if (!strcmp(DCptrR->Type,"R")){      for (m=1;m<=2;m++) {        i= -1;        if(m==1) DCptr=DCptrR;        else DCptr=DCptrI;        if (strcmp(DCptr->Cont1,"VD") && strcmp(DCptr->Cont2,"VD")){          i++;          if (j==0) DCptr->val[i]=DCptr->Vd;          DCptr->val[i]=DCptr->val[i]+cons*dx[++k];          if (DCptr->VdN && ((DCptr->Tap>=DCptr->TapMax && DCptr->val[i]>DCptr->VdN)||              (DCptr->Tap<=DCptr->TapMin && DCptr->val[i]<DCptr->VdN) ||              (strpbrk(DCptr->Cont1,"IP")&&DCptr->Tap>DCptr->TapMin&&DCptr->val[i]>DCptr->VdN)))             DCptr->Vd=DCptr->VdN;          else DCptr->Vd=DCptr->val[i];}        if (strcmp(DCptr->Cont1,"AT") && strcmp(DCptr->Cont2,"AT")){          i++;          if (j==0) DCptr->val[i]=DCptr->Tap;          DCptr->val[i]=DCptr->val[i]+cons*dx[++k]/DCptr->Ntrf;          if (DCptr->val[i]>DCptr->TapMax && Limits) DCptr->Tap=DCptr->TapMax;          else if (DCptr->val[i]<DCptr->TapMin && Limits) DCptr->Tap=DCptr->TapMin;          else DCptr->Tap=DCptr->val[i];}        if (strcmp(DCptr->Cont1,"AL") && strcmp(DCptr->Cont2,"AL")){          i++;          if (j==0) DCptr->val[i]=cos(DCptr->Alfa);          DCptr->val[i]=DCptr->val[i]+cons*dx[++k];          if (DCptr->val[i]<cos(DCptr->AlfaMax)) DCptr->Alfa=DCptr->AlfaMax;          else if (DCptr->val[i]>cos(DCptr->AlfaMin)) DCptr->Alfa=DCptr->AlfaMin;          else if (DCptr->AlfaN && ((DCptr->Tap>=DCptr->TapMax && DCptr->val[i]<cos(DCptr->AlfaN))||                   (DCptr->Tap<=DCptr->TapMin && DCptr->val[i]>cos(DCptr->AlfaN)))) DCptr->Alfa=DCptr->AlfaN;          else DCptr->Alfa=acos(DCptr->val[i]);}        if (strcmp(DCptr->Cont1,"GA") && strcmp(DCptr->Cont2,"GA")){          i++;          if (j==0) DCptr->val[i]=cos(DCptr->Gamma);          DCptr->val[i]=DCptr->val[i]+cons*dx[++k];          if (fabs(DCptr->val[i])>cos(DCptr->GammaMin)) DCptr->Gamma=DCptr->GammaMin;          else DCptr->Gamma=acos(DCptr->val[i]);}        DCptr->MVA=DCptr->MVA+cons*dx[++k];        if (strcmp(DCptr->Cont1,"PA") && strcmp(DCptr->Cont2,"PA"))          DCptr->P=DCptr->P+cons*dx[++k];        if (strcmp(DCptr->Cont1,"QA") && strcmp(DCptr->Cont2,"QA"))          DCptr->Q=DCptr->Q+cons*dx[++k];      }      if (strcmp(DCptrR->Cont1,"ID") && strcmp(DCptrR->Cont2,"ID") &&          strcmp(DCptrI->Cont1,"ID") && strcmp(DCptrI->Cont2,"ID"))        DCptrI->Id=DCptrR->Id=DCptrR->Id+cons*dx[++k];    }  }}

⌨️ 快捷键说明

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