电力系统通用潮流计算C语言程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电力系统通用潮流计算C语言程序
(类型1=PV节点,2=PQ节点,3=平衡节点)struct BUS {int busno;int type;float Pd;float Qd;};//发电机数据节点号有功发电电压幅值struct Generator{int busno;float Pg;float Vg;};//支路信息节点I 节点J R X B/2 kstruct Line{int busi;int busj;float R;float X;float B;float k;};//deltaP deltaQ deltaV^2//void fun1(double YG[][50],double
YB[][50],double e[],double f[],int type[],int N,double
W[],double P[],double Q[],double V[]){double
dP=0,dQ=0,dV=0;int i,j;for(i=0;i A=0,B=0;for(j=0;j f[i]*A+e[i]*B; if(type[i]==1) W[2*i+1]=dQ;else W[2*i+1]=dV;}}//Jacobi矩阵//void Jacobi(double YG[][50],double YB[][50],double e[50],double f[50],int type[50],int N ,double Ja[100][101]){ int i,j; for(i=0;i =1){ Ja[2*i][2*j]=-(YG[i][j]*e[i]+YB[i][j]*f[i]); Ja[2*i][2*j+1]=YB[i][j]*e[i]-YG[i][j]*f[i]; Ja[2*i+1][2*j]=Ja[2*i][2*j+1]; Ja[2*i+1][2*j+1]=- Ja[2*i][2*j]; } else { Ja[2*i][2*j]=- YG[i][j]*e[i]+YB[i][j]*f[i]; Ja[2*i][2*j+1]=YB[i][j]*e[i]-YG[i][j]*f[i]; Ja[2*i+1][2*j+1]=Ja[2*i+1][2*j]=0; } } else { double a[50]={0},b[50]={0}; for(int k=0;k b[i]+=(YG[i][k]*f[k]+YB[i][k]*e[k]); Ja[2*i][2*j]=-a[i]-YG[i][i]*e[i]-YB[i][i]*f[i]; Ja[2*i][2*j+1]=- b[i]+YB[i][i]*e[i]-YG[i][i]*f[i]; if(type[i]==1){ Ja[2*i+1][2*j]=b[i]+YB[i][i]*e[i]- YG[i][i]*f[i]; Ja[2*i+1][2*j+1]=- a[i]+YG[i][i]*e[i]+YB[i][i]*f[i]; } else { Ja[2*i+1][2*j]=-2*e[i]; Ja[2*i+1][2*j+1]=- 2*f[i]; } } } } }}//高斯消元法解方程组函数//void gauss(double a[][101],int n) { int i,j,k;double c; for(k=0;k { c=a[k][k]; for(j=k;j<=n;j++) a[k][j]/=c; for(i=k+1;i { c=a[i][k]; for(j=k;j<=n;j++) a[i][j]-=c*a[k][j]; } } a[n-1][n]/=a[n-1][n-1]; for(k=n-2;k>=0;k--) for(j=k+1;j a[k][n]-=a[k][j]*a[j][n]; } void main(){ifstream fin;int N=0,GS=0,LD=0,ZLs=0; //节点数发电机数负荷数支路数//BUS *B; Generator *G;Line *L;//从文本中读入原始数据到数组中//fin、open("C:\\data、txt");if(!fin) { cout<<"输入数据文件不存在!"< m3[50],m4[50],m5[50],m6[50];int i,j,l;for(i=0;;i++){fin>>m1[i];if(m1[i]==0)break;fin>>m2[ i]>>m3[i]>>m4[i];N++;}B =new BUS[N];for (i=0;i for(i=0;;i++){fin>>m1[i];if(m1[i]==0)break;fin>>m4[i]>>m3 [i];GS++;}G =new Generator[GS];for (i=0;i Vg=m3[i];}for(i=0;;i++){fin>>m1[i];if(m1[i]==0)break;fin> >m2[i]>>m3[i]>>m4[i]>>m5[i]>>m6[i];ZLs++;}L =new Line[ZLs];for (i=0;i B=m5[i];L[i]、k=m6[i]; }LD=N-GS;fin、close();//节点导纳矩