summaryrefslogtreecommitdiffstats
path: root/Project/Line.h
diff options
context:
space:
mode:
Diffstat (limited to 'Project/Line.h')
-rw-r--r--Project/Line.h62
1 files changed, 47 insertions, 15 deletions
diff --git a/Project/Line.h b/Project/Line.h
index 08a2b36..1a9aa2b 100644
--- a/Project/Line.h
+++ b/Project/Line.h
@@ -1,36 +1,68 @@
#ifndef LINE_H
#define LINE_H
-#include <wx/msgdlg.h>
+#include "LineForm.h"
+#include "Branch.h"
-#include "Element.h"
+struct LineElectricalData {
+ // General
+ wxString name = "";
+ double nominalVoltage = 138.0;
+ ElectricalUnit nominalVoltageUnit = UNIT_kV;
+ double nominalPower = 100.0;
+ ElectricalUnit nominalPowerUnit = UNIT_MVA;
+ double resistance = 0.0;
+ ElectricalUnit resistanceUnit = UNIT_PU;
+ double indReactance = 1.0;
+ ElectricalUnit indReactanceUnit = UNIT_PU;
+ double capSusceptance = 0.0;
+ ElectricalUnit capSusceptanceUnit = UNIT_PU;
+ double lineSize = 100.0;
+ bool useLinePower = false;
-class Line : public Element
+ // Power flow (p.u.)
+ std::complex<double> current[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};
+ std::complex<double> powerFlow[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};
+
+ // Fault
+ double zeroResistance = 0.0;
+ double zeroIndReactance = 1.0;
+ double zeroCapSusceptance = 0.0;
+};
+
+class Line : public Branch
{
public:
Line();
+ Line(wxString name);
~Line();
virtual bool Contains(wxPoint2DDouble position) const;
virtual void Draw(wxPoint2DDouble translation, double scale) const;
- virtual void Move(wxPoint2DDouble position) {}
- virtual void StartMove(wxPoint2DDouble position);
+ virtual void Move(wxPoint2DDouble position);
+ virtual void StartMove(wxPoint2DDouble position);
virtual void MoveNode(Element* parent, wxPoint2DDouble position);
- virtual wxCursor GetBestPickboxCursor() const;
+ virtual bool SetNodeParent(Element* parent);
+ virtual wxCursor GetBestPickboxCursor() const { return wxCURSOR_SIZING; }
virtual bool AddParent(Element* parent, wxPoint2DDouble position);
virtual bool Intersects(wxRect2DDouble rect) const;
virtual void MovePickbox(wxPoint2DDouble position);
virtual bool PickboxContains(wxPoint2DDouble position);
- virtual void Rotate() {}
- virtual void RotateNode(Element* parent);
virtual void AddPoint(wxPoint2DDouble point);
- virtual bool GetContextMenu(wxMenu& menu);
+ virtual bool GetContextMenu(wxMenu& menu);
+ virtual void RemoveNode(wxPoint2DDouble point);
+ virtual void AddNode(wxPoint2DDouble point);
+ virtual void RotateNode(Element* parent, bool clockwise = true);
+ virtual void CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom) const;
+ virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection);
+ virtual bool ShowForm(wxWindow* parent, Element* element);
+ virtual LineElectricalData GetElectricalData() const { return m_electricaData; }
+ virtual void SetElectricalData(LineElectricalData electricalData) { m_electricaData = electricalData; }
+ virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);
-protected:
- void UpdateSwitchesPosition();
- double PointToLineDistance(wxPoint2DDouble point) const;
- std::vector<wxPoint2DDouble> m_pointList;
- bool m_inserted = false;
- std::vector<wxPoint2DDouble> m_movePts;
+ protected:
+ double PointToLineDistance(wxPoint2DDouble point, int* segmentNumber = NULL) const;
+ void UpdatePowerFlowArrowsPosition();
+ LineElectricalData m_electricaData;
};
#endif // LINE_H