電力系統(tǒng)分析潮流計(jì)算程序匯總_第1頁
電力系統(tǒng)分析潮流計(jì)算程序匯總_第2頁
電力系統(tǒng)分析潮流計(jì)算程序匯總_第3頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#i nclude#in clude #in clude #define PI 3.14159 節(jié)點(diǎn)參數(shù)結(jié)構(gòu)體 structNodeTypeint N;節(jié)點(diǎn)號(hào)int Type;/節(jié)點(diǎn)類型 double e;電壓幅值 double f;電壓相角 double Pd;負(fù)荷有功 double Qd;負(fù)荷無功 double Ps;/出 力有功 double Qs;出力無功 double Be;/并聯(lián)電容的電抗值 ;支路參數(shù)結(jié)構(gòu)體structBra nchTypein tNbr;/支路號(hào) in tNl;/首節(jié)點(diǎn) int Nr;/末節(jié)點(diǎn) double R;支路電阻 double X;/支路電抗 doubl

2、e Bn;對(duì)地電抗 double Kt;/支路變比;* i nt n;/節(jié)點(diǎn)數(shù)intn PQ;/PQ 節(jié)點(diǎn)數(shù) intnPV;/PV 節(jié)點(diǎn)數(shù) intnbr;/支路數(shù) intn g;/發(fā)電機(jī)臺(tái)數(shù)int Mark=0;標(biāo)記支路參數(shù)是否已經(jīng)轉(zhuǎn)換double *G;導(dǎo)納矩陣G部分double *B;導(dǎo)納矩陣B部分全局變量聲明double *dS;功率不平衡量double *mid1,*mid2;求功率不平衡量時(shí)的中間變量double *Us;電壓初值double error=1;誤差值double iteratio n=0.000001;/誤差精度double *Jacob;雅克比矩陣double *i

3、 nvJac;/雅克比矩陣的逆double *dfe;/節(jié)點(diǎn)電壓修正值structNodeType *Node; 讀入時(shí)的節(jié)點(diǎn)參數(shù)結(jié)構(gòu)體 structBra nchType *Bra nch;/讀入 時(shí)的支路參數(shù)結(jié)構(gòu)體*void mai n()voidLoadData();void FormY();形成導(dǎo)納矩陣 void DeltaS();求功率不平衡量 void FormJacob();形成雅克比矩陣 void In vJac();/求雅克比矩陣的逆 void UpdateU();/ 修正電壓值voidCalculatePQ();void Prin t1(double *,i nt); vo

4、id Prin t2(double *,i nt,i nt); in tkk;/迭代次數(shù)LoadData();FormY();prin tf(iterati on=%lfn,iterati on); kk=0;DeltaS();while(erroriterati on&kk50)FormJacob();主程序 UpdateU();DeltaS();kk+;printf(迭代次數(shù)為 %4dn,kk);CalculatePQ();prin tf(error=%en,error);*voidLoadData()in ti,j;in ttN,tType;double te,tf,tPd,tQd,tP

