Files
cimforreduceloss/core/DealData.cpp
facat@lab.com 3a555bd2c1 1.重新组织了文件。
2.准备试试把所有元素都读入内存中。

Signed-off-by: facat@lab.com <facat@lab.com>
2014-11-21 17:47:58 +08:00

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;
}
}