diff options
author | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2017-09-09 19:13:03 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-09 19:13:03 -0300 |
commit | dcb1934ec64c928efdfa561519d2e46a3c3cb0db (patch) | |
tree | c1bf65c2bd297d44e258067155292d9798f4c8c9 /Project/ElectricCalculation.cpp | |
parent | 926af7f34aaf5aebdbac0cbc550ed75647874258 (diff) | |
parent | 91b9c3f9909955443e74dedb248fc48fa984709b (diff) | |
download | PSP.git-dcb1934ec64c928efdfa561519d2e46a3c3cb0db.tar.gz PSP.git-dcb1934ec64c928efdfa561519d2e46a3c3cb0db.tar.xz PSP.git-dcb1934ec64c928efdfa561519d2e46a3c3cb0db.zip |
Merge pull request #34 from Thales1330/wip-datareport
Wip datareport
Diffstat (limited to 'Project/ElectricCalculation.cpp')
-rw-r--r-- | Project/ElectricCalculation.cpp | 45 |
1 files changed, 36 insertions, 9 deletions
diff --git a/Project/ElectricCalculation.cpp b/Project/ElectricCalculation.cpp index e67c9b4..485325f 100644 --- a/Project/ElectricCalculation.cpp +++ b/Project/ElectricCalculation.cpp @@ -41,6 +41,16 @@ void ElectricCalculation::GetElementsFromList(std::vector<Element*> elementList) else if(Transformer* transformer = dynamic_cast<Transformer*>(element)) m_transformerList.push_back(transformer); } + + // Set buses numbers + int busNumber = 0; + for(auto itb = m_busList.begin(); itb != m_busList.end(); itb++) { + Bus* bus = *itb; + BusElectricalData data = bus->GetElectricalData(); + data.number = busNumber; + bus->SetElectricalData(data); + busNumber++; + } } bool ElectricCalculation::GetYBus(std::vector<std::vector<std::complex<double> > >& yBus, @@ -112,7 +122,7 @@ bool ElectricCalculation::GetYBus(std::vector<std::vector<std::complex<double> > for(auto it = m_lineList.begin(), itEnd = m_lineList.end(); it != itEnd; ++it) { Line* line = *it; if(line->IsOnline()) { - LineElectricalData data = line->GetElectricalData(); + LineElectricalData data = line->GetPUElectricalData(systemPowerBase); int n1 = static_cast<Bus*>(line->GetParentList()[0])->GetElectricalData().number; int n2 = static_cast<Bus*>(line->GetParentList()[1])->GetElectricalData().number; @@ -148,7 +158,7 @@ bool ElectricCalculation::GetYBus(std::vector<std::vector<std::complex<double> > Transformer* transformer = *it; if(transformer->IsOnline()) { - TransformerElectricalData data = transformer->GetElectricalData(); + TransformerElectricalData data = transformer->GetPUElectricalData(systemPowerBase); int n1 = static_cast<Bus*>(transformer->GetParentList()[0])->GetElectricalData().number; int n2 = static_cast<Bus*>(transformer->GetParentList()[1])->GetElectricalData().number; @@ -239,7 +249,10 @@ bool ElectricCalculation::GetYBus(std::vector<std::vector<std::complex<double> > yBus[n][n] += 1.0 / std::complex<double>(data.negativeResistance, data.negativeReactance); } break; case ZERO_SEQ: { - yBus[n][n] += 1.0 / std::complex<double>(data.zeroResistance, data.zeroReactance); + if(data.groundNeutral) { + yBus[n][n] += 1.0 / std::complex<double>(data.zeroResistance + 3.0 * data.groundResistance, + data.zeroReactance + 3.0 * data.groundReactance); + } } break; } } @@ -258,7 +271,10 @@ bool ElectricCalculation::GetYBus(std::vector<std::vector<std::complex<double> > yBus[n][n] += 1.0 / std::complex<double>(data.negativeResistance, data.negativeReactance); } break; case ZERO_SEQ: { - yBus[n][n] += 1.0 / std::complex<double>(data.zeroResistance, data.zeroReactance); + if(data.groundNeutral) { + yBus[n][n] += 1.0 / std::complex<double>(data.zeroResistance + 3.0 * data.groundResistance, + data.zeroReactance + 3.0 * data.groundReactance); + } } break; } } @@ -274,15 +290,26 @@ void ElectricCalculation::UpdateElementsPowerFlow(std::vector<std::complex<doubl std::vector<ReactiveLimits> 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 + double zeroLimit = 1e-4; + for(unsigned int i = 0; i < reactiveLimit.size(); ++i) { + if(reactiveLimit[i].maxLimit > -zeroLimit && reactiveLimit[i].maxLimit < zeroLimit) + reactiveLimit[i].maxLimit = zeroLimit; + if(reactiveLimit[i].minLimit > -zeroLimit && reactiveLimit[i].minLimit < zeroLimit) + reactiveLimit[i].minLimit = zeroLimit; + } + for(unsigned int i = 0; i < power.size(); ++i) { + if(std::real(power[i]) > -zeroLimit && std::real(power[i]) < zeroLimit) + power[i] = std::complex<double>(0.0, std::imag(power[i])); + if(std::imag(power[i]) > -zeroLimit && std::imag(power[i]) < zeroLimit) + power[i] = std::complex<double>(std::real(power[i]), 0.0); + } + // Buses for(int i = 0; i < (int)m_busList.size(); i++) { Bus* bus = m_busList[i]; BusElectricalData data = bus->GetElectricalData(); data.voltage = voltage[i]; + data.power = power[i]; + data.busType = busType[i]; bus->SetElectricalData(data); } |