cimforreduceloss/core/DealData.cpp

186 lines
8.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "head.h"
#include "transformerparser.h"
#include "linetypeparser.h"
#include "qt_readxml.h"
void Qt_readxml::XmlReaderDealData()
{
qDebug()<<"Get Transformer Power:";
int trans_no=power_transformer.size();
double UN=10.5;
base_power[0].basePower=100;
double SB=base_power[0].basePower;
//double SB=100;
//QString transPowerData="E:\\line loss\\nn06302000.csv";
QString transPowerData="E:\\line loss\\lz00.csv";
QString transParaData="E:\\line loss\\trans.csv";
QString lineParaData="E:\\line loss\\LineType.txt";
if(!QFile::exists(transPowerData))
{
//std::cout<<"nn06302000 "<<"not found."<<std::endl;
std::cout<<"lz00.csv "<<"not found."<<std::endl;
}
if(!QFile::exists(transParaData))
{
std::cout<<"trans "<<"not found."<<std::endl;
}
if(!QFile::exists(lineParaData))
{
std::cout<<"LineType "<<"not found."<<std::endl;
}
for (int i=0;i<trans_no;i++)
{
int a=power_transformer[i].BaseVoltage_res[0].length();
QString b=power_transformer[i].BaseVoltage_res[0];
std::vector<List>::iterator it = find_if(list1.begin(), list1.end(), vector_finder(b.right(a-1)));
power_transformer[i].UB=base_voltage[it->no].nominalVoltage;
double UB=power_transformer[i].UB;
if (!power_transformer[i].ratedMVA)
{
power_transformer[i].ratedMVA=630;
}
double ratedMVA=power_transformer[i].ratedMVA/1000;
if (power_transformer[i].Model.trimmed()=="")
{
power_transformer[i].Model="S11-M";
}
power_transformer[i].APower=TransformerParser::GetTransformerAPower(transPowerData,power_transformer[i].Serial_Number);
power_transformer[i].BPower=TransformerParser::GetTransformerBPower(transPowerData,power_transformer[i].Serial_Number);
power_transformer[i].CPower=TransformerParser::GetTransformerCPower(transPowerData,power_transformer[i].Serial_Number);
power_transformer[i].Pk=TransformerParser::GetDisTransformerPk(transParaData,power_transformer[i].Model);
power_transformer[i].Uk=TransformerParser::GetDisTransformerUk(transParaData,power_transformer[i].Model);
double Pk=power_transformer[i].Pk;
double Uk=power_transformer[i].Uk;
power_transformer[i].AReactivePower=TransformerParser::GetTransformerAReactivePower(transPowerData,power_transformer[i].Serial_Number);
power_transformer[i].BReactivePower=TransformerParser::GetTransformerBReactivePower(transPowerData,power_transformer[i].Serial_Number);
power_transformer[i].CReactivePower=TransformerParser::GetTransformerCReactivePower(transPowerData,power_transformer[i].Serial_Number);
power_transformer[i].P0=TransformerParser::GetDisTransformerP0(transParaData,power_transformer[i].Model);
power_transformer[i].I0=TransformerParser::GetDisTransformerI0(transParaData,power_transformer[i].Model);
double P0=power_transformer[i].P0;
double I0=power_transformer[i].I0;
if (!power_transformer[i].Uk && !power_transformer[i].Pk)
{
QString newModel=power_transformer[i].Model+"-"+QString::number(ratedMVA*1000);
power_transformer[i].Pk=TransformerParser::GetDisTransformerPk(transParaData,newModel);
power_transformer[i].Uk=TransformerParser::GetDisTransformerUk(transParaData,newModel);
power_transformer[i].P0=TransformerParser::GetDisTransformerP0(transParaData,newModel);
power_transformer[i].I0=TransformerParser::GetDisTransformerI0(transParaData,newModel);
Pk=power_transformer[i].Pk;
Uk=power_transformer[i].Uk;
P0=power_transformer[i].P0;
I0=power_transformer[i].I0;
}
if (!power_transformer[i].Uk && !power_transformer[i].Pk)
{
// QString newModel="S11-M";
// power_transformer[i].Pk=TransformerParser::GetDisTransformerPk(transParaData,newModel);
// power_transformer[i].Uk=TransformerParser::GetDisTransformerUk(transParaData,newModel);
// power_transformer[i].P0=TransformerParser::GetDisTransformerP0(transParaData,newModel);
// power_transformer[i].I0=TransformerParser::GetDisTransformerI0(transParaData,newModel);
// Pk=power_transformer[i].Pk;
// Uk=power_transformer[i].Uk;
// P0=power_transformer[i].P0;
// I0=power_transformer[i].I0;
Pk=0.0001;
Uk=0.0001;
P0=0.0001;
I0=0.0001;
}
power_transformer[i].r=(Pk*UB*UB/(1000*ratedMVA*ratedMVA))*SB/(UN*UN);
power_transformer[i].x=(Uk*UB*UB/(100*ratedMVA))*SB/(UN*UN); //在这UN为基准电压UB为额定电压
power_transformer[i].g=(P0/(1000*UB*UB))*(UN*UN)/SB;
power_transformer[i].b=(I0*ratedMVA/(100*UB*UB))*(UN*UN)/SB;
}
qDebug()<<"Get Line Parameters:";
int ac_no=acline_segment.size();
for (int i=0;i<ac_no;i++)
{
int a=acline_segment[i].BaseVoltage_res[0].length();
QString b=acline_segment[i].BaseVoltage_res[0];
std::vector<List>::iterator it = find_if(list1.begin(), list1.end(), vector_finder(b.right(a-1)));
acline_segment[i].UB=base_voltage[it->no].nominalVoltage;
double UB=acline_segment[i].UB;
std::vector<AC_kind>::iterator ac = find_if(ac_kind.begin(), ac_kind.end(), ac_finder(acline_segment[i].GIS_ID));
double length=acline_segment[i].LongLength/(ac->quantity);
acline_segment[i].secLength = length;
if (!length)
{
length=0.3;
acline_segment[i].LongLength=length;
acline_segment[i].secLength = length;
}
if (acline_segment[i].Model.left(4)=="YJV-")
{
acline_segment[i].Model=acline_segment[i].Model.insert(3,"22");
}
else if (acline_segment[i].Model.left(5)=="YJLV-")
{
acline_segment[i].Model=acline_segment[i].Model.insert(4,"22");
}
else if (acline_segment[i].Model.left(9)=="JKLGYJ-10")
{
acline_segment[i].Model=acline_segment[i].Model+"/2";
}
else if (acline_segment[i].Model.left(9)=="JKLGYJ-16")
{
acline_segment[i].Model=acline_segment[i].Model+"/3";
}
else if (acline_segment[i].Model.left(9)=="JKLGYJ-25")
{
acline_segment[i].Model=acline_segment[i].Model+"/4";
}
else if (acline_segment[i].Model.left(9)=="JKLGYJ-35")
{
acline_segment[i].Model=acline_segment[i].Model+"/6";
}
else if (acline_segment[i].Model.left(9)=="JKLGYJ-50")
{
acline_segment[i].Model=acline_segment[i].Model+"/8";
}
else if (acline_segment[i].Model.left(9)=="JKLGYJ-70")
{
acline_segment[i].Model=acline_segment[i].Model+"/10";
}
else if (acline_segment[i].Model.left(9)=="JKLGYJ-95")
{
acline_segment[i].Model=acline_segment[i].Model+"/20";
}
else if (acline_segment[i].Model.left(10)=="JKLGYJ-120")
{
acline_segment[i].Model=acline_segment[i].Model+"/20";
}
else if (acline_segment[i].Model.left(10)=="JKLGYJ-150")
{
acline_segment[i].Model=acline_segment[i].Model+"/20";
}
else if (acline_segment[i].Model.left(10)=="JKLGYJ-185")
{
acline_segment[i].Model=acline_segment[i].Model+"/25";
}
else if (acline_segment[i].Model.left(10)=="JKLGYJ-240")
{
acline_segment[i].Model=acline_segment[i].Model+"/30";
}
else if (acline_segment[i].Model.left(10)=="JKLGYJ-300")
{
acline_segment[i].Model=acline_segment[i].Model+"/50";
}
acline_segment[i].x=(LineTypeParser::GetReactance(lineParaData,acline_segment[i].Model)*length)*SB/(UN*UN);
acline_segment[i].r=(LineTypeParser::GetResistance(lineParaData,acline_segment[i].Model)*length)*SB/(UN*UN);
if (acline_segment[i].r==0 && acline_segment[i].x==0)
{
acline_segment[i].r=0.8*length*SB/(UN*UN);
acline_segment[i].x=0.7*length*SB/(UN*UN);
// acline_segment[i].r=0.01;
// acline_segment[i].x=0.01;
}
total_length=total_length+length;
}
}