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

📄 homotpro.cpp

📁 用于潮流计算的程序请让我下载我需要的吧感谢了啊
💻 CPP
📖 第 1 页 / 共 3 页
字号:

  }
  if (ExistParameter('m')) fCustomPrint(Out,"\nx=[\n");
  else fCustomPrint(Out,"\n");
  if (ExistParameter('d') && (Out!=stdout || !NullName(NameParameter('l')))) {
    fCustomPrint(stderr,"L.F.    ");
    for(Lptr=Vlist;Lptr!=NULL;Lptr=Lptr->Next) fCustomPrint(stderr,"%s%-5d    ",Lptr->Type,Lptr->N);
    for(Lptr=Vlist;Lptr!=NULL;Lptr=Lptr->Next) if (Lptr->AC!=NULL) {
      if (Lptr->AC->Gen!=NULL) {
        fCustomPrint(stderr,"Ia%-5d    ",Lptr->N);
        fCustomPrint(stderr,"Eq%-5d    ",Lptr->N);
        fCustomPrint(stderr,"dg%-5d    ",Lptr->N);
      }
    }
    for (i=0,DCptr=dataPtr->DCbus;DCptr!=NULL;DCptr=DCptr->Next) if(!strcmp(DCptr->Type,"R")) {
      i++;
      fCustomPrint(stderr,"alR_%-2d    ",i);
      fCustomPrint(stderr,"muR_%-2d    ",i);
      fCustomPrint(stderr,"tpR_%-2d    ",i);
      fCustomPrint(stderr,"gaI_%-2d    ",i);
      fCustomPrint(stderr,"muI_%-2d    ",i);
      fCustomPrint(stderr,"tpI_%-2d    ",i);
    }
    fCustomPrint(stderr,"\n");
  }
}


