From a40d5a405d60b4e429f6f578dcfe3c33ab5ad81a Mon Sep 17 00:00:00 2001 From: Thales Lima Oliveira Date: Fri, 26 Apr 2019 02:29:47 -0300 Subject: Frequency response implemented Need a form --- Project/Bus.cpp | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) (limited to 'Project/Bus.cpp') diff --git a/Project/Bus.cpp b/Project/Bus.cpp index eecc06a..37eac3e 100644 --- a/Project/Bus.cpp +++ b/Project/Bus.cpp @@ -239,23 +239,31 @@ wxString Bus::GetTipText() const } tipText += _("\n\nSsc = ") + wxString::FromDouble(std::abs(m_electricalData.scPower), 5) + _(" p.u."); + tipText += _("\n\nTHD = ") + wxString::FromDouble(std::abs(m_electricalData.thd), 5) + wxT("\%"); return tipText; } -bool Bus::GetPlotData(ElementPlotData& plotData) +bool Bus::GetPlotData(ElementPlotData& plotData, PlotStudy study) { - if(!m_electricalData.plotBus) return false; - plotData.SetName(m_electricalData.name); - plotData.SetCurveType(ElementPlotData::CT_BUS); - - std::vector absVoltage, argVoltage; - for(unsigned int i = 0; i < m_electricalData.stabVoltageVector.size(); ++i) { - absVoltage.push_back(std::abs(m_electricalData.stabVoltageVector[i])); - argVoltage.push_back(wxRadToDeg(std::arg(m_electricalData.stabVoltageVector[i]))); + if(study == STABILITY) { + if(!m_electricalData.plotBus) return false; + plotData.SetName(m_electricalData.name); + plotData.SetCurveType(ElementPlotData::CT_BUS); + + std::vector absVoltage, argVoltage; + for(unsigned int i = 0; i < m_electricalData.stabVoltageVector.size(); ++i) { + absVoltage.push_back(std::abs(m_electricalData.stabVoltageVector[i])); + argVoltage.push_back(wxRadToDeg(std::arg(m_electricalData.stabVoltageVector[i]))); + } + plotData.AddData(absVoltage, _("Voltage")); + plotData.AddData(argVoltage, _("Angle")); + } else if(FREQRESPONSE) { + //if(!m_electricalData.plotBus) return false; + plotData.SetName(m_electricalData.name); + plotData.SetCurveType(ElementPlotData::CT_BUS); + plotData.AddData(m_electricalData.absImpedanceVector, _("Impedance")); } - plotData.AddData(absVoltage, _("Voltage")); - plotData.AddData(argVoltage, _("Angle")); return true; } -- cgit From 2b02ef22cc5f2025b09b700f1cb6e1cec94d80f6 Mon Sep 17 00:00:00 2001 From: Thales Lima Oliveira Date: Fri, 26 Apr 2019 17:52:32 -0300 Subject: Power quality fully implemented A formal filter element must be implemented in future --- Project/Bus.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'Project/Bus.cpp') diff --git a/Project/Bus.cpp b/Project/Bus.cpp index 37eac3e..5c8c190 100644 --- a/Project/Bus.cpp +++ b/Project/Bus.cpp @@ -259,7 +259,7 @@ bool Bus::GetPlotData(ElementPlotData& plotData, PlotStudy study) plotData.AddData(absVoltage, _("Voltage")); plotData.AddData(argVoltage, _("Angle")); } else if(FREQRESPONSE) { - //if(!m_electricalData.plotBus) return false; + if(!m_electricalData.plotPQData) return false; plotData.SetName(m_electricalData.name); plotData.SetCurveType(ElementPlotData::CT_BUS); plotData.AddData(m_electricalData.absImpedanceVector, _("Impedance")); @@ -316,6 +316,10 @@ rapidxml::xml_node<>* Bus::SaveElement(rapidxml::xml_document<>& doc, rapidxml:: auto stabFaultReactance = XMLParser::AppendNode(doc, stability, "FaultReactance"); XMLParser::SetNodeValue(doc, stabFaultReactance, m_electricalData.stabFaultReactance); + auto powerQuality = XMLParser::AppendNode(doc, electricalProp, "PowerQuality"); + auto plotPQData = XMLParser::AppendNode(doc, powerQuality, "Plot"); + XMLParser::SetNodeValue(doc, plotPQData, m_electricalData.plotPQData); + return elementNode; } @@ -349,6 +353,9 @@ bool Bus::OpenElement(rapidxml::xml_node<>* elementNode) m_electricalData.stabFaultResistance = XMLParser::GetNodeValueDouble(stability, "FaultResistance"); m_electricalData.stabFaultReactance = XMLParser::GetNodeValueDouble(stability, "FaultReactance"); + auto powerQuality = electricalProp->first_node("PowerQuality"); + if(powerQuality) m_electricalData.plotPQData = XMLParser::GetNodeValueInt(powerQuality, "Plot"); + if(m_electricalData.stabHasFault) SetDynamicEvent(true); return true; } -- cgit