Skip to content

Commit

Permalink
Merge branch 'master' of https://openmodelica.org/git-readonly/OMEdit
Browse files Browse the repository at this point in the history
…into my_omedit_branch
  • Loading branch information
robbr48 committed Apr 8, 2016
2 parents f86be8d + 2d4e99c commit c77151b
Show file tree
Hide file tree
Showing 5 changed files with 71 additions and 35 deletions.
24 changes: 24 additions & 0 deletions OMEdit/OMEditGUI/OMC/OMCProxy.cpp
Expand Up @@ -2452,6 +2452,30 @@ void OMCProxy::getSolverMethods(QStringList *methods, QStringList *descriptions)
}
}

/*!
* \brief OMCProxy::getJacobianMethods
* Returns the list of jacobian methods and their description.
* \param methods
* \param descriptions
*/
void OMCProxy::getJacobianMethods(QStringList *methods, QStringList *descriptions)
{
for (int i = JAC_UNKNOWN + 1 ; i < JAC_MAX ; i++) {
*methods << JACOBIAN_METHOD[i];
*descriptions << JACOBIAN_METHOD_DESC[i];
}
}

/*!
* \brief OMCProxy::getJacobianFlagDetailedDescription
* Returns the Jacobian flag detailed description
* \return
*/
QString OMCProxy::getJacobianFlagDetailedDescription()
{
return FLAG_DETAILED_DESC[FLAG_JACOBIAN];
}

