📄 homotpro.c
字号:
} 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 ANSIPROTOvoid VoltProf(BOOLEAN flag,FILE *Out)#elsevoid 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 ANSIPROTOvoid PrintDirection(char Option,VALUETYPE *vector,VALUETYPE Max)#elsevoid 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 + -