📄 homotloa.c
字号:
} } 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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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')) fCustomPrint(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]) fCustomPrint(stderr,"%d ",i);} fCustomPrint(stderr,"\n",i); } */ if (FlagMakeDxZero) return(consp); else return(count);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -