summaryrefslogtreecommitdiffstats
path: root/Project/SimulationsSettingsForm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/SimulationsSettingsForm.cpp')
-rw-r--r--Project/SimulationsSettingsForm.cpp111
1 files changed, 107 insertions, 4 deletions
diff --git a/Project/SimulationsSettingsForm.cpp b/Project/SimulationsSettingsForm.cpp
index 6dfb17f..9e38010 100644
--- a/Project/SimulationsSettingsForm.cpp
+++ b/Project/SimulationsSettingsForm.cpp
@@ -1,14 +1,54 @@
#include "SimulationsSettingsForm.h"
+#include "PropertiesData.h"
-SimulationsSettingsForm::SimulationsSettingsForm(wxWindow* parent)
+SimulationsSettingsForm::SimulationsSettingsForm(wxWindow* parent, PropertiesData* properties)
: SimulationsSettingsFormBase(parent)
{
-}
+ m_properties = properties;
+ auto data = m_properties->GetSimulationPropertiesData();
-SimulationsSettingsForm::~SimulationsSettingsForm()
-{
+ 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));
}
+SimulationsSettingsForm::~SimulationsSettingsForm() {}
void SimulationsSettingsForm::OnButtonOKClick(wxCommandEvent& event)
{
if(ValidateData()) EndModal(wxID_OK);
@@ -16,5 +56,68 @@ void SimulationsSettingsForm::OnButtonOKClick(wxCommandEvent& event)
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;
+ m_properties->SetSimulationPropertiesData(data);
return true;
}
+void SimulationsSettingsForm::OnPFMethodChoiceSelected(wxCommandEvent& event)
+{
+ if(m_choicePFMethod->GetSelection() == 0)
+ m_textCtrlAccFactor->Enable();
+ else
+ m_textCtrlAccFactor->Enable(false);
+}