Skip to content

Commit

Permalink
Added a new interface for data reconciliation (#8257)
Browse files Browse the repository at this point in the history
* Added a new interface for data reconciliation

* add Message box to validate data Reconciliation

* Default epsilon value

Co-authored-by: arun3688 <rain100falls@gmail.com>
  • Loading branch information
adeas31 and arun3688 committed Dec 7, 2021
1 parent 3adf772 commit cf55cd7
Show file tree
Hide file tree
Showing 9 changed files with 322 additions and 175 deletions.
143 changes: 82 additions & 61 deletions OMEdit/OMEditLIB/MainWindow.cpp

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions OMEdit/OMEditLIB/MainWindow.h
Expand Up @@ -171,6 +171,7 @@ class MainWindow : public QMainWindow
QAction* getCheckModelAction() {return mpCheckModelAction;}
QAction* getCheckAllModelsAction() {return mpCheckAllModelsAction;}
QAction* getInstantiateModelAction() {return mpInstantiateModelAction;}
QAction* getCalculateDataReconciliationAction() {return mpCalculateDataReconciliationAction;}
QAction* getExportFMUAction() {return mpExportFMUAction;}
QAction* getExportEncryptedPackageAction() {return mpExportEncryptedPackageAction;}
QAction* getExportRealonlyPackageAction() {return mpExportReadonlyPackageAction;}
Expand Down Expand Up @@ -367,6 +368,8 @@ class MainWindow : public QMainWindow
#endif
QAction *mpSimulateModelInteractiveAction;
QAction *mpArchivedSimulationsAction;
// Data reconciliation action
QAction *mpCalculateDataReconciliationAction;
// Debug Menu
QAction *mpDebugConfigurationsAction;
QAction *mpAttachDebuggerToRunningProcessAction;
Expand Down Expand Up @@ -558,6 +561,7 @@ private slots:
void documentationDockWidgetVisibilityChanged(bool visible);
void threeDViewerDockWidgetVisibilityChanged(bool visible);
void autoSave();
void showDataReconciliationDialog();
void showDebugConfigurationsDialog();
void showAttachToProcessDialog();
void createGitRepository();
Expand Down
2 changes: 2 additions & 0 deletions OMEdit/OMEditLIB/Modeling/ModelWidgetContainer.cpp
Expand Up @@ -5316,6 +5316,7 @@ void ModelWidget::reDrawModelWidget()
loadElements();
// invalidate the simulation options
mpLibraryTreeItem->mSimulationOptions.setIsValid(false);
mpLibraryTreeItem->mSimulationOptions.setDataReconciliationInitialized(false);
// update the icon
mpLibraryTreeItem->handleIconUpdated();
// Draw diagram view
Expand Down Expand Up @@ -8398,6 +8399,7 @@ void ModelWidgetContainer::currentModelWidgetChanged(QMdiSubWindow *pSubWindow)
#endif
MainWindow::instance()->getSimulateModelInteractiveAction()->setEnabled(enabled && oms);
MainWindow::instance()->getSimulationSetupAction()->setEnabled(enabled && ((modelica && pLibraryTreeItem->isSimulationAllowed()) || (oms)));
MainWindow::instance()->getCalculateDataReconciliationAction()->setEnabled(enabled && modelica && pLibraryTreeItem->isSimulationAllowed());
bool accessAnnotation = false;
if (pLibraryTreeItem && (pLibraryTreeItem->getAccess() >= LibraryTreeItem::packageText
|| ((pLibraryTreeItem->getAccess() == LibraryTreeItem::nonPackageText
Expand Down
1 change: 1 addition & 0 deletions OMEdit/OMEditLIB/Options/OptionsDialog.cpp
Expand Up @@ -5506,6 +5506,7 @@ void DiscardLocalTranslationFlagsDialog::discardLocalTranslationFlags()
LibraryTreeItem *pLibraryTreeItem = MainWindow::instance()->getLibraryWidget()->getLibraryTreeModel()->findLibraryTreeItem(pClassWithLocalTranslationFlags->text());
if (pLibraryTreeItem) {
pLibraryTreeItem->mSimulationOptions.setIsValid(false);
pLibraryTreeItem->mSimulationOptions.setDataReconciliationInitialized(false);
}
}
}
Expand Down
285 changes: 191 additions & 94 deletions OMEdit/OMEditLIB/Simulation/SimulationDialog.cpp

Large diffs are not rendered by default.

44 changes: 28 additions & 16 deletions OMEdit/OMEditLIB/Simulation/SimulationDialog.h
Expand Up @@ -65,7 +65,7 @@ class SimulationDialog : public QDialog
SimulationDialog(QWidget *pParent = 0);
~SimulationDialog();
void show(LibraryTreeItem *pLibraryTreeItem, bool isReSimulate, SimulationOptions simulationOptions);
void directSimulate(LibraryTreeItem *pLibraryTreeItem, bool launchTransformationalDebugger, bool launchAlgorithmicDebugger, bool launchAnimation);
void directSimulate(LibraryTreeItem *pLibraryTreeItem, bool launchTransformationalDebugger, bool launchAlgorithmicDebugger, bool launchAnimation, bool enableDataReconciliation);
OpcUaClient* getOpcUaClient(int port);
void removeSimulationOutputWidget(SimulationOutputWidget* pSimulationOutputWidget);
private:
Expand Down Expand Up @@ -171,19 +171,6 @@ class SimulationDialog : public QDialog
QCheckBox *mpEquidistantTimeGridCheckBox;
QCheckBox *mpStoreVariablesAtEventsCheckBox;
QCheckBox *mpShowGeneratedFilesCheckBox;
// Data Reconciliation Tab
QWidget *mpDataReconciliationTab;
QGroupBox *mpDataReconciliationGroupBox;
Label *mpDataReconciliationAlgorithmLabel;
QComboBox *mpDataReconciliationAlgorithmComboBox;
Label *mpDataReconciliationMeasurementInputFileLabel;
QLineEdit *mpDataReconciliationMeasurementInputFileTextBox;
QPushButton *mpDataReconciliationMeasurementInputFileBrowseButton;
Label *mpDataReconciliationCorrelationMatrixInputFileLabel;
QLineEdit *mpDataReconciliationCorrelationMatrixInputFileTextBox;
QPushButton *mpDataReconciliationCorrelationMatrixInputFileBrowseButton;
Label *mpDataReconciliationEpsilonLabel;
QLineEdit *mpDataReconciliationEpsilonTextBox;
// checkboxes
QCheckBox *mpSaveExperimentAnnotationCheckBox;
QCheckBox *mpSaveSimulationFlagsAnnotationCheckBox;
Expand Down Expand Up @@ -238,10 +225,35 @@ public slots:
void updateYAxis(double min, double max);
private slots:
void resultFileNameChanged(QString text);
void browseDataReconciliationMeasurementInputFile();
void browseDataReconciliationCorrelationMatrixInputFile();
void simulationStarted();
void simulationPaused();
};

class DataReconciliationDialog : public QDialog
{
Q_OBJECT
public:
explicit DataReconciliationDialog(LibraryTreeItem *pLibraryTreeItem, QDialog *parent = nullptr);
private:
LibraryTreeItem *mpLibraryTreeItem;
Label *mpDataReconciliationAlgorithmLabel;
QComboBox *mpDataReconciliationAlgorithmComboBox;
Label *mpDataReconciliationMeasurementInputFileLabel;
QLineEdit *mpDataReconciliationMeasurementInputFileTextBox;
QPushButton *mpDataReconciliationMeasurementInputFileBrowseButton;
Label *mpDataReconciliationCorrelationMatrixInputFileLabel;
QLineEdit *mpDataReconciliationCorrelationMatrixInputFileTextBox;
QPushButton *mpDataReconciliationCorrelationMatrixInputFileBrowseButton;
Label *mpDataReconciliationEpsilonLabel;
QLineEdit *mpDataReconciliationEpsilonTextBox;
QCheckBox *mpSaveSettingsCheckBox;
QPushButton *mpCalculateButton;
QPushButton *mpCancelButton;
QDialogButtonBox *mpButtonBox;
private slots:
void browseDataReconciliationMeasurementInputFile();
void browseDataReconciliationCorrelationMatrixInputFile();
void calculateDataReconciliation();
};

#endif // SIMULATIONDIALOG_H
15 changes: 11 additions & 4 deletions OMEdit/OMEditLIB/Simulation/SimulationOptions.h
Expand Up @@ -77,7 +77,6 @@ class SimulationOptions
setNLSanalyticJacobian(true);
setParmodauto(false);
setOldInstantiation(false);
setDataReconciliation(false);
setAdditionalTranslationFlags("");
// Simulation
setModelSetupFile("");
Expand All @@ -93,8 +92,10 @@ class SimulationOptions
setCPUTime(false);
setEnableAllWarnings(true);
setEnableDataReconciliation(false);
setDataReconciliationMeasurementInputFile("");
setDataReconciliationCorrelationMatrixInputFile("");
setDataReconciliationEpsilon("");
setDataReconciliationSaveSetting(false);
setLogStreams(QStringList() << "LOG_STATS");
setAdditionalSimulationFlags("");
// Output
Expand All @@ -111,6 +112,7 @@ class SimulationOptions

setSimulationFlags(QStringList());
setIsValid(false);
setDataReconciliationInitialized(false);
setReSimulate(false);
setWorkingDirectory("");
setFileName("");
Expand Down Expand Up @@ -176,8 +178,6 @@ class SimulationOptions
bool getParmodauto() const {return mParmodauto;}
void setOldInstantiation(bool oldInstantiation) {mOldInstantiation = oldInstantiation;}
bool getOldInstantiation() const {return mOldInstantiation;}
void setDataReconciliation(bool dataReconciliation) {mDataReconciliation = dataReconciliation;}
bool getDataReconciliation() const {return mDataReconciliation;}
void setAdditionalTranslationFlags(QString additionalTranslationFlags) {mAdditionalTranslationFlags = additionalTranslationFlags;}
QString getAdditionalTranslationFlags() const {return mAdditionalTranslationFlags;}

Expand Down Expand Up @@ -207,12 +207,16 @@ class SimulationOptions
bool getEnableAllWarnings() {return mEnableAllWarnings;}
void setEnableDataReconciliation(bool dataReconciliation) {mEnableDataReconciliation = dataReconciliation;}
bool getEnableDataReconciliation() {return mEnableDataReconciliation;}
void setDataReconciliationAlgorithm(QString dataReconciliationAlgorithm) {mDataReconciliationAlgorithm = dataReconciliationAlgorithm;}
QString getDataReconciliationAlgorithm() {return mDataReconciliationAlgorithm;}
void setDataReconciliationMeasurementInputFile(QString dataReconciliationMeasurementInputFile) {mDataReconciliationMeasurementInputFile = dataReconciliationMeasurementInputFile;}
QString getDataReconciliationMeasurementInputFile() {return mDataReconciliationMeasurementInputFile;}
void setDataReconciliationCorrelationMatrixInputFile(QString dataReconciliationCorrelationMatrixInputFile) {mDataReconciliationCorrelationMatrixInputFile = dataReconciliationCorrelationMatrixInputFile;}
QString getDataReconciliationCorrelationMatrixInputFile() {return mDataReconciliationCorrelationMatrixInputFile;}
void setDataReconciliationEpsilon(QString dataReconciliationEpsilon) {mDataReconciliationEpsilon = dataReconciliationEpsilon;}
QString getDataReconciliationEpsilon() {return mDataReconciliationEpsilon;}
void setDataReconciliationSaveSetting(bool dataReconciliationSaveSetting) {mDataReconciliationSaveSetting = dataReconciliationSaveSetting;}
bool getDataReconciliationSaveSetting() {return mDataReconciliationSaveSetting;}
void setLogStreams(QStringList logStreams) {mLogStreams = logStreams;}
QStringList getLogStreams() {return mLogStreams;}
void setAdditionalSimulationFlags(QString additionalSimulationFlags) {mAdditionalSimulationFlags = additionalSimulationFlags;}
Expand Down Expand Up @@ -245,6 +249,8 @@ class SimulationOptions
QStringList getSimulationFlags() {return mSimulationFlags;}
void setIsValid(bool isValid) {mValid = isValid;}
bool isValid() {return mValid;}
void setDataReconciliationInitialized(bool dataReconciliationInitialized) {mDataReconciliationInitialized = dataReconciliationInitialized;}
bool isDataReconciliationInitialized() {return mDataReconciliationInitialized;}
void setReSimulate(bool reSimulate) {mReSimulate = reSimulate;}
bool isReSimulate() {return mReSimulate;}
void setWorkingDirectory(QString workingDirectory) {mWorkingDirectory = workingDirectory;}
Expand Down Expand Up @@ -284,7 +290,6 @@ class SimulationOptions
bool mNLSanalyticJacobian;
bool mParmodauto;
bool mOldInstantiation;
bool mDataReconciliation;
QString mAdditionalTranslationFlags;
// simulation flags
QString mModelSetupFile;
Expand All @@ -304,6 +309,7 @@ class SimulationOptions
QString mDataReconciliationMeasurementInputFile;
QString mDataReconciliationCorrelationMatrixInputFile;
QString mDataReconciliationEpsilon;
bool mDataReconciliationSaveSetting;
QStringList mLogStreams;
QString mAdditionalSimulationFlags;
// output
Expand All @@ -320,6 +326,7 @@ class SimulationOptions

QStringList mSimulationFlags;
bool mValid;
bool mDataReconciliationInitialized;
bool mReSimulate;
QString mWorkingDirectory;
QString mFileName;
Expand Down
2 changes: 2 additions & 0 deletions OMEdit/OMEditLIB/Util/Helper.cpp
Expand Up @@ -424,6 +424,7 @@ QString Helper::systemSimulationInformation;
QString Helper::translationFlags;
QString Helper::send;
QString Helper::installLibrary;
QString Helper::dataReconciliation;

void Helper::initHelperVariables()
{
Expand Down Expand Up @@ -725,6 +726,7 @@ void Helper::initHelperVariables()
Helper::translationFlags = tr("Translation Flags");
Helper::send = tr("Send");
Helper::installLibrary = tr("Install Library");
Helper::dataReconciliation = tr("Data Reconciliation");
}

QString GUIMessages::getMessage(int type)
Expand Down
1 change: 1 addition & 0 deletions OMEdit/OMEditLIB/Util/Helper.h
Expand Up @@ -431,6 +431,7 @@ class Helper : public QObject
static QString translationFlags;
static QString send;
static QString installLibrary;
static QString dataReconciliation;
};

class GUIMessages : public QObject
Expand Down

0 comments on commit cf55cd7

Please sign in to comment.