潮流计算电力系统大作业C++编写Word文档下载推荐.docx

上传人:b****4 文档编号:17156217 上传时间:2022-11-28 格式:DOCX 页数:17 大小:66.49KB
下载 相关 举报
潮流计算电力系统大作业C++编写Word文档下载推荐.docx_第1页
第1页 / 共17页
潮流计算电力系统大作业C++编写Word文档下载推荐.docx_第2页
第2页 / 共17页
潮流计算电力系统大作业C++编写Word文档下载推荐.docx_第3页
第3页 / 共17页
潮流计算电力系统大作业C++编写Word文档下载推荐.docx_第4页
第4页 / 共17页
潮流计算电力系统大作业C++编写Word文档下载推荐.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

潮流计算电力系统大作业C++编写Word文档下载推荐.docx

《潮流计算电力系统大作业C++编写Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《潮流计算电力系统大作业C++编写Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。

潮流计算电力系统大作业C++编写Word文档下载推荐.docx

以支路为基本单位,按潮流方向输入数据:

以下例示意:

2//支路个数

1,110,118,8.5,20.5,0.000564,0,0,1,0,0//线路等效的支路

2,11,110,1.22,20.2,0,40,30,10,0.17,1.7//变压器等效的支路

.//按此方式知道输入所有的支路

.//输入从上到下的顺序为潮流在

.//线型开式网络中的流动方向

/*

第一行输入支路个数,回车

第二行至后输入各个支路参数,回车分隔不同支路;

各行输入的支路参数顺序是:

支路编号,末端电压,始端电压,线路等效电阻,线路等效感抗,线路等效容纳,末端输入有功,末端输入无功,变比,变压器有功励磁损耗,变压器无功励磁损耗

对于线路等效电路:

变压器有功/无功损耗输入零,变比输入1;

对于变压器等效电路:

所有的参数均归算至高压侧,Rt,Xt对应输入线路等效电阻/感抗的位置,线路等效容抗为零;

对于个节点的引出负荷:

输入至以此节点为末节点的支路的末端输入有功/无功部分;

*/

********************************************************************************************************************************************************

输出文件格式说明:

输出的内容包括

(1)支路信息:

每个支路元件的始端有功、无功和末端有功、无功;

有功损耗无功损耗;

电压损耗;

(2)全网信息:

全网的总电源有功、总负荷有功、有功损耗、网损率;

(3)迭代信息:

每次完整迭代后的所有内容;

具体在输出文件中都明确标出。

*********************************************************************************************************************************************************

程序中变量定义说明:

类中定义的变量

classline_part{//定义支路类

doubleU[2];

//支路电压降落:

U[0]电压降落横分量,U[1]电压降落纵分量

doublek;

//变压器变比

doubleval;

//支路排序

doubleU_end;

//支路末端电压

doubleU_begin;

//支路首段电压

doubleX[3];

//支路等效阻抗:

X[0]电阻,X[1]感抗,X[2]容纳

doubleS_end[2];

//支路末端功率:

S_end[0]有功,S_end[1]无功

doubleS_begin[2];

//支路首段功率:

S_begin[0]有功,S_begin[1]无功

doubleS0[2];

//变压器励磁损耗:

S0[0]有功,S0[1]无功

doubleS_org[2];

//支路末端负载:

S_org[0]有功,S_org[1]无功

line_part*lchild,*rchild;

//支路的后继两个支路

}