/* --------------------------- VoltProf --------------------------------- */
#ifdef ANSIPROTO
void VoltProf(BOOLEAN flag,FILE *Out)
#else
void VoltProf(flag,Out)
BOOLEAN flag;
FILE *Out;
#endif
/* Write voltage profiles. */
{
  ACbusData *ACptr;
  AreaData *Aptr;
  AClist *Lptr;
  DClist *DCLptr;
  DCbusData *DCptrI,*DCptrR;
  ElementData *Eptr;
  ElementList *ELptr;
  VALUETYPE Vi,Vj,di,dj,Gi,Gj,G,B,Gp,Bp,P;

#ifdef WINDOWS
  int currElement=0;
#endif

  Print(Out,0,6,4,lambda_o+lambda); fCustomPrint(Out,"    ");
  for(Lptr=Vlist;Lptr!=NULL;Lptr=Lptr->Next) {
    ACptr=Lptr->AC;
    Aptr=Lptr->Area;
    if (ACptr!=NULL) {
      if (!strcmp(Lptr->Type,"V")) 
	  {
		  Print(Out,0,6,4,ACptr->V); 
		  fCustomPrint(Out,"    "); 
#ifdef WINDOWS
		  if (GraphDlg!=NULL)
		  {
			  GraphDlg->m_GraphCtrl.PlotXY(lambda_o+lambda, ACptr->V, currElement);
			  GraphDlg->CheckRange(lambda_o+lambda, ACptr->V);
			  if (++currElement > 7) 
				  currElement = 0;

			  GraphDlg->m_GraphCtrl.SetYLabel("V");
		  }
#endif
	  }
      else if (!strcmp(Lptr->Type,"D")) 
	  {
		  Print(Out,0,6,2,ACptr->Ang*AngTr); 
		  fCustomPrint(Out,"    ");
#ifdef WINDOWS
		  if (GraphDlg!=NULL)
		  {
			  GraphDlg->m_GraphCtrl.PlotXY(lambda_o+lambda, ACptr->Ang*AngTr, currElement);
			  GraphDlg->CheckRange(lambda_o+lambda, ACptr->Ang*AngTr);
			  if (++currElement > 7) 
				  currElement = 0;

			  GraphDlg->m_GraphCtrl.SetYLabel("D");
		  }
#endif
	  }
      else if (!strcmp(Lptr->Type,"PG")) 
	  {
		  Print(Out,0,6,2,ACptr->PG*Sn); 
		  fCustomPrint(Out,"    ");
#ifdef WINDOWS
		  if (GraphDlg!=NULL)
		  {
			  GraphDlg->m_GraphCtrl.PlotXY(lambda_o+lambda, ACptr->PG*Sn, currElement);
			  GraphDlg->CheckRange(lambda_o+lambda, ACptr->PG*Sn);
			  if (++currElement > 7) 
				  currElement = 0;

			  GraphDlg->m_GraphCtrl.SetYLabel("PG");
		  }
#endif
	  }
      else if (!strcmp(Lptr->Type,"QG")) 
	  {
		  Print(Out,0,6,2,ACptr->Qg*Sn); 
		  fCustomPrint(Out,"    ");
#ifdef WINDOWS
		  if (GraphDlg!=NULL)
		  {
			  GraphDlg->m_GraphCtrl.PlotXY(lambda_o+lambda, ACptr->Qg*Sn, currElement);
			  GraphDlg->CheckRange(lambda_o+lambda, ACptr->Qg*Sn);
			  if (++currElement > 7) 
				  currElement = 0;

			  GraphDlg->m_GraphCtrl.SetYLabel("QG");
		  }
#endif	  
	  }
      else if (!strcmp(Lptr->Type,"PL")) 
	  {
		  Print(Out,0,6,2,ACptr->PL*Sn); 
		  fCustomPrint(Out,"    ");
#ifdef WINDOWS
		  if (GraphDlg!=NULL)
		  {
			  GraphDlg->m_GraphCtrl.PlotXY(lambda_o+lambda, ACptr->PL*Sn, currElement);
			  GraphDlg->CheckRange(lambda_o+lambda, ACptr->PL*Sn);
			  if (++currElement > 7) 
				  currElement = 0;

			  GraphDlg->m_GraphCtrl.SetYLabel("PL");
		  }
#endif	  
	  }
      else if (!strcmp(Lptr->Type,"QL")) 
	  {
		  Print(Out,0,6,2,ACptr->QL*Sn); 
		  fCustomPrint(Out,"    ");
#ifdef WINDOWS
		  if (GraphDlg!=NULL)
		  {
			  GraphDlg->m_GraphCtrl.PlotXY(lambda_o+lambda, ACptr->QL*Sn, currElement);
			  GraphDlg->CheckRange(lambda_o+lambda, ACptr->QL*Sn);
			  if (++currElement > 7) 
				  currElement = 0;

			  GraphDlg->m_GraphCtrl.SetYLabel("QL");
		  }
#endif	  
	  }
    }
    else if (Aptr!=NULL) {
      Aptr->SPg=0;
      for (DCLptr=Aptr->DC;DCLptr!=NULL;DCLptr=DCLptr->Next) {
        DCptrR=DCLptr->DC->Meter;
        P= -DCptrR->P;
        if(DCptrR->Area!=Aptr) P= -P;
        Aptr->SPg=Aptr->SPg+P;
      }
      for(ELptr=Aptr->Elem;ELptr!=NULL;ELptr=ELptr->Next) {
        Eptr=ELptr->Eptr;
        Vi=Eptr->From->V;  di=Eptr->From->Ang;
        Vj=Eptr->To->V;    dj=Eptr->To->Ang;
        G=(Eptr->G*cos(Eptr->Ang)-Eptr->B*sin(Eptr->Ang))*Eptr->Tap;
        B=(Eptr->G*sin(Eptr->Ang)+Eptr->B*cos(Eptr->Ang))*Eptr->Tap;
        Gi=(Eptr->G1+Eptr->G)*pow(Eptr->Tap,2.0)-G;
        Gp=(Eptr->G*cos(Eptr->Ang)+Eptr->B*sin(Eptr->Ang))*Eptr->Tap;
        Bp=(-Eptr->G*sin(Eptr->Ang)+Eptr->B*cos(Eptr->Ang))*Eptr->Tap;
        Gj=Eptr->G+Eptr->G2-Gp;
        if (Eptr->From==Eptr->Meter) {
          P=Vi*Vi*(Gi+G)-Vi*Vj*(G*cos(di-dj)+B*sin(di-dj));
        } else {
          P=Vj*Vj*(Gj+Gp)-Vi*Vj*(Gp*cos(dj-di)+Bp*sin(dj-di));
        }
        if(Eptr->Meter->Area!=Aptr) P= -P;
        Aptr->SPg=Aptr->SPg+P;
      }
      Print(Out,0,6,2,Aptr->SPg*Sn); fCustomPrint(Out,"    ");
    }
  }
  if (ExistParameter('e')) for(Lptr=Vlist;Lptr!=NULL;Lptr=Lptr->Next) {
    ACptr=Lptr->AC;
    if (ACptr!=NULL && ACptr->Gen!=NULL) {
      Print(Out,0,6,4,ACptr->Gen->Ia); fCustomPrint(Out,"    ");
      Print(Out,0,6,4,ACptr->Gen->Eq); fCustomPrint(Out,"    ");
      Print(Out,0,6,2,ACptr->Gen->dg*AngTr); fCustomPrint(Out,"    ");
   }
  }
  if (ExistParameter('O')) {
    TEFac(flag);
    Print(Out,0,field,4,Vac);  fCustomPrint(Out,"    ");
    TEFdc(Out);
  }
  else if (ExistParameter('e')) {
    for (DCptrR=dataPtr->DCbus;DCptrR!=NULL;DCptrR=DCptrR->Next) if(!strcmp(DCptrR->Type,"R")) {
      DCptrI=DCptrR->To;
      Print(Out,0,6,2,DCptrR->Alfa*AngTr); fCustomPrint(Out,"    ");
      Print(Out,0,6,2,DCptrI->Gamma*AngTr); fCustomPrint(Out,"    ");
      Print(Out,0,6,2,DCptrI->Id*1000.*Sn/DCptrR->Vn); fCustomPrint(Out,"    ");
    }
  }
  if (flagPrintTotalPl) { Print(Out,0,8,2,TotalPl*Sn); fCustomPrint(Out,"    "); }
  if (flagPrintTotalQl) { Print(Out,0,8,2,TotalQl*Sn); fCustomPrint(Out,"    "); }
  if (flagPrintTotalPg) { Print(Out,0,8,2,TotalPg*Sn); fCustomPrint(Out,"    "); }
  if (flagPrintTotalQg) { Print(Out,0,8,2,TotalQg*Sn); fCustomPrint(Out,"    "); }
  if (ExistParameter('d') && (Out!=stdout || !NullName(NameParameter('l')))) {
    Print(stderr,0,6,4,lambda_o+lambda); fCustomPrint(stderr,"    ");
    for(Lptr=Vlist;Lptr!=NULL;Lptr=Lptr->Next) {
      ACptr=Lptr->AC;
      Aptr=Lptr->Area;
      if (ACptr!=NULL) {
        if (!strcmp(Lptr->Type,"V")) {Print(stderr,0,6,4,ACptr->V); fCustomPrint(stderr,"    "); }
        else if (!strcmp(Lptr->Type,"D")) {Print(stderr,0,6,2,ACptr->Ang*AngTr); fCustomPrint(stderr,"    ");}
        else if (!strcmp(Lptr->Type,"PG")) {Print(stderr,0,6,2,ACptr->PG*Sn); fCustomPrint(stderr,"    ");}
        else if (!strcmp(Lptr->Type,"QG")) {Print(stderr,0,6,2,ACptr->Qg*Sn); fCustomPrint(stderr,"    ");}
        else if (!strcmp(Lptr->Type,"PL")) {Print(stderr,0,6,2,ACptr->PL*Sn); fCustomPrint(stderr,"    ");}
        else if (!strcmp(Lptr->Type,"QL")) {Print(stderr,0,6,2,ACptr->QL*Sn); fCustomPrint(stderr,"    ");}
      }
      else if (Aptr!=NULL) {Print(stderr,0,6,2,Aptr->SPg*Sn); fCustomPrint(stderr,"    ");}
    }
    for(Lptr=Vlist;Lptr!=NULL;Lptr=Lptr->Next) {
      ACptr=Lptr->AC;
      if (ACptr!=NULL && ACptr->Gen!=NULL) {
        Print(stderr,0,6,4,ACptr->Gen->Ia); fCustomPrint(stderr,"    ");
        Print(stderr,0,6,4,ACptr->Gen->Eq); fCustomPrint(stderr,"    ");
        Print(stderr,0,6,2,ACptr->Gen->dg*AngTr); fCustomPrint(stderr,"    ");
     }
    }
    for (DCptrR=dataPtr->DCbus;DCptrR!=NULL;DCptrR=DCptrR->Next) if(!strcmp(DCptrR->Type,"R")) {
      DCptrI=DCptrR->To;
      Print(stderr,0,6,2,DCptrR->Alfa*AngTr); fCustomPrint(stderr,"    ");
      Print(stderr,0,6,2,(PI-DCptrR->Alfa-DCptrR->Gamma)*AngTr); fCustomPrint(stderr,"    ");
      Print(stderr,0,6,4,DCptrR->Tap); fCustomPrint(stderr,"    ");
      Print(stderr,0,6,2,DCptrI->Gamma*AngTr); fCustomPrint(stderr,"    ");
      Print(stderr,0,6,2,(PI-DCptrI->Alfa-DCptrI->Gamma)*AngTr); fCustomPrint(stderr,"    ");
      Print(stderr,0,6,4,DCptrI->Tap); fCustomPrint(stderr,"    ");
    }
    fCustomPrint(stderr,"\n");
  }

}


