📄 readinit.c
字号:
*/ if (IaMax<=0) { fCustomPrint(stderr,"***Warning: The generator steady-state data for bus:%s\n",ACptr->Name); fCustomPrint(stderr," has IaxMax<=0. The program will force IaMax=9999999999.\n"); IaMax=9999999999.; } ACptr->Gen->IaMax=IaMax; if (EqMax<=0) { fCustomPrint(stderr,"***Warning: The generator steady-state data for bus:%s\n",ACptr->Name); fCustomPrint(stderr," has EqMax<=0. The program will force EqMax=9999999999.\n"); EqMax=9999999999.; } ACptr->Gen->EqMax=EqMax; if (EqMin>EqMax || EqMin<0) { fCustomPrint(stderr,"***Warning: The generator steady-state data for bus:%s\n",ACptr->Name); fCustomPrint(stderr," has EqMin>EqMax or EqMin<0. The program will force EqMin=0.\n"); EqMax=0.; } ACptr->Gen->EqMin=EqMin; V=ACptr->V; d=ACptr->Ang; Pg=ACptr->Pg; Qg=ACptr->Qg; Vr=V*cos(d); Vi=V*sin(d); Ir=(Vr*Pg+Vi*Qg)/(V*V); Ii=(Vi*Pg-Vr*Qg)/(V*V); Ia=sqrt(Ir*Ir+Ii*Ii); if (Ia>IaMax) Ia=IaMax; else if (Ia==0) Ia=1.; apr=Vr-Xq*Ii; api=Vi+Xq*Ir; dg=atan2(api,apr); Vq=cos(dg)*Vr+sin(dg)*Vi; Vd=-sin(dg)*Vr+cos(dg)*Vi; Iq=cos(dg)*Ir+sin(dg)*Ii; Id=-sin(dg)*Ir+cos(dg)*Ii; Eq=Vq-Xd*Id; if (Eq>EqMax) Eq=EqMax; else if (Eq<EqMin) Eq=EqMin; ACptr->Gen->Eq=Eq; ACptr->Gen->dg=dg; ACptr->Gen->Vr=Vr; ACptr->Gen->Vi=Vi; ACptr->Gen->Ir=Ir; ACptr->Gen->Ii=Ii; ACptr->Gen->Vd=Vd; ACptr->Gen->Vq=Vq; ACptr->Gen->Id=Id; ACptr->Gen->Iq=Iq; ACptr->Gen->Ia=Ia; Ngen++; } } } else ACptr=NULL; if (ACptr==NULL) { fCustomPrint(stderr,"***Warning: Line-> %s",Line); fCustomPrint(stderr," will be ignored in file %s.\n",Name); } } } fclose(InputFile); } /* -------------------- Read OH Load Model --------------------- */ if (!ReadOHload(NameParameter('D'))) { if (!NullName(NameParameter('D'))) { fCustomPrint(stderr,"Error in file %s. The program will assume constant\n",NameParameter('D')); fCustomPrint(stderr,"P-Q load models.\n"); } if (!flagVloads) for(ACptr=dataPtr->ACbus;ACptr!=NULL;ACptr=ACptr->Next) { ACptr->Pn=ACptr->Pl; ACptr->a=ACptr->Pz=0; ACptr->Qn=ACptr->Ql; ACptr->b=ACptr->Qz=0; } } /* -------------------- Voltage/Lambda Options -------------------- */ Bl=0; if (ExistParameter('v')) { RealParameter('v',&V,0.0,10.0); if (V>0.001) { ACptr=NULL; N=IntegerParameter('B',0,0,9999); if (N) { for(ACptr=dataPtr->ACbus;ACptr!=NULL;ACptr=ACptr->Next) if((!strcmp(ACptr->Type,"B")||!strcmp(ACptr->Type,"BA")) && ACptr->Num==N) break; if (ACptr==NULL) { fCustomPrint(stderr,"***Warning: The program will ignore the number in -B option (not a PQ bus).\n"); } } if (ACptr==NULL) { for(ACptr=dataPtr->ACbus;ACptr!=NULL;ACptr=ACptr->Next) if(!strcmp(ACptr->Type,"B")||!strcmp(ACptr->Type,"BA")) break; } if (ACptr!=NULL) { BlPtr=ACptr; BlPtr->V=V; return(TRUE); } else { fCustomPrint(stderr,"***Warning: The program will ignore the -v option (there is no PQ bus).\n"); } } else { fCustomPrint(stderr,"***Warning: The program will ignore the -v option (mag=0).\n"); } } return(FALSE);}/* --------------------- ReadOHload ---------------------------------- */#ifdef ANSIPROTOBOOLEAN ReadOHload(char *File)#elseBOOLEAN ReadOHload(File)char *File;#endif /* Read Ontatio Hydro load model using SSSP (OH) format. */{ ACbusData *ACptr; FILE *Input; char Line[BUFLEN],Name[13]; int LineNum=0; BOOLEAN flag=FALSE,flagp=FALSE; INDEX Num,NA,Nlow,Nhigh; VALUETYPE Pn,Pz,Qn,Qz,a,b,MinMW,MinMVAR; if (!NullName(File) && (Input=OpenInput(File))!=NULL) { for (ACptr=dataPtr->ACbus;ACptr!=NULL;ACptr=ACptr->Next) { ACptr->Pn=0; ACptr->Pz=1; ACptr->a=0; ACptr->Qn=0; ACptr->Qz=1; ACptr->b=0; } for(;;){ /* Reading Loop */ if (fgets(Line,BUFLEN,Input)==NULL) { ErrorHalt("Missing NLBS, EDATA, or END cards on OH load data file."); fclose(Input); return(FALSE); } LineNum++; /* -------------- Comments ------------- */ if (!strncmp(Line,"!",1) || !strncmp(Line,"C",1) ) continue; /* ------------ OH load Model ---------- */ else if (!strncmp(Line," NLBS",5)) flag=TRUE; else if (flag && (!strncmp(Line,"EDATA",5) || !strncmp(Line," END",5))) break; else if (flag) { GetStr(Line,1,12,12,Name); Num=GetInt(Line,1,5); if (strncmp(Name,"50000",5) && strncmp(Name,"60000",5)) { /* -------------- Definition of each bus ------------- */ for (ACptr=dataPtr->ACbus;ACptr!=NULL;ACptr=ACptr->Next) { if(!strncmp(ACptr->Name,Name,strlen(Name))){ flagp=TRUE; ACptr->Pn=(VALUETYPE) GetInt(Line,13,5)/100.0; ACptr->Pz=1-ACptr->Pn; ACptr->a=GetValue(Line,23,10,5); ACptr->Qn=(VALUETYPE) GetInt(Line,18,5)/100.0; ACptr->Qz=1-ACptr->Qn; ACptr->b=GetValue(Line,33,10,5); break; } else if(Num==ACptr->Num) { flagp=TRUE; ACptr->Pn=(VALUETYPE) GetInt(Line,6,5)/100.0; ACptr->Pz=1-ACptr->Pn; ACptr->a=GetValue(Line,16,10,5); ACptr->Qn=(VALUETYPE) GetInt(Line,11,5)/100.0; ACptr->Qz=1-ACptr->Qn; ACptr->b=GetValue(Line,26,10,5); break; } } if (ACptr==NULL) { fCustomPrint(stderr,"***Warning: Line #%d-> %s",LineNum,Line); fCustomPrint(stderr," will be ignored in file %s.\n",File); } } /* -------------- Definition of buses by range ------------------- */ else { Pn=(VALUETYPE) GetInt(Line,6,5)/100.0; Pz=1-Pn; a=GetValue(Line,16,10,5); Qn=(VALUETYPE) GetInt(Line,11,5)/100.0; Qz=1-Qn; b=GetValue(Line,26,10,5); LineNum++; if (fgets(Line,BUFLEN,Input)==NULL || !strncmp(Line,"EDATA",5) || !strncmp(Line," END",5)) { fCustomPrint(stderr,"Range card is missing in line #%d of file %s.\n",LineNum,File); fclose(Input); return(FALSE); } NA=GetInt(Line,1,5); if (!strncmp(Name,"50000",5) && Narea<=1 ) { fCustomPrint(stderr,"***Warning: Area %d doen't exist (line #%d of file %s).\n",NA,LineNum,File); fCustomPrint(stderr," The program will assume these data for all system loads.\n"); } Nlow=GetInt(Line,6,5); if (Nlow<=0) Nlow=1; Nhigh=GetInt(Line,11,5); if (Nhigh<=0) Nhigh=INT_MAX; MinMW=GetValue(Line,16,10,5); MinMW=MinMW/Sn; MinMVAR=GetValue(Line,26,10,5); MinMVAR=MinMVAR/Sn; for (ACptr=dataPtr->ACbus;ACptr!=NULL;ACptr=ACptr->Next) { if (!strncmp(Name,"60000",5) || Narea<=1 || ACptr->Area->N==NA) { flagp=TRUE; if (ACptr->Num<=Nhigh && ACptr->Num>=Nlow) { if (ACptr->Pl>MinMW) { ACptr->Pn=Pn; ACptr->Pz=Pz; ACptr->a=a; } if (ACptr->Ql>MinMVAR) { ACptr->Qn=Qn; ACptr->Qz=Qz; ACptr->b=b; } } } } } } } fclose(Input); } return(flagp);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -