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

📄 main.c

📁 电力系统分析计算 学习调试程序 UNIX / LINUX / CYGWIN 系统使用
💻 C
📖 第 1 页 / 共 2 页
字号:
                if (!PrintEvalue) fCustomPrint(stderr,"Minimum |e_value| -> %-10.6lg\n\n",EigenValue);                PrintDirection('Y',x0,1.0);         }  } else if (flagPoC) {         i=PoCPoint();         if(i<0) {                i= -i;                fCustomPrint(stderr,"\n *** The DC equations have a square root of a negative number.\n");                fCustomPrint(stderr,"     Try changing the DC controls.\n");                fCustomPrint(stderr,"Loading factor -> %-10.6lg\n\n",lambda);                WriteSolution(--i,TrueParamStr(2),"DC problems:");                stopExecute(1);         }         fCustomPrint(stderr,"**** Point of Collapse Case Solved ****   ");         fCustomPrint(stderr,"Loading factor -> %-10.6lg\n\n",lambda);         WriteSolution(--i,TrueParamStr(2),"PoC Solution:");  } else if (flagv) {         i=1;         V=BlPtr->V;         if (flagD) {                i=Pflow(i,FALSE,TRUE,TRUE);                if(i<0) {                  i= -i;                  fCustomPrint(stderr,"\n *** The DC equations have a square root of a negative number.\n");                  fCustomPrint(stderr,"     Try changing the DC controls.\n");                  WriteSolution(--i,TrueParamStr(2),"DC problems:");                  stopExecute(1);                }                fCustomPrint(stderr,"**** Base Case Solved (to calculate OH load parameters) ****\n\n");         } else InitializeLoad();         RealParameter('L',&lambda,-1e6,1e6);         strcpy(BlPtr->Type,"BL");         if(BlPtr->Area!=NULL && BlPtr->Area->Slack==BlPtr) strcat(BlPtr->Type,"A");         Bl=BlPtr->N;         BlPtr->V=V;         BlPtr->Cont=NULL;         i=Pflow(i,flagD,TRUE,FALSE);         if(i<0) {                i= -i;                fCustomPrint(stderr,"\n *** The DC equations have a square root of a negative number.\n");                fCustomPrint(stderr,"     Try changing the DC controls.\n");                fCustomPrint(stderr,"Loading factor -> %-10.6lg\n\n",lambda);                WriteSolution(--i,TrueParamStr(2),"DC problems:");                stopExecute(1);         }         fCustomPrint(stderr,"**** Voltage/Lambda Case Solved ****    ");         fCustomPrint(stderr,"Loading factor -> %-10.6lg\n\n",lambda);         WriteSolution(--i,TrueParamStr(2),"Voltage/Lambda Solution:");  } else if (ExistParameter('L') && (ExistParameter('K') || flagKdirection)) {         i=1;         if (ExistParameter('b') || flagD ) {                i=Pflow(i,FALSE,TRUE,TRUE);                if(i<0) {                  i= -i;                  fCustomPrint(stderr,"\n *** The DC equations have a square root of a negative number.\n");                  fCustomPrint(stderr,"     Try changing the DC controls.\n");                  WriteSolution(--i,TrueParamStr(2),"DC problems:");                  stopExecute(1);                }                fCustomPrint(stderr,"**** Base Case Solved (to initialize power flow) ****\n\n");         } else InitializeLoad();         RealParameter('L',&lambda,-1e6,1e6);         if (lambda==0 || (NullName(NameParameter('K')) && !flagKdirection)) {                fCustomPrint(stderr,"***Warning: The program has detected the -L option but either lambda is zero\n");                fCustomPrint(stderr,"            or there is no gen./load variations defined.\n");                if (!ExistParameter('b') && !flagD  ) {                  fCustomPrint(stderr,"            The program will just solve the base case.\n");                  i=Pflow(i,FALSE,TRUE,TRUE);                  if(i<0) {                         i= -i;                         fCustomPrint(stderr,"\n *** The DC equations have a square root of a negative number.\n");                         fCustomPrint(stderr,"     Try changing the DC controls.\n");                         WriteSolution(--i,TrueParamStr(2),"DC problems:");                         stopExecute(1);                  }                  fCustomPrint(stderr,"**** Base Case Solved ****\n\n");                }         } else {                i=Pflow(i,flagD,TRUE,FALSE);                if(i<0) {                  i= -i;                  fCustomPrint(stderr,"\n *** The DC equations have a square root of a negative number.\n");                  fCustomPrint(stderr,"     Try changing the DC controls.\n");                  fCustomPrint(stderr,"Loading factor -> %-10.6lg\n\n",lambda);                  WriteSolution(--i,TrueParamStr(2),"DC problems:");                  stopExecute(1);                }                fCustomPrint(stderr,"**** Lambda Case Solved ****    ");                fCustomPrint(stderr,"Loading factor -> %-10.6lg\n\n",lambda);         }         WriteSolution(--i,TrueParamStr(2),"Lambda Solution:");         if (ExistParameter('y') && !NullName(NameParameter('y'))) {                N1=NacVar+11*Ndc/2+1+3*Nsvc+NtcscVar+7*Nstatcom;   /* FACTS */#ifdef WINDOWS                x0= new VALUETYPE[N1];#else                x0=(VALUETYPE *) calloc(N1,sizeof(VALUETYPE));                if (x0==NULL) {ErrorHalt("Insufficient memory to allocate approx. left e-vector."); stopExecute(ERROREXIT);}#endif                if(ExistParameter('d')) fCustomPrint(stderr,"Write left e-vector for base case (see file 'evect.dat').\n");                Evector(40,0,0.00001,FALSE,&EigenValue);                fCustomPrint(stderr,"Minimum |e_value| -> %-10.6lg\n\n",EigenValue);                PrintEvalue=TRUE;                Out=OpenOutput(NameParameter('y'));                PrintLeftEvector(N1,Out);         }         if (ExistParameter('Y') && !NullName(NameParameter('Y'))){                N1=NacVar+11*Ndc/2+1+3*Nsvc+NtcscVar+7*Nstatcom;   /* FACTS */                if (x0 == NULL) {#ifdef WINDOWS                  x0= new VALUETYPE[N1];#else                  x0=(VALUETYPE *) calloc(N1,sizeof(VALUETYPE));                  if (x0==NULL) {ErrorHalt("Insufficient memory to allocate approx. right e-vector."); stopExecute(ERROREXIT);}#endif                }                if(ExistParameter('d')) fCustomPrint(stderr,"Write right e-vector for base case (see file 'evect.dat').\n");                Evector(40,0,0.00001,TRUE,&EigenValue);                if (!PrintEvalue) fCustomPrint(stderr,"Minimum |e_value| -> %-10.6lg\n\n",EigenValue);                PrintDirection('Y',x0,1.0);         }  } else {         i=Pflow(1,FALSE,TRUE,TRUE);         if(i<0) {                i= -i;                fCustomPrint(stderr,"\n *** The DC equations have a square root of a negative number.\n");                fCustomPrint(stderr,"     Try changing the DC controls.\n");                WriteSolution(--i,TrueParamStr(2),"DC problems:");                stopExecute(1);         }         fCustomPrint(stderr,"**** Base Case Solved ****\n\n");         WriteSolution(--i,TrueParamStr(2),"Base Solution:");         if (ExistParameter('y') && !NullName(NameParameter('y'))) {                N1=NacVar+11*Ndc/2+1+3*Nsvc+NtcscVar+7*Nstatcom;   /* FACTS */#ifdef WINDOWS                x0= new VALUETYPE[N1];#else                x0=(VALUETYPE *) calloc(N1,sizeof(VALUETYPE));                if (x0==NULL) {ErrorHalt("Insufficient memory to allocate approx. left e-vector."); stopExecute(ERROREXIT);}#endif                if(ExistParameter('d')) fCustomPrint(stderr,"Write left e-vector for base case (see file 'evect.dat').\n");                Evector(40,0,0.00001,FALSE,&EigenValue);        fCustomPrint(stderr,"Minimum |e_value| -> %-10.6lg\n\n",EigenValue);        PrintEvalue=TRUE;                Out=OpenOutput(NameParameter('y'));                PrintLeftEvector(N1,Out);         }         if (ExistParameter('Y') && !NullName(NameParameter('Y'))){                N1=NacVar+11*Ndc/2+1+3*Nsvc+NtcscVar+7*Nstatcom;   /* FACTS */                if (x0 == NULL) {#ifdef WINDOWS                  x0= new VALUETYPE[N1];#else                  x0=(VALUETYPE *) calloc(N1,sizeof(VALUETYPE));                  if (x0==NULL) {ErrorHalt("Insufficient memory to allocate approx. right e-vector."); stopExecute(ERROREXIT);}#endif                }                if(ExistParameter('d')) fCustomPrint(stderr,"Write right e-vector for base case (see file 'evect.dat').\n");                Evector(40,0,0.00001,TRUE,&EigenValue);                if (!PrintEvalue) fCustomPrint(stderr,"Minimum |e_value| -> %-10.6lg\n\n",EigenValue);                PrintDirection('Y',x0,1.0);         }  }#ifdef WINDOWS  CleanUp();#endif  return(0);}/* -------------------- Clean up all data structures ----------------------*/#ifdef WINDOWSvoid CleanUp()/* Clean up all Pflow data structures */{  INDEX k;  SparseMatrixElement *Jptr,*Jptrp;  AreaData *Aptr,*Aptrp;  AClist *LACptr,*LACptrp;  DClist *LDCptr,*LDCptrp;  ElementList *LEptr,*LEptrp;  ACbusData *ACptr,*ACptrp;  SVClist *LSVCptr,*LSVCptrp;                 /* FACTS */  TCSClist *LTCSCptr,*LTCSCptrp;              /* FACTS */  STATCOMlist *LSTATCOMptr,*LSTATCOMptrp;     /* FACTS */  DCbusData *DCptr,*DCptrp;  ElementData *Eptr,*Eptrp;  SVCbusData *SVCptr,*SVCptrp;                /* FACTS */  TCSCbusData *TCSCptr,*TCSCptrp;             /* FACTS */  STATCOMbusData *STATCOMptr,*STATCOMptrp;    /* FACTS */  if (Jac!=NULL) {    for (k=1;k<=Jac->n1;k++) {      Jptr=Jac->RowHead[k];      while (Jptr!=NULL) {        Jptrp=Jptr->RowNext;        delete Jptr;        Jptr=Jptrp;      }    }    delete[] Jac->ColHead;    delete[] Jac->RowHead;    delete Jac;    delete[] NewRow->p;    delete NewRow;    delete[] NewCol->p;    delete NewCol;    delete[] OldRow->p;    delete OldRow;    delete[] OldCol->p;    delete OldCol;    delete[] RowPartition->p;    delete RowPartition;    delete[] ColPartition->p;    delete ColPartition;    Jac=NULL;  }  if (ACvar!=NULL)  { delete[] ACvar;  ACvar=NULL; }  if (Dx!=NULL) { delete[] Dx;  Dx=NULL; }  if (x0!=NULL) { delete[] x0;  x0=NULL; }  if (x0p!=NULL) { delete[] x0p;  x0p=NULL; }  if (dx!=NULL) { delete[] dx;  dx=NULL; }  if (dF!=NULL) {  delete[] dF;  dF=NULL; }  if (DxZero!=NULL) {  delete[] DxZero;  DxZero=NULL; }  if (Vlist!=NULL) {    if (Vlist!=Vlistp) {      for(LACptr=Vlist;LACptr!=NULL;LACptrp=LACptr->Next,delete LACptr,LACptr=LACptrp);      for(LACptr=Vlistp;LACptr!=NULL;LACptrp=LACptr->Next,delete LACptr,LACptr=LACptrp);    } else      for(LACptr=Vlist;LACptr!=NULL;LACptrp=LACptr->Next,delete LACptr,LACptr=LACptrp);    Vlist=Vlistp=NULL;  }  if (dataPtr!=NULL) {    for (Aptr=dataPtr->Area;Aptr!=NULL;){      Aptrp=Aptr->Next;      for(LACptr=Aptr->AC;LACptr!=NULL;LACptrp=LACptr->Next,delete LACptr,LACptr=LACptrp);      for(LDCptr=Aptr->DC;LDCptr!=NULL;LDCptrp=LDCptr->Next,delete LDCptr,LDCptr=LDCptrp);      for(LEptr=Aptr->Elem;LEptr!=NULL;LEptrp=LEptr->Next,delete LEptr,LEptr=LEptrp);      delete Aptr;      Aptr=Aptrp;    }    for(ACptr=dataPtr->ACbus;ACptr!=NULL;) {      ACptrp=ACptr->Next;      for(LEptr=ACptr->Reg;LEptr!=NULL;LEptrp=LEptr->Next,delete LEptr,LEptr=LEptrp);      for(LEptr=ACptr->Elem;LEptr!=NULL;LEptrp=LEptr->Next,delete LEptr,LEptr=LEptrp);      for(LDCptr=ACptr->DC;LDCptr!=NULL;LDCptrp=LDCptr->Next,delete LDCptr,LDCptr=LDCptrp);      for(LSVCptr=ACptr->SVC;LSVCptr!=NULL;LSVCptrp=LSVCptr->Next,delete LSVCptr,LSVCptr=LSVCptrp);                                  /* FACTS */      for(LTCSCptr=ACptr->TCSC;LTCSCptr!=NULL;LTCSCptrp=LTCSCptr->Next,delete LTCSCptr,LTCSCptr=LTCSCptrp);                          /* FACTS */      for(LSTATCOMptr=ACptr->STATCOM;LSTATCOMptr!=NULL;LSTATCOMptrp=LSTATCOMptr->Next,delete LSTATCOMptr,LSTATCOMptr=LSTATCOMptrp);  /* FACTS */      for(LACptr=ACptr->ContBus;LACptr!=NULL;LACptrp=LACptr->Next,delete LACptr,LACptr=LACptrp);      if (ACptr->Gen!=NULL) delete ACptr->Gen;      delete ACptr;      ACptr=ACptrp;    }    for(DCptr=dataPtr->DCbus;DCptr!=NULL;) {      DCptrp=DCptr->Next;      delete DCptr;      DCptr=DCptrp;    }    for(Eptr=dataPtr->Element;Eptr!=NULL;) {      Eptrp=Eptr->Next;      delete Eptr;      Eptr=Eptrp;    }                           /* FACTS */    for(SVCptr=dataPtr->SVCbus;SVCptr!=NULL;) {      SVCptrp=SVCptr->Next;      delete SVCptr;      SVCptr=SVCptrp;    }    for(TCSCptr=dataPtr->TCSCbus;TCSCptr!=NULL;) {      TCSCptrp=TCSCptr->Next;      delete TCSCptr;      TCSCptr=TCSCptrp;    }    for(STATCOMptr=dataPtr->STATCOMbus;STATCOMptr!=NULL;) {      STATCOMptrp=STATCOMptr->Next;      delete STATCOMptr;      STATCOMptr=STATCOMptrp;    }                        /* END FACTS */    for(LACptr=dataPtr->KGbus;LACptr!=NULL;) {      LACptrp=LACptr->Next;      delete LACptr;      LACptr=LACptrp;    }    delete dataPtr;    dataPtr=NULL;	  }  //close standard streams  fclose(stdout);  fclose(stderr);  //fclose(stdin);    //update graph  //set range to around the max and min points on the graph  GraphDlg->m_GraphCtrl.SetRange(GraphDlg->minX*0.9, GraphDlg->maxX*1.2, GraphDlg->minY*0.9, GraphDlg->maxY*1.1);	    for (int i = 1; i<=GraphDlg->m_GraphCtrl.GetAnnoCount(); i++){	//set the legend	  GraphDlg->m_GraphCtrl.SetAnnotation(i-1);	  GraphDlg->m_GraphCtrl.SetAnnoLabelX(GraphDlg->maxX*1.05);	  GraphDlg->m_GraphCtrl.SetAnnoLabelY(GraphDlg->maxY * 1.1 *(1-i*0.1) + GraphDlg->minY* 0.9*0.1*i);  }    //set the x axis label  GraphDlg->m_GraphCtrl.SetXLabel("L.F.");}#endif

⌨️ 快捷键说明

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