?? homotpro.cpp
字號:
}
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 + -