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

📄 dnetsmpl.cpp

📁 这是一个简单能量损耗代码测试源代码例子
💻 CPP
字号:
// DNetSmpl.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "DNetSmpl.h"
#include "DLLDeclare.h"
#include "stdio.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// The one and only application object

CWinApp theApp;

using namespace std;

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
	int nRetCode = 0;

	// initialize MFC and print and error on failure
	if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
	{
		// TODO: change error code to suit your needs
		cerr << _T("Fatal Error: MFC initialization failed") << endl;
		nRetCode = 1;
	}
	else
	{
		// TODO: code your application's behavior here.
		CString strHello;
		strHello.LoadString(IDS_HELLO);
		cout << (LPCTSTR)strHello << endl;
	}


	//////////////////////////////////////////////////
	//add code
	///////////////////////////////////////////////////
	///////////////////////////////////////////////
/*
	FILE* fp;
	int number,nIter,nIndex,nNode;
	float SB,VB,value,voltage;

	Initialization();//初始化程序
	//读取网络信息

	//{
		fp=fopen("netInfo.dat","r");
		fscanf(fp,"%d%d%d%f%f%f",&number,&nIter,&SB,&VB,&value);
	
	    SetFeederMumber(number);//设置溃线数目
		SetIterstion(nIter);	//设置迭代次数
		SetSB(SB,VB);			//设置基准值
	//}
		SetVoltageConergence(value);//设置收敛判据

	fclose(fp);

	//读取溃线信息

	//{
	 	fp=fopen("feedInfo.dat","r");
		for(int k=1;k<=number;++k)
		{
			fscanf(fp,"%d%d%f",&nIndex,&nNode,&voltage);
			SetFeederInfo(nIndex,nNode,voltage);
		}
	//}

	fclose(fp);

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

	UINT n=0,head=1,tail=1;
	BOOL state=0;
	float s=0,D=0;

	//读取支路信息

	//{
		fp=fopen("Branch.dat","r");
		if(fp==NULL)
			exit(0);
		while(!feof(fp))
		{
			fscanf(fp,"%d%d%d%d%f%f",&n,&state,&head,&tail,&s,&D);
			SetBranch(n,state,head,tail,s,D);
		}
		fclose(fp);
	//}

	float v=0;
	UINT sort=0;

	//读取电缆支路信息

	//{
		fp=fopen("Cable.dat","r");
		while(!feof(fp))
		{
			fscanf(fp,"%d%d%d%d%f%d%f%f",&n,&state,&head,&tail,&s,&sort,&v,&D);
			SetCable(n,state,head,tail,s,sort,v,D);
		}
		fclose(fp);
	//}

	float PF=0,VF=0,PK=0,KC=0,ST=0,GV=0,p=0;

	//读取变压器支路信息

	//{
		fp=fopen("Trans.dat","r");
		while(!feof(fp))
		{
			fscanf(fp,"%d%d%d%d%f%f%f%f%f%f%f",&n,&state,&head,&tail,&PF,&VF,&PK,&KC,&ST,&GV,&p);
			SetTrans(n,state,head,tail,PF,VF,PK,KC,ST,GV,p);
		}
		fclose(fp);
	//}

	//读取开关信息

	//{
		fp=fopen("Switch.dat","r");
		while(!feof(fp))
		{
			int k=fscanf(fp,"%d%d%d",&n,&head,&tail);
			if(k==3)
				SetSwitch(n,head,tail);
		}
		fclose(fp);
	//}


	//读取开关状态

	//{
		fp=fopen("SwitchState.dat","r");
		while(!feof(fp))
		{
			int k=fscanf(fp,"%d%d",&n,&state);
			if(k==2)
				SetSwitchState(n,state);
		}
		fclose(fp);
	//}
	
	UINT node=0;
	float dP=0,Sn=0,Vn=0;


	//读取电容信息

	//{
		fp=fopen("Cap.dat","r");
		while(!feof(fp))
		{
			int k=fscanf(fp,"%d%d%f%f%f",&n,&node,&dP,&Sn,&Vn);
			if(k==5)
				SetCapInfo(n,node,dP,Sn,Vn);
		}
		fclose(fp);
	//}
	float wP=0,wQ=0;

	//读取负荷信息

	//{
		fp=fopen("Begin.dat","r");
		while(!feof(fp))
		{
			fscanf(fp,"%d%d%f%f",&n,&node,&wP,&wQ);
			SetBeginInfo(n,node,wP,wQ);
		}
		fclose(fp);
	//}

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


	////////////////////////////////////////////////
	//dNet operate
	///////////////////////////////////////////////
	NetAnalyse();//网络接线分析
	BOOL LP=DNetInitialization();
	if(!LP) 
	{
		CString str;
		str="系统存在环网,请检查系统结构";
		MessageBox(NULL,str,"警告",MB_OK|MB_ICONEXCLAMATION);
		exit(0);
	}
	LP=DistributionFlow();
	if(!LP) 
	{
		CString str;
		str="超过最大迭代次数,最大迭代次数过小或配网不收敛";
		MessageBox(NULL,str,"警告",MB_OK|MB_ICONEXCLAMATION);
		exit(0);
	}

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


	///////////////////////////////////////////
	//get result
	////////////////////////////////////////////
	BOOL bTRUE=TRUE;
	fp=fopen("Result.ini","w");

	//输出节点元件关联表

	//{
		fprintf(fp,"元件号     节点号\n\n");
		int	i=1;
		int nMax;
		bTRUE=GetNodeAtElement(i,n);
		while(bTRUE)
		{
			fprintf(fp,"%5d%10d\n",i,n);
			++i;
			bTRUE=GetNodeAtElement(i,n);
		}
	//}
	nMax=i-1;
	fprintf(fp,"\n\n");

	//输出节点信息

	//{

		fprintf(fp,"元件号	  电压\n");
		bTRUE=FALSE;
		n=1;
		double v1,wP1,wQ1;
		for(i=1;i<=nMax;++i)
		{
			bTRUE=GetNodeData(i,v1,wP1,wQ1);
			if(bTRUE)
				fprintf(fp,"%4d%14.8f\n",i,v1);
		}

	//}

	fprintf(fp,"\n\n");

	//输出支路数

	//{
		int nBranch=GetBranchNumber();
	//}

	double wC;
	double wPW,wQW;
	double waste1,waste2;
	waste1=waste2=0;
	n=1;
	bTRUE=TRUE;
	fprintf(fp,"\n\n");

	//输出支路损耗
	//{
		fprintf(fp,"支路号  支路类型	始元件 		末元件 有功损耗1      无功损耗1     有功损耗2     无功损耗2     支路电流\n");
		for(i=1;i<=nBranch;++i)
		{
			bTRUE=BranchWaste(i,head,tail,wPW,wQW,wC);
			if(bTRUE)
				fprintf(fp,"%4d      0   %10d%10d%14.8f%14.8f%14.8f%14.8f%14.8f\n",i,head,tail,wPW,wQW,waste1,waste2,wC);
		}
	//}


	double PFe,QFe,PCu,QCu;
	bTRUE=FALSE;
	//输出变压器损耗

	//{
		for(i=1;i<=nBranch;++i)
		{
			bTRUE=TransWaste(i,head,tail,PFe,QFe,PCu,QCu,wC);
			if(bTRUE)
				fprintf(fp,"%4d      1   %10d%10d%14.8f%14.8f%14.8f%14.8f%14.8f\n",i,head,tail,PFe,QFe,PCu,QCu,wC);
		}
	//}

	INT nSwitch=GetSwitch();
	fprintf(fp,"\n\n开关号		始元件		末元件	   电流幅值\n");
	for(i=1;i<=nSwitch;++i)
	{
			bTRUE=GetSwitchInfo(i,head,tail,wC);
			if(bTRUE)
				fprintf(fp,"%4d%12d%12d    %14.8f\n",i,head,tail,wC);
	}


	fclose(fp);
*/
    Flow();

	return nRetCode;
}


⌨️ 快捷键说明

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