summaryrefslogtreecommitdiffstats
path: root/Project/Transformer.h
diff options
context:
space:
mode:
Diffstat (limited to 'Project/Transformer.h')
-rw-r--r--Project/Transformer.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/Project/Transformer.h b/Project/Transformer.h
new file mode 100644
index 0000000..8c958a1
--- /dev/null
+++ b/Project/Transformer.h
@@ -0,0 +1,81 @@
+#ifndef TRANSFORMER_H
+#define TRANSFORMER_H
+
+#include "Branch.h"
+
+class TransformerForm;
+
+enum TransformerConnection {
+ GWYE_GWYE = 0,
+ WYE_GWYE,
+ GWYE_WYE,
+ WYE_WYE,
+ DELTA_GWYE,
+ DELTA_WYE,
+ GWYE_DELTA,
+ WYE_DELTA,
+ DELTA_DELTA
+};
+
+struct TransformerElectricalData {
+ // General
+ wxString name = "";
+ double primaryNominalVoltage = 138.0;
+ ElectricalUnit primaryNominalVoltageUnit = UNIT_kV;
+ double secondaryNominalVoltage = 138.0;
+ ElectricalUnit secondaryNominalVoltageUnit = UNIT_kV;
+ int baseVoltage = 0;
+ double nominalPower = 100.0;
+ ElectricalUnit nominalPowerUnit = UNIT_MVA;
+ double resistance = 0.0;
+ ElectricalUnit resistanceUnit = UNIT_PU;
+ double indReactance = 1.0;
+ ElectricalUnit indReactanceUnit = UNIT_PU;
+ TransformerConnection connection = GWYE_GWYE;
+ double turnsRatio = 1.0;
+ double phaseShift = 0.0;
+ bool useTransformerPower = false;
+
+ // Power flow (p.u.)
+ std::complex<double> current[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};
+ std::complex<double> powerFlow[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};
+
+ // Fault
+ double zeroResistance = 0.0;
+ double zeroIndReactance = 1.0;
+ double primaryGrndResistance = 0.0;
+ double primaryGrndReactance = 0.0;
+ double secondaryGrndResistance = 0.0;
+ double secondaryGrndReactance = 0.0;
+};
+
+class Transformer : public Branch
+{
+ public:
+ Transformer();
+ Transformer(wxString name);
+ virtual ~Transformer();
+
+ virtual bool AddParent(Element* parent, wxPoint2DDouble position);
+ virtual bool Contains(wxPoint2DDouble position) const;
+ virtual void Draw(wxPoint2DDouble translation, double scale) const;
+ virtual bool Intersects(wxRect2DDouble rect) const;
+ virtual void Rotate(bool clockwise = true);
+ virtual void Move(wxPoint2DDouble position);
+ virtual void MoveNode(Element* parent, wxPoint2DDouble position);
+ virtual void StartMove(wxPoint2DDouble position);
+ virtual bool GetContextMenu(wxMenu& menu);
+ virtual void RotateNode(Element* parent, bool clockwise);
+ virtual bool SetNodeParent(Element* parent);
+ virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection);
+ virtual bool ShowForm(wxWindow* parent, Element* element);
+ virtual TransformerElectricalData GetElectricalData() { return m_electricalData; }
+ virtual void SetElectricaData(TransformerElectricalData electricalData) { m_electricalData = electricalData; }
+ virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);
+
+ protected:
+ void UpdatePowerFlowArrowsPosition();
+ TransformerElectricalData m_electricalData;
+};
+
+#endif // TRANSFORMER_H