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/Transformer.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/Transformer.cpp')
-rw-r--r-- | Project/Transformer.cpp | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp index 584a139..8f8ecb5 100644 --- a/Project/Transformer.cpp +++ b/Project/Transformer.cpp @@ -444,3 +444,74 @@ wxString Transformer::GetTipText() const return tipText; } + +TransformerElectricalData Transformer::GetPUElectricalData(double systemBasePower) +{ + TransformerElectricalData data = m_electricalData; + double transformerBasePower = GetValueFromUnit(data.nominalPower, data.nominalPowerUnit); + double baseVoltage = 0.0; + if(data.baseVoltage == 0) { + baseVoltage = GetValueFromUnit(data.primaryNominalVoltage, data.primaryNominalVoltageUnit); + } else { + baseVoltage = GetValueFromUnit(data.secondaryNominalVoltage, data.secondaryNominalVoltageUnit); + } + double systemBaseImpedance = (baseVoltage * baseVoltage) / systemBasePower; + double transformerBaseImpedance = (baseVoltage * baseVoltage) / transformerBasePower; + + // Resistance + double r = data.resistance; + if(data.resistanceUnit == UNIT_PU) { + if(data.useTransformerPower) data.resistance = (r * transformerBaseImpedance) / systemBaseImpedance; + } else { + data.resistance = r / systemBaseImpedance; + } + data.resistanceUnit = UNIT_PU; + + // Indutive reactance + double x = data.indReactance; + if(data.indReactanceUnit == UNIT_PU) { + if(data.useTransformerPower) data.indReactance = (x * transformerBaseImpedance) / systemBaseImpedance; + } else { + data.indReactance = x / systemBaseImpedance; + } + data.indReactanceUnit = UNIT_PU; + + // Fault + + // Zero seq. resistance + double r0 = data.zeroResistance; + if(data.useTransformerPower) data.zeroResistance = (r0 * transformerBaseImpedance) / systemBaseImpedance; + + // Zero seq. ind. reactance + double x0 = data.zeroIndReactance; + if(data.useTransformerPower) data.zeroIndReactance = (x0 * transformerBaseImpedance) / systemBaseImpedance; + + // Primary ground resistance + double rgp = data.primaryGrndResistance; + if(data.useTransformerPower) data.primaryGrndResistance = (rgp * transformerBaseImpedance) / systemBaseImpedance; + + // Primary ground ind reactance + double xgp = data.primaryGrndReactance; + if(data.useTransformerPower) data.primaryGrndReactance = (xgp * transformerBaseImpedance) / systemBaseImpedance; + + // Secondary ground resistance + double rgs = data.secondaryGrndResistance; + if(data.useTransformerPower) data.secondaryGrndResistance = (rgs * transformerBaseImpedance) / systemBaseImpedance; + + // Secondary ground ind reactance + double xgs = data.secondaryGrndReactance; + if(data.useTransformerPower) data.secondaryGrndReactance = (xgs * transformerBaseImpedance) / systemBaseImpedance; + + if(!m_online) { + data.powerFlow[0] = std::complex<double>(0,0); + data.powerFlow[1] = std::complex<double>(0,0); + data.faultCurrent[0][0] = std::complex<double>(0,0); + data.faultCurrent[0][1] = std::complex<double>(0,0); + data.faultCurrent[0][2] = std::complex<double>(0,0); + data.faultCurrent[1][0] = std::complex<double>(0,0); + data.faultCurrent[1][1] = std::complex<double>(0,0); + data.faultCurrent[1][2] = std::complex<double>(0,0); + } + + return data; +} |