📄 homotpro.cpp
字号:
}
if (ExistParameter('m')) fprintf(Out,"\nx=[\n");
else fprintf(Out,"\n");
if (ExistParameter('d') && (Out!=stdout || !NullName(NameParameter('l')))) {
fprintf(stderr,"L.F.\t");
for(Lptr=Vlist;Lptr!=NULL;Lptr=Lptr->Next) fprintf(stderr,"%s%-5d\t",Lptr->Type,Lptr->N);
for(Lptr=Vlist;Lptr!=NULL;Lptr=Lptr->Next) if (Lptr->AC!=NULL) {
if (Lptr->AC->Gen!=NULL) {
fprintf(stderr,"Ia%-5d\t",Lptr->N);
fprintf(stderr,"Eq%-5d\t",Lptr->N);
fprintf(stderr,"dg%-5d\t",Lptr->N);
}
}
for (i=0,DCptr=dataPtr->DCbus;DCptr!=NULL;DCptr=DCptr->Next) if(!strcmp(DCptr->Type,"R")) {
i++;
fprintf(stderr,"alR_%-2d\t",i);
fprintf(stderr,"muR_%-2d\t",i);
fprintf(stderr,"tpR_%-2d\t",i);
fprintf(stderr,"gaI_%-2d\t",i);
fprintf(stderr,"muI_%-2d\t",i);
fprintf(stderr,"tpI_%-2d\t",i);
}
fprintf(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;
Print(Out,0,6,4,lambda_o+lambda); fprintf(Out,"\t");
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); fprintf(Out,"\t"); }
else if (!strcmp(Lptr->Type,"D")) {Print(Out,0,6,2,ACptr->Ang*AngTr); fprintf(Out,"\t");}
else if (!strcmp(Lptr->Type,"PG")) {Print(Out,0,6,2,ACptr->PG*Sn); fprintf(Out,"\t");}
else if (!strcmp(Lptr->Type,"QG")) {Print(Out,0,6,2,ACptr->Qg*Sn); fprintf(Out,"\t");}
else if (!strcmp(Lptr->Type,"PL")) {Print(Out,0,6,2,ACptr->PL*Sn); fprintf(Out,"\t");}
else if (!strcmp(Lptr->Type,"QL")) {Print(Out,0,6,2,ACptr->QL*Sn); fprintf(Out,"\t");}
}
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); fprintf(Out,"\t");
}
}
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); fprintf(Out,"\t");
Print(Out,0,6,4,ACptr->Gen->Eq); fprintf(Out,"\t");
Print(Out,0,6,2,ACptr->Gen->dg*AngTr); fprintf(Out,"\t");
}
}
if (ExistParameter('O')) {
TEFac(flag);
Print(Out,0,field,4,Vac); fprintf(Out,"\t");
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); fprintf(Out,"\t");
Print(Out,0,6,2,DCptrI->Gamma*AngTr); fprintf(Out,"\t");
Print(Out,0,6,2,DCptrI->Id*1000.*Sn/DCptrR->Vn); fprintf(Out,"\t");
}
}
if (flagPrintTotalPl) { Print(Out,0,8,2,TotalPl*Sn); fprintf(Out,"\t"); }
if (flagPrintTotalQl) { Print(Out,0,8,2,TotalQl*Sn); fprintf(Out,"\t"); }
if (flagPrintTotalPg) { Print(Out,0,8,2,TotalPg*Sn); fprintf(Out,"\t"); }
if (flagPrintTotalQg) { Print(Out,0,8,2,TotalQg*Sn); fprintf(Out,"\t"); }
if (ExistParameter('d') && (Out!=stdout || !NullName(NameParameter('l')))) {
Print(stderr,0,6,4,lambda_o+lambda); fprintf(stderr,"\t");
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); fprintf(stderr,"\t"); }
else if (!strcmp(Lptr->Type,"D")) {Print(stderr,0,6,2,ACptr->Ang*AngTr); fprintf(stderr,"\t");}
else if (!strcmp(Lptr->Type,"PG")) {Print(stderr,0,6,2,ACptr->PG*Sn); fprintf(stderr,"\t");}
else if (!strcmp(Lptr->Type,"QG")) {Print(stderr,0,6,2,ACptr->Qg*Sn); fprintf(stderr,"\t");}
else if (!strcmp(Lptr->Type,"PL")) {Print(stderr,0,6,2,ACptr->PL*Sn); fprintf(stderr,"\t");}
else if (!strcmp(Lptr->Type,"QL")) {Print(stderr,0,6,2,ACptr->QL*Sn); fprintf(stderr,"\t");}
}
else if (Aptr!=NULL) {Print(stderr,0,6,2,Aptr->SPg*Sn); fprintf(stderr,"\t");}
}
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); fprintf(stderr,"\t");
Print(stderr,0,6,4,ACptr->Gen->Eq); fprintf(stderr,"\t");
Print(stderr,0,6,2,ACptr->Gen->dg*AngTr); fprintf(stderr,"\t");
}
}
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); fprintf(stderr,"\t");
Print(stderr,0,6,2,(PI-DCptrR->Alfa-DCptrR->Gamma)*AngTr); fprintf(stderr,"\t");
Print(stderr,0,6,4,DCptrR->Tap); fprintf(stderr,"\t");
Print(stderr,0,6,2,DCptrI->Gamma*AngTr); fprintf(stderr,"\t");
Print(stderr,0,6,2,(PI-DCptrI->Alfa-DCptrI->Gamma)*AngTr); fprintf(stderr,"\t");
Print(stderr,0,6,4,DCptrI->Tap); fprintf(stderr,"\t");
}
fprintf(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;
fprintf(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++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
sprintf(str,"V%-d",ACptr->Num); i++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
}
else if(strpbrk(ACptr->Type,"L")){
sprintf(str,"d%-d",ACptr->Num); i++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
i++;
fprintf(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++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
sprintf(str,"Q%-d",ACptr->Num); i++;
fprintf(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++;
fprintf(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++;
fprintf(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++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
sprintf(str,"Qg%-d",ACptr->Num); i++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
}
else if(strpbrk(ACptr->Type,"Z")) {
sprintf(str,"d%-d",ACptr->Num); i++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
sprintf(str,"Qz%-d",ACptr->Num); i++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
}
else if(strpbrk(ACptr->Type,"S")){
sprintf(str,"kg%-d",ACptr->Num); i++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
sprintf(str,"Qg%-d",ACptr->Num); i++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
}
if(Acont && strpbrk(ACptr->Type,"A")){
sprintf(str,"kg%-d",ACptr->Num); i++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
}
if (PQcont) for(ELptr=ACptr->Reg;ELptr!=NULL;ELptr=ELptr->Next) {
Eptr=ELptr->Eptr;
if(strpbrk(Eptr->Type,"PQNM")) {
if (Eptr->From==ACptr) {
I=Eptr->From->Num;
J=Eptr->To->Num;
} else {
J=Eptr->From->Num;
I=Eptr->To->Num;
}
if(!strcmp(Eptr->Type,"RP")){
sprintf(str,"a%-d_%-d",I,J); i++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
} else if(strpbrk(Eptr->Type,"PM")){
sprintf(str,"P%-d_%-d",I,J); i++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
} else if(!strcmp(Eptr->Type,"RQ")){
sprintf(str,"1/t%-d_%-d",I,J); i++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
} else {
sprintf(str,"Q%-d_%-d",I,J); i++;
fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
}
}
}
if (ACptr->Gen!=NULL) {
i=ACptr->Gen->Nvar;
if (!strpbrk(ACptr->cont,"E")) sprintf(str,"Eq%-d",ACptr->Num);
else sprintf(str,"Qg%-d",ACptr->Num);
i++; fprintf(Out,"%4d %8s %-11.5g\n",i,str,vector[i]/Max);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -