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

📄 writesol.c

📁 电力系统分析计算 学习调试程序 UNIX / LINUX / CYGWIN 系统使用
💻 C
📖 第 1 页 / 共 2 页
字号:
      fCustomPrint(OutFile,"%8.2lf",ACptr->Qg*Sn);      if(ACptr->Qmax==ACptr->Qmin) fCustomPrint(OutFile," ");      else if(ACptr->Qg==ACptr->Qmin) fCustomPrint(OutFile,"L");      else if(ACptr->Qg==ACptr->Qmax) fCustomPrint(OutFile,"H");      else if(ACptr->Qg<ACptr->Qmin) fCustomPrint(OutFile,"U");      else if(ACptr->Qg>ACptr->Qmax) fCustomPrint(OutFile,"O");      else fCustomPrint(OutFile," ");      fCustomPrint(OutFile,"%8.2lf ",Ql*Sn);      fCustomPrint(OutFile,"%8.2lf|\n",ACptr->B*ACptr->V*ACptr->V*Sn);    }  /* -------------------------------------- Generator results -------------------------------------------- */    if (ACptr->Gen!=NULL){      fCustomPrint(OutFile," Gen.-> Ia=%7.4lf[pu]",ACptr->Gen->Ia);      if (ACptr->Gen->Ia>ACptr->Gen->IaMax) fCustomPrint(OutFile,"O");      else if (ACptr->Gen->Ia==ACptr->Gen->IaMax) fCustomPrint(OutFile,"H");      else fCustomPrint(OutFile," ");      if (ACptr->Gen->Ii==0 && ACptr->Gen->Ir==0) fCustomPrint(OutFile," al=%7.2lf[deg]",0.0);      else fCustomPrint(OutFile," al=%7.2lf[deg]",atan2(ACptr->Gen->Ii,ACptr->Gen->Ir)/K3);      fCustomPrint(OutFile,"%23s|\n","");      fCustomPrint(OutFile,"        Eq=%7.4lf[pu]",ACptr->Gen->Eq);      if (ACptr->Gen->Eq>ACptr->Gen->EqMax) fCustomPrint(OutFile,"O");      else if (ACptr->Gen->Eq==ACptr->Gen->EqMax) fCustomPrint(OutFile,"H");      else if (ACptr->Gen->Eq<ACptr->Gen->EqMin) fCustomPrint(OutFile,"U");      else if (ACptr->Gen->Eq==ACptr->Gen->EqMin) fCustomPrint(OutFile,"L");      else fCustomPrint(OutFile," ");      fCustomPrint(OutFile," dg=%7.2lf[deg]",ACptr->Gen->dg/K3);      fCustomPrint(OutFile,"%23s|\n","");    }    if (Narea>1) {      ACLptr=ACLptr->Next;      if(ACLptr!=NULL) ACptr=ACLptr->AC;      else {        Aptr=Aptr->Next;        if (Aptr!=NULL) { ACLptr=Aptr->AC; ACptr=ACLptr->AC;}        else ACptr=NULL;      }    } else ACptr=ACptr->Next;  }  if (dataPtr->Area!=NULL) {    fCustomPrint(OutFile,"\n\n                                ***** AC AREA RESULTS *****\n");    fCustomPrint(OutFile,"---------------------------------|-----------------|----|------------|----|------------|-|--------|----\n");    fCustomPrint(OutFile," Area                                Slack Bus     |   i Bus Name        j Bus          C  Pmeter   To \n");    fCustomPrint(OutFile," n Name                              k Name        |     (Meter)           Name         k   (MW)   Area\n");    for(Aptr=dataPtr->Area;Aptr!=NULL;Aptr=Aptr->Next){    fCustomPrint(OutFile,"--|------------------------------|----|------------|----|------------|----|------------|-|--------|----\n");      Aptr->SPg=0;      fCustomPrint(OutFile,"%2d ",Aptr->N);      fCustomPrint(OutFile,"%30s ",Aptr->Name);      fCustomPrint(OutFile,"%4d ",Aptr->BSptr->Num);      fCustomPrint(OutFile,"%12s|",Aptr->BSptr->Name);      i=0;      for (DCLptr=Aptr->DC;DCLptr!=NULL;DCLptr=DCLptr->Next) {        DCptr=DCLptr->DC->Meter;        DCptrp=DCptr->To;        if (i!=0) fCustomPrint(OutFile,"%51s|",""); else i++;        fCustomPrint(OutFile,"DC %1s %-12s ",DCptr->Type,DCptr->Name);        fCustomPrint(OutFile,"   %1s %-12s   ",DCptrp->Type,DCptrp->Name);        P= -DCptr->P;        if(DCptr->Area!=Aptr) P= -P;        Aptr->SPg=Aptr->SPg+P;        fCustomPrint(OutFile,"%8.2lf ",P*Sn);        if(DCptr->Area!=Aptr) fCustomPrint(OutFile,"%2d\n",DCptr->Area->N);        else fCustomPrint(OutFile,"%2d\n",DCptrp->Area->N);      }      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;        Bi=(Eptr->B1+Eptr->B)*pow(Eptr->Tap,2.0)-B;        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;        Bj=Eptr->B+Eptr->B2-Bp;        if (Eptr->From==Eptr->Meter) {          From=Eptr->From;          To=Eptr->To;          P=Vi*Vi*(Gi+G)-Vi*Vj*(G*cos(di-dj)+B*sin(di-dj));        } else {          From=Eptr->To;          To=Eptr->From;          P=Vj*Vj*(Gj+Gp)-Vi*Vj*(Gp*cos(dj-di)+Bp*sin(dj-di));        }        if (i!=0) fCustomPrint(OutFile,"%51s|",""); else i++;        fCustomPrint(OutFile,"%4d ",From->Num);        fCustomPrint(OutFile,"%12s ",From->Name);        fCustomPrint(OutFile,"%4d ",To->Num);        fCustomPrint(OutFile,"%12s ",To->Name);        fCustomPrint(OutFile,"%1s ",Eptr->Ckt);        if(Eptr->Meter->Area!=Aptr) P= -P;        Aptr->SPg=Aptr->SPg+P;        fCustomPrint(OutFile,"%8.2lf ",P*Sn);        if(From->Area!=Aptr) fCustomPrint(OutFile,"%2d\n",From->Area->N);        else fCustomPrint(OutFile,"%2d\n",To->Area->N);      }      if(i==0) fCustomPrint(OutFile,"\n");      else fCustomPrint(OutFile,"%51s| MW Export = %-10.2lf  MW Sched. = %-10.2lf\n","",Aptr->SPg*Sn,Aptr->P*Sn);    }  }  if (dataPtr->DCbus!=NULL) {    fCustomPrint(OutFile,"\n\n                                  ***** DC RESULTS *****\n");    fCustomPrint(OutFile,"                   L=lower limit    H=higher limit      O=over limit    U=under limit\n");    fCustomPrint(OutFile,"---|--|----|------------|--------|-|--|--|--------|--------|--------|--------|--------|--------|---------\n");    fCustomPrint(OutFile,"  i  A    j AC Bus       DC Bus   C S1 S2    Vd       Id       P        Q      Alpha    Gamma      Tap   \n");    fCustomPrint(OutFile,"     n      Name         Name     v         (KV)      (A)     (MW)    (MVAR)   (deg)    (deg)      (pu)  \n");    i=0;    for(DCptrR=dataPtr->DCbus;DCptrR!=NULL;DCptrR=DCptrR->Next){      DCptrI=DCptrR->To;      if(!strcmp(DCptrR->Type,"R")){    fCustomPrint(OutFile,"---|--|----|------------|--------|-|--|--|--------|--------|--------|--------|--------|--------|---------\n");        fCustomPrint(OutFile,"%3d ",++i);        for (j=1;j<=2;j++) {          if(j==1) {            DCptr=DCptrR;            DCptrp=DCptrI;          }          else {            DCptr=DCptrI;            DCptrp=DCptrR;            fCustomPrint(OutFile,"%4s","");          }          if(DCptr->Area!=NULL) fCustomPrint(OutFile,"%2d ",DCptr->Area->N);          else fCustomPrint(OutFile,"%2d ",0);          fCustomPrint(OutFile,"%4d %12s ",DCptr->AC->Num,DCptr->AC->Name);          fCustomPrint(OutFile,"%8s ",DCptr->Name);          fCustomPrint(OutFile,"%1s ",DCptr->Type);          fCustomPrint(OutFile,"%2s ",DCptr->Cont1);          fCustomPrint(OutFile,"%2s ",DCptr->Cont2);          fCustomPrint(OutFile,"%8.2lf ",DCptr->Vd*DCptr->Vn);          fCustomPrint(OutFile,"%8.2lf ",DCptr->Id*Sn/DCptr->Vn*1000);          fCustomPrint(OutFile,"%8.2lf ",DCptr->P*Sn);          fCustomPrint(OutFile,"%8.2lf ",DCptr->Q*Sn);          fCustomPrint(OutFile,"%8.2lf",DCptr->Alfa/K3);          if(DCptr->Alfa<=DCptr->AlfaMin) fCustomPrint(OutFile,"L");          else if(DCptr->Alfa>=DCptr->AlfaMax) fCustomPrint(OutFile,"H");          else fCustomPrint(OutFile," ");          fCustomPrint(OutFile,"%8.2lf",DCptr->Gamma/K3);          if(DCptr->Gamma<=DCptr->GammaMin) fCustomPrint(OutFile,"L");          else fCustomPrint(OutFile," ");          fCustomPrint(OutFile,"%8.4lf",DCptr->Tap);          if(DCptr->Tap==DCptr->TapMin) fCustomPrint(OutFile,"L");          else if(DCptr->Tap==DCptr->TapMax) fCustomPrint(OutFile,"H");          else if(DCptr->Tap<DCptr->TapMin) fCustomPrint(OutFile,"U");          else if(DCptr->Tap>DCptr->TapMax) fCustomPrint(OutFile,"O");          else fCustomPrint(OutFile," ");          fCustomPrint(OutFile,"\n");        }      }    }  }                                        /* FACTS */  if(dataPtr->SVCbus!=NULL){    fCustomPrint(OutFile,"\n\n                        ***** SVC RESULTS *****\n\n");    fCustomPrint(OutFile,"                         L=lower limit    H=higher limit\n\n");    fCustomPrint(OutFile,"---|--|----|------------|------|------|----|------------|------|------|--------|--------|--------\n");    fCustomPrint(OutFile,"  i  A    j Cont. Bus      Vj     dj      k SVC Bus        Vk    dk     Qsvc    Alpha     Bv   \n");    fCustomPrint(OutFile,"     n      Na    me      (pu)   (deg)      Name          (pu)  (deg)  (MVar)   (deg)    (pu)  \n");    i=0;    for(SVCptr=dataPtr->SVCbus;SVCptr!=NULL;SVCptr=SVCptr->Next){      fCustomPrint(OutFile,"---|--|----|------------|------|------|----|------------|------|------|--------|--------|--------\n");      fCustomPrint(OutFile,"%3d ",++i);      if(SVCptr->From->Area!=NULL) fCustomPrint(OutFile,"%2d ",SVCptr->From->Area->N);      else fCustomPrint(OutFile,"%2d ",0);      fCustomPrint(OutFile,"%4d %12s ",SVCptr->Ctrl->Num,SVCptr->Ctrl->Name);      fCustomPrint(OutFile,"%6.4lf %6.2lf ",SVCptr->Ctrl->V,SVCptr->Ctrl->Ang/K3);      fCustomPrint(OutFile,"%4d %12s ",SVCptr->From->Num,SVCptr->Name);      fCustomPrint(OutFile,"%6.4lf %6.2lf ",SVCptr->From->V,SVCptr->From->Ang/K3);      fCustomPrint(OutFile,"%8.2lf ",SVCptr->Qsvc*Sn);      fCustomPrint(OutFile,"%8.2lf",SVCptr->alpha_svc/K3);      if(SVCptr->alpha_svc<=SVCptr->AlphaMin)      fCustomPrint(OutFile,"L");      else if(SVCptr->alpha_svc>=SVCptr->AlphaMax) fCustomPrint(OutFile,"H");      else                                         fCustomPrint(OutFile," ");      fCustomPrint(OutFile,"%8.4lf ",SVCptr->Bv);      fCustomPrint(OutFile,"\n\n");    }  }  if(dataPtr->TCSCbus!=NULL){    fCustomPrint(OutFile,"\n\n                                             ***** TCSC RESULTS *****\n\n");    fCustomPrint(OutFile,"                                              L=lower limit    H=higher limit\n\n");    fCustomPrint(OutFile,"---|--|----|------------|------|------|----|------------|------|------|--------|--------|--------|--------|--------|--------|--------|----|--------\n");    fCustomPrint(OutFile,"  i  A    k From Bus       Vk     dk      m To Bus         Vm     dm    Ptcsc    Qtcsck   Qtcscm     Be     Alpha    Itcsc    delta_t Ctrl   Ctrl  \n");    fCustomPrint(OutFile,"     n      Name          (pu)   (deg)      Name          (pu)   (deg)  (MW)     (MVar)   (MVar)    (pu)    (deg)    (kA)      (deg)  mode    val  \n");    i=0;    for(TCSCptr=dataPtr->TCSCbus;TCSCptr!=NULL;TCSCptr=TCSCptr->Next){      fCustomPrint(OutFile,"---|--|----|------------|------|------|----|------------|------|------|--------|--------|--------|--------|--------|--------|--------|----|--------\n");      Vn=TCSCptr->From->KV;      Xc=TCSCptr->Xc;      Max=TCSCptr->Max;      fCustomPrint(OutFile,"%3d ",++i);      if(TCSCptr->From->Area!=NULL) fCustomPrint(OutFile,"%2d ",TCSCptr->From->Area->N);      else fCustomPrint(OutFile,"%2d ",0);      fCustomPrint(OutFile,"%4d %12s ",TCSCptr->From->Num,TCSCptr->From->Name);      fCustomPrint(OutFile,"%6.4lf %6.2lf ",TCSCptr->From->V,TCSCptr->From->Ang/K3);      fCustomPrint(OutFile,"%4d %12s ",TCSCptr->To->Num,TCSCptr->To->Name);      fCustomPrint(OutFile,"%6.4lf %6.2lf ",TCSCptr->To->V,TCSCptr->To->Ang/K3);      fCustomPrint(OutFile,"%8.2lf ",TCSCptr->Ptcsc*Sn);      fCustomPrint(OutFile,"%8.2lf ",TCSCptr->Qtcsck*Sn);      fCustomPrint(OutFile,"%8.2lf ",TCSCptr->Qtcscm*Sn);      fCustomPrint(OutFile,"%8.2lf ",TCSCptr->Be);      fCustomPrint(OutFile,"%8.2lf",TCSCptr->alpha_tcsc/K3);      if(TCSCptr->alpha_tcsc<=TCSCptr->AlphaMin)      fCustomPrint(OutFile,"L");      else if(TCSCptr->alpha_tcsc>=TCSCptr->AlphaMax) fCustomPrint(OutFile,"H");      else                                            fCustomPrint(OutFile," ");      fCustomPrint(OutFile,"%8.3lf ",TCSCptr->Itcsc*Sn/(sqrt(3.0)*Vn));      fCustomPrint(OutFile,"%8.4lf ",TCSCptr->delta_t/K3);      fCustomPrint(OutFile," %c  ",TCSCptr->Cont[0]);      if (!strcmp(TCSCptr->Cont,"X"))      fCustomPrint(OutFile," %8.3lf",100.0/(TCSCptr->Bset*Max*Xc));      else if (!strcmp(TCSCptr->Cont,"P")) fCustomPrint(OutFile," %8.3lf",TCSCptr->Control*Sn);      else if (!strcmp(TCSCptr->Cont,"I")) fCustomPrint(OutFile," %8.3lf",TCSCptr->Control*Sn/(sqrt(3.0)*Vn));      else if (!strcmp(TCSCptr->Cont,"D")) fCustomPrint(OutFile," %8.3lf",TCSCptr->Control/K3);      fCustomPrint(OutFile,"\n\n");    }  }  if(dataPtr->STATCOMbus!=NULL){    fCustomPrint(OutFile,"\n\n                                ***** STATCOM RESULTS *****\n\n");    fCustomPrint(OutFile,"                                  L=lower limit    H=higher limit\n\n");    fCustomPrint(OutFile,"---|--|----|------------|------|------|----|------------|------|--------|--------|--------|--------|--------|--------|--------------|--------\n");    fCustomPrint(OutFile,"  i  A    j Cont. Bus      Vj     dj      l STATCOM Bus   Vinv     K       Vdc     Alpha      P        Q        I      I (pu w.r.t.    Theta \n");    fCustomPrint(OutFile,"     n      Name          (pu)   (deg)      Name          (pu)    (pu)     (pu)    (deg)     (MW)    (MVar)    (kA)    STATCOM base)   (deg) \n");    i=0;    for(STATCOMptr=dataPtr->STATCOMbus;STATCOMptr!=NULL;STATCOMptr=STATCOMptr->Next){      fCustomPrint(OutFile,"---|--|----|------------|------|------|----|------------|------|--------|--------|--------|--------|--------|--------|--------------|--------\n");      fCustomPrint(OutFile,"%3d ",++i);      if(STATCOMptr->From->Area!=NULL) fCustomPrint(OutFile,"%2d ",STATCOMptr->From->Area->N);      else fCustomPrint(OutFile,"%2d ",0);      fCustomPrint(OutFile,"%4d %12s ",STATCOMptr->Ctrl->Num,STATCOMptr->Ctrl->Name);      fCustomPrint(OutFile,"%6.4lf %6.2lf ",STATCOMptr->Ctrl->V,STATCOMptr->Ctrl->Ang/K3);      fCustomPrint(OutFile,"%4d %12s ",STATCOMptr->From->Num,STATCOMptr->Name);      fCustomPrint(OutFile,"%6.4lf ",STATCOMptr->k*STATCOMptr->Vdc);      fCustomPrint(OutFile,"%8.6lf ",STATCOMptr->k);      KV=STATCOMptr->From->KV;      fCustomPrint(OutFile,"%8.6lf ",STATCOMptr->Vdc);      fCustomPrint(OutFile,"%8.3lf ",STATCOMptr->alpha/K3);      fCustomPrint(OutFile,"%8.4lf ",STATCOMptr->P*Sn);      fCustomPrint(OutFile,"%8.2lf ",STATCOMptr->Q*Sn);      Q=STATCOMptr->Q;      fCustomPrint(OutFile,"%8.3lf ",STATCOMptr->I*Sn/(sqrt(3.0)*KV));      fCustomPrint(OutFile,"      %8.3lf",STATCOMptr->I*Sn/STATCOMptr->MVA);      if(STATCOMptr->I>=STATCOMptr->Imin && Q<0)      fCustomPrint(OutFile,"L");      else if(STATCOMptr->I>=STATCOMptr->Imax && Q>0) fCustomPrint(OutFile,"H");      else                                            fCustomPrint(OutFile," ");      theta=STATCOMptr->theta;      if (theta>=0) vals=1.00;      else          vals=-1.00;      if (fabs(theta)>2*PI) theta=theta-vals*floor(fabs(theta)/(2*PI))*2*PI;      if (fabs(theta)>PI) theta=theta-vals*2*PI;      fCustomPrint(OutFile,"%8.3lf ",theta/K3);      fCustomPrint(OutFile,"\n\n");    }  }  if (OutFile!=NULL) fclose(OutFile);#ifdef WINDOWS  delete[] File1;#else  free(File1);#endif}/* --------------- WriteSolution ----------------- */#ifdef ANSIPROTOvoid WriteSolution(INDEX Iter,char *File,char *str)#elsevoid WriteSolution(Iter,File,str)INDEX Iter;char *File,*str;#endif{  //fclose(OutputHomot);  if(!ExistParameter('s')) Output(Iter,File,str);  if(ExistParameter('w')||ExistParameter('W')) IEEE();  if(ExistParameter('J')||ExistParameter('j')) WriteJac();}

⌨️ 快捷键说明

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