summaryrefslogtreecommitdiffstats
path: root/Project/TransformerForm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/TransformerForm.cpp')
-rw-r--r--Project/TransformerForm.cpp231
1 files changed, 231 insertions, 0 deletions
diff --git a/Project/TransformerForm.cpp b/Project/TransformerForm.cpp
new file mode 100644
index 0000000..3d87a13
--- /dev/null
+++ b/Project/TransformerForm.cpp
@@ -0,0 +1,231 @@
+#include "TransformerForm.h"
+#include "SwitchingForm.h"
+#include "Transformer.h"
+
+TransformerForm::TransformerForm(wxWindow* parent, Transformer* transformer) : TransformerFormBase(parent)
+{
+ m_choiceResistance->SetString(1, L'\u03A9');
+ m_choiceReactance->SetString(1, L'\u03A9');
+
+ SetSize(GetBestSize());
+ Layout();
+
+ m_parent = parent;
+ m_transformer = transformer;
+
+ TransformerElectricalData data = transformer->GetElectricalData();
+
+ m_textCtrlName->SetValue(data.name);
+
+ wxString primVoltStr = Transformer::StringFromDouble(data.primaryNominalVoltage);
+ switch(data.primaryNominalVoltageUnit) {
+ case UNIT_V: {
+ primVoltStr += " V";
+ } break;
+ case UNIT_kV: {
+ primVoltStr += " kV";
+ } break;
+ default:
+ break;
+ }
+ wxString secVoltStr = Transformer::StringFromDouble(data.secondaryNominalVoltage);
+ switch(data.secondaryNominalVoltageUnit) {
+ case UNIT_V: {
+ secVoltStr += " V";
+ } break;
+ case UNIT_kV: {
+ secVoltStr += " kV";
+ } break;
+ default:
+ break;
+ }
+ m_staticTextNominalVoltageValue->SetLabel(wxString::Format("%s / %s", primVoltStr, secVoltStr));
+
+ m_choiceBaseVoltage->SetString(0, primVoltStr);
+ m_choiceBaseVoltage->SetString(1, secVoltStr);
+ m_choiceBaseVoltage->SetSelection(data.baseVoltage);
+
+ m_textCtrlNominalPower->SetValue(Transformer::StringFromDouble(data.nominalPower));
+ switch(data.nominalPowerUnit) {
+ case UNIT_VA: {
+ m_choiceNominalPower->SetSelection(0);
+ } break;
+ case UNIT_kVA: {
+ m_choiceNominalPower->SetSelection(1);
+ } break;
+ case UNIT_MVA: {
+ m_choiceNominalPower->SetSelection(2);
+ } break;
+ default:
+ break;
+ }
+
+ m_textCtrlResistance->SetValue(Transformer::StringFromDouble(data.resistance));
+ switch(data.resistanceUnit) {
+ case UNIT_PU: {
+ m_choiceResistance->SetSelection(0);
+ } break;
+ case UNIT_OHM: {
+ m_choiceResistance->SetSelection(1);
+ } break;
+ default:
+ break;
+ }
+
+ m_textCtrlReactance->SetValue(Transformer::StringFromDouble(data.indReactance));
+ switch(data.indReactanceUnit) {
+ case UNIT_PU: {
+ m_choiceReactance->SetSelection(0);
+ } break;
+ case UNIT_OHM: {
+ m_choiceReactance->SetSelection(1);
+ } break;
+ default:
+ break;
+ }
+
+ m_choiceConnection->SetSelection(data.connection);
+
+ m_textCtrlTurnRatio->SetValue(Transformer::StringFromDouble(data.turnsRatio));
+ m_textCtrlPhaseShift->SetValue(Transformer::StringFromDouble(data.phaseShift));
+
+ m_checkUseTransformerPower->SetValue(data.useTransformerPower);
+
+ m_textCtrlZeroResistance->SetValue(Transformer::StringFromDouble(data.zeroResistance));
+ m_textCtrlZeroReactance->SetValue(Transformer::StringFromDouble(data.zeroIndReactance));
+ m_textCtrlPrimResistance->SetValue(Transformer::StringFromDouble(data.primaryGrndResistance));
+ m_textCtrlPrimReactance->SetValue(Transformer::StringFromDouble(data.primaryGrndReactance));
+ m_textCtrlSecResistance->SetValue(Transformer::StringFromDouble(data.secondaryGrndResistance));
+ m_textCtrlSecReactance->SetValue(Transformer::StringFromDouble(data.secondaryGrndReactance));
+}
+
+TransformerForm::~TransformerForm() {}
+void TransformerForm::OnCancelButtonClick(wxCommandEvent& event) { EndModal(wxID_CANCEL); }
+void TransformerForm::OnOKButtonClick(wxCommandEvent& event)
+{
+ if(ValidateData()) EndModal(wxID_OK);
+}
+void TransformerForm::OnStabilityButtonClick(wxCommandEvent& event)
+{
+ if(ValidateData()) {
+ SwitchingForm swForm(m_parent, m_transformer);
+ swForm.SetTitle(_("Transfomer: Switching"));
+ swForm.ShowModal();
+ EndModal(wxID_OK);
+ }
+}
+
+bool TransformerForm::ValidateData()
+{
+ TransformerElectricalData data;
+
+ data.name = m_textCtrlName->GetValue();
+ data.baseVoltage = m_choiceBaseVoltage->GetSelection();
+
+ if(!m_transformer->DoubleFromString(m_parent, m_textCtrlNominalPower->GetValue(), data.nominalPower,
+ _("Value entered incorrectly in the field \"Nominal power\".")))
+ return false;
+ switch(m_choiceNominalPower->GetSelection()) {
+ case 0: {
+ data.nominalPowerUnit = UNIT_VA;
+ } break;
+ case 1: {
+ data.nominalPowerUnit = UNIT_kVA;
+ } break;
+ case 2: {
+ data.nominalPowerUnit = UNIT_MVA;
+ } break;
+ }
+
+ if(!m_transformer->DoubleFromString(m_parent, m_textCtrlResistance->GetValue(), data.resistance,
+ _("Value entered incorrectly in the field \"Resistance\".")))
+ return false;
+ switch(m_choiceResistance->GetSelection()) {
+ case 0: {
+ data.resistanceUnit = UNIT_PU;
+ } break;
+ case 1: {
+ data.resistanceUnit = UNIT_OHM;
+ } break;
+ }
+
+ if(!m_transformer->DoubleFromString(m_parent, m_textCtrlReactance->GetValue(), data.indReactance,
+ _("Value entered incorrectly in the field \"Indutive reactance\".")))
+ return false;
+ switch(m_choiceReactance->GetSelection()) {
+ case 0: {
+ data.indReactanceUnit = UNIT_PU;
+ } break;
+ case 1: {
+ data.indReactanceUnit = UNIT_OHM;
+ } break;
+ }
+
+ switch(m_choiceConnection->GetSelection()) {
+ case 0: {
+ data.connection = GWYE_GWYE;
+ } break;
+ case 1: {
+ data.connection = WYE_GWYE;
+ } break;
+ case 2: {
+ data.connection = GWYE_WYE;
+ } break;
+ case 3: {
+ data.connection = WYE_WYE;
+ } break;
+ case 4: {
+ data.connection = DELTA_GWYE;
+ } break;
+ case 5: {
+ data.connection = DELTA_WYE;
+ } break;
+ case 6: {
+ data.connection = GWYE_DELTA;
+ } break;
+ case 7: {
+ data.connection = WYE_DELTA;
+ } break;
+ case 8: {
+ data.connection = DELTA_DELTA;
+ } break;
+ }
+
+ if(!m_transformer->DoubleFromString(m_parent, m_textCtrlTurnRatio->GetValue(), data.turnsRatio,
+ _("Value entered incorrectly in the field \"Turns ratio\".")))
+ return false;
+
+ if(!m_transformer->DoubleFromString(m_parent, m_textCtrlPhaseShift->GetValue(), data.phaseShift,
+ _("Value entered incorrectly in the field \"Phase shift\".")))
+ return false;
+
+ data.useTransformerPower = m_checkUseTransformerPower->GetValue();
+
+ if(!m_transformer->DoubleFromString(m_parent, m_textCtrlZeroResistance->GetValue(), data.zeroResistance,
+ _("Value entered incorrectly in the field \"Zero sequence resistance\".")))
+ return false;
+
+ if(!m_transformer->DoubleFromString(
+ m_parent, m_textCtrlZeroReactance->GetValue(), data.zeroIndReactance,
+ _("Value entered incorrectly in the field \"Zero sequence indutive reactance\".")))
+ return false;
+
+ if(!m_transformer->DoubleFromString(m_parent, m_textCtrlPrimResistance->GetValue(), data.primaryGrndResistance,
+ _("Value entered incorrectly in the field \"Primary ground resistance\".")))
+ return false;
+
+ if(!m_transformer->DoubleFromString(m_parent, m_textCtrlPrimReactance->GetValue(), data.primaryGrndReactance,
+ _("Value entered incorrectly in the field \"Primary ground reactance\".")))
+ return false;
+
+ if(!m_transformer->DoubleFromString(m_parent, m_textCtrlSecResistance->GetValue(), data.secondaryGrndResistance,
+ _("Value entered incorrectly in the field \"Secondary ground resistance\".")))
+ return false;
+
+ if(!m_transformer->DoubleFromString(m_parent, m_textCtrlSecReactance->GetValue(), data.secondaryGrndReactance,
+ _("Value entered incorrectly in the field \"Secondary ground reactance\".")))
+ return false;
+
+ m_transformer->SetElectricaData(data);
+ return true;
+}