亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pf30.cpp

?? 潮流計算程序
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
//多平衡節點+普通PQ分解
#include "fstream.h"
#include "math.h"
#include "stdlib.h"
#include "iomanip.h"
#include "time.h"

#define LINEMAX 5000			//最大線路數
#define GENERATORMAX  500		//最大發電機數
#define LOADMAX 2000			//最大負荷數
#define NODEMAX 2000			//最大節點數
#define SWINGMAX 20				//最大平衡節點數
#define PVMAX   500				//最大PV節點數
#define NODEFACTOR	10			//導納矩陣中非零非對角元素的個數相對于
								//最大節點數(NODEMAX)的倍數.
#define Deg_to_Rad 0.017453292	//度到弧度的轉換系數
#define Rad_to_Deg 57.29577951	//弧度到度的轉換系數
#define SinglePai  3.14159265	//圓周率
#define DoublePai  6.2831853	//兩倍的圓周率	

struct Line			//線路參數結構定義
{
	int Node_No[2];	//線路兩端節點名(號):0-左節點;1-右節點
	int Flag;		//線路類型標志:0-普通支路;1、2-變壓器支路。其中,		
					//1-非標準變比在左側節點,2-非標準變比在右側節點。
					//對接地支路,左右節點名(號)相同。
	double RXBK[3];	//0-R;1-X;2-Bc/2 或 K
}LLine[LINEMAX];

struct Generator	//發電機參數結構定義
{
	int Node_No;	//發電機節點名(號)
	int Flag;		//發電機節點類型標志:0-平衡節點;1-PQ節點;2-PV節點
	double PQV[2];	//對平衡節點,0-V,1-Angle;對PQ節點,0-P,1-Q;對PV節
					//點,0-P,1-V。
}GGen[GENERATORMAX];

struct Load			//負荷參數結構定義
{
	int Node_No;	//負荷節點名(號)
	int Flag;		//負荷節點靜特性標志:0-不計靜特性;1-計靜特性。
	double ABC[6];	//PL=a1*V**V+b1*V+c1,QL=a2*V*V+b2*V+c2。
					//0-a1;1-a2;2-b1;3-b2;4-c1;5-c2。
}LLoad[LOADMAX];

int Node_Name_NewtoOld[NODEMAX];//新節點名(號)-->舊節點名(號)
int Node_Flag[NODEMAX];			//節點類型標志:0-平衡,1-PQ,2-PV
int Line_NodeName[LINEMAX][2];	//線路的左、右節點新名(號)
int Line_No_NewtoOld[LINEMAX];	//新線路號-->舊線路號
int Line_Flag[LINEMAX];			//新線路的類型標志:0,1,2說明同Line結構
int Gen_NodeName[GENERATORMAX];	//發電機節點的新節點名(號)
int Gen_No_NewtoOld[GENERATORMAX];	//新發電機順序號-->舊發電機順序號
int Gen_SWNode[SWINGMAX][2];	//平衡節點數據:0-新節點名(號);
								//1-對應的舊發電機順序號
int Gen_PVNode[PVMAX][2];		//發電機PV節點數據:0-新節點名(號);
								//1-對應的舊發電機順序號
int Gen_PQNode[GENERATORMAX][2];//發電機PQ節點數據:0-新節點名(號);
								//1-對應的舊發電機順序號
int Load_NodeName[LOADMAX];		//負荷節點的新節點名(號)
int Load_No_NewtoOld[LOADMAX];	//新負荷順序號-->舊負荷順序號


