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

📄 testdnetdll.cpp

📁 这是一个简单能量损耗代码测试及动态库程序计算的源代码
💻 CPP
字号:
// TestDNetDLL.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "TestDNetDLL.h"
#include"DNet.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;
	}

	//TODO: Add code in this
	///////////////////////////////////

	CDNet DNet;//define a object


	DNet.Initialization();
	DNet.SetFeederMumber(1);
	DNet.SetFeederInfo(1,1,10.5);
	DNet.SetIterstion(10);
	DNet.SetSB(100,10);
	DNet.SetVoltageConergence(0.001);
	////////////////////////////////////////

	FILE* 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);
		DNet.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);
		DNet.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);
		DNet.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)
		DNet.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)
		DNet.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)
			DNet.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);
		DNet.SetBeginInfo(n,node,wP,wQ);
	}
	fclose(fp);

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


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

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


	///////////////////////////////////////////
	//get result
	////////////////////////////////////////////
	BOOL bTRUE=TRUE;
	fp=fopen("Result.dat","w");
	fprintf(fp,"元件号	节点号\n\n");
	int	i=1;
	bTRUE=DNet.GetNodeAtElement(i,n);
	while(bTRUE)
	{
		fprintf(fp,"%d		  %d\n",i,n);
		++i;
		bTRUE=DNet.GetNodeAtElement(i,n);
	}
	INT nMax=i-1;

	fprintf(fp,"元件号	  电压	     有功	     无功\n");
	bTRUE=TRUE;
	n=1;
	double v1,wP1,wQ1;
	bTRUE=DNet.GetNodeData(n,v1,wP1,wQ1);
	while(!bTRUE)
	{
		++n;
		if(n>nMax)
			break;
		bTRUE=DNet.GetNodeData(n,v1,wP1,wQ1);
	}
	while(bTRUE)
	{
		fprintf(fp,"  %d		%f	%f	%f\n",n,v1,wP1,wQ1);
		++n;
		if(n>nMax)
			break;
		bTRUE=DNet.GetNodeData(n,v1,wP1,wQ1);
		while(!bTRUE)
		{
			++n;
			if(n>nMax)
				break;
			bTRUE=DNet.GetNodeData(n,v1,wP1,wQ1);
		}
	}

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


	//输出支路信息

	//{
		fprintf(fp,"顺序号 头元件  尾元件	 头有功		 头无功		 尾有功	     尾无功		电流幅值\n");
		bTRUE=TRUE;
		double wPH,wQH,wPT,wQT,wC;
		n=1;
		int nBranch=DNet.GetBranchNumber();
		bTRUE=DNet.GetBranchData(n,head,tail,wPH,wQH,wPT,wQT,wC);
		while(!bTRUE)
		{
			++n;
			if(n>nBranch)
				break;
			bTRUE=DNet.GetBranchData(n,head,tail,wPH,wQH,wPT,wQT,wC);
		}
		while(bTRUE)
		{
			fprintf(fp,"  %d    	 %d	     %d		%f	%f	%f	%f	%f\n",
				n,head,tail,wPH,wQH,wPT,wQT,wC);
			++n;
			bTRUE=DNet.GetBranchData(n,head,tail,wPH,wQH,wPT,wQT,wC);
			while(!bTRUE)
			{
				++n;
				if(n>nMax)
					break;
				bTRUE=DNet.GetBranchData(n,head,tail,wPH,wQH,wPT,wQT,wC);
			}
		}
	fprintf(fp,"\n\n");
	double wPW,wQW;
	n=1;
	bTRUE=TRUE;
	fprintf(fp,"\n\n");
	fprintf(fp,"支路号	始节点	末节点   有功损耗	   无功损耗		支路电流\n");
	bTRUE=DNet.BranchWaste(n,head,tail,wPW,wQW,wC);
	while(!bTRUE)
	{
		++n;
		if(n>nBranch)
			break;
		bTRUE=DNet.BranchWaste(n,head,tail,wPW,wQW,wC);
	}
	while(bTRUE)
	{
		fprintf(fp,"  %d    	  %d      %d     %12.8f%14.8f%14.8f\n",n,head,tail,wPW,wQW,wC);
		++n;
		if(n>nBranch)
			break;
		bTRUE=DNet.BranchWaste(n,head,tail,wPW,wQW,wC);
		while(!bTRUE)
		{
			++n;
			if(n>nBranch)
				break;
			bTRUE=DNet.BranchWaste(n,head,tail,wPW,wQW,wC);
		}
	}


	double PFe,QFe,PCu,QCu;
	n=1;
	bTRUE=TRUE;
	fprintf(fp,"\n\n");
	fprintf(fp,"支路号	始节点	末节点 有功铁损	  无功铁损	  有功铜损	  无功铜损		支路电流\n");
	bTRUE=DNet.TransWaste(n,head,tail,PFe,QFe,PCu,QCu,wC);
	while(!bTRUE)
	{
		++n;
		if(n>nBranch)
			break;
		bTRUE=DNet.TransWaste(n,head,tail,PFe,QFe,PCu,QCu,wC);
	}
	while(bTRUE)
	{
		fprintf(fp,"  %d	       %d	   %d   %f	  %f    %f   %f		%f\n",n,head,tail,PFe,QFe,PCu,QCu,wC);
		++n;
		if(n>nBranch)
			break;
		bTRUE=DNet.TransWaste(n,head,tail,PFe,QFe,PCu,QCu,wC);
		while(!bTRUE)
		{
			++n;
			if(n>nBranch)
				break;
			bTRUE=DNet.TransWaste(n,head,tail,PFe,QFe,PCu,QCu,wC);
		}
	}
	int nSwitch=DNet.GetSwitch();
	int head1,tail1;

	fprintf(fp,"\n\n  开关号      始元件	末元件	    电流幅值\n");
	for(int number=1;number<=nSwitch;++number)
	{
		BOOL bTrue=DNet.GetSwitchInfo(number,head1,tail1,wC);
		if(bTrue)
			fprintf(fp,"\t%d	    	%d		  %d		%f\n",number,head1,tail1,wC);
	}
	double WasteP=DNet.GetDNetEnergeWaste();
	fclose(fp);

	DNet.Flow();
	return nRetCode;
}


⌨️ 快捷键说明

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