diff options
author | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2017-09-04 20:05:30 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-04 20:05:30 -0300 |
commit | 926af7f34aaf5aebdbac0cbc550ed75647874258 (patch) | |
tree | 4df26f8c631aeeeed6e5c9e8aab87c4c663bd30f /Project/SyncGenerator.cpp | |
parent | 17d1dd82ec065eff08546ef1fd2a188ce77471b2 (diff) | |
parent | 6f3421c4150e49af026432a2a2be0171d741ad03 (diff) | |
download | PSP.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.cpp | 60 |
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; +} |