diff options
author | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2017-09-09 19:11:41 -0300 |
---|---|---|
committer | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2017-09-09 19:11:41 -0300 |
commit | 91b9c3f9909955443e74dedb248fc48fa984709b (patch) | |
tree | c1bf65c2bd297d44e258067155292d9798f4c8c9 /Project/Fault.cpp | |
parent | 9e1f6849c929506a17fa12185c5c0185d5287177 (diff) | |
download | PSP.git-91b9c3f9909955443e74dedb248fc48fa984709b.tar.gz PSP.git-91b9c3f9909955443e74dedb248fc48fa984709b.tar.xz PSP.git-91b9c3f9909955443e74dedb248fc48fa984709b.zip |
Data report fully implemented
Diffstat (limited to 'Project/Fault.cpp')
-rw-r--r-- | Project/Fault.cpp | 45 |
1 files changed, 27 insertions, 18 deletions
diff --git a/Project/Fault.cpp b/Project/Fault.cpp index d39e649..40b03d7 100644 --- a/Project/Fault.cpp +++ b/Project/Fault.cpp @@ -8,6 +8,7 @@ Fault::Fault(std::vector<Element*> elementList) { GetElementsFromList(elementLis Fault::~Fault() {} bool Fault::RunFaultCalculation(double systemPowerBase) { + m_systemPowerBase = systemPowerBase; int numberOfBuses = static_cast<int>(m_busList.size()); if(numberOfBuses == 0) { m_errorMsg = _("There is no buses in the system."); @@ -199,13 +200,14 @@ void Fault::UpdateElementsFault(double systemPowerBase) int n1 = static_cast<Bus*>(line->GetParentList()[0])->GetElectricalData().number; int n2 = static_cast<Bus*>(line->GetParentList()[1])->GetElectricalData().number; auto data = line->GetElectricalData(); + auto puData = line->GetPUElectricalData(m_systemPowerBase); std::complex<double> vPos[2] = {m_posFaultVoltagePos[n1], m_posFaultVoltagePos[n2]}; std::complex<double> vNeg[2] = {m_posFaultVoltageNeg[n1], m_posFaultVoltageNeg[n2]}; std::complex<double> vZero[2] = {m_posFaultVoltageZero[n1], m_posFaultVoltageZero[n2]}; - std::complex<double> zPos(data.resistance, data.indReactance); - std::complex<double> bPos(0.0, data.capSusceptance / 2.0); - std::complex<double> zZero(data.zeroResistance, data.zeroIndReactance); - std::complex<double> bZero(0.0, data.zeroCapSusceptance / 2.0); + std::complex<double> zPos(puData.resistance, puData.indReactance); + std::complex<double> bPos(0.0, puData.capSusceptance / 2.0); + std::complex<double> zZero(puData.zeroResistance, puData.zeroIndReactance); + std::complex<double> bZero(0.0, puData.zeroCapSusceptance / 2.0); std::complex<double> lineCurrentPos[2]; std::complex<double> lineCurrentNeg[2]; @@ -235,12 +237,13 @@ void Fault::UpdateElementsFault(double systemPowerBase) int n1 = static_cast<Bus*>(transformer->GetParentList()[0])->GetElectricalData().number; int n2 = static_cast<Bus*>(transformer->GetParentList()[1])->GetElectricalData().number; auto data = transformer->GetElectricalData(); + auto puData = transformer->GetPUElectricalData(m_systemPowerBase); std::complex<double> vPos[2] = {m_posFaultVoltagePos[n1], m_posFaultVoltagePos[n2]}; std::complex<double> vNeg[2] = {m_posFaultVoltageNeg[n1], m_posFaultVoltageNeg[n2]}; std::complex<double> vZero[2] = {m_posFaultVoltageZero[n1], m_posFaultVoltageZero[n2]}; - std::complex<double> zPos(data.resistance, data.indReactance); - std::complex<double> zZero(data.zeroResistance, data.zeroIndReactance); + std::complex<double> zPos(puData.resistance, puData.indReactance); + std::complex<double> zZero(puData.zeroResistance, puData.zeroIndReactance); std::complex<double> transformerCurrentPos[2]; std::complex<double> transformerCurrentNeg[2]; @@ -312,26 +315,31 @@ void Fault::UpdateElementsFault(double systemPowerBase) int n = bus->GetElectricalData().number; std::complex<double> v = bus->GetElectricalData().voltage; // Pre-fault voltage. auto data = syncGenerator->GetElectricalData(); + auto puData = syncGenerator->GetPUElectricalData(m_systemPowerBase); std::complex<double> vPos = m_posFaultVoltagePos[n]; std::complex<double> vNeg = m_posFaultVoltageNeg[n]; std::complex<double> vZero = m_posFaultVoltageZero[n]; - std::complex<double> zPos(data.positiveResistance, data.positiveReactance); - std::complex<double> zNeg(data.negativeResistance, data.negativeReactance); - std::complex<double> zZero(data.zeroResistance + 3.0 * data.groundResistance, - data.negativeReactance + 3.0 * data.groundReactance); + std::complex<double> zPos(puData.positiveResistance, puData.positiveReactance); + std::complex<double> zNeg(puData.negativeResistance, puData.negativeReactance); + std::complex<double> zZero(puData.zeroResistance + 3.0 * puData.groundResistance, + puData.zeroReactance + 3.0 * puData.groundReactance); - std::complex<double> syncGeneratorCurrentPos = (v - vPos) / zPos; + // Internal voltage + std::complex<double> i = std::complex<double>(puData.activePower, -puData.reactivePower) / std::conj(v); + std::complex<double> e = v + zPos * i; + + std::complex<double> syncGeneratorCurrentPos = (e - vPos) / zPos; std::complex<double> syncGeneratorCurrentNeg = (-vNeg) / zNeg; std::complex<double> syncGeneratorCurrentZero(0.0, 0.0); if(data.groundNeutral) syncGeneratorCurrentZero = (-vZero) / zZero; - data.faultCurrent[0] = syncGeneratorCurrentPos + syncGeneratorCurrentNeg + syncGeneratorCurrentZero; + data.faultCurrent[0] = syncGeneratorCurrentZero + syncGeneratorCurrentPos + syncGeneratorCurrentNeg; data.faultCurrent[1] = - syncGeneratorCurrentPos + a2 * syncGeneratorCurrentNeg + a * syncGeneratorCurrentZero; + syncGeneratorCurrentZero + a2 * syncGeneratorCurrentPos + a * syncGeneratorCurrentNeg; data.faultCurrent[2] = - syncGeneratorCurrentPos + a * syncGeneratorCurrentNeg + a2 * syncGeneratorCurrentZero; + syncGeneratorCurrentZero + a * syncGeneratorCurrentPos + a2 * syncGeneratorCurrentNeg; syncGenerator->SetElectricalData(data); } @@ -344,15 +352,16 @@ void Fault::UpdateElementsFault(double systemPowerBase) int n = bus->GetElectricalData().number; std::complex<double> v = bus->GetElectricalData().voltage; // Pre-fault voltage. auto data = syncMotor->GetElectricalData(); + auto puData = syncMotor->GetPUElectricalData(m_systemPowerBase); std::complex<double> vPos = m_posFaultVoltagePos[n]; std::complex<double> vNeg = m_posFaultVoltageNeg[n]; std::complex<double> vZero = m_posFaultVoltageZero[n]; - std::complex<double> zPos(data.positiveResistance, data.positiveReactance); - std::complex<double> zNeg(data.negativeResistance, data.negativeReactance); - std::complex<double> zZero(data.zeroResistance + 3.0 * data.groundResistance, - data.negativeReactance + 3.0 * data.groundReactance); + std::complex<double> zPos(puData.positiveResistance, puData.positiveReactance); + std::complex<double> zNeg(puData.negativeResistance, puData.negativeReactance); + std::complex<double> zZero(puData.zeroResistance + 3.0 * puData.groundResistance, + puData.zeroReactance + 3.0 * puData.groundReactance); std::complex<double> syncGeneratorCurrentPos = (v - vPos) / zPos; std::complex<double> syncGeneratorCurrentNeg = (-vNeg) / zNeg; |