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

📄 readinit.c

📁 电力系统分析计算 学习调试程序 UNIX / LINUX / CYGWIN 系统使用
💻 C
📖 第 1 页 / 共 2 页
字号:
                 */                 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 + -