summaryrefslogtreecommitdiffstats
path: root/Project/Transformer.cpp
diff options
context:
space:
mode:
authorThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-09-09 19:13:03 -0300
committerGitHub <noreply@github.com>2017-09-09 19:13:03 -0300
commitdcb1934ec64c928efdfa561519d2e46a3c3cb0db (patch)
treec1bf65c2bd297d44e258067155292d9798f4c8c9 /Project/Transformer.cpp
parent926af7f34aaf5aebdbac0cbc550ed75647874258 (diff)
parent91b9c3f9909955443e74dedb248fc48fa984709b (diff)
downloadPSP.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.cpp71
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;
+}