5、s,tQs,tBc;/用于重新排列節(jié)點(diǎn)信息的臨時(shí)變量 FILE *fp;/文件指針 char file name50=;printf(請(qǐng)輸入數(shù)據(jù)文件名:);sca nf(%s,file name);if(fp=fope n(file name,r)=NULL)prin tf(ca nnot ope n the file:data.txtn);return;fsca nf(fp,%d,&n);printf(節(jié)點(diǎn)個(gè)數(shù)為:%dn, n);為節(jié)點(diǎn)參數(shù)申請(qǐng)空間Node=(structNodeType *)malloc(sizeof(structNodeType)* n);讀取節(jié)點(diǎn)參數(shù)printf(調(diào)整前

6、的節(jié)點(diǎn)參數(shù)為:n);for(i=0;i n ;i+)fsca nf(fp,%d%d%lf%lf%lf%lf%lf%lf%lf,&Nodei.N,&N odei.Type,&Nodei.e,&Nodei.f,&Nodei.Pd,&N odei.Qd,&Nodei.Ps,&N odei.Qs,&N odei.Bc);計(jì)算PQ節(jié)點(diǎn)和PV節(jié)點(diǎn)的個(gè)數(shù)for(i=0;i n ;i+)if(Nodei.Type=1)nPQ+;else if(Nodei.Type=2)nPV+;printf(PQ 節(jié)點(diǎn)個(gè)數(shù):%dn,nPQ);printf(卩V 節(jié)點(diǎn)個(gè)數(shù):%dn,nPV);重新排列節(jié)點(diǎn)參數(shù)(冒泡法)for(j

7、=0;j n-1;j+)for(i=0;iNodei+1.Type)tN=Nodei.N;Nodei.N=Nodei+1.N;Nodei+1.N=tN; tType=Nodei.Type;Nodei.Type=Nodei+1.Type;Nodei+1.Type=tType; te=Nodei.e;Nodei.e=Nodei+1.e;Nodei+1.e=te;tf=Nodei.f;Nodei.f=Nodei+1.f;Nodei+1.f=tf; tPd=Nodei.Pd;Nodei.Pd=Nodei+1.Pd;Nodei+1.Pd=tPd; tQd=Nodei.Qd;Nodei.Qd=Nodei+

