summaryrefslogtreecommitdiffstats
path: root/Project
diff options
context:
space:
mode:
Diffstat (limited to 'Project')
-rw-r--r--Project/Bus.h14
-rw-r--r--Project/Element.h179
-rw-r--r--Project/ElementForm.cpp3
-rw-r--r--Project/ElementForm.h1
-rw-r--r--Project/ElementForm.wxcp11
-rw-r--r--Project/Line.cpp71
-rw-r--r--Project/Line.h2
-rw-r--r--Project/Project.mk78
-rw-r--r--Project/Release/Bus.cpp.obin40981 -> 41729 bytes
-rw-r--r--Project/Release/BusForm.cpp.obin113789 -> 119004 bytes
-rw-r--r--Project/Release/Capacitor.cpp.obin43196 -> 43196 bytes
-rw-r--r--Project/Release/ElectricCalculation.cpp.obin67499 -> 74373 bytes
-rw-r--r--Project/Release/Element.cpp.obin155954 -> 155853 bytes
-rw-r--r--Project/Release/ElementForm.cpp.obin565045 -> 565564 bytes
-rw-r--r--Project/Release/GeneratorStabForm.cpp.obin103823 -> 104202 bytes
-rw-r--r--Project/Release/IndMotor.cpp.obin36128 -> 36128 bytes
-rw-r--r--Project/Release/IndMotorForm.cpp.obin87201 -> 87116 bytes
-rw-r--r--Project/Release/Inductor.cpp.obin43101 -> 43101 bytes
-rw-r--r--Project/Release/Line.cpp.obin160921 -> 163124 bytes
-rw-r--r--Project/Release/LineForm.cpp.obin100541 -> 101112 bytes
-rw-r--r--Project/Release/Load.cpp.obin41732 -> 41732 bytes
-rw-r--r--Project/Release/LoadForm.cpp.obin86826 -> 86741 bytes
-rw-r--r--Project/Release/MainFrame.cpp.obin141354 -> 141269 bytes
-rw-r--r--Project/Release/MainFrameBase.cpp.obin238256 -> 238171 bytes
-rw-r--r--Project/Release/PSP-UFU.exebin4210593 -> 4272500 bytes
-rw-r--r--Project/Release/PowerFlow.cpp.obin42558 -> 43132 bytes
-rw-r--r--Project/Release/ReactiveShuntElementForm.cpp.obin93200 -> 93115 bytes
-rw-r--r--Project/Release/SwitchingForm.cpp.obin107131 -> 107046 bytes
-rw-r--r--Project/Release/SyncGenerator.cpp.obin41367 -> 41232 bytes
-rw-r--r--Project/Release/SyncMachineForm.cpp.obin123358 -> 123729 bytes
-rw-r--r--Project/Release/SyncMotor.cpp.obin37518 -> 37518 bytes
-rw-r--r--Project/Release/Text.cpp.obin49809 -> 100370 bytes
-rw-r--r--Project/Release/TextForm.cpp.obin136935 -> 165817 bytes
-rw-r--r--Project/Release/Transformer.cpp.obin49434 -> 49898 bytes
-rw-r--r--Project/Release/TransformerForm.cpp.obin108549 -> 108670 bytes
-rw-r--r--Project/Release/Workspace.cpp.obin205498 -> 210077 bytes
-rw-r--r--Project/Release/main.cpp.obin29146 -> 29146 bytes
-rw-r--r--Project/Release/wxmsw310u_gcc_64x.dllbin27581981 -> 27079299 bytes
-rw-r--r--Project/Release/wxmsw310u_gl_gcc_64x.dllbin2634306 -> 2634306 bytes
-rw-r--r--Project/SyncGenerator.cpp8
-rw-r--r--Project/SyncGenerator.h23
-rw-r--r--Project/Text.cpp820
-rw-r--r--Project/Text.h9
-rw-r--r--Project/TextForm.cpp685
-rw-r--r--Project/TextForm.h16
-rw-r--r--Project/Transformer.cpp165
-rw-r--r--Project/Transformer.h2
-rw-r--r--Project/TransformerForm.cpp2
-rw-r--r--Project/Workspace.cpp108
-rw-r--r--Project/Workspace.h2
50 files changed, 1837 insertions, 362 deletions
diff --git a/Project/Bus.h b/Project/Bus.h
index 836d2f7..470d4cb 100644
--- a/Project/Bus.h
+++ b/Project/Bus.h
@@ -11,7 +11,7 @@ struct BusElectricalData {
ElectricalUnit nominalVoltageUnit = 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 (UNIT_V or UNIT_kV).
bool slackBus = false;
// Power flow (p.u.)
@@ -21,8 +21,14 @@ struct BusElectricalData {
bool hasFault = false;
FaultData faultType = FAULT_THREEPHASE;
FaultData faultLocation = FAULT_LINE_A;
+ // p.u. fault data
double faultResistance = 0.0;
double faultReactance = 0.0;
+ std::complex<double> faultCurrent[3] = { std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),
+ std::complex<double>(0.0, 0.0) };
+ std::complex<double> faultVoltage[3] = { std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),
+ std::complex<double>(0.0, 0.0) };
+ double scPower = 0.0;
// Stability
bool plotBus = false;
@@ -35,7 +41,7 @@ struct BusElectricalData {
class Bus : public Element
{
- public:
+public:
Bus();
Bus(wxPoint2DDouble position);
Bus(wxPoint2DDouble position, wxString name);
@@ -53,8 +59,8 @@ class Bus : public Element
virtual void SetElectricalData(BusElectricalData electricalData) { m_electricalData = electricalData; }
virtual bool ShowForm(wxWindow* parent, Element* element);
- protected:
+protected:
BusElectricalData m_electricalData;
};
-#endif // BUS_H
+#endif // BUS_H
diff --git a/Project/Element.h b/Project/Element.h
index 0502e62..f5a2edb 100644
--- a/Project/Element.h
+++ b/Project/Element.h
@@ -11,8 +11,7 @@
#include <wx/log.h>
-enum PickboxID
-{
+enum PickboxID {
ID_PB_NONE = 0,
ID_PB_RIGHT,
ID_PB_LEFT,
@@ -22,8 +21,7 @@ enum PickboxID
ID_PB_LEFT_TOP
};
-enum ContextMenuID
-{
+enum ContextMenuID {
ID_EDIT_BUS = 0,
ID_EDIT_LINE,
ID_EDIT_TRANSFORMER,
@@ -38,81 +36,67 @@ enum ContextMenuID
ID_LINE_REMOVE_NODE,
ID_ROTATE_CLOCK,
- ID_ROTATE_COUNTERCLOCK,
+ ID_ROTATE_COUNTERCLOCK,
ID_DELETE
};
-enum ElectricalUnit
-{
- UNIT_PU = 0,
- UNIT_V,
- UNIT_kV,
- UNIT_A,
- UNIT_kA,
- UNIT_W,
- UNIT_kW,
- UNIT_MW,
- UNIT_VA,
- UNIT_kVA,
- UNIT_MVA,
- UNIT_VAr,
- UNIT_kVAr,
- UNIT_MVAr,
- UNIT_OHM,
- UNIT_OHM_km,
- UNIT_S,
- UNIT_S_km,
+enum ElectricalUnit {
+ UNIT_PU = 0,
+ UNIT_V,
+ UNIT_kV,
+ UNIT_A,
+ UNIT_kA,
+ UNIT_W,
+ UNIT_kW,
+ UNIT_MW,
+ UNIT_VA,
+ UNIT_kVA,
+ UNIT_MVA,
+ UNIT_VAr,
+ UNIT_kVAr,
+ UNIT_MVAr,
+ UNIT_OHM,
+ UNIT_OHM_km,
+ UNIT_S,
+ UNIT_S_km,
UNIT_DEGREE,
UNIT_RADIAN
};
-enum FaultData
-{
- FAULT_THREEPHASE = 0,
- FAULT_2LINE,
- FAULT_2LINE_GROUND,
- FAULT_LINE_GROUND,
- FAULT_LINE_A,
- FAULT_LINE_B,
- FAULT_LINE_C
+enum FaultData {
+ FAULT_THREEPHASE = 0,
+ FAULT_2LINE,
+ FAULT_2LINE_GROUND,
+ FAULT_LINE_GROUND,
+ FAULT_LINE_A,
+ FAULT_LINE_B,
+ FAULT_LINE_C
};
-enum SwitchingType
-{
- SW_INSERT = 0,
- SW_REMOVE
-};
+enum SwitchingType { SW_INSERT = 0, SW_REMOVE };
-enum PowerFlowDirection
-{
- PF_NONE = 0,
- PF_TO_BUS,
- PF_TO_ELEMENT,
- PF_BUS1_TO_BUS2,
- PF_BUS2_TO_BUS1
-};
+enum PowerFlowDirection { PF_NONE = 0, PF_TO_BUS, PF_TO_ELEMENT, PF_BUS1_TO_BUS2, PF_BUS2_TO_BUS1 };
-struct SwitchingData
-{
+struct SwitchingData {
std::vector<SwitchingType> swType;
std::vector<double> swTime;
-};
+};
class Element
{
- public:
+public:
Element();
virtual ~Element();
// Setters
- void SetDragging(bool dragging = true) { this->m_dragging = dragging; }
- void SetHeight(double height) { this->m_height = height; }
+ void SetDragging(bool dragging = true) { m_dragging = dragging; }
+ void SetHeight(double height) { m_height = height; }
void SetPosition(const wxPoint2DDouble position);
- void SetSelected(bool selected = true) { this->m_selected = selected; }
- void SetWidth(double width) { this->m_width = width; }
- void SetAngle(double angle) { this->m_angle = angle; }
- void ShowPickbox(bool showPickbox = true) { this->m_showPickbox = showPickbox; }
- void SetBorderSize(double borderSize) { this->m_borderSize = borderSize; }
+ void SetSelected(bool selected = true) { m_selected = selected; }
+ void SetWidth(double width) { m_width = width; }
+ void SetAngle(double angle) { m_angle = angle; }
+ void ShowPickbox(bool showPickbox = true) { m_showPickbox = showPickbox; }
+ void SetBorderSize(double borderSize) { m_borderSize = borderSize; }
void SetOnline(bool online = true);
// Getters
wxRect2DDouble GetRect() const { return m_rect; }
@@ -142,13 +126,12 @@ class Element
virtual bool SetNodeParent(Element* parent) { return false; }
virtual void RemoveParent(Element* parent) {}
virtual void RotateNode(Element* parent, bool clockwise = true) {}
- virtual wxPoint2DDouble GetSwitchPoint(Element* parent,
- wxPoint2DDouble parentPoint,
- wxPoint2DDouble secondPoint) const;
+ virtual wxPoint2DDouble
+ GetSwitchPoint(Element* parent, wxPoint2DDouble parentPoint, wxPoint2DDouble secondPoint) const;
virtual bool SwitchesContains(wxPoint2DDouble position) const;
virtual void UpdateSwitches();
virtual void DrawSwitches() const;
-
+
virtual void CalculatePowerFlowPts(std::vector<wxPoint2DDouble> edges);
virtual void DrawPowerFlowPts() const;
@@ -157,27 +140,23 @@ class Element
virtual wxCursor GetBestPickboxCursor() const { return wxCURSOR_ARROW; }
virtual void ResetPickboxes() { m_activePickboxID = ID_PB_NONE; }
virtual void ResetNodes() { m_activeNodeID = 0; }
- virtual wxPoint2DDouble WorldToScreen(wxPoint2DDouble translation,
- double scale,
- double offsetX = 0.0,
- double offsetY = 0.0) const;
+ virtual wxPoint2DDouble
+ WorldToScreen(wxPoint2DDouble translation, double scale, double offsetX = 0.0, double offsetY = 0.0) const;
virtual wxPoint2DDouble WorldToScreen(wxPoint2DDouble position,
- wxPoint2DDouble translation,
- double scale,
- double offsetX = 0.0,
- double offsetY = 0.0) const;
- virtual bool RotatedRectanglesIntersects(wxRect2DDouble rect1,
- wxRect2DDouble rect2,
- double angle1,
- double angle2) const;
+ wxPoint2DDouble translation,
+ double scale,
+ double offsetX = 0.0,
+ double offsetY = 0.0) const;
+ virtual bool
+ RotatedRectanglesIntersects(wxRect2DDouble rect1, wxRect2DDouble rect2, double angle1, double angle2) const;
virtual void DrawCircle(wxPoint2DDouble position, double radius, int numSegments, GLenum mode = GL_LINE_LOOP) const;
virtual void DrawArc(wxPoint2DDouble position,
- double radius,
- double initAngle,
- double finalAngle,
- int numSegments,
- GLenum mode = GL_LINE_LOOP) const;
+ double radius,
+ double initAngle,
+ double finalAngle,
+ int numSegments,
+ GLenum mode = GL_LINE_LOOP) const;
virtual void DrawRectangle(wxPoint2DDouble position, double width, double height, GLenum mode = GL_QUADS) const;
virtual void DrawRectangle(wxPoint2DDouble* points, GLenum mode = GL_QUADS) const;
virtual void DrawTriangle(std::vector<wxPoint2DDouble> points, GLenum mode = GL_TRIANGLES) const;
@@ -189,27 +168,29 @@ class Element
virtual std::vector<Element*> GetParentList() const { return m_parentList; }
virtual wxPoint2DDouble GetMoveStartPosition() const { return m_moveStartPt; }
virtual wxPoint2DDouble GetMovePosition() const { return m_movePos; }
-
- virtual void CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom) const;
-
- virtual void GeneralMenuItens(wxMenu& menu);
-
- virtual bool ShowForm(wxWindow* parent, Element* element) { return false; }
-
- bool DoubleFromString(wxWindow* parent, wxString strValue, double& value, wxString errorMsg);
- bool IntFromString(wxWindow* parent, wxString strValue, int& value, wxString errorMsg);
-
- //Electrical only methods
- virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit) {}
+
+ virtual void CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom) const;
+
+ virtual void GeneralMenuItens(wxMenu& menu);
+
+ virtual bool ShowForm(wxWindow* parent, Element* element) { return false; }
+
+ bool DoubleFromString(wxWindow* parent, wxString strValue, double& value, wxString errorMsg);
+ bool IntFromString(wxWindow* parent, wxString strValue, int& value, wxString errorMsg);
+
+ // Electrical only methods
+ virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit)
+ {
+ }
virtual void SetSwitchingData(SwitchingData data) { m_swData = data; }
virtual SwitchingData GetSwitchingData() { return m_swData; }
virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection) { m_pfDirection = pfDirection; }
virtual PowerFlowDirection GetPowerFlowDirection() const { return m_pfDirection; }
-
- //Static methods
+
+ // Static methods
static wxString StringFromDouble(double value, int minDecimal = 1);
-
- protected:
+
+protected:
std::vector<Element*> m_parentList;
wxRect2DDouble m_rect;
@@ -222,8 +203,8 @@ class Element
double m_switchSize = 10.0;
std::vector<wxRect2DDouble> m_switchRect;
-
- std::vector< std::vector<wxPoint2DDouble> > m_powerFlowArrow;
+
+ std::vector<std::vector<wxPoint2DDouble> > m_powerFlowArrow;
PowerFlowDirection m_pfDirection = PF_NONE;
bool m_selected = false;
@@ -240,8 +221,8 @@ class Element
wxPoint2DDouble m_movePos;
bool m_online = true;
-
+
SwitchingData m_swData;
};
-#endif // ELEMENT_H
+#endif // ELEMENT_H
diff --git a/Project/ElementForm.cpp b/Project/ElementForm.cpp
index 89ef491..a8960d9 100644
--- a/Project/ElementForm.cpp
+++ b/Project/ElementForm.cpp
@@ -2623,7 +2623,6 @@ TextFormBase::TextFormBase(wxWindow* parent, wxWindowID id, const wxString& titl
m_choiceElementArr.Add(wxT("Synchronous compensator"));
m_choiceElementArr.Add(wxT("Induction motor"));
m_choiceElement = new wxChoice(m_panelGeneral, wxID_ANY, wxDefaultPosition, wxDLG_UNIT(m_panelGeneral, wxSize(-1,-1)), m_choiceElementArr, 0);
- m_choiceElement->SetSelection(0);
boxSizerLvl4_1->Add(m_choiceElement, 0, wxLEFT|wxRIGHT|wxBOTTOM|wxEXPAND, WXC_FROM_DIP(5));
@@ -2766,6 +2765,7 @@ TextFormBase::TextFormBase(wxWindow* parent, wxWindowID id, const wxString& titl
m_choiceTextType->Connect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnTypeChoiceSelected), NULL, this);
m_choiceTextFromBus->Connect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnFromBusChoiceSelected), NULL, this);
m_choiceTextToBus->Connect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnToBusChoiceSelected), NULL, this);
+ m_choiceTextUnit->Connect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnUnitChoiceSelected), NULL, this);
m_textCtrlDecimal->Connect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(TextFormBase::OnTextEnter), NULL, this);
m_buttonOK->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(TextFormBase::OnOKButtonClick), NULL, this);
m_ButtonCancel->Connect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(TextFormBase::OnCancelButtonClick), NULL, this);
@@ -2779,6 +2779,7 @@ TextFormBase::~TextFormBase()
m_choiceTextType->Disconnect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnTypeChoiceSelected), NULL, this);
m_choiceTextFromBus->Disconnect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnFromBusChoiceSelected), NULL, this);
m_choiceTextToBus->Disconnect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnToBusChoiceSelected), NULL, this);
+ m_choiceTextUnit->Disconnect(wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler(TextFormBase::OnUnitChoiceSelected), NULL, this);
m_textCtrlDecimal->Disconnect(wxEVT_COMMAND_TEXT_ENTER, wxCommandEventHandler(TextFormBase::OnTextEnter), NULL, this);
m_buttonOK->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(TextFormBase::OnOKButtonClick), NULL, this);
m_ButtonCancel->Disconnect(wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler(TextFormBase::OnCancelButtonClick), NULL, this);
diff --git a/Project/ElementForm.h b/Project/ElementForm.h
index 6645b96..9756bc8 100644
--- a/Project/ElementForm.h
+++ b/Project/ElementForm.h
@@ -741,6 +741,7 @@ protected:
virtual void OnTypeChoiceSelected(wxCommandEvent& event) { event.Skip(); }
virtual void OnFromBusChoiceSelected(wxCommandEvent& event) { event.Skip(); }
virtual void OnToBusChoiceSelected(wxCommandEvent& event) { event.Skip(); }
+ virtual void OnUnitChoiceSelected(wxCommandEvent& event) { event.Skip(); }
virtual void OnTextEnter(wxCommandEvent& event) { event.Skip(); }
virtual void OnOKButtonClick(wxCommandEvent& event) { event.Skip(); }
virtual void OnCancelButtonClick(wxCommandEvent& event) { event.Skip(); }
diff --git a/Project/ElementForm.wxcp b/Project/ElementForm.wxcp
index b61d5a0..5fd02f1 100644
--- a/Project/ElementForm.wxcp
+++ b/Project/ElementForm.wxcp
@@ -27776,7 +27776,7 @@
}, {
"type": "string",
"m_label": "Selection:",
- "m_value": "0"
+ "m_value": "-1"
}],
"m_events": [{
"m_eventName": "wxEVT_COMMAND_CHOICE_SELECTED",
@@ -28703,7 +28703,14 @@
"m_label": "Selection:",
"m_value": "0"
}],
- "m_events": [],
+ "m_events": [{
+ "m_eventName": "wxEVT_COMMAND_CHOICE_SELECTED",
+ "m_eventClass": "wxCommandEvent",
+ "m_eventHandler": "wxCommandEventHandler",
+ "m_functionNameAndSignature": "OnUnitChoiceSelected(wxCommandEvent& event)",
+ "m_description": "Process a wxEVT_COMMAND_CHOICE_SELECTED event, when an item on the list is selected.",
+ "m_noBody": false
+ }],
"m_children": []
}]
}]
diff --git a/Project/Line.cpp b/Project/Line.cpp
index b7b5ba7..ae5e0b3 100644
--- a/Project/Line.cpp
+++ b/Project/Line.cpp
@@ -1,7 +1,25 @@
#include "Line.h"
-Line::Line() : Branch() {}
-Line::Line(wxString name) : Branch() { m_electricaData.name = name; }
+Line::Line()
+ : Branch()
+{
+ for(int i = 0; i < 2; i++) {
+ for(int j = 0; j < 3; j++) {
+ m_electricaData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);
+ }
+ }
+}
+
+Line::Line(wxString name)
+ : Branch()
+{
+ for(int i = 0; i < 2; i++) {
+ for(int j = 0; j < 3; j++) {
+ m_electricaData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);
+ }
+ }
+ m_electricaData.name = name;
+}
Line::~Line() {}
bool Line::Contains(wxPoint2DDouble position) const
{
@@ -43,7 +61,7 @@ void Line::Draw(wxPoint2DDouble translation, double scale) const
glColor4d(0.2, 0.2, 0.2, 1.0);
DrawLine(pointList);
- if(m_inserted){
+ if(m_inserted) {
DrawSwitches();
DrawPowerFlowPts();
}
@@ -98,10 +116,10 @@ bool Line::AddParent(Element* parent, wxPoint2DDouble position)
m_position = position;
m_parentList.push_back(parent);
wxPoint2DDouble parentPt =
- parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
- parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
- parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
- m_pointList.push_back(parentPt); // First point
+ parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
+ parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
+ parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
+ m_pointList.push_back(parentPt); // First point
m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));
wxRect2DDouble genRect(0, 0, 0, 0);
@@ -118,19 +136,19 @@ bool Line::AddParent(Element* parent, wxPoint2DDouble position)
else if(parent != m_parentList[0]) {
Bus* parentBus = (Bus*)parent;
if(m_electricaData.nominalVoltage != parentBus->GetEletricalData().nominalVoltage ||
- m_electricaData.nominalVoltageUnit != parentBus->GetEletricalData().nominalVoltageUnit) {
+ m_electricaData.nominalVoltageUnit != parentBus->GetEletricalData().nominalVoltageUnit) {
wxMessageDialog msgDialog(NULL, _("Unable to connect two buses with different nominal voltages.\n"
"Use a transformer or edit the bus properties."),
- _("Error"), wxOK | wxCENTRE | wxICON_ERROR);
+ _("Error"), wxOK | wxCENTRE | wxICON_ERROR);
msgDialog.ShowModal();
return false;
}
m_parentList.push_back(parent);
wxPoint2DDouble parentPt =
- parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
- parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
- parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
+ parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
+ parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
+ parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
// Set first switch point.
wxPoint2DDouble secondPoint = parentPt;
@@ -142,7 +160,7 @@ bool Line::AddParent(Element* parent, wxPoint2DDouble position)
// Set the second switch point.
m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_pointList[m_pointList.size() - 1]));
- m_pointList.push_back(parentPt); // Last point.
+ m_pointList.push_back(parentPt); // Last point.
wxRect2DDouble genRect(0, 0, 0, 0);
m_switchRect.push_back(genRect);
@@ -237,7 +255,7 @@ void Line::MoveNode(Element* parent, wxPoint2DDouble position)
double Line::PointToLineDistance(wxPoint2DDouble point, int* segmentNumber) const
{
//[Ref] http://geomalgorithms.com/a02-_lines.html
- double distance = 100.0; // Big initial distance.
+ double distance = 100.0; // Big initial distance.
wxPoint2DDouble p0 = point;
for(int i = 1; i < (int)m_pointList.size() - 2; i++) {
@@ -349,12 +367,12 @@ bool Line::SetNodeParent(Element* parent)
wxRect2DDouble nodeRect(0, 0, 0, 0);
if(m_activeNodeID == 1) {
nodeRect = wxRect2DDouble(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,
- 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);
+ 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);
}
if(m_activeNodeID == 2) {
nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,
- m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,
- 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);
+ m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize, 10 + 2.0 * m_borderSize,
+ 10 + 2.0 * m_borderSize);
}
if(parent->Intersects(nodeRect)) {
@@ -365,10 +383,10 @@ bool Line::SetNodeParent(Element* parent)
m_electricaData.nominalVoltage = parentBus->GetEletricalData().nominalVoltage;
m_electricaData.nominalVoltageUnit = parentBus->GetEletricalData().nominalVoltageUnit;
} else if(m_electricaData.nominalVoltage != parentBus->GetEletricalData().nominalVoltage ||
- m_electricaData.nominalVoltageUnit != parentBus->GetEletricalData().nominalVoltageUnit) {
+ m_electricaData.nominalVoltageUnit != parentBus->GetEletricalData().nominalVoltageUnit) {
wxMessageDialog msgDialog(NULL, _("Unable to connect two buses with different nominal voltages.\n"
"Use a transformer or edit the bus properties."),
- _("Error"), wxOK | wxCENTRE | wxICON_ERROR);
+ _("Error"), wxOK | wxCENTRE | wxICON_ERROR);
msgDialog.ShowModal();
m_activeNodeID = 0;
return false;
@@ -385,8 +403,8 @@ bool Line::SetNodeParent(Element* parent)
// Centralize the node on bus.
wxPoint2DDouble parentPt = parent->RotateAtPosition(
- m_pointList[0], -parent->GetAngle()); // Rotate click to horizontal position.
- parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
+ m_pointList[0], -parent->GetAngle()); // Rotate click to horizontal position.
+ parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle());
m_pointList[0] = parentPt;
@@ -455,13 +473,10 @@ void Line::RotateNode(Element* parent, bool clockwise)
if(!clockwise) rotAngle = -m_rotationAngle;
if(parent == m_parentList[0]) {
- m_pointList[0] = parent->RotateAtPosition(m_pointList[0], rotAngle);
- }
- else if(parent == m_parentList[1])
- {
- m_pointList[m_pointList.size() - 1] =
- parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], rotAngle);
- }
+ m_pointList[0] = parent->RotateAtPosition(m_pointList[0], rotAngle);
+ } else if(parent == m_parentList[1]) {
+ m_pointList[m_pointList.size() - 1] = parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], rotAngle);
+ }
UpdateSwitchesPosition();
UpdatePowerFlowArrowsPosition();
}
diff --git a/Project/Line.h b/Project/Line.h
index 1a9aa2b..012f68d 100644
--- a/Project/Line.h
+++ b/Project/Line.h
@@ -28,6 +28,8 @@ struct LineElectricalData {
double zeroResistance = 0.0;
double zeroIndReactance = 1.0;
double zeroCapSusceptance = 0.0;
+ // p.u. fault data
+ std::complex<double> faultCurrent[2][3];
};
class Line : public Branch
diff --git a/Project/Project.mk b/Project/Project.mk
index 62bac5f..83cac59 100644
--- a/Project/Project.mk
+++ b/Project/Project.mk
@@ -13,7 +13,7 @@ CurrentFileName :=
CurrentFilePath :=
CurrentFileFullPath :=
User :=Thales
-Date :=01/12/2016
+Date :=09/12/2016
CodeLitePath :="C:/Program Files/CodeLite"
LinkerName :=C:/TDM-GCC-64/bin/g++.exe
SharedObjectLinkerName :=C:/TDM-GCC-64/bin/g++.exe -shared -fPIC
@@ -104,7 +104,7 @@ $(IntermediateDirectory)/main.cpp$(DependSuffix): main.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/main.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/main.cpp$(DependSuffix) -MM main.cpp
$(IntermediateDirectory)/main.cpp$(PreprocessSuffix): main.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/main.cpp$(PreprocessSuffix)main.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/main.cpp$(PreprocessSuffix) main.cpp
$(IntermediateDirectory)/win_resources.rc$(ObjectSuffix): win_resources.rc
$(RcCompilerName) -i "C:/Users/Thales/Documents/GitHub/PSP/Project/win_resources.rc" $(RcCmpOptions) $(ObjectSwitch)$(IntermediateDirectory)/win_resources.rc$(ObjectSuffix) $(RcIncludePath)
@@ -114,7 +114,7 @@ $(IntermediateDirectory)/Text.cpp$(DependSuffix): Text.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Text.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Text.cpp$(DependSuffix) -MM Text.cpp
$(IntermediateDirectory)/Text.cpp$(PreprocessSuffix): Text.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Text.cpp$(PreprocessSuffix)Text.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Text.cpp$(PreprocessSuffix) Text.cpp
$(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix): ArtMetro.cpp $(IntermediateDirectory)/ArtMetro.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ArtMetro.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) $(IncludePath)
@@ -122,7 +122,7 @@ $(IntermediateDirectory)/ArtMetro.cpp$(DependSuffix): ArtMetro.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/ArtMetro.cpp$(DependSuffix) -MM ArtMetro.cpp
$(IntermediateDirectory)/ArtMetro.cpp$(PreprocessSuffix): ArtMetro.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ArtMetro.cpp$(PreprocessSuffix)ArtMetro.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ArtMetro.cpp$(PreprocessSuffix) ArtMetro.cpp
$(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix): wxGLString.cpp $(IntermediateDirectory)/wxGLString.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/wxGLString.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix) $(IncludePath)
@@ -130,7 +130,7 @@ $(IntermediateDirectory)/wxGLString.cpp$(DependSuffix): wxGLString.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/wxGLString.cpp$(DependSuffix) -MM wxGLString.cpp
$(IntermediateDirectory)/wxGLString.cpp$(PreprocessSuffix): wxGLString.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/wxGLString.cpp$(PreprocessSuffix)wxGLString.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/wxGLString.cpp$(PreprocessSuffix) wxGLString.cpp
$(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix): MainFrame.cpp $(IntermediateDirectory)/MainFrame.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/MainFrame.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) $(IncludePath)
@@ -138,7 +138,7 @@ $(IntermediateDirectory)/MainFrame.cpp$(DependSuffix): MainFrame.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/MainFrame.cpp$(DependSuffix) -MM MainFrame.cpp
$(IntermediateDirectory)/MainFrame.cpp$(PreprocessSuffix): MainFrame.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/MainFrame.cpp$(PreprocessSuffix)MainFrame.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/MainFrame.cpp$(PreprocessSuffix) MainFrame.cpp
$(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix): Workspace.cpp $(IntermediateDirectory)/Workspace.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Workspace.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix) $(IncludePath)
@@ -146,7 +146,7 @@ $(IntermediateDirectory)/Workspace.cpp$(DependSuffix): Workspace.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Workspace.cpp$(DependSuffix) -MM Workspace.cpp
$(IntermediateDirectory)/Workspace.cpp$(PreprocessSuffix): Workspace.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Workspace.cpp$(PreprocessSuffix)Workspace.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Workspace.cpp$(PreprocessSuffix) Workspace.cpp
$(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix): MainFrameBitmaps.cpp $(IntermediateDirectory)/MainFrameBitmaps.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/MainFrameBitmaps.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix) $(IncludePath)
@@ -154,7 +154,7 @@ $(IntermediateDirectory)/MainFrameBitmaps.cpp$(DependSuffix): MainFrameBitmaps.c
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/MainFrameBitmaps.cpp$(DependSuffix) -MM MainFrameBitmaps.cpp
$(IntermediateDirectory)/MainFrameBitmaps.cpp$(PreprocessSuffix): MainFrameBitmaps.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/MainFrameBitmaps.cpp$(PreprocessSuffix)MainFrameBitmaps.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/MainFrameBitmaps.cpp$(PreprocessSuffix) MainFrameBitmaps.cpp
$(IntermediateDirectory)/WorkspaceBitmaps.cpp$(ObjectSuffix): WorkspaceBitmaps.cpp $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/WorkspaceBitmaps.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/WorkspaceBitmaps.cpp$(ObjectSuffix) $(IncludePath)
@@ -162,7 +162,7 @@ $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(DependSuffix): WorkspaceBitmaps.c
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/WorkspaceBitmaps.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/WorkspaceBitmaps.cpp$(DependSuffix) -MM WorkspaceBitmaps.cpp
$(IntermediateDirectory)/WorkspaceBitmaps.cpp$(PreprocessSuffix): WorkspaceBitmaps.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(PreprocessSuffix)WorkspaceBitmaps.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(PreprocessSuffix) WorkspaceBitmaps.cpp
$(IntermediateDirectory)/BusFormBitmaps.cpp$(ObjectSuffix): BusFormBitmaps.cpp $(IntermediateDirectory)/BusFormBitmaps.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/BusFormBitmaps.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/BusFormBitmaps.cpp$(ObjectSuffix) $(IncludePath)
@@ -170,7 +170,7 @@ $(IntermediateDirectory)/BusFormBitmaps.cpp$(DependSuffix): BusFormBitmaps.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/BusFormBitmaps.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/BusFormBitmaps.cpp$(DependSuffix) -MM BusFormBitmaps.cpp
$(IntermediateDirectory)/BusFormBitmaps.cpp$(PreprocessSuffix): BusFormBitmaps.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/BusFormBitmaps.cpp$(PreprocessSuffix)BusFormBitmaps.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/BusFormBitmaps.cpp$(PreprocessSuffix) BusFormBitmaps.cpp
$(IntermediateDirectory)/ElementFormBitmaps.cpp$(ObjectSuffix): ElementFormBitmaps.cpp $(IntermediateDirectory)/ElementFormBitmaps.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ElementFormBitmaps.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ElementFormBitmaps.cpp$(ObjectSuffix) $(IncludePath)
@@ -178,7 +178,7 @@ $(IntermediateDirectory)/ElementFormBitmaps.cpp$(DependSuffix): ElementFormBitma
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/ElementFormBitmaps.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/ElementFormBitmaps.cpp$(DependSuffix) -MM ElementFormBitmaps.cpp
$(IntermediateDirectory)/ElementFormBitmaps.cpp$(PreprocessSuffix): ElementFormBitmaps.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElementFormBitmaps.cpp$(PreprocessSuffix)ElementFormBitmaps.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElementFormBitmaps.cpp$(PreprocessSuffix) ElementFormBitmaps.cpp
$(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix): MainFrameBase.cpp $(IntermediateDirectory)/MainFrameBase.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/MainFrameBase.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix) $(IncludePath)
@@ -186,7 +186,7 @@ $(IntermediateDirectory)/MainFrameBase.cpp$(DependSuffix): MainFrameBase.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/MainFrameBase.cpp$(DependSuffix) -MM MainFrameBase.cpp
$(IntermediateDirectory)/MainFrameBase.cpp$(PreprocessSuffix): MainFrameBase.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/MainFrameBase.cpp$(PreprocessSuffix)MainFrameBase.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/MainFrameBase.cpp$(PreprocessSuffix) MainFrameBase.cpp
$(IntermediateDirectory)/WorkspaceBase.cpp$(ObjectSuffix): WorkspaceBase.cpp $(IntermediateDirectory)/WorkspaceBase.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/WorkspaceBase.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/WorkspaceBase.cpp$(ObjectSuffix) $(IncludePath)
@@ -194,7 +194,7 @@ $(IntermediateDirectory)/WorkspaceBase.cpp$(DependSuffix): WorkspaceBase.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/WorkspaceBase.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/WorkspaceBase.cpp$(DependSuffix) -MM WorkspaceBase.cpp
$(IntermediateDirectory)/WorkspaceBase.cpp$(PreprocessSuffix): WorkspaceBase.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/WorkspaceBase.cpp$(PreprocessSuffix)WorkspaceBase.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/WorkspaceBase.cpp$(PreprocessSuffix) WorkspaceBase.cpp
$(IntermediateDirectory)/ElementForm.cpp$(ObjectSuffix): ElementForm.cpp $(IntermediateDirectory)/ElementForm.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ElementForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ElementForm.cpp$(ObjectSuffix) $(IncludePath)
@@ -202,7 +202,7 @@ $(IntermediateDirectory)/ElementForm.cpp$(DependSuffix): ElementForm.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/ElementForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/ElementForm.cpp$(DependSuffix) -MM ElementForm.cpp
$(IntermediateDirectory)/ElementForm.cpp$(PreprocessSuffix): ElementForm.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElementForm.cpp$(PreprocessSuffix)ElementForm.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElementForm.cpp$(PreprocessSuffix) ElementForm.cpp
$(IntermediateDirectory)/Bus.cpp$(ObjectSuffix): Bus.cpp $(IntermediateDirectory)/Bus.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Bus.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Bus.cpp$(ObjectSuffix) $(IncludePath)
@@ -210,7 +210,7 @@ $(IntermediateDirectory)/Bus.cpp$(DependSuffix): Bus.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Bus.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Bus.cpp$(DependSuffix) -MM Bus.cpp
$(IntermediateDirectory)/Bus.cpp$(PreprocessSuffix): Bus.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Bus.cpp$(PreprocessSuffix)Bus.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Bus.cpp$(PreprocessSuffix) Bus.cpp
$(IntermediateDirectory)/Line.cpp$(ObjectSuffix): Line.cpp $(IntermediateDirectory)/Line.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Line.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Line.cpp$(ObjectSuffix) $(IncludePath)
@@ -218,7 +218,7 @@ $(IntermediateDirectory)/Line.cpp$(DependSuffix): Line.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Line.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Line.cpp$(DependSuffix) -MM Line.cpp
$(IntermediateDirectory)/Line.cpp$(PreprocessSuffix): Line.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Line.cpp$(PreprocessSuffix)Line.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Line.cpp$(PreprocessSuffix) Line.cpp
$(IntermediateDirectory)/Transformer.cpp$(ObjectSuffix): Transformer.cpp $(IntermediateDirectory)/Transformer.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Transformer.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Transformer.cpp$(ObjectSuffix) $(IncludePath)
@@ -226,7 +226,7 @@ $(IntermediateDirectory)/Transformer.cpp$(DependSuffix): Transformer.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Transformer.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Transformer.cpp$(DependSuffix) -MM Transformer.cpp
$(IntermediateDirectory)/Transformer.cpp$(PreprocessSuffix): Transformer.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Transformer.cpp$(PreprocessSuffix)Transformer.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Transformer.cpp$(PreprocessSuffix) Transformer.cpp
$(IntermediateDirectory)/Machines.cpp$(ObjectSuffix): Machines.cpp $(IntermediateDirectory)/Machines.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Machines.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Machines.cpp$(ObjectSuffix) $(IncludePath)
@@ -234,7 +234,7 @@ $(IntermediateDirectory)/Machines.cpp$(DependSuffix): Machines.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Machines.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Machines.cpp$(DependSuffix) -MM Machines.cpp
$(IntermediateDirectory)/Machines.cpp$(PreprocessSuffix): Machines.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Machines.cpp$(PreprocessSuffix)Machines.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Machines.cpp$(PreprocessSuffix) Machines.cpp
$(IntermediateDirectory)/SyncGenerator.cpp$(ObjectSuffix): SyncGenerator.cpp $(IntermediateDirectory)/SyncGenerator.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/SyncGenerator.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/SyncGenerator.cpp$(ObjectSuffix) $(IncludePath)
@@ -242,7 +242,7 @@ $(IntermediateDirectory)/SyncGenerator.cpp$(DependSuffix): SyncGenerator.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/SyncGenerator.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/SyncGenerator.cpp$(DependSuffix) -MM SyncGenerator.cpp
$(IntermediateDirectory)/SyncGenerator.cpp$(PreprocessSuffix): SyncGenerator.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SyncGenerator.cpp$(PreprocessSuffix)SyncGenerator.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SyncGenerator.cpp$(PreprocessSuffix) SyncGenerator.cpp
$(IntermediateDirectory)/IndMotor.cpp$(ObjectSuffix): IndMotor.cpp $(IntermediateDirectory)/IndMotor.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/IndMotor.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/IndMotor.cpp$(ObjectSuffix) $(IncludePath)
@@ -250,7 +250,7 @@ $(IntermediateDirectory)/IndMotor.cpp$(DependSuffix): IndMotor.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/IndMotor.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/IndMotor.cpp$(DependSuffix) -MM IndMotor.cpp
$(IntermediateDirectory)/IndMotor.cpp$(PreprocessSuffix): IndMotor.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/IndMotor.cpp$(PreprocessSuffix)IndMotor.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/IndMotor.cpp$(PreprocessSuffix) IndMotor.cpp
$(IntermediateDirectory)/Branch.cpp$(ObjectSuffix): Branch.cpp $(IntermediateDirectory)/Branch.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Branch.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Branch.cpp$(ObjectSuffix) $(IncludePath)
@@ -258,7 +258,7 @@ $(IntermediateDirectory)/Branch.cpp$(DependSuffix): Branch.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Branch.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Branch.cpp$(DependSuffix) -MM Branch.cpp
$(IntermediateDirectory)/Branch.cpp$(PreprocessSuffix): Branch.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Branch.cpp$(PreprocessSuffix)Branch.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Branch.cpp$(PreprocessSuffix) Branch.cpp
$(IntermediateDirectory)/SyncMotor.cpp$(ObjectSuffix): SyncMotor.cpp $(IntermediateDirectory)/SyncMotor.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/SyncMotor.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/SyncMotor.cpp$(ObjectSuffix) $(IncludePath)
@@ -266,7 +266,7 @@ $(IntermediateDirectory)/SyncMotor.cpp$(DependSuffix): SyncMotor.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/SyncMotor.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/SyncMotor.cpp$(DependSuffix) -MM SyncMotor.cpp
$(IntermediateDirectory)/SyncMotor.cpp$(PreprocessSuffix): SyncMotor.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SyncMotor.cpp$(PreprocessSuffix)SyncMotor.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SyncMotor.cpp$(PreprocessSuffix) SyncMotor.cpp
$(IntermediateDirectory)/Shunt.cpp$(ObjectSuffix): Shunt.cpp $(IntermediateDirectory)/Shunt.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Shunt.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Shunt.cpp$(ObjectSuffix) $(IncludePath)
@@ -274,7 +274,7 @@ $(IntermediateDirectory)/Shunt.cpp$(DependSuffix): Shunt.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Shunt.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Shunt.cpp$(DependSuffix) -MM Shunt.cpp
$(IntermediateDirectory)/Shunt.cpp$(PreprocessSuffix): Shunt.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Shunt.cpp$(PreprocessSuffix)Shunt.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Shunt.cpp$(PreprocessSuffix) Shunt.cpp
$(IntermediateDirectory)/Load.cpp$(ObjectSuffix): Load.cpp $(IntermediateDirectory)/Load.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Load.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Load.cpp$(ObjectSuffix) $(IncludePath)
@@ -282,7 +282,7 @@ $(IntermediateDirectory)/Load.cpp$(DependSuffix): Load.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Load.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Load.cpp$(DependSuffix) -MM Load.cpp
$(IntermediateDirectory)/Load.cpp$(PreprocessSuffix): Load.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Load.cpp$(PreprocessSuffix)Load.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Load.cpp$(PreprocessSuffix) Load.cpp
$(IntermediateDirectory)/Inductor.cpp$(ObjectSuffix): Inductor.cpp $(IntermediateDirectory)/Inductor.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Inductor.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Inductor.cpp$(ObjectSuffix) $(IncludePath)
@@ -290,7 +290,7 @@ $(IntermediateDirectory)/Inductor.cpp$(DependSuffix): Inductor.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Inductor.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Inductor.cpp$(DependSuffix) -MM Inductor.cpp
$(IntermediateDirectory)/Inductor.cpp$(PreprocessSuffix): Inductor.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Inductor.cpp$(PreprocessSuffix)Inductor.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Inductor.cpp$(PreprocessSuffix) Inductor.cpp
$(IntermediateDirectory)/Capacitor.cpp$(ObjectSuffix): Capacitor.cpp $(IntermediateDirectory)/Capacitor.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Capacitor.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Capacitor.cpp$(ObjectSuffix) $(IncludePath)
@@ -298,7 +298,7 @@ $(IntermediateDirectory)/Capacitor.cpp$(DependSuffix): Capacitor.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Capacitor.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Capacitor.cpp$(DependSuffix) -MM Capacitor.cpp
$(IntermediateDirectory)/Capacitor.cpp$(PreprocessSuffix): Capacitor.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Capacitor.cpp$(PreprocessSuffix)Capacitor.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Capacitor.cpp$(PreprocessSuffix) Capacitor.cpp
$(IntermediateDirectory)/Element.cpp$(ObjectSuffix): Element.cpp $(IntermediateDirectory)/Element.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/Element.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/Element.cpp$(ObjectSuffix) $(IncludePath)
@@ -306,7 +306,7 @@ $(IntermediateDirectory)/Element.cpp$(DependSuffix): Element.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/Element.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/Element.cpp$(DependSuffix) -MM Element.cpp
$(IntermediateDirectory)/Element.cpp$(PreprocessSuffix): Element.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Element.cpp$(PreprocessSuffix)Element.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Element.cpp$(PreprocessSuffix) Element.cpp
$(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix): ElectricCalculation.cpp $(IntermediateDirectory)/ElectricCalculation.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ElectricCalculation.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix) $(IncludePath)
@@ -314,7 +314,7 @@ $(IntermediateDirectory)/ElectricCalculation.cpp$(DependSuffix): ElectricCalcula
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/ElectricCalculation.cpp$(DependSuffix) -MM ElectricCalculation.cpp
$(IntermediateDirectory)/ElectricCalculation.cpp$(PreprocessSuffix): ElectricCalculation.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElectricCalculation.cpp$(PreprocessSuffix)ElectricCalculation.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElectricCalculation.cpp$(PreprocessSuffix) ElectricCalculation.cpp
$(IntermediateDirectory)/PowerFlow.cpp$(ObjectSuffix): PowerFlow.cpp $(IntermediateDirectory)/PowerFlow.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/PowerFlow.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/PowerFlow.cpp$(ObjectSuffix) $(IncludePath)
@@ -322,7 +322,7 @@ $(IntermediateDirectory)/PowerFlow.cpp$(DependSuffix): PowerFlow.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/PowerFlow.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/PowerFlow.cpp$(DependSuffix) -MM PowerFlow.cpp
$(IntermediateDirectory)/PowerFlow.cpp$(PreprocessSuffix): PowerFlow.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/PowerFlow.cpp$(PreprocessSuffix)PowerFlow.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/PowerFlow.cpp$(PreprocessSuffix) PowerFlow.cpp
$(IntermediateDirectory)/BusForm.cpp$(ObjectSuffix): BusForm.cpp $(IntermediateDirectory)/BusForm.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/BusForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/BusForm.cpp$(ObjectSuffix) $(IncludePath)
@@ -330,7 +330,7 @@ $(IntermediateDirectory)/BusForm.cpp$(DependSuffix): BusForm.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/BusForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/BusForm.cpp$(DependSuffix) -MM BusForm.cpp
$(IntermediateDirectory)/BusForm.cpp$(PreprocessSuffix): BusForm.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/BusForm.cpp$(PreprocessSuffix)BusForm.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/BusForm.cpp$(PreprocessSuffix) BusForm.cpp
$(IntermediateDirectory)/GeneratorStabForm.cpp$(ObjectSuffix): GeneratorStabForm.cpp $(IntermediateDirectory)/GeneratorStabForm.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/GeneratorStabForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/GeneratorStabForm.cpp$(ObjectSuffix) $(IncludePath)
@@ -338,7 +338,7 @@ $(IntermediateDirectory)/GeneratorStabForm.cpp$(DependSuffix): GeneratorStabForm
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/GeneratorStabForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/GeneratorStabForm.cpp$(DependSuffix) -MM GeneratorStabForm.cpp
$(IntermediateDirectory)/GeneratorStabForm.cpp$(PreprocessSuffix): GeneratorStabForm.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/GeneratorStabForm.cpp$(PreprocessSuffix)GeneratorStabForm.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/GeneratorStabForm.cpp$(PreprocessSuffix) GeneratorStabForm.cpp
$(IntermediateDirectory)/LineForm.cpp$(ObjectSuffix): LineForm.cpp $(IntermediateDirectory)/LineForm.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/LineForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/LineForm.cpp$(ObjectSuffix) $(IncludePath)
@@ -346,7 +346,7 @@ $(IntermediateDirectory)/LineForm.cpp$(DependSuffix): LineForm.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/LineForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/LineForm.cpp$(DependSuffix) -MM LineForm.cpp
$(IntermediateDirectory)/LineForm.cpp$(PreprocessSuffix): LineForm.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/LineForm.cpp$(PreprocessSuffix)LineForm.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/LineForm.cpp$(PreprocessSuffix) LineForm.cpp
$(IntermediateDirectory)/SwitchingForm.cpp$(ObjectSuffix): SwitchingForm.cpp $(IntermediateDirectory)/SwitchingForm.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/SwitchingForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/SwitchingForm.cpp$(ObjectSuffix) $(IncludePath)
@@ -354,7 +354,7 @@ $(IntermediateDirectory)/SwitchingForm.cpp$(DependSuffix): SwitchingForm.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/SwitchingForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/SwitchingForm.cpp$(DependSuffix) -MM SwitchingForm.cpp
$(IntermediateDirectory)/SwitchingForm.cpp$(PreprocessSuffix): SwitchingForm.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SwitchingForm.cpp$(PreprocessSuffix)SwitchingForm.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SwitchingForm.cpp$(PreprocessSuffix) SwitchingForm.cpp
$(IntermediateDirectory)/TransformerForm.cpp$(ObjectSuffix): TransformerForm.cpp $(IntermediateDirectory)/TransformerForm.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/TransformerForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/TransformerForm.cpp$(ObjectSuffix) $(IncludePath)
@@ -362,7 +362,7 @@ $(IntermediateDirectory)/TransformerForm.cpp$(DependSuffix): TransformerForm.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/TransformerForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/TransformerForm.cpp$(DependSuffix) -MM TransformerForm.cpp
$(IntermediateDirectory)/TransformerForm.cpp$(PreprocessSuffix): TransformerForm.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/TransformerForm.cpp$(PreprocessSuffix)TransformerForm.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/TransformerForm.cpp$(PreprocessSuffix) TransformerForm.cpp
$(IntermediateDirectory)/LoadForm.cpp$(ObjectSuffix): LoadForm.cpp $(IntermediateDirectory)/LoadForm.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/LoadForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/LoadForm.cpp$(ObjectSuffix) $(IncludePath)
@@ -370,7 +370,7 @@ $(IntermediateDirectory)/LoadForm.cpp$(DependSuffix): LoadForm.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/LoadForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/LoadForm.cpp$(DependSuffix) -MM LoadForm.cpp
$(IntermediateDirectory)/LoadForm.cpp$(PreprocessSuffix): LoadForm.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/LoadForm.cpp$(PreprocessSuffix)LoadForm.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/LoadForm.cpp$(PreprocessSuffix) LoadForm.cpp
$(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(ObjectSuffix): ReactiveShuntElementForm.cpp $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ReactiveShuntElementForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(ObjectSuffix) $(IncludePath)
@@ -378,7 +378,7 @@ $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(DependSuffix): ReactiveSh
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(DependSuffix) -MM ReactiveShuntElementForm.cpp
$(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(PreprocessSuffix): ReactiveShuntElementForm.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(PreprocessSuffix)ReactiveShuntElementForm.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(PreprocessSuffix) ReactiveShuntElementForm.cpp
$(IntermediateDirectory)/IndMotorForm.cpp$(ObjectSuffix): IndMotorForm.cpp $(IntermediateDirectory)/IndMotorForm.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/IndMotorForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/IndMotorForm.cpp$(ObjectSuffix) $(IncludePath)
@@ -386,7 +386,7 @@ $(IntermediateDirectory)/IndMotorForm.cpp$(DependSuffix): IndMotorForm.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/IndMotorForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/IndMotorForm.cpp$(DependSuffix) -MM IndMotorForm.cpp
$(IntermediateDirectory)/IndMotorForm.cpp$(PreprocessSuffix): IndMotorForm.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/IndMotorForm.cpp$(PreprocessSuffix)IndMotorForm.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/IndMotorForm.cpp$(PreprocessSuffix) IndMotorForm.cpp
$(IntermediateDirectory)/SyncMachineForm.cpp$(ObjectSuffix): SyncMachineForm.cpp $(IntermediateDirectory)/SyncMachineForm.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/SyncMachineForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/SyncMachineForm.cpp$(ObjectSuffix) $(IncludePath)
@@ -394,7 +394,7 @@ $(IntermediateDirectory)/SyncMachineForm.cpp$(DependSuffix): SyncMachineForm.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/SyncMachineForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/SyncMachineForm.cpp$(DependSuffix) -MM SyncMachineForm.cpp
$(IntermediateDirectory)/SyncMachineForm.cpp$(PreprocessSuffix): SyncMachineForm.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SyncMachineForm.cpp$(PreprocessSuffix)SyncMachineForm.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/SyncMachineForm.cpp$(PreprocessSuffix) SyncMachineForm.cpp
$(IntermediateDirectory)/TextForm.cpp$(ObjectSuffix): TextForm.cpp $(IntermediateDirectory)/TextForm.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/TextForm.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/TextForm.cpp$(ObjectSuffix) $(IncludePath)
@@ -402,7 +402,7 @@ $(IntermediateDirectory)/TextForm.cpp$(DependSuffix): TextForm.cpp
@$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/TextForm.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/TextForm.cpp$(DependSuffix) -MM TextForm.cpp
$(IntermediateDirectory)/TextForm.cpp$(PreprocessSuffix): TextForm.cpp
- $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/TextForm.cpp$(PreprocessSuffix)TextForm.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/TextForm.cpp$(PreprocessSuffix) TextForm.cpp
-include $(IntermediateDirectory)/*$(DependSuffix)
diff --git a/Project/Release/Bus.cpp.o b/Project/Release/Bus.cpp.o
index 03402fd..54c9c29 100644
--- a/Project/Release/Bus.cpp.o
+++ b/Project/Release/Bus.cpp.o
Binary files differ
diff --git a/Project/Release/BusForm.cpp.o b/Project/Release/BusForm.cpp.o
index 18094c0..3aff5ba 100644
--- a/Project/Release/BusForm.cpp.o
+++ b/Project/Release/BusForm.cpp.o
Binary files differ
diff --git a/Project/Release/Capacitor.cpp.o b/Project/Release/Capacitor.cpp.o
index 3cd8e8f..bbf9649 100644
--- a/Project/Release/Capacitor.cpp.o
+++ b/Project/Release/Capacitor.cpp.o
Binary files differ
diff --git a/Project/Release/ElectricCalculation.cpp.o b/Project/Release/ElectricCalculation.cpp.o
index 79d5b45..8fe31cc 100644
--- a/Project/Release/ElectricCalculation.cpp.o
+++ b/Project/Release/ElectricCalculation.cpp.o
Binary files differ
diff --git a/Project/Release/Element.cpp.o b/Project/Release/Element.cpp.o
index 99f0e28..76baaaf 100644
--- a/Project/Release/Element.cpp.o
+++ b/Project/Release/Element.cpp.o
Binary files differ
diff --git a/Project/Release/ElementForm.cpp.o b/Project/Release/ElementForm.cpp.o
index 2978138..a6cbbf8 100644
--- a/Project/Release/ElementForm.cpp.o
+++ b/Project/Release/ElementForm.cpp.o
Binary files differ
diff --git a/Project/Release/GeneratorStabForm.cpp.o b/Project/Release/GeneratorStabForm.cpp.o
index 9df90ab..6e3ecd6 100644
--- a/Project/Release/GeneratorStabForm.cpp.o
+++ b/Project/Release/GeneratorStabForm.cpp.o
Binary files differ
diff --git a/Project/Release/IndMotor.cpp.o b/Project/Release/IndMotor.cpp.o
index 4517019..c4ca27f 100644
--- a/Project/Release/IndMotor.cpp.o
+++ b/Project/Release/IndMotor.cpp.o
Binary files differ
diff --git a/Project/Release/IndMotorForm.cpp.o b/Project/Release/IndMotorForm.cpp.o
index 5e81863..876b22e 100644
--- a/Project/Release/IndMotorForm.cpp.o
+++ b/Project/Release/IndMotorForm.cpp.o
Binary files differ
diff --git a/Project/Release/Inductor.cpp.o b/Project/Release/Inductor.cpp.o
index 029ea12..f65788c 100644
--- a/Project/Release/Inductor.cpp.o
+++ b/Project/Release/Inductor.cpp.o
Binary files differ
diff --git a/Project/Release/Line.cpp.o b/Project/Release/Line.cpp.o
index c1a688c..0fd9f2a 100644
--- a/Project/Release/Line.cpp.o
+++ b/Project/Release/Line.cpp.o
Binary files differ
diff --git a/Project/Release/LineForm.cpp.o b/Project/Release/LineForm.cpp.o
index 3de68d5..4e36059 100644
--- a/Project/Release/LineForm.cpp.o
+++ b/Project/Release/LineForm.cpp.o
Binary files differ
diff --git a/Project/Release/Load.cpp.o b/Project/Release/Load.cpp.o
index 8a96a09..c5641c2 100644
--- a/Project/Release/Load.cpp.o
+++ b/Project/Release/Load.cpp.o
Binary files differ
diff --git a/Project/Release/LoadForm.cpp.o b/Project/Release/LoadForm.cpp.o
index 4bda98b..ed59b46 100644
--- a/Project/Release/LoadForm.cpp.o
+++ b/Project/Release/LoadForm.cpp.o
Binary files differ
diff --git a/Project/Release/MainFrame.cpp.o b/Project/Release/MainFrame.cpp.o
index aaefcd8..e852390 100644
--- a/Project/Release/MainFrame.cpp.o
+++ b/Project/Release/MainFrame.cpp.o
Binary files differ
diff --git a/Project/Release/MainFrameBase.cpp.o b/Project/Release/MainFrameBase.cpp.o
index ec938af..3cf1c3e 100644
--- a/Project/Release/MainFrameBase.cpp.o
+++ b/Project/Release/MainFrameBase.cpp.o
Binary files differ
diff --git a/Project/Release/PSP-UFU.exe b/Project/Release/PSP-UFU.exe
index 21bdf85..299db58 100644
--- a/Project/Release/PSP-UFU.exe
+++ b/Project/Release/PSP-UFU.exe
Binary files differ
diff --git a/Project/Release/PowerFlow.cpp.o b/Project/Release/PowerFlow.cpp.o
index e284cdc..3f8ce8e 100644
--- a/Project/Release/PowerFlow.cpp.o
+++ b/Project/Release/PowerFlow.cpp.o
Binary files differ
diff --git a/Project/Release/ReactiveShuntElementForm.cpp.o b/Project/Release/ReactiveShuntElementForm.cpp.o
index a4f9911..1ce9ee8 100644
--- a/Project/Release/ReactiveShuntElementForm.cpp.o
+++ b/Project/Release/ReactiveShuntElementForm.cpp.o
Binary files differ
diff --git a/Project/Release/SwitchingForm.cpp.o b/Project/Release/SwitchingForm.cpp.o
index 38b5227..88c8520 100644
--- a/Project/Release/SwitchingForm.cpp.o
+++ b/Project/Release/SwitchingForm.cpp.o
Binary files differ
diff --git a/Project/Release/SyncGenerator.cpp.o b/Project/Release/SyncGenerator.cpp.o
index d0c6b6e..df5cc88 100644
--- a/Project/Release/SyncGenerator.cpp.o
+++ b/Project/Release/SyncGenerator.cpp.o
Binary files differ
diff --git a/Project/Release/SyncMachineForm.cpp.o b/Project/Release/SyncMachineForm.cpp.o
index b5971fd..a2afa10 100644
--- a/Project/Release/SyncMachineForm.cpp.o
+++ b/Project/Release/SyncMachineForm.cpp.o
Binary files differ
diff --git a/Project/Release/SyncMotor.cpp.o b/Project/Release/SyncMotor.cpp.o
index 1d035f2..dfeab4c 100644
--- a/Project/Release/SyncMotor.cpp.o
+++ b/Project/Release/SyncMotor.cpp.o
Binary files differ
diff --git a/Project/Release/Text.cpp.o b/Project/Release/Text.cpp.o
index 7071037..830aa66 100644
--- a/Project/Release/Text.cpp.o
+++ b/Project/Release/Text.cpp.o
Binary files differ
diff --git a/Project/Release/TextForm.cpp.o b/Project/Release/TextForm.cpp.o
index f32f85f..26381da 100644
--- a/Project/Release/TextForm.cpp.o
+++ b/Project/Release/TextForm.cpp.o
Binary files differ
diff --git a/Project/Release/Transformer.cpp.o b/Project/Release/Transformer.cpp.o
index d4555cd..3c97848 100644
--- a/Project/Release/Transformer.cpp.o
+++ b/Project/Release/Transformer.cpp.o
Binary files differ
diff --git a/Project/Release/TransformerForm.cpp.o b/Project/Release/TransformerForm.cpp.o
index adc3c49..50fbf8c 100644
--- a/Project/Release/TransformerForm.cpp.o
+++ b/Project/Release/TransformerForm.cpp.o
Binary files differ
diff --git a/Project/Release/Workspace.cpp.o b/Project/Release/Workspace.cpp.o
index 26ee31e..9a16fe7 100644
--- a/Project/Release/Workspace.cpp.o
+++ b/Project/Release/Workspace.cpp.o
Binary files differ
diff --git a/Project/Release/main.cpp.o b/Project/Release/main.cpp.o
index e27c6a6..9925528 100644
--- a/Project/Release/main.cpp.o
+++ b/Project/Release/main.cpp.o
Binary files differ
diff --git a/Project/Release/wxmsw310u_gcc_64x.dll b/Project/Release/wxmsw310u_gcc_64x.dll
index 06cdd5c..ca43121 100644
--- a/Project/Release/wxmsw310u_gcc_64x.dll
+++ b/Project/Release/wxmsw310u_gcc_64x.dll
Binary files differ
diff --git a/Project/Release/wxmsw310u_gl_gcc_64x.dll b/Project/Release/wxmsw310u_gl_gcc_64x.dll
index cfe5014..f9e60dd 100644
--- a/Project/Release/wxmsw310u_gl_gcc_64x.dll
+++ b/Project/Release/wxmsw310u_gl_gcc_64x.dll
Binary files differ
diff --git a/Project/SyncGenerator.cpp b/Project/SyncGenerator.cpp
index b655364..463c56d 100644
--- a/Project/SyncGenerator.cpp
+++ b/Project/SyncGenerator.cpp
@@ -127,3 +127,11 @@ SyncGeneratorElectricalData SyncGenerator::GetPUElectricalData(double systemPowe
return data;
}
+
+void SyncGenerator::SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit)
+{
+ if(nominalVoltage.size() > 0) {
+ m_electricalData.nominalVoltage = nominalVoltage[0];
+ m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0];
+ }
+}
diff --git a/Project/SyncGenerator.h b/Project/SyncGenerator.h
index 98c0ce1..0ff3f6a 100644
--- a/Project/SyncGenerator.h
+++ b/Project/SyncGenerator.h
@@ -5,12 +5,13 @@
class SyncMachineForm;
-struct SyncGeneratorElectricalData
-{
+struct SyncGeneratorElectricalData {
// General
wxString name = "";
double nominalPower = 100.0;
ElectricalUnit nominalPowerUnit = UNIT_MVA;
+ double nominalVoltage = 13.8;
+ ElectricalUnit nominalVoltageUnit = UNIT_kV;
double activePower = 100.0;
ElectricalUnit activePowerUnit = UNIT_MW;
double reactivePower = 0.0;
@@ -33,6 +34,9 @@ struct SyncGeneratorElectricalData
double groundResistance = 0.0;
double groundReactance = 0.0;
bool groundNeutral = true;
+ // p.u. fault data
+ std::complex<double> faultCurrent[3] = { std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0),
+ std::complex<double>(0.0, 0.0) };
// Stability
bool plotSyncMachine = false;
@@ -59,22 +63,23 @@ struct SyncGeneratorElectricalData
class SyncGenerator : public Machines
{
- public:
+public:
SyncGenerator();
- SyncGenerator(wxString name);
+ SyncGenerator(wxString name);
~SyncGenerator();
-
- virtual void Init();
+
+ virtual void Init();
virtual void DrawSymbol() const;
virtual bool GetContextMenu(wxMenu& menu);
virtual bool ShowForm(wxWindow* parent, Element* element);
virtual SyncGeneratorElectricalData GetElectricalData() { return m_electricalData; }
- virtual SyncGeneratorElectricalData GetPUElectricalData(double systemPowerBase);
+ virtual SyncGeneratorElectricalData GetPUElectricalData(double systemPowerBase);
virtual void SetElectricalData(SyncGeneratorElectricalData electricalData) { m_electricalData = electricalData; }
- protected:
+ virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);
+protected:
std::vector<wxPoint2DDouble> m_sinePts;
SyncGeneratorElectricalData m_electricalData;
};
-#endif // SYNCGENERATOR_H
+#endif // SYNCGENERATOR_H
diff --git a/Project/Text.cpp b/Project/Text.cpp
index 2d8e85c..411520f 100644
--- a/Project/Text.cpp
+++ b/Project/Text.cpp
@@ -12,8 +12,13 @@
#include "Inductor.h"
#include "Capacitor.h"
-Text::Text() : Element() { SetText(m_text); }
-Text::Text(wxPoint2DDouble position) : Element()
+Text::Text()
+ : Element()
+{
+ SetText(m_text);
+}
+Text::Text(wxPoint2DDouble position)
+ : Element()
{
SetText(m_text);
SetPosition(position);
@@ -29,31 +34,44 @@ bool Text::Contains(wxPoint2DDouble position) const
void Text::Draw(wxPoint2DDouble translation, double scale)
{
wxScreenDC dc;
-
+
// Draw selection rectangle
-
+
// Push the current matrix on stack.
glPushMatrix();
// Rotate the matrix around the object position.
glTranslated(m_position.m_x, m_position.m_y, 0.0);
glRotated(m_angle, 0.0, 0.0, 1.0);
glTranslated(-m_position.m_x, -m_position.m_y, 0.0);
-
+
if(m_selected) {
glColor4d(0.0, 0.5, 1.0, 0.5);
- DrawRectangle(m_position + wxPoint2DDouble(m_borderSize / 2.0, m_borderSize / 2.0), m_rect.m_width,
- m_rect.m_height);
+ DrawRectangle(
+ m_position + wxPoint2DDouble(m_borderSize / 2.0, m_borderSize / 2.0), m_rect.m_width, m_rect.m_height);
}
-
- // Draw text (layer 2)
+ // Draw text (layer 2)
glColor4d(0.0, 0.0, 0.0, 1.0);
- wxGLString glString(m_text);
- glString.setFont(wxFont(m_fontSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
- glString.consolidate(&dc);
- glString.bind();
- glString.render(m_position.m_x, m_position.m_y);
-
+ if(!m_isMultlineText) { // Only one line
+ wxGLString glString(m_text);
+ glString.setFont(wxFont(m_fontSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
+ glString.consolidate(&dc);
+ glString.bind();
+ glString.render(m_position.m_x, m_position.m_y);
+ } else { // Multiples lines
+ wxGLStringArray glStringArray;
+ // Fill the string array.
+ for(int i = 0; i < (int)m_multlineText.size(); i++) glStringArray.addString(m_multlineText[i]);
+ glStringArray.setFont(wxFont(m_fontSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
+ glStringArray.consolidate(&dc);
+ glStringArray.bind();
+ // The text will be printed centralized.
+ for(int i = 0; i < (int)m_multlineText.size(); i++) {
+ glStringArray.get(i).render(m_position.m_x, m_position.m_y - m_height / 2.0 +
+ glStringArray.get(i).getheight() * double(i) + glStringArray.get(i).getheight() / 2.0);
+ }
+ }
+
glPopMatrix();
}
@@ -67,15 +85,44 @@ void Text::SetText(wxString text)
{
m_text = text;
- // Generate a glString to get the text size.
- wxGLString glString(m_text);
- glString.setFont(wxFont(m_fontSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
- wxScreenDC dc;
- glString.consolidate(&dc);
- glString.bind();
+ // Creating a glString to get the text size.
+ int numberOfLines = m_text.Freq('\n') + 1;
+ if(numberOfLines == 1) { // Only one line
+ m_isMultlineText = false;
+ wxGLString glString(m_text);
+ glString.setFont(wxFont(m_fontSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
+ wxScreenDC dc;
+ glString.consolidate(&dc);
+ glString.bind();
- m_width = glString.getWidth();
- m_height = glString.getheight();
+ m_width = glString.getWidth();
+ m_height = glString.getheight();
+ } else {
+ m_isMultlineText = true;
+ m_multlineText.clear();
+ wxString text = m_text;
+ double w = 0.0, h = 0.0;
+ for(int i = 0; i < numberOfLines; ++i) {
+ wxString nextLine;
+ wxString currentLine = text.BeforeFirst('\n', &nextLine);
+ text = nextLine;
+ m_multlineText.push_back(currentLine);
+
+ wxGLString glString(currentLine);
+ glString.setFont(wxFont(m_fontSize, wxFONTFAMILY_ROMAN, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL));
+ wxScreenDC dc;
+ glString.consolidate(&dc);
+ glString.bind();
+
+ if(w < glString.getWidth()) w = glString.getWidth(); // Get the major width.
+ h = glString.getheight();
+ }
+ m_width = w;
+ m_height = h * (double)numberOfLines;
+ }
+
+ // Update text rectangle.
+ SetPosition(m_position);
}
void Text::Rotate(bool clockwise)
@@ -101,40 +148,749 @@ bool Text::ShowForm(wxWindow* parent, std::vector<Element*> elementList)
void Text::UpdateText(double systemPowerBase)
{
switch(m_elementType) {
+ case TYPE_NONE:
+ break;
case TYPE_BUS: {
Bus* bus = (Bus*)m_element;
if(bus) {
+ BusElectricalData data = bus->GetEletricalData();
+ double baseVoltage = data.nominalVoltage;
+ if(data.nominalVoltageUnit == UNIT_kV) baseVoltage *= 1e3;
+ double baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage);
+
switch(m_dataType) {
case DATA_NAME: {
SetText(bus->GetEletricalData().name);
- wxLogMessage(m_text);
} break;
+ case DATA_VOLTAGE: {
+ double voltage = std::abs(data.voltage);
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(voltage, m_decimalPlaces) + " p.u.");
+ } break;
+ case UNIT_V: {
+ SetText(wxString::FromDouble(voltage * baseVoltage, m_decimalPlaces) + " V");
+ } break;
+ case UNIT_kV: {
+ SetText(wxString::FromDouble(voltage * baseVoltage / 1e3, m_decimalPlaces) + " kV");
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_ANGLE: {
+ double angle = std::arg(data.voltage);
+ switch(m_unit) {
+ case UNIT_RADIAN: {
+ SetText(wxString::FromDouble(angle, m_decimalPlaces) + " rad");
+ } break;
+ case UNIT_DEGREE: {
+ SetText(wxString::FromDouble(wxRadToDeg(angle), m_decimalPlaces) + (wxString)L'\u00B0');
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_SC_CURRENT: {
+ double faultCurrent[3] = { std::abs(data.faultCurrent[0]), std::abs(data.faultCurrent[1]),
+ std::abs(data.faultCurrent[2]) };
+ switch(m_unit) {
+ case 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: {
+ wxString str = "Ia = " +
+ wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) + " A";
+ str += "\nIb = " +
+ wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + " A";
+ str += "\nIc = " +
+ wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + " A";
+ SetText(str);
+ } break;
+ case UNIT_kA: {
+ wxString str = "Ia = " +
+ wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + " kA";
+ str += "\nIb = " +
+ wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) + " kA";
+ str += "\nIc = " +
+ wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) + " kA";
+ SetText(str);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_SC_VOLTAGE: {
+ double faultVoltage[3] = { std::abs(data.faultVoltage[0]), std::abs(data.faultVoltage[1]),
+ std::abs(data.faultVoltage[2]) };
+ switch(m_unit) {
+ case 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: {
+ wxString str = "Va = " +
+ wxString::FromDouble(faultVoltage[0] * baseVoltage, m_decimalPlaces) + " V";
+ str += "\nVb = " +
+ wxString::FromDouble(faultVoltage[1] * baseVoltage, m_decimalPlaces) + " V";
+ str += "\nVc = " +
+ wxString::FromDouble(faultVoltage[2] * baseVoltage, m_decimalPlaces) + " V";
+ SetText(str);
+ } break;
+ case UNIT_kV: {
+ wxString str = "Va = " +
+ wxString::FromDouble(faultVoltage[0] * baseVoltage / 1e3, m_decimalPlaces) + " kV";
+ str += "\nVb = " +
+ wxString::FromDouble(faultVoltage[1] * baseVoltage / 1e3, m_decimalPlaces) + " kV";
+ str += "\nVc = " +
+ wxString::FromDouble(faultVoltage[2] * baseVoltage / 1e3, m_decimalPlaces) + " kV";
+ SetText(str);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_SC_POWER: {
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(data.scPower, m_decimalPlaces) + " p.u.");
+ } break;
+ case UNIT_VA: {
+ SetText(wxString::FromDouble(data.scPower * systemPowerBase, m_decimalPlaces) + " VA");
+ } break;
+ case UNIT_kVA: {
+ SetText(wxString::FromDouble(data.scPower * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kVA");
+ } break;
+ case UNIT_MVA: {
+ SetText(wxString::FromDouble(data.scPower * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MVA");
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
}
}
} break;
case TYPE_SYNC_GENERATOR: {
-
+ SyncGenerator* syncGenerator = (SyncGenerator*)m_element;
+ if(syncGenerator) {
+ SyncGeneratorElectricalData data = syncGenerator->GetPUElectricalData(systemPowerBase);
+ double baseVoltage = data.nominalVoltage;
+ if(data.nominalVoltageUnit == UNIT_kV) baseVoltage *= 1e3;
+ double baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage);
+ switch(m_dataType) {
+ case DATA_NAME: {
+ SetText(data.name);
+ } break;
+ case DATA_ACTIVE_POWER: {
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(data.activePower, m_decimalPlaces) + " p.u.");
+ } break;
+ case UNIT_W: {
+ SetText(
+ wxString::FromDouble(data.activePower * systemPowerBase, m_decimalPlaces) + " W");
+ } break;
+ case UNIT_kW: {
+ SetText(
+ wxString::FromDouble(data.activePower * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kW");
+ } break;
+ case UNIT_MW: {
+ SetText(
+ wxString::FromDouble(data.activePower * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MW");
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_REACTIVE_POWER: {
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(data.reactivePower, m_decimalPlaces) + " p.u.");
+ } break;
+ case UNIT_VAr: {
+ SetText(wxString::FromDouble(data.reactivePower * systemPowerBase, m_decimalPlaces) +
+ " VAr");
+ } break;
+ case UNIT_kVAr: {
+ SetText(
+ wxString::FromDouble(data.reactivePower * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kVAr");
+ } break;
+ case UNIT_MVAr: {
+ SetText(
+ wxString::FromDouble(data.reactivePower * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MVAr");
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_SC_CURRENT: {
+ double faultCurrent[3] = { std::abs(data.faultCurrent[0]), std::abs(data.faultCurrent[1]),
+ std::abs(data.faultCurrent[2]) };
+ switch(m_unit) {
+ case 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: {
+ wxString str = "Ia = " +
+ wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) + " A";
+ str += "\nIb = " +
+ wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + " A";
+ str += "\nIc = " +
+ wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + " A";
+ SetText(str);
+ } break;
+ case UNIT_kA: {
+ wxString str = "Ia = " +
+ wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + " kA";
+ str += "\nIb = " +
+ wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) + " kA";
+ str += "\nIc = " +
+ wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) + " kA";
+ SetText(str);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ }
} break;
case TYPE_LINE: {
-
+ Line* line = (Line*)m_element;
+ if(line) {
+ LineElectricalData data = line->GetElectricalData();
+ double baseVoltage = data.nominalVoltage;
+ if(data.nominalVoltageUnit == UNIT_kV) baseVoltage *= 1e3;
+ double baseCurrent = systemPowerBase / (std::sqrt(3.0) * baseVoltage);
+ switch(m_dataType) {
+ case DATA_NAME: {
+ SetText(data.name);
+ } break;
+ case DATA_PF_ACTIVE: {
+ double activePF = std::real(data.powerFlow[m_direction]);
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(activePF, m_decimalPlaces) + " p.u.");
+ } break;
+ case UNIT_W: {
+ SetText(wxString::FromDouble(activePF * systemPowerBase, m_decimalPlaces) + " W");
+ } break;
+ case UNIT_kW: {
+ SetText(
+ wxString::FromDouble(activePF * systemPowerBase / 1e3, m_decimalPlaces) + " kW");
+ } break;
+ case UNIT_MW: {
+ SetText(
+ wxString::FromDouble(activePF * systemPowerBase / 1e6, m_decimalPlaces) + " MW");
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_PF_REACTIVE: {
+ double reactivePF = std::imag(data.powerFlow[m_direction]);
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(reactivePF, m_decimalPlaces) + " p.u.");
+ } break;
+ case UNIT_VAr: {
+ SetText(wxString::FromDouble(reactivePF * systemPowerBase, m_decimalPlaces) + " VAr");
+ } break;
+ case UNIT_kVAr: {
+ SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kVAr");
+ } break;
+ case UNIT_MVAr: {
+ SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MVAr");
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_PF_LOSSES: {
+ double losses = std::abs(std::real(data.powerFlow[0]) + std::real(data.powerFlow[1]));
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(losses, m_decimalPlaces) + " p.u.");
+ } break;
+ case UNIT_W: {
+ SetText(wxString::FromDouble(losses * systemPowerBase, m_decimalPlaces) + " W");
+ } break;
+ case UNIT_kW: {
+ SetText(wxString::FromDouble(losses * systemPowerBase / 1e3, m_decimalPlaces) + " kW");
+ } break;
+ case UNIT_MW: {
+ SetText(wxString::FromDouble(losses * systemPowerBase / 1e6, m_decimalPlaces) + " MW");
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_PF_CURRENT: {
+ double current = std::abs(data.current[m_direction]);
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(current, m_decimalPlaces) + " p.u.");
+ } break;
+ case UNIT_A: {
+ SetText(wxString::FromDouble(current * baseCurrent, m_decimalPlaces) + " A");
+ } break;
+ case UNIT_kA: {
+ SetText(wxString::FromDouble(current * baseCurrent / 1e3, m_decimalPlaces) + " kA");
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_SC_CURRENT: {
+ double faultCurrent[3] = { std::abs(data.faultCurrent[m_direction][0]),
+ std::abs(data.faultCurrent[m_direction][1]), std::abs(data.faultCurrent[m_direction][2]) };
+ switch(m_unit) {
+ case 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: {
+ wxString str = "Ia = " +
+ wxString::FromDouble(faultCurrent[0] * baseCurrent, m_decimalPlaces) + " A";
+ str += "\nIb = " +
+ wxString::FromDouble(faultCurrent[1] * baseCurrent, m_decimalPlaces) + " A";
+ str += "\nIc = " +
+ wxString::FromDouble(faultCurrent[2] * baseCurrent, m_decimalPlaces) + " A";
+ SetText(str);
+ } break;
+ case UNIT_kA: {
+ wxString str = "Ia = " +
+ wxString::FromDouble(faultCurrent[0] * baseCurrent / 1e3, m_decimalPlaces) + " kA";
+ str += "\nIb = " +
+ wxString::FromDouble(faultCurrent[1] * baseCurrent / 1e3, m_decimalPlaces) + " kA";
+ str += "\nIc = " +
+ wxString::FromDouble(faultCurrent[2] * baseCurrent / 1e3, m_decimalPlaces) + " kA";
+ SetText(str);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ }
} break;
case TYPE_TRANSFORMER: {
-
+ Transformer* transformer = (Transformer*)m_element;
+ if(transformer) {
+ 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;
+
+ double baseCurrent[2] = { systemPowerBase / (std::sqrt(3.0) * baseVoltage[0]),
+ systemPowerBase / (std::sqrt(3.0) * baseVoltage[1]) };
+ switch(m_dataType) {
+ case DATA_NAME: {
+ SetText(data.name);
+ } break;
+ case DATA_PF_ACTIVE: {
+ double activePF = std::real(data.powerFlow[m_direction]);
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(activePF, m_decimalPlaces) + " p.u.");
+ } break;
+ case UNIT_W: {
+ SetText(wxString::FromDouble(activePF * systemPowerBase, m_decimalPlaces) + " W");
+ } break;
+ case UNIT_kW: {
+ SetText(
+ wxString::FromDouble(activePF * systemPowerBase / 1e3, m_decimalPlaces) + " kW");
+ } break;
+ case UNIT_MW: {
+ SetText(
+ wxString::FromDouble(activePF * systemPowerBase / 1e6, m_decimalPlaces) + " MW");
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_PF_REACTIVE: {
+ double reactivePF = std::imag(data.powerFlow[m_direction]);
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(reactivePF, m_decimalPlaces) + " p.u.");
+ } break;
+ case UNIT_VAr: {
+ SetText(wxString::FromDouble(reactivePF * systemPowerBase, m_decimalPlaces) + " VAr");
+ } break;
+ case UNIT_kVAr: {
+ SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kVAr");
+ } break;
+ case UNIT_MVAr: {
+ SetText(wxString::FromDouble(reactivePF * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MVAr");
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_PF_LOSSES: {
+ double losses = std::abs(std::real(data.powerFlow[0]) + std::real(data.powerFlow[1]));
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(losses, m_decimalPlaces) + " p.u.");
+ } break;
+ case UNIT_W: {
+ SetText(wxString::FromDouble(losses * systemPowerBase, m_decimalPlaces) + " W");
+ } break;
+ case UNIT_kW: {
+ SetText(wxString::FromDouble(losses * systemPowerBase / 1e3, m_decimalPlaces) + " kW");
+ } break;
+ case UNIT_MW: {
+ SetText(wxString::FromDouble(losses * systemPowerBase / 1e6, m_decimalPlaces) + " MW");
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_PF_CURRENT: {
+ double current = std::abs(data.current[m_direction]);
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(current, m_decimalPlaces) + " p.u.");
+ } break;
+ case UNIT_A: {
+ SetText(
+ wxString::FromDouble(current * baseCurrent[m_direction], m_decimalPlaces) + " A");
+ } break;
+ case UNIT_kA: {
+ SetText(
+ wxString::FromDouble(current * baseCurrent[m_direction] / 1e3, m_decimalPlaces) +
+ " kA");
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_SC_CURRENT: {
+ double faultCurrent[3] = { std::abs(data.faultCurrent[m_direction][0]),
+ std::abs(data.faultCurrent[m_direction][1]), std::abs(data.faultCurrent[m_direction][2]) };
+ switch(m_unit) {
+ case 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: {
+ wxString str = "Ia = " +
+ wxString::FromDouble(faultCurrent[0] * baseCurrent[m_direction], m_decimalPlaces) +
+ " A";
+ str += "\nIb = " +
+ wxString::FromDouble(faultCurrent[1] * baseCurrent[m_direction], m_decimalPlaces) +
+ " A";
+ str += "\nIc = " +
+ wxString::FromDouble(faultCurrent[2] * baseCurrent[m_direction], m_decimalPlaces) +
+ " A";
+ SetText(str);
+ } break;
+ case UNIT_kA: {
+ wxString str = "Ia = " +
+ wxString::FromDouble(
+ faultCurrent[0] * baseCurrent[m_direction] / 1e3, m_decimalPlaces) +
+ " kA";
+ str += "\nIb = " +
+ wxString::FromDouble(
+ faultCurrent[1] * baseCurrent[m_direction] / 1e3, m_decimalPlaces) +
+ " kA";
+ str += "\nIc = " +
+ wxString::FromDouble(
+ faultCurrent[2] * baseCurrent[m_direction] / 1e3, m_decimalPlaces) +
+ " kA";
+ SetText(str);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ }
} break;
case TYPE_LOAD: {
-
+ Load* load = (Load*)m_element;
+ if(load) {
+ LoadElectricalData data = load->GetPUElectricalData(systemPowerBase);
+ std::complex<double> sPower(data.activePower, data.reactivePower);
+ if(data.loadType == CONST_IMPEDANCE && load->IsOnline()) {
+ std::complex<double> v = ((Bus*)load->GetParentList()[0])->GetEletricalData().voltage;
+ sPower = std::pow(std::abs(v), 2) * sPower;
+ }
+ switch(m_dataType) {
+ case DATA_NAME: {
+ SetText(data.name);
+ } break;
+ case DATA_ACTIVE_POWER: {
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + " p.u.");
+ }
+ case UNIT_W: {
+ SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + " W");
+ }
+ case UNIT_kW: {
+ SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kW");
+ }
+ case UNIT_MW: {
+ SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MW");
+ }
+ default:
+ break;
+ }
+ } break;
+ case DATA_REACTIVE_POWER: {
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + " p.u.");
+ }
+ case UNIT_VAr: {
+ SetText(
+ wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) + " VAr");
+ }
+ case UNIT_kVAr: {
+ SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kVAr");
+ }
+ case UNIT_MVAr: {
+ SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MVAr");
+ }
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ }
} break;
case TYPE_SYNC_MOTOR: {
-
+ SyncMotor* syncMotor = (SyncMotor*)m_element;
+ if(syncMotor) {
+ SyncMotorElectricalData data = syncMotor->GetPUElectricalData(systemPowerBase);
+ std::complex<double> sPower(data.activePower, data.reactivePower);
+ switch(m_dataType) {
+ case DATA_NAME: {
+ SetText(data.name);
+ } break;
+ case DATA_ACTIVE_POWER: {
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + " p.u.");
+ }
+ case UNIT_W: {
+ SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + " W");
+ }
+ case UNIT_kW: {
+ SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kW");
+ }
+ case UNIT_MW: {
+ SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MW");
+ }
+ default:
+ break;
+ }
+ } break;
+ case DATA_REACTIVE_POWER: {
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + " p.u.");
+ }
+ case UNIT_VAr: {
+ SetText(
+ wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) + " VAr");
+ }
+ case UNIT_kVAr: {
+ SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kVAr");
+ }
+ case UNIT_MVAr: {
+ SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MVAr");
+ }
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ }
} break;
case TYPE_IND_MOTOR: {
-
+ IndMotor* indMotor = (IndMotor*)m_element;
+ if(indMotor) {
+ IndMotorElectricalData data = indMotor->GetPUElectricalData(systemPowerBase);
+ std::complex<double> sPower(data.activePower, data.reactivePower);
+ switch(m_dataType) {
+ case DATA_NAME: {
+ SetText(data.name);
+ } break;
+ case DATA_ACTIVE_POWER: {
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(sPower.real(), m_decimalPlaces) + " p.u.");
+ }
+ case UNIT_W: {
+ SetText(wxString::FromDouble(sPower.real() * systemPowerBase, m_decimalPlaces) + " W");
+ }
+ case UNIT_kW: {
+ SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kW");
+ }
+ case UNIT_MW: {
+ SetText(wxString::FromDouble(sPower.real() * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MW");
+ }
+ default:
+ break;
+ }
+ } break;
+ case DATA_REACTIVE_POWER: {
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(sPower.imag(), m_decimalPlaces) + " p.u.");
+ }
+ case UNIT_VAr: {
+ SetText(
+ wxString::FromDouble(sPower.imag() * systemPowerBase, m_decimalPlaces) + " VAr");
+ }
+ case UNIT_kVAr: {
+ SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kVAr");
+ }
+ case UNIT_MVAr: {
+ SetText(wxString::FromDouble(sPower.imag() * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MVAr");
+ }
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ }
} break;
case TYPE_CAPACITOR: {
-
+ Capacitor* capacitor = (Capacitor*)m_element;
+ if(capacitor) {
+ CapacitorElectricalData data = capacitor->GetPUElectricalData(systemPowerBase);
+ double reativePower = -data.reactivePower;
+ if(capacitor->IsOnline()) {
+ std::complex<double> v = ((Bus*)capacitor->GetParentList()[0])->GetEletricalData().voltage;
+ reativePower *= std::pow(std::abs(v), 2);
+ }
+ switch(m_dataType) {
+ case DATA_NAME: {
+ SetText(data.name);
+ } break;
+ case DATA_REACTIVE_POWER: {
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(reativePower, m_decimalPlaces) + " p.u.");
+ }
+ case UNIT_VAr: {
+ SetText(
+ wxString::FromDouble(reativePower * systemPowerBase, m_decimalPlaces) + " VAr");
+ }
+ case UNIT_kVAr: {
+ SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kVAr");
+ }
+ case UNIT_MVAr: {
+ SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MVAr");
+ }
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ }
} break;
case TYPE_INDUCTOR: {
-
+ Inductor* inductor = (Inductor*)m_element;
+ if(inductor) {
+ InductorElectricalData data = inductor->GetPUElectricalData(systemPowerBase);
+ double reativePower = data.reactivePower;
+ if(inductor->IsOnline()) {
+ std::complex<double> v = ((Bus*)inductor->GetParentList()[0])->GetEletricalData().voltage;
+ reativePower *= std::pow(std::abs(v), 2);
+ }
+ switch(m_dataType) {
+ case DATA_NAME: {
+ SetText(data.name);
+ } break;
+ case DATA_REACTIVE_POWER: {
+ switch(m_unit) {
+ case UNIT_PU: {
+ SetText(wxString::FromDouble(reativePower, m_decimalPlaces) + " p.u.");
+ }
+ case UNIT_VAr: {
+ SetText(
+ wxString::FromDouble(reativePower * systemPowerBase, m_decimalPlaces) + " VAr");
+ }
+ case UNIT_kVAr: {
+ SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e3, m_decimalPlaces) +
+ " kVAr");
+ }
+ case UNIT_MVAr: {
+ SetText(wxString::FromDouble(reativePower * systemPowerBase / 1e6, m_decimalPlaces) +
+ " MVAr");
+ }
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ }
} break;
}
}
diff --git a/Project/Text.h b/Project/Text.h
index 2b10380..80f35fa 100644
--- a/Project/Text.h
+++ b/Project/Text.h
@@ -17,6 +17,7 @@ class Inductor;
class Capacitor;
enum ElementType {
+ TYPE_NONE = 0,
TYPE_BUS,
TYPE_CAPACITOR,
TYPE_IND_MOTOR,
@@ -79,15 +80,17 @@ class Text : public Element
protected:
wxString m_text = _("Text");
+ std::vector<wxString> m_multlineText;
+ bool m_isMultlineText = false;
int m_fontSize = 10;
Element* m_element = NULL;
- ElementType m_elementType;
+ ElementType m_elementType = TYPE_NONE;
int m_elementNumber;
DataType m_dataType;
ElectricalUnit m_unit;
- int m_direction;
- int m_decimalPlaces;
+ int m_direction = 0;
+ int m_decimalPlaces = 2;
};
#endif // TEXT_H
diff --git a/Project/TextForm.cpp b/Project/TextForm.cpp
index 2fd9c9f..148847a 100644
--- a/Project/TextForm.cpp
+++ b/Project/TextForm.cpp
@@ -4,15 +4,26 @@ TextForm::TextForm(wxWindow* parent, Text* text, std::vector<Element*> elementLi
: TextFormBase(parent)
{
m_parent = parent;
- m_text = text;
+ m_textToEdit = text;
m_allElements.GetElementsFromList(elementList);
m_systemPowerBase = systemPowerBase;
- m_choiceName->Enable(false);
- m_choiceTextType->Enable(false);
- m_choiceTextFromBus->Enable(false);
- m_choiceTextToBus->Enable(false);
- m_choiceTextUnit->Enable(false);
+ m_text = new Text();
+ m_text->SetElementType(text->GetElementType());
+ m_text->SetElementNumber(text->GetElementNumber());
+ m_text->SetElement(text->GetElement());
+ m_text->SetDataType(text->GetDataType());
+ m_text->SetDirection(text->GetDirection());
+ m_text->SetUnit(text->GetUnit());
+ m_text->SetDecimalPlaces(text->GetDecimalPlaces());
+
+ if(!LoadChoices()) {
+ m_choiceName->Enable(false);
+ m_choiceTextType->Enable(false);
+ m_choiceTextFromBus->Enable(false);
+ m_choiceTextToBus->Enable(false);
+ m_choiceTextUnit->Enable(false);
+ }
}
TextForm::~TextForm() {}
@@ -66,13 +77,19 @@ void TextForm::OnNameChoiceSelected(wxCommandEvent& event)
ElementNumberChoice();
}
-void TextForm::OnTextEnter(wxCommandEvent& event) {}
+void TextForm::OnTextEnter(wxCommandEvent& event) { Preview(); }
void TextForm::OnToBusChoiceSelected(wxCommandEvent& event)
{
m_text->SetDirection(m_choiceTextToBus->GetSelection());
m_choiceTextFromBus->SetSelection(m_choiceTextToBus->GetSelection());
}
+void TextForm::OnUnitChoiceSelected(wxCommandEvent& event)
+{
+ UnitChoice();
+ Preview();
+}
+
void TextForm::OnTypeChoiceSelected(wxCommandEvent& event)
{
switch(m_text->GetElementType()) {
@@ -145,10 +162,10 @@ void TextForm::OnTypeChoiceSelected(wxCommandEvent& event)
m_text->SetDataType(DATA_NAME);
} break;
case 1: {
- m_text->SetDataType(DATA_PF_ACTIVE);
+ m_text->SetDataType(DATA_ACTIVE_POWER);
} break;
case 2: {
- m_text->SetDataType(DATA_PF_REACTIVE);
+ m_text->SetDataType(DATA_REACTIVE_POWER);
} break;
}
} break;
@@ -159,7 +176,7 @@ void TextForm::OnTypeChoiceSelected(wxCommandEvent& event)
m_text->SetDataType(DATA_NAME);
} break;
case 1: {
- m_text->SetDataType(DATA_PF_REACTIVE);
+ m_text->SetDataType(DATA_REACTIVE_POWER);
} break;
}
} break;
@@ -167,6 +184,576 @@ void TextForm::OnTypeChoiceSelected(wxCommandEvent& event)
break;
}
DataTypeChoice();
+
+ if(m_text->GetDataType() == DATA_NAME) Preview();
+}
+
+bool TextForm::LoadChoices()
+{
+ if(m_text->GetElementType() == TYPE_NONE) return false;
+
+ // Fill the element possible choices.
+ ElementTypeChoice();
+ m_choiceName->SetSelection(m_text->GetElementNumber());
+ ElementNumberChoice();
+ DataTypeChoice();
+
+ // Select the saved choices.
+ switch(m_text->GetElementType()) {
+ case TYPE_BUS: {
+ m_choiceElement->SetSelection(0);
+ switch(m_text->GetDataType()) {
+ case DATA_NAME: {
+ m_choiceTextType->SetSelection(0);
+ } break;
+ case DATA_VOLTAGE: {
+ m_choiceTextType->SetSelection(1);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_V: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kV: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ default:
+ break;
+ }
+
+ } break;
+ case DATA_ANGLE: {
+ m_choiceTextType->SetSelection(2);
+ switch(m_text->GetUnit()) {
+ case UNIT_DEGREE: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_RADIAN: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_SC_CURRENT: {
+ m_choiceTextType->SetSelection(3);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_A: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kA: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_SC_VOLTAGE: {
+ m_choiceTextType->SetSelection(4);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_V: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kV: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_SC_POWER: {
+ m_choiceTextType->SetSelection(5);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_VA: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kVA: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MVA: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case TYPE_SYNC_GENERATOR: {
+ m_choiceElement->SetSelection(1);
+ switch(m_text->GetDataType()) {
+ case DATA_NAME: {
+ m_choiceTextType->SetSelection(0);
+ } break;
+ case DATA_ACTIVE_POWER: {
+ m_choiceTextType->SetSelection(1);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_W: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kW: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MW: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_REACTIVE_POWER: {
+ m_choiceTextType->SetSelection(2);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_VAr: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kVAr: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MVAr: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_SC_CURRENT: {
+ m_choiceTextType->SetSelection(3);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_A: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kA: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case TYPE_LINE: {
+ m_choiceElement->SetSelection(2);
+ switch(m_text->GetDataType()) {
+ case DATA_NAME: {
+ m_choiceTextType->SetSelection(0);
+ } break;
+ case DATA_PF_ACTIVE: {
+ m_choiceTextType->SetSelection(1);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_W: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kW: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MW: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_PF_REACTIVE: {
+ m_choiceTextType->SetSelection(2);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_VAr: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kVAr: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MVAr: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_PF_LOSSES: {
+ m_choiceTextType->SetSelection(3);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_W: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kW: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MW: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_PF_CURRENT: {
+ m_choiceTextType->SetSelection(4);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_A: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kA: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_SC_CURRENT: {
+ m_choiceTextType->SetSelection(5);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_A: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kA: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MW: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case TYPE_TRANSFORMER: {
+ m_choiceElement->SetSelection(3);
+ switch(m_text->GetDataType()) {
+ case DATA_NAME: {
+ m_choiceTextType->SetSelection(0);
+ } break;
+ case DATA_PF_ACTIVE: {
+ m_choiceTextType->SetSelection(1);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_W: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kW: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MW: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_PF_REACTIVE: {
+ m_choiceTextType->SetSelection(2);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_VAr: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kVAr: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MVAr: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_PF_LOSSES: {
+ m_choiceTextType->SetSelection(3);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_W: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kW: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MW: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_PF_CURRENT: {
+ m_choiceTextType->SetSelection(4);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_A: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kA: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_SC_CURRENT: {
+ m_choiceTextType->SetSelection(5);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_A: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kA: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case TYPE_LOAD: {
+ m_choiceElement->SetSelection(4);
+ switch(m_text->GetDataType()) {
+ case DATA_NAME: {
+ m_choiceTextType->SetSelection(0);
+ } break;
+ case DATA_ACTIVE_POWER: {
+ m_choiceTextType->SetSelection(1);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_W: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kW: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MW: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_REACTIVE_POWER: {
+ m_choiceTextType->SetSelection(2);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_VAr: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kVAr: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MVAr: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case TYPE_CAPACITOR: {
+ m_choiceElement->SetSelection(5);
+ switch(m_text->GetDataType()) {
+ case DATA_NAME: {
+ m_choiceTextType->SetSelection(0);
+ } break;
+ case DATA_REACTIVE_POWER: {
+ m_choiceTextType->SetSelection(1);
+
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case TYPE_INDUCTOR: {
+ m_choiceElement->SetSelection(6);
+ switch(m_text->GetDataType()) {
+ case DATA_NAME: {
+ m_choiceTextType->SetSelection(0);
+ } break;
+ case DATA_REACTIVE_POWER: {
+ m_choiceTextType->SetSelection(1);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_VAr: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kVAr: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MVAr: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case TYPE_SYNC_MOTOR: {
+ m_choiceElement->SetSelection(7);
+ switch(m_text->GetDataType()) {
+ case DATA_NAME: {
+ m_choiceTextType->SetSelection(0);
+ } break;
+ case DATA_ACTIVE_POWER: {
+ m_choiceTextType->SetSelection(1);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_W: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kW: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MW: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_REACTIVE_POWER: {
+ m_choiceTextType->SetSelection(2);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_VAr: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kVAr: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MVAr: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case TYPE_IND_MOTOR: {
+ m_choiceElement->SetSelection(8);
+ switch(m_text->GetDataType()) {
+ case DATA_NAME: {
+ m_choiceTextType->SetSelection(0);
+ } break;
+ case DATA_ACTIVE_POWER: {
+ m_choiceTextType->SetSelection(1);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_W: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kW: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MW: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ case DATA_REACTIVE_POWER: {
+ m_choiceTextType->SetSelection(2);
+ switch(m_text->GetUnit()) {
+ case UNIT_PU: {
+ m_choiceTextUnit->SetSelection(0);
+ } break;
+ case UNIT_VAr: {
+ m_choiceTextUnit->SetSelection(1);
+ } break;
+ case UNIT_kVAr: {
+ m_choiceTextUnit->SetSelection(2);
+ } break;
+ case UNIT_MVAr: {
+ m_choiceTextUnit->SetSelection(3);
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+ } break;
+ default:
+ break;
+ }
+
+ if(m_choiceTextFromBus->IsEnabled()) m_choiceTextFromBus->SetSelection(m_text->GetDirection());
+ if(m_choiceTextToBus->IsEnabled()) m_choiceTextToBus->SetSelection(m_text->GetDirection());
+
+ m_textCtrlDecimal->SetValue(wxString::Format("%d", m_text->GetDecimalPlaces()));
+ Preview();
+
+ return true;
}
void TextForm::ElementTypeChoice()
@@ -253,7 +840,7 @@ void TextForm::ElementNumberChoice()
m_choiceTextFromBus->Clear();
m_choiceTextToBus->Clear();
m_choiceTextUnit->Clear();
-
+
int index = m_choiceName->GetSelection();
m_text->SetElementNumber(index);
@@ -264,7 +851,7 @@ void TextForm::ElementNumberChoice()
auto it = m_allElements.GetBusList().begin();
std::advance(it, index);
m_text->SetElement(*it);
-
+
arrayString.Add(_("Name"));
arrayString.Add(_("Voltage"));
arrayString.Add(_("Angle"));
@@ -276,18 +863,17 @@ void TextForm::ElementNumberChoice()
auto it = m_allElements.GetSyncGeneratorList().begin();
std::advance(it, index);
m_text->SetElement(*it);
-
+
arrayString.Add(_("Name"));
arrayString.Add(_("Active power"));
arrayString.Add(_("Reactive power"));
arrayString.Add(_("Fault current"));
} break;
- case TYPE_LINE:
- {
+ case TYPE_LINE: {
auto it = m_allElements.GetLineList().begin();
std::advance(it, index);
m_text->SetElement(*it);
-
+
arrayString.Add(_("Name"));
arrayString.Add(_("Active power flow"));
arrayString.Add(_("Reactive power flow"));
@@ -299,7 +885,7 @@ void TextForm::ElementNumberChoice()
auto it = m_allElements.GetTransformerList().begin();
std::advance(it, index);
m_text->SetElement(*it);
-
+
arrayString.Add(_("Name"));
arrayString.Add(_("Active power flow"));
arrayString.Add(_("Reactive power flow"));
@@ -311,7 +897,7 @@ void TextForm::ElementNumberChoice()
auto it = m_allElements.GetLoadList().begin();
std::advance(it, index);
m_text->SetElement(*it);
-
+
arrayString.Add(_("Name"));
arrayString.Add(_("Active power"));
arrayString.Add(_("Reactive power"));
@@ -320,7 +906,7 @@ void TextForm::ElementNumberChoice()
auto it = m_allElements.GetCapacitorList().begin();
std::advance(it, index);
m_text->SetElement(*it);
-
+
arrayString.Add(_("Name"));
arrayString.Add(_("Reactive power"));
} break;
@@ -328,7 +914,7 @@ void TextForm::ElementNumberChoice()
auto it = m_allElements.GetInductorList().begin();
std::advance(it, index);
m_text->SetElement(*it);
-
+
arrayString.Add(_("Name"));
arrayString.Add(_("Reactive power"));
} break;
@@ -336,7 +922,7 @@ void TextForm::ElementNumberChoice()
auto it = m_allElements.GetSyncMotorList().begin();
std::advance(it, index);
m_text->SetElement(*it);
-
+
arrayString.Add(_("Name"));
arrayString.Add(_("Active power"));
arrayString.Add(_("Reactive power"));
@@ -345,7 +931,7 @@ void TextForm::ElementNumberChoice()
auto it = m_allElements.GetIndMotorList().begin();
std::advance(it, index);
m_text->SetElement(*it);
-
+
arrayString.Add(_("Name"));
arrayString.Add(_("Active power"));
arrayString.Add(_("Reactive power"));
@@ -368,11 +954,11 @@ void TextForm::DataTypeChoice()
m_choiceTextUnit->Clear();
m_choiceTextUnit->Enable();
+
wxArrayString arrayString;
switch(m_text->GetDataType()) {
case DATA_NAME: {
m_choiceTextUnit->Enable(false);
- m_text->UpdateText(m_systemPowerBase);
return;
} break;
case DATA_VOLTAGE:
@@ -436,7 +1022,6 @@ void TextForm::DataTypeChoice()
m_choiceTextToBus->Append(bus1Name);
m_choiceTextFromBus->SetSelection(0);
m_choiceTextToBus->SetSelection(0);
- m_text->SetDirection(0);
m_choiceTextFromBus->Enable();
m_choiceTextToBus->Enable();
@@ -459,7 +1044,6 @@ void TextForm::DataTypeChoice()
m_choiceTextToBus->Append(bus1Name);
m_choiceTextFromBus->SetSelection(0);
m_choiceTextToBus->SetSelection(0);
- m_text->SetDirection(0);
m_choiceTextFromBus->Enable();
m_choiceTextToBus->Enable();
@@ -581,6 +1165,55 @@ void TextForm::UnitChoice()
default:
break;
}
-
+}
+
+void TextForm::Preview()
+{
+ double decimalPlaces = m_text->GetDecimalPlaces();
+ if(m_textCtrlDecimal->GetValue().ToDouble(&decimalPlaces)) m_text->SetDecimalPlaces(decimalPlaces);
+
m_text->UpdateText(m_systemPowerBase);
+
+ m_textCtrlPreview->SetValue(m_text->GetText());
+}
+
+bool TextForm::ValidateData()
+{
+ if(m_choiceElement->GetSelection() == -1) return false;
+ if(m_choiceName->GetSelection() == -1) return false;
+ if(m_choiceTextType->GetSelection() == -1) return false;
+ if(m_text->GetDataType() != DATA_NAME && m_choiceTextUnit->GetSelection() == -1) return false;
+ if(m_text->GetElementType() == TYPE_LINE || m_text->GetElementType() == TYPE_TRANSFORMER) {
+ if(m_text->GetDataType() != DATA_PF_LOSSES) {
+ if(m_choiceTextFromBus->GetSelection() == -1) return false;
+ if(m_choiceTextToBus->GetSelection() == -1) return false;
+ }
+ }
+
+ if(m_choiceTextFromBus->IsEnabled() && m_choiceTextToBus->IsEnabled())
+ m_text->SetDirection(m_choiceTextFromBus->GetSelection());
+ double decimalPlaces = m_text->GetDecimalPlaces();
+ if(m_textCtrlDecimal->GetValue().ToDouble(&decimalPlaces)) m_text->SetDecimalPlaces(decimalPlaces);
+
+ m_textToEdit->SetElementType(m_text->GetElementType());
+ m_textToEdit->SetElementNumber(m_text->GetElementNumber());
+ m_textToEdit->SetElement(m_text->GetElement());
+ m_textToEdit->SetDataType(m_text->GetDataType());
+ m_textToEdit->SetDirection(m_text->GetDirection());
+ m_textToEdit->SetUnit(m_text->GetUnit());
+ m_textToEdit->SetDecimalPlaces(decimalPlaces);
+ m_textToEdit->UpdateText(m_systemPowerBase);
+
+ return true;
+}
+
+void TextForm::OnOKButtonClick(wxCommandEvent& event)
+{
+ if(ValidateData()) {
+ EndModal(wxID_OK);
+ } else {
+ wxString errorMsg = _("There are blank fields.");
+ wxMessageDialog msgDialog(this, errorMsg, _("Error"), wxOK | wxCENTRE | wxICON_ERROR);
+ msgDialog.ShowModal();
+ }
}
diff --git a/Project/TextForm.h b/Project/TextForm.h
index 1a22baa..a24d90e 100644
--- a/Project/TextForm.h
+++ b/Project/TextForm.h
@@ -7,17 +7,24 @@
class TextForm : public TextFormBase
{
- public:
+public:
TextForm(wxWindow* parent, Text* text, std::vector<Element*> elementList, double systemPowerBase = 100e6);
virtual ~TextForm();
+
+ virtual bool LoadChoices();
+
virtual void ElementTypeChoice();
virtual void ElementNumberChoice();
virtual void DataTypeChoice();
virtual void UnitChoice();
- protected:
+ virtual void Preview();
+ virtual bool ValidateData();
+
+protected:
+ virtual void OnUnitChoiceSelected(wxCommandEvent& event);
virtual void OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }
- virtual void OnOKButtonClick(wxCommandEvent& event) { EndModal(wxID_OK); }
+ virtual void OnOKButtonClick(wxCommandEvent& event);
virtual void OnElementChoiceSelected(wxCommandEvent& event);
virtual void OnFromBusChoiceSelected(wxCommandEvent& event);
virtual void OnNameChoiceSelected(wxCommandEvent& event);
@@ -26,8 +33,9 @@ class TextForm : public TextFormBase
virtual void OnTypeChoiceSelected(wxCommandEvent& event);
Text* m_text;
+ Text* m_textToEdit;
wxWindow* m_parent;
ElectricCalculation m_allElements;
double m_systemPowerBase;
};
-#endif // TEXTFORM_H
+#endif // TEXTFORM_H
diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp
index 93013e0..04770e4 100644
--- a/Project/Transformer.cpp
+++ b/Project/Transformer.cpp
@@ -1,8 +1,25 @@
#include "TransformerForm.h"
#include "Transformer.h"
-Transformer::Transformer() : Branch() {}
-Transformer::Transformer(wxString name) : Branch() { m_electricalData.name = name; }
+Transformer::Transformer()
+ : Branch()
+{
+ for(int i = 0; i < 2; i++) {
+ for(int j = 0; j < 3; j++) {
+ m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);
+ }
+ }
+}
+Transformer::Transformer(wxString name)
+ : Branch()
+{
+ for(int i = 0; i < 2; i++) {
+ for(int j = 0; j < 3; j++) {
+ m_electricalData.faultCurrent[i][j] = std::complex<double>(0.0, 0.0);
+ }
+ }
+ m_electricalData.name = name;
+}
Transformer::~Transformer() {}
bool Transformer::AddParent(Element* parent, wxPoint2DDouble position)
{
@@ -12,10 +29,10 @@ bool Transformer::AddParent(Element* parent, wxPoint2DDouble position)
m_position = position;
m_parentList.push_back(parent);
wxPoint2DDouble parentPt =
- parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
- parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
- parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
- m_pointList.push_back(parentPt); // First point
+ parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
+ parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
+ parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
+ m_pointList.push_back(parentPt); // First point
m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_position));
wxRect2DDouble genRect(0, 0, 0, 0);
@@ -27,9 +44,9 @@ bool Transformer::AddParent(Element* parent, wxPoint2DDouble position)
else if(parent != m_parentList[0]) {
m_parentList.push_back(parent);
wxPoint2DDouble parentPt =
- parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
- parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
- parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
+ parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
+ parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
+ parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
// Get the average between the two bus points.
m_position =
@@ -53,7 +70,7 @@ bool Transformer::AddParent(Element* parent, wxPoint2DDouble position)
// Set the second switch point.
m_pointList.push_back(GetSwitchPoint(parent, parentPt, m_pointList[m_pointList.size() - 1]));
- m_pointList.push_back(parentPt); // Last point.
+ m_pointList.push_back(parentPt); // Last point.
m_inserted = true;
wxRect2DDouble genRect(0, 0, 0, 0);
@@ -88,10 +105,10 @@ void Transformer::Draw(wxPoint2DDouble translation, double scale) const
glRotated(m_angle, 0.0, 0.0, 1.0);
glTranslated(-m_position.m_x, -m_position.m_y, 0.0);
- DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20,
- GL_POLYGON);
- DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20,
- GL_POLYGON);
+ DrawCircle(
+ m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20, GL_POLYGON);
+ DrawCircle(
+ m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20 + (m_borderSize + 1.5) / scale, 20, GL_POLYGON);
glPopMatrix();
@@ -280,13 +297,10 @@ void Transformer::RotateNode(Element* parent, bool clockwise)
if(!clockwise) rotAngle = -m_rotationAngle;
if(parent == m_parentList[0]) {
- m_pointList[0] = parent->RotateAtPosition(m_pointList[0], rotAngle);
- }
- else if(parent == m_parentList[1])
- {
- m_pointList[m_pointList.size() - 1] =
- parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], rotAngle);
- }
+ m_pointList[0] = parent->RotateAtPosition(m_pointList[0], rotAngle);
+ } else if(parent == m_parentList[1]) {
+ m_pointList[m_pointList.size() - 1] = parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], rotAngle);
+ }
UpdateSwitchesPosition();
UpdatePowerFlowArrowsPosition();
}
@@ -297,64 +311,61 @@ bool Transformer::SetNodeParent(Element* parent)
if(m_activeNodeID == 2 && parent == m_parentList[1]) return false;
if(parent && m_activeNodeID != 0) {
- wxRect2DDouble nodeRect(0, 0, 0, 0);
- if(m_activeNodeID == 1) {
- nodeRect =
- wxRect2DDouble(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,
- 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);
- }
- if(m_activeNodeID == 2) {
- nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,
- m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize,
- 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);
- }
-
- if(parent->Intersects(nodeRect)) {
- if(m_activeNodeID == 1) {
- // Check if the user is trying to connect the same bus.
- if(m_parentList[1] == parent) {
- m_activeNodeID = 0;
- return false;
- }
-
- m_parentList[0] = parent;
-
- // Centralize the node on bus.
- wxPoint2DDouble parentPt = parent->RotateAtPosition(
- m_pointList[0], -parent->GetAngle()); // Rotate click to horizontal position.
- parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
- parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle());
- m_pointList[0] = parentPt;
-
- UpdateSwitchesPosition();
+ wxRect2DDouble nodeRect(0, 0, 0, 0);
+ if(m_activeNodeID == 1) {
+ nodeRect = wxRect2DDouble(m_pointList[0].m_x - 5.0 - m_borderSize, m_pointList[0].m_y - 5.0 - m_borderSize,
+ 10 + 2.0 * m_borderSize, 10 + 2.0 * m_borderSize);
+ }
+ if(m_activeNodeID == 2) {
+ nodeRect = wxRect2DDouble(m_pointList[m_pointList.size() - 1].m_x - 5.0 - m_borderSize,
+ m_pointList[m_pointList.size() - 1].m_y - 5.0 - m_borderSize, 10 + 2.0 * m_borderSize,
+ 10 + 2.0 * m_borderSize);
+ }
+
+ if(parent->Intersects(nodeRect)) {
+ if(m_activeNodeID == 1) {
+ // Check if the user is trying to connect the same bus.
+ if(m_parentList[1] == parent) {
+ m_activeNodeID = 0;
+ return false;
+ }
+
+ m_parentList[0] = parent;
+
+ // Centralize the node on bus.
+ wxPoint2DDouble parentPt = parent->RotateAtPosition(
+ m_pointList[0], -parent->GetAngle()); // Rotate click to horizontal position.
+ parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
+ parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle());
+ m_pointList[0] = parentPt;
+
+ UpdateSwitchesPosition();
UpdatePowerFlowArrowsPosition();
- return true;
- }
- if(m_activeNodeID == 2) {
- if(m_parentList[0] == parent) {
- m_activeNodeID = 0;
- return false;
- }
-
- m_parentList[1] = parent;
-
- wxPoint2DDouble parentPt =
- parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], -parent->GetAngle());
- parentPt.m_y = parent->GetPosition().m_y;
- parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle());
- m_pointList[m_pointList.size() - 1] = parentPt;
-
- UpdateSwitchesPosition();
+ return true;
+ }
+ if(m_activeNodeID == 2) {
+ if(m_parentList[0] == parent) {
+ m_activeNodeID = 0;
+ return false;
+ }
+
+ m_parentList[1] = parent;
+
+ wxPoint2DDouble parentPt =
+ parent->RotateAtPosition(m_pointList[m_pointList.size() - 1], -parent->GetAngle());
+ parentPt.m_y = parent->GetPosition().m_y;
+ parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle());
+ m_pointList[m_pointList.size() - 1] = parentPt;
+
+ UpdateSwitchesPosition();
UpdatePowerFlowArrowsPosition();
- return true;
- }
- }
- else
- {
- if(m_activeNodeID == 1) m_parentList[0] = NULL;
- if(m_activeNodeID == 2) m_parentList[1] = NULL;
- }
- }
+ return true;
+ }
+ } else {
+ if(m_activeNodeID == 1) m_parentList[0] = NULL;
+ if(m_activeNodeID == 2) m_parentList[1] = NULL;
+ }
+ }
return false;
}
diff --git a/Project/Transformer.h b/Project/Transformer.h
index 8c958a1..79e2380 100644
--- a/Project/Transformer.h
+++ b/Project/Transformer.h
@@ -47,6 +47,8 @@ struct TransformerElectricalData {
double primaryGrndReactance = 0.0;
double secondaryGrndResistance = 0.0;
double secondaryGrndReactance = 0.0;
+ // p.u. fault data
+ std::complex<double> faultCurrent[2][3];
};
class Transformer : public Branch
diff --git a/Project/TransformerForm.cpp b/Project/TransformerForm.cpp
index 3d87a13..b7ca491 100644
--- a/Project/TransformerForm.cpp
+++ b/Project/TransformerForm.cpp
@@ -117,7 +117,7 @@ void TransformerForm::OnStabilityButtonClick(wxCommandEvent& event)
bool TransformerForm::ValidateData()
{
- TransformerElectricalData data;
+ TransformerElectricalData data = m_transformer->GetElectricalData();
data.name = m_textCtrlName->GetValue();
data.baseVoltage = m_choiceBaseVoltage->GetSelection();
diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp
index 7ada5e5..bdb8211 100644
--- a/Project/Workspace.cpp
+++ b/Project/Workspace.cpp
@@ -25,8 +25,8 @@ Camera::Camera()
Camera::~Camera() {}
wxPoint2DDouble Camera::ScreenToWorld(wxPoint2DDouble screenCoords) const
{
- return wxPoint2DDouble(screenCoords.m_x / m_scale - m_translation.m_x,
- screenCoords.m_y / m_scale - m_translation.m_y);
+ return wxPoint2DDouble(
+ screenCoords.m_x / m_scale - m_translation.m_x, screenCoords.m_y / m_scale - m_translation.m_y);
}
void Camera::SetTranslation(wxPoint2DDouble screenPoint)
@@ -54,8 +54,12 @@ wxPoint2DDouble Camera::GetMousePosition(bool worldCoords) const
}
// Workspace
-Workspace::Workspace() : WorkspaceBase(NULL) {}
-Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar) : WorkspaceBase(parent)
+Workspace::Workspace()
+ : WorkspaceBase(NULL)
+{
+}
+Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar)
+ : WorkspaceBase(parent)
{
m_name = name;
m_statusBar = statusBar;
@@ -67,7 +71,7 @@ Workspace::Workspace(wxWindow* parent, wxString name, wxStatusBar* statusBar) :
m_elementNumber[i] = 1;
}
- const int widths[4] = {-3, -1, 100, 100};
+ const int widths[4] = { -3, -1, 100, 100 };
m_statusBar->SetStatusWidths(4, widths);
}
@@ -87,8 +91,8 @@ void Workspace::OnPaint(wxPaintEvent& event)
SetViewport();
// Set GLCanvas scale and translation.
- glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); // Scale
- glTranslated(m_camera->GetTranslation().m_x, m_camera->GetTranslation().m_y, 0.0); // Translation
+ glScaled(m_camera->GetScale(), m_camera->GetScale(), 0.0); // Scale
+ glTranslated(m_camera->GetTranslation().m_x, m_camera->GetTranslation().m_y, 0.0); // Translation
// Draw
@@ -121,14 +125,14 @@ void Workspace::OnPaint(wxPaintEvent& event)
glVertex2d(m_selectionRect.m_x + m_selectionRect.m_width, m_selectionRect.m_y);
glEnd();
- glFlush(); // Sends all pending information directly to the GPU.
+ glFlush(); // Sends all pending information directly to the GPU.
m_glCanvas->SwapBuffers();
event.Skip();
}
void Workspace::SetViewport()
{
- glClearColor(1.0, 1.0, 1.0, 1.0); // White background.
+ glClearColor(1.0, 1.0, 1.0, 1.0); // White background.
glClear(GL_COLOR_BUFFER_BIT);
glDisable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
@@ -167,7 +171,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
if(typeid(*element) == typeid(Bus)) {
// Select the bus.
element->SetSelected();
- foundElement = true; // Element found.
+ foundElement = true; // Element found.
// Add the new element's parent. If the element being inserted returns true, back to
// edit mode.
if(newElement->AddParent(element, m_camera->ScreenToWorld(event.GetPosition()))) {
@@ -188,7 +192,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
bool clickPickbox = false;
for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) {
Element* element = *it;
- element->ResetPickboxes(); // Reset pickbox state.
+ element->ResetPickboxes(); // Reset pickbox state.
// Set movement initial position (not necessarily will be moved).
element->StartMove(m_camera->ScreenToWorld(event.GetPosition()));
@@ -252,6 +256,9 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
void Workspace::OnLeftDoubleClick(wxMouseEvent& event)
{
+ bool elementEdited = false;
+ bool redraw = false;
+
for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) {
Element* element = *it;
@@ -264,14 +271,16 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event)
oldBus = *(Bus*)element;
}
element->ShowForm(this, element);
+ elementEdited = true;
+ redraw = true;
// If the edited element is a bus and was changed the nominal voltage, this voltage must be
// propagated through the lines
if(elementIsBus) {
// The voltage was changed
if(oldBus.GetEletricalData().nominalVoltage != ((Bus*)element)->GetEletricalData().nominalVoltage ||
- oldBus.GetEletricalData().nominalVoltageUnit !=
- ((Bus*)element)->GetEletricalData().nominalVoltageUnit) {
+ oldBus.GetEletricalData().nominalVoltageUnit !=
+ ((Bus*)element)->GetEletricalData().nominalVoltageUnit) {
// Check if the lines has this bus as parent
for(auto it = m_elementList.begin(); it != m_elementList.end(); it++) {
Element* child = *it;
@@ -300,14 +309,17 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event)
element->SetOnline(element->IsOnline() ? false : true);
}
}
-
- //Text element
+
+ // Text element
for(auto it = m_textList.begin(); it != m_textList.end(); ++it) {
Text* text = *it;
if(text->Contains(m_camera->ScreenToWorld(event.GetPosition()))) {
text->ShowForm(this, m_elementList);
+ redraw = true;
}
}
+ if(elementEdited) UpdateTextElements();
+ if(redraw) Redraw();
}
void Workspace::OnRightClickDown(wxMouseEvent& event)
@@ -323,8 +335,8 @@ void Workspace::OnRightClickDown(wxMouseEvent& event)
wxMenu menu;
if(element->GetContextMenu(menu)) {
menu.SetClientData(element);
- menu.Connect(wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(Workspace::OnPopupClick), NULL,
- this);
+ menu.Connect(
+ wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(Workspace::OnPopupClick), NULL, this);
PopupMenu(&menu);
redraw = true;
}
@@ -455,7 +467,7 @@ void Workspace::OnMouseMotion(wxMouseEvent& event)
bool redraw = false;
switch(m_mode) {
case MODE_INSERT: {
- Element* newElement = *(m_elementList.end() - 1); // Get the last element in the list.
+ Element* newElement = *(m_elementList.end() - 1); // Get the last element in the list.
newElement->SetPosition(m_camera->ScreenToWorld(event.GetPosition()));
redraw = true;
} break;
@@ -582,7 +594,7 @@ void Workspace::OnMiddleDown(wxMouseEvent& event)
{
// Set to drag mode.
if(m_mode != MODE_INSERT && m_mode != MODE_INSERT_TEXT && m_mode != MODE_DRAG_INSERT &&
- m_mode != MODE_DRAG_INSERT_TEXT) {
+ m_mode != MODE_DRAG_INSERT_TEXT) {
m_mode = MODE_DRAG;
} else if(m_mode == MODE_INSERT_TEXT) {
m_mode = MODE_DRAG_INSERT_TEXT;
@@ -596,7 +608,7 @@ void Workspace::OnMiddleDown(wxMouseEvent& event)
void Workspace::OnMiddleUp(wxMouseEvent& event)
{
if(m_mode != MODE_INSERT && m_mode != MODE_INSERT_TEXT && m_mode != MODE_DRAG_INSERT &&
- m_mode != MODE_DRAG_INSERT_TEXT) {
+ m_mode != MODE_DRAG_INSERT_TEXT) {
// Set to edit mode back.
m_mode = MODE_EDIT;
} else if(m_mode == MODE_DRAG_INSERT_TEXT) {
@@ -626,10 +638,10 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
char key = event.GetUnicodeKey();
if(key != WXK_NONE) {
switch(key) {
- case WXK_ESCAPE: // Cancel operations.
+ case WXK_ESCAPE: // Cancel operations.
{
if(m_mode == MODE_INSERT) {
- m_elementList.pop_back(); // Removes the last element being inserted.
+ m_elementList.pop_back(); // Removes the last element being inserted.
m_mode = MODE_EDIT;
Redraw();
} else if(m_mode == MODE_INSERT_TEXT) {
@@ -638,7 +650,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
Redraw();
}
} break;
- case WXK_DELETE: // Delete selected elements
+ case WXK_DELETE: // Delete selected elements
{
DeleteSelectedElements();
} break;
@@ -656,15 +668,15 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
Fit();
}
} break;
- case 'R': // Rotate the selected elements.
+ case 'R': // Rotate the selected elements.
{
RotateSelectedElements(event.GetModifiers() != wxMOD_SHIFT);
} break;
- case 'B': // Insert a bus.
+ case 'B': // Insert a bus.
{
if(!insertingElement) {
Bus* newBus = new Bus(m_camera->ScreenToWorld(event.GetPosition()),
- wxString::Format(_("Bus %d"), GetElementNumber(ID_BUS)));
+ wxString::Format(_("Bus %d"), GetElementNumber(ID_BUS)));
IncrementElementNumber(ID_BUS);
m_elementList.push_back(newBus);
m_mode = MODE_INSERT;
@@ -674,13 +686,13 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
} break;
case 'L': {
if(!insertingElement) {
- if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a load.
+ if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a load.
Load* newLoad = new Load(wxString::Format(_("Load %d"), GetElementNumber(ID_LOAD)));
IncrementElementNumber(ID_LOAD);
m_elementList.push_back(newLoad);
m_mode = MODE_INSERT;
m_statusBar->SetStatusText(_("Insert Load: Click on a buses, ESC to cancel."));
- } else { // Insert a power line.
+ } else { // Insert a power line.
Line* newLine = new Line(wxString::Format(_("Line %d"), GetElementNumber(ID_LINE)));
IncrementElementNumber(ID_LINE);
m_elementList.push_back(newLine);
@@ -690,7 +702,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
Redraw();
}
} break;
- case 'T': // Insert a transformer.
+ case 'T': // Insert a transformer.
{
if(!insertingElement) {
Transformer* newTransformer =
@@ -702,7 +714,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
Redraw();
}
} break;
- case 'G': // Insert a generator.
+ case 'G': // Insert a generator.
{
if(!insertingElement) {
SyncGenerator* newGenerator =
@@ -716,14 +728,14 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
} break;
case 'I': {
if(!insertingElement) {
- if(event.GetModifiers() == wxMOD_SHIFT) { // Insert an inductor.
+ if(event.GetModifiers() == wxMOD_SHIFT) { // Insert an inductor.
Inductor* newInductor =
new Inductor(wxString::Format(_("Inductor %d"), GetElementNumber(ID_INDUCTOR)));
IncrementElementNumber(ID_INDUCTOR);
m_elementList.push_back(newInductor);
m_mode = MODE_INSERT;
m_statusBar->SetStatusText(_("Insert Inductor: Click on a buses, ESC to cancel."));
- } else // Insert an induction motor.
+ } else // Insert an induction motor.
{
IndMotor* newIndMotor =
new IndMotor(wxString::Format(_("Induction motor %d"), GetElementNumber(ID_INDMOTOR)));
@@ -735,7 +747,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
Redraw();
}
} break;
- case 'K': // Insert a synchronous condenser.
+ case 'K': // Insert a synchronous condenser.
{
if(!insertingElement) {
SyncMotor* newSyncCondenser =
@@ -749,7 +761,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
} break;
case 'C': {
if(!insertingElement) {
- if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a capacitor.
+ if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a capacitor.
Capacitor* newCapacitor =
new Capacitor(wxString::Format(_("Capacitor %d"), GetElementNumber(ID_CAPACITOR)));
IncrementElementNumber(ID_CAPACITOR);
@@ -880,7 +892,7 @@ void Workspace::RotateSelectedElements(bool clockwise)
// Parent's element rotating...
for(int i = 0; i < (int)element->GetParentList().size(); i++) {
Element* parent = element->GetParentList()[i];
- if(parent) { // Check if parent is not null
+ if(parent) { // Check if parent is not null
if(parent->IsSelected()) {
element->RotateNode(parent, clockwise);
// Update the positions used on motion action, the element will not be necessarily
@@ -908,6 +920,7 @@ void Workspace::RotateSelectedElements(bool clockwise)
void Workspace::DeleteSelectedElements()
{
+ // Don't set the end of the list at the loop's begin.
for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) {
Element* element = *it;
@@ -922,9 +935,21 @@ void Workspace::DeleteSelectedElements()
}
}
}
+
+ for(auto itt = m_textList.begin(); itt != m_textList.end(); ++itt) {
+ Text* text = *itt;
+ if(text->GetElement() == element) m_textList.erase(itt--);
+ }
+
m_elementList.erase(it--);
}
}
+
+ for(auto it = m_textList.begin(); it != m_textList.end(); ++it) {
+ Text* text = *it;
+ if(text->IsSelected()) m_textList.erase(it--);
+ }
+
Redraw();
}
@@ -979,7 +1004,7 @@ void Workspace::ValidateBusesVoltages(Element* initialBus)
BusElectricalData data2 = ((Bus*)child->GetParentList()[1])->GetEletricalData();
if(data1.nominalVoltage != data2.nominalVoltage ||
- data1.nominalVoltageUnit != data2.nominalVoltageUnit) {
+ data1.nominalVoltageUnit != data2.nominalVoltageUnit) {
data1.nominalVoltage = nominalVoltage;
data2.nominalVoltage = nominalVoltage;
data1.nominalVoltageUnit = nominalVoltageUnit;
@@ -988,7 +1013,7 @@ void Workspace::ValidateBusesVoltages(Element* initialBus)
((Bus*)child->GetParentList()[0])->SetElectricalData(data1);
((Bus*)child->GetParentList()[1])->SetElectricalData(data2);
- it = m_elementList.begin(); // Restart search.
+ it = m_elementList.begin(); // Restart search.
}
}
}
@@ -1024,7 +1049,16 @@ bool Workspace::RunPowerFlow()
msgDialog.ShowModal();
}
+ UpdateTextElements();
Redraw();
return result;
}
+
+void Workspace::UpdateTextElements()
+{
+ for(auto it = m_textList.begin(); it != m_textList.end(); ++it) {
+ Text* text = *it;
+ text->UpdateText(100e6);
+ }
+}
diff --git a/Project/Workspace.h b/Project/Workspace.h
index b4d1e54..818e07e 100644
--- a/Project/Workspace.h
+++ b/Project/Workspace.h
@@ -80,6 +80,8 @@ class Workspace : public WorkspaceBase
void ValidateBusesVoltages(Element* initialBus);
void ValidateElementsVoltages();
+
+ void UpdateTextElements();
int GetElementNumber(ElementID elementID) { return m_elementNumber[elementID]; }
void IncrementElementNumber(ElementID elementID) { m_elementNumber[elementID]++; }