⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flow080604.cpp

📁 电力系统潮流
💻 CPP
字号:
// flow.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream.h>
#include <fstream.h>
#include "NEquation.h"
#include "math.h"
#include "config.h"

void test()
{
	NEquation ob1;
	ob1.SetSize(2);
	ob1.Data(0,0)=1;
	ob1.Data(0,1)=1;
	ob1.Data(1,0)=2;
	ob1.Data(1,1)=4;

	ob1.Value(0)=12;
	ob1.Value(1)=12;
	ob1.Run();

	printf("%5.3f,%5.3f\n",ob1.Value(0),ob1.Value(1));
}

void GetData()
{
	FILE *fp;
	int i;

	if((fp=fopen("F:\\1073000018马其燕\\flow\\data\\data.txt","r"))==NULL)
	{ 
		printf("Can not open the file named 'data.txt' \n");
		return;
	}

	for(i=0;i<=Bus_Num-1;i++)
	{
		fscanf(fp,"%d,%f,%f,%f,%f,%f,%f,%d",&gBus[i].No,&gBus[i].Voltage,&gBus[i].Phase,
			&gBus[i].GenP,&gBus[i].GenQ,&gBus[i].LoadP,&gBus[i].LoadQ,&gBus[i].Type);
	}

	for(i=0;i<=Line_Num-1;i++)
	{
		fscanf(fp,"%d,%d,%d,%f,%f,%f",&gLine[i].No,&gLine[i].No_I,&gLine[i].No_J,
			&gLine[i].R,&gLine[i].X,&gLine[i].B);	
	}
	
/*	for(i=0;i<=Bus_Num-1;i++)
	{
		fscanf(fp,"%d,%d,%f,%f",&gShunt[i].Num,&gShunt[i].NumI,&gShunt[i].G,&gShunt[i].B);
	}*/

	fclose(fp);
}

void GetYMatrix()
{
	int i,j,bus1,bus2;
	float r,x,d,g,b;
	FILE *fp;

	for(i=0;i<=Bus_Num-1;i++)
	{
		for(j=0;j<=Bus_Num-1;j++)
		{
			gY_G[i][j]=0;
			gY_B[i][j]=0;
		}
	}

	for(i=0; i<=Line_Num-1; i++)
	{
		bus1=gLine[i].No_I-1;
		bus2=gLine[i].No_J-1;
		r=gLine[i].R;
		x=gLine[i].X;
		d=r*r+x*x;
		if(d>1e-6)
		{
			g=r/d;
			b=-x/d;
		}
		else
		{
			g=0;
			b=0;
		}
	
		gY_G[bus1][bus1]=gY_G[bus1][bus1]+g;
		gY_G[bus2][bus2]=gY_G[bus2][bus2]+g;
		gY_G[bus1][bus2]=gY_G[bus1][bus2]-g;
		gY_G[bus2][bus1]=gY_G[bus2][bus1]-g;
		gY_B[bus1][bus1]=gY_B[bus1][bus1]+b+gLine[i].B/2;
		gY_B[bus2][bus2]=gY_B[bus2][bus2]+b+gLine[i].B/2;
		gY_B[bus1][bus2]=gY_B[bus1][bus2]-b;
		gY_B[bus2][bus1]=gY_B[bus2][bus1]-b;
	}

	// output the Y matrix 
	if((fp=fopen("F:\\1073000018马其燕\\flow\\data\\ymatrix.txt","w"))==NULL)
	{
		printf("Can not open the file named 'ymatrix.txt' \n");
		return ;
	}

	fprintf(fp,"---Y Matrix---\n");
	for(i=0;i<=Bus_Num-1;i++)
	{
		for(j=0;j<=Bus_Num-1;j++)
		{
			fprintf(fp,"Y(%d,%d)=(%10.5f,%10.5f)\n",i+1,j+1,gY_G[i][j],gY_B[i][j]);
		}
	}
	fclose(fp);	
}

void SetInitial()
{
	int i;

	for(i=0;i<=Bus_Num-1;i++)
	{
		gf[i]=gBus[i].Voltage*sin(gBus[i].Phase);
		ge[i]=gBus[i].Voltage*cos(gBus[i].Phase);
	}
}

void GetUnbalance()
{	
	float Bus_P[Bus_Num-1],Bus_Q[Bus_Num-1];
	int i,j;

	for (i=1;i<=Bus_Num-1;i++)
	{
		Bus_P[i-1]=0;
		Bus_Q[i-1]=0;
		for (j=0;j<=Bus_Num-1;j++)
		{
			Bus_P[i-1]+=ge[i]*(gY_G[i][j]*ge[j]-gY_B[i][j]*gf[j])+gf[i]*(gY_G[i][j]*gf[j]+gY_B[i][j]*ge[j]);
			Bus_Q[i-1]+=gf[i]*(gY_G[i][j]*ge[j]-gY_B[i][j]*gf[j])-ge[i]*(gY_G[i][j]*gf[j]+gY_B[i][j]*ge[j]);
		
		}
	}
	for (i=1;i<=Bus_Num-1;i++)
	{
		gDelta_P[i-1]=gBus[i].GenP-gBus[i].LoadP-Bus_P[i-1];
		gDelta_Q[i-1]=gBus[i].GenQ-gBus[i].LoadQ-Bus_Q[i-1];
		printf("%f %f\n",gDelta_P[i-1],gDelta_Q[i-1]);
	}
}

/*
void GetJaccobi()
{

}

void GetRevised()
{

}

void GetNewValue()
{
	int i;
	
	for(i=0;i<=Bus_Num-2;i++)
	{
		gf[i]=gf[i]+gDelta_f[i];
		ge[i]=ge[i]+gDelta_e[i];
	}
}
*/
int main(int argc, char* argv[])
{
	int i,Count_Num;
	float minValue;

//	test();
	
	GetData();
	GetYMatrix();
	SetInitial();

	GetUnbalance();

/*	for(Count_Num=0;Count_Num<=100;Count_Num++)
	{
		GetUnbalance();
		GetJaccobi();
		GetRevised();
		GetNewValue();

		minValue=gDelta_fe[0];
		for(i=0;i<=2*(Bus_Num-1)-1;i++)
		{
			if(minValue>gDelta_fe[i])
			{
				minValue=gDelta_fe[i];
			}
		}
		if(minValue<Precision)
		{
			break;
		}
	}*/

//	printf("%d",Count_Num);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -