40 wxString atpNodeName =
"";
41 double stepSize = 1e-6;
42 double pspStepSize = 1e-3;
44 int recordFrequency = 1;
45 bool useMedianFilter =
true;
46 std::complex<double> puVoltage = std::complex<double>(1.0, 0.0);
47 double baseVoltage = 138.0e3;
48 double frequency = 60.0;
49 wxString atpWorkFolder =
"";
53 std::complex<double> current = std::complex<double>(0.0, 0.0);
56 std::complex<double> y0 = std::complex<double>(0.0, 0.0);
57 std::complex<double> power = std::complex<double>(0.0, 0.0);
58 std::complex<double> powerDiff = std::complex<double>(0.0, 0.0);
61 int numMaxHarmonics = 15;
62 double harmonicsThreshold = 0.3;
65 std::map<int, std::complex<double> > currHarmonics;
69 std::vector<ATPSample> atpSampleData;
71 std::vector< std::pair<double, double> > inFFTData;
72 std::vector< std::pair<double ,std::complex<double> > > outFFTData;
91 virtual void DrawDC(
GUIColour* guiColour, wxPoint2DDouble translation,
double scale, wxGraphicsContext* gc)
const;
92 virtual void DrawDC(
GUIColour* guiColour, wxPoint2DDouble translation,
double scale, wxDC& dc)
const;
93 virtual bool Contains(wxPoint2DDouble position)
const {
return m_rect.Contains(position); }
94 virtual bool Intersects(wxRect2DDouble rect)
const {
return m_rect.Intersects(rect); }
95 virtual void Rotate(
bool clockwise =
true);
98 virtual bool ShowForm(wxWindow* parent,
Element* element, wxWindow* workspace =
nullptr);
100 virtual rapidxml::xml_node<>* SaveElement(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementListNode);
101 virtual bool OpenElement(rapidxml::xml_node<>* elementNode, std::vector<Element*> parentList);
104 virtual void SetEMTElementData(
EMTElementData data) { m_data = data; }
106 wxArrayString GetATPNodes(wxArrayString atpFile);
107 bool SetATPParameter(wxTextFile& atpFile,
const wxString& card,
const int& line,
const int& initPos,
const int& size,
const wxString& value);
108 bool AddConnectionToNode(wxTextFile& atpFile,
const wxString& node);
109 void MedianFilter(std::vector<double>& data);
110 bool CalculateCurrent( wxString& errorMsg,
const Mode& mode = Mode::Phasor,
const bool& saveRawData =
false,
const bool& saveFFTData =
false);
111 void UpdateData(
const PropertiesData* properties =
nullptr,
bool updateVoltageBase =
false);
112 void SetNominalVoltage(std::vector<double> nominalVoltage, std::vector<ElectricalUnit> nominalVoltageUnit);
115 void DoMedianFilter(
double* extension, std::vector<double>& result,
const int& n);
116 wxString ATPField(
double value,
size_t width);
117 bool CheckLISFile(wxFileName fileName, wxString& errorMsg)
const;
virtual void DrawDC(GUIColour *guiColour, wxPoint2DDouble translation, double scale, wxGraphicsContext *gc) const
Draw the element using GDI+.
virtual bool AddParent(Element *parent, wxPoint2DDouble position)
Add a parent to the element. This method must be used on power elements that connect to a bus,...