📄 homotloa.cpp
字号:
}
}
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 + -