diff options
Diffstat (limited to 'Project/Electromechanical.cpp')
-rw-r--r-- | Project/Electromechanical.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/Project/Electromechanical.cpp b/Project/Electromechanical.cpp index 1100300..4f416a6 100644 --- a/Project/Electromechanical.cpp +++ b/Project/Electromechanical.cpp @@ -98,24 +98,23 @@ bool Electromechanical::RunStabilityCalculation() if(!InitializeDynamicElements()) return false; double pbdTime = m_plotTime; - double currentTime = 0.0; double currentPlotTime = 0.0; double currentPbdTime = 0.0; - while(currentTime < m_simTime) { - if(HasEvent(currentTime)) { - SetEvent(currentTime); + while(m_currentTime < m_simTime) { + if(HasEvent(m_currentTime)) { + SetEvent(m_currentTime); GetLUDecomposition(m_yBus, m_yBusL, m_yBusU); } - if(currentPlotTime >= m_plotTime || currentTime == 0.0) { - m_timeVector.push_back(currentTime); + if(currentPlotTime >= m_plotTime || m_currentTime == 0.0) { + m_timeVector.push_back(m_currentTime); SaveData(); currentPlotTime = 0.0; } if(currentPbdTime > pbdTime) { - if(!pbd.Update((currentTime / m_simTime) * 100, wxString::Format("Time = %.2fs", currentTime))) { - m_errorMsg = wxString::Format(_("Simulation cancelled at %.2fs."), currentTime); + if(!pbd.Update((m_currentTime / m_simTime) * 100, wxString::Format("Time = %.2fs", m_currentTime))) { + m_errorMsg = wxString::Format(_("Simulation cancelled at %.2fs."), m_currentTime); pbd.Update(100); return false; } @@ -124,7 +123,7 @@ bool Electromechanical::RunStabilityCalculation() if(!SolveSynchronousMachines()) return false; - currentTime += m_timeStep; + m_currentTime += m_timeStep; currentPlotTime += m_timeStep; currentPbdTime += m_timeStep; } @@ -662,6 +661,7 @@ bool Electromechanical::InitializeDynamicElements() if(data.avrSolver) delete data.avrSolver; data.avrSolver = new ControlElementSolver(data.avr, m_timeStep * m_ctrlTimeStepMultiplier, m_tolerance, m_parent); + data.avrSolver->SetCurrentTime(m_currentTime); data.avrSolver->SetTerminalVoltage(std::abs(data.terminalVoltage)); data.avrSolver->SetInitialTerminalVoltage(std::abs(data.terminalVoltage)); data.avrSolver->SetActivePower(dataPU.activePower); @@ -680,6 +680,7 @@ bool Electromechanical::InitializeDynamicElements() if(data.speedGovSolver) delete data.speedGovSolver; data.speedGovSolver = new ControlElementSolver(data.speedGov, m_timeStep * m_ctrlTimeStepMultiplier, m_tolerance, m_parent); + data.speedGovSolver->SetCurrentTime(m_currentTime); data.speedGovSolver->SetActivePower(dataPU.activePower); data.speedGovSolver->SetReactivePower(dataPU.reactivePower); data.speedGovSolver->SetVelocity(data.speed); @@ -999,6 +1000,7 @@ bool Electromechanical::SolveSynchronousMachines() SyncGenerator* syncGenerator = *it; auto data = syncGenerator->GetElectricalData(); if(data.useAVR && data.avrSolver) { + data.avrSolver->SetCurrentTime(m_currentTime); data.avrSolver->SetTerminalVoltage(std::abs(data.terminalVoltage)); data.avrSolver->SetDeltaActivePower(data.electricalPower.real() - data.avrSolver->GetActivePower()); data.avrSolver->SetActivePower(data.electricalPower.real()); @@ -1012,6 +1014,7 @@ bool Electromechanical::SolveSynchronousMachines() } if(data.useSpeedGovernor && data.speedGovSolver) { + data.speedGovSolver->SetCurrentTime(m_currentTime); data.speedGovSolver->SetVelocity(data.speed); data.speedGovSolver->SetActivePower(data.electricalPower.real()); data.speedGovSolver->SetReactivePower(data.electricalPower.imag()); |