//讀數據子程
void Data_Input(int &Num_Line,int &Num_Gen,int &Num_Load,double &Eps,
				int &Iter_Max,int &VolIni_Flag,int &VolRes_Flag)
{
	int i,j;
// 從鍵盤讀數據文件名
	char argv[20];
	cout<<"Please input diskette data-file name:"<<endl; 
	cin.getline(argv,sizeof(argv));
// 打開數據文件 
	ifstream infile(argv);
	if(infile.fail())
	{
		cerr<<"Error opening the diskette data-file:"<<argv<<endl;
		exit(0);
	}
	else
	{
//讀記數器變量值
		infile>>Num_Line>>Num_Gen>>Num_Load>>Eps>>Iter_Max\
			>>VolIni_Flag>>VolRes_Flag;
/*		cout<<setw(5)<<Num_Line<<setw(5)<<Num_Gen\
			<<setw(5)<<Num_Load<<setw(10)<<Eps\
			<<Iter_Max<<VolIni_Flag<<VolRes_Flag<<endl;	*/
		if(Num_Line>LINEMAX)
		{
			cout<<"Lines Number > LINEMAX!"<<endl;	exit(0);
		}
		if(Num_Gen>GENERATORMAX)
		{
			cout<<"Generators Number > GENERATORMAX!"<<endl;
			exit(1);
		}
		if(Num_Load>LOADMAX)
		{
			cout<<"Loads Number > LOADMAX!"<<endl;	exit(2);
		}
//讀線路參數
		for(i=0;i<Num_Line;i++)
		{
			infile>>LLine[i].Node_No[0]>>LLine[i].Node_No[1]\
				>>LLine[i].Flag;
			for(j=0;j<3;j++)infile>>LLine[i].RXBK[j];
/*			cout<<setw(5)<<LLine[i].Node_No[0]\
				<<setw(5)<<LLine[i].Node_No[1]\
				<<setw(5)<<LLine[i].Flag;
			cout<<setw(10)<<LLine[i].RXBK[0]\
				<<setw(10)<<LLine[i].RXBK[1]\
				<<setw(10)<<LLine[i].RXBK[2]<<endl;	*/
		}
//讀發電機參數
		for(i=0;i<Num_Gen;i++)
		{
			infile>>GGen[i].Node_No>>GGen[i].Flag>>GGen[i].PQV[0]\
				>>GGen[i].PQV[1];
/*			cout<<setw(5)<<GGen[i].Node_No\
				<<setw(5)<<GGen[i].Flag\
				<<setw(10)<<GGen[i].PQV[0]\
				<<setw(10)<<GGen[i].PQV[1]<<endl;	*/
		}
//讀負荷參數
		for(i=0;i<Num_Load;i++)
		{
			infile>>LLoad[i].Node_No>>LLoad[i].Flag;
			for(j=0;j<6;j++)infile>>LLoad[i].ABC[j];
/*			cout<<setw(5)<<LLoad[i].Node_No<<setw(5)<<LLoad[i].Flag;
			for(j=0;j<6;j++)cout<<setw(10)<<LLoad[i].ABC[j];
			cout<<endl;	*/
		}
	}
	infile.close();
}


