📄 testdnetdll.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 main(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
CTime t1=CTime::GetCurrentTime();
// 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.Initialize();
DNet.SetMaxIter(10);
DNet.SetBasicInfo(100,6);
DNet.SetConergenceV(0.001);
DNet.SetRuntime(1);
DNet.SetErrorA(0.0001);
////////////////////////////////////////
FILE* fp;
UINT n=0,head=1,tail=1;
INT nElement;
BOOL state=0;
float s=0,D=0;
float measureAP,measureAQ;
float convergenceP,convergenceQ;
float voltage;
fp=fopen("Feeder.dat","r");
while(!feof(fp))
{
fscanf(fp,"%d%d%f%f%f%f%f",&n,&nElement,&voltage,&measureAP,
&measureAQ,&convergenceP,&convergenceQ);
DNet.SetFeederInfo(n,nElement,voltage,measureAP,measureAQ,
convergenceP,convergenceQ);
}
fclose(fp);
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.AddBranch(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.AddCable(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.AddTrans(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.AddSwitch(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.SetSwitchState0(n,state);
}
fclose(fp);
UINT node=0;
float dP=0,Sn=0,Vn=0;
fp=fopen("Cap.dat","r");
while(!feof(fp))
{
fscanf(fp,"%d%d%f%f%f",&n,&node,&dP,&Sn,&Vn);
DNet.AddCap(n,node,dP,Sn,Vn);
}
fclose(fp);
float wP=0,wQ=0,a;
fp=fopen("Begin.dat","r");
while(!feof(fp))
{
fscanf(fp,"%d%d%f%f%f",&n,&node,&wP,&wQ,&a);
DNet.SetBeginInfo(n,node,wP,wQ,a);
}
fclose(fp);
/////////////////////////////////////////////////
//
////////////////////////////////////////////////
//dNet operate
///////////////////////////////////////////////
DNet.NetAnalyse0();
DNet.DNetInitialize();
INT nFeeder0=DNet.GetFeederNumber();
double* pData=new double[nFeeder0+1];
DNet.GetOverLoadRatio(pData);
fp=fopen("Result.dat","w");
fprintf(fp,"馈线号 过载率\n\n");
for(INT m=1;m<=nFeeder0;++m)
fprintf(fp,"%d %f\n",m,pData[m]);
DNet.DNetFlow();
delete[] pData;
//////////////////////////////////////
//
///////////////////////////////////////////
//get result
////////////////////////////////////////////
BOOL bTRUE=TRUE;
fprintf(fp,"\n\n");
fprintf(fp,"元件号 节点号\n\n");
int i=1;
bTRUE=DNet.GetNodeVsEle(i,n);
while(bTRUE)
{
fprintf(fp,"%d %d\n",i,n);
++i;
bTRUE=DNet.GetNodeVsEle(i,n);
}
fprintf(fp,"\n\n");
int nBranch=DNet.GetnBranch();
double wPW,wQW;
n=1;
bTRUE=TRUE;
fprintf(fp,"\n\n");
fprintf(fp,"支路号 始节点 末节点 有功损耗 无功损耗\n");
bTRUE=DNet.BranchWasteA(n,head,tail,wPW,wQW);
while(!bTRUE)
{
++n;
if(n>nBranch)
break;
bTRUE=DNet.BranchWasteA(n,head,tail,wPW,wQW);
}
while(bTRUE)
{
fprintf(fp," %d %d %d %12.8f%14.8f\n",n,head,tail,wPW,wQW);
++n;
if(n>nBranch)
break;
bTRUE=DNet.BranchWasteA(n,head,tail,wPW,wQW);
while(!bTRUE)
{
++n;
if(n>nBranch)
break;
bTRUE=DNet.BranchWasteA(n,head,tail,wPW,wQW);
}
}
double PFe,QFe,PCu,QCu;
n=1;
bTRUE=TRUE;
fprintf(fp,"\n\n");
fprintf(fp,"支路号 始节点 末节点 有功铁损 无功铁损 有功铜损 无功铜损\n");
bTRUE=DNet.TransWasteA(n,head,tail,PFe,QFe,PCu,QCu);
while(!bTRUE)
{
++n;
if(n>nBranch)
break;
bTRUE=DNet.TransWasteA(n,head,tail,PFe,QFe,PCu,QCu);
}
while(bTRUE)
{
fprintf(fp," %d %d %d %f %f %f %f\n",n,head,tail,PFe,QFe,PCu,QCu);
++n;
if(n>nBranch)
break;
bTRUE=DNet.TransWasteA(n,head,tail,PFe,QFe,PCu,QCu);
while(!bTRUE)
{
++n;
if(n>nBranch)
break;
bTRUE=DNet.TransWasteA(n,head,tail,PFe,QFe,PCu,QCu);
}
}
double WasteAP,WasteAQ;
fprintf(fp,"\n\n");
fprintf(fp,"总有功电量损耗 总无功电量损耗\n");
DNet.GetTotalWaste(WasteAP,WasteAQ);
fprintf(fp," %f %f\n",WasteAP,WasteAQ);
fclose(fp);
INT nFeeder=DNet.GetFeederNumber();
double MeaAP,MeaAQ,AP,AQ;
fp=fopen("FeederResult.Dat","w");
fprintf(fp,"序号 有功量测电量 无功量测电量 有功计算电量 无功计算电量\n");
for(INT k=1;k<=nFeeder;++k)
{
DNet.GetFeeder(k,MeaAP,MeaAQ,AP,AQ);
fprintf(fp," %d %f %f %f %f\n",k,MeaAP,MeaAQ,AP,AQ);
}
fclose(fp);
//CTime t2=CTime::GetCurrentTime();
//time_t tt1=t1.GetTime();
//time_t tt2=t2.GetTime();
//fprintf(fp," 输出时间\n");
//fprintf(fp," %ld %ld\n",tt1,tt2);
//fclose(fp);
// time_t tt=t2-t2;
return nRetCode;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -