Changeset 15469


Ignore:
Timestamp:
2013-03-04T17:36:00+01:00 (11 years ago)
Author:
adeas31
Message:
  • simulations flags.
Location:
branches/OMEdit/OMEditGUI
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/OMEdit/OMEditGUI/GUI/Dialogs/SimulationDialog.cpp

    r15451 r15469  
    4949  : QDialog(pParent, Qt::WindowTitleHint)
    5050{
    51   setWindowTitle(QString(Helper::applicationName).append(" - ").append(Helper::simulation));
     51  setWindowIcon(QIcon(":/Resources/icons/simulate.png"));
    5252  setModal(true);
    5353  mpMainWindow = pParent;
     54  resize(550, 550);
    5455  setUpForm();
    5556  mpProgressDialog = new ProgressDialog(this);
     
    6263{
    6364  // simulation widget heading
    64   mpSimulationHeading = new Label(Helper::simulate);
     65  mpSimulationHeading = new Label;
    6566  mpSimulationHeading->setFont(QFont(Helper::systemFontInfo.family(), Helper::headingFontSize));
    6667  // Horizontal separator
     
    144145  // Simulation Flags Tab
    145146  mpSimulationFlagsTab = new QWidget;
     147  // Simulation Flags Tab scroll area
     148  mpSimulationFlagsTabScrollArea = new QScrollArea;
     149  mpSimulationFlagsTabScrollArea->setFrameShape(QFrame::NoFrame);
     150  mpSimulationFlagsTabScrollArea->setBackgroundRole(QPalette::Base);
     151  mpSimulationFlagsTabScrollArea->setWidgetResizable(true);
     152  mpSimulationFlagsTabScrollArea->setWidget(mpSimulationFlagsTab);
    146153  // Model Setup File
    147154  mpModelSetupFileLabel = new Label(tr("Model Setup File (Optional):"));
     155  mpModelSetupFileLabel->setToolTip(tr("Specifies a new setup XML file to the generated simulation code."));
    148156  mpModelSetupFileTextBox = new QLineEdit;
    149157  mpModelSetupFileBrowseButton = new QPushButton(Helper::browse);
     
    151159  // Initialization Methods
    152160  mpInitializationMethodLabel = new Label(tr("Initialization Method (Optional):"));
     161  mpInitializationMethodLabel->setToolTip(tr("Specifies the initialization method."));
    153162  mpInitializationMethodComboBox = new QComboBox;
    154163  mpInitializationMethodComboBox->addItems(Helper::ModelicaInitializationMethods.toLower().split(","));
    155164  // Optimization Methods
    156165  mpOptimizationMethodLabel = new Label(tr("Optimization Method (Optional):"));
     166  mpOptimizationMethodLabel->setToolTip(tr("Specifies the initialization optimization method."));
    157167  mpOptimizationMethodComboBox = new QComboBox;
    158168  mpOptimizationMethodComboBox->addItems(Helper::ModelicaOptimizationMethods.toLower().split(","));
    159169  // Equation System Initialization File
    160170  mpEquationSystemInitializationFileLabel = new Label(tr("Equation System Initialization File (Optional):"));
     171  mpEquationSystemInitializationFileLabel->setToolTip(tr("Specifies an external file for the initialization of the model."));
    161172  mpEquationSystemInitializationFileTextBox = new QLineEdit;
    162173  mpEquationSystemInitializationFileBrowseButton = new QPushButton(Helper::browse);
     
    164175  // Equation System time
    165176  mpEquationSystemInitializationTimeLabel = new Label(tr("Equation System Initialization Time (Optional):"));
     177  mpEquationSystemInitializationTimeLabel->setToolTip(tr("Specifies a time for the initialization of the model."));
    166178  mpEquationSystemInitializationTimeTextBox = new QLineEdit;
     179  // clock
     180  mpClockLabel = new Label(tr("Clock (Optional):"));
     181  mpClockComboBox = new QComboBox;
     182  mpClockComboBox->addItems(Helper::clockOptions.split(","));
     183  // Linear Solvers
     184  mpLinearSolverLabel = new Label(tr("Linear Solver (Optional):"));
     185  mpLinearSolverComboBox = new QComboBox;
     186  mpLinearSolverComboBox->addItems(Helper::linearSolvers.split(","));
     187  // Non Linear Solvers
     188  mpNonLinearSolverLabel = new Label(tr("Non Linear Solver (Optional):"));
     189  mpNonLinearSolverComboBox = new QComboBox;
     190  mpNonLinearSolverComboBox->addItems(Helper::nonLinearSolvers.split(","));
     191  // time where the linearization of the model should be performed
     192  mpLinearizationTimeLabel = new Label(tr("Linearization Time (Optional):"));
     193  mpLinearizationTimeTextBox = new QLineEdit;
     194  // output variables
     195  mpOutputVariablesLabel = new Label(tr("Output Variables (Optional):"));
     196  mpOutputVariablesLabel->setToolTip(tr("Comma separated list of variables. Output the variables at the end of the simulation to the standard output."));
     197  mpOutputVariablesTextBox = new QLineEdit;
    167198  // Logging
    168199  mpLogDasslSolverCheckBox = new QCheckBox(tr("DASSL Solver Information"));
     
    204235  // layout for logging group
    205236  QGridLayout *pLoggingGroupLayout = new QGridLayout;
    206   pLoggingGroupLayout->addWidget(mpLogDasslSolverCheckBox);
    207   pLoggingGroupLayout->addWidget(mpLogDebugCheckBox);
    208   pLoggingGroupLayout->addWidget(mpLogDynamicStateSelectionCheckBox);
    209   pLoggingGroupLayout->addWidget(mpLogJacobianDynamicStateSelectionCheckBox);
    210   pLoggingGroupLayout->addWidget(mpLogEventsCheckBox);
    211   pLoggingGroupLayout->addWidget(mpLogVerboseEventsCheckBox);
    212   pLoggingGroupLayout->addWidget(mpLogInitializationCheckBox);
    213   pLoggingGroupLayout->addWidget(mpLogJacobianCheckBox);
    214   pLoggingGroupLayout->addWidget(mpLogNonLinearSystemsCheckBox);
    215   pLoggingGroupLayout->addWidget(mpLogVerboseNonLinearSystemsCheckBox);
    216   pLoggingGroupLayout->addWidget(mpLogJacobianNonLinearSystemsCheckBox);
    217   pLoggingGroupLayout->addWidget(mpLogResidualsInitializationCheckBox);
    218   pLoggingGroupLayout->addWidget(mpLogSimulationCheckBox);
    219   pLoggingGroupLayout->addWidget(mpLogSolverCheckBox);
    220   pLoggingGroupLayout->addWidget(mpLogFinalSolutionOfInitializationCheckBox);
    221   pLoggingGroupLayout->addWidget(mpLogStatsCheckBox);
    222   pLoggingGroupLayout->addWidget(mpLogUtilCheckBox);
    223   pLoggingGroupLayout->addWidget(mpLogZeroCrossingsCheckBox);
     237  pLoggingGroupLayout->addWidget(mpLogDasslSolverCheckBox, 0, 0);
     238  pLoggingGroupLayout->addWidget(mpLogDebugCheckBox, 0, 1);
     239  pLoggingGroupLayout->addWidget(mpLogDynamicStateSelectionCheckBox, 1, 0);
     240  pLoggingGroupLayout->addWidget(mpLogJacobianDynamicStateSelectionCheckBox, 1, 1);
     241  pLoggingGroupLayout->addWidget(mpLogEventsCheckBox, 2, 0);
     242  pLoggingGroupLayout->addWidget(mpLogVerboseEventsCheckBox, 2, 1);
     243  pLoggingGroupLayout->addWidget(mpLogInitializationCheckBox, 3, 0);
     244  pLoggingGroupLayout->addWidget(mpLogJacobianCheckBox, 3, 1);
     245  pLoggingGroupLayout->addWidget(mpLogNonLinearSystemsCheckBox, 4, 0);
     246  pLoggingGroupLayout->addWidget(mpLogVerboseNonLinearSystemsCheckBox, 4, 1);
     247  pLoggingGroupLayout->addWidget(mpLogJacobianNonLinearSystemsCheckBox, 5, 0);
     248  pLoggingGroupLayout->addWidget(mpLogResidualsInitializationCheckBox, 5, 1);
     249  pLoggingGroupLayout->addWidget(mpLogSimulationCheckBox, 6, 0);
     250  pLoggingGroupLayout->addWidget(mpLogSolverCheckBox, 6, 1);
     251  pLoggingGroupLayout->addWidget(mpLogFinalSolutionOfInitializationCheckBox, 7, 0);
     252  pLoggingGroupLayout->addWidget(mpLogStatsCheckBox, 7, 1);
     253  pLoggingGroupLayout->addWidget(mpLogUtilCheckBox, 8, 0);
     254  pLoggingGroupLayout->addWidget(mpLogZeroCrossingsCheckBox, 8, 1);
    224255  mpLoggingGroupBox = new QGroupBox(tr("Logging (Optional)"));
    225256  mpLoggingGroupBox->setLayout(pLoggingGroupLayout);
    226   mpLoggingScrollArea = new QScrollArea;
    227   mpLoggingScrollArea->setFrameShape(QFrame::NoFrame);
    228   mpLoggingScrollArea->setBackgroundRole(QPalette::Base);
    229   mpLoggingScrollArea->setWidgetResizable(true);
    230   mpLoggingScrollArea->setWidget(mpLoggingGroupBox);
    231257  // measure simulation time checkbox
    232258  mpProfilingCheckBox = new QCheckBox(tr("Profiling (~5-25% overhead)"));
    233259  // cpu-time checkbox
    234   mpCPUTimeCheckBox = new QCheckBox(tr("CPU time"));
     260  mpCPUTimeCheckBox = new QCheckBox(tr("CPU Time"));
    235261  // set Output Tab Layout
    236262  QGridLayout *pSimulationFlagsTabLayout = new QGridLayout;
     
    248274  pSimulationFlagsTabLayout->addWidget(mpEquationSystemInitializationTimeLabel, 4, 0);
    249275  pSimulationFlagsTabLayout->addWidget(mpEquationSystemInitializationTimeTextBox, 4, 1, 1, 2);
    250   pSimulationFlagsTabLayout->addWidget(mpLoggingScrollArea, 5, 0, 1, 3);
    251   pSimulationFlagsTabLayout->addWidget(mpProfilingCheckBox, 6, 0);
    252   pSimulationFlagsTabLayout->addWidget(mpCPUTimeCheckBox, 7, 0);
     276  pSimulationFlagsTabLayout->addWidget(mpClockLabel, 5, 0);
     277  pSimulationFlagsTabLayout->addWidget(mpClockComboBox, 5, 1, 1, 2);
     278  pSimulationFlagsTabLayout->addWidget(mpLinearSolverLabel, 6, 0);
     279  pSimulationFlagsTabLayout->addWidget(mpLinearSolverComboBox, 6, 1, 1, 2);
     280  pSimulationFlagsTabLayout->addWidget(mpNonLinearSolverLabel, 7, 0);
     281  pSimulationFlagsTabLayout->addWidget(mpNonLinearSolverComboBox, 7, 1, 1, 2);
     282  pSimulationFlagsTabLayout->addWidget(mpLinearizationTimeLabel, 8, 0);
     283  pSimulationFlagsTabLayout->addWidget(mpLinearizationTimeTextBox, 8, 1, 1, 2);
     284  pSimulationFlagsTabLayout->addWidget(mpOutputVariablesLabel, 9, 0);
     285  pSimulationFlagsTabLayout->addWidget(mpOutputVariablesTextBox, 9, 1, 1, 2);
     286  pSimulationFlagsTabLayout->addWidget(mpProfilingCheckBox, 10, 0);
     287  pSimulationFlagsTabLayout->addWidget(mpCPUTimeCheckBox, 11, 0);
     288  pSimulationFlagsTabLayout->addWidget(mpLoggingGroupBox, 12, 0, 1, 3);
    253289  mpSimulationFlagsTab->setLayout(pSimulationFlagsTabLayout);
    254290  // add Output Tab to Simulation TabWidget
    255   mpSimulationTabWidget->addTab(mpSimulationFlagsTab, tr("Simulation Flags"));
     291  mpSimulationTabWidget->addTab(mpSimulationFlagsTabScrollArea, tr("Simulation Flags"));
    256292  // Add the validators
    257   QDoubleValidator *doubleValidator = new QDoubleValidator(this);
    258   doubleValidator->setBottom(0);
    259   mpStartTimeTextBox->setValidator(doubleValidator);
    260   mpStopTimeTextBox->setValidator(doubleValidator);
    261   mpToleranceTextBox->setValidator(doubleValidator);
    262   QIntValidator *intValidator = new QIntValidator(this);
    263   intValidator->setBottom(1);
    264   mpNumberofIntervalsTextBox->setValidator(intValidator);
     293  QDoubleValidator *pDoubleValidator = new QDoubleValidator(this);
     294  pDoubleValidator->setBottom(0);
     295  mpStartTimeTextBox->setValidator(pDoubleValidator);
     296  mpStopTimeTextBox->setValidator(pDoubleValidator);
     297  mpToleranceTextBox->setValidator(pDoubleValidator);
     298  QIntValidator *pIntValidator = new QIntValidator(this);
     299  pIntValidator->setBottom(1);
     300  mpNumberofIntervalsTextBox->setValidator(pIntValidator);
    265301  // Create the buttons
    266302  mpSimulateButton = new QPushButton(Helper::simulate);
     
    294330  if (mIsInteractive)
    295331  {
    296     setWindowTitle(QString(Helper::applicationName).append(" - ").append(Helper::interactiveSimulation));
    297     mpSimulationHeading->setText(Helper::interactiveSimulation);
     332    setWindowTitle(QString(Helper::applicationName).append(" - ").append(Helper::interactiveSimulation)
     333                   .append(" - ").append(mpLibraryTreeNode->getNameStructure()));
     334    mpSimulationHeading->setText(QString(Helper::interactiveSimulation).append(" - ").append(mpLibraryTreeNode->getNameStructure()));
    298335    mpSimulationIntervalGroupBox->setDisabled(true);
    299336    return;
     
    301338  else
    302339  {
    303     setWindowTitle(QString(Helper::applicationName).append(" - ").append(Helper::simulation));
    304     mpSimulationHeading->setText(Helper::simulation);
     340    setWindowTitle(QString(Helper::applicationName).append(" - ").append(Helper::simulation)
     341                   .append(" - ").append(mpLibraryTreeNode->getNameStructure()));
     342    mpSimulationHeading->setText(QString(Helper::simulation).append(" - ").append(mpLibraryTreeNode->getNameStructure()));
    305343    mpSimulationIntervalGroupBox->setDisabled(false);
    306344  }
     
    425463    {
    426464      simulationFlags.append(QString("-iit=").append(mpEquationSystemInitializationTimeTextBox->text()));
     465    }
     466    // clock
     467    if (!mpClockComboBox->currentText().isEmpty())
     468    {
     469      simulationFlags.append(QString("-clock=").append(mpClockComboBox->currentText()));
     470    }
     471    // linear solver
     472    if (!mpLinearSolverComboBox->currentText().isEmpty())
     473    {
     474      simulationFlags.append(QString("-ls=").append(mpLinearSolverComboBox->currentText()));
     475    }
     476    // non linear solver
     477    if (!mpNonLinearSolverComboBox->currentText().isEmpty())
     478    {
     479      simulationFlags.append(QString("-nls=").append(mpNonLinearSolverComboBox->currentText()));
     480    }
     481    // time where the linearization of the model should be performed
     482    if (!mpLinearizationTimeTextBox->text().isEmpty())
     483    {
     484      simulationFlags.append(QString("-l=").append(mpLinearizationTimeTextBox->text()));
     485    }
     486    // output variables
     487    if (!mpOutputVariablesTextBox->text().isEmpty())
     488    {
     489      simulationFlags.append(QString("-output=").append(mpOutputVariablesTextBox->text()));
    427490    }
    428491    // setup Logging flags
  • branches/OMEdit/OMEditGUI/GUI/Dialogs/SimulationDialog.h

    r15141 r15469  
    8787  // Simulation Flags Tab
    8888  QWidget *mpSimulationFlagsTab;
     89  QScrollArea *mpSimulationFlagsTabScrollArea;
    8990  Label *mpModelSetupFileLabel;
    9091  QLineEdit *mpModelSetupFileTextBox;
     
    99100  Label *mpEquationSystemInitializationTimeLabel;
    100101  QLineEdit *mpEquationSystemInitializationTimeTextBox;
    101   QScrollArea *mpLoggingScrollArea;
     102  Label *mpClockLabel;
     103  QComboBox *mpClockComboBox;
     104  Label *mpLinearSolverLabel;
     105  QComboBox *mpLinearSolverComboBox;
     106  Label *mpNonLinearSolverLabel;
     107  QComboBox *mpNonLinearSolverComboBox;
     108  Label *mpLinearizationTimeLabel;
     109  QLineEdit *mpLinearizationTimeTextBox;
     110  Label *mpOutputVariablesLabel;
     111  QLineEdit *mpOutputVariablesTextBox;
    102112  QGroupBox *mpLoggingGroupBox;
    103113  QCheckBox *mpLogDasslSolverCheckBox;
  • branches/OMEdit/OMEditGUI/GUI/MainWindow.cpp

    r15400 r15469  
    13681368  mpSimulationAction = new QAction(QIcon(":/Resources/icons/simulate.png"), Helper::simulate, this);
    13691369  mpSimulationAction->setStatusTip(Helper::simulateTip);
     1370  mpSimulationAction->setShortcut(QKeySequence("Ctrl+r"));
    13701371  mpSimulationAction->setEnabled(false);
    13711372  connect(mpSimulationAction, SIGNAL(triggered()), SLOT(openSimulationDialog()));
  • branches/OMEdit/OMEditGUI/Util/Helper.cpp

    r15424 r15469  
    7575QString Helper::ModelicaOptimizationMethods = ",nelder_mead_ex,nelder_mead_ex2,simplex,newuoa";
    7676QString Helper::ModelicaSimulationOutputFormats = "mat,plt,csv,empty";
     77QString Helper::clockOptions = ",RT,CPU";
     78QString Helper::linearSolvers = ",lapack";
     79QString Helper::nonLinearSolvers = ",hybrid,kinsol,newton";
    7780QString Helper::fontSizes = "6,7,8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72";
    7881QString Helper::notificationLevel = ".OpenModelica.Scripting.ErrorLevel.notification";
  • branches/OMEdit/OMEditGUI/Util/Helper.h

    r15424 r15469  
    8484  static int headingFontSize;
    8585  static QString ModelicaSimulationMethods;
    86   static QString ModelicaSimulationOutputFormats;
    8786  static QString ModelicaInitializationMethods;
    8887  static QString ModelicaOptimizationMethods;
     88  static QString ModelicaSimulationOutputFormats;
     89  static QString clockOptions;
     90  static QString linearSolvers;
     91  static QString nonLinearSolvers;
    8992  static QString fontSizes;
    9093  static QString notificationLevel;
Note: See TracChangeset for help on using the changeset viewer.