//序號處理子程
void Node_Sequen(int &Num_Node,int Num_Line,int Num_Gen,int Num_Load,
				 int &Num_Swing,int &Num_GPV,int &Num_GPQ)
{
	int i,j,Flag,temp,np;
	int Node_Name[NODEMAX][2];			//0-節點名(號);1-節點出線數 

//統計各節點的出線數
	for (i=0;i<NODEMAX;i++)Node_Name[i][1]=0; //節點出線數初始化為0
	for(i=0;i<Num_Line;i++)
	{
		if(LLine[i].Node_No[0]==LLine[i].Node_No[1])
			continue;		//接地支路(左右節點相同)不在出線統計之內
		Flag=0;							//左節點出線數分析開始
		for(j=0;j<Num_Node;j++)
		{
			if(LLine[i].Node_No[0]==Node_Name[j][0])//該節點已經在節點
			{										//數組中出現,只需
				Node_Name[j][1]++;					//出線數加1。
				Flag=1;
			};
			if(Flag==1)break;
		}
		if(Flag==0)										//該節點還沒在
		{												//節點數組中出
			Node_Name[Num_Node][0]=LLine[i].Node_No[0];	//現,需將該節
			Node_Name[Num_Node][1]++;					//點名(號)添加
			Num_Node++;									//到節點數組中,
			if(Num_Node>NODEMAX)						//然后該節點的
			{											//出線數加1,并
				cout<<"Nodes Number > NODEMAX!"<<endl;	//將節點數也加
				exit(4);								//1。
			}
		}
		Flag=0;							//右節點出線數分析開始
		for(j=0;j<Num_Node;j++)
		{
			if(LLine[i].Node_No[1]==Node_Name[j][0])//該節點已經在節點	
			{										//數組中出現,只需
				Node_Name[j][1]++;					//出線數加1
				Flag=1;
			};
			if(Flag==1)break;
		}
		if(Flag==0)										//該節點還沒在
		{												//節點數組中出
			Node_Name[Num_Node][0]=LLine[i].Node_No[1];	//現,需將該節
			Node_Name[Num_Node][1]++;					//點名(號)添加
			Num_Node++;									//到節點數組中,
			if(Num_Node>NODEMAX)						//然后該節點的
			{											//出線數加1,并
				cout<<"Nodes Number > NODEMAX!"<<endl;	//將節點數也加
				exit(5);								//1。
			}
		}
	}						
//節點出線數統計完畢,屏幕輸出。其中,Num_Node為總節點數。
/*	cout<<endl<<"Node: Number, Name and out-line number"<<endl;	
	for(i=0;i<Num_Node;i++)cout<<setw(5)<<i<<setw(5)<<Node_Name[i][0]\
		<<setw(5)<<Node_Name[i][1]<<endl;*/
//根據出線數由小到大的順序對節點進行排序(冒泡算法)
	for(i=0;i<Num_Node-1;i++)
	{
		np=i;
		for(int j=i+1;j<Num_Node;j++)
			if(Node_Name[np][1]>Node_Name[j][1])np=j;
		temp=Node_Name[i][0];
		Node_Name[i][0]=Node_Name[np][0];
		Node_Name[np][0]=temp;
		temp=Node_Name[i][1];
		Node_Name[i][1]=Node_Name[np][1];
		Node_Name[np][1]=temp;
	}
/*	cout<<endl<<"Node Sequence: Number, Name and out-line number"<<endl;
	for(i=0;i<Num_Node;i++)cout<<setw(5)<<i<<setw(5)<<Node_Name[i][0]\
		<<setw(5)<<Node_Name[i][1]<<endl;*/
//平衡節點統計:總數及各節點的名(號)
	int Node_Name_Swing[SWINGMAX];
	for(i=0;i<Num_Gen;i++)
	{
		if(GGen[i].Flag==0)
		{
			Node_Name_Swing[Num_Swing]=GGen[i].Node_No;
			Num_Swing++;
			if(Num_Swing>SWINGMAX)
			{
				cout<<"Swinging Generators Number > SWINGMAX!"<<endl;
				exit(6);
			}
		}
	}
/*	cout<<endl<<"Swing: Number and Name   "<<Num_Swing<<endl;
	for(i=0;i<Num_Swing;i++)cout<<setw(5)<<i<<setw(5)<<\
		Node_Name_Swing[i]<<endl;*/
//根據出線數由小到大的順序對節點排序,并將平衡節點排在最后(序號最大)
	int Nswing=0,Nnode=0;
	for(i=0;i<Num_Node;i++)
	{
		Flag=0;
		for(j=0;j<Num_Swing;j++)
		{
			if(Node_Name[i][0]==Node_Name_Swing[j])Flag=1;
			if(Flag==1)break;		//Flag=1時,表示該節點為平衡節點,
		}							//需排在靠后的位置上。
		if(Flag==0)
		{
			Node_Name_NewtoOld[Nnode]=Node_Name[i][0];
			Nnode++;
		}
		else	//最后的各平衡節點間也仍然按出線數由小到大的順序排列
		{
			Node_Name_NewtoOld[Num_Node-Num_Swing+Nswing]=\
				Node_Name[i][0];
			Nswing++;
		}
	}
/*	cout<<endl<<"Node Sequence with swing nodes being in the end: "\
		<<"Number, Name"<<endl;
	for(i=0;i<Num_Node;i++)cout<<setw(5)<<i<<setw(5)\
		<<Node_Name_NewtoOld[i]<<endl;	*/
//新線路類型標志賦初值
	for(i=0;i<Num_Line;i++)Line_Flag[i]=LLine[i].Flag;
//線路名(號)處理:變成新的節點名(號)且左節點的絕對值小于右節點的絕對值
	for(i=0;i<Num_Line;i++)
	{
		Flag=0;
		for(j=0;j<Num_Node;j++)
		{
			if(LLine[i].Node_No[0]==Node_Name_NewtoOld[j])//左節點處理
			{												
				Line_NodeName[i][0]=j;	//賦新名(號)
				Flag=1;
			}
			if(Flag==1)break;
		}
		Flag=0;
		for(j=0;j<Num_Node;j++)
		{
			if(LLine[i].Node_No[1]==Node_Name_NewtoOld[j])//右節點處理		
			{												
				Line_NodeName[i][1]=j;	//賦新名(號)
				Flag=1;
			}
			if(Flag==1)break;
		}
		if(Line_NodeName[i][0]>Line_NodeName[i][1])//左節點的絕對值小于
		{										   //右節點的絕對值處理
			if(LLine[i].Flag==1)Line_Flag[i]=2;		//變壓器的非標準
			if(LLine[i].Flag==2)Line_Flag[i]=1;		//變比側發生變化
			temp=Line_NodeName[i][0];
			Line_NodeName[i][0]=Line_NodeName[i][1];
			Line_NodeName[i][1]=temp;
		}
	}
/*	cout<<endl<<"Line:line number,type,left node,right node"<<endl;
	for(i=0;i<Num_Line;i++)
		cout<<setw(5)<<i<<setw(5)<<Line_Flag[i]\
		<<setw(5)<<Line_NodeName[i][0]\
		<<setw(5)<<Line_NodeName[i][1]<<endl;	
*/
//線路排序:按照左節點的絕對值由小到大、若左節點的絕對值相等則按照右節
//點的絕對值由小到大順序排序(雙排序冒泡算法)
	for(i=0;i<Num_Line;i++)Line_No_NewtoOld[i]=i;
	for(i=0;i<Num_Line-1;i++)
	{
		np=i;
		for(j=i+1;j<Num_Line;j++)
		{
			if(Line_NodeName[j][0]<Line_NodeName[np][0] \
				||(Line_NodeName[j][0]==Line_NodeName[np][0] \
				&&Line_NodeName[j][1]<Line_NodeName[np][1]))
			{
				np=j;
			}
		}
		temp=Line_NodeName[np][0];
		Line_NodeName[np][0]=Line_NodeName[i][0];
		Line_NodeName[i][0]=temp;
		temp=Line_NodeName[np][1];
		Line_NodeName[np][1]=Line_NodeName[i][1];
		Line_NodeName[i][1]=temp;
		temp=Line_No_NewtoOld[np];
		Line_No_NewtoOld[np]=Line_No_NewtoOld[i];
		Line_No_NewtoOld[i]=temp;
		temp=Line_Flag[np];
		Line_Flag[np]=Line_Flag[i];
		Line_Flag[i]=temp;
	}
/*	cout<<endl<<"Line sequencing: new line number,new type, new left"\
		<<" node, new right node, old line number"<<endl;
	for(i=0;i<Num_Line;i++)
		cout<<setw(5)<<i<<setw(5)<<Line_Flag[i]\
		<<setw(5)<<Line_NodeName[i][0]\
		<<setw(5)<<Line_NodeName[i][1]\
		<<setw(5)<<Line_No_NewtoOld[i]<<endl;
*/
//發電機節點名(號)處理:變成新的節點名(號)
	for(i=0;i<Num_Gen;i++)
	{
		Flag=0;
		for(j=0;j<Num_Node;j++)
		{
			if(GGen[i].Node_No==Node_Name_NewtoOld[j])
			{
				Gen_NodeName[i]=j;						//賦新名(號)
				Flag=1;
			}
			if(Flag==1)break;
		}
	}
/*	cout<<endl<<"Generator node new name:number, new node name"<<endl;
	for(i=0;i<Num_Gen;i++)
		cout<<setw(5)<<i<<setw(5)<<Gen_NodeName[i]<<endl;*/
//發電機排序:按照新節點名(號)由小到大的順序排序,并找出新發電機序號
//對應的舊發電機序號
	for(i=0;i<Num_Gen;i++)Gen_No_NewtoOld[i]=i;
	for(i=0;i<Num_Gen-1;i++)
	{
		np=i;
		for(j=i+1;j<Num_Gen;j++)
		{
			if(Gen_NodeName[j]<Gen_NodeName[np])
			{
				np=j;
			}
		}
		temp=Gen_NodeName[np];
		Gen_NodeName[np]=Gen_NodeName[i];
		Gen_NodeName[i]=temp;
		temp=Gen_No_NewtoOld[np];
		Gen_No_NewtoOld[np]=Gen_No_NewtoOld[i];
		Gen_No_NewtoOld[i]=temp;
	}
/*	cout<<endl<<"Generator sequencing: new gen number, new node, old"\
		<<" gen number"<<endl;
	for(i=0;i<Num_Gen;i++)
		cout<<setw(5)<<i<<setw(5)<<Gen_NodeName[i]\
		<<setw(5)<<Gen_No_NewtoOld[i]<<endl;*/
//負荷節點名(號)處理:變成新的節點名(號)
	for(i=0;i<Num_Load;i++)
	{
		Flag=0;
		for(j=0;j<Num_Node;j++)
		{
			if(LLoad[i].Node_No==Node_Name_NewtoOld[j])
			{
				Load_NodeName[i]=j;						//賦新名(號)
				Flag=1;
			}
			if(Flag==1)break;
		}
	}
/*	cout<<endl<<"Load node new name: number, new node name"<<endl;
	for(i=0;i<Num_Load;i++)
		cout<<setw(5)<<i<<setw(5)<<Load_NodeName[i]<<endl;*/
//負荷排序:按照新節點名(號)由小到大的順序排序,并找出新負荷序號
//對應的舊負荷序號
	for(i=0;i<Num_Load;i++)Load_No_NewtoOld[i]=i;
	for(i=0;i<Num_Load-1;i++)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本高清不卡在线观看| 国产精品久久久久一区二区三区共| 欧美精品一区二区三区蜜臀| 最新热久久免费视频| 人妖欧美一区二区| 欧洲精品一区二区| 最新日韩av在线| 国产精品综合二区| 在线综合视频播放| 亚洲一级片在线观看| 国产成人av电影在线| 日韩欧美国产三级| 首页国产丝袜综合| 欧亚一区二区三区| 亚洲精品国产精品乱码不99| 国产成人精品www牛牛影视| 日韩欧美一区二区在线视频| 亚洲线精品一区二区三区八戒| 成人性色生活片| 26uuuu精品一区二区| 日本中文字幕一区二区视频 | 欧美日韩一区在线| 国产精品国产三级国产有无不卡| 国内精品伊人久久久久影院对白| 欧美人牲a欧美精品| 亚洲综合精品自拍| 色狠狠综合天天综合综合| 中文字幕欧美激情一区| 老司机精品视频在线| 欧美久久久久久久久| 日韩**一区毛片| 日韩一区二区免费视频| 美女一区二区三区| 久久伊人蜜桃av一区二区| 黄色精品一二区| 26uuu亚洲综合色| 国产一区二区精品久久99| 久久中文字幕电影| 国产福利一区二区三区在线视频| 欧美一区二区三区啪啪| 免费在线视频一区| 国产色爱av资源综合区| 成人性生交大合| 亚洲综合丁香婷婷六月香| 精品视频免费看| 精品一区二区国语对白| 国产亚洲成av人在线观看导航| 国产成人av电影在线观看| 亚洲免费高清视频在线| 欧美日韩中文国产| 日韩国产高清在线| 26uuu国产在线精品一区二区| 国产成人鲁色资源国产91色综| 国产精品久久久久久久久果冻传媒| av一二三不卡影片| 午夜欧美在线一二页| 久久久亚洲综合| 日本精品视频一区二区| 免费成人在线视频观看| 国产欧美一区二区三区鸳鸯浴 | 亚洲猫色日本管| 欧美日本在线看| 国产主播一区二区三区| 亚洲乱码日产精品bd| 制服丝袜亚洲网站| 岛国一区二区在线观看| 亚洲午夜三级在线| 国产亚洲自拍一区| 欧美日韩一级视频| 国产成a人无v码亚洲福利| 亚洲自拍偷拍av| 国产亚洲1区2区3区| 欧美三级电影精品| 国产91露脸合集magnet| 午夜精品视频一区| 国产精品久线在线观看| 欧美一卡2卡三卡4卡5免费| 成人美女在线视频| 日韩电影在线免费| 亚洲精品视频在线| 国产亚洲欧美日韩在线一区| 在线不卡免费av| 91网站在线观看视频| 久久er精品视频| 亚洲成av人片www| 国产精品色一区二区三区| 制服丝袜av成人在线看| 色婷婷综合五月| 国产suv精品一区二区6| 日本怡春院一区二区| 一区二区三区中文在线| 国产亚洲一二三区| 91麻豆精品国产自产在线观看一区| 不卡一区二区在线| 国产精品一二一区| 蜜臀99久久精品久久久久久软件| 亚洲国产精品欧美一二99| 成人免费在线观看入口| 国产欧美日韩在线视频| 亚洲精品一区二区三区影院| 日韩三级在线免费观看| 欧美电影一区二区| 欧美日韩一二区| 欧美最猛性xxxxx直播| 色婷婷综合视频在线观看| 粗大黑人巨茎大战欧美成人| 国产一区二区三区美女| 国模娜娜一区二区三区| 国产在线视频精品一区| 国产在线一区观看| 国产呦精品一区二区三区网站| 久久99蜜桃精品| 久久se精品一区精品二区| 久久国产综合精品| 国产一区二区三区在线看麻豆| 麻豆91在线播放| 极品少妇一区二区三区精品视频| 青青草精品视频| 久久电影网站中文字幕| 久久99精品久久久久久动态图| 精品一区二区三区视频在线观看| 日本免费新一区视频| 奇米影视一区二区三区小说| 美国av一区二区| 国产精品综合二区| 成人av片在线观看| 色综合天天狠狠| 欧美三级电影在线看| 日韩一级欧美一级| 久久久欧美精品sm网站| 国产精品伦一区二区三级视频| 亚洲少妇最新在线视频| 亚洲一区二区在线播放相泽| 日本成人在线看| 国产成人在线观看| 99久久久久久| 欧美精品xxxxbbbb| 久久久精品黄色| 成人欧美一区二区三区小说 | 国产美女在线观看一区| av不卡免费电影| 欧美精品在线观看一区二区| 日韩无一区二区| 国产精品电影院| 日韩精品视频网站| 国产黄色91视频| 欧美在线三级电影| 精品国内二区三区| 日韩伦理av电影| 精品一区二区日韩| 国产一区二区免费看| 日韩精品一区二区三区中文不卡 | 在线亚洲欧美专区二区| 欧美午夜视频网站| 欧美精品一区二区三区很污很色的 | 日韩成人av影视| 国产不卡视频在线播放| 91官网在线观看| 久久午夜羞羞影院免费观看| 怡红院av一区二区三区| 国内久久精品视频| 欧美日韩综合在线| 中文字幕av一区二区三区免费看| 亚洲精品久久久久久国产精华液| 裸体健美xxxx欧美裸体表演| 91在线播放网址| 久久久久久久久久久久久夜| 图片区小说区国产精品视频| av成人动漫在线观看| 久久综合国产精品| 午夜精品久久久久久| 9l国产精品久久久久麻豆| 日韩欧美三级在线| 亚洲大尺度视频在线观看| 成人av网站免费观看| 久久久五月婷婷| 另类小说色综合网站| 欧美三级在线看| 综合分类小说区另类春色亚洲小说欧美 | 一区二区三区小说| 国产成人av电影在线| 欧美一卡2卡3卡4卡| 亚洲国产sm捆绑调教视频| av在线不卡网| 国产欧美日韩三区| 国产麻豆视频一区| 久久久一区二区三区| 精品一区二区三区免费视频| 欧美电影在哪看比较好| 天天综合日日夜夜精品| 欧美综合久久久| 亚洲小少妇裸体bbw| 欧美在线观看视频在线| 亚洲综合在线视频| 91成人网在线| 亚洲一级二级三级在线免费观看| 色综合色狠狠天天综合色| 亚洲天堂成人网| 日本二三区不卡| 亚洲一区二区三区视频在线播放 |