/* --------------------------- PrintDirection --------------------------------- */
#ifdef ANSIPROTO
void PrintDirection(char Option,VALUETYPE *vector,VALUETYPE Max)
#else
void PrintDirection(Option,vector,Max)
char Option;
VALUETYPE *vector,Max;
#endif
/* Print direction vector  */
{
  INDEX i,j,k,N,I,J;
  ACbusData *ACptr;
  DCbusData *DCptr,*DCptrR,*DCptrI;
  SVCbusData *SVCptr;                  /* FACTS */
  TCSCbusData *TCSCptr;                /* FACTS */
  STATCOMbusData *STATCOMptr;          /* FACTS */
  ElementData *Eptr;
  ElementList *ELptr;
  char str[80],type[2];
  FILE *Out;

  Out=OpenOutput(NameParameter(Option));
  N=Jac->n1;
  fCustomPrint(Out,"%d 1\n",N);
  for (i=0,ACptr=dataPtr->ACbus; ACptr!=NULL; ACptr=ACptr->Next){
    if (ACptr->Cont!=NULL){
      if (strpbrk(ACptr->Type,"S")) sprintf(str,"kg%-d",ACptr->Num);
      else                          sprintf(str,"d%-d",ACptr->Num);
      i++;
      fCustomPrint(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
      sprintf(str,"V%-d",ACptr->Num); i++;
      fCustomPrint(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
    }
    else if(strpbrk(ACptr->Type,"L")){
      sprintf(str,"d%-d",ACptr->Num); i++;
      fCustomPrint(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
      i++;
      fCustomPrint(Out,"%4d %8s %-11.5g\n",i,"l",vector[i]/Max);
    }
    else if(QRcont && strpbrk(ACptr->Type,"C")){
      sprintf(str,"d%-d",ACptr->Num); i++;
      fCustomPrint(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
      sprintf(str,"Q%-d",ACptr->Num); i++;
      fCustomPrint(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
    }
    else if(Rcont && strpbrk(ACptr->Type,"T")){
      sprintf(str,"d%-d",ACptr->Num); i++;
      fCustomPrint(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
      for(ELptr=ACptr->Reg;ELptr!=NULL;ELptr=ELptr->Next){
         Eptr=ELptr->Eptr;
         I=Eptr->From->Num;
         J=Eptr->To->Num;
         if(!strcmp(Eptr->Type,"R")) break;
      }
      sprintf(str,"1/t%-d_%-d",I,J); i++;
      fCustomPrint(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
    }
    else if(strpbrk(ACptr->Type,"Q") || strpbrk(ACptr->Type,"V") || (!QRcont && strpbrk(ACptr->Type,"G"))){
      if (strpbrk(ACptr->Type,"S")) sprintf(str,"kg%-d",ACptr->Num);
      else                          sprintf(str,"d%-d",ACptr->Num);
      i++;
      fCustomPrint(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
      sprintf(str,"Qg%-d",ACptr->Num); i++;

⌨️ 快捷键说明

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