📄 readieee.c
字号:
} if(Eptr->Tmax==Eptr->Tmin) { strcpy(Eptr->Type,"T"); Eptr->Tmax=Eptr->Tmin=0; } else if (strcmp(ACptrs->Type,"BG") && strcmp(ACptrs->Type,"BQ") ) { NregV++; ACptrs->Reg=(ElementList *) AddElemToList(ACptrs->Reg,Eptr); Eptr->Cont=ACptrs; Eptr->Min=GetValue(Line,113,7,5); Eptr->Max=GetValue(Line,120,7,5); if(Eptr->Max<0) Eptr->Max=1.; if(Eptr->Min<0) Eptr->Min=1.; if(Eptr->Max<Eptr->Min) { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); ErrorHalt("LTC limits are wrong: Vmin > Vmax."); } if(Eptr->Max==Eptr->Min) { strcpy(Eptr->Type,"R"); strcpy(ACptrs->Type,"BT"); ACptrs->V=Eptr->Max; if (ACptrs->V==0) ACptrs->V=1.; Eptr->Max=Eptr->Min=0; } else { strcpy(Eptr->Type,"RV"); if (strcmp(ACptrs->Type,"BT")) strcpy(ACptrs->Type,"BR"); if(ACptrs->Vmax>Eptr->Max||ACptrs->Vmax==0) ACptrs->Vmax=Eptr->Max; if(ACptrs->Vmin>Eptr->Min||ACptrs->Vmin==0) { ACptrs->Vmin=Eptr->Min; if (ACptrs->Vmin==0) ACptr->Vmin=0.00001; } } } else { strcpy(Eptr->Type,"T"); Eptr->Tmax=Eptr->Tmin=0; fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); fCustomPrint(stderr,"***Warning: The controlled bus of this LTC is not PQ (check BUS DATA cards).\n"); fCustomPrint(stderr," It will be treated as a fixed tap transformer.\n"); } } else if(k==3) { Eptr->Tmin=GetValue(Line,91,7,2); Eptr->Tmax=GetValue(Line,98,7,2); if(Eptr->Tmax<0) Eptr->Tmax=1.1; if(Eptr->Tmin<0) Eptr->Tmin=0.9; if(Eptr->Tmax<Eptr->Tmin) { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); ErrorHalt("LTC limits are wrong: Tmin > Tmax."); } if(Eptr->Tmax==Eptr->Tmin) { strcpy(Eptr->Type,"T"); Eptr->Tmin=Eptr->Tmax=0; } else { NregPQ++; if (ACptrs!=ACptr && ACptrs!=ACptrp) ACptrs=ACptr; ACptrs->Reg=(ElementList *) AddElemToList(ACptrs->Reg,Eptr); Eptr->Cont=ACptrs; Eptr->Min=GetValue(Line,113,7,5)/Sn; Eptr->Max=GetValue(Line,120,7,5)/Sn; if(Eptr->Max<Eptr->Min) { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); ErrorHalt("LTC limits are wrong: Qmin > Qmax."); } if(Eptr->Max==Eptr->Min) { strcpy(Eptr->Type,"RQ"); Eptr->Cvar=Eptr->Max; Eptr->Max=Eptr->Min=0; } else strcpy(Eptr->Type,"RN"); Eptr->Ncont=ACptrs->Ncont; ACptrs->Ncont++; } } else if(k==4) { Eptr->Tmin=GetValue(Line,91,7,2)*K3; Eptr->Tmax=GetValue(Line,98,7,2)*K3; if(Eptr->Tmax<Eptr->Tmin) { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); ErrorHalt("LTC limits are wrong: Tmin > Tmax."); } if(Eptr->Tmax==Eptr->Tmin){ strcpy(Eptr->Type,"T"); Eptr->Tmin=Eptr->Tmax=0; } else { NregPQ++; if (ACptrs!=ACptr && ACptrs!=ACptrp) ACptrs=ACptr; ACptrs->Reg=(ElementList *) AddElemToList(ACptrs->Reg,Eptr); Eptr->Cont=ACptrs; Eptr->Min=GetValue(Line,113,7,5)/Sn; Eptr->Max=GetValue(Line,120,7,5)/Sn; if(Eptr->Max<Eptr->Min) { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); ErrorHalt("LTC limits are wrong: Pmin > Pmax."); } if(Eptr->Max==Eptr->Min) { strcpy(Eptr->Type,"RP"); Eptr->Cvar=Eptr->Max; Eptr->Max=Eptr->Min=0; } else strcpy(Eptr->Type,"RM"); Eptr->Ncont=ACptrs->Ncont; ACptrs->Ncont++; } } } } /* -------------------- Area data -------------------------------- */ else if(!strncmp(Line,"INTERCHANGE DATA",11)) for(;;){ AreaIntData: if (fgets(Line,BUFLEN,InputDataFile)==NULL){ ErrorHalt("Missing -9 card in INTERCHANGE DATA."); break; } LineNum++; if(Line[0]=='%') goto AreaIntData; if(!strncmp(Line,"-9",2)) break; flag=TRUE; i=GetInt(Line,1,NumAreaDigits); Aptr=(AreaData *) AreaInList(i,"",Narea); if (Aptr->N==0) { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); ErrorHalt("The Area does not contain any buses (check BUS DATA cards)."); } GetStr(Line,46,30,30,Name); for (j=0;j<=29;j++) { if (Name[j]!=' ') break; if (j==29) empty=TRUE; } if (empty||(strpbrk(Name,"0")&&strlen(Name)==1)) { empty=FALSE; strcpy(Name,"AREA_"); GetStr(Line,1,4,4,str); for(j=0;j<=3;j++) if(str[j]!=' ') break; strcat(Name,&str[j]); for(j=strlen(Name);j<=29;Name[j]=' ',j++); Name[30]='\0'; } strcpy(Aptr->Name,Name); i=GetInt(Line,4,NumBusDigits); ACptr=(ACbusData *) ACbusInList(i,"",0.,Nac,1); if (ACptr->N==0) { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); ErrorHalt("The area slack bus has not been defined (check BUS DATA cards)."); } if (ACptr->Area!=Aptr) { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); ErrorHalt("The slack bus is not in the area (check BUS DATA cards)."); } Aptr->Slack=Aptr->BSptr=ACptr; Aptr->P=GetValue(Line,21,8,1)/Sn; } /* -------------------- Tie Lines data -------------------------------- */ else if(!strncmp(Line,"TIE LINE DATA",3)) for(;;){ TieLineData: if (fgets(Line,BUFLEN,InputDataFile)==NULL){ ErrorHalt("Missing -999 card in TIE LINE DATA."); break; } LineNum++; if(Line[0]=='%') goto TieLineData; if(!strncmp(Line,"-999",4)) break; i=GetInt(Line,1,NumBusDigits); ACptr=(ACbusData *) ACbusInList(i,"",0.,Nac,1); if (ACptr->N==0) { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); ErrorHalt("The metered bus has not been defined (check BUS DATA cards)."); } i=GetInt(Line,11,NumBusDigits); ACptrp=(ACbusData *) ACbusInList(i,"",0.,Nac,1); if (ACptrp->N==0) { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); ErrorHalt("The nonmetered bus has not been defined (check BUS DATA cards)."); } GetStr(Line,CircData,1,1,str); for(ELptr=ACptr->Elem;ELptr!=NULL;ELptr=ELptr->Next){ Eptr=ELptr->Eptr; if (((Eptr->From==ACptr && Eptr->To==ACptrp)|| (Eptr->From==ACptrp && Eptr->To==ACptr))&& !strcmp(Eptr->Ckt,str)) break; } if (ELptr!=NULL) { if (Eptr->Meter==NULL) Eptr->Meter=ACptr; else { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); fCustomPrint(stderr,"***Warning: This tie line was already defined (check circuit code).\n"); } } else { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); fCustomPrint(stderr,"***Warning: This element has not been defined (check BRANCH DATA cards).\n"); } } /* -------------------- DC data -------------------------------- */ else if (!strncmp(Line,"BD ",3) || !strncmp(Line,"BZ ",3)|| !strncmp(Line,"LD ",3)) ReadEPRIdc(Line); /* FACTS */ /* ---------------------- SVC data ------------------------ */ else if (!strncmp(Line,"FS ",3)) ReadSVC(Line); /* ---------------------- TCSC data ------------------------ */ else if (!strncmp(Line,"FC ",3)) ReadTCSC(Line); /* ---------------------- STATCOM data ------------------------ */ else if (!strncmp(Line,"FT ",3)) ReadSTATCOM(Line); /* END FACTS */ else if(!strncmp(Line,"END OF DATA",11)) break; else if(flagp && Line[0]!='C' ) { fCustomPrint(stderr,"Input Line-> %d\n%s",LineNum,Line); fCustomPrint(stderr,"***Warning: The program will ignore this line.\n"); } } fclose(InputDataFile); if (!flag) { Narea=0; for(ACptr=dataPtr->ACbus;ACptr!=NULL;ACptr->Area=NULL,ACptr=ACptr->Next); } MaxIter=50; for (ACptr=dataPtr->ACbus;ACptr!=NULL;ACptr=ACptr->Next) if(strpbrk(ACptr->Type,"G")){ ACptrp=(ACbusData *) ACbusInList(ACptr->Nc,"",0.,Nac,1); if (ACptrp->N==0) { fCustomPrint(stderr,"Error: The voltage controlled bus %d %s\n",ACptrp->Num,ACptrp->Name); fCustomPrint(stderr," has not been defined. Check AC bus data.\n"); /*WriteSummary(); exit(ERROREXIT);*/ InputError=TRUE; } if(!strcmp(ACptrp->Type,"B")) strcpy(ACptrp->Type,"BC"); else if(strcmp(ACptrp->Type,"BC")) { fCustomPrint(stderr,"Error: The voltage controlled bus %d %s\n",ACptrp->Num,ACptrp->Name); fCustomPrint(stderr," is not a PQ bus. Check AC bus data.\n"); /*WriteSummary(); exit(ERROREXIT);*/ InputError=TRUE; } ACptr->Cont=ACptrp; ACptrp->VCont=ACptrp->V=ACptr->VCont; ACptrp->Cont=NULL; ACptrp->Kbg++; if (flag2Vcontrol) { ACptrp->Kbg1=ACptrp->Kbg1+ACptr->Qmax; ACptrp->Kbg2=ACptrp->Kbg2+ACptr->Qmin; } if(ACptrp->Kbg>1) { if (!flag2Vcontrol) { fCustomPrint(stderr,"***Warning: The IEEE common format assumes that multiple generators\n"); fCustomPrint(stderr," controlling voltage at bus %d %s\n",ACptrp->Num,ACptrp->Name); fCustomPrint(stderr," share equally the control.\n"); } fCustomPrint(stderr,"***Warning: The program will use the first generator controlling bus \n"); fCustomPrint(stderr," to define the remote voltage at bus %d %s\n",ACptrp->Num,ACptrp->Name); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -