diff options
author | Thales Lima Oliveira <thaleslima.ufu@gmail.com> | 2017-09-04 20:05:30 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-04 20:05:30 -0300 |
commit | 926af7f34aaf5aebdbac0cbc550ed75647874258 (patch) | |
tree | 4df26f8c631aeeeed6e5c9e8aab87c4c663bd30f /Project/SimulationsSettingsForm.cpp | |
parent | 17d1dd82ec065eff08546ef1fd2a188ce77471b2 (diff) | |
parent | 6f3421c4150e49af026432a2a2be0171d741ad03 (diff) | |
download | PSP.git-926af7f34aaf5aebdbac0cbc550ed75647874258.tar.gz PSP.git-926af7f34aaf5aebdbac0cbc550ed75647874258.tar.xz PSP.git-926af7f34aaf5aebdbac0cbc550ed75647874258.zip |
Merge pull request #33 from Thales1330/wip/electromechanical-calc
Wip electromechanical calc
Diffstat (limited to 'Project/SimulationsSettingsForm.cpp')
-rw-r--r-- | Project/SimulationsSettingsForm.cpp | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/Project/SimulationsSettingsForm.cpp b/Project/SimulationsSettingsForm.cpp new file mode 100644 index 0000000..714e49b --- /dev/null +++ b/Project/SimulationsSettingsForm.cpp @@ -0,0 +1,127 @@ +#include "SimulationsSettingsForm.h" +#include "PropertiesData.h" + +SimulationsSettingsForm::SimulationsSettingsForm(wxWindow* parent, PropertiesData* properties) + : SimulationsSettingsFormBase(parent) +{ + m_properties = properties; + auto data = m_properties->GetSimulationPropertiesData(); + + m_textCtrlbasePower->SetValue(Element::StringFromDouble(data.basePower)); + switch(data.basePowerUnit) { + case UNIT_VA: { + m_choiceBasePower->SetSelection(0); + } break; + case UNIT_kVA: { + m_choiceBasePower->SetSelection(1); + } break; + case UNIT_MVA: { + m_choiceBasePower->SetSelection(2); + } break; + default: { + m_choiceBasePower->SetSelection(wxNOT_FOUND); + } break; + } + m_checkBoxFaultAfterPF->SetValue(data.faultAfterPowerFlow); + m_checkBoxSCPowerAfterPF->SetValue(data.scPowerAfterPowerFlow); + switch(data.powerFlowMethod) { + case GAUSS_SEIDEL: { + m_choicePFMethod->SetSelection(0); + } break; + case NEWTON_RAPHSON: { + m_choicePFMethod->SetSelection(1); + m_textCtrlAccFactor->Enable(false); + } break; + default: { + m_choicePFMethod->SetSelection(wxNOT_FOUND); + } break; + } + m_textCtrlAccFactor->SetValue(Element::StringFromDouble(data.accFator)); + m_textCtrlPFTolerance->SetValue(wxString::Format("%g", data.powerFlowTolerance)); + m_textCtrlPFMaxIterations->SetValue(wxString::Format("%d", data.powerFlowMaxIterations)); + m_textCtrlTimeStep->SetValue(wxString::Format("%g", data.timeStep)); + m_textCtrlSimTime->SetValue(Element::StringFromDouble(data.stabilitySimulationTime)); + m_textCtrlFreq->SetValue(Element::StringFromDouble(data.stabilityFrequency)); + m_textCtrlStabTolerance->SetValue(wxString::Format("%g", data.stabilityTolerance)); + m_textCtrlStabMaxIterations->SetValue(wxString::Format("%d", data.stabilityMaxIterations)); + m_textCtrlCtrlStepRatio->SetValue(wxString::Format("%d", data.controlTimeStepRatio)); + m_textCtrlPrintTime->SetValue(wxString::Format("%g", data.plotTime)); + + m_checkBoxUseCOI->SetValue(data.useCOI); +} + +SimulationsSettingsForm::~SimulationsSettingsForm() {} +void SimulationsSettingsForm::OnButtonOKClick(wxCommandEvent& event) +{ + if(ValidateData()) EndModal(wxID_OK); +} + +bool SimulationsSettingsForm::ValidateData() +{ + auto data = m_properties->GetSimulationPropertiesData(); + if(!Element::DoubleFromString(this, m_textCtrlbasePower->GetValue(), data.basePower, + _("Value entered incorrectly in the field \"Base power\"."))) + return false; + switch(m_choiceBasePower->GetSelection()) { + case 0: { + data.basePowerUnit = UNIT_VA; + } break; + case 1: { + data.basePowerUnit = UNIT_kVA; + } break; + default: { + data.basePowerUnit = UNIT_MVA; + } break; + } + data.faultAfterPowerFlow = m_checkBoxFaultAfterPF->GetValue(); + data.scPowerAfterPowerFlow = m_checkBoxSCPowerAfterPF->GetValue(); + switch(m_choicePFMethod->GetSelection()) { + case 0: { + data.powerFlowMethod = GAUSS_SEIDEL; + } break; + case 1: { + data.powerFlowMethod = NEWTON_RAPHSON; + } break; + } + if(!Element::DoubleFromString(this, m_textCtrlAccFactor->GetValue(), data.accFator, + _("Value entered incorrectly in the field \"Acceleration factor\"."))) + return false; + if(!Element::DoubleFromString(this, m_textCtrlPFTolerance->GetValue(), data.powerFlowTolerance, + _("Value entered incorrectly in the field \"Tolerance (Power flow)\"."))) + return false; + if(!Element::IntFromString(this, m_textCtrlPFMaxIterations->GetValue(), data.powerFlowMaxIterations, + _("Value entered incorrectly in the field \"Max. iterations (Power flow)\"."))) + return false; + if(!Element::DoubleFromString(this, m_textCtrlTimeStep->GetValue(), data.timeStep, + _("Value entered incorrectly in the field \"Time step\"."))) + return false; + if(!Element::DoubleFromString(this, m_textCtrlSimTime->GetValue(), data.stabilitySimulationTime, + _("Value entered incorrectly in the field \"Simulation time\"."))) + return false; + if(!Element::DoubleFromString(this, m_textCtrlFreq->GetValue(), data.stabilityFrequency, + _("Value entered incorrectly in the field \"System frequency\"."))) + return false; + if(!Element::DoubleFromString(this, m_textCtrlStabTolerance->GetValue(), data.stabilityTolerance, + _("Value entered incorrectly in the field \"Tolerance (Stability)\"."))) + return false; + if(!Element::IntFromString(this, m_textCtrlStabMaxIterations->GetValue(), data.stabilityMaxIterations, + _("Value entered incorrectly in the field \"Max. iterations (Stability)\"."))) + return false; + if(!Element::IntFromString(this, m_textCtrlCtrlStepRatio->GetValue(), data.controlTimeStepRatio, + _("Value entered incorrectly in the field \"Controls step ratio\"."))) + return false; + if(!Element::DoubleFromString(this, m_textCtrlPrintTime->GetValue(), data.plotTime, + _("Value entered incorrectly in the field \"Plot time\"."))) + return false; + data.useCOI = m_checkBoxUseCOI->GetValue(); + + m_properties->SetSimulationPropertiesData(data); + return true; +} +void SimulationsSettingsForm::OnPFMethodChoiceSelected(wxCommandEvent& event) +{ + if(m_choicePFMethod->GetSelection() == 0) + m_textCtrlAccFactor->Enable(); + else + m_textCtrlAccFactor->Enable(false); +} |