8、1.Qd;Nodei+1.Qd=tQd; tPs=Nodei.Ps;Nodei.Ps=Nodei+1.Ps,Nodei+1.Ps=tPs; tQs=Nodei.Qs;Nodei.Qs=Nodei+1.Qs;Nodei+1.Qs=tQs; tBc=Nodei.Bc;Nodei.Bc=Nodei+1.Bc;Nodei+1.Bc=tBc;為電壓初值申請(qǐng)空間Us=(double *)malloc(sizeof(double)*(n-1);for(i=0;i n-1;i+)Usi=Nodei.e;讀取支路參數(shù)fsca nf(fp,%d,&n br);printf(支路個(gè)數(shù)為:%dn,nbr);為支路參數(shù)

9、申請(qǐng)空間Bran ch=(structBra nchType *)malloc(sizeof(structBra nchType)* nbr);/ 讀入的支路參數(shù) 結(jié)構(gòu)體讀入支路參數(shù)for(i=0;i n br;i+)fsca nf(fp,%d%d%d%lf%lf%lf%lf,&Bran chi.Nbr,&Bran chi.NI,&Bran chi.Nr,&B ran chi.R,&Bran chi.X, &Bran chi.B n,&Bran chi.Kt);支路節(jié)點(diǎn)號(hào)參數(shù)調(diào)整for(i=0;i n br;i+)Mark=0;for(j=0;j n ;j+)if(Bra nchi.Nl=No

10、dej.N&Mark=0)Bran chi.Nl=j+1;Mark=1;for(i=0;i n br;i+)Mark=0;for(j=0;j n ;j+)if(Bra nchi.Nr=Nodej.N&Mark=0)Bran chi.Nr=j+1;Mark=1;fclose(fp);*形成導(dǎo)納矩陣*voidFormY()in ti,j;double Z2;存儲(chǔ) ZA2=RA2+XA2G=(double *)malloc(sizeof(double *)*n); 為 G 申請(qǐng)空間 B=(double *)malloc(sizeof(double *)*n); 為 B 申請(qǐng)空間 for(i=0;i

11、n ;i+)Gi=(double *)malloc(sizeof(double)* n);Bi=(double *)malloc(sizeof(double)* n);初始化G、Bfor(i=0;i n ;i+)for(j=0;j n ;j+)Gij=O;Bij=O;計(jì)算非對(duì)角元素for(i=0;i n br;i+)Z2=Bra nchi.R*Bra nchi.R+Bra nchi.X*Bra nchi.X;if(Branchi.Kt=0) 非變壓器支路GBra nchi.Nl-1Bra nchi.Nr-1-=Bra nchi.R/Z2;BBra nchi.Nl-1Bra nchi.Nr-1+

12、=Bra nchi.X/Z2;GBra nchi.Nr-1Bra nchi.Nl-1=GBra nchi.Nl-1Bra nchi.Nr-1;BBra nchi.Nr-1Bra nchi.Nl-1=BBra nchi.Nl-1Bra nchi.Nr-1; else/變壓器支路GBra nchi.Nl-1Bra nchi.Nr-1-=Bra nchi.R/Z2/Bra nchi.Kt;BBra nchi.Nl-1Bra nchi.Nr-1+=Bra nchi.X/Z2/Bra nchi.Kt; GBra nchi.Nr-1Bra nchi.Nl-1=GBra nchi.Nl-1Bra nchi.

13、Nr-1; BBra nchi.Nr-1Bra nchi.Nl-1=BBra nchi.Nl-1Bra nchi.Nr-1; 計(jì)算對(duì)角元素for(i=0;i n ;i+)for(j=0;j n br;j+)Z2=Bra nchj.R*Bra nchj.R+Bra nchj.X*Bra nchj.X;if(Branchj.Kt=0&(Branchj.NI-1=i|Branchj.Nr-1=i)非變壓器支路Gii=Gii+Bra nchj. R/Z2;Bii=Bii-Bra nchj.X/Z2;else if(Branchj.Kt!=0&(Branchj.Nl-1=i|Branchj.Nr-1=i

14、)變壓器支路Gii=Gii+Bra nchj .R /Z2/Bra nchj.Kt;Bii=Bii-Bra nchj.X/Z2/Bra nchj.Kt;將對(duì)地電納加入到對(duì)角元素中for(i=0;i n br;i+)if(Branchi.Kt=0) 非變壓器支路BBra nchi.Nl-1Bra nchi.Nl-1+=Bra nchi.B n;BBra nchi.Nr-1Bra nchi.Nr-1+=Bra nchi.B n;else/變壓器支路BBra nchi.Nl-1Bra nchi.Nl-1-=(1-Branchi.Kt)/Branchi.Kt/Branchi.Kt/Branchi.X;

15、 BBranchi.Nr-1Branchi.Nr-1-=(Bra nchi.Kt-1)/Bra nchi.Kt/Bra nchi.X;將并聯(lián)電容加入到對(duì)角元素中for(i=0;i n ;i+)Bii=Bii+Nodei.Bc;*dcltaP deltaQ*void DeltaS()計(jì)算功率不平衡量in ti,j;為中間變量申請(qǐng)空間mid1=(double *)malloc(sizeof(double)* n);mid2=(double *)malloc(sizeof(double)* n);為功率不平衡量申請(qǐng)空間dS=(double *)malloc(sizeof(double)*2*(n-1

16、);求求功率不平衡量for(i=0;i n-1;i+)初始化中間變量mid1i=0;mid2i=0;for(j=0;j n ;j+)mid1i=mid1i+Gij*Nodej.e-Bij*Nodej.f; mid2i=mid2i+Gij*Nodej.f+Bij*Nodej.e; dS2*i=Nodei.Ps-Nodei.Pd-(Nodei.e*mid1i+Nodei.f*mid2i); if(i nPQ)dS2*i+1=Nodei.Qs-Nodei.Qd-(Nodei.f*mid1i-Nodei.e*mid2i); elsedS2*i+1=Usi*Usi-(Nodei.e*Nodei.e+No

17、dei.f*Nodei.f);error=0;for(i=0;i2*( n-1);i+)if(dSi0&error0&errordSi)error=dSi;*voidFormJacob()in ti,j;為雅克比行列式申請(qǐng)空間Jacob=(double *)malloc(sizeof(double *)*2*(n-1);for(i=0;i2*( n-1);i+)Jacobi=(double *)malloc(sizeof(double)*2* (n-1);初始化雅克比行列式雅克比矩陣for(i=0;i2*( n-1);i+)for(j=0;j2*( n-1);j+)Jacobij=0;for(

18、j=0;j n-1;j+)求 H,Nfor(i=0;i n-1;i+)if(i!=j)Jacob2*i2*j=Bij*Nodei.e-Gij*Nodei.f;Jacob2*i2*j+1=-Gij*Nodei.e-Bij*Nodei.f; elseJacob2*i2*i=Bii*Nodei.e-Gii*Nodei.f-mid2i; Jacob2*i2*i+1=-Gii*Nodei.e-Bii*Nodei.f-mid1i; 求 J,Lfor(i=0;i nPQ;i+)if(i!=j)Jacob2*i+12*j=Gij*Nodei.e+Bij*Nodei.f;Jacob2*i+12*j+1=Bij*

19、Nodei.e-Gij*Nodei.f; elseJacob2*i+12*i=Gii*Nodei.e+Bii*Nodei.f-mid1i;Jacob2*i+12*i+1=Bii*Nodei.e-Gii*Nodei.f+mid2i; 求 R,Sfor(i=nPQ;i n-1;i+)if(i=j)Jacob2*i+12*i=-2*Nodei.f;Jacob2*i+12*i+1=-2*Nodei.e;*voidI nv Jac()in ti,j,k;double temp;/中間變量為雅克比矩陣的逆申請(qǐng)空間invJac=(double *)malloc(sizeof(double *)*2*(n-1

20、);for(i=0;i2*( n-1);i+)in vJaci=(double *)malloc(sizeof(double)*2*( n-1);求逆for(i=0;i2*( n-1);i+)for(j=0;j2*( n-1);j+)if(i!=j)in vJacij=O;elsein vJacij=1;for(i=0;i2*( n-1);i+)for(j=0;j2*( n-1);j+)if(i!=j)temp=Jacobji/Jacobii;for(k=0;k2*( n-1);k+)Jacobjk-=Jacobik*temp;inv Jacjk-=i nvJacik*temp;for(i=0

21、;i2*( n-1);i+)if(Jacobii!=1)temp=Jacobii;for(j=0;j2*(n-1);j+)雅克比矩陣求逆inv Jacij=inv Jacij/temp;/*/*|z電*voidUpdateU()void In vJac();求雅克比矩陣的逆in ti,j;dfe=(double *)malloc(sizeof(double)2*(n-1);Inv Jac();for(i=0;i2*( n-1);i+)dfei=O;for(j=0;j2*( n-1);j+)dfei-=i nvJacij*dSj;for(i=0;i n-1;i+)Nodei.e+=dfe2*i+

22、1;Nodei.f+=dfe2*i;voidCalculatePQ()in ti,j;in ttN,tType;double te,tf,tPd,tQd,tPs,tQs,tBc;/用于重新排列節(jié)點(diǎn)信息的臨時(shí)變量計(jì)算平衡節(jié)點(diǎn)功率mid1 n-1=0;mid2 n-1=0;for(j=0;j n ;j+)mid1 n-1=mid1 n-1+G n-1j*Nodej.e-B n-1j*Nodej.f;mid2 n-1=mid2 n-1+G n-1j*Nodej.f+B n-1j*Nodej.e;壓修正Node n-1.Ps=Node n-1.e*mid1 n-1;Node n-1.Qs=-Node

23、n-1.e*mid2 n-1;計(jì)算PV節(jié)點(diǎn)的Qfor(i=nPQ;i n-1;i+)Nodei.Qs=Nodei.f*mid1i-Nodei.e*mid2i;將節(jié)點(diǎn)參數(shù)排列為按節(jié)點(diǎn)號(hào)從小到大排列for(j=0;jv n-1;j+)for(i=0;iNodei+1.N)tN=Nodei.N;Nodei.N=Nodei+1.N;Nodei+1.N=tN; tType=Nodei.Type;Nodei.Type=Nodei+1.Type;Nodei+1.Type=tType; te=Nodei.e;Nodei.e=Nodei+1.e;Nodei+1.e=te;tf=Nodei.f;Nodei.f=Nodei+1.f;Nodei+1.f=tf; tPd=Nodei.Pd;Nodei.Pd=No

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論