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

📄 readbasf.cpp

📁 用于电力系统潮流计算 c++程序
💻 CPP
字号:
#include "readdata.h"

/* --------- Global Input File --------- */
extern FILE *InputDataFile;

/* --------------- SVCbusInList  ------------------- */
#ifdef ANSIPROTO
SVCbusData *SVCbusInList(char *BusName,INDEX N,ACbusData *ptrac,ACbusData *ptrac1)
#else
SVCbusData *SVCbusInList(BusName,N,ptrac,ptrac1)
char *BusName;
INDEX N;
ACbusData *ptrac,*ptrac1;
#endif
{
  SVCbusData *ptr,*ptrp,*ptrn;

  if(N==0) {
    ptrn=dataPtr->SVCbus;
    ptrp=NULL;
#ifdef WINDOWS
    dataPtr->SVCbus= new SVCbusData;
#else
    dataPtr->SVCbus=(SVCbusData *) malloc(sizeof(SVCbusData));
    if (dataPtr->SVCbus==NULL) {
      fclose(InputDataFile);
      ErrorHalt("Insufficient memory to allocate SVC bus data.");
      exit(ERROREXIT);
    }
#endif
    ptr=dataPtr->SVCbus;
    if(ptrn!=NULL)ptrn->Prev=ptr;
  } else {
    ptr=dataPtr->SVCbus;
    while (ptr!=NULL){
      if(!strcmp(ptr->Name,BusName)) return(ptr);
      ptrp=ptr;
      ptr=ptr->Next;
    }
  }
  strcpy(ptr->Name,BusName);
  ptr->N=0;
  strcpy(ptr->Type,"FS");
  strcpy(ptr->Cont,"AL");
  ptr->Vsvc=0;
  ptr->Xth_l=0;
  ptr->Xc=0;
  ptr->Xl=0;
  ptr->AlphaMin=0;
  ptr->AlphaMax=0;
  ptr->slope=0;
  ptr->SVC_base=0;
  ptr->Qsvc=0;
  ptr->Bv=0;
  ptr->alpha_svc=0;
  ptr->Vref=0;
  ptr->val=0;
  ptr->Vvar=0;
  ptr->From=ptrac;
  ptr->Ctrl=ptrac1;
  ptr->Prev=ptrp;
  ptr->Next=ptrn;
  return(ptr);
}


/* --------------- TCSCbusInList  ------------------- */
#ifdef ANSIPROTO
TCSCbusData *TCSCbusInList(char *BusName,INDEX N,ACbusData *ptrac,ACbusData *ptrac1)
#else
TCSCbusData *TCSCbusInList(BusName,N,ptrac,ptrac1)
char *BusName;
INDEX N;
ACbusData *ptrac,*ptrac1;
#endif
{
  TCSCbusData *ptr,*ptrp,*ptrn;

  if(N==0) {
    ptrn=dataPtr->TCSCbus;
    ptrp=NULL;
#ifdef WINDOWS
    dataPtr->TCSCbus=new TCSCbusData;
#else
    dataPtr->TCSCbus=(TCSCbusData *) malloc(sizeof(TCSCbusData));
    if (dataPtr->TCSCbus==NULL) {
      fclose(InputDataFile);
      ErrorHalt("Insufficient memory to allocate TCSC bus data.");
      exit(ERROREXIT);
    }
#endif
    ptr=dataPtr->TCSCbus;
    if(ptrn!=NULL)ptrn->Prev=ptr;
  } else {
    ptr=dataPtr->TCSCbus;
    while (ptr!=NULL){
      if(!strcmp(ptr->Name,BusName)) return(ptr);
      ptrp=ptr;
      ptr=ptr->Next;
    }
  }
  strcpy(ptr->Name,BusName);
  ptr->N=0;
  strcpy(ptr->Type,"FC");
  strcpy(ptr->Cont,"X");
  ptr->Xc=0;
  ptr->Xl=0;
  ptr->AlphaMin=0;
  ptr->AlphaMax=0;
  ptr->Control=0;
  ptr->Bset=0;
  ptr->TCSC_base=0;
  ptr->Ptcsc=0;
  ptr->Qtcsck=0;
  ptr->Qtcscm=0;
  ptr->Be=0;
  ptr->alpha_tcsc=0;
  ptr->Itcsc=0;
  ptr->delta_t=0;
  ptr->val=0;
  ptr->Max=0;
  ptr->From=ptrac;
  ptr->To=ptrac1;
  ptr->Prev=ptrp;
  ptr->Next=ptrn;
  return(ptr);
}


/* --------------- STATCOMbusInList  ------------------- */
#ifdef ANSIPROTO
STATCOMbusData *STATCOMbusInList(char *BusName,INDEX N,ACbusData *ptrac,ACbusData *ptrac1)
#else
STATCOMbusData *STATCOMbusInList(BusName,N,ptrac,ptrac1)
char *BusName;
INDEX N;
ACbusData *ptrac,*ptrac1;
#endif
{
  STATCOMbusData *ptr,*ptrp,*ptrn;

  if(N==0) {
    ptrn=dataPtr->STATCOMbus;
    ptrp=NULL;
#ifdef WINDOWS
    dataPtr->STATCOMbus= new STATCOMbusData;
#else
    dataPtr->STATCOMbus=(STATCOMbusData *) malloc(sizeof(STATCOMbusData));
    if (dataPtr->STATCOMbus==NULL) {
      fclose(InputDataFile);
      ErrorHalt("Insufficient memory to allocate STATCOM bus data.");
      exit(ERROREXIT);
    }
#endif
    ptr=dataPtr->STATCOMbus;
    if(ptrn!=NULL)ptrn->Prev=ptr;
  } else {
    ptr=dataPtr->STATCOMbus;
    while (ptr!=NULL){
      if(!strcmp(ptr->Name,BusName)) return(ptr);
      ptrp=ptr;
      ptr=ptr->Next;
    }
  }
  strcpy(ptr->Name,BusName);
  ptr->N=0;
  strcpy(ptr->Type,"FT");
  strcpy(ptr->Cont,"PW");
  strcpy(ptr->Cont1,"PW");
  ptr->I=0;
  ptr->theta=0;
  ptr->k=0;
  ptr->Vdc=0;
  ptr->alpha=0;
  ptr->R=0;
  ptr->G=0;
  ptr->B=0;
  ptr->Gc=0;
  ptr->Imin=0;
  ptr->Imax=0.;
  ptr->slope=0;
  ptr->P=0;
  ptr->Q=0;
  ptr->MVA=0;
  ptr->Vref=0;
  ptr->Contref=0;
  ptr->val=0;
  ptr->Vvar=0;
  ptr->From=ptrac;
  ptr->Ctrl=ptrac1;
  ptr->Prev=ptrp;
  ptr->Next=ptrn;
  return(ptr);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -