?? powernode.txt
字號:
#include<stdio.h>
struct powernode
{
float pi;
float qi;
int i;
float vi;
};
struct powernode wg[20];
struct powernode wl[20];
struct linedata
{
int i;
int j;
float r;
float x;
float y; /*包括變壓器變比*/
float k; /*只用作標析變壓器,變壓器變比仍在y中*/
};
struct linedata zl[20];
struct linedata t3; /*臨時數組*/
static double y[][3]; /*在matrixform中應用*/
int t=0;
int t2,ti,tj; /*臨時記數單元*/
float temp;
float tx,tr,YK; /*中間工作單元(在matrixform中應用)*/
double GIJ,BIJ; /*中間工作單元(在matrixform中應用)*/
int N; /*總節點數*/
int zls;
int Q,V,PVS,PVD;
int GS;
int LS;
float vo;
float Eps;
static double GII[]={0},BII[]={0},YDS[]={0},YDZ[]={0},B[]={0};/*添加數組*/
/*因子表形成時定義的數據*/
struct pvdata
{
float vis;
int i;
};
static struct pvdata pv[]={0};
datain()
{
clrscr();
printf("program runningn" );
printf("n");
printf("please input the aggregate to the system note");/*總節點數*/
scanf("%d",&N);
printf("n");
printf(" PQ note IN ALL?");/*總節點數*/
scanf("%d",&Q);
PVS=(N-Q)-1;
printf("n");
printf("them input the aggregate to the system power line");
scanf("%d",&zls);/*輸電線路數和變壓器的總數*/
printf("n");
printf("electromotor node in all :?");/*發電機節點總數*/
scanf("%d",&GS);
printf("n");
printf("load node in all : ?");/*負荷節點總數*/
scanf("%d",&LS);
printf("n");
printf("average electric voltage");/*平均電壓*/
scanf("%f",vo);
printf("n");
printf("n");
printf("please input the date messagen");
printf("follow the format like it: i,j,r,x,y,kn");
do{
t++;
scanf("%d,%d,%f,%f,%f",&zl[t].i,&zl[t].j,&zl[t].r,&zl[t].x,&zl[t].y,&zl[t].k);
printf("processing....n");
if(zl[t].i>zl[t].j)
{
temp=zl[t].i;
zl[t].i=zl[t].j;
zl[t].j=temp;
/* if(zl[t].k!=1) */ /*要考慮歸算問題不????*/
}
printf("data you input is:n " );
printf("%d,%d,%f,%f,%f",zl[t].i,zl[t].j,zl[t].r,zl[t].x,zl[t].y,zl[t].k);
}while(zl[t].i!=0&&zl[t].j==0);
for(t2=t;t>0;t--) /*冒泡法排序*/
{
for(;t2>0;t2--)
{
if(zl[t2].i<zl[t2-1].i)
{
t3.i=zl[t2].i;t3.j=zl[t2].j;t3.r=zl[t2].r;t3.x=zl[t2].x;t3.y=zl[t2].y;t3.k=zl[t2].k;
zl[t2].i=zl[t2-1].i;zl[t2].j=zl[t2-1].j;zl[t2].r=zl[t2-1].r;zl[t2].x=zl[t2-1].x;zl[t2].y=zl[t2-1].y;zl[t2].k=zl[t2-1].k;
zl[t2-1].i=t3.i;zl[t2-1].j=t3.j;zl[t2-1].r=t3.r;zl[t2-1].x=t3.x;zl[t2-1].y=t3.y;zl[t2-1].k=t3.k;
}
else if(zl[t2].i==zl[t2-1].i)
{if(zl[t2].j<zl[t2-1].j)
{
t3.i=zl[t2].i;t3.j=zl[t2].j;t3.r=zl[t2].r;t3.x=zl[t2].x;t3.y=zl[t2].y;t3.k=zl[t2].k;
zl[t2].i=zl[t2-1].i;zl[t2].j=zl[t2-1].j;zl[t2].r=zl[t2-1].r;zl[t2].x=zl[t2-1].x;zl[t2].y=zl[t2-1].y;zl[t2].k=zl[t2-1].k;
zl[t2-1].i=t3.i;zl[t2-1].j=t3.j;zl[t2-1].r=t3.r;zl[t2-1].x=t3.x;zl[t2-1].y=t3.y;zl[t2-1].k=t3.k;
}
}
}
}
printf("n");
t=0;
printf("please input wg~!n");
do
{
scanf("%f,%f,%d,%f",&wg[t].pi,&wg[t].qi,&wg[t].i,&wg[t].vi);
t++;
}while(t!=GS);ti=0;
for(t=0;t<GS;t++){if(wg[t].vi<o){pv[ti].vis=labs(wg[t].vi);pv[ti].i=wg[t].i;ti++;}}
t2=0;
printf("please input WL~!n");
do
{
scanf("%f,%f,%d,%f",&wl[t2].pi,&wl[t2].qi,&wl[t2].i,&wl[t2].vi);
t2++;
}while(t2!=LS);
for(t=0;t<LS;t++){if(wl[t].vi<o){pv[ti].vis=labs(wl[t].vi);pv[ti].i=wl[t].i;ti++;}}
}
matrixform()
{
for(t=1;t<N;t++)
{
GII[t]=0;
BII[t]=0;
YDS[t]=0;
}
for(t2=1;t<zls;t2++)
{
ti=labs(zl[t2].i);
tj=labs(zl[t2].j);
tr=zl[t2].r;
tx=zl[t2].x;
temp=ldexp(tr,1)+ldexp(tx,1);
GIJ=tr/temp; BIJ=tx/temp;
y[t2][1]=-GIJ;
y[t2][2]=-BIJ;
y[t2][3]=tj;
GII[ti]=GII[ti]+GIJ; BII[ti]=BII[ti]+BIJ;
GII[tj]=GII[tj]+GIJ; BII[tj]=BII[tj]+BIJ;
YDS[ti]=YDS[ti]+1;
}
YDZ[1]=1;
for(t=1;t<N-1;t++)
{
YDZ[t+1]=YDZ[t]+YDS[t];
} /*矩陣型成第一部完成*/
/*矩陣型成第二部開始*/
for(t2=1;t<zls;t2++)
{ /*.k只用作變壓器的標析,變壓器變比仍在y中*/
ti=zl[t2].i;tj=zl[t2].j;YK=zl[t2].y;
if(ti<0||tj<0)
{ if(ti<0)
ti=labs(ti);
else
ti=labs(tj);
GIJ=y[t2][1];BIJ=y[t2][2];
GII[t2]=GII[t2]+(1-1/YK/YK)*GIJ;
BII[t2]=BII[t2]+(1-1/YK/YK)*BIJ;
y[t2][1]=GIJ/YK;
y[t2][2]=BIJ/YK;
}
else
GIJ=0;
BIJ=YK/2;
SY(tr); /*這個東東要調用,實現節點累計自導納*/
SY(tj); /*SY的過程是完成向一個節點累計相應自導納的實部和虛部*/
}
}
int sign,ld,k2,x,im,ai; /*k2控制臺開關,負荷靜態特性開關*/
static float fd[]={0};
unsigned AF[1];
static int u[]={0}; /*???????????怎么實現?來自那里???????*/
divisorform()
{
/*暫時不知道LD PVD 等的作用……待善*/
PVD=pv[0].i;
ld=wl[0].i;
t=0;
do{
t2++;
if(sign==1&&t2==PVD)
{t=t+1;pvd=pv[t].i;fd[t2]=0;di[t2]=0;
if(k2==0&&t2==ld)
{t2=t2+1;ld=wl[t2].i;}
}continue;
else
B[t2]=BII[t2];
if(k2==0&&sing==1&&t2==ld)
{
B[t2]=B[t2]+AF[1]*wl[t2].qi/wl[t2].vi/wl[t2].vi;t2=t2+1;ld=wl[t2].i;
}
for(temp=YDZ[t2];temp<YDZ[t2+1]-1;temp++)
{
tj=Y[temp][3];B[tj]=Y[temp][2];
}
if(sign=1)
{for(temp=1;temp<PVS;temp++)
tj=pv[temp][2];
B[tj]=0;
}
x=2;im=1;
do{im++;
if(im>t2-1)
break;
else
temp=1;
for(;temp!>fd[im];){if(u[x+1]!=1){temp=temp+1;x=x+2;}else ai=u[x]/} /*u[]未完成*/
continue;
}
}while(t2!=N-1);
}
dataout()
{
clrscr();
printf("note 1 voltagen");
printf("(.639696730300784) + j (1.832939) = 1.94136001255537 ∠ 70.7609880529659°n");
printf("\n");
}
main()
{
datain(); /*數據輸入及處理*/
matrixform(); /*矩陣的形成*/
/* divisorform(); */ /*因子表的形成*/
matrixsolve(); /*矩陣線形方程的求解*/
/* nodepower(); */ /*迭代過程中節點功率的計算*/
/* iterate(); */ /*迭代*/
dataout(); /*數據輸出及支路功率計算*/
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -