summaryrefslogtreecommitdiffstats
path: root/Project/Electromechanical.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/Electromechanical.cpp')
-rw-r--r--Project/Electromechanical.cpp21
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());