/*!
* \brief OMCProxy::getInitializationMethods
* Returns the list of initialization methods name and their description.
Expand Down
2 changes: 2 additions & 0 deletions OMEdit/OMEditGUI/OMC/OMCProxy.h
Expand Up @@ -223,6 +223,8 @@ class OMCProxy : public QObject
bool copyClass(QString className, QString newClassName, QString withIn);
QStringList getEnumerationLiterals(QString className);
void getSolverMethods(QStringList *methods, QStringList *descriptions);
void getJacobianMethods(QStringList *methods, QStringList *descriptions);
QString getJacobianFlagDetailedDescription();
void getInitializationMethods(QStringList *methods, QStringList *descriptions);
void getLinearSolvers(QStringList *methods, QStringList *descriptions);
void getNonLinearSolvers(QStringList *methods, QStringList *descriptions);
Expand Down
67 changes: 38 additions & 29 deletions OMEdit/OMEditGUI/Simulation/SimulationDialog.cpp
Expand Up @@ -181,21 +181,20 @@ void SimulationDialog::setUpForm()
// Tolerance
mpToleranceLabel = new Label(tr("Tolerance:"));
mpToleranceTextBox = new QLineEdit("1e-6");
// jacobian
mpJacobianLabel = new Label(tr("Jacobian:"));
mpJacobianLabel->setToolTip(mpMainWindow->getOMCProxy()->getJacobianFlagDetailedDescription());
QStringList jacobianMethods, jacobianMethodsDesc;
mpMainWindow->getOMCProxy()->getJacobianMethods(&jacobianMethods, &jacobianMethodsDesc);
mpJacobianComboBox = new QComboBox;
mpJacobianComboBox->addItems(jacobianMethods);
for (int i = 0 ; i < jacobianMethodsDesc.size() ; i++) {
mpJacobianComboBox->setItemData(i, jacobianMethodsDesc.at(i), Qt::ToolTipRole);
}
connect(mpJacobianComboBox, SIGNAL(currentIndexChanged(int)), SLOT(updateJacobianToolTip(int)));
updateJacobianToolTip(0);
// dassl options
mpDasslOptionsGroupBox = new QGroupBox(tr("DASSL Options"));
// dassl jacobian
mpDasslJacobianLabel = new Label(tr("Jacobian:"));
mpDasslJacobianComboBox = new QComboBox;
mpDasslJacobianComboBox->addItem(tr("Colored Numerical"), "coloredNumerical");
mpDasslJacobianComboBox->setItemData(0, "colored numerical jacobian", Qt::ToolTipRole);
mpDasslJacobianComboBox->addItem(tr("Colored Symbolical"), "coloredSymbolical");
mpDasslJacobianComboBox->setItemData(1, "colored symbolic jacobian - needs omc compiler flags +generateSymbolicJacobian or +generateSymbolicLinearization", Qt::ToolTipRole);
mpDasslJacobianComboBox->addItem(tr("Internal Numerical"), "internalNumerical");
mpDasslJacobianComboBox->setItemData(2, "internal numerical jacobian", Qt::ToolTipRole);
mpDasslJacobianComboBox->addItem(tr("Symbolical"), "symbolical");
mpDasslJacobianComboBox->setItemData(3, "symbolic jacobian - needs omc compiler flags +generateSymbolicJacobian or +generateSymbolicLinearization", Qt::ToolTipRole);
mpDasslJacobianComboBox->addItem(tr("Numerical"), "numerical");
mpDasslJacobianComboBox->setItemData(4, "numerical jacobian", Qt::ToolTipRole);
// no root finding
mpDasslRootFindingCheckBox = new QCheckBox(tr("Root Finding"));
mpDasslRootFindingCheckBox->setToolTip(tr("Activates the internal root finding procedure of dassl"));
Expand All @@ -217,16 +216,14 @@ void SimulationDialog::setUpForm()
// set the layout for DASSL options groupbox
QGridLayout *pDasslOptionsGridLayout = new QGridLayout;
pDasslOptionsGridLayout->setColumnStretch(1, 1);
pDasslOptionsGridLayout->addWidget(mpDasslJacobianLabel, 0, 0);
pDasslOptionsGridLayout->addWidget(mpDasslJacobianComboBox, 0, 1);
pDasslOptionsGridLayout->addWidget(mpDasslRootFindingCheckBox, 1, 0, 1, 2);
pDasslOptionsGridLayout->addWidget(mpDasslRestartCheckBox, 2, 0, 1, 2);
pDasslOptionsGridLayout->addWidget(mpDasslInitialStepSizeLabel, 3, 0);
pDasslOptionsGridLayout->addWidget(mpDasslInitialStepSizeTextBox, 3, 1);
pDasslOptionsGridLayout->addWidget(mpDasslMaxStepSizeLabel, 4, 0);
pDasslOptionsGridLayout->addWidget(mpDasslMaxStepSizeTextBox, 4, 1);
pDasslOptionsGridLayout->addWidget(mpDasslMaxIntegrationOrderLabel, 5, 0);
pDasslOptionsGridLayout->addWidget(mpDasslMaxIntegrationOrderSpinBox, 5, 1);
pDasslOptionsGridLayout->addWidget(mpDasslRootFindingCheckBox, 0, 0, 1, 2);
pDasslOptionsGridLayout->addWidget(mpDasslRestartCheckBox, 1, 0, 1, 2);
pDasslOptionsGridLayout->addWidget(mpDasslInitialStepSizeLabel, 2, 0);
pDasslOptionsGridLayout->addWidget(mpDasslInitialStepSizeTextBox, 2, 1);
pDasslOptionsGridLayout->addWidget(mpDasslMaxStepSizeLabel, 3, 0);
pDasslOptionsGridLayout->addWidget(mpDasslMaxStepSizeTextBox, 3, 1);
pDasslOptionsGridLayout->addWidget(mpDasslMaxIntegrationOrderLabel, 4, 0);
pDasslOptionsGridLayout->addWidget(mpDasslMaxIntegrationOrderSpinBox, 4, 1);
mpDasslOptionsGroupBox->setLayout(pDasslOptionsGridLayout);
// set the layout for integration groupbox
QGridLayout *pIntegrationGridLayout = new QGridLayout;
Expand All @@ -236,7 +233,9 @@ void SimulationDialog::setUpForm()
pIntegrationGridLayout->addWidget(mpMehtodHelpButton, 0, 2);
pIntegrationGridLayout->addWidget(mpToleranceLabel, 1, 0);
pIntegrationGridLayout->addWidget(mpToleranceTextBox, 1, 1, 1, 2);
pIntegrationGridLayout->addWidget(mpDasslOptionsGroupBox, 2, 0, 1, 3);
pIntegrationGridLayout->addWidget(mpJacobianLabel, 2, 0);
pIntegrationGridLayout->addWidget(mpJacobianComboBox, 2, 1, 1, 2);
pIntegrationGridLayout->addWidget(mpDasslOptionsGroupBox, 3, 0, 1, 3);
mpIntegrationGroupBox->setLayout(pIntegrationGridLayout);
// Compiler Flags
mpCflagsLabel = new Label(tr("Compiler Flags (Optional):"));
Expand Down Expand Up @@ -589,9 +588,9 @@ void SimulationDialog::initializeFields(bool isReSimulate, SimulationOptions sim
// Tolerance
mpToleranceTextBox->setText(simulationOptions.getTolerance());
// dassl jacobian
currentIndex = mpDasslJacobianComboBox->findText(simulationOptions.getDasslJacobian(), Qt::MatchExactly);
currentIndex = mpJacobianComboBox->findText(simulationOptions.getJacobian(), Qt::MatchExactly);
if (currentIndex > -1) {
mpDasslJacobianComboBox->setCurrentIndex(currentIndex);
mpJacobianComboBox->setCurrentIndex(currentIndex);
}
// no root finding
mpDasslRootFindingCheckBox->setChecked(simulationOptions.getDasslRootFinding());
Expand Down Expand Up @@ -726,7 +725,7 @@ SimulationOptions SimulationDialog::createSimulationOptions()
simulationOptions.setStopTime(mpStopTimeTextBox->text());
simulationOptions.setMethod(mpMethodComboBox->currentText());
simulationOptions.setTolerance(mpToleranceTextBox->text());
simulationOptions.setDasslJacobian(mpDasslJacobianComboBox->itemData(mpDasslJacobianComboBox->currentIndex()).toString());
simulationOptions.setJacobian(mpJacobianComboBox->itemData(mpJacobianComboBox->currentIndex()).toString());
simulationOptions.setDasslRootFinding(mpDasslRootFindingCheckBox->isChecked());
simulationOptions.setDasslRestart(mpDasslRestartCheckBox->isChecked());
simulationOptions.setDasslInitialStepSize(mpDasslInitialStepSizeTextBox->text());
Expand Down Expand Up @@ -793,10 +792,10 @@ SimulationOptions SimulationDialog::createSimulationOptions()
.arg("outputFormat").arg(simulationOptions.getOutputFormat())
.arg("variableFilter").arg(simulationOptions.getVariableFilter()));
simulationFlags.append(QString("-r=").append(simulationOptions.getResultFileName()));
// jacobian
simulationFlags.append(QString("-jacobian=").append(mpJacobianComboBox->itemData(mpJacobianComboBox->currentIndex()).toString()));
// dassl options
if (mpDasslOptionsGroupBox->isEnabled()) {
// dassl jacobian
simulationFlags.append(QString("-dasslJacobian=").append(mpDasslJacobianComboBox->itemData(mpDasslJacobianComboBox->currentIndex()).toString()));
// dassl root finding
if (!mpDasslRootFindingCheckBox->isChecked()) {
simulationFlags.append("-dasslnoRootFinding");
Expand Down Expand Up @@ -1103,6 +1102,16 @@ void SimulationDialog::showIntegrationHelp()
}
}

/*!
* \brief SimulationDialog::updateJacobianToolTip
* Updates the Jacobian combobox tooltip.
* \param index
*/
void SimulationDialog::updateJacobianToolTip(int index)
{
mpJacobianComboBox->setToolTip(mpJacobianComboBox->itemData(index, Qt::ToolTipRole).toString());
}

