summaryrefslogtreecommitdiffstats
path: root/Project/Transformer.cpp
diff options
context:
space:
mode:
authorThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-09-06 20:11:37 -0300
committerThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-09-06 20:11:37 -0300
commit41b81949a92aad043caa28b0e1144348d06921f8 (patch)
tree9336697587beafbcca1ad8bcf90e750db550b927 /Project/Transformer.cpp
parent926af7f34aaf5aebdbac0cbc550ed75647874258 (diff)
downloadPSP.git-41b81949a92aad043caa28b0e1144348d06921f8.tar.gz
PSP.git-41b81949a92aad043caa28b0e1144348d06921f8.tar.xz
PSP.git-41b81949a92aad043caa28b0e1144348d06921f8.zip
Data report implementation start
Diffstat (limited to 'Project/Transformer.cpp')
-rw-r--r--Project/Transformer.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp
index 584a139..9ac1e97 100644
--- a/Project/Transformer.cpp
+++ b/Project/Transformer.cpp
@@ -444,3 +444,61 @@ wxString Transformer::GetTipText() const
return tipText;
}
+
+TransformerElectricalData Transformer::GetPUElectricalData(double basePower) const
+{
+ TransformerElectricalData data = m_electricalData;
+ double transformerBasePower = basePower;
+ if(m_electricalData.useTransformerPower) {
+ transformerBasePower = m_electricalData.nominalPower;
+ switch(m_electricalData.nominalPowerUnit) {
+ case UNIT_MVA: {
+ transformerBasePower *= 1e6;
+ } break;
+ case UNIT_kVA: {
+ transformerBasePower *= 1e3;
+ } break;
+ default:
+ break;
+ }
+ }
+ double vb = 0.0;
+ if(m_electricalData.baseVoltage == 0) {
+ vb = m_electricalData.primaryNominalVoltage;
+ if(m_electricalData.primaryNominalVoltageUnit == UNIT_kV) vb *= 1e3;
+ } else {
+ vb = m_electricalData.secondaryNominalVoltage;
+ if(m_electricalData.secondaryNominalVoltageUnit == UNIT_kV) vb *= 1e3;
+ }
+ double zb = (vb * vb) / basePower;
+
+ // Resistance
+ double r = data.resistance;
+ switch(data.resistanceUnit) {
+ case UNIT_PU: {
+ if(m_electricalData.useTransformerPower) data.resistance = (basePower / transformerBasePower) * r;
+ } break;
+ case UNIT_OHM: {
+ data.resistance = r / zb;
+ data.resistanceUnit = UNIT_PU;
+ } break;
+ default:
+ break;
+ }
+
+ // Indutive reactance
+ double xl = data.indReactance;
+ switch(data.indReactanceUnit) {
+ case UNIT_PU: {
+ if(m_electricalData.useTransformerPower) data.indReactance = (basePower / transformerBasePower) * xl;
+ } break;
+ case UNIT_OHM: {
+ data.indReactance = xl / zb;
+ data.indReactanceUnit = UNIT_PU;
+ } break;
+ default:
+ break;
+ }
+
+ return data;
+}