cimforreduceloss/core/output.cpp

423 lines
14 KiB
C++
Raw Permalink Normal View History

#include "head.h"
//int extern balance_node;
#include "qt_readxml.h"
#include <iomanip>
#include <iostream>
using namespace std;
bool Qt_readxml::XmlReaderwriteFile(QIODevice *file_output)
{
//std::cout<<"XmlReaderwriteFile"<<std::endl;
QTextStream out(file_output);
int breakerNo = breaker.size();
int headBus;
for (int i=0;i<breakerNo;i++)
{
if (breaker[i].MemberOf_EquipmentContainer_res.size())
{
headBus = breaker[i].flag;
}
}
int line=acline_segment.size();
int trans=power_transformer.size();
for (int i=0;i<line;i++)
{
if (acline_segment[i].link_to>totalBus)
{
totalBus=acline_segment[i].link_to;
maxIsland=acline_segment[i].island;
}
}
for (int i=0;i<trans;i++)
{
if (power_transformer[i].link_2>totalBus)
{
totalBus=power_transformer[i].link_2;
maxIsland=power_transformer[i].island;
}
}
for (int i=0;i<line;i++)
{
if (acline_segment[i].island==maxIsland)
totalLine++;
}
for (int i=0;i<trans;i++)
{
if (power_transformer[i].island==maxIsland)
totalLine++;
}
/*------------------------------------------
-------------------------------------------*/
out<<totalBus<<","<<totalLine<<","<<100<<","<<"1e-5"<<","<<"0""\r\n";
out<<0<<"\r\n";
/*----------------------------------------
-----------------------------------------*/
// balance_node=1;
// out<<1<<","<<balance_node<<","<<1<<"\r\n";
int sub_no=substation.size();
int k=1;
int sign=0;
for (int i=0;i<sub_no;i++)
{
int node;
if (sign)
break;
if (substation[i].GIS_type=="1001")
{
int connector_no=connector.size();
for (int j=0;j<connector_no;j++)
{
if (connector[j].island==maxIsland)
{
if (connector[j].MemberOf_EquipmentContainer_res.size())
{
if (connector[j].MemberOf_EquipmentContainer_res[0].contains(substation[i].ID))
{
node = connector[j].link_from;
substation[i].flag=node;
out<<k<<","<<node<<","<<"1"<<"\r\n";
k++;
sign=1;
break;
}
}
}
}
}
}
out<<0<<"\r\n";
/*----------------------------------------
线
-----------------------------------------*/
int no=acline_segment.size();
k=1;
for (int i=0;i<no;i++)
{
if (acline_segment[i].island==maxIsland)
{
out<<k<<","<<acline_segment[i].link_from<<","<<acline_segment[i].link_to<<","<<QString().sprintf("%.10lf",acline_segment[i].r)<<","<<QString().sprintf("%.10lf",acline_segment[i].x)<<","<<0<<","<<0<<"\r\n";
k++;
}
}
out<<0<<"\r\n";
/*-------------------------------------------
--------------------------------------------*/
k=1;
for (int i=0;i<trans;i++)
{
if (power_transformer[i].island==maxIsland)
{
out<<k<<","<<"0"<<","<<power_transformer[i].link_1<<","<<power_transformer[i].link_2<<","<<QString().sprintf("%.10lf",power_transformer[i].r)<<","<<QString().sprintf("%.10lf",power_transformer[i].x)<<","<<1<<","<<1<<","<<1<<","<<1<<"\r\n";
k++;
}
}
out<<0<<"\r\n";
/*-------------------------------------------
--------------------------------------------*/
out<<1<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<","<<0<<"\r\n";
out<<0<<"\r\n";
/*-------------------------------------------
--------------------------------------------*/
k=1;
for (int i=0;i<trans;i++)
{
if (power_transformer[i].island==maxIsland)
{
int high=power_transformer[i].link_1;
if (high==power_transformer[i].low)
{
high=power_transformer[i].link_2;
}
out<<k<<","<<high<<","<<QString().sprintf("%.10lf",power_transformer[i].g)<<","<<QString().sprintf("%.10lf",power_transformer[i].b)<<"\r\n";
k++;
}
}
out<<0<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
/*-------------------------------------------
--------------------------------------------*/
k=1;
double UB=0;
for (int i=1;i<=totalBus;i++)
{
for (int j=0;j<line;j++)
{
if ((acline_segment[j].link_from==i || acline_segment[j].link_to==i) && acline_segment[j].island==maxIsland)
{
UB=acline_segment[j].UB;
break;
}
}
if (!UB)
{
for (int j=0;j<trans;j++)
{
if ((power_transformer[j].link_1==i || power_transformer[j].link_2==i) && power_transformer[j].island==maxIsland)
{
UB=power_transformer[j].UB;
break;
}
}
}
int m;
for (m=0;m<trans;m++)
{
if (power_transformer[m].island==maxIsland)
if (power_transformer[m].low == i)
break;
}
if(m<trans)
{
double PL=((power_transformer[m].APower)+(power_transformer[m].BPower)+(power_transformer[m].CPower))/(base_power[0].basePower*1000);
double QL=((power_transformer[m].AReactivePower)+(power_transformer[m].BReactivePower)+(power_transformer[m].CReactivePower))/(base_power[0].basePower*1000);
if (PL==0 && QL==0)
{
out<<k<<","<<-1<<","<<i<<","<<UB<<","<<"0"<<","<<"0"<<","<<"-1"<<","<<"-1"<<","<<"0"<<","<<"0"<<"\r\n";
k++;
}
else
{
out<<k<<","<<-1<<","<<i<<","<<UB<<","<<"0"<<","<<"0"<<","<<QString().sprintf("%.10lf",PL)<<","<<QString().sprintf("%.10lf",QL)<<","<<"0"<<","<<"0"<<"\r\n";
k++;
}
}
else
{
out<<k<<","<<-1<<","<<i<<","<<UB<<","<<"0"<<","<<"0"<<","<<"0"<<","<<"0"<<","<<"0"<<","<<"0"<<"\r\n";
k++;
}
}
out<<0<<"\r\n";
/*----------------------------------------
-----------------------------------------*/
//out<<1<<","<<1<<","<<balance_node<<","<<1<<","<<"-100"<<","<<"100"<<","<<0<<","<<0<<","<<0<<","<<0<<"\r\n";
k=1;
sign=0;
for (int i=0;i<sub_no;i++)
{
int node;
if (sign)
break;
if (substation[i].GIS_type=="1001")
{
int connector_no=connector.size();
for (int j=0;j<connector_no;j++)
{
if (connector[j].island==maxIsland)
{
if (connector[j].MemberOf_EquipmentContainer_res.size())
{
if (connector[j].MemberOf_EquipmentContainer_res[0].contains(substation[i].ID))
{
node = connector[j].link_from;
substation[i].flag=node;
out<<k<<","<<1<<","<<node<<","<<1<<","<<"-100"<<","<<"100"<<","<<0<<","<<0<<","<<0<<","<<0<<"\r\n";
k++;
sign=1;
break;
}
}
}
}
}
}
out<<0<<"\r\n";
out<<0<<"\r\n";
/*----------------------------------------
-----------------------------------------*/
//out<<1<<","<<1<<","<<balance_node<<","<<1<<","<<"1.0"<<","<<"-100"<<","<<"100"<<"\r\n";
k=1;
sign=0;
for (int i=0;i<sub_no;i++)
{
int node;
if (sign)
break;
if (substation[i].GIS_type=="1001")
{
int connector_no=connector.size();
for (int j=0;j<connector_no;j++)
{
if (connector[j].island==maxIsland)
{
if (connector[j].MemberOf_EquipmentContainer_res.size())
{
if (connector[j].MemberOf_EquipmentContainer_res[0].contains(substation[i].ID))
{
node = connector[j].link_from;
substation[i].flag=node;
out<<k<<","<<1<<","<<node<<","<<1<<","<<"1.0"<<","<<"-100"<<","<<"100"<<"\r\n";
k++;
sign=1;
break;
}
}
}
}
}
}
out<<0<<"\r\n";
out<<0<<"\r\n";
/*----------------------------------------
-----------------------------------------*/
out<<1<<","<<balance_node<<","<<0.999<<","<<1.001<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
out<<0<<"\r\n";
// /*------------------------------------------
// 输出第一行
//-------------------------------------------*/
// int bus=busbar_section.size();
// int lineNo = acline_segment.size();
// int trans=power_transformer.size();
// int busNo=0;
// for (int i=0;i<lineNo;i++)
// {
// if (acline_segment[i].link_from>busNo)
// busNo=acline_segment[i].link_from;
// if (acline_segment[i].link_to>busNo)
// busNo=acline_segment[i].link_to;
// }
// for (int i=0;i<trans;i++)
// {
// if (power_transformer[i].link_1>busNo)
// busNo=power_transformer[i].link_1;
// if (power_transformer[i].link_2>busNo)
// busNo=power_transformer[i].link_2;
// }
// double basePower= base_power[0].basePower;
// //out<<busNo<<","<<lineNo+trans<<","<<basePower<<","<<"50"<<","<<"0.1"<<"\r\n";
// out<<busbar_section[bus-1].flag<<","<<lineNo+trans<<","<<basePower<<","<<"50"<<","<<"0.1"<<"\r\n";
// out<<"1e-5"<<","<<"2"<<"\r\n";
// out<<"1"<<","<<headBus<<"\r\n";
// out<<0<<"\r\n";
// /*----------------------------------------
// 输出线路参数
//-----------------------------------------*/
// int no=acline_segment.size();
// for (int i=0;i<no;i++)
// {
// out<<i+1<<","<<acline_segment[i].link_from<<","<<acline_segment[i].link_to<<","<<QString().sprintf("%.10lf",acline_segment[i].r)<<","<<QString().sprintf("%.10lf",acline_segment[i].x)<<","<<0<<"\r\n";
// }
// out<<0<<"\r\n";
// /*-------------------------------------------
// 输出接地支路参数
//--------------------------------------------*/
// no=power_transformer.size();
// for (int i=0;i<no;i++)
// {
// int high=power_transformer[i].link_1;
// if (high==power_transformer[i].low)
// {
// high=power_transformer[i].link_2;
// }
// out<<high<<","<<QString().sprintf("%.10lf",power_transformer[i].g)<<"\r\n";
// }
// out<<0<<"\r\n";
// /*-------------------------------------------
// 输出变压器参数
//--------------------------------------------*/
// no=power_transformer.size();
// for (int i=0;i<no;i++)
// {
// out<<i+1<<","<<power_transformer[i].link_1<<","<<power_transformer[i].link_2<<","<<QString().sprintf("%.10lf",power_transformer[i].r)<<","<<QString().sprintf("%.10lf",power_transformer[i].x)<<","<<1<<","<<1<<","<<1<<"\r\n";
// }
// out<<0<<"\r\n";
// /*-------------------------------------------
// 输出节点功率参数
//--------------------------------------------*/
// no=busbar_section[bus-1].flag;
// int k=0;
// for (int i=0;i<bus;i++)
// {
// if (busbar_section[i].flag!=busbar_section[i+1].flag)
// {
// std::vector<PowerTransformer>::iterator it = find_if(power_transformer.begin(), power_transformer.end(), bus_finder(busbar_section[i].flag)); //得到与ID号相对应的元素
// if(it!=power_transformer.end())
// {
// double PL=((it->APower)+(it->BPower)+(it->CPower))/(base_power[0].basePower*1000);
// double QL=((it->AReactivePower)+(it->BReactivePower)+(it->CReactivePower))/(base_power[0].basePower*1000);
// if (PL==0 && QL==0)
// {
// out<<busbar_section[i].flag<<","<<"0"<<","<<"0"<<","<<"-1"<<","<<"-1"<<"\r\n";
// k++;
// }
// else
// {
// out<<busbar_section[i].flag<<","<<"0"<<","<<"0"<<","<<QString().sprintf("%.10lf",PL)<<","<<QString().sprintf("%.10lf",QL)<<"\r\n";
// k++;
// }
// }
// else
// {
// out<<busbar_section[i].flag<<","<<"0"<<","<<"0"<<","<<"0"<<","<<"0"<<"\r\n";
// k++;
// }
// }
// }
// for (int i=0;i<busNo;i++)
// {
// out<<i+1<<","<<"0"<<","<<"0"<<","<<"0"<<","<<"0"<<"\r\n";
// }
// out<<0<<"\r\n";
// out<<0<<"\r\n";
// out<<0<<"\r\n";
return 0;
}