classBinTree{//定义树类

voidPreOrder(){PreOrder(root);

};

//树的先序遍历修改电压

voidPostOrder(){PostOrder(root);

//树的后序遍历修改潮流

voiddisplay(){display(root);

//树的先序遍历显示数据

line_part*root;

//树的根,是一个支路类

主函数中定义的数据

ofstreamoutfile;

//输出数据流定

ifstreaminfile;

//输入数据流定

constintM(a);

//支路个数常量

主程序(复制粘贴到C++就能用)

**************************************************************************************************************************************************************

#include<

fstream.h>

iostream.h>

math.h>

doublep_cost_all=0;

doublesqr(doublex){//平方计算函数

returnx*x;

private:

public:

line_part(){

val=0;

U_end=0;

U_begin=0;

X[0]=0;

X[1]=0;

X[2]=0;

S_end[0]=S_org[0]=0;

S_end[1]=S_org[1]=0;

S_begin[0]=0;

S_begin[1]=0;

k=1;

S0[0]=0;

S0[1]=0;

U[0]=0;

U[1]=0;

lchild=rchild=NULL;

}

line_part(doublevall,doubleu_end=0,doubleu_begin=0,doubler=0,

doublex=0,doubleb=0,doublePe=0,doubleXe=0,doubleK=0,doubleP0=0,doubleQ0=0){

val=vall;

U_end=u_end;

U_begin=u_begin;

X[0]=r;

X[1]=x;

X[2]=b;

S_end[0]=S_org[0]=Pe;

S_end[1]=S_org[1]=Xe;

S_begin[0]=0;

S_begin[1]=0;

k=K;

S0[0]=P0;

S0[1]=Q0;

U[0]=0;

U[1]=0;

lchild=rchild=NULL;

friendclassBinTree;

friendvoidpass_U(line_part*a,line_part*b,line_part*c);

//电压传递函数

friendvoidpass_w(line_part*a,line_part*b,line_part*c);

//功率传递函数

friendvoidpass_U2(line_part*a,line_part*b);

friendvoidpass_w2(line_part*a,line_part*b);

 

voidSbegin(){//支路首段功率计算函数

doubleUend,I2;

Uend=k*U_end;

I2=(sqr(S_end[0])+sqr(S_end[1]-sqr(U_end)*X[2]/2))/sqr(Uend);

S_begin[0]=S_end[0]+I2*X[0]+S0[0];

S_begin[1]=S_end[1]+I2*X[1]+S0[1]-sqr(U_begin)*X[2]/2-sqr(U_end)*X[2]/2;

};

voidUend(){//支路末端电压计算函数

doubleU_heng(0),U_zong(0);

doublep_begin,q_begin;

p_begin=S_begin[0]-S0[0];

q_begin=S_begin[1]+sqr(U_begin)*X[2]/2-S0[1];

U_heng=(p_begin*X[0]+q_begin*X[1])/U_begin;

//U_heng即是△u2

U_zong=(p_begin*X[1]-q_begin*X[0])/U_begin;

//U_zong即是δu2

U_end=sqrt(sqr(U_begin-U_heng)+sqr(U_zong))/k;

U[0]=U_heng;

U[1]=U_zong;

doubleget_val(){//返回支路编号

if(this==0){return-1;

}else{

if(val>

0&

&

val<

100){returnval;

}

elsereturn-1;

doubleget_Uend(){//返回支路末端电压

returnU_end;

doubleget_Ubegin(){//返回支路首段电压

returnU_begin;

doubleget_Pbegin(){//返回支路首段有功

returnS_begin[0];

doubleget_Pend(){//返回支路末端有功

returnS_end[0];

doubleget_Qbegin(){//返回支路首段无功

returnS_begin[1];

doubleget_Qend(){//返回支路末端无功

returnS_end[1];

doubleget_Pcost(){//返回支路有功损耗

returnS_begin[0]-S_end[0];

doubleget_Qcost(){//返回支路无功损耗

returnS_begin[1]-S_end[1];

line_part*get_lchild(){//返回支路无功损耗

returnlchild;

line_part*get_rchild(){//返回支路无功损耗

returnrchild;

voidpass_U(line_part*a,line_part*b,line_part*c){

(*c).U_begin=(*a).U_end;

(*b).U_begin=(*a).U_end;

voidpass_w(line_part*a,line_part*b,line_part*c){

(*a).S_end[0]=(*b).S_begin[0]+(*c).S_begin[0]+(*a).S_org[0];

(*a).S_end[1]=(*b).S_begin[1]+(*c).S_begin[1]+(*a).S_org[1];

voidpass_U2(line_part*a,line_part*b){

voidpass_w2(line_part*a,line_part*b){

(*a).S_end[0]=(*b).S_begin[0]+(*a).S_org[0];

(*a).S_end[1]=(*b).S_begin[1]+(*a).S_org[1];

classBinTree{

friendvoidpass_U(line_part*,line_part*,line_part*);

friendvoidpass_w(line_part*,line_part*,line_part*);

BinTree(){line_part*aa=newline_part(0,0,0,0,0,0,0,0,0,0,0);

root=aa;

line_part*Getroot(){returnroot;

voidinsertline_part(doublevall,doubleu_end=0,doubleu_begin=0,doubler=0,

doublex=0,doubleb=0,doublePe=0,doubleXe=0,

doubleK=0,doubleP0=0,doubleQ0=0){

insertline_part(root,vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);

voidPreOrder(){PreOrder(root);

voidPostOrder(){PostOrder(root);

voiddisplay(){display(root);

line_part*root;

voidinsertline_part(line_part*&

t,doublevall,doubleu_end,doubleu_begin,doubler,

doublex,doubleb,doublePe,doubleXe,

doubleK,doubleP0,doubleQ0);

voidPreOrder(line_part*&

t);

voidPostOrder(line_part*t);

voiddisplay(line_part*&

voidBinTree:

:

insertline_part(line_part*&

t,doublevall,doubleu_end=0,doubleu_begin=0,doubler=0,

doubleK=0,doubleP0=0,doubleQ0=0){//插入节点

doubleass=t->

get_val();

if(t==0||t->

get_val()<

=0){

t=newline_part(vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);

elseif(vall<

t->

get_val()){

insertline_part(t->

lchild,vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);

else{

rchild,vall,u_end,u_begin,r,x,b,Pe,Xe,K,P0,Q0);

///////////////////////////////////////////////////////////////////////////////////////////////////////////////

display(line_part*&

t){

if(t->

get_val()>

100)

{

display(t->

lchild);

rchild);

ofstreamoutfile1;

outfile1.open("

e:

\data.txt"

ios:

ate);

p_cost_all+=t->

get_Pcost();

doubleU;

//计算并存放各个节点的电压相角(始端为零)

U=atan2(t->

U[1],(t->

get_Ubegin()-t->

U[0]))/3.1415926*180;

outfile1<

<

"

支路"

电压相角"

"

U<

endl;

首端电压"

get_Ubegin()<

//计算并存放各个支路的首端电压

末端电压"

get_Uend()<

//计算并存放各个支路的末端电压

doubleU_cost;

//计算并存放各个支路的电压损耗

U_cost=t->

get_Uend();

电压损耗"

U_cost<

始端有功"

get_Pbegin()<

始端无功"

get_Qbegin()<

末端有功"

get_Pend()<

末端无功"

get_Qend()<

doubleP_cost;

//计算并存放各个支路的有功损耗

P_cost=t->

有功损耗"

P_cost<

doubleQ_cost;

//计算并存放各个支路的无功损耗

Q_cost=t->

get_Qcost();

无功损耗"

Q_cost<

outfile1.close();

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////

PreOrder(line_part*&

t){//先序遍历二叉树修改电压

if(t->

{

if(t->

get_lchild()->

{

if(t->

get_rchild()->

{

t->

Uend();

pass_U(t,t->

lchild,t->

lchild->

rchild->

}

else{

pass_U2(t,t->

}

else

{

else{}

PreOrder(t->

PostOrder(line_part*t

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1