30 wxString atpNodeName =
"";
31 double stepSize = 1e-6;
33 int recordFrequency = 1;
34 bool useMedianFilter =
true;
35 std::complex<double> puVoltage = std::complex<double>(1.0, 0.0);
36 double baseVoltage = 138.0e3;
37 double frequency = 60.0;
38 wxString atpWorkFolder =
"";
42 std::complex<double> y0 = std::complex<double>(0.0, 0.0);
43 std::complex<double> power = std::complex<double>(0.0, 0.0);
44 std::complex<double> powerDiff = std::complex<double>(0.0, 0.0);
47 int numMaxHarmonics = 15;
48 double harmonicsThreshold = 0.3;
51 std::map<int, std::complex<double> > currHarmonics;
52 std::vector< std::pair<double, double> > atpData;
53 std::vector< std::pair<double, double> > inFFTData;
54 std::vector< std::pair<double ,std::complex<double> > > outFFTData;
73 virtual void DrawDC(wxPoint2DDouble translation,
double scale, wxGraphicsContext* gc)
const;
74 virtual void DrawDC(wxPoint2DDouble translation,
double scale, wxDC& dc)
const;
75 virtual bool Contains(wxPoint2DDouble position)
const {
return m_rect.Contains(position); }
76 virtual bool Intersects(wxRect2DDouble rect)
const {
return m_rect.Intersects(rect); }
77 virtual void Rotate(
bool clockwise =
true);
82 virtual rapidxml::xml_node<>* SaveElement(rapidxml::xml_document<>& doc, rapidxml::xml_node<>* elementListNode);
83 virtual bool OpenElement(rapidxml::xml_node<>* elementNode, std::vector<Element*> parentList);
86 virtual void SetEMTElementData(
EMTElementData data) { m_data = data; }
88 wxArrayString GetATPNodes(wxArrayString atpFile);
89 bool SetATPParameter(wxTextFile& atpFile,
const wxString& card,
const int& line,
const int& initPos,
const int& size,
const wxString& value);
90 bool AddConnectionToNode(wxTextFile& atpFile,
const wxString& node);
91 std::vector<double> MedianFilter(
const std::vector<double>& data);
92 bool CalculateCurrent( wxString& errorMsg,
const bool& saveFFTData =
false);
93 void UpdateData(
const PropertiesData* properties =
nullptr,
bool updateVoltageBase =
false);
96 std::vector<double> DoMedianFilter(
double* extension, std::vector<double>& result,
const int& n);
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,...