diff options
Diffstat (limited to 'Project')
41 files changed, 733 insertions, 721 deletions
diff --git a/Project/Bus.cpp b/Project/Bus.cpp index d3465cc..0f79d0f 100644 --- a/Project/Bus.cpp +++ b/Project/Bus.cpp @@ -288,7 +288,9 @@ wxString Bus::GetTipText() const tipText += wxString::Format(" (%d)", m_electricalData.number + 1); tipText += "\n"; tipText += StringFromDouble(m_electricalData.nominalVoltage, 1) + - (m_electricalData.nominalVoltageUnit == UNIT_V ? _(" V") : _(" kV")); + (m_electricalData.nominalVoltageUnit == ElectricalUnit::UNIT_V + ? _(" V") + : _(" kV")); tipText += "\n"; tipText += _("\nV = ") + wxString::FromDouble(std::abs(m_electricalData.voltage), 5) + _(" p.u."); tipText += "\n"; @@ -306,17 +308,17 @@ 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("\%"); + tipText += _("\n\nTHD = ") + wxString::FromDouble(std::abs(m_electricalData.thd), 5) + wxT("%"); return tipText; } bool Bus::GetPlotData(ElementPlotData& plotData, PlotStudy study) { - if(study == STABILITY) { + if(study == PlotStudy::STABILITY) { if(!m_electricalData.plotBus) return false; plotData.SetName(m_electricalData.name); - plotData.SetCurveType(ElementPlotData::CT_BUS); + plotData.SetCurveType(ElementPlotData::CurveType::CT_BUS); std::vector<double> absVoltage, argVoltage; for(unsigned int i = 0; i < m_electricalData.stabVoltageVector.size(); ++i) { @@ -325,10 +327,10 @@ bool Bus::GetPlotData(ElementPlotData& plotData, PlotStudy study) } plotData.AddData(absVoltage, _("Voltage")); plotData.AddData(argVoltage, _("Angle")); - } else if(FREQRESPONSE) { + } else if (study == PlotStudy::FREQRESPONSE) { if(!m_electricalData.plotPQData) return false; plotData.SetName(m_electricalData.name); - plotData.SetCurveType(ElementPlotData::CT_BUS); + plotData.SetCurveType(ElementPlotData::CurveType::CT_BUS); plotData.AddData(m_electricalData.absImpedanceVector, _("Impedance")); } return true; @@ -348,7 +350,7 @@ rapidxml::xml_node<>* Bus::SaveElement(rapidxml::xml_document<>& doc, rapidxml:: XMLParser::SetNodeValue(doc, name, m_electricalData.name); auto nominalVoltage = XMLParser::AppendNode(doc, electricalProp, "NominalVoltage"); XMLParser::SetNodeValue(doc, nominalVoltage, m_electricalData.nominalVoltage); - XMLParser::SetNodeAttribute(doc, nominalVoltage, "UnitID", m_electricalData.nominalVoltageUnit); + XMLParser::SetNodeAttribute(doc, nominalVoltage, "UnitID", static_cast<int>(m_electricalData.nominalVoltageUnit)); auto isVoltageControlled = XMLParser::AppendNode(doc, electricalProp, "IsVoltageControlled"); XMLParser::SetNodeValue(doc, isVoltageControlled, m_electricalData.isVoltageControlled); auto controlledVoltage = XMLParser::AppendNode(doc, electricalProp, "ControlledVoltage"); @@ -361,9 +363,9 @@ rapidxml::xml_node<>* Bus::SaveElement(rapidxml::xml_document<>& doc, rapidxml:: auto hasFault = XMLParser::AppendNode(doc, fault, "HasFault"); XMLParser::SetNodeValue(doc, hasFault, m_electricalData.hasFault); auto faultType = XMLParser::AppendNode(doc, fault, "Type"); - XMLParser::SetNodeValue(doc, faultType, m_electricalData.faultType); + XMLParser::SetNodeValue(doc, faultType, static_cast<int>(m_electricalData.faultType)); auto faultLocation = XMLParser::AppendNode(doc, fault, "Location"); - XMLParser::SetNodeValue(doc, faultLocation, m_electricalData.faultLocation); + XMLParser::SetNodeValue(doc, faultLocation, static_cast<int>(m_electricalData.faultLocation)); auto faultResistance = XMLParser::AppendNode(doc, fault, "Resistance"); XMLParser::SetNodeValue(doc, faultResistance, m_electricalData.faultResistance); auto faultReactance = XMLParser::AppendNode(doc, fault, "Reactance"); diff --git a/Project/Bus.h b/Project/Bus.h index 0b4bb53..50ce004 100644 --- a/Project/Bus.h +++ b/Project/Bus.h @@ -25,10 +25,10 @@ struct BusElectricalData { int number = 0; wxString name = ""; double nominalVoltage = 138.0; - ElectricalUnit nominalVoltageUnit = UNIT_kV; + ElectricalUnit nominalVoltageUnit = ElectricalUnit::UNIT_kV; bool isVoltageControlled = false; double controlledVoltage = 1.0; - int controlledVoltageUnitChoice = 0; // 0 = p.u., 1 = same as nominalVoltageUnit (UNIT_V or UNIT_kV). + int controlledVoltageUnitChoice = 0; // 0 = p.u., 1 = same as nominalVoltageUnit (ElectricalUnit::UNIT_V or ElectricalUnit::UNIT_kV). bool slackBus = false; // Power flow (p.u.) @@ -38,8 +38,8 @@ struct BusElectricalData { // Fault bool hasFault = false; - FaultData faultType = FAULT_THREEPHASE; - FaultData faultLocation = FAULT_LINE_A; + FaultData faultType = FaultData::FAULT_THREEPHASE; + FaultData faultLocation = FaultData::FAULT_LINE_A; // p.u. fault data double faultResistance = 0.0; double faultReactance = 0.0; @@ -96,7 +96,7 @@ class Bus : public PowerElement virtual BusElectricalData GetElectricalData() const { return m_electricalData; } virtual void SetElectricalData(const BusElectricalData& electricalData) { m_electricalData = electricalData; } virtual bool ShowForm(wxWindow* parent, Element* element); - virtual bool GetPlotData(ElementPlotData& plotData, PlotStudy study = STABILITY); + virtual bool GetPlotData(ElementPlotData& plotData, PlotStudy study = PlotStudy::STABILITY); virtual rapidxml::xml_node<>* SaveElement(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementListNode); virtual bool OpenElement(rapidxml::xml_node<>* elementNode); diff --git a/Project/Capacitor.cpp b/Project/Capacitor.cpp index f7ae32a..e77c2e7 100644 --- a/Project/Capacitor.cpp +++ b/Project/Capacitor.cpp @@ -232,17 +232,17 @@ CapacitorElectricalData Capacitor::GetPUElectricalData(double systemPowerBase) { CapacitorElectricalData data = m_electricalData; switch(data.reactivePowerUnit) { - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { data.reactivePower = data.reactivePower / systemPowerBase; - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase; - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase; - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; default: break; @@ -273,16 +273,16 @@ wxString Capacitor::GetTipText() const tipText += "\n"; tipText += _("\nQ = ") + wxString::FromDouble(reactivePower, 5); switch(m_electricalData.reactivePowerUnit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { tipText += _(" p.u."); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { tipText += _(" VAr"); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { tipText += _(" kVAr"); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { tipText += _(" MVAr"); } break; default: @@ -306,7 +306,7 @@ rapidxml::xml_node<>* Capacitor::SaveElement(rapidxml::xml_document<>& doc, rapi XMLParser::SetNodeValue(doc, name, m_electricalData.name); auto reactivePower = XMLParser::AppendNode(doc, electricalProp, "ReactivePower"); XMLParser::SetNodeValue(doc, reactivePower, m_electricalData.reactivePower); - XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", m_electricalData.reactivePowerUnit); + XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", static_cast<int>(m_electricalData.reactivePowerUnit)); SaveSwitchingData(doc, electricalProp); diff --git a/Project/Capacitor.h b/Project/Capacitor.h index c98070d..ad4613f 100644 --- a/Project/Capacitor.h +++ b/Project/Capacitor.h @@ -25,7 +25,7 @@ class ReactiveShuntElementForm; struct CapacitorElectricalData { wxString name; double reactivePower = 100.0; - ElectricalUnit reactivePowerUnit = ElectricalUnit::UNIT_MVAr; + ElectricalUnit reactivePowerUnit = ElectricalUnit::UNIT_Mvar; }; /** diff --git a/Project/ChartView.cpp b/Project/ChartView.cpp index 03b57b9..94e3c9d 100644 --- a/Project/ChartView.cpp +++ b/Project/ChartView.cpp @@ -100,26 +100,26 @@ void ChartView::SetTreectrl() m_treeTimeID = m_treeCtrl->AppendItem(rootID, _("Time")); m_treeCtrl->SetItemTextColour(m_treeTimeID, *wxRED); - bool firstElement[ElementPlotData::NUM_ELEMENTS]; - for(int i = 0; i < ElementPlotData::NUM_ELEMENTS; ++i) firstElement[i] = true; - - wxString rootElementName[ElementPlotData::NUM_ELEMENTS]; - rootElementName[ElementPlotData::CT_BUS] = _("Bus"); - rootElementName[ElementPlotData::CT_IND_MOTOR] = _("Induction motor"); - rootElementName[ElementPlotData::CT_LINE] = _("Line"); - rootElementName[ElementPlotData::CT_LOAD] = _("Load"); - rootElementName[ElementPlotData::CT_SHUNT_CAPACITOR] = _("Capacitor"); - rootElementName[ElementPlotData::CT_SHUNT_INDUCTOR] = _("Inductor"); - rootElementName[ElementPlotData::CT_SYNC_COMPENSATOR] = _("Synchronous compensator"); - rootElementName[ElementPlotData::CT_SYNC_GENERATOR] = _("Synchronous generator"); - rootElementName[ElementPlotData::CT_TRANSFORMER] = _("Transformer"); - rootElementName[ElementPlotData::CT_TEST] = _("Test"); - - wxTreeItemId rootItemID[ElementPlotData::NUM_ELEMENTS]; + bool firstElement[static_cast<unsigned int>(ElementPlotData::CurveType::NUM_ELEMENTS)]; + for(int i = 0; i < static_cast<unsigned int>(ElementPlotData::CurveType::NUM_ELEMENTS); ++i) firstElement[i] = true; + + wxString rootElementName[static_cast<unsigned int>(ElementPlotData::CurveType::NUM_ELEMENTS)]; + rootElementName[static_cast<unsigned int>(ElementPlotData::CurveType::CT_BUS)] = _("Bus"); + rootElementName[static_cast<unsigned int>(ElementPlotData::CurveType::CT_IND_MOTOR)] = _("Induction motor"); + rootElementName[static_cast<unsigned int>(ElementPlotData::CurveType::CT_LINE)] = _("Line"); + rootElementName[static_cast<unsigned int>(ElementPlotData::CurveType::CT_LOAD)] = _("Load"); + rootElementName[static_cast<unsigned int>(ElementPlotData::CurveType::CT_SHUNT_CAPACITOR)] = _("Capacitor"); + rootElementName[static_cast<unsigned int>(ElementPlotData::CurveType::CT_SHUNT_INDUCTOR)] = _("Inductor"); + rootElementName[static_cast<unsigned int>(ElementPlotData::CurveType::CT_SYNC_COMPENSATOR)] = _("Synchronous compensator"); + rootElementName[static_cast<unsigned int>(ElementPlotData::CurveType::CT_SYNC_GENERATOR)] = _("Synchronous generator"); + rootElementName[static_cast<unsigned int>(ElementPlotData::CurveType::CT_TRANSFORMER)] = _("Transformer"); + rootElementName[static_cast<unsigned int>(ElementPlotData::CurveType::CT_TEST)] = _("Test"); + + wxTreeItemId rootItemID[static_cast<unsigned int>(ElementPlotData::CurveType::NUM_ELEMENTS)]; for(auto it = m_epdList.begin(), itEnd = m_epdList.end(); it != itEnd; ++it) { ElementPlotData data = *it; - ElementPlotData::CurveType curveType = data.GetCurveType(); + unsigned int curveType = static_cast<unsigned int>(data.GetCurveType()); if(firstElement[curveType]) { rootItemID[curveType] = m_treeCtrl->AppendItem(rootID, rootElementName[curveType]); diff --git a/Project/ConnectionLine.cpp b/Project/ConnectionLine.cpp index 1a858a4..4ce7df8 100644 --- a/Project/ConnectionLine.cpp +++ b/Project/ConnectionLine.cpp @@ -42,7 +42,7 @@ void ConnectionLine::Draw(wxPoint2DDouble translation, double scale) const glColor4d(0.0, 0.0, 0.0, 1.0); DrawLine(m_pointList); - if(m_type == ELEMENT_LINE) { + if(m_type == ConnectionLineType::ELEMENT_LINE) { glColor4d(0.0, 0.0, 0.0, 1.0); DrawCircle(m_pointList[5], 3, 10, GL_POLYGON); } @@ -64,7 +64,7 @@ bool ConnectionLine::Intersects(wxRect2DDouble rect) const void ConnectionLine::UpdatePoints() { - if(m_type == ELEMENT_ELEMENT) { + if(m_type == ConnectionLineType::ELEMENT_ELEMENT) { bool hasOneNode = true; wxPoint2DDouble pt1 = m_nodeList[0]->GetPosition(); wxPoint2DDouble pt2; @@ -103,7 +103,7 @@ void ConnectionLine::UpdatePoints() } m_pointList[3] = m_pointList[4] + wxPoint2DDouble(0.0, midPt.m_y - m_pointList[4].m_y); - } else if(m_type == ELEMENT_LINE) { + } else if(m_type == ConnectionLineType::ELEMENT_LINE) { wxPoint2DDouble pt1 = m_nodeList[0]->GetPosition(); wxPoint2DDouble pt2 = m_parentLine->GetMidPoint(); wxPoint2DDouble midPt = (pt1 + pt2) / 2.0 + wxPoint2DDouble(0.0, m_lineOffset); @@ -169,7 +169,7 @@ bool ConnectionLine::SetParentLine(ConnectionLine* parent) if(m_nodeList[0]->GetNodeType() != Node::NodeType::NODE_IN) return false; if(!parent) return false; - m_type = ELEMENT_LINE; + m_type = ConnectionLineType::ELEMENT_LINE; m_parentLine = parent; return true; } diff --git a/Project/ConnectionLine.h b/Project/ConnectionLine.h index 92154d2..cd52801 100644 --- a/Project/ConnectionLine.h +++ b/Project/ConnectionLine.h @@ -30,7 +30,7 @@ class ConnectionLine : public ControlElement { public: - enum ConnectionLineType { ELEMENT_ELEMENT = 0, ELEMENT_LINE }; + enum class ConnectionLineType : int { ELEMENT_ELEMENT = 0, ELEMENT_LINE }; ConnectionLine(); ConnectionLine(Node* firstNode, int id); ~ConnectionLine(); @@ -48,7 +48,7 @@ class ConnectionLine : public ControlElement virtual wxPoint2DDouble GetMidPoint() const; virtual double GetOffset() const { return m_lineOffset; } virtual void SetOffset(double offset) { m_lineOffset = offset; } - virtual ConnectionLineType GetType() const { return m_type; } + virtual ConnectionLine::ConnectionLineType GetType() const { return m_type; } virtual void SetType(ConnectionLineType newType) { m_type = newType; } virtual ConnectionLine* GetParentLine() const { return m_parentLine; } virtual bool SetParentLine(ConnectionLine* parent); @@ -65,7 +65,7 @@ class ConnectionLine : public ControlElement double m_moveStartOffset = 0.0; wxPoint2DDouble m_tmpSndPt; - ConnectionLineType m_type = ELEMENT_ELEMENT; + ConnectionLineType m_type = ConnectionLineType::ELEMENT_ELEMENT; ConnectionLine* m_parentLine = NULL; double m_value; diff --git a/Project/ControlEditor.cpp b/Project/ControlEditor.cpp index 709fb25..b74fcea 100644 --- a/Project/ControlEditor.cpp +++ b/Project/ControlEditor.cpp @@ -157,73 +157,78 @@ void ControlEditor::BuildControlElementPanel() ControlElementButton* ioButton = new ControlElementButton( m_panelControlElements, _("In/Out"), - wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\io.png", wxPATH_WIN).GetPath()), ID_IO); + wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\io.png", wxPATH_WIN).GetPath()), + static_cast<int>(ControlElementButtonID::ID_IO)); wrapSizer->Add(ioButton, 0, wxALL, 5); ioButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, this); ControlElementButton* tfButton = new ControlElementButton( m_panelControlElements, _("Transfer fcn"), wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\transferFunc.png", wxPATH_WIN).GetPath()), - ID_TF); + static_cast<int>(ControlElementButtonID::ID_TF)); wrapSizer->Add(tfButton, 0, wxALL, 5); tfButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, this); ControlElementButton* sumButton = new ControlElementButton( m_panelControlElements, _("Sum"), - wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\sum.png", wxPATH_WIN).GetPath()), ID_SUM); + wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\sum.png", wxPATH_WIN).GetPath()), + static_cast<int>(ControlElementButtonID::ID_SUM)); wrapSizer->Add(sumButton, 0, wxALL, 5); sumButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, this); ControlElementButton* constButton = new ControlElementButton( m_panelControlElements, _("Constant"), wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\value.png", wxPATH_WIN).GetPath()), - ID_CONST); + static_cast<int>(ControlElementButtonID::ID_CONST)); wrapSizer->Add(constButton, 0, wxALL, 5); constButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, this); ControlElementButton* gainButton = new ControlElementButton( m_panelControlElements, _("Gain"), - wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\gain.png", wxPATH_WIN).GetPath()), ID_GAIN); + wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\gain.png", wxPATH_WIN).GetPath()), + static_cast<int>(ControlElementButtonID::ID_GAIN)); wrapSizer->Add(gainButton, 0, wxALL, 5); gainButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, this); ControlElementButton* limButton = new ControlElementButton( m_panelControlElements, _("Limiter"), wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\limiter.png", wxPATH_WIN).GetPath()), - ID_LIMITER); + static_cast<int>(ControlElementButtonID::ID_LIMITER)); wrapSizer->Add(limButton, 0, wxALL, 5); limButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, this); ControlElementButton* rateLimButton = new ControlElementButton( m_panelControlElements, _("Rate limiter"), wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\rateLimiter.png", wxPATH_WIN).GetPath()), - ID_RATELIM); + static_cast<int>(ControlElementButtonID::ID_RATELIM)); wrapSizer->Add(rateLimButton, 0, wxALL, 5); rateLimButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, this); ControlElementButton* multButton = new ControlElementButton( m_panelControlElements, _("Multiplier"), - wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\mult.png", wxPATH_WIN).GetPath()), ID_MULT); + wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\mult.png", wxPATH_WIN).GetPath()), + static_cast<int>(ControlElementButtonID::ID_MULT)); wrapSizer->Add(multButton, 0, wxALL, 5); multButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, this); ControlElementButton* divButton = new ControlElementButton( m_panelControlElements, _("Divider"), wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\div.png", wxPATH_WIN).GetPath()), - ID_MATH_DIV); + static_cast<int>(ControlElementButtonID::ID_MATH_DIV)); wrapSizer->Add(divButton, 0, wxALL, 5); divButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, this); ControlElementButton* mathExprButton = new ControlElementButton( m_panelControlElements, _("Math Expression"), wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\mathExpr.png", wxPATH_WIN).GetPath()), - ID_MATH_EXPR); + static_cast<int>(ControlElementButtonID::ID_MATH_EXPR)); wrapSizer->Add(mathExprButton, 0, wxALL, 5); mathExprButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, this); ControlElementButton* satButton = new ControlElementButton( m_panelControlElements, _("Exponential"), - wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\sat.png", wxPATH_WIN).GetPath()), ID_EXP); + wxImage(exePath + wxFileName::DirName("\\..\\data\\images\\control\\sat.png", wxPATH_WIN).GetPath()), + static_cast<int>(ControlElementButtonID::ID_EXP)); wrapSizer->Add(satButton, 0, wxALL, 5); satButton->Bind(wxEVT_LEFT_DOWN, &ControlEditor::LeftClickDown, this); } @@ -245,8 +250,8 @@ void ControlEditor::SetViewport() glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_LINE_SMOOTH); - double width = m_glCanvas->GetSize().x - 1; - double height = m_glCanvas->GetSize().y - 1; + double width = static_cast<double>(m_glCanvas->GetSize().x) - 1; + double height = static_cast<double>(m_glCanvas->GetSize().y) - 1; // Viewport fit the screen. glViewport(0, 0, width, height); @@ -262,58 +267,58 @@ void ControlEditor::SetViewport() void ControlEditor::AddElement(ControlElementButtonID id) { switch(id) { - case ID_IO: { - m_mode = MODE_INSERT; + case ControlElementButtonID::ID_IO: { + m_mode = ControlEditorMode::MODE_INSERT; IOControl* io = new IOControl(m_ioFlags, GetNextID()); m_elementList.push_back(io); } break; - case ID_TF: { - m_mode = MODE_INSERT; + case ControlElementButtonID::ID_TF: { + m_mode = ControlEditorMode::MODE_INSERT; TransferFunction* tf = new TransferFunction(GetNextID()); m_elementList.push_back(tf); } break; - case ID_SUM: { - m_mode = MODE_INSERT; + case ControlElementButtonID::ID_SUM: { + m_mode = ControlEditorMode::MODE_INSERT; Sum* sum = new Sum(GetNextID()); m_elementList.push_back(sum); } break; - case ID_CONST: { - m_mode = MODE_INSERT; + case ControlElementButtonID::ID_CONST: { + m_mode = ControlEditorMode::MODE_INSERT; Constant* constant = new Constant(GetNextID()); m_elementList.push_back(constant); } break; - case ID_LIMITER: { - m_mode = MODE_INSERT; + case ControlElementButtonID::ID_LIMITER: { + m_mode = ControlEditorMode::MODE_INSERT; Limiter* limiter = new Limiter(GetNextID()); m_elementList.push_back(limiter); } break; - case ID_GAIN: { - m_mode = MODE_INSERT; + case ControlElementButtonID::ID_GAIN: { + m_mode = ControlEditorMode::MODE_INSERT; Gain* gain = new Gain(GetNextID()); m_elementList.push_back(gain); } break; - case ID_MULT: { - m_mode = MODE_INSERT; + case ControlElementButtonID::ID_MULT: { + m_mode = ControlEditorMode::MODE_INSERT; Multiplier* mult = new Multiplier(GetNextID()); m_elementList.push_back(mult); } break; - case ID_EXP: { - m_mode = MODE_INSERT; + case ControlElementButtonID::ID_EXP: { + m_mode = ControlEditorMode::MODE_INSERT; Exponential* exp = new Exponential(GetNextID()); m_elementList.push_back(exp); } break; - case ID_RATELIM: { - m_mode = MODE_INSERT; + case ControlElementButtonID::ID_RATELIM: { + m_mode = ControlEditorMode::MODE_INSERT; RateLimiter* rateLim = new RateLimiter(GetNextID()); m_elementList.push_back(rateLim); } break; - case ID_MATH_DIV: { - m_mode = MODE_INSERT; + case ControlElementButtonID::ID_MATH_DIV: { + m_mode = ControlEditorMode::MODE_INSERT; Divider* divider = new Divider(GetNextID()); m_elementList.push_back(divider); } break; - case ID_MATH_EXPR: { - m_mode = MODE_INSERT; + case ControlElementButtonID::ID_MATH_EXPR: { + m_mode = ControlEditorMode::MODE_INSERT; MathExpression* mathExpr = new MathExpression(GetNextID()); m_elementList.push_back(mathExpr); } break; @@ -367,7 +372,7 @@ void ControlEditor::OnDoubleClick(wxMouseEvent& event) wxPoint2DDouble clickPoint = event.GetPosition(); bool redraw = false; - if(m_mode == MODE_EDIT) { + if(m_mode == ControlEditor::ControlEditorMode::MODE_EDIT) { for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) { Element* element = *it; if(element->Contains(m_camera->ScreenToWorld(clickPoint))) { @@ -391,8 +396,8 @@ void ControlEditor::OnLeftClickDown(wxMouseEvent& event) wxPoint2DDouble clickPoint = event.GetPosition(); bool foundElement = false; - if(m_mode == MODE_INSERT) { - m_mode = MODE_EDIT; + if(m_mode == ControlEditorMode::MODE_INSERT) { + m_mode = ControlEditor::ControlEditorMode::MODE_EDIT; } else { for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) { ControlElement* element = *it; @@ -401,7 +406,7 @@ void ControlEditor::OnLeftClickDown(wxMouseEvent& event) for(auto itN = nodeList.begin(), itNEnd = nodeList.end(); itN != itNEnd; ++itN) { Node* node = *itN; if(node->Contains(m_camera->ScreenToWorld(clickPoint))) { - m_mode = MODE_INSERT_LINE; + m_mode = ControlEditorMode::MODE_INSERT_LINE; ConnectionLine* line = new ConnectionLine(node, GetNextID()); m_connectionList.push_back(line); element->AddChild(line); @@ -421,25 +426,25 @@ void ControlEditor::OnLeftClickDown(wxMouseEvent& event) element->SetSelected(); foundElement = true; } - m_mode = MODE_MOVE_ELEMENT; + m_mode = ControlEditor::ControlEditorMode::MODE_MOVE_ELEMENT; } } } - if(m_mode != MODE_INSERT_LINE) { + if(m_mode != ControlEditorMode::MODE_INSERT_LINE) { for(auto it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; ++it) { ConnectionLine* line = *it; line->StartMove(m_camera->ScreenToWorld(clickPoint)); if(line->Contains(m_camera->ScreenToWorld(clickPoint))) { line->SetSelected(); foundElement = true; - m_mode = MODE_MOVE_LINE; + m_mode = ControlEditorMode::MODE_MOVE_LINE; } } } } if(!foundElement) { - m_mode = MODE_SELECTION_RECT; + m_mode = ControlEditorMode::MODE_SELECTION_RECT; m_startSelRect = m_camera->ScreenToWorld(clickPoint); } @@ -452,7 +457,7 @@ void ControlEditor::OnLeftClickUp(wxMouseEvent& event) bool foundNode = false; for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; it++) { ControlElement* element = *it; - if(m_mode == MODE_INSERT_LINE) { + if(m_mode == ControlEditorMode::MODE_INSERT_LINE) { auto nodeList = element->GetNodeList(); for(auto itN = nodeList.begin(), itNEnd = nodeList.end(); itN != itNEnd; ++itN) { Node* node = *itN; @@ -462,12 +467,12 @@ void ControlEditor::OnLeftClickUp(wxMouseEvent& event) line->AddParent(element); element->AddChild(line); line->UpdatePoints(); - m_mode = MODE_EDIT; + m_mode = ControlEditor::ControlEditorMode::MODE_EDIT; foundNode = true; } } } - } else if(m_mode == MODE_SELECTION_RECT) { + } else if(m_mode == ControlEditorMode::MODE_SELECTION_RECT) { if(element->Intersects(m_selectionRect)) { element->SetSelected(); } else if(!event.ControlDown()) { @@ -479,17 +484,17 @@ void ControlEditor::OnLeftClickUp(wxMouseEvent& event) } for(auto it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; ++it) { ConnectionLine* cLine = *it; - if(m_mode == MODE_INSERT_LINE && !foundNode && it != (itEnd - 1)) { + if(m_mode == ControlEditorMode::MODE_INSERT_LINE && !foundNode && it != (itEnd - 1)) { if(cLine->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { ConnectionLine* iLine = *(m_connectionList.end() - 1); if(iLine->SetParentLine(cLine)) { cLine->AddChild(iLine); iLine->UpdatePoints(); - m_mode = MODE_EDIT; + m_mode = ControlEditor::ControlEditorMode::MODE_EDIT; foundNode = true; } } - } else if(m_mode == MODE_SELECTION_RECT) { + } else if(m_mode == ControlEditorMode::MODE_SELECTION_RECT) { if(cLine->Intersects(m_selectionRect)) { cLine->SetSelected(); } else if(!event.ControlDown()) { @@ -502,7 +507,7 @@ void ControlEditor::OnLeftClickUp(wxMouseEvent& event) m_selectionRect = wxRect2DDouble(0, 0, 0, 0); - if(m_mode == MODE_INSERT_LINE && !foundNode) { + if(m_mode == ControlEditorMode::MODE_INSERT_LINE && !foundNode) { ConnectionLine* cLine = *(m_connectionList.end() - 1); // Free nodes auto nodeList = cLine->GetNodeList(); @@ -518,9 +523,9 @@ void ControlEditor::OnLeftClickUp(wxMouseEvent& event) } m_connectionList.pop_back(); if(cLine) delete cLine; - m_mode = MODE_EDIT; - } else if(m_mode != MODE_INSERT) { - m_mode = MODE_EDIT; + m_mode = ControlEditor::ControlEditorMode::MODE_EDIT; + } else if(m_mode != ControlEditorMode::MODE_INSERT) { + m_mode = ControlEditor::ControlEditorMode::MODE_EDIT; } Redraw(); @@ -531,14 +536,14 @@ void ControlEditor::OnMiddleDown(wxMouseEvent& event) { // Set to drag mode. switch(m_mode) { - case MODE_INSERT: { - m_mode = MODE_DRAG_INSERT; + case ControlEditorMode::MODE_INSERT: { + m_mode = ControlEditorMode::MODE_DRAG_INSERT; } break; - case MODE_PASTE: { - m_mode = MODE_DRAG_PASTE; + case ControlEditorMode::MODE_PASTE: { + m_mode = ControlEditorMode::MODE_DRAG_PASTE; } break; default: { - m_mode = MODE_DRAG; + m_mode = ControlEditorMode::MODE_DRAG; } break; } m_camera->StartTranslation(m_camera->ScreenToWorld(event.GetPosition())); @@ -547,18 +552,18 @@ void ControlEditor::OnMiddleDown(wxMouseEvent& event) void ControlEditor::OnMiddleUp(wxMouseEvent& event) { switch(m_mode) { - case MODE_DRAG_INSERT: { - m_mode = MODE_INSERT; + case ControlEditorMode::MODE_DRAG_INSERT: { + m_mode = ControlEditorMode::MODE_INSERT; } break; - case MODE_DRAG_PASTE: { - m_mode = MODE_PASTE; + case ControlEditorMode::MODE_DRAG_PASTE: { + m_mode = ControlEditorMode::MODE_PASTE; } break; - case MODE_INSERT: - case MODE_PASTE: { + case ControlEditorMode::MODE_INSERT: + case ControlEditorMode::MODE_PASTE: { // Does nothing. } break; default: { - m_mode = MODE_EDIT; + m_mode = ControlEditor::ControlEditorMode::MODE_EDIT; } break; } } @@ -569,24 +574,24 @@ void ControlEditor::OnMouseMotion(wxMouseEvent& event) bool redraw = false; switch(m_mode) { - case MODE_INSERT: { + case ControlEditorMode::MODE_INSERT: { Element* newElement = *(m_elementList.end() - 1); // Get the last element in the list. newElement->Move(m_camera->ScreenToWorld(clickPoint)); redraw = true; } break; - case MODE_INSERT_LINE: { + case ControlEditorMode::MODE_INSERT_LINE: { ConnectionLine* line = *(m_connectionList.end() - 1); line->SetTemporarySecondPoint(m_camera->ScreenToWorld(clickPoint)); line->UpdatePoints(); redraw = true; } break; - case MODE_DRAG: - case MODE_DRAG_INSERT: - case MODE_DRAG_PASTE: { + case ControlEditorMode::MODE_DRAG: + case ControlEditorMode::MODE_DRAG_INSERT: + case ControlEditorMode::MODE_DRAG_PASTE: { m_camera->SetTranslation(clickPoint); redraw = true; } break; - case MODE_MOVE_ELEMENT: { + case ControlEditor::ControlEditorMode::MODE_MOVE_ELEMENT: { for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; it++) { Element* element = *it; if(element->IsSelected()) { @@ -600,7 +605,7 @@ void ControlEditor::OnMouseMotion(wxMouseEvent& event) } } } break; - case MODE_MOVE_LINE: { + case ControlEditorMode::MODE_MOVE_LINE: { for(auto it = m_connectionList.begin(), itEnd = m_connectionList.end(); it != itEnd; it++) { ConnectionLine* line = *it; if(line->IsSelected()) { @@ -609,7 +614,7 @@ void ControlEditor::OnMouseMotion(wxMouseEvent& event) } } } break; - case MODE_SELECTION_RECT: { + case ControlEditorMode::MODE_SELECTION_RECT: { wxPoint2DDouble currentPos = m_camera->ScreenToWorld(clickPoint); double x, y, w, h; if(currentPos.m_x < m_startSelRect.m_x) { @@ -762,7 +767,7 @@ void ControlEditor::CheckConnections() { for(auto it = m_connectionList.begin(); it != m_connectionList.end(); ++it) { ConnectionLine* cLine = *it; - if(cLine->GetType() == ConnectionLine::ELEMENT_ELEMENT) { + if(cLine->GetType() == ConnectionLine::ConnectionLineType::ELEMENT_ELEMENT) { if(cLine->GetParentList().size() < 2) { it = DeleteLineFromList(it); } } else if(cLine->GetParentList().size() < 1) { it = DeleteLineFromList(it); @@ -872,7 +877,7 @@ void ControlEditor::OnTestClick(wxCommandEvent& event) } if(!simStopped) { std::vector<ElementPlotData> epdList; - ElementPlotData curveData(_("I/O"), ElementPlotData::CT_TEST); + ElementPlotData curveData(_("I/O"), ElementPlotData::CurveType::CT_TEST); curveData.AddData(inputV, _("Input")); curveData.AddData(solution, _("Output")); diff --git a/Project/ControlEditor.h b/Project/ControlEditor.h index c68829d..fbd8f79 100644 --- a/Project/ControlEditor.h +++ b/Project/ControlEditor.h @@ -57,7 +57,7 @@ class ControlElementContainer; class ChartView; class ElementDataObject; -enum ControlElementButtonID { +enum class ControlElementButtonID : int { ID_IO = 0, ID_TF, ID_SUM, @@ -109,7 +109,7 @@ class ControlElementButton : public wxWindow class ControlEditor : public ControlEditorBase { public: - enum ControlEditorMode { + enum class ControlEditorMode : int { MODE_EDIT = 0, MODE_MOVE_ELEMENT, MODE_MOVE_LINE, @@ -165,7 +165,7 @@ class ControlEditor : public ControlEditorBase wxGLContext* m_glContext = NULL; Camera* m_camera = NULL; - ControlEditorMode m_mode = MODE_EDIT; + ControlEditorMode m_mode = ControlEditorMode::MODE_EDIT; wxRect2DDouble m_selectionRect; wxPoint2DDouble m_startSelRect; diff --git a/Project/ControlElementSolver.cpp b/Project/ControlElementSolver.cpp index 037da84..31c18e9 100644 --- a/Project/ControlElementSolver.cpp +++ b/Project/ControlElementSolver.cpp @@ -344,7 +344,7 @@ ConnectionLine* ControlElementSolver::SolveNextElement(ConnectionLine* currentLi Node* childNode = *itCN; if(childNode == outNode) { // Check if the line connect two elements, otherwise return NULL - if(cLine->GetType() != ConnectionLine::ELEMENT_ELEMENT) return NULL; + if(cLine->GetType() != ConnectionLine::ConnectionLineType::ELEMENT_ELEMENT) return NULL; // Set the connection line value and return it. cLine->SetValue(element->GetOutput()); diff --git a/Project/ControlElementSolver.h b/Project/ControlElementSolver.h index f24f740..db08c33 100644 --- a/Project/ControlElementSolver.h +++ b/Project/ControlElementSolver.h @@ -79,8 +79,8 @@ class ControlElementSolver ConnectionLine* SolveNextElement(ConnectionLine* currentLine); ControlElementContainer* m_ctrlContainer = NULL; - double m_timeStep; - double m_integrationError; + double m_timeStep = 1e-3; + double m_integrationError = 1e-5; std::vector<double> m_solutions; bool m_isOK = false; wxString m_failMessage = _("Unknown error."); diff --git a/Project/ElectricCalculation.cpp b/Project/ElectricCalculation.cpp index 24c92ba..8ad177c 100644 --- a/Project/ElectricCalculation.cpp +++ b/Project/ElectricCalculation.cpp @@ -408,10 +408,10 @@ void ElectricCalculation::UpdateElementsPowerFlow(std::vector<std::complex<doubl case ElectricalUnit::UNIT_PU: { reactivePower /= systemPowerBase; } break; - case ElectricalUnit::UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { reactivePower /= 1e3; } break; - case ElectricalUnit::UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { reactivePower /= 1e6; } break; default: @@ -519,10 +519,10 @@ void ElectricCalculation::UpdateElementsPowerFlow(std::vector<std::complex<doubl case ElectricalUnit::UNIT_PU: { reactivePower /= systemPowerBase; } break; - case ElectricalUnit::UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { reactivePower /= 1e3; } break; - case ElectricalUnit::UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { reactivePower /= 1e6; } break; default: @@ -588,10 +588,10 @@ void ElectricCalculation::UpdateElementsPowerFlow(std::vector<std::complex<doubl case ElectricalUnit::UNIT_PU: { reactivePower /= systemPowerBase; } break; - case ElectricalUnit::UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { reactivePower /= 1e3; } break; - case ElectricalUnit::UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { reactivePower /= 1e6; } break; default: diff --git a/Project/ElementPlotData.h b/Project/ElementPlotData.h index 16c6017..c84f7c5 100644 --- a/Project/ElementPlotData.h +++ b/Project/ElementPlotData.h @@ -64,7 +64,7 @@ class PlotData : public wxTreeItemData class ElementPlotData { public: - enum CurveType { + enum class CurveType : int { CT_BUS = 0, CT_SYNC_GENERATOR, CT_SYNC_COMPENSATOR, diff --git a/Project/FileHanding.cpp b/Project/FileHanding.cpp index b8e39ce..44acf7b 100644 --- a/Project/FileHanding.cpp +++ b/Project/FileHanding.cpp @@ -54,7 +54,7 @@ void FileHanding::SaveProject(wxFileName path) auto generalPropNode = XMLParser::AppendNode(doc, simulationPropNode, "General"); auto basePower = XMLParser::AppendNode(doc, generalPropNode, "BasePower"); XMLParser::SetNodeValue(doc, basePower, simulationData.basePower); - XMLParser::SetNodeAttribute(doc, basePower, "UnitID", simulationData.basePowerUnit); + XMLParser::SetNodeAttribute(doc, basePower, "UnitID", static_cast<int>(simulationData.basePowerUnit)); auto contCalc = XMLParser::AppendNode(doc, generalPropNode, "ContinuousCalculation"); auto contCalcFault = XMLParser::AppendNode(doc, contCalc, "Fault"); XMLParser::SetNodeValue(doc, contCalcFault, simulationData.faultAfterPowerFlow); diff --git a/Project/HarmCurrent.cpp b/Project/HarmCurrent.cpp index c9266ec..ad86d78 100644 --- a/Project/HarmCurrent.cpp +++ b/Project/HarmCurrent.cpp @@ -155,7 +155,7 @@ wxString HarmCurrent::GetTipText() const tipText += wxString::Format("\nI%dh = %s %s (%s%s)", m_electricalData.harmonicOrder[i], StringFromDouble(m_electricalData.injHarmCurrent[i]), - m_electricalData.injHarmCurrentUnit[i] == UNIT_A ? "A" : "p.u.", + m_electricalData.injHarmCurrentUnit[i] == ElectricalUnit::UNIT_A ? "A" : "p.u.", StringFromDouble(m_electricalData.injHarmAngle[i]), static_cast<wxString>(L'\u00B0')); } @@ -179,9 +179,9 @@ HarmCurrentElectricalData HarmCurrent::GetPUElectricalData(double systemPowerBas HarmCurrentElectricalData puData = m_electricalData; double ib = systemPowerBase / (std::sqrt(3.00) * voltage); for(unsigned int i = 0; i < puData.harmonicOrder.size(); ++i) { - if(puData.injHarmCurrentUnit[i] == UNIT_A) { + if(puData.injHarmCurrentUnit[i] == ElectricalUnit::UNIT_A) { puData.injHarmCurrent[i] /= ib; - puData.injHarmCurrentUnit[i] = UNIT_PU; + puData.injHarmCurrentUnit[i] = ElectricalUnit::UNIT_PU; } } return puData; @@ -208,7 +208,7 @@ rapidxml::xml_node<>* HarmCurrent::SaveElement(rapidxml::xml_document<>& doc, ra XMLParser::SetNodeValue(doc, order, m_electricalData.harmonicOrder[i]); auto injCurrent = XMLParser::AppendNode(doc, harmCurrentData, "InjCurrent"); XMLParser::SetNodeValue(doc, injCurrent, m_electricalData.injHarmCurrent[i]); - XMLParser::SetNodeAttribute(doc, injCurrent, "UnitID", m_electricalData.injHarmCurrentUnit[i]); + XMLParser::SetNodeAttribute(doc, injCurrent, "UnitID", static_cast<int>(m_electricalData.injHarmCurrentUnit[i])); auto injHarmAngle = XMLParser::AppendNode(doc, harmCurrentData, "Angle"); XMLParser::SetNodeValue(doc, injHarmAngle, m_electricalData.injHarmAngle[i]); } diff --git a/Project/IndMotor.cpp b/Project/IndMotor.cpp index 621eb5e..a209f8c 100644 --- a/Project/IndMotor.cpp +++ b/Project/IndMotor.cpp @@ -66,33 +66,33 @@ IndMotorElectricalData IndMotor::GetPUElectricalData(double systemPowerBase) IndMotorElectricalData data = m_electricalData; switch(data.activePowerUnit) { - case UNIT_W: { + case ElectricalUnit::UNIT_W: { data.activePower = data.activePower / systemPowerBase; - data.activePowerUnit = UNIT_PU; + data.activePowerUnit = ElectricalUnit::UNIT_PU; } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { data.activePower = (data.activePower * 1e3) / systemPowerBase; - data.activePowerUnit = UNIT_PU; + data.activePowerUnit = ElectricalUnit::UNIT_PU; } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { data.activePower = (data.activePower * 1e6) / systemPowerBase; - data.activePowerUnit = UNIT_PU; + data.activePowerUnit = ElectricalUnit::UNIT_PU; } break; default: break; } switch(data.reactivePowerUnit) { - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { data.reactivePower = data.reactivePower / systemPowerBase; - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase; - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase; - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; default: break; @@ -116,16 +116,16 @@ wxString IndMotor::GetTipText() const if(!m_online) activePower = 0.0; tipText += _("\nP = ") + wxString::FromDouble(activePower, 5); switch(m_electricalData.activePowerUnit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { tipText += _(" p.u."); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { tipText += _(" W"); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { tipText += _(" kW"); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { tipText += _(" MW"); } break; default: @@ -135,16 +135,16 @@ wxString IndMotor::GetTipText() const if(!m_online) reactivePower = 0.0; tipText += _("\nQ = ") + wxString::FromDouble(reactivePower, 5); switch(m_electricalData.reactivePowerUnit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { tipText += _(" p.u."); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { tipText += _(" VAr"); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { tipText += _(" kVAr"); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { tipText += _(" MVAr"); } break; default: @@ -170,13 +170,13 @@ rapidxml::xml_node<>* IndMotor::SaveElement(rapidxml::xml_document<>& doc, rapid XMLParser::SetNodeValue(doc, name, m_electricalData.name); auto ratedPower = XMLParser::AppendNode(doc, electricalProp, "RatedPower"); XMLParser::SetNodeValue(doc, ratedPower, m_electricalData.ratedPower); - XMLParser::SetNodeAttribute(doc, ratedPower, "UnitID", m_electricalData.activePowerUnit); + XMLParser::SetNodeAttribute(doc, ratedPower, "UnitID", static_cast<int>(m_electricalData.activePowerUnit)); auto activePower = XMLParser::AppendNode(doc, electricalProp, "ActivePower"); XMLParser::SetNodeValue(doc, activePower, m_electricalData.activePower); - XMLParser::SetNodeAttribute(doc, activePower, "UnitID", m_electricalData.activePowerUnit); + XMLParser::SetNodeAttribute(doc, activePower, "UnitID", static_cast<int>(m_electricalData.activePowerUnit)); auto reactivePower = XMLParser::AppendNode(doc, electricalProp, "ReactivePower"); XMLParser::SetNodeValue(doc, reactivePower, m_electricalData.reactivePower); - XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", m_electricalData.reactivePowerUnit); + XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", static_cast<int>(m_electricalData.reactivePowerUnit)); auto useMachineBase = XMLParser::AppendNode(doc, electricalProp, "UseMachineBase"); XMLParser::SetNodeValue(doc, useMachineBase, m_electricalData.useMachinePowerAsBase); @@ -262,7 +262,7 @@ bool IndMotor::GetPlotData(ElementPlotData& plotData, PlotStudy study) { if(!m_electricalData.plotIndMachine) return false; plotData.SetName(m_electricalData.name); - plotData.SetCurveType(ElementPlotData::CT_IND_MOTOR); + plotData.SetCurveType(ElementPlotData::CurveType::CT_IND_MOTOR); plotData.AddData(m_electricalData.terminalVoltageVector, _("Terminal voltage")); plotData.AddData(m_electricalData.activePowerVector, _("Active power")); diff --git a/Project/IndMotor.h b/Project/IndMotor.h index 7e20a2f..f79dcb8 100644 --- a/Project/IndMotor.h +++ b/Project/IndMotor.h @@ -25,11 +25,11 @@ class IndMotorForm; struct IndMotorElectricalData { wxString name; double ratedPower = 100.0; - ElectricalUnit ratedPowerUnit = UNIT_MVA; + ElectricalUnit ratedPowerUnit = ElectricalUnit::UNIT_MVA; double activePower = 100.0; - ElectricalUnit activePowerUnit = UNIT_MW; + ElectricalUnit activePowerUnit = ElectricalUnit::UNIT_MW; double reactivePower = 0.0; - ElectricalUnit reactivePowerUnit = UNIT_MVAr; + ElectricalUnit reactivePowerUnit = ElectricalUnit::UNIT_Mvar; bool useMachinePowerAsBase = true; bool calcQInPowerFlow = true; @@ -134,7 +134,7 @@ class IndMotor : public Machines virtual void InitPowerFlowMotor(double systemPowerBase, int busNumber); virtual bool CalculateReactivePower(double voltage); - virtual bool GetPlotData(ElementPlotData& plotData, PlotStudy study = STABILITY); + virtual bool GetPlotData(ElementPlotData& plotData, PlotStudy study = PlotStudy::STABILITY); virtual rapidxml::xml_node<>* SaveElement(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementListNode); virtual bool OpenElement(rapidxml::xml_node<>* elementNode, std::vector<Element*> parentList); diff --git a/Project/IndMotorForm.cpp b/Project/IndMotorForm.cpp index c4187f2..cfbaa83 100644 --- a/Project/IndMotorForm.cpp +++ b/Project/IndMotorForm.cpp @@ -48,7 +48,7 @@ IndMotorForm::IndMotorForm(wxWindow* parent, IndMotor* indMotor) : IndMotorFormB case ElectricalUnit::UNIT_PU: { m_choiceActivePower->SetSelection(0); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { m_choiceActivePower->SetSelection(1); } break; case ElectricalUnit::UNIT_kW: { @@ -66,13 +66,13 @@ IndMotorForm::IndMotorForm(wxWindow* parent, IndMotor* indMotor) : IndMotorFormB case ElectricalUnit::UNIT_PU: { m_choiceReactivePower->SetSelection(0); } break; - case ElectricalUnit::UNIT_VAr: { + case ElectricalUnit::UNIT_var: { m_choiceReactivePower->SetSelection(1); } break; - case ElectricalUnit::UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { m_choiceReactivePower->SetSelection(2); } break; - case ElectricalUnit::UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { m_choiceReactivePower->SetSelection(3); } break; default: @@ -148,7 +148,7 @@ bool IndMotorForm::ValidateData() data.activePowerUnit = ElectricalUnit::UNIT_PU; } break; case 1: { - data.activePowerUnit = UNIT_W; + data.activePowerUnit = ElectricalUnit::UNIT_W; } break; case 2: { data.activePowerUnit = ElectricalUnit::UNIT_kW; @@ -166,13 +166,13 @@ bool IndMotorForm::ValidateData() data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; case 1: { - data.reactivePowerUnit = ElectricalUnit::UNIT_VAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_var; } break; case 2: { - data.reactivePowerUnit = ElectricalUnit::UNIT_kVAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_kvar; } break; case 3: { - data.reactivePowerUnit = ElectricalUnit::UNIT_MVAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_Mvar; } break; } diff --git a/Project/Inductor.cpp b/Project/Inductor.cpp index 8bd056d..77fbdde 100644 --- a/Project/Inductor.cpp +++ b/Project/Inductor.cpp @@ -221,15 +221,15 @@ InductorElectricalData Inductor::GetPUElectricalData(double systemPowerBase) { InductorElectricalData data = m_electricalData; switch(data.reactivePowerUnit) { - case ElectricalUnit::UNIT_VAr: { + case ElectricalUnit::UNIT_var: { data.reactivePower = data.reactivePower / systemPowerBase; data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; - case ElectricalUnit::UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase; data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; - case ElectricalUnit::UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase; data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; @@ -265,13 +265,13 @@ wxString Inductor::GetTipText() const case ElectricalUnit::UNIT_PU: { tipText += _(" p.u."); } break; - case ElectricalUnit::UNIT_VAr: { + case ElectricalUnit::UNIT_var: { tipText += _(" VAr"); } break; - case ElectricalUnit::UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { tipText += _(" kVAr"); } break; - case ElectricalUnit::UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { tipText += _(" MVAr"); } break; default: @@ -295,7 +295,7 @@ rapidxml::xml_node<>* Inductor::SaveElement(rapidxml::xml_document<>& doc, rapid XMLParser::SetNodeValue(doc, name, m_electricalData.name); auto reactivePower = XMLParser::AppendNode(doc, electricalProp, "ReactivePower"); XMLParser::SetNodeValue(doc, reactivePower, m_electricalData.reactivePower); - XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", m_electricalData.reactivePowerUnit); + XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", static_cast<int>(m_electricalData.reactivePowerUnit)); SaveSwitchingData(doc, electricalProp); diff --git a/Project/Inductor.h b/Project/Inductor.h index d613a4c..9227fb7 100644 --- a/Project/Inductor.h +++ b/Project/Inductor.h @@ -25,7 +25,7 @@ class ReactiveShuntElementForm; struct InductorElectricalData { wxString name; double reactivePower = 100.0; - ElectricalUnit reactivePowerUnit = ElectricalUnit::UNIT_MVAr; + ElectricalUnit reactivePowerUnit = ElectricalUnit::UNIT_Mvar; }; /** diff --git a/Project/Line.cpp b/Project/Line.cpp index 9750b82..6cb68c6 100644 --- a/Project/Line.cpp +++ b/Project/Line.cpp @@ -689,19 +689,19 @@ rapidxml::xml_node<>* Line::SaveElement(rapidxml::xml_document<>& doc, rapidxml: XMLParser::SetNodeValue(doc, name, m_electricalData.name); auto nominalVoltage = XMLParser::AppendNode(doc, electricalProp, "NominalVoltage"); XMLParser::SetNodeValue(doc, nominalVoltage, m_electricalData.nominalVoltage); - XMLParser::SetNodeAttribute(doc, nominalVoltage, "UnitID", m_electricalData.nominalVoltageUnit); + XMLParser::SetNodeAttribute(doc, nominalVoltage, "UnitID", static_cast<int>(m_electricalData.nominalVoltageUnit)); auto nominalPower = XMLParser::AppendNode(doc, electricalProp, "NominalPower"); XMLParser::SetNodeValue(doc, nominalPower, m_electricalData.nominalPower); - XMLParser::SetNodeAttribute(doc, nominalPower, "UnitID", m_electricalData.nominalPowerUnit); + XMLParser::SetNodeAttribute(doc, nominalPower, "UnitID", static_cast<int>(m_electricalData.nominalPowerUnit)); auto resistance = XMLParser::AppendNode(doc, electricalProp, "Resistance"); XMLParser::SetNodeValue(doc, resistance, m_electricalData.resistance); - XMLParser::SetNodeAttribute(doc, resistance, "UnitID", m_electricalData.resistanceUnit); + XMLParser::SetNodeAttribute(doc, resistance, "UnitID", static_cast<int>(m_electricalData.resistanceUnit)); auto indReactance = XMLParser::AppendNode(doc, electricalProp, "IndReactance"); XMLParser::SetNodeValue(doc, indReactance, m_electricalData.indReactance); - XMLParser::SetNodeAttribute(doc, indReactance, "UnitID", m_electricalData.indReactanceUnit); + XMLParser::SetNodeAttribute(doc, indReactance, "UnitID", static_cast<int>(m_electricalData.indReactanceUnit)); auto capSusceptance = XMLParser::AppendNode(doc, electricalProp, "CapSusceptance"); XMLParser::SetNodeValue(doc, capSusceptance, m_electricalData.capSusceptance); - XMLParser::SetNodeAttribute(doc, capSusceptance, "UnitID", m_electricalData.capSusceptanceUnit); + XMLParser::SetNodeAttribute(doc, capSusceptance, "UnitID", static_cast<int>(m_electricalData.capSusceptanceUnit)); auto lineSize = XMLParser::AppendNode(doc, electricalProp, "LineSize"); XMLParser::SetNodeValue(doc, lineSize, m_electricalData.lineSize); auto useLinePower = XMLParser::AppendNode(doc, electricalProp, "UseLinePower"); diff --git a/Project/Load.cpp b/Project/Load.cpp index 22c9cd9..41ea255 100644 --- a/Project/Load.cpp +++ b/Project/Load.cpp @@ -48,7 +48,7 @@ bool Load::AddParent(Element* parent, wxPoint2DDouble position) wxRect2DDouble genRect(0, 0, 0, 0); m_switchRect.push_back(genRect); // Push a general rectangle. UpdateSwitches(); - m_pfDirection = PF_TO_ELEMENT; + m_pfDirection = PowerFlowDirection::PF_TO_ELEMENT; UpdatePowerFlowArrowsPosition(); return true; @@ -220,33 +220,33 @@ LoadElectricalData Load::GetPUElectricalData(double systemPowerBase) { LoadElectricalData data = m_electricalData; switch(data.activePowerUnit) { - case UNIT_W: { + case ElectricalUnit::UNIT_W: { data.activePower = data.activePower / systemPowerBase; - data.activePowerUnit = UNIT_PU; + data.activePowerUnit = ElectricalUnit::UNIT_PU; } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { data.activePower = (data.activePower * 1e3) / systemPowerBase; - data.activePowerUnit = UNIT_PU; + data.activePowerUnit = ElectricalUnit::UNIT_PU; } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { data.activePower = (data.activePower * 1e6) / systemPowerBase; - data.activePowerUnit = UNIT_PU; + data.activePowerUnit = ElectricalUnit::UNIT_PU; } break; default: break; } switch(data.reactivePowerUnit) { - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { data.reactivePower = data.reactivePower / systemPowerBase; - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { data.reactivePower = (data.reactivePower * 1e3) / systemPowerBase; - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { data.reactivePower = (data.reactivePower * 1e6) / systemPowerBase; - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; default: break; @@ -281,16 +281,16 @@ wxString Load::GetTipText() const tipText += "\n"; tipText += _("\nP = ") + wxString::FromDouble(activePower, 5); switch(m_electricalData.activePowerUnit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { tipText += _(" p.u."); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { tipText += _(" W"); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { tipText += _(" kW"); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { tipText += _(" MW"); } break; default: @@ -298,16 +298,16 @@ wxString Load::GetTipText() const } tipText += _("\nQ = ") + wxString::FromDouble(reactivePower, 5); switch(m_electricalData.reactivePowerUnit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { tipText += _(" p.u."); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { tipText += _(" VAr"); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { tipText += _(" kVAr"); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { tipText += _(" MVAr"); } break; default: @@ -321,7 +321,7 @@ bool Load::GetPlotData(ElementPlotData& plotData, PlotStudy study) { if(!m_electricalData.plotLoad) return false; plotData.SetName(m_electricalData.name); - plotData.SetCurveType(ElementPlotData::CT_LOAD); + plotData.SetCurveType(ElementPlotData::CurveType::CT_LOAD); std::vector<double> absVoltage, activePower, reactivePower, current; for(unsigned int i = 0; i < m_electricalData.voltageVector.size(); ++i) { @@ -354,10 +354,10 @@ rapidxml::xml_node<>* Load::SaveElement(rapidxml::xml_document<>& doc, rapidxml: XMLParser::SetNodeValue(doc, name, m_electricalData.name); auto activePower = XMLParser::AppendNode(doc, electricalProp, "ActivePower"); XMLParser::SetNodeValue(doc, activePower, m_electricalData.activePower); - XMLParser::SetNodeAttribute(doc, activePower, "UnitID", m_electricalData.activePowerUnit); + XMLParser::SetNodeAttribute(doc, activePower, "UnitID", static_cast<int>(m_electricalData.activePowerUnit)); auto reactivePower = XMLParser::AppendNode(doc, electricalProp, "ReactivePower"); XMLParser::SetNodeValue(doc, reactivePower, m_electricalData.reactivePower); - XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", m_electricalData.reactivePowerUnit); + XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", static_cast<int>(m_electricalData.reactivePowerUnit)); auto loadType = XMLParser::AppendNode(doc, electricalProp, "LoadType"); XMLParser::SetNodeValue(doc, loadType, m_electricalData.loadType); diff --git a/Project/Load.h b/Project/Load.h index 56b1549..bc27846 100644 --- a/Project/Load.h +++ b/Project/Load.h @@ -26,9 +26,9 @@ enum LoadType { CONST_POWER = 0, CONST_IMPEDANCE }; struct LoadElectricalData { wxString name; double activePower = 100.0; - ElectricalUnit activePowerUnit = UNIT_MW; + ElectricalUnit activePowerUnit = ElectricalUnit::UNIT_MW; double reactivePower = 0.0; - ElectricalUnit reactivePowerUnit = UNIT_MVAr; + ElectricalUnit reactivePowerUnit = ElectricalUnit::UNIT_Mvar; LoadType loadType = CONST_POWER; // Stability @@ -88,7 +88,7 @@ class Load : public Shunt LoadElectricalData GetElectricalData() { return m_electricalData; } LoadElectricalData GetPUElectricalData(double systemPowerBase); void SetElectricalData(const LoadElectricalData& electricalData) { m_electricalData = electricalData; } - virtual bool GetPlotData(ElementPlotData& plotData, PlotStudy study = STABILITY); + virtual bool GetPlotData(ElementPlotData& plotData, PlotStudy study = PlotStudy::STABILITY); virtual rapidxml::xml_node<>* SaveElement(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementListNode); virtual bool OpenElement(rapidxml::xml_node<>* elementNode, std::vector<Element*> parentList); diff --git a/Project/LoadForm.cpp b/Project/LoadForm.cpp index ca73ba5..3317018 100644 --- a/Project/LoadForm.cpp +++ b/Project/LoadForm.cpp @@ -28,16 +28,16 @@ LoadForm::LoadForm(wxWindow* parent, Load* load) : LoadFormBase(parent) m_textCtrlActivePower->SetValue(Load::StringFromDouble(data.activePower)); switch(data.activePowerUnit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceActivePower->SetSelection(0); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { m_choiceActivePower->SetSelection(1); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { m_choiceActivePower->SetSelection(2); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { m_choiceActivePower->SetSelection(3); } break; default: @@ -46,16 +46,16 @@ LoadForm::LoadForm(wxWindow* parent, Load* load) : LoadFormBase(parent) m_textCtrlReactivePower->SetValue(Load::StringFromDouble(data.reactivePower)); switch(data.reactivePowerUnit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceReactivePower->SetSelection(0); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { m_choiceReactivePower->SetSelection(1); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { m_choiceReactivePower->SetSelection(2); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { m_choiceReactivePower->SetSelection(3); } break; default: @@ -115,16 +115,16 @@ bool LoadForm::ValidateData() return false; switch(m_choiceActivePower->GetSelection()) { case 0: { - data.activePowerUnit = UNIT_PU; + data.activePowerUnit = ElectricalUnit::UNIT_PU; } break; case 1: { - data.activePowerUnit = UNIT_W; + data.activePowerUnit = ElectricalUnit::UNIT_W; } break; case 2: { - data.activePowerUnit = UNIT_kW; + data.activePowerUnit = ElectricalUnit::UNIT_kW; } break; case 3: { - data.activePowerUnit = UNIT_MW; + data.activePowerUnit = ElectricalUnit::UNIT_MW; } break; } @@ -133,16 +133,16 @@ bool LoadForm::ValidateData() return false; switch(m_choiceReactivePower->GetSelection()) { case 0: { - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; case 1: { - data.reactivePowerUnit = UNIT_VAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_var; } break; case 2: { - data.reactivePowerUnit = UNIT_kVAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_kvar; } break; case 3: { - data.reactivePowerUnit = UNIT_MVAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_Mvar; } break; } diff --git a/Project/MainFrame.cpp b/Project/MainFrame.cpp index 36712d5..51f6592 100644 --- a/Project/MainFrame.cpp +++ b/Project/MainFrame.cpp @@ -306,7 +306,7 @@ void MainFrame::OnMoveClick(wxRibbonButtonBarEvent& event) Element* element = *it; if(element->IsSelected()) { element->StartMove(averagePos); } } - workspace->SetWorkspaceMode(Workspace::MODE_MOVE_ELEMENT); + workspace->SetWorkspaceMode(Workspace::WorkspaceMode::MODE_MOVE_ELEMENT); } } @@ -427,7 +427,7 @@ void MainFrame::OnAddElementsClick(wxCommandEvent& event) Workspace* workspace = static_cast<Workspace*>(m_auiNotebook->GetCurrentPage()); if(workspace) { - if(workspace->GetWorkspaceMode() != Workspace::MODE_INSERT) { + if(workspace->GetWorkspaceMode() != Workspace::WorkspaceMode::MODE_INSERT) { auto elementList = workspace->GetElementList(); wxString statusBarText = ""; bool newElement = false; @@ -514,7 +514,7 @@ void MainFrame::OnAddElementsClick(wxCommandEvent& event) } if(newElement) { workspace->SetElementList(elementList); - workspace->SetWorkspaceMode(Workspace::MODE_INSERT); + workspace->SetWorkspaceMode(Workspace::WorkspaceMode::MODE_INSERT); workspace->SetStatusBarText(statusBarText); workspace->Redraw(); } diff --git a/Project/PSP-UFU.vcxproj b/Project/PSP-UFU.vcxproj index 6d6086b..4c48ce2 100644 --- a/Project/PSP-UFU.vcxproj +++ b/Project/PSP-UFU.vcxproj @@ -100,6 +100,7 @@ <PreprocessorDefinitions>_DEBUG;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);_CRT_SECURE_NO_WARNINGS</PreprocessorDefinitions> <ConformanceMode>true</ConformanceMode> <LanguageStandard>stdcpplatest</LanguageStandard> + <DisableSpecificWarnings>26495;%(DisableSpecificWarnings)</DisableSpecificWarnings> </ClCompile> <Link> <SubSystem>Windows</SubSystem> diff --git a/Project/PowerElement.cpp b/Project/PowerElement.cpp index 870a30e..ffb920e 100644 --- a/Project/PowerElement.cpp +++ b/Project/PowerElement.cpp @@ -202,16 +202,16 @@ void PowerElement::DrawDCPowerFlowPts(wxGraphicsContext* gc) const double PowerElement::GetValueFromUnit(double value, ElectricalUnit valueUnit) { switch(valueUnit) { - case UNIT_kV: - case UNIT_kA: - case UNIT_kW: - case UNIT_kVA: - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kV: + case ElectricalUnit::UNIT_kA: + case ElectricalUnit::UNIT_kW: + case ElectricalUnit::UNIT_kVA: + case ElectricalUnit::UNIT_kvar: { return value * 1e3; } break; - case UNIT_MW: - case UNIT_MVA: - case UNIT_MVAr: { + case ElectricalUnit::UNIT_MW: + case ElectricalUnit::UNIT_MVA: + case ElectricalUnit::UNIT_Mvar: { return value * 1e6; } default: @@ -305,7 +305,7 @@ void PowerElement::SaveSwitchingData(rapidxml::xml_document<>& doc, rapidxml::xm auto switching = XMLParser::AppendNode(doc, switchingList, "Switching"); XMLParser::SetNodeAttribute(doc, switching, "ID", i); auto swType = XMLParser::AppendNode(doc, switching, "Type"); - XMLParser::SetNodeValue(doc, swType, m_swData.swType[i]); + XMLParser::SetNodeValue(doc, swType, static_cast<int>(m_swData.swType[i])); auto swTime = XMLParser::AppendNode(doc, switching, "Time"); XMLParser::SetNodeValue(doc, swTime, m_swData.swTime[i]); } diff --git a/Project/PowerElement.h b/Project/PowerElement.h index 2a106cb..3e9a587 100644 --- a/Project/PowerElement.h +++ b/Project/PowerElement.h @@ -25,7 +25,7 @@ * @enum ElectricalUnit * @brief Electrical units. */ -enum ElectricalUnit { +enum class ElectricalUnit : int { UNIT_PU = 0, /**< Per unit (p.u.) */ UNIT_V, /**< Volt */ UNIT_kV, /**< Kilovolts */ @@ -37,9 +37,9 @@ enum ElectricalUnit { UNIT_VA, /**< Volt-ampere */ UNIT_kVA, /**< Kilovolt-ampere */ UNIT_MVA, /**< Megavolt-ampere */ - UNIT_VAr, /**< Volt-ampere reactive */ - UNIT_kVAr, /**< Kilovolt-ampere reactive */ - UNIT_MVAr, /**< Megavolt-ampere reactive */ + UNIT_var, /**< Volt-ampere reactive */ + UNIT_kvar, /**< Kilovolt-ampere reactive */ + UNIT_Mvar, /**< Megavolt-ampere reactive */ UNIT_OHM, /**< Ohm */ UNIT_OHM_km, /**< Ohm/km */ UNIT_S, /**< Siemens */ @@ -52,7 +52,7 @@ enum ElectricalUnit { * @enum FaultData * @brief Information about fault (type and location). */ -enum FaultData { +enum class FaultData : int { FAULT_THREEPHASE = 0, /**< Three-phase fault */ FAULT_2LINE, /**< Line-to-line fault */ FAULT_2LINE_GROUND, /**< Double line-to-ground fault */ @@ -66,7 +66,7 @@ enum FaultData { * @enum SwitchingType * @brief Type of switching. */ -enum SwitchingType { +enum class SwitchingType : int { SW_INSERT = 0, /**< Insert element */ SW_REMOVE /**< Remove element */ }; @@ -75,7 +75,7 @@ enum SwitchingType { * @enum PowerFlowDirection * @brief Direction of power flow arrows. */ -enum PowerFlowDirection { +enum class PowerFlowDirection : int { PF_NONE = 0, /**< No direction (no arrows printed) */ PF_TO_BUS, /**< Element to bus */ PF_TO_ELEMENT, /**< Bus to element */ @@ -83,7 +83,7 @@ enum PowerFlowDirection { PF_BUS2_TO_BUS1 /**< Second bus to first bus (branch elements) */ }; -enum PlotStudy { +enum class PlotStudy : int { STABILITY = 0, /**< Stability studies */ FREQRESPONSE /**< Frequency resonse (Harmonics) */ }; @@ -211,7 +211,7 @@ class PowerElement : public Element * @param plotData Plot data to be filled. * @return true if the plot data was successfully filled, false otherwise. */ - virtual bool GetPlotData(ElementPlotData& plotData, PlotStudy study = STABILITY) { return false; } + virtual bool GetPlotData(ElementPlotData& plotData, PlotStudy study = PlotStudy::STABILITY) { return false; } /** * @brief Check if the power element have dynamic event. * @return true if the element have dynamic an event, false otherwise. @@ -233,7 +233,7 @@ class PowerElement : public Element protected: SwitchingData m_swData; std::vector<std::vector<wxPoint2DDouble> > m_powerFlowArrow; - PowerFlowDirection m_pfDirection = PF_NONE; + PowerFlowDirection m_pfDirection = PowerFlowDirection::PF_NONE; OpenGLColour m_busColour; OpenGLColour m_onlineElementColour; diff --git a/Project/ReactiveShuntElementForm.cpp b/Project/ReactiveShuntElementForm.cpp index aceba3e..a01f36e 100644 --- a/Project/ReactiveShuntElementForm.cpp +++ b/Project/ReactiveShuntElementForm.cpp @@ -33,13 +33,13 @@ ReactiveShuntElementForm::ReactiveShuntElementForm(wxWindow* parent, Capacitor* case ElectricalUnit::UNIT_PU: { m_choiceReactivePower->SetSelection(0); } break; - case ElectricalUnit::UNIT_VAr: { + case ElectricalUnit::UNIT_var: { m_choiceReactivePower->SetSelection(1); } break; - case ElectricalUnit::UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { m_choiceReactivePower->SetSelection(2); } break; - case ElectricalUnit::UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { m_choiceReactivePower->SetSelection(3); } break; default: @@ -62,13 +62,13 @@ ReactiveShuntElementForm::ReactiveShuntElementForm(wxWindow* parent, Inductor* i case ElectricalUnit::UNIT_PU: { m_choiceReactivePower->SetSelection(0); } break; - case ElectricalUnit::UNIT_VAr: { + case ElectricalUnit::UNIT_var: { m_choiceReactivePower->SetSelection(1); } break; - case ElectricalUnit::UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { m_choiceReactivePower->SetSelection(2); } break; - case ElectricalUnit::UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { m_choiceReactivePower->SetSelection(3); } break; default: @@ -117,13 +117,13 @@ bool ReactiveShuntElementForm::ValidateData() data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; case 1: { - data.reactivePowerUnit = ElectricalUnit::UNIT_VAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_var; } break; case 2: { - data.reactivePowerUnit = ElectricalUnit::UNIT_kVAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_kvar; } break; case 3: { - data.reactivePowerUnit = ElectricalUnit::UNIT_MVAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_Mvar; } break; } @@ -141,13 +141,13 @@ bool ReactiveShuntElementForm::ValidateData() data.reactivePowerUnit = ElectricalUnit::UNIT_PU; } break; case 1: { - data.reactivePowerUnit = ElectricalUnit::UNIT_VAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_var; } break; case 2: { - data.reactivePowerUnit = ElectricalUnit::UNIT_kVAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_kvar; } break; case 3: { - data.reactivePowerUnit = ElectricalUnit::UNIT_MVAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_Mvar; } break; } diff --git a/Project/SyncGenerator.cpp b/Project/SyncGenerator.cpp index 49571ac..7038bb2 100644 --- a/Project/SyncGenerator.cpp +++ b/Project/SyncGenerator.cpp @@ -91,40 +91,40 @@ SyncGeneratorElectricalData SyncGenerator::GetPUElectricalData(double systemPowe // Active power double activePower = GetValueFromUnit(data.activePower, data.activePowerUnit); if(!m_online) activePower = 0.0; - if(data.activePowerUnit == UNIT_PU) { + if(data.activePowerUnit == ElectricalUnit::UNIT_PU) { if(data.useMachineBase) data.activePower = (activePower * machineBasePower) / systemPowerBase; } else { data.activePower = activePower / systemPowerBase; } - data.activePowerUnit = UNIT_PU; + data.activePowerUnit = ElectricalUnit::UNIT_PU; // Reactive power double reactivePower = GetValueFromUnit(data.reactivePower, data.reactivePowerUnit); if(!m_online) reactivePower = 0.0; - if(data.reactivePowerUnit == UNIT_PU) { + if(data.reactivePowerUnit == ElectricalUnit::UNIT_PU) { if(data.useMachineBase) data.reactivePower = (reactivePower * machineBasePower) / systemPowerBase; } else { data.reactivePower = reactivePower / systemPowerBase; } - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; // Max reactive power double maxReactive = GetValueFromUnit(data.maxReactive, data.maxReactiveUnit); - if(data.maxReactiveUnit == UNIT_PU) { + if(data.maxReactiveUnit == ElectricalUnit::UNIT_PU) { if(data.useMachineBase) data.maxReactive = (maxReactive * machineBasePower) / systemPowerBase; } else { data.maxReactive = maxReactive / systemPowerBase; } - data.maxReactiveUnit = UNIT_PU; + data.maxReactiveUnit = ElectricalUnit::UNIT_PU; // Min reactive power double minReactive = GetValueFromUnit(data.minReactive, data.minReactiveUnit); - if(data.minReactiveUnit == UNIT_PU) { + if(data.minReactiveUnit == ElectricalUnit::UNIT_PU) { if(data.useMachineBase) data.minReactive = (minReactive * machineBasePower) / systemPowerBase; } else { data.minReactive = minReactive / systemPowerBase; } - data.minReactiveUnit = UNIT_PU; + data.minReactiveUnit = ElectricalUnit::UNIT_PU; double baseVoltage = GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit); double systemBaseImpedance = (baseVoltage * baseVoltage) / systemPowerBase; @@ -196,16 +196,16 @@ wxString SyncGenerator::GetTipText() const if(!m_online) activePower = 0.0; tipText += _("\nP = ") + wxString::FromDouble(activePower, 5); switch(m_electricalData.activePowerUnit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { tipText += _(" p.u."); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { tipText += _(" W"); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { tipText += _(" kW"); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { tipText += _(" MW"); } break; default: @@ -215,16 +215,16 @@ wxString SyncGenerator::GetTipText() const if(!m_online) reactivePower = 0.0; tipText += _("\nQ = ") + wxString::FromDouble(reactivePower, 5); switch(m_electricalData.reactivePowerUnit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { tipText += _(" p.u."); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { tipText += _(" VAr"); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { tipText += _(" kVAr"); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { tipText += _(" MVAr"); } break; default: @@ -238,7 +238,7 @@ bool SyncGenerator::GetPlotData(ElementPlotData& plotData, PlotStudy study) { if(!m_electricalData.plotSyncMachine) return false; plotData.SetName(m_electricalData.name); - plotData.SetCurveType(ElementPlotData::CT_SYNC_GENERATOR); + plotData.SetCurveType(ElementPlotData::CurveType::CT_SYNC_GENERATOR); std::vector<double> absTerminalVoltage, activePower, reactivePower; for(unsigned int i = 0; i < m_electricalData.terminalVoltageVector.size(); ++i) { @@ -268,26 +268,26 @@ rapidxml::xml_node<>* SyncGenerator::SaveElement(rapidxml::xml_document<>& doc, XMLParser::SetNodeValue(doc, name, m_electricalData.name); auto nominalPower = XMLParser::AppendNode(doc, electricalProp, "NominalPower"); XMLParser::SetNodeValue(doc, nominalPower, m_electricalData.nominalPower); - XMLParser::SetNodeAttribute(doc, nominalPower, "UnitID", m_electricalData.nominalPowerUnit); + XMLParser::SetNodeAttribute(doc, nominalPower, "UnitID", static_cast<int>(m_electricalData.nominalPowerUnit)); auto nominalVoltage = XMLParser::AppendNode(doc, electricalProp, "NominalVoltage"); XMLParser::SetNodeValue(doc, nominalVoltage, m_electricalData.nominalVoltage); - XMLParser::SetNodeAttribute(doc, nominalVoltage, "UnitID", m_electricalData.nominalVoltageUnit); + XMLParser::SetNodeAttribute(doc, nominalVoltage, "UnitID", static_cast<int>(m_electricalData.nominalVoltageUnit)); auto activePower = XMLParser::AppendNode(doc, electricalProp, "ActivePower"); XMLParser::SetNodeValue(doc, activePower, m_electricalData.activePower); - XMLParser::SetNodeAttribute(doc, activePower, "UnitID", m_electricalData.activePowerUnit); + XMLParser::SetNodeAttribute(doc, activePower, "UnitID", static_cast<int>(m_electricalData.activePowerUnit)); auto reactivePower = XMLParser::AppendNode(doc, electricalProp, "ReactivePower"); XMLParser::SetNodeValue(doc, reactivePower, m_electricalData.reactivePower); - XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", m_electricalData.reactivePowerUnit); + XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", static_cast<int>(m_electricalData.reactivePowerUnit)); auto haveMaxReactive = XMLParser::AppendNode(doc, electricalProp, "HaveMaxReactive"); XMLParser::SetNodeValue(doc, haveMaxReactive, m_electricalData.haveMaxReactive); auto maxReactive = XMLParser::AppendNode(doc, electricalProp, "MaxReactive"); XMLParser::SetNodeValue(doc, maxReactive, m_electricalData.maxReactive); - XMLParser::SetNodeAttribute(doc, maxReactive, "UnitID", m_electricalData.maxReactiveUnit); + XMLParser::SetNodeAttribute(doc, maxReactive, "UnitID", static_cast<int>(m_electricalData.maxReactiveUnit)); auto haveMinReactive = XMLParser::AppendNode(doc, electricalProp, "HaveMinReactive"); XMLParser::SetNodeValue(doc, haveMinReactive, m_electricalData.haveMinReactive); auto minReactive = XMLParser::AppendNode(doc, electricalProp, "MinReactive"); XMLParser::SetNodeValue(doc, minReactive, m_electricalData.minReactive); - XMLParser::SetNodeAttribute(doc, minReactive, "UnitID", m_electricalData.minReactiveUnit); + XMLParser::SetNodeAttribute(doc, minReactive, "UnitID", static_cast<int>(m_electricalData.minReactiveUnit)); auto useMachineBase = XMLParser::AppendNode(doc, electricalProp, "UseMachineBase"); XMLParser::SetNodeValue(doc, useMachineBase, m_electricalData.useMachineBase); diff --git a/Project/SyncGenerator.h b/Project/SyncGenerator.h index e696ca4..48ae607 100644 --- a/Project/SyncGenerator.h +++ b/Project/SyncGenerator.h @@ -26,19 +26,19 @@ struct SyncGeneratorElectricalData { // General wxString name = ""; double nominalPower = 100.0; - ElectricalUnit nominalPowerUnit = UNIT_MVA; + ElectricalUnit nominalPowerUnit = ElectricalUnit::UNIT_MVA; double nominalVoltage = 13.8; - ElectricalUnit nominalVoltageUnit = UNIT_kV; + ElectricalUnit nominalVoltageUnit = ElectricalUnit::UNIT_kV; double activePower = 100.0; - ElectricalUnit activePowerUnit = UNIT_MW; + ElectricalUnit activePowerUnit = ElectricalUnit::UNIT_MW; double reactivePower = 0.0; - ElectricalUnit reactivePowerUnit = UNIT_MVAr; + ElectricalUnit reactivePowerUnit = ElectricalUnit::UNIT_Mvar; bool haveMaxReactive = false; double maxReactive = 9999.0; - ElectricalUnit maxReactiveUnit = UNIT_MVAr; + ElectricalUnit maxReactiveUnit = ElectricalUnit::UNIT_Mvar; bool haveMinReactive = false; double minReactive = -9999.0; - ElectricalUnit minReactiveUnit = UNIT_MVAr; + ElectricalUnit minReactiveUnit = ElectricalUnit::UNIT_Mvar; bool useMachineBase = true; // Fault @@ -157,7 +157,7 @@ class SyncGenerator : public Machines virtual void SetElectricalData(SyncGeneratorElectricalData electricalData) { m_electricalData = electricalData; } virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit); virtual void SavePlotData(); - virtual bool GetPlotData(ElementPlotData& plotData, PlotStudy study = STABILITY); + virtual bool GetPlotData(ElementPlotData& plotData, PlotStudy study = PlotStudy::STABILITY); virtual rapidxml::xml_node<>* SaveElement(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementListNode); virtual bool OpenElement(rapidxml::xml_node<>* elementNode, std::vector<Element*> parentList); diff --git a/Project/SyncMachineForm.cpp b/Project/SyncMachineForm.cpp index 3c27a7c..494f7a2 100644 --- a/Project/SyncMachineForm.cpp +++ b/Project/SyncMachineForm.cpp @@ -40,13 +40,13 @@ SyncMachineForm::SyncMachineForm(wxWindow* parent, SyncGenerator* syncGenerator, m_textCtrlnominalPower->SetValue(SyncGenerator::StringFromDouble(data.nominalPower)); switch(data.nominalPowerUnit) { - case UNIT_VA: + case ElectricalUnit::UNIT_VA: m_choiceNominalPower->SetSelection(0); break; - case UNIT_kVA: + case ElectricalUnit::UNIT_kVA: m_choiceNominalPower->SetSelection(1); break; - case UNIT_MVA: + case ElectricalUnit::UNIT_MVA: m_choiceNominalPower->SetSelection(2); break; default: @@ -55,16 +55,16 @@ SyncMachineForm::SyncMachineForm(wxWindow* parent, SyncGenerator* syncGenerator, m_textCtrlActivePower->SetValue(SyncGenerator::StringFromDouble(data.activePower)); switch(data.activePowerUnit) { - case UNIT_PU: + case ElectricalUnit::UNIT_PU: m_choiceActivePower->SetSelection(0); break; - case UNIT_W: + case ElectricalUnit::UNIT_W: m_choiceActivePower->SetSelection(1); break; - case UNIT_kW: + case ElectricalUnit::UNIT_kW: m_choiceActivePower->SetSelection(2); break; - case UNIT_MW: + case ElectricalUnit::UNIT_MW: m_choiceActivePower->SetSelection(3); break; default: @@ -73,16 +73,16 @@ SyncMachineForm::SyncMachineForm(wxWindow* parent, SyncGenerator* syncGenerator, m_textCtrlReactivePower->SetValue(SyncGenerator::StringFromDouble(data.reactivePower)); switch(data.reactivePowerUnit) { - case UNIT_PU: + case ElectricalUnit::UNIT_PU: m_choiceReactivePower->SetSelection(0); break; - case UNIT_VAr: + case ElectricalUnit::UNIT_var: m_choiceReactivePower->SetSelection(1); break; - case UNIT_kVAr: + case ElectricalUnit::UNIT_kvar: m_choiceReactivePower->SetSelection(2); break; - case UNIT_MVAr: + case ElectricalUnit::UNIT_Mvar: m_choiceReactivePower->SetSelection(3); break; default: @@ -92,16 +92,16 @@ SyncMachineForm::SyncMachineForm(wxWindow* parent, SyncGenerator* syncGenerator, m_textCtrlMaxRectivePower->SetValue(SyncGenerator::StringFromDouble(data.maxReactive)); switch(data.maxReactiveUnit) { - case UNIT_PU: + case ElectricalUnit::UNIT_PU: m_choiceMaxRectivePower->SetSelection(0); break; - case UNIT_VAr: + case ElectricalUnit::UNIT_var: m_choiceMaxRectivePower->SetSelection(1); break; - case UNIT_kVAr: + case ElectricalUnit::UNIT_kvar: m_choiceMaxRectivePower->SetSelection(2); break; - case UNIT_MVAr: + case ElectricalUnit::UNIT_Mvar: m_choiceMaxRectivePower->SetSelection(3); break; default: @@ -113,16 +113,16 @@ SyncMachineForm::SyncMachineForm(wxWindow* parent, SyncGenerator* syncGenerator, m_checkBoxMinReactive->SetValue(data.haveMinReactive); m_textCtrlMinRectivePower->SetValue(SyncGenerator::StringFromDouble(data.minReactive)); switch(data.minReactiveUnit) { - case UNIT_PU: + case ElectricalUnit::UNIT_PU: m_choiceMinRectivePower->SetSelection(0); break; - case UNIT_VAr: + case ElectricalUnit::UNIT_var: m_choiceMinRectivePower->SetSelection(1); break; - case UNIT_kVAr: + case ElectricalUnit::UNIT_kvar: m_choiceMinRectivePower->SetSelection(2); break; - case UNIT_MVAr: + case ElectricalUnit::UNIT_Mvar: m_choiceMinRectivePower->SetSelection(3); break; default: @@ -164,13 +164,13 @@ SyncMachineForm::SyncMachineForm(wxWindow* parent, SyncMotor* syncMotor) : SyncM m_textCtrlnominalPower->SetValue(SyncMotor::StringFromDouble(data.nominalPower)); switch(data.nominalPowerUnit) { - case UNIT_VA: + case ElectricalUnit::UNIT_VA: m_choiceNominalPower->SetSelection(0); break; - case UNIT_kVA: + case ElectricalUnit::UNIT_kVA: m_choiceNominalPower->SetSelection(1); break; - case UNIT_MVA: + case ElectricalUnit::UNIT_MVA: m_choiceNominalPower->SetSelection(2); break; default: @@ -179,16 +179,16 @@ SyncMachineForm::SyncMachineForm(wxWindow* parent, SyncMotor* syncMotor) : SyncM m_textCtrlActivePower->SetValue(SyncMotor::StringFromDouble(data.activePower)); switch(data.activePowerUnit) { - case UNIT_PU: + case ElectricalUnit::UNIT_PU: m_choiceActivePower->SetSelection(0); break; - case UNIT_W: + case ElectricalUnit::UNIT_W: m_choiceActivePower->SetSelection(1); break; - case UNIT_kW: + case ElectricalUnit::UNIT_kW: m_choiceActivePower->SetSelection(2); break; - case UNIT_MW: + case ElectricalUnit::UNIT_MW: m_choiceActivePower->SetSelection(3); break; default: @@ -197,16 +197,16 @@ SyncMachineForm::SyncMachineForm(wxWindow* parent, SyncMotor* syncMotor) : SyncM m_textCtrlReactivePower->SetValue(SyncMotor::StringFromDouble(data.reactivePower)); switch(data.reactivePowerUnit) { - case UNIT_PU: + case ElectricalUnit::UNIT_PU: m_choiceReactivePower->SetSelection(0); break; - case UNIT_VAr: + case ElectricalUnit::UNIT_var: m_choiceReactivePower->SetSelection(1); break; - case UNIT_kVAr: + case ElectricalUnit::UNIT_kvar: m_choiceReactivePower->SetSelection(2); break; - case UNIT_MVAr: + case ElectricalUnit::UNIT_Mvar: m_choiceReactivePower->SetSelection(3); break; default: @@ -216,16 +216,16 @@ SyncMachineForm::SyncMachineForm(wxWindow* parent, SyncMotor* syncMotor) : SyncM m_textCtrlMaxRectivePower->SetValue(SyncMotor::StringFromDouble(data.maxReactive)); switch(data.maxReactiveUnit) { - case UNIT_PU: + case ElectricalUnit::UNIT_PU: m_choiceMaxRectivePower->SetSelection(0); break; - case UNIT_VAr: + case ElectricalUnit::UNIT_var: m_choiceMaxRectivePower->SetSelection(1); break; - case UNIT_kVAr: + case ElectricalUnit::UNIT_kvar: m_choiceMaxRectivePower->SetSelection(2); break; - case UNIT_MVAr: + case ElectricalUnit::UNIT_Mvar: m_choiceMaxRectivePower->SetSelection(3); break; default: @@ -237,16 +237,16 @@ SyncMachineForm::SyncMachineForm(wxWindow* parent, SyncMotor* syncMotor) : SyncM m_checkBoxMinReactive->SetValue(data.haveMinReactive); m_textCtrlMinRectivePower->SetValue(SyncMotor::StringFromDouble(data.minReactive)); switch(data.minReactiveUnit) { - case UNIT_PU: + case ElectricalUnit::UNIT_PU: m_choiceMinRectivePower->SetSelection(0); break; - case UNIT_VAr: + case ElectricalUnit::UNIT_var: m_choiceMinRectivePower->SetSelection(1); break; - case UNIT_kVAr: + case ElectricalUnit::UNIT_kvar: m_choiceMinRectivePower->SetSelection(2); break; - case UNIT_MVAr: + case ElectricalUnit::UNIT_Mvar: m_choiceMinRectivePower->SetSelection(3); break; default: @@ -310,13 +310,13 @@ bool SyncMachineForm::ValidateData() return false; switch(m_choiceNominalPower->GetSelection()) { case 0: - data.nominalPowerUnit = UNIT_VA; + data.nominalPowerUnit = ElectricalUnit::UNIT_VA; break; case 1: - data.nominalPowerUnit = UNIT_kVA; + data.nominalPowerUnit = ElectricalUnit::UNIT_kVA; break; case 2: - data.nominalPowerUnit = UNIT_MVA; + data.nominalPowerUnit = ElectricalUnit::UNIT_MVA; break; } @@ -325,16 +325,16 @@ bool SyncMachineForm::ValidateData() return false; switch(m_choiceActivePower->GetSelection()) { case 0: - data.activePowerUnit = UNIT_PU; + data.activePowerUnit = ElectricalUnit::UNIT_PU; break; case 1: - data.activePowerUnit = UNIT_W; + data.activePowerUnit = ElectricalUnit::UNIT_W; break; case 2: - data.activePowerUnit = UNIT_kW; + data.activePowerUnit = ElectricalUnit::UNIT_kW; break; case 3: - data.activePowerUnit = UNIT_MW; + data.activePowerUnit = ElectricalUnit::UNIT_MW; break; } @@ -343,16 +343,16 @@ bool SyncMachineForm::ValidateData() return false; switch(m_choiceReactivePower->GetSelection()) { case 0: - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; break; case 1: - data.reactivePowerUnit = UNIT_VAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_var; break; case 2: - data.reactivePowerUnit = UNIT_kVAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_kvar; break; case 3: - data.reactivePowerUnit = UNIT_MVAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_Mvar; break; } @@ -363,16 +363,16 @@ bool SyncMachineForm::ValidateData() return false; switch(m_choiceMaxRectivePower->GetSelection()) { case 0: - data.maxReactiveUnit = UNIT_PU; + data.maxReactiveUnit = ElectricalUnit::UNIT_PU; break; case 1: - data.maxReactiveUnit = UNIT_VAr; + data.maxReactiveUnit = ElectricalUnit::UNIT_var; break; case 2: - data.maxReactiveUnit = UNIT_kVAr; + data.maxReactiveUnit = ElectricalUnit::UNIT_kvar; break; case 3: - data.maxReactiveUnit = UNIT_MVAr; + data.maxReactiveUnit = ElectricalUnit::UNIT_Mvar; break; } } @@ -384,16 +384,16 @@ bool SyncMachineForm::ValidateData() return false; switch(m_choiceMinRectivePower->GetSelection()) { case 0: - data.minReactiveUnit = UNIT_PU; + data.minReactiveUnit = ElectricalUnit::UNIT_PU; break; case 1: - data.minReactiveUnit = UNIT_VAr; + data.minReactiveUnit = ElectricalUnit::UNIT_var; break; case 2: - data.minReactiveUnit = UNIT_kVAr; + data.minReactiveUnit = ElectricalUnit::UNIT_kvar; break; case 3: - data.minReactiveUnit = UNIT_MVAr; + data.minReactiveUnit = ElectricalUnit::UNIT_Mvar; break; } } @@ -444,13 +444,13 @@ bool SyncMachineForm::ValidateData() return false; switch(m_choiceNominalPower->GetSelection()) { case 0: - data.nominalPowerUnit = UNIT_VA; + data.nominalPowerUnit = ElectricalUnit::UNIT_VA; break; case 1: - data.nominalPowerUnit = UNIT_kVA; + data.nominalPowerUnit = ElectricalUnit::UNIT_kVA; break; case 2: - data.nominalPowerUnit = UNIT_MVA; + data.nominalPowerUnit = ElectricalUnit::UNIT_MVA; break; } @@ -459,16 +459,16 @@ bool SyncMachineForm::ValidateData() return false; switch(m_choiceActivePower->GetSelection()) { case 0: - data.activePowerUnit = UNIT_PU; + data.activePowerUnit = ElectricalUnit::UNIT_PU; break; case 1: - data.activePowerUnit = UNIT_W; + data.activePowerUnit = ElectricalUnit::UNIT_W; break; case 2: - data.activePowerUnit = UNIT_kW; + data.activePowerUnit = ElectricalUnit::UNIT_kW; break; case 3: - data.activePowerUnit = UNIT_MW; + data.activePowerUnit = ElectricalUnit::UNIT_MW; break; } @@ -477,16 +477,16 @@ bool SyncMachineForm::ValidateData() return false; switch(m_choiceReactivePower->GetSelection()) { case 0: - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; break; case 1: - data.reactivePowerUnit = UNIT_VAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_var; break; case 2: - data.reactivePowerUnit = UNIT_kVAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_kvar; break; case 3: - data.reactivePowerUnit = UNIT_MVAr; + data.reactivePowerUnit = ElectricalUnit::UNIT_Mvar; break; } @@ -497,16 +497,16 @@ bool SyncMachineForm::ValidateData() return false; switch(m_choiceMaxRectivePower->GetSelection()) { case 0: - data.maxReactiveUnit = UNIT_PU; + data.maxReactiveUnit = ElectricalUnit::UNIT_PU; break; case 1: - data.maxReactiveUnit = UNIT_VAr; + data.maxReactiveUnit = ElectricalUnit::UNIT_var; break; case 2: - data.maxReactiveUnit = UNIT_kVAr; + data.maxReactiveUnit = ElectricalUnit::UNIT_kvar; break; case 3: - data.maxReactiveUnit = UNIT_MVAr; + data.maxReactiveUnit = ElectricalUnit::UNIT_Mvar; break; } } @@ -518,16 +518,16 @@ bool SyncMachineForm::ValidateData() return false; switch(m_choiceMinRectivePower->GetSelection()) { case 0: - data.minReactiveUnit = UNIT_PU; + data.minReactiveUnit = ElectricalUnit::UNIT_PU; break; case 1: - data.minReactiveUnit = UNIT_VAr; + data.minReactiveUnit = ElectricalUnit::UNIT_var; break; case 2: - data.minReactiveUnit = UNIT_kVAr; + data.minReactiveUnit = ElectricalUnit::UNIT_kvar; break; case 3: - data.minReactiveUnit = UNIT_MVAr; + data.minReactiveUnit = ElectricalUnit::UNIT_Mvar; break; } } diff --git a/Project/SyncMotor.cpp b/Project/SyncMotor.cpp index 716a432..7d8e869 100644 --- a/Project/SyncMotor.cpp +++ b/Project/SyncMotor.cpp @@ -56,40 +56,40 @@ SyncMotorElectricalData SyncMotor::GetPUElectricalData(double systemPowerBase) // Active power double activePower = GetValueFromUnit(data.activePower, data.activePowerUnit); if(!m_online) activePower = 0.0; - if(data.activePowerUnit == UNIT_PU) { + if(data.activePowerUnit == ElectricalUnit::UNIT_PU) { if(data.useMachineBase) data.activePower = (activePower * machineBasePower) / systemPowerBase; } else { data.activePower = activePower / systemPowerBase; } - data.activePowerUnit = UNIT_PU; + data.activePowerUnit = ElectricalUnit::UNIT_PU; // Reactive power double reactivePower = GetValueFromUnit(data.reactivePower, data.reactivePowerUnit); if(!m_online) reactivePower = 0.0; - if(data.reactivePowerUnit == UNIT_PU) { + if(data.reactivePowerUnit == ElectricalUnit::UNIT_PU) { if(data.useMachineBase) data.reactivePower = (reactivePower * machineBasePower) / systemPowerBase; } else { data.reactivePower = reactivePower / systemPowerBase; } - data.reactivePowerUnit = UNIT_PU; + data.reactivePowerUnit = ElectricalUnit::UNIT_PU; // Max reactive power double maxReactive = GetValueFromUnit(data.maxReactive, data.maxReactiveUnit); - if(data.maxReactiveUnit == UNIT_PU) { + if(data.maxReactiveUnit == ElectricalUnit::UNIT_PU) { if(data.useMachineBase) data.maxReactive = (maxReactive * machineBasePower) / systemPowerBase; } else { data.maxReactive = maxReactive / systemPowerBase; } - data.maxReactiveUnit = UNIT_PU; + data.maxReactiveUnit = ElectricalUnit::UNIT_PU; // Min reactive power double minReactive = GetValueFromUnit(data.minReactive, data.minReactiveUnit); - if(data.minReactiveUnit == UNIT_PU) { + if(data.minReactiveUnit == ElectricalUnit::UNIT_PU) { if(data.useMachineBase) data.minReactive = (minReactive * machineBasePower) / systemPowerBase; } else { data.minReactive = minReactive / systemPowerBase; } - data.minReactiveUnit = UNIT_PU; + data.minReactiveUnit = ElectricalUnit::UNIT_PU; double baseVoltage = GetValueFromUnit(data.nominalVoltage, data.nominalVoltageUnit); double systemBaseImpedance = (baseVoltage * baseVoltage) / systemPowerBase; @@ -139,16 +139,16 @@ wxString SyncMotor::GetTipText() const if(!m_online) activePower = 0.0; tipText += _("\nP = ") + wxString::FromDouble(activePower, 5); switch(m_electricalData.activePowerUnit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { tipText += _(" p.u."); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { tipText += _(" W"); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { tipText += _(" kW"); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { tipText += _(" MW"); } break; default: @@ -158,16 +158,16 @@ wxString SyncMotor::GetTipText() const if(!m_online) reactivePower = 0.0; tipText += _("\nQ = ") + wxString::FromDouble(reactivePower, 5); switch(m_electricalData.reactivePowerUnit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { tipText += _(" p.u."); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { tipText += _(" VAr"); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { tipText += _(" kVAr"); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { tipText += _(" MVAr"); } break; default: @@ -191,23 +191,23 @@ rapidxml::xml_node<>* SyncMotor::SaveElement(rapidxml::xml_document<>& doc, rapi XMLParser::SetNodeValue(doc, name, m_electricalData.name); auto nominalPower = XMLParser::AppendNode(doc, electricalProp, "NominalPower"); XMLParser::SetNodeValue(doc, nominalPower, m_electricalData.nominalPower); - XMLParser::SetNodeAttribute(doc, nominalPower, "UnitID", m_electricalData.nominalPowerUnit); + XMLParser::SetNodeAttribute(doc, nominalPower, "UnitID", static_cast<int>(m_electricalData.nominalPowerUnit)); auto activePower = XMLParser::AppendNode(doc, electricalProp, "ActivePower"); XMLParser::SetNodeValue(doc, activePower, m_electricalData.activePower); - XMLParser::SetNodeAttribute(doc, activePower, "UnitID", m_electricalData.activePowerUnit); + XMLParser::SetNodeAttribute(doc, activePower, "UnitID", static_cast<int>(m_electricalData.activePowerUnit)); auto reactivePower = XMLParser::AppendNode(doc, electricalProp, "ReactivePower"); XMLParser::SetNodeValue(doc, reactivePower, m_electricalData.reactivePower); - XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", m_electricalData.reactivePowerUnit); + XMLParser::SetNodeAttribute(doc, reactivePower, "UnitID", static_cast<int>(m_electricalData.reactivePowerUnit)); auto haveMaxReactive = XMLParser::AppendNode(doc, electricalProp, "HaveMaxReactive"); XMLParser::SetNodeValue(doc, haveMaxReactive, m_electricalData.haveMaxReactive); auto maxReactive = XMLParser::AppendNode(doc, electricalProp, "MaxReactive"); XMLParser::SetNodeValue(doc, maxReactive, m_electricalData.maxReactive); - XMLParser::SetNodeAttribute(doc, maxReactive, "UnitID", m_electricalData.maxReactiveUnit); + XMLParser::SetNodeAttribute(doc, maxReactive, "UnitID", static_cast<int>(m_electricalData.maxReactiveUnit)); auto haveMinReactive = XMLParser::AppendNode(doc, electricalProp, "HaveMinReactive"); XMLParser::SetNodeValue(doc, haveMinReactive, m_electricalData.haveMinReactive); auto minReactive = XMLParser::AppendNode(doc, electricalProp, "MinReactive"); XMLParser::SetNodeValue(doc, minReactive, m_electricalData.minReactive); - XMLParser::SetNodeAttribute(doc, minReactive, "UnitID", m_electricalData.minReactiveUnit); + XMLParser::SetNodeAttribute(doc, minReactive, "UnitID", static_cast<int>(m_electricalData.minReactiveUnit)); auto useMachineBase = XMLParser::AppendNode(doc, electricalProp, "UseMachineBase"); XMLParser::SetNodeValue(doc, useMachineBase, m_electricalData.useMachineBase); diff --git a/Project/SyncMotor.h b/Project/SyncMotor.h index 694aa90..3691a87 100644 --- a/Project/SyncMotor.h +++ b/Project/SyncMotor.h @@ -26,19 +26,19 @@ struct SyncMotorElectricalData { // General wxString name = ""; double nominalPower = 100.0; - ElectricalUnit nominalPowerUnit = UNIT_MVA; + ElectricalUnit nominalPowerUnit = ElectricalUnit::UNIT_MVA; double nominalVoltage = 13.8; - ElectricalUnit nominalVoltageUnit = UNIT_kV; + ElectricalUnit nominalVoltageUnit = ElectricalUnit::UNIT_kV; double activePower = 100.0; - ElectricalUnit activePowerUnit = UNIT_MW; + ElectricalUnit activePowerUnit = ElectricalUnit::UNIT_MW; double reactivePower = 0.0; - ElectricalUnit reactivePowerUnit = UNIT_MVAr; + ElectricalUnit reactivePowerUnit = ElectricalUnit::UNIT_Mvar; bool haveMaxReactive = false; double maxReactive = 9999.0; - ElectricalUnit maxReactiveUnit = UNIT_MVAr; + ElectricalUnit maxReactiveUnit = ElectricalUnit::UNIT_Mvar; bool haveMinReactive = false; double minReactive = -9999.0; - ElectricalUnit minReactiveUnit = UNIT_MVAr; + ElectricalUnit minReactiveUnit = ElectricalUnit::UNIT_Mvar; bool useMachineBase = true; // Fault diff --git a/Project/Text.cpp b/Project/Text.cpp index 3a22c7a..ad844f0 100644 --- a/Project/Text.cpp +++ b/Project/Text.cpp @@ -176,7 +176,7 @@ void Text::UpdateText(double systemPowerBase) if(bus) { BusElectricalData data = bus->GetElectricalData(); double baseVoltage = data.nominalVoltage; - if(data.nominalVoltageUnit == UNIT_kV) baseVoltage *= 1e3; + if(data.nominalVoltageUnit == ElectricalUnit::UNIT_kV) baseVoltage *= 1e3; double baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage); switch(m_dataType) { @@ -186,13 +186,13 @@ void Text::UpdateText(double systemPowerBase) case DATA_VOLTAGE: { double voltage = std::abs(data.voltage); switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(voltage, m_decimalPlaces) + " p.u."); } break; - case UNIT_V: { + case ElectricalUnit::UNIT_V: { SetText(wxString::FromDouble(voltage * baseVoltage, m_decimalPlaces) + " V"); } break; - case UNIT_kV: { + case ElectricalUnit::UNIT_kV: { SetText(wxString::FromDouble(voltage * baseVoltage / 1e3, m_decimalPlaces) + " kV"); } break; default: @@ -202,10 +202,10 @@ void Text::UpdateText(double systemPowerBase) case DATA_ANGLE: { double angle = std::arg(data.voltage); switch(m_unit) { - case UNIT_RADIAN: { + case ElectricalUnit::UNIT_RADIAN: { SetText(wxString::FromDouble(angle, m_decimalPlaces) + " rad"); } break; - case UNIT_DEGREE: { + case ElectricalUnit::UNIT_DEGREE: { SetText(wxString::FromDouble(wxRadToDeg(angle), m_decimalPlaces) + (wxString)L'\u00B0'); } break; default: @@ -216,14 +216,14 @@ void Text::UpdateText(double systemPowerBase) double faultCurrent[3] = {std::abs(data.faultCurrent[0]), std::abs(data.faultCurrent[1]), std::abs(data.faultCurrent[2])}; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { wxString str = "Ia = " + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + " p.u."; str += "\nIb = " + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + " p.u."; str += "\nIc = " + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + " p.u."; SetText(str); } break; - case UNIT_A: { + case ElectricalUnit::UNIT_A: { wxString str = "Ia = " + wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) + " A"; @@ -233,7 +233,7 @@ void Text::UpdateText(double systemPowerBase) wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + " A"; SetText(str); } break; - case UNIT_kA: { + case ElectricalUnit::UNIT_kA: { wxString str = "Ia = " + wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + " kA"; @@ -253,14 +253,14 @@ void Text::UpdateText(double systemPowerBase) double faultVoltage[3] = {std::abs(data.faultVoltage[0]), std::abs(data.faultVoltage[1]), std::abs(data.faultVoltage[2])}; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { wxString str = "Va = " + wxString::FromDouble(faultVoltage[0], m_decimalPlaces) + " p.u."; str += "\nVb = " + wxString::FromDouble(faultVoltage[1], m_decimalPlaces) + " p.u."; str += "\nVc = " + wxString::FromDouble(faultVoltage[2], m_decimalPlaces) + " p.u."; SetText(str); } break; - case UNIT_V: { + case ElectricalUnit::UNIT_V: { wxString str = "Va = " + wxString::FromDouble(faultVoltage[0] * baseVoltage, m_decimalPlaces) + " V"; @@ -270,7 +270,7 @@ void Text::UpdateText(double systemPowerBase) wxString::FromDouble(faultVoltage[2] * baseVoltage, m_decimalPlaces) + " V"; SetText(str); } break; - case UNIT_kV: { + case ElectricalUnit::UNIT_kV: { wxString str = "Va = " + wxString::FromDouble(faultVoltage[0] * baseVoltage / 1e3, m_decimalPlaces) + " kV"; @@ -288,17 +288,17 @@ void Text::UpdateText(double systemPowerBase) } break; case DATA_SC_POWER: { switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(data.scPower, m_decimalPlaces) + " p.u."); } break; - case UNIT_VA: { + case ElectricalUnit::UNIT_VA: { SetText(wxString::FromDouble(data.scPower * systemPowerBase, m_decimalPlaces) + " VA"); } break; - case UNIT_kVA: { + case ElectricalUnit::UNIT_kVA: { SetText(wxString::FromDouble(data.scPower * systemPowerBase / 1e3, m_decimalPlaces) + " kVA"); } break; - case UNIT_MVA: { + case ElectricalUnit::UNIT_MVA: { SetText(wxString::FromDouble(data.scPower * systemPowerBase / 1e6, m_decimalPlaces) + " MVA"); } break; @@ -307,7 +307,7 @@ void Text::UpdateText(double systemPowerBase) } } break; case DATA_PQ_THD: { - SetText("THD = " + wxString::FromDouble(data.thd, m_decimalPlaces) + "\%"); + SetText("THD = " + wxString::FromDouble(data.thd, m_decimalPlaces) + "%"); } break; default: break; @@ -328,17 +328,17 @@ void Text::UpdateText(double systemPowerBase) double activePower = data.activePower; if(!syncGenerator->IsOnline()) activePower = 0.0; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(activePower, m_decimalPlaces) + " p.u."); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { SetText(wxString::FromDouble(activePower * systemPowerBase, m_decimalPlaces) + " W"); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { SetText(wxString::FromDouble(activePower * systemPowerBase / 1e3, m_decimalPlaces) + " kW"); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { SetText(wxString::FromDouble(activePower * systemPowerBase / 1e6, m_decimalPlaces) + " MW"); } break; @@ -350,18 +350,18 @@ void Text::UpdateText(double systemPowerBase) double reactivePower = data.reactivePower; if(!syncGenerator->IsOnline()) reactivePower = 0.0; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(reactivePower, m_decimalPlaces) + " p.u."); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { SetText(wxString::FromDouble(reactivePower * systemPowerBase, m_decimalPlaces) + " VAr"); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { SetText(wxString::FromDouble(reactivePower * systemPowerBase / 1e3, m_decimalPlaces) + " kVAr"); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { SetText(wxString::FromDouble(reactivePower * systemPowerBase / 1e6, m_decimalPlaces) + " MVAr"); } break; @@ -373,14 +373,14 @@ void Text::UpdateText(double systemPowerBase) double faultCurrent[3] = {std::abs(data.faultCurrent[0]), std::abs(data.faultCurrent[1]), std::abs(data.faultCurrent[2])}; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { wxString str = "Ia = " + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + " p.u."; str += "\nIb = " + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + " p.u."; str += "\nIc = " + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + " p.u."; SetText(str); } break; - case UNIT_A: { + case ElectricalUnit::UNIT_A: { wxString str = "Ia = " + wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) + " A"; @@ -390,7 +390,7 @@ void Text::UpdateText(double systemPowerBase) wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + " A"; SetText(str); } break; - case UNIT_kA: { + case ElectricalUnit::UNIT_kA: { wxString str = "Ia = " + wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + " kA"; @@ -416,7 +416,7 @@ void Text::UpdateText(double systemPowerBase) if(line) { LineElectricalData data = line->GetElectricalData(); double baseVoltage = data.nominalVoltage; - if(data.nominalVoltageUnit == UNIT_kV) baseVoltage *= 1e3; + if(data.nominalVoltageUnit == ElectricalUnit::UNIT_kV) baseVoltage *= 1e3; double baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage); switch(m_dataType) { case DATA_NAME: { @@ -426,17 +426,17 @@ void Text::UpdateText(double systemPowerBase) double activePF = std::real(data.powerFlow[m_direction]); if(!line->IsOnline()) activePF = 0.0; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(activePF, m_decimalPlaces) + " p.u."); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { SetText(wxString::FromDouble(activePF * systemPowerBase, m_decimalPlaces) + " W"); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { SetText(wxString::FromDouble(activePF * systemPowerBase / 1e3, m_decimalPlaces) + " kW"); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { SetText(wxString::FromDouble(activePF * systemPowerBase / 1e6, m_decimalPlaces) + " MW"); } break; @@ -448,17 +448,17 @@ void Text::UpdateText(double systemPowerBase) double reactivePF = std::imag(data.powerFlow[m_direction]); if(!line->IsOnline()) reactivePF = 0.0; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(reactivePF, m_decimalPlaces) + " p.u."); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { SetText(wxString::FromDouble(reactivePF * systemPowerBase, m_decimalPlaces) + " VAr"); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e3, m_decimalPlaces) + " kVAr"); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e6, m_decimalPlaces) + " MVAr"); } break; @@ -470,16 +470,16 @@ void Text::UpdateText(double systemPowerBase) double losses = std::abs(std::real(data.powerFlow[0]) + std::real(data.powerFlow[1])); if(!line->IsOnline()) losses = 0.0; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(losses, m_decimalPlaces) + " p.u."); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { SetText(wxString::FromDouble(losses * systemPowerBase, m_decimalPlaces) + " W"); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { SetText(wxString::FromDouble(losses * systemPowerBase / 1e3, m_decimalPlaces) + " kW"); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { SetText(wxString::FromDouble(losses * systemPowerBase / 1e6, m_decimalPlaces) + " MW"); } break; default: @@ -490,13 +490,13 @@ void Text::UpdateText(double systemPowerBase) double current = std::abs(data.current[m_direction]); if(!line->IsOnline()) current = 0.0; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(current, m_decimalPlaces) + " p.u."); } break; - case UNIT_A: { + case ElectricalUnit::UNIT_A: { SetText(wxString::FromDouble(current * baseCurrent, m_decimalPlaces) + " A"); } break; - case UNIT_kA: { + case ElectricalUnit::UNIT_kA: { SetText(wxString::FromDouble(current * baseCurrent / 1e3, m_decimalPlaces) + " kA"); } break; default: @@ -509,14 +509,14 @@ void Text::UpdateText(double systemPowerBase) std::abs(data.faultCurrent[m_direction][2])}; if(!line->IsOnline()) faultCurrent[0] = faultCurrent[1] = faultCurrent[2] = 0.0; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { wxString str = "Ia = " + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + " p.u."; str += "\nIb = " + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + " p.u."; str += "\nIc = " + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + " p.u."; SetText(str); } break; - case UNIT_A: { + case ElectricalUnit::UNIT_A: { wxString str = "Ia = " + wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) + " A"; @@ -526,7 +526,7 @@ void Text::UpdateText(double systemPowerBase) wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + " A"; SetText(str); } break; - case UNIT_kA: { + case ElectricalUnit::UNIT_kA: { wxString str = "Ia = " + wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + " kA"; @@ -553,8 +553,8 @@ void Text::UpdateText(double systemPowerBase) TransformerElectricalData data = transformer->GetElectricalData(); double baseVoltage[2] = {data.primaryNominalVoltage, data.secondaryNominalVoltage}; - if(data.primaryNominalVoltageUnit == UNIT_kV) baseVoltage[0] *= 1e3; - if(data.secondaryNominalVoltageUnit == UNIT_kV) baseVoltage[1] *= 1e3; + if(data.primaryNominalVoltageUnit == ElectricalUnit::UNIT_kV) baseVoltage[0] *= 1e3; + if(data.secondaryNominalVoltageUnit == ElectricalUnit::UNIT_kV) baseVoltage[1] *= 1e3; double baseCurrent[2] = {systemPowerBase / (std::sqrt(3.0) * baseVoltage[0]), systemPowerBase / (std::sqrt(3.0) * baseVoltage[1])}; @@ -566,17 +566,17 @@ void Text::UpdateText(double systemPowerBase) double activePF = std::real(data.powerFlow[m_direction]); if(!transformer->IsOnline()) activePF = 0.0; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(activePF, m_decimalPlaces) + " p.u."); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { SetText(wxString::FromDouble(activePF * systemPowerBase, m_decimalPlaces) + " W"); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { SetText(wxString::FromDouble(activePF * systemPowerBase / 1e3, m_decimalPlaces) + " kW"); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { SetText(wxString::FromDouble(activePF * systemPowerBase / 1e6, m_decimalPlaces) + " MW"); } break; @@ -588,17 +588,17 @@ void Text::UpdateText(double systemPowerBase) double reactivePF = std::imag(data.powerFlow[m_direction]); if(!transformer->IsOnline()) reactivePF = 0.0; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(reactivePF, m_decimalPlaces) + " p.u."); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { SetText(wxString::FromDouble(reactivePF * systemPowerBase, m_decimalPlaces) + " VAr"); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e3, m_decimalPlaces) + " kVAr"); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e6, m_decimalPlaces) + " MVAr"); } break; @@ -610,16 +610,16 @@ void Text::UpdateText(double systemPowerBase) double losses = std::abs(std::real(data.powerFlow[0]) + std::real(data.powerFlow[1])); if(!transformer->IsOnline()) losses = 0.0; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(losses, m_decimalPlaces) + " p.u."); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { SetText(wxString::FromDouble(losses * systemPowerBase, m_decimalPlaces) + " W"); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { SetText(wxString::FromDouble(losses * systemPowerBase / 1e3, m_decimalPlaces) + " kW"); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { SetText(wxString::FromDouble(losses * systemPowerBase / 1e6, m_decimalPlaces) + " MW"); } break; default: @@ -630,14 +630,14 @@ void Text::UpdateText(double systemPowerBase) double current = std::abs(data.current[m_direction]); if(!transformer->IsOnline()) current = 0.0; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(current, m_decimalPlaces) + " p.u."); } break; - case UNIT_A: { + case ElectricalUnit::UNIT_A: { SetText(wxString::FromDouble(current * baseCurrent[m_direction], m_decimalPlaces) + " A"); } break; - case UNIT_kA: { + case ElectricalUnit::UNIT_kA: { SetText( wxString::FromDouble(current * baseCurrent[m_direction] / 1e3, m_decimalPlaces) + " kA"); @@ -652,14 +652,14 @@ void Text::UpdateText(double systemPowerBase) std::abs(data.faultCurrent[m_direction][2])}; if(!transformer->IsOnline()) faultCurrent[0] = faultCurrent[1] = faultCurrent[2] = 0.0; switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { wxString str = "Ia = " + wxString::FromDouble(faultCurrent[0], m_decimalPlaces) + " p.u."; str += "\nIb = " + wxString::FromDouble(faultCurrent[1], m_decimalPlaces) + " p.u."; str += "\nIc = " + wxString::FromDouble(faultCurrent[2], m_decimalPlaces) + " p.u."; SetText(str); } break; - case UNIT_A: { + case ElectricalUnit::UNIT_A: { wxString str = "Ia = " + wxString::FromDouble(faultCurrent[0] * baseCurrent[m_direction], m_decimalPlaces) + @@ -674,7 +674,7 @@ void Text::UpdateText(double systemPowerBase) " A"; SetText(str); } break; - case UNIT_kA: { + case ElectricalUnit::UNIT_kA: { wxString str = "Ia = " + wxString::FromDouble(faultCurrent[0] * baseCurrent[m_direction] / 1e3, m_decimalPlaces) + @@ -714,17 +714,17 @@ void Text::UpdateText(double systemPowerBase) } break; case DATA_ACTIVE_POWER: { switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + " p.u."); } - case UNIT_W: { + case ElectricalUnit::UNIT_W: { SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + " W"); } - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) + " kW"); } - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) + " MW"); } @@ -734,18 +734,18 @@ void Text::UpdateText(double systemPowerBase) } break; case DATA_REACTIVE_POWER: { switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + " p.u."); } - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { SetText(wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) + " VAr"); } - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) + " kVAr"); } - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) + " MVAr"); } @@ -770,17 +770,17 @@ void Text::UpdateText(double systemPowerBase) } break; case DATA_ACTIVE_POWER: { switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + " p.u."); } - case UNIT_W: { + case ElectricalUnit::UNIT_W: { SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + " W"); } - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) + " kW"); } - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) + " MW"); } @@ -790,18 +790,18 @@ void Text::UpdateText(double systemPowerBase) } break; case DATA_REACTIVE_POWER: { switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + " p.u."); } - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { SetText(wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) + " VAr"); } - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) + " kVAr"); } - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) + " MVAr"); } @@ -826,17 +826,17 @@ void Text::UpdateText(double systemPowerBase) } break; case DATA_ACTIVE_POWER: { switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + " p.u."); } - case UNIT_W: { + case ElectricalUnit::UNIT_W: { SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + " W"); } - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) + " kW"); } - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) + " MW"); } @@ -846,18 +846,18 @@ void Text::UpdateText(double systemPowerBase) } break; case DATA_REACTIVE_POWER: { switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + " p.u."); } - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { SetText(wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) + " VAr"); } - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) + " kVAr"); } - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) + " MVAr"); } @@ -888,17 +888,17 @@ void Text::UpdateText(double systemPowerBase) } break; case DATA_REACTIVE_POWER: { switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(reativePower, m_decimalPlaces) + " p.u."); } - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { SetText(wxString::FromDouble(reativePower * systemPowerBase, m_decimalPlaces) + " VAr"); } - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e3, m_decimalPlaces) + " kVAr"); } - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e6, m_decimalPlaces) + " MVAr"); } @@ -929,17 +929,17 @@ void Text::UpdateText(double systemPowerBase) } break; case DATA_REACTIVE_POWER: { switch(m_unit) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { SetText(wxString::FromDouble(reativePower, m_decimalPlaces) + " p.u."); } - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { SetText(wxString::FromDouble(reativePower * systemPowerBase, m_decimalPlaces) + " VAr"); } - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e3, m_decimalPlaces) + " kVAr"); } - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e6, m_decimalPlaces) + " MVAr"); } @@ -1004,7 +1004,7 @@ rapidxml::xml_node<>* Text::SaveElement(rapidxml::xml_document<>& doc, rapidxml: auto dataType = XMLParser::AppendNode(doc, textProperties, "DataType"); XMLParser::SetNodeValue(doc, dataType, m_dataType); auto dataUnit = XMLParser::AppendNode(doc, textProperties, "DataUnit"); - XMLParser::SetNodeValue(doc, dataUnit, m_unit); + XMLParser::SetNodeValue(doc, dataUnit, static_cast<int>(m_unit)); auto direction = XMLParser::AppendNode(doc, textProperties, "Direction"); XMLParser::SetNodeValue(doc, direction, m_direction); auto decimalPlaces = XMLParser::AppendNode(doc, textProperties, "DecimalPlaces"); diff --git a/Project/TextForm.cpp b/Project/TextForm.cpp index 30497fd..20d0873 100644 --- a/Project/TextForm.cpp +++ b/Project/TextForm.cpp @@ -230,13 +230,13 @@ bool TextForm::LoadChoices() case DATA_VOLTAGE: { m_choiceTextType->SetSelection(1); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_V: { + case ElectricalUnit::UNIT_V: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kV: { + case ElectricalUnit::UNIT_kV: { m_choiceTextUnit->SetSelection(2); } break; default: @@ -247,10 +247,10 @@ bool TextForm::LoadChoices() case DATA_ANGLE: { m_choiceTextType->SetSelection(2); switch(m_text->GetUnit()) { - case UNIT_DEGREE: { + case ElectricalUnit::UNIT_DEGREE: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_RADIAN: { + case ElectricalUnit::UNIT_RADIAN: { m_choiceTextUnit->SetSelection(1); } break; default: @@ -260,13 +260,13 @@ bool TextForm::LoadChoices() case DATA_SC_CURRENT: { m_choiceTextType->SetSelection(3); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_A: { + case ElectricalUnit::UNIT_A: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kA: { + case ElectricalUnit::UNIT_kA: { m_choiceTextUnit->SetSelection(2); } break; default: @@ -276,13 +276,13 @@ bool TextForm::LoadChoices() case DATA_SC_VOLTAGE: { m_choiceTextType->SetSelection(4); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_V: { + case ElectricalUnit::UNIT_V: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kV: { + case ElectricalUnit::UNIT_kV: { m_choiceTextUnit->SetSelection(2); } break; default: @@ -292,16 +292,16 @@ bool TextForm::LoadChoices() case DATA_SC_POWER: { m_choiceTextType->SetSelection(5); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_VA: { + case ElectricalUnit::UNIT_VA: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kVA: { + case ElectricalUnit::UNIT_kVA: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MVA: { + case ElectricalUnit::UNIT_MVA: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -324,16 +324,16 @@ bool TextForm::LoadChoices() case DATA_ACTIVE_POWER: { m_choiceTextType->SetSelection(1); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -343,16 +343,16 @@ bool TextForm::LoadChoices() case DATA_REACTIVE_POWER: { m_choiceTextType->SetSelection(2); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -362,13 +362,13 @@ bool TextForm::LoadChoices() case DATA_SC_CURRENT: { m_choiceTextType->SetSelection(3); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_A: { + case ElectricalUnit::UNIT_A: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kA: { + case ElectricalUnit::UNIT_kA: { m_choiceTextUnit->SetSelection(2); } break; default: @@ -388,16 +388,16 @@ bool TextForm::LoadChoices() case DATA_PF_ACTIVE: { m_choiceTextType->SetSelection(1); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -407,16 +407,16 @@ bool TextForm::LoadChoices() case DATA_PF_REACTIVE: { m_choiceTextType->SetSelection(2); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -426,16 +426,16 @@ bool TextForm::LoadChoices() case DATA_PF_LOSSES: { m_choiceTextType->SetSelection(3); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -445,13 +445,13 @@ bool TextForm::LoadChoices() case DATA_PF_CURRENT: { m_choiceTextType->SetSelection(4); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_A: { + case ElectricalUnit::UNIT_A: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kA: { + case ElectricalUnit::UNIT_kA: { m_choiceTextUnit->SetSelection(2); } break; default: @@ -461,16 +461,16 @@ bool TextForm::LoadChoices() case DATA_SC_CURRENT: { m_choiceTextType->SetSelection(5); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_A: { + case ElectricalUnit::UNIT_A: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kA: { + case ElectricalUnit::UNIT_kA: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -490,16 +490,16 @@ bool TextForm::LoadChoices() case DATA_PF_ACTIVE: { m_choiceTextType->SetSelection(1); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -509,16 +509,16 @@ bool TextForm::LoadChoices() case DATA_PF_REACTIVE: { m_choiceTextType->SetSelection(2); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -528,16 +528,16 @@ bool TextForm::LoadChoices() case DATA_PF_LOSSES: { m_choiceTextType->SetSelection(3); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -547,13 +547,13 @@ bool TextForm::LoadChoices() case DATA_PF_CURRENT: { m_choiceTextType->SetSelection(4); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_A: { + case ElectricalUnit::UNIT_A: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kA: { + case ElectricalUnit::UNIT_kA: { m_choiceTextUnit->SetSelection(2); } break; default: @@ -563,13 +563,13 @@ bool TextForm::LoadChoices() case DATA_SC_CURRENT: { m_choiceTextType->SetSelection(5); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_A: { + case ElectricalUnit::UNIT_A: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kA: { + case ElectricalUnit::UNIT_kA: { m_choiceTextUnit->SetSelection(2); } break; default: @@ -589,16 +589,16 @@ bool TextForm::LoadChoices() case DATA_ACTIVE_POWER: { m_choiceTextType->SetSelection(1); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -608,16 +608,16 @@ bool TextForm::LoadChoices() case DATA_REACTIVE_POWER: { m_choiceTextType->SetSelection(2); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -651,16 +651,16 @@ bool TextForm::LoadChoices() case DATA_REACTIVE_POWER: { m_choiceTextType->SetSelection(1); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -680,16 +680,16 @@ bool TextForm::LoadChoices() case DATA_ACTIVE_POWER: { m_choiceTextType->SetSelection(1); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -699,16 +699,16 @@ bool TextForm::LoadChoices() case DATA_REACTIVE_POWER: { m_choiceTextType->SetSelection(2); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -728,16 +728,16 @@ bool TextForm::LoadChoices() case DATA_ACTIVE_POWER: { m_choiceTextType->SetSelection(1); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_W: { + case ElectricalUnit::UNIT_W: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kW: { + case ElectricalUnit::UNIT_kW: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MW: { + case ElectricalUnit::UNIT_MW: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -747,16 +747,16 @@ bool TextForm::LoadChoices() case DATA_REACTIVE_POWER: { m_choiceTextType->SetSelection(2); switch(m_text->GetUnit()) { - case UNIT_PU: { + case ElectricalUnit::UNIT_PU: { m_choiceTextUnit->SetSelection(0); } break; - case UNIT_VAr: { + case ElectricalUnit::UNIT_var: { m_choiceTextUnit->SetSelection(1); } break; - case UNIT_kVAr: { + case ElectricalUnit::UNIT_kvar: { m_choiceTextUnit->SetSelection(2); } break; - case UNIT_MVAr: { + case ElectricalUnit::UNIT_Mvar: { m_choiceTextUnit->SetSelection(3); } break; default: @@ -1082,13 +1082,13 @@ void TextForm::UnitChoice() case DATA_SC_VOLTAGE: { switch(m_choiceTextUnit->GetSelection()) { case 0: { - m_text->SetUnit(UNIT_PU); + m_text->SetUnit(ElectricalUnit::UNIT_PU); } break; case 1: { - m_text->SetUnit(UNIT_V); + m_text->SetUnit(ElectricalUnit::UNIT_V); } break; case 2: { - m_text->SetUnit(UNIT_kV); + m_text->SetUnit(ElectricalUnit::UNIT_kV); } break; default: break; @@ -1097,10 +1097,10 @@ void TextForm::UnitChoice() case DATA_ANGLE: { switch(m_choiceTextUnit->GetSelection()) { case 0: { - m_text->SetUnit(UNIT_DEGREE); + m_text->SetUnit(ElectricalUnit::UNIT_DEGREE); } break; case 1: { - m_text->SetUnit(UNIT_RADIAN); + m_text->SetUnit(ElectricalUnit::UNIT_RADIAN); } break; default: break; @@ -1110,13 +1110,13 @@ void TextForm::UnitChoice() case DATA_PF_CURRENT: { switch(m_choiceTextUnit->GetSelection()) { case 0: { - m_text->SetUnit(UNIT_PU); + m_text->SetUnit(ElectricalUnit::UNIT_PU); } break; case 1: { - m_text->SetUnit(UNIT_A); + m_text->SetUnit(ElectricalUnit::UNIT_A); } break; case 2: { - m_text->SetUnit(UNIT_kA); + m_text->SetUnit(ElectricalUnit::UNIT_kA); } break; default: break; @@ -1125,16 +1125,16 @@ void TextForm::UnitChoice() case DATA_SC_POWER: { switch(m_choiceTextUnit->GetSelection()) { case 0: { - m_text->SetUnit(UNIT_PU); + m_text->SetUnit(ElectricalUnit::UNIT_PU); } break; case 1: { - m_text->SetUnit(UNIT_VA); + m_text->SetUnit(ElectricalUnit::UNIT_VA); } break; case 2: { - m_text->SetUnit(UNIT_kVA); + m_text->SetUnit(ElectricalUnit::UNIT_kVA); } break; case 3: { - m_text->SetUnit(UNIT_MVA); + m_text->SetUnit(ElectricalUnit::UNIT_MVA); } break; default: break; @@ -1145,16 +1145,16 @@ void TextForm::UnitChoice() case DATA_PF_LOSSES: { switch(m_choiceTextUnit->GetSelection()) { case 0: { - m_text->SetUnit(UNIT_PU); + m_text->SetUnit(ElectricalUnit::UNIT_PU); } break; case 1: { - m_text->SetUnit(UNIT_W); + m_text->SetUnit(ElectricalUnit::UNIT_W); } break; case 2: { - m_text->SetUnit(UNIT_kW); + m_text->SetUnit(ElectricalUnit::UNIT_kW); } break; case 3: { - m_text->SetUnit(UNIT_MW); + m_text->SetUnit(ElectricalUnit::UNIT_MW); } break; default: break; @@ -1164,16 +1164,16 @@ void TextForm::UnitChoice() case DATA_PF_REACTIVE: { switch(m_choiceTextUnit->GetSelection()) { case 0: { - m_text->SetUnit(UNIT_PU); + m_text->SetUnit(ElectricalUnit::UNIT_PU); } break; case 1: { - m_text->SetUnit(UNIT_VAr); + m_text->SetUnit(ElectricalUnit::UNIT_var); } break; case 2: { - m_text->SetUnit(UNIT_kVAr); + m_text->SetUnit(ElectricalUnit::UNIT_kvar); } break; case 3: { - m_text->SetUnit(UNIT_MVAr); + m_text->SetUnit(ElectricalUnit::UNIT_Mvar); } break; default: break; diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp index bd212d7..05c2c4c 100644 --- a/Project/Transformer.cpp +++ b/Project/Transformer.cpp @@ -379,13 +379,13 @@ void Transformer::UpdatePowerFlowArrowsPosition() { std::vector<wxPoint2DDouble> edges; switch(m_pfDirection) { - case PF_NONE: { + case PowerFlowDirection::PF_NONE: { m_powerFlowArrow.clear(); } break; - case PF_BUS1_TO_BUS2: { + case PowerFlowDirection::PF_BUS1_TO_BUS2 : { for(int i = 1; i < (int)m_pointList.size() - 1; i++) { edges.push_back(m_pointList[i]); } } break; - case PF_BUS2_TO_BUS1: { + case PowerFlowDirection::PF_BUS2_TO_BUS1: { for(int i = (int)m_pointList.size() - 2; i > 0; i--) { edges.push_back(m_pointList[i]); } } break; default: @@ -490,10 +490,10 @@ wxString Transformer::GetTipText() const wxString tipText = m_electricalData.name; wxString primVoltage = StringFromDouble(m_electricalData.primaryNominalVoltage); switch(m_electricalData.primaryNominalVoltageUnit) { - case UNIT_V: { + case ElectricalUnit::UNIT_V: { primVoltage += _(" V"); } break; - case UNIT_kV: { + case ElectricalUnit::UNIT_kV: { primVoltage += _(" kV"); } break; default: @@ -501,10 +501,10 @@ wxString Transformer::GetTipText() const } wxString secVoltage = StringFromDouble(m_electricalData.secondaryNominalVoltage); switch(m_electricalData.secondaryNominalVoltageUnit) { - case UNIT_V: { + case ElectricalUnit::UNIT_V: { secVoltage += _(" V"); } break; - case UNIT_kV: { + case ElectricalUnit::UNIT_kV: { secVoltage += _(" kV"); } break; default: @@ -547,21 +547,21 @@ TransformerElectricalData Transformer::GetPUElectricalData(double systemBasePowe // Resistance double r = data.resistance; - if(data.resistanceUnit == UNIT_PU) { + if(data.resistanceUnit == ElectricalUnit::UNIT_PU) { if(data.useTransformerPower) data.resistance = (r * transformerBaseImpedance) / systemBaseImpedance; } else { data.resistance = r / systemBaseImpedance; } - data.resistanceUnit = UNIT_PU; + data.resistanceUnit = ElectricalUnit::UNIT_PU; // Indutive reactance double x = data.indReactance; - if(data.indReactanceUnit == UNIT_PU) { + if(data.indReactanceUnit == ElectricalUnit::UNIT_PU) { if(data.useTransformerPower) data.indReactance = (x * transformerBaseImpedance) / systemBaseImpedance; } else { data.indReactance = x / systemBaseImpedance; } - data.indReactanceUnit = UNIT_PU; + data.indReactanceUnit = ElectricalUnit::UNIT_PU; // Fault @@ -651,19 +651,19 @@ rapidxml::xml_node<>* Transformer::SaveElement(rapidxml::xml_document<>& doc, ra XMLParser::SetNodeValue(doc, name, m_electricalData.name); auto primaryNominalVoltage = XMLParser::AppendNode(doc, electricalProp, "PrimaryNominalVoltage"); XMLParser::SetNodeValue(doc, primaryNominalVoltage, m_electricalData.primaryNominalVoltage); - XMLParser::SetNodeAttribute(doc, primaryNominalVoltage, "UnitID", m_electricalData.primaryNominalVoltageUnit); + XMLParser::SetNodeAttribute(doc, primaryNominalVoltage, "UnitID", static_cast<int>(m_electricalData.primaryNominalVoltageUnit)); auto secondaryNominalVoltage = XMLParser::AppendNode(doc, electricalProp, "SecondaryNominalVoltage"); XMLParser::SetNodeValue(doc, secondaryNominalVoltage, m_electricalData.secondaryNominalVoltage); - XMLParser::SetNodeAttribute(doc, secondaryNominalVoltage, "UnitID", m_electricalData.secondaryNominalVoltageUnit); + XMLParser::SetNodeAttribute(doc, secondaryNominalVoltage, "UnitID", static_cast<int>(m_electricalData.secondaryNominalVoltageUnit)); auto nominalPower = XMLParser::AppendNode(doc, electricalProp, "NominalPower"); XMLParser::SetNodeValue(doc, nominalPower, m_electricalData.nominalPower); - XMLParser::SetNodeAttribute(doc, nominalPower, "UnitID", m_electricalData.nominalPowerUnit); + XMLParser::SetNodeAttribute(doc, nominalPower, "UnitID", static_cast<int>(m_electricalData.nominalPowerUnit)); auto resistance = XMLParser::AppendNode(doc, electricalProp, "Resistance"); XMLParser::SetNodeValue(doc, resistance, m_electricalData.resistance); - XMLParser::SetNodeAttribute(doc, resistance, "UnitID", m_electricalData.resistanceUnit); + XMLParser::SetNodeAttribute(doc, resistance, "UnitID", static_cast<int>(m_electricalData.resistanceUnit)); auto indReactance = XMLParser::AppendNode(doc, electricalProp, "IndReactance"); XMLParser::SetNodeValue(doc, indReactance, m_electricalData.indReactance); - XMLParser::SetNodeAttribute(doc, indReactance, "UnitID", m_electricalData.indReactanceUnit); + XMLParser::SetNodeAttribute(doc, indReactance, "UnitID", static_cast<int>(m_electricalData.indReactanceUnit)); auto connection = XMLParser::AppendNode(doc, electricalProp, "Connection"); XMLParser::SetNodeValue(doc, connection, m_electricalData.connection); auto turnsRatio = XMLParser::AppendNode(doc, electricalProp, "TurnsRatio"); diff --git a/Project/Transformer.h b/Project/Transformer.h index 207f6d1..d1a6b05 100644 --- a/Project/Transformer.h +++ b/Project/Transformer.h @@ -38,16 +38,16 @@ struct TransformerElectricalData { // General wxString name = ""; double primaryNominalVoltage = 138.0; - ElectricalUnit primaryNominalVoltageUnit = UNIT_kV; + ElectricalUnit primaryNominalVoltageUnit = ElectricalUnit::UNIT_kV; double secondaryNominalVoltage = 138.0; - ElectricalUnit secondaryNominalVoltageUnit = UNIT_kV; + ElectricalUnit secondaryNominalVoltageUnit = ElectricalUnit::UNIT_kV; int baseVoltage = 0; double nominalPower = 100.0; - ElectricalUnit nominalPowerUnit = UNIT_MVA; + ElectricalUnit nominalPowerUnit = ElectricalUnit::UNIT_MVA; double resistance = 0.0; - ElectricalUnit resistanceUnit = UNIT_PU; + ElectricalUnit resistanceUnit = ElectricalUnit::UNIT_PU; double indReactance = 1.0; - ElectricalUnit indReactanceUnit = UNIT_PU; + ElectricalUnit indReactanceUnit = ElectricalUnit::UNIT_PU; TransformerConnection connection = GWYE_GWYE; double turnsRatio = 1.0; double phaseShift = 0.0; diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp index 9cd1bb6..af95fbf 100644 --- a/Project/Workspace.cpp +++ b/Project/Workspace.cpp @@ -160,9 +160,9 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) bool showNewElementForm = false; bool clickOnSwitch = false; - if(m_mode == MODE_INSERT_TEXT || m_mode == MODE_PASTE || m_mode == MODE_DRAG_PASTE) { - m_mode = MODE_EDIT; - } else if(m_mode == MODE_INSERT || m_mode == MODE_DRAG_INSERT || m_mode == MODE_DRAG_INSERT_TEXT) { + if(m_mode == WorkspaceMode::MODE_INSERT_TEXT || m_mode == WorkspaceMode::MODE_PASTE || m_mode == WorkspaceMode::MODE_DRAG_PASTE) { + m_mode = WorkspaceMode::MODE_EDIT; + } else if(m_mode == WorkspaceMode::MODE_INSERT || m_mode == WorkspaceMode::MODE_DRAG_INSERT || m_mode == WorkspaceMode::MODE_DRAG_INSERT_TEXT) { // Get the last element inserted on the list. newElement = *(m_elementList.end() - 1); for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) { @@ -180,7 +180,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) ValidateElementsVoltages(); m_timer->Stop(); showNewElementForm = true; - m_mode = MODE_EDIT; + m_mode = WorkspaceMode::MODE_EDIT; } } } @@ -201,7 +201,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) // Click in selected element node. if(element->NodeContains(m_camera->ScreenToWorld(clickPoint)) != 0 && element->IsSelected()) { - m_mode = MODE_MOVE_NODE; + m_mode = WorkspaceMode::MODE_MOVE_NODE; m_disconnectedElement = true; foundElement = true; } @@ -216,11 +216,11 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) } // If pickbox contains the click, move the pickbox if(element->PickboxContains(m_camera->ScreenToWorld(clickPoint))) { - m_mode = MODE_MOVE_PICKBOX; + m_mode = WorkspaceMode::MODE_MOVE_PICKBOX; clickPickbox = true; } // If didn't found a pickbox, move the element - if(!clickPickbox) { m_mode = MODE_MOVE_ELEMENT; } + if(!clickPickbox) { m_mode = WorkspaceMode::MODE_MOVE_ELEMENT; } } // Click in a switch. @@ -239,7 +239,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) if(text->Contains(m_camera->ScreenToWorld(clickPoint))) { if(!foundElement) { text->SetSelected(); - m_mode = MODE_MOVE_ELEMENT; + m_mode = WorkspaceMode::MODE_MOVE_ELEMENT; foundElement = true; } } @@ -247,7 +247,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) } if(!foundElement) { - m_mode = MODE_SELECTION_RECT; + m_mode = WorkspaceMode::MODE_SELECTION_RECT; m_startSelRect = m_camera->ScreenToWorld(clickPoint); } @@ -346,7 +346,7 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event) void Workspace::OnRightClickDown(wxMouseEvent& event) { bool redraw = false; - if(m_mode == MODE_EDIT) { + if(m_mode == WorkspaceMode::MODE_EDIT) { for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) { Element* element = *it; if(element->IsSelected()) { @@ -385,7 +385,7 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event) Element* element = *it; // The user was moving a pickbox. - if(m_mode == MODE_MOVE_PICKBOX) { + if(m_mode == WorkspaceMode::MODE_MOVE_PICKBOX) { // Catch only the element that have the pickbox shown. if(element->IsPickboxShown()) { // If the element is a bus, check if a node is outside. @@ -406,13 +406,13 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event) } } - if(m_mode == MODE_SELECTION_RECT) { + if(m_mode == WorkspaceMode::MODE_SELECTION_RECT) { if(element->Intersects(m_selectionRect)) { element->SetSelected(); } else if(!event.ControlDown()) { element->SetSelected(false); } - } else if(m_mode == MODE_MOVE_NODE) { + } else if(m_mode == WorkspaceMode::MODE_MOVE_NODE) { if(element->IsSelected()) { for(int i = 0; i < (int)m_elementList.size(); i++) { Element* parent = m_elementList[i]; @@ -446,7 +446,7 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event) // Text element for(auto it = m_textList.begin(); it != m_textList.end(); it++) { Text* text = *it; - if(m_mode == MODE_SELECTION_RECT) { + if(m_mode == WorkspaceMode::MODE_SELECTION_RECT) { if(text->Intersects(m_selectionRect)) { text->SetSelected(); } else if(!event.ControlDown()) { @@ -463,7 +463,7 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event) } if(!foundPickbox) { SetCursor(wxCURSOR_ARROW); } - if(m_mode != MODE_INSERT) { m_mode = MODE_EDIT; } + if(m_mode != WorkspaceMode::MODE_INSERT) { m_mode = WorkspaceMode::MODE_EDIT; } if(updateVoltages) { ValidateElementsVoltages(); } @@ -481,27 +481,27 @@ void Workspace::OnMouseMotion(wxMouseEvent& event) { bool redraw = false; switch(m_mode) { - case MODE_INSERT: { + case WorkspaceMode::MODE_INSERT: { Element* newElement = *(m_elementList.end() - 1); // Get the last element in the list. newElement->SetPosition(m_camera->ScreenToWorld(event.GetPosition())); redraw = true; } break; - case MODE_INSERT_TEXT: { + case WorkspaceMode::MODE_INSERT_TEXT: { Text* newText = *(m_textList.end() - 1); newText->SetPosition(m_camera->ScreenToWorld(event.GetPosition())); redraw = true; } break; - case MODE_DRAG: - case MODE_DRAG_INSERT: - case MODE_DRAG_INSERT_TEXT: - case MODE_DRAG_PASTE: { + case WorkspaceMode::MODE_DRAG: + case WorkspaceMode::MODE_DRAG_INSERT: + case WorkspaceMode::MODE_DRAG_INSERT_TEXT: + case WorkspaceMode::MODE_DRAG_PASTE: { m_camera->SetTranslation(event.GetPosition()); redraw = true; } break; - case MODE_EDIT: { + case WorkspaceMode::MODE_EDIT: { bool foundPickbox = false; for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; @@ -530,7 +530,7 @@ void Workspace::OnMouseMotion(wxMouseEvent& event) } } break; - case MODE_MOVE_NODE: { + case WorkspaceMode::MODE_MOVE_NODE: { for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; if(element->IsSelected()) { @@ -540,7 +540,7 @@ void Workspace::OnMouseMotion(wxMouseEvent& event) } } break; - case MODE_MOVE_PICKBOX: { + case WorkspaceMode::MODE_MOVE_PICKBOX: { for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { Element* element = *it; if(element->IsSelected()) { @@ -550,8 +550,8 @@ void Workspace::OnMouseMotion(wxMouseEvent& event) } } break; - case MODE_MOVE_ELEMENT: - case MODE_PASTE: { + case WorkspaceMode::MODE_MOVE_ELEMENT: + case WorkspaceMode::MODE_PASTE: { for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) { Element* element = *it; if(element->IsSelected()) { @@ -574,7 +574,7 @@ void Workspace::OnMouseMotion(wxMouseEvent& event) } } break; - case MODE_SELECTION_RECT: { + case WorkspaceMode::MODE_SELECTION_RECT: { wxPoint2DDouble currentPos = m_camera->ScreenToWorld(event.GetPosition()); double x, y, w, h; if(currentPos.m_x < m_startSelRect.m_x) { @@ -608,17 +608,17 @@ void Workspace::OnMiddleDown(wxMouseEvent& event) { // Set to drag mode. switch(m_mode) { - case MODE_INSERT: { - m_mode = MODE_DRAG_INSERT; + case WorkspaceMode::MODE_INSERT: { + m_mode = WorkspaceMode::MODE_DRAG_INSERT; } break; - case MODE_INSERT_TEXT: { - m_mode = MODE_DRAG_INSERT_TEXT; + case WorkspaceMode::MODE_INSERT_TEXT: { + m_mode = WorkspaceMode::MODE_DRAG_INSERT_TEXT; } break; - case MODE_PASTE: { - m_mode = MODE_DRAG_PASTE; + case WorkspaceMode::MODE_PASTE: { + m_mode = WorkspaceMode::MODE_DRAG_PASTE; } break; default: { - m_mode = MODE_DRAG; + m_mode = WorkspaceMode::MODE_DRAG; } break; } m_camera->StartTranslation(m_camera->ScreenToWorld(event.GetPosition())); @@ -629,22 +629,22 @@ void Workspace::OnMiddleDown(wxMouseEvent& event) void Workspace::OnMiddleUp(wxMouseEvent& event) { switch(m_mode) { - case MODE_DRAG_INSERT: { - m_mode = MODE_INSERT; + case WorkspaceMode::MODE_DRAG_INSERT: { + m_mode = WorkspaceMode::MODE_INSERT; } break; - case MODE_DRAG_INSERT_TEXT: { - m_mode = MODE_INSERT_TEXT; + case WorkspaceMode::MODE_DRAG_INSERT_TEXT: { + m_mode = WorkspaceMode::MODE_INSERT_TEXT; } break; - case MODE_DRAG_PASTE: { - m_mode = MODE_PASTE; + case WorkspaceMode::MODE_DRAG_PASTE: { + m_mode = WorkspaceMode::MODE_PASTE; } break; - case MODE_INSERT: - case MODE_INSERT_TEXT: - case MODE_PASTE: { + case WorkspaceMode::MODE_INSERT: + case WorkspaceMode::MODE_INSERT_TEXT: + case WorkspaceMode::MODE_PASTE: { // Does nothing. } break; default: { - m_mode = MODE_EDIT; + m_mode = WorkspaceMode::MODE_EDIT; } break; } UpdateStatusBar(); @@ -665,20 +665,20 @@ void Workspace::OnScroll(wxMouseEvent& event) void Workspace::OnKeyDown(wxKeyEvent& event) { bool insertingElement = false; - if(m_mode == MODE_INSERT || m_mode == MODE_INSERT_TEXT) insertingElement = true; + if(m_mode == WorkspaceMode::MODE_INSERT || m_mode == WorkspaceMode::MODE_INSERT_TEXT) insertingElement = true; char key = event.GetUnicodeKey(); if(key != WXK_NONE) { switch(key) { case WXK_ESCAPE: // Cancel operations. { - if(m_mode == MODE_INSERT) { + if(m_mode == WorkspaceMode::MODE_INSERT) { m_elementList.pop_back(); // Removes the last element being inserted. - m_mode = MODE_EDIT; + m_mode = WorkspaceMode::MODE_EDIT; Redraw(); - } else if(m_mode == MODE_INSERT_TEXT) { + } else if(m_mode == WorkspaceMode::MODE_INSERT_TEXT) { m_textList.pop_back(); - m_mode = MODE_EDIT; + m_mode = WorkspaceMode::MODE_EDIT; Redraw(); } } break; @@ -690,7 +690,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) if(!insertingElement) { Text* newBus = new Text(m_camera->ScreenToWorld(event.GetPosition())); m_textList.push_back(newBus); - m_mode = MODE_INSERT_TEXT; + m_mode = WorkspaceMode::MODE_INSERT_TEXT; m_statusBar->SetStatusText(_("Insert Text: Click to insert, ESC to cancel.")); Redraw(); } @@ -709,7 +709,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) wxString::Format(_("Bus %d"), GetElementNumber(ID_BUS))); IncrementElementNumber(ID_BUS); m_elementList.push_back(newBus); - m_mode = MODE_INSERT; + m_mode = WorkspaceMode::MODE_INSERT; m_statusBar->SetStatusText(_("Insert Bus: Click to insert, ESC to cancel.")); Redraw(); } @@ -720,13 +720,13 @@ void Workspace::OnKeyDown(wxKeyEvent& event) Load* newLoad = new Load(wxString::Format(_("Load %d"), GetElementNumber(ID_LOAD))); IncrementElementNumber(ID_LOAD); m_elementList.push_back(newLoad); - m_mode = MODE_INSERT; + m_mode = WorkspaceMode::MODE_INSERT; m_statusBar->SetStatusText(_("Insert Load: Click on a buses, ESC to cancel.")); } else if(!event.ControlDown() && !event.ShiftDown()) { // Insert a power line. Line* newLine = new Line(wxString::Format(_("Line %d"), GetElementNumber(ID_LINE))); IncrementElementNumber(ID_LINE); m_elementList.push_back(newLine); - m_mode = MODE_INSERT; + m_mode = WorkspaceMode::MODE_INSERT; m_statusBar->SetStatusText(_("Insert Line: Click on two buses, ESC to cancel.")); } Redraw(); @@ -740,7 +740,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) new Transformer(wxString::Format(_("Transformer %d"), GetElementNumber(ID_TRANSFORMER))); IncrementElementNumber(ID_TRANSFORMER); m_elementList.push_back(newTransformer); - m_mode = MODE_INSERT; + m_mode = WorkspaceMode::MODE_INSERT; m_statusBar->SetStatusText(_("Insert Transformer: Click on two buses, ESC to cancel.")); Redraw(); } @@ -752,7 +752,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) new SyncGenerator(wxString::Format(_("Generator %d"), GetElementNumber(ID_SYNCGENERATOR))); IncrementElementNumber(ID_SYNCGENERATOR); m_elementList.push_back(newGenerator); - m_mode = MODE_INSERT; + m_mode = WorkspaceMode::MODE_INSERT; m_statusBar->SetStatusText(_("Insert Generator: Click on a buses, ESC to cancel.")); Redraw(); } @@ -764,7 +764,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) new Inductor(wxString::Format(_("Inductor %d"), GetElementNumber(ID_INDUCTOR))); IncrementElementNumber(ID_INDUCTOR); m_elementList.push_back(newInductor); - m_mode = MODE_INSERT; + m_mode = WorkspaceMode::MODE_INSERT; m_statusBar->SetStatusText(_("Insert Inductor: Click on a buses, ESC to cancel.")); } else // Insert an induction motor. { @@ -772,7 +772,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) new IndMotor(wxString::Format(_("Induction motor %d"), GetElementNumber(ID_INDMOTOR))); IncrementElementNumber(ID_INDMOTOR); m_elementList.push_back(newIndMotor); - m_mode = MODE_INSERT; + m_mode = WorkspaceMode::MODE_INSERT; m_statusBar->SetStatusText(_("Insert Induction Motor: Click on a buses, ESC to cancel.")); } Redraw(); @@ -785,7 +785,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) new SyncMotor(wxString::Format(_("Synchronous condenser %d"), GetElementNumber(ID_SYNCMOTOR))); IncrementElementNumber(ID_SYNCMOTOR); m_elementList.push_back(newSyncCondenser); - m_mode = MODE_INSERT; + m_mode = WorkspaceMode::MODE_INSERT; m_statusBar->SetStatusText(_("Insert Synchronous Condenser: Click on a buses, ESC to cancel.")); Redraw(); } @@ -797,7 +797,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) new Capacitor(wxString::Format(_("Capacitor %d"), GetElementNumber(ID_CAPACITOR))); IncrementElementNumber(ID_CAPACITOR); m_elementList.push_back(newCapacitor); - m_mode = MODE_INSERT; + m_mode = WorkspaceMode::MODE_INSERT; m_statusBar->SetStatusText(_("Insert Capacitor: Click on a buses, ESC to cancel.")); Redraw(); } else if(event.GetModifiers() == wxMOD_CONTROL) { // Copy. @@ -812,7 +812,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event) wxString::Format(_("Harmonic Current %d"), GetElementNumber(ID_HARMCURRENT))); IncrementElementNumber(ID_HARMCURRENT); m_elementList.push_back(newHarmCurrent); - m_mode = MODE_INSERT; + m_mode = WorkspaceMode::MODE_INSERT; m_statusBar->SetStatusText( _("Insert Harmonic Current Source: Click on a buses, ESC to cancel.")); } @@ -836,27 +836,27 @@ void Workspace::OnKeyDown(wxKeyEvent& event) void Workspace::UpdateStatusBar() { switch(m_mode) { - case MODE_DRAG: { + case WorkspaceMode::MODE_DRAG: { m_statusBar->SetStatusText(_("MODE: DRAG"), 1); } break; - case MODE_PASTE: - case MODE_DRAG_PASTE: { + case WorkspaceMode::MODE_PASTE: + case WorkspaceMode::MODE_DRAG_PASTE: { m_statusBar->SetStatusText(_("MODE: PASTE"), 1); } - case MODE_INSERT: - case MODE_INSERT_TEXT: - case MODE_DRAG_INSERT: - case MODE_DRAG_INSERT_TEXT: { + case WorkspaceMode::MODE_INSERT: + case WorkspaceMode::MODE_INSERT_TEXT: + case WorkspaceMode::MODE_DRAG_INSERT: + case WorkspaceMode::MODE_DRAG_INSERT_TEXT: { m_statusBar->SetStatusText(_("MODE: INSERT"), 1); } break; - case MODE_MOVE_ELEMENT: - case MODE_MOVE_PICKBOX: - case MODE_MOVE_NODE: - case MODE_SELECTION_RECT: - case MODE_EDIT: { + case WorkspaceMode::MODE_MOVE_ELEMENT: + case WorkspaceMode::MODE_MOVE_PICKBOX: + case WorkspaceMode::MODE_MOVE_NODE: + case WorkspaceMode::MODE_SELECTION_RECT: + case WorkspaceMode::MODE_EDIT: { m_statusBar->SetStatusText(wxT("")); m_statusBar->SetStatusText(_("MODE: EDIT"), 1); } break; @@ -1131,9 +1131,9 @@ bool Workspace::RunPowerFlow() { auto simProp = m_properties->GetSimulationPropertiesData(); double basePower = simProp.basePower; - if(simProp.basePowerUnit == UNIT_MVA) + if(simProp.basePowerUnit == ElectricalUnit::UNIT_MVA) basePower *= 1e6; - else if(simProp.basePowerUnit == UNIT_kVA) + else if(simProp.basePowerUnit == ElectricalUnit::UNIT_kVA) basePower *= 1e3; PowerFlow pf(GetElementList()); bool result = false; @@ -1172,9 +1172,9 @@ bool Workspace::UpdateTextElements() { bool isTexturesOK = true; double basePower = m_properties->GetSimulationPropertiesData().basePower; - if(m_properties->GetSimulationPropertiesData().basePowerUnit == UNIT_kVA) + if(m_properties->GetSimulationPropertiesData().basePowerUnit == ElectricalUnit::UNIT_kVA) basePower *= 1e3; - else if(m_properties->GetSimulationPropertiesData().basePowerUnit == UNIT_MVA) + else if(m_properties->GetSimulationPropertiesData().basePowerUnit == ElectricalUnit::UNIT_MVA) basePower *= 1e6; for(auto it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) { Text* text = *it; @@ -1334,7 +1334,7 @@ bool Workspace::Paste() } UpdateElementsID(); - m_mode = MODE_PASTE; + m_mode = WorkspaceMode::MODE_PASTE; m_statusBar->SetStatusText(_("Click to paste.")); UpdateStatusBar(); Redraw(); @@ -1373,7 +1373,7 @@ void Workspace::OnTimer(wxTimerEvent& event) m_tipWindow->Close(); m_tipWindow = NULL; } - if(m_mode == MODE_EDIT) { + if(m_mode == WorkspaceMode::MODE_EDIT) { for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) { Element* element = *it; if(element->Contains(m_camera->GetMousePosition())) { @@ -1497,7 +1497,7 @@ bool Workspace::RunStability() ElementPlotData plotData; plotData.SetName(_("Simulation parameters")); - plotData.SetCurveType(ElementPlotData::CT_TEST); + plotData.SetCurveType(ElementPlotData::CurveType::CT_TEST); plotData.AddData(stability.GetIterationVector(), _("Iterations number")); plotDataList.push_back(plotData); @@ -1547,9 +1547,9 @@ bool Workspace::RunHarmonicDistortion() { auto simProp = m_properties->GetSimulationPropertiesData(); double basePower = simProp.basePower; - if(simProp.basePowerUnit == UNIT_MVA) + if(simProp.basePowerUnit == ElectricalUnit::UNIT_MVA) basePower *= 1e6; - else if(simProp.basePowerUnit == UNIT_kVA) + else if(simProp.basePowerUnit == ElectricalUnit::UNIT_kVA) basePower *= 1e3; if(!RunPowerFlow()) return false; PowerQuality pq(GetElementList()); @@ -1584,9 +1584,9 @@ bool Workspace::RunFrequencyResponse() auto simProp = m_properties->GetSimulationPropertiesData(); double basePower = simProp.basePower; - if(simProp.basePowerUnit == UNIT_MVA) + if(simProp.basePowerUnit == ElectricalUnit::UNIT_MVA) basePower *= 1e6; - else if(simProp.basePowerUnit == UNIT_kVA) + else if(simProp.basePowerUnit == ElectricalUnit::UNIT_kVA) basePower *= 1e3; PowerQuality pq(GetElementList()); bool result = pq.CalculateFrequencyResponse(simProp.stabilityFrequency, data.initFreq, data.finalFreq, @@ -1600,7 +1600,7 @@ bool Workspace::RunFrequencyResponse() for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) { PowerElement* element = *it; ElementPlotData plotData; - if(element->GetPlotData(plotData, FREQRESPONSE)) plotDataList.push_back(plotData); + if(element->GetPlotData(plotData, PlotStudy::FREQRESPONSE)) plotDataList.push_back(plotData); } ChartView* cView = new ChartView(this, plotDataList, pq.GetFrequencies()); diff --git a/Project/Workspace.h b/Project/Workspace.h index b397db9..deac1e4 100644 --- a/Project/Workspace.h +++ b/Project/Workspace.h @@ -20,7 +20,7 @@ #ifdef _MSC_VER #include <windows.h> -#endif +#endif // _MSC_VER #include <GL/gl.h> #include <GL/glu.h> @@ -90,7 +90,7 @@ enum ElementID { class Workspace : public WorkspaceBase { public: - enum WorkspaceMode { + enum class WorkspaceMode : int { MODE_EDIT = 0, MODE_MOVE_ELEMENT, MODE_MOVE_PICKBOX, @@ -182,7 +182,7 @@ protected: wxTipWindow* m_tipWindow = NULL; wxString m_name; - WorkspaceMode m_mode = MODE_EDIT; + WorkspaceMode m_mode = WorkspaceMode::MODE_EDIT; std::vector<PowerElement*> m_elementList; int m_elementNumber[NUM_ELEMENTS]; diff --git a/Project/main.cpp b/Project/main.cpp index c4b0dc6..a00645c 100644 --- a/Project/main.cpp +++ b/Project/main.cpp @@ -1,3 +1,7 @@ +#ifdef __INTELLISENSE__ +#pragma diag_suppress 102 +#endif + #include <wx/app.h> #include <wx/cmdline.h> #include <wx/event.h> |