BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View,...

29
BEFOREHANDS

Transcript of BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View,...

Page 1: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

BEFOREHANDS

Page 2: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

OMOptim

• C++ code• Stored on subversion solver• Using Qt libraries (GUI, Model/View,

Containers, Threads, XML…)

Page 3: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

Subversion repository

16/01/2012 Plateforme CERES

Page 4: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

MAIN CLASSES

Page 5: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

Class Project

• The Core of the program• One project at a time• Contains main items– Modelica tree of models, package… (ModClassTree)– List of problems and results– List of ModModelPlus– Misc. Informations : save files, files loaded

• Main functions– Problems should be launched from Project– Threads management

Page 6: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

Class Project

Page 7: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

GUI

• Widgets• Dialogs• Treeviews• Tableviews

Modelica

• ModClassTree• ModPlusCtrl• ModModelPlus• ModClass

Problems• ProblemInterface• Problem• Result

OMOptim

Page 8: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

MODELICA - MODELS

Page 9: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

ModClass

• Basic class, corresponding to an item in modelica– Each instance stores name and children

Inheritance diagram

Page 10: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

ModClassTree

• Contains modelica models, packages, classes names

Page 11: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

ModModelPlus

ModModelPlus

• ModModel* pointer to a modelica model

• void compile()• void readVariables()

ModModelPlus allows to store information about a modelica model (ModModel*).

Especially :-Input variables-Connections between components

It also provides compiling and reading functions. Still, those functions require ModPlusCtrl.

Page 12: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

ModPlusCtrl• Simulation software controler :– Specific for each simulation software– Provide interface functions :

• Set simulation parameters• Writing / Reading variables• Compiling model• Simulating model

– Set Parameters :• Simulation time• Solver• Tolerances• …

Page 13: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

ModReader & MOOmc

• Offering modelica reading functions• MOOmc : link between OpenModelica &

OMOptim (use Corba protocol)– QString getFlattenedModel (const QString &modelName)– bool addConnection (QString org, QString dest)– void getInheritedComponents (QString parentClass, QStringList

&names, QStringList &classes)– …

Page 14: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

Model AModel B

Model management

MOOMC

MyFile.moOMOptim

ModPlusCtrl

OpenModelica controler

Dymola controler

MathModelica controler

Reading modelCorba communication with

OpenModelica

-Compiling-Simulating- Reading/Writing variables

ModClassTree

Page 15: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

PROBLEMS

Page 16: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

Launching a problem

Project

• void launchProblem(Problem*);• SLOT : void

onProblemFinished(Problem*,Result*);

• Problems* _problems;• Results* _results;

Post-computation procedure :

Result storage GUI creation

SLOT

project->onProblemFinished(myProblem,myResult)

SIGNAL

emit finished(myProblem,myResult)

Create Problem Thread

myProblem->launch()… separate thread …

project->launchProblem(myProblem)

User

ProblemThread

• void run();• SIGNAL : void finished

(Problem*,Result*);

Separatethread

Page 17: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

ProblemAn abstract class defining basic functions.Inherits OMCase which contains more basic virtual functions.

Page 18: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

Project

One Simulation

ModClassTree

• Package 1• Package 2

[ModPackage]• Model a• Model b

[ModModel] ModModelPlus

ModModelPlus

Problem1 [OneSimulation]

• OverwritedVariables• ModPlusControler• ModModelPlus*

Page 19: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

One Simulation

•Linked to ModModel (node in ModClassTree)

•Model initial variables

ModModelPlus*

•Simulator choice and parameters

ModPlusCtrl*

•Variables with new values set by the user

Overwritedvariables*

OneSimResult

•Simulation variables at final time

FinalVariables

•A copy of the problem

OneSimulation

Page 20: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

Problems’ plugin

Shared OMOptim :

- OneSimulation- Optimization

Energy Integration- PluginEI.dll

My Sensitivity analysis

Plugin loading :dynamic or static

Method: implement new inheritances of following abstract classes- ProblemInterface- Problem- Result

Page 21: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

ENERGY INTEGRATION

Page 22: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

Energy integration

• EI is a plugin offering new problems– EIMER : Minimum energy requirement– EITarget : Utilities targetting– EIHEN1 : Heat Exchanger Network

Page 23: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

Energy integration

Modelica model

MILP optimization problem

EIProblem-MER

-Target-HEN

ModPlusCtrl

MOOmc

MILP Solver

GLPK

Cbc

Cplex

Page 24: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

GUI

Page 25: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

GUI – Core links

• Often use Qt model-view programming– Data / GUI more

independent

Page 26: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

Conventions used in code

• Class name always start with an uppercase : MyClass

• Members always start with _ + lowercase_myInstance

• Local variables start with lowercasemyLocalVariable

• Documentation generated through Doxygen

Page 27: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

OMOptimBasisVariables, Problems,

Settings, GUI

OMOptim PluginEI

PluginEIOMOptimModelica

Page 28: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

Source code storage

Page 29: BEFOREHANDS. OMOptim C++ code Stored on subversion solver Using Qt libraries (GUI, Model/View, Containers, Threads, XML…)

Documentation