summaryrefslogtreecommitdiffstats
path: root/Project/SyncGenerator.cpp
diff options
context:
space:
mode:
authorThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-09-04 20:05:30 -0300
committerGitHub <noreply@github.com>2017-09-04 20:05:30 -0300
commit926af7f34aaf5aebdbac0cbc550ed75647874258 (patch)
tree4df26f8c631aeeeed6e5c9e8aab87c4c663bd30f /Project/SyncGenerator.cpp
parent17d1dd82ec065eff08546ef1fd2a188ce77471b2 (diff)
parent6f3421c4150e49af026432a2a2be0171d741ad03 (diff)
downloadPSP.git-926af7f34aaf5aebdbac0cbc550ed75647874258.tar.gz
PSP.git-926af7f34aaf5aebdbac0cbc550ed75647874258.tar.xz
PSP.git-926af7f34aaf5aebdbac0cbc550ed75647874258.zip
Merge pull request #33 from Thales1330/wip/electromechanical-calc
Wip electromechanical calc
Diffstat (limited to 'Project/SyncGenerator.cpp')
-rw-r--r--Project/SyncGenerator.cpp60
1 files changed, 50 insertions, 10 deletions
diff --git a/Project/SyncGenerator.cpp b/Project/SyncGenerator.cpp
index 17a7e91..2579cef 100644
--- a/Project/SyncGenerator.cpp
+++ b/Project/SyncGenerator.cpp
@@ -1,21 +1,15 @@
#include "SyncMachineForm.h"
#include "SyncGenerator.h"
+#include "ControlElementContainer.h"
-SyncGenerator::SyncGenerator()
- : Machines()
-{
- Init();
-}
-
-SyncGenerator::SyncGenerator(wxString name)
- : Machines()
+SyncGenerator::SyncGenerator() : Machines() { Init(); }
+SyncGenerator::SyncGenerator(wxString name) : Machines()
{
Init();
m_electricalData.name = name;
}
SyncGenerator::~SyncGenerator() {}
-
void SyncGenerator::Init()
{
int numPtsSine = 10;
@@ -28,6 +22,9 @@ void SyncGenerator::Init()
double y = std::sin(x);
m_sinePts.push_back(wxPoint2DDouble((x / pi) * mx, y * my));
}
+
+ m_electricalData.avr = new ControlElementContainer();
+ m_electricalData.speedGov = new ControlElementContainer();
}
void SyncGenerator::DrawSymbol() const
@@ -131,7 +128,7 @@ SyncGeneratorElectricalData SyncGenerator::GetPUElectricalData(double systemPowe
}
void SyncGenerator::SetNominalVoltage(std::vector<double> nominalVoltage,
- std::vector<ElectricalUnit> nominalVoltageUnit)
+ std::vector<ElectricalUnit> nominalVoltageUnit)
{
if(nominalVoltage.size() > 0) {
m_electricalData.nominalVoltage = nominalVoltage[0];
@@ -143,6 +140,27 @@ Element* SyncGenerator::GetCopy()
{
SyncGenerator* copy = new SyncGenerator();
*copy = *this;
+ auto data = copy->GetElectricalData();
+
+ // Copy AVR
+ std::vector<ConnectionLine*> cLineList;
+ std::vector<ControlElement*> elementList;
+ m_electricalData.avr->GetContainerCopy(elementList, cLineList);
+
+ ControlElementContainer* avrCopy = new ControlElementContainer();
+ avrCopy->FillContainer(elementList, cLineList);
+ data.avr = avrCopy;
+
+ // Copy Speed Governor
+ cLineList.clear();
+ elementList.clear();
+ m_electricalData.speedGov->GetContainerCopy(elementList, cLineList);
+
+ ControlElementContainer* speedGovCopy = new ControlElementContainer();
+ speedGovCopy->FillContainer(elementList, cLineList);
+ data.speedGov = speedGovCopy;
+
+ copy->SetElectricalData(data);
return copy;
}
@@ -191,3 +209,25 @@ wxString SyncGenerator::GetTipText() const
return tipText;
}
+
+bool SyncGenerator::GetPlotData(ElementPlotData& plotData)
+{
+ if(!m_electricalData.plotSyncMachine) return false;
+ plotData.SetName(m_electricalData.name);
+ plotData.SetCurveType(ElementPlotData::CT_SYNC_GENERATOR);
+
+ std::vector<double> absTerminalVoltage, activePower, reactivePower;
+ for(unsigned int i = 0; i < m_electricalData.terminalVoltageVector.size(); ++i) {
+ absTerminalVoltage.push_back(std::abs(m_electricalData.terminalVoltageVector[i]));
+ activePower.push_back(std::real(m_electricalData.electricalPowerVector[i]));
+ reactivePower.push_back(std::imag(m_electricalData.electricalPowerVector[i]));
+ }
+ plotData.AddData(absTerminalVoltage, _("Terminal voltage"));
+ plotData.AddData(activePower, _("Active power"));
+ plotData.AddData(reactivePower, _("Reactive power"));
+ plotData.AddData(m_electricalData.mechanicalPowerVector, _("Mechanical power"));
+ plotData.AddData(m_electricalData.freqVector, _("Frequency"));
+ plotData.AddData(m_electricalData.fieldVoltageVector, _("Field voltage"));
+ plotData.AddData(m_electricalData.deltaVector, _("Delta"));
+ return true;
+}