25enum TransformerConnection {
40 double primaryNominalVoltage = 138.0;
41 ElectricalUnit primaryNominalVoltageUnit = ElectricalUnit::UNIT_kV;
42 double secondaryNominalVoltage = 138.0;
43 ElectricalUnit secondaryNominalVoltageUnit = ElectricalUnit::UNIT_kV;
45 double nominalPower = 100.0;
46 ElectricalUnit nominalPowerUnit = ElectricalUnit::UNIT_MVA;
47 double resistance = 0.0;
48 ElectricalUnit resistanceUnit = ElectricalUnit::UNIT_PU;
49 double indReactance = 1.0;
50 ElectricalUnit indReactanceUnit = ElectricalUnit::UNIT_PU;
51 TransformerConnection connection = GWYE_GWYE;
52 double turnsRatio = 1.0;
53 double phaseShift = 0.0;
54 bool useTransformerPower =
false;
57 bool hasTapChanger =
false;
58 double nominalTurnsRatio = 1.0;
59 int oltcControlledBus = 1;
60 double oltcTargetVoltage = 1.0;
61 double oltcVoltageDeadband = 0.005;
62 double oltcMinTap = 0.90;
63 double oltcMaxTap = 1.10;
64 double oltcTapStep = 0.00625;
65 bool oltcIsDiscrete =
false;
68 std::complex<double> current[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};
69 std::complex<double> powerFlow[2] = {std::complex<double>(0.0, 0.0), std::complex<double>(0.0, 0.0)};
72 double zeroResistance = 0.0;
73 double zeroIndReactance = 1.0;
74 double primaryGrndResistance = 0.0;
75 double primaryGrndReactance = 0.0;
76 double secondaryGrndResistance = 0.0;
77 double secondaryGrndReactance = 0.0;
80 std::complex<double> faultCurrent[2][3];
83 std::vector<int> harmonicOrder;
84 std::vector< std::complex<double> > harmonicCurrent[2];
103 virtual bool AddParent(
Element* parent, wxPoint2DDouble position,
bool isOpening =
false);
104 virtual bool Contains(wxPoint2DDouble position)
const;
106 virtual void DrawDC(
GUIColour* guiColour,wxPoint2DDouble translation,
double scale, wxGraphicsContext* gc)
const;
107 virtual void DrawDC(
GUIColour* guiColour,wxPoint2DDouble translation,
double scale, wxDC& dc)
const;
108 virtual bool Intersects(wxRect2DDouble rect)
const;
109 virtual void Rotate(
bool clockwise =
true);
110 virtual void Move(wxPoint2DDouble position);
111 virtual void AlignToGrid(
double gridSize = 20.0)
override;
113 virtual void StartMove(wxPoint2DDouble position);
119 virtual bool ShowForm(wxWindow* parent,
Element* element, wxWindow* workspace =
nullptr);
124 virtual void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);
125 virtual void SetBestPositionAndRotation();
127 virtual rapidxml::xml_node<>* SaveElement(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementListNode);
128 virtual bool OpenElement(rapidxml::xml_node<>* elementNode, std::vector<Element*> parentList);
131 void UpdatePowerFlowArrowsPosition();
PowerFlowDirection
Direction of power flow arrows.
Abstract class for branch power elements.
Base class of all elements of the program. This class is responsible for manage graphical and his dat...