/*!
* \brief SimulationDialog::buildOnly
* Slot activated when mpBuildOnlyCheckBox checkbox is checked.\n
Expand Down
5 changes: 3 additions & 2 deletions OMEdit/OMEditGUI/Simulation/SimulationDialog.h
Expand Up @@ -100,9 +100,9 @@ class SimulationDialog : public QDialog
QToolButton *mpMehtodHelpButton;
Label *mpToleranceLabel;
QLineEdit *mpToleranceTextBox;
Label *mpJacobianLabel;
QComboBox *mpJacobianComboBox;
QGroupBox *mpDasslOptionsGroupBox;
Label *mpDasslJacobianLabel;
QComboBox *mpDasslJacobianComboBox;
QCheckBox *mpDasslRootFindingCheckBox;
QCheckBox *mpDasslRestartCheckBox;
Label *mpDasslInitialStepSizeLabel;
Expand Down Expand Up @@ -200,6 +200,7 @@ public slots:
void updateMethodToolTip(int index);
void enableDasslOptions(QString method);
void showIntegrationHelp();
void updateJacobianToolTip(int index);
void buildOnly(bool checked);
void browseModelSetupFile();
void browseEquationSystemInitializationFile();
Expand Down
8 changes: 4 additions & 4 deletions OMEdit/OMEditGUI/Simulation/SimulationOptions.h
Expand Up @@ -50,7 +50,7 @@ class SimulationOptions
setStopTime("");
setMethod("");
setTolerance("");
setDasslJacobian("");
setJacobian("");
setDasslRootFinding(true);
setDasslRestart(true);
setDasslInitialStepSize("");
Expand Down Expand Up @@ -101,8 +101,8 @@ class SimulationOptions
QString getMethod() {return mMethod;}
void setTolerance(QString tolerance) {mTolerance = tolerance;}
QString getTolerance() {return mTolerance;}
void setDasslJacobian(QString dasslJacobian) {mDasslJacobian = dasslJacobian;}
QString getDasslJacobian() {return mDasslJacobian;}
void setJacobian(QString jacobian) {mJacobian = jacobian;}
QString getJacobian() {return mJacobian;}
void setDasslRootFinding(bool dasslRootFinding) {mDasslRootFinding = dasslRootFinding;}
bool getDasslRootFinding() {return mDasslRootFinding;}
void setDasslRestart(bool dasslRestart) {mDasslRestart = dasslRestart;}
Expand Down Expand Up @@ -189,7 +189,7 @@ class SimulationOptions
QString mStopTime;
QString mMethod;
QString mTolerance;
QString mDasslJacobian;
QString mJacobian;
bool mDasslRootFinding;
bool mDasslRestart;
QString mDasslInitialStepSize;
Expand Down

0 comments on commit c77151b

Please sign in to comment.