From f995850b38916b38718b84f4b82948479a81855a Mon Sep 17 00:00:00 2001 From: Thales Lima Oliveira Date: Mon, 22 May 2017 20:17:41 -0300 Subject: Events implemented Effects on adimittance matrix and elements: ->Fault on bus; ->Generation/Load switching; ->Branch switching. --- Project/ElectricCalculation.cpp | 42 +++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 18 deletions(-) (limited to 'Project/ElectricCalculation.cpp') diff --git a/Project/ElectricCalculation.cpp b/Project/ElectricCalculation.cpp index 86653d5..847249d 100644 --- a/Project/ElectricCalculation.cpp +++ b/Project/ElectricCalculation.cpp @@ -65,7 +65,7 @@ bool ElectricCalculation::GetYBus(std::vector > int busNumber = 0; for(auto itb = m_busList.begin(); itb != m_busList.end(); itb++) { Bus* bus = *itb; - BusElectricalData data = bus->GetEletricalData(); + BusElectricalData data = bus->GetElectricalData(); data.number = busNumber; bus->SetElectricalData(data); busNumber++; @@ -75,10 +75,16 @@ bool ElectricCalculation::GetYBus(std::vector > for(auto it = m_loadList.begin(), itEnd = m_loadList.end(); it != itEnd; ++it) { Load* load = *it; if(load->IsOnline()) { - int n = static_cast(load->GetParentList()[0])->GetEletricalData().number; + int n = static_cast(load->GetParentList()[0])->GetElectricalData().number; LoadElectricalData data = load->GetPUElectricalData(systemPowerBase); - if(data.loadType == CONST_IMPEDANCE || allLoadsAsImpedances) - yBus[n][n] += std::complex(data.activePower, -data.reactivePower); + if(data.loadType == CONST_IMPEDANCE || allLoadsAsImpedances) { + std::complex yLoad = std::complex(data.activePower, -data.reactivePower); + if(allLoadsAsImpedances) { + std::complex v = static_cast(load->GetParentList()[0])->GetElectricalData().voltage; + yLoad /= (v * v); + } + yBus[n][n] += yLoad; + } } } @@ -86,7 +92,7 @@ bool ElectricCalculation::GetYBus(std::vector > for(auto it = m_capacitorList.begin(), itEnd = m_capacitorList.end(); it != itEnd; ++it) { Capacitor* capacitor = *it; if(capacitor->IsOnline()) { - int n = static_cast(capacitor->GetParentList()[0])->GetEletricalData().number; + int n = static_cast(capacitor->GetParentList()[0])->GetElectricalData().number; CapacitorElectricalData data = capacitor->GetPUElectricalData(systemPowerBase); yBus[n][n] += std::complex(0.0, data.reactivePower); } @@ -96,7 +102,7 @@ bool ElectricCalculation::GetYBus(std::vector > for(auto it = m_inductorList.begin(), itEnd = m_inductorList.end(); it != itEnd; ++it) { Inductor* inductor = *it; if(inductor->IsOnline()) { - int n = static_cast(inductor->GetParentList()[0])->GetEletricalData().number; + int n = static_cast(inductor->GetParentList()[0])->GetElectricalData().number; InductorElectricalData data = inductor->GetPUElectricalData(systemPowerBase); yBus[n][n] += std::complex(0.0, -data.reactivePower); } @@ -108,8 +114,8 @@ bool ElectricCalculation::GetYBus(std::vector > if(line->IsOnline()) { LineElectricalData data = line->GetElectricalData(); - int n1 = static_cast(line->GetParentList()[0])->GetEletricalData().number; - int n2 = static_cast(line->GetParentList()[1])->GetEletricalData().number; + int n1 = static_cast(line->GetParentList()[0])->GetElectricalData().number; + int n2 = static_cast(line->GetParentList()[1])->GetElectricalData().number; switch(sequence) { case POSITIVE_SEQ: @@ -144,8 +150,8 @@ bool ElectricCalculation::GetYBus(std::vector > if(transformer->IsOnline()) { TransformerElectricalData data = transformer->GetElectricalData(); - int n1 = static_cast(transformer->GetParentList()[0])->GetEletricalData().number; - int n2 = static_cast(transformer->GetParentList()[1])->GetEletricalData().number; + int n1 = static_cast(transformer->GetParentList()[0])->GetElectricalData().number; + int n2 = static_cast(transformer->GetParentList()[1])->GetElectricalData().number; // If the transformer have nominal turns ratio (1.0) and no phase shifting, it will be modelled as series // impedance. @@ -223,7 +229,7 @@ bool ElectricCalculation::GetYBus(std::vector > for(auto it = m_syncGeneratorList.begin(), itEnd = m_syncGeneratorList.end(); it != itEnd; ++it) { SyncGenerator* syncGenerator = *it; if(syncGenerator->IsOnline()) { - int n = static_cast(syncGenerator->GetParentList()[0])->GetEletricalData().number; + int n = static_cast(syncGenerator->GetParentList()[0])->GetElectricalData().number; SyncGeneratorElectricalData data = syncGenerator->GetPUElectricalData(systemPowerBase); switch(sequence) { case POSITIVE_SEQ: { @@ -242,7 +248,7 @@ bool ElectricCalculation::GetYBus(std::vector > for(auto it = m_syncMotorList.begin(), itEnd = m_syncMotorList.end(); it != itEnd; ++it) { SyncMotor* syncMotor = *it; if(syncMotor->IsOnline()) { - int n = static_cast(syncMotor->GetParentList()[0])->GetEletricalData().number; + int n = static_cast(syncMotor->GetParentList()[0])->GetElectricalData().number; SyncMotorElectricalData data = syncMotor->GetPUElectricalData(systemPowerBase); switch(sequence) { case POSITIVE_SEQ: { @@ -275,7 +281,7 @@ void ElectricCalculation::UpdateElementsPowerFlow(std::vectorGetEletricalData(); + BusElectricalData data = bus->GetElectricalData(); data.voltage = voltage[i]; bus->SetElectricalData(data); } @@ -284,8 +290,8 @@ void ElectricCalculation::UpdateElementsPowerFlow(std::vectorIsOnline()) { - int n1 = static_cast(line->GetParentList()[0])->GetEletricalData().number; - int n2 = static_cast(line->GetParentList()[1])->GetEletricalData().number; + int n1 = static_cast(line->GetParentList()[0])->GetElectricalData().number; + int n2 = static_cast(line->GetParentList()[1])->GetElectricalData().number; LineElectricalData data = line->GetElectricalData(); std::complex v1 = voltage[n1]; @@ -313,8 +319,8 @@ void ElectricCalculation::UpdateElementsPowerFlow(std::vectorIsOnline()) { TransformerElectricalData data = transformer->GetElectricalData(); - int n1 = static_cast(transformer->GetParentList()[0])->GetEletricalData().number; - int n2 = static_cast(transformer->GetParentList()[1])->GetEletricalData().number; + int n1 = static_cast(transformer->GetParentList()[0])->GetElectricalData().number; + int n2 = static_cast(transformer->GetParentList()[1])->GetElectricalData().number; std::complex v1 = voltage[n1]; // Primary voltage std::complex v2 = voltage[n2]; // Secondary voltage @@ -348,7 +354,7 @@ void ElectricCalculation::UpdateElementsPowerFlow(std::vectorGetEletricalData(); + BusElectricalData data = bus->GetElectricalData(); // Get the synchronous machines connected and calculate the load power on the bus. std::vector syncGeneratorsOnBus; -- cgit