From 7aed88dbcf9d37a1f40c8cad115f055c4d69e7a9 Mon Sep 17 00:00:00 2001 From: Thales1330 Date: Thu, 29 Dec 2016 19:03:16 -0200 Subject: Parent/child optimization implemented And others bugfixes. --- Project/ElectricCalculation.cpp | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'Project/ElectricCalculation.cpp') diff --git a/Project/ElectricCalculation.cpp b/Project/ElectricCalculation.cpp index 3c4c1e5..4514f05 100644 --- a/Project/ElectricCalculation.cpp +++ b/Project/ElectricCalculation.cpp @@ -139,8 +139,8 @@ bool ElectricCalculation::GetYBus(std::vector > else { // Complex turns ratio double radPhaseShift = wxDegToRad(data.phaseShift); - std::complex a = std::complex(data.turnsRatio * std::cos(radPhaseShift), - -data.turnsRatio * std::sin(radPhaseShift)); + std::complex a = std::complex( + data.turnsRatio * std::cos(radPhaseShift), -data.turnsRatio * std::sin(radPhaseShift)); // Transformer admitance std::complex y = 1.0 / std::complex(data.resistance, data.indReactance); @@ -157,11 +157,15 @@ bool ElectricCalculation::GetYBus(std::vector > } void ElectricCalculation::UpdateElementsPowerFlow(std::vector > voltage, - std::vector > power, - std::vector busType, - std::vector reactiveLimit, - double systemPowerBase) + std::vector > power, + std::vector busType, + std::vector reactiveLimit, + double systemPowerBase) { + for(int i = 0; i < (int)reactiveLimit.size(); ++i) { + if(reactiveLimit[i].maxLimit > -1e-5 && reactiveLimit[i].maxLimit < 1e-5) reactiveLimit[i].maxLimit = 1e-5; + if(reactiveLimit[i].minLimit > -1e-5 && reactiveLimit[i].minLimit < 1e-5) reactiveLimit[i].minLimit = 1e-5; + } // Buses voltages for(int i = 0; i < (int)m_busList.size(); i++) { Bus* bus = m_busList[i]; @@ -182,9 +186,9 @@ void ElectricCalculation::UpdateElementsPowerFlow(std::vector v2 = voltage[n2]; data.current[0] = (v1 - v2) / std::complex(data.resistance, data.indReactance) + - v1 * std::complex(0.0, data.capSusceptance / 2.0); + v1 * std::complex(0.0, data.capSusceptance / 2.0); data.current[1] = (v2 - v1) / std::complex(data.resistance, data.indReactance) + - v2 * std::complex(0.0, data.capSusceptance / 2.0); + v2 * std::complex(0.0, data.capSusceptance / 2.0); data.powerFlow[0] = v1 * std::conj(data.current[0]); data.powerFlow[1] = v2 * std::conj(data.current[1]); @@ -205,8 +209,8 @@ void ElectricCalculation::UpdateElementsPowerFlow(std::vectorGetElectricalData(); int n1 = ((Bus*)transformer->GetParentList()[0])->GetEletricalData().number; int n2 = ((Bus*)transformer->GetParentList()[1])->GetEletricalData().number; - std::complex v1 = voltage[n1]; // Primary voltage - std::complex v2 = voltage[n2]; // Secondary voltage + std::complex v1 = voltage[n1]; // Primary voltage + std::complex v2 = voltage[n2]; // Secondary voltage // Transformer admitance std::complex y = 1.0 / std::complex(data.resistance, data.indReactance); @@ -386,8 +390,8 @@ void ElectricCalculation::UpdateElementsPowerFlow(std::vector