/*! \mainpage My Personal Index Page


\section Project
Each session of the user corresponds to a project (class Project). Only one project is loaded at a time. Project instance holds main containers :
	- List of problems (class Problems)
	- List of results (class Results)
	- Modelica tree (class ModClassTree) : this class contains all modelica items loaded in OMC.
	- Files paths (project, loaded mo files, loaded mmo files...)

Project instance also holds controlers :
	- Instance of OpenModelica communicator (class MOomc) : one instance spread in entire program through pointer.
	


It's from Project that main managing functions are called : save, addProblem, launchProblem...
	
\image html Images/Project.png "Project overview" width=10cm

	
\section Problems
Problems is a MOVector of Problem.
\subsection Problem
Problem is an abstract class corresponding to all kind of optimization problem we'll could have. Optimization, OneSimulation and ProblemTarget inherits Problem.
Main function to implement is Problem::launch. It should return a result inheriting Result (cf. Problem class).

\section Modelica

\subsection ModClassTree
ModClassTree is the main container of modelica in OMOptim. It inherits QAbstractItemModel (cf. Qt Documentation) and proposes a hierarchical organization. It allows to display functions but also reading and editing items (reading and finding functions are stored in ModReader instance).

\subsection Modelica reader (ModReader)
ModReader allows to read modelica models information. Current implementation uses openModelica API through corba communication. Also contains finding functions in ModClass hierarchy.

\subsection Modelica controller (ModPlusCtrl)
ModPlusCtrl allows to compile, simulate, read initial and final variables. It is an abstract class which must be implemented following the software we want to use.
At this moment, only a Dymola version of ModPlusCtrl is implemented (ModPlusDymolaCtrl). 


 **/
