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

📄 powerflow_type.h

📁 这个是应用pq分解法解电力系统潮流的方法
💻 H
字号:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////获取数据/////////////////////////////////////////////////////////////////////

struct Node_Type 
{
	int flag,n;
	double P,Q,V,Theta;
};

struct GeneratorNode_Type 
{
	int n;
	double P,Q;
};

struct Branch_Type
{
	int n1,n2;
	double R,X,YK;
};

struct F_GetData_Result_Type
{
	int Nn,Ng,Nb;
	double V0,Theta0,epsilon;
	Node_Type *Node;
	GeneratorNode_Type *GeneratorNode;
	Branch_Type *Branch;
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////统计PV节点和平衡节点/////////////////////////////////////////////////////////////////
struct PVNode_Type 
{
	int n;
	double V;
};

struct BalanceNode_Type 
{
	int n;
	double V,Theta;
};

struct  F_FormPVandBalanceNode_Source_Type
{
	int Nn;
	Node_Type *Node;
};

struct  F_FormPVandBalanceNode_Result_Type
{
	int Npv;
	PVNode_Type *PVNode;
	int Np;
	BalanceNode_Type *BalanceNode;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////支路排序////////////////////////////////////////////////////////////////////////////
struct  F_BranchPaiXu_Source_Type
{
	int Nb;
	Branch_Type *Branch;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////节点排序////////////////////////////////////////////////////////////////////////////
struct  F_NodePaiXu_Source_Type
{
	int Nn,Ng;
	Node_Type *Node;
	GeneratorNode_Type *GeneratorNode;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////形成导纳矩阵第一步,不考虑接地支路的影响///////////////////////////////////////////////////////
struct Yii_Type 
{
	double G,B;
};

struct Yij_Type 
{
	double G,B;
	int n2;
};

struct  F_YForm1_Source_Type
{	
	int Nn,Nb;
	Branch_Type *Branch;
};

struct  F_YForm1_Result_Type
{	
	Yii_Type *Yii;
	Yii_Type *Yii1;
	Yij_Type *Yij;
	Yij_Type *Yij1;
	int *NYseq;
	int *NYsum;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////形成导纳矩阵第二步,追加接地支路//////////////////////////////////////////////////////////

struct  F_YForm2_Source_Type
{	
	int Nn,Nb;
	Branch_Type *Branch;
	Yii_Type *Yii;
	Yii_Type *Yii1;
	Yij_Type *Yij;
	Yij_Type *Yij1;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////形成因子表//////////////////////////////////////////////////////////////////////////
struct U_Type
{
	int n2;
	double value;	
};
struct  F_YinZi_Source_Type
{
	int flag,Nn,Npv,Np;
	PVNode_Type *PVnode;
	BalanceNode_Type *BalanceNode;
	int *NYseq,*NYsum;
	Yii_Type *Yii;
	Yij_Type *Yij;
};

struct F_YinZi_Result_Type 
{
	int *NUsum;
	int *NUseq;
	double *D;
	U_Type *U;
};


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////传电压初值//////////////////////////////////////////////////////////////////////////

struct NodalVoltage_Type 
{
	double V,Theta;
};

struct  F_PassV0_Source_Type
{
	int Nn;
	Node_Type *Node;
};

struct F_PassV0_Result_Type 
{
	NodalVoltage_Type *NodalVoltage;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////迭代过程中节点功率的计算/////////////////////////////////////////////////////////////
struct NodalPower_Type 
{
	double P,Q;
};
struct  F_CalculatePQ_Source_Type
{
	int flag,Nn,Nb;
	NodalVoltage_Type *NodalVoltage;
	NodalPower_Type *NodalPower;
	Yii_Type *Yii;
	Yij_Type *Yij;
	int *NYseq;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////求最大功率误差以及DeltaI/////////////////////////////////////////////////////////////
struct  F_FormDI_Source_Type
{
	int flag,Nn,Ng,Npv,Np;
	double *DI;
	NodalPower_Type *NodalPower,*GenePower,*LoadPower;
	NodalVoltage_Type *NodalVoltage; 
	PVNode_Type *PVNode;
	BalanceNode_Type *BalanceNode;
	Node_Type *Node;
	GeneratorNode_Type *GeneratorNode;

};
struct F_FormDI_Result_Type 
{		
	int ErrorNode;
	double MaxError;
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////线性方程组的求解////////////////////////////////////////////////////////////////
struct  F_QiuJie_Source_Type
{
	int Nn;
	double *DI;
	U_Type *U;
	int *NUsum;
	double *D;	
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////节点输出数据的形成/////////////////////////////////////////////////////////////////
struct NodeOutData_Type
{
	int n;
	double V,Theta;
	double P_l,Q_l,P_g,Q_g;
};


struct F_NodeDataOut_Source_Type
{
	int Nn,Ng,Np;
	BalanceNode_Type *BalanceNode;
	GeneratorNode_Type *GeneratorNode;
	NodalVoltage_Type *NodalVoltage;
	NodalPower_Type *GenePower,*LoadPower;
	NodeOutData_Type *NodeOutData;	
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////支路输出数据的形成/////////////////////////////////////////////////////////////////
struct BranchOutData_Type 
{
	int i,j;
	double Pij,Qij,Pji,Qji;
};

struct F_BranchDataOut_Source_Type 
{
	BranchOutData_Type *BranchOutData;
	int Nb;
	Branch_Type *Branch;
	NodalVoltage_Type *NodalVoltage;
};
struct F_BranchDataOut_Result_Type 
{
	double P_loss,Q_loss;
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////输出数据///////////////////////////////////////////////////////////////////////
struct F_OutData_Source_Type 
{
	int Nn,Nb;
	NodeOutData_Type *NodeOutData;
	BranchOutData_Type *BranchOutData;
};

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////节点优化///////////////////////////////////////////////////////////////////////
struct F_NodeOpt_Source_Type 
{
	int Nn,Ng,Nb;
	Node_Type *Node;
	GeneratorNode_Type *GeneratorNode;
	Branch_Type *Branch;
	int *NodeOptArray;
};


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////节点还原///////////////////////////////////////////////////////////////////////

struct F_NodeOpt1_Source_Type 
{
	int Nn,Nb;
	int *NodeOptArray;
	BranchOutData_Type *BranchOutData;
	NodeOutData_Type *NodeOutData;
};



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

class PowerFlow_Type
{
public:
	F_GetData_Result_Type F_GetData();//从文件读入数据;
	F_FormPVandBalanceNode_Result_Type F_FormPVandBalanceNode(F_FormPVandBalanceNode_Source_Type F_FormPVandBalanceNode_Source);//生成PV节点和平衡节点;
	void F_BranchPaiXu(F_BranchPaiXu_Source_Type F_BranchPaiXu_Source);//支路排序;
	void F_NodePaixu(F_NodePaiXu_Source_Type F_NodePaiXu_Source);//节点排序;
	F_YForm1_Result_Type F_YForm1(F_YForm1_Source_Type F_YForm1_Source);//形成导纳矩阵第一步,不考虑接地支路的影响;
	void F_YForm2(F_YForm2_Source_Type F_YForm2_Source);//形成导纳矩阵第二步,追加接地支路;
	F_YinZi_Result_Type F_YinZi(F_YinZi_Source_Type F_YinZi_Source);//形成因子表;
	F_PassV0_Result_Type F_PassV0(F_PassV0_Source_Type F_PassV0_Source);//送电压初值;
	void F_CalculatePQ(F_CalculatePQ_Source_Type F_CalculatePQ_Source);//迭代过程中节点功率的计算;
	F_FormDI_Result_Type F_FormDI(F_FormDI_Source_Type F_FormDI_Source);//求最大功率误差以及DeltaI;
	void F_QiuJie(F_QiuJie_Source_Type F_QiuJie_Source);//线性方程组的求解;
	void F_NodeDataOut(F_NodeDataOut_Source_Type F_NodeDataOut_Source);//节点输出数据的形成;
	F_BranchDataOut_Result_Type F_BranchDataOut(F_BranchDataOut_Source_Type F_BranchDataOut_Source);//支路输出数据的形成;
	void F_OutData(F_OutData_Source_Type F_OutData_Source);//输出数据;
	void F_NodeOpt(F_NodeOpt_Source_Type F_NodeOpt_Source);//节点优化
	void F_NodeOpt1(F_NodeOpt1_Source_Type F_NodeOpt1_Source);//节点还原;
};

⌨️ 快捷键说明

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