📄 dnetsmpl.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 + -