Diana  0.8.3
IDianaMain.hpp
00001 /* -----------------------------------------------------------------------------
00002  *  Diana process modelling, simulation and analysis software
00003  *  Copyright (c) 2005, Michael Krasnyk
00004  *  All rights reserved.
00005  *
00006  *  This file is a part of Diana process modelling, simulation and analysis software
00007  *
00008  *  Diana is free software; you can redistribute it and/or modify it
00009  *  under the terms of the GNU General Public License as published
00010  *  by the Free Software Foundation (see accompanying file LICENSE)
00011  * -----------------------------------------------------------------------------
00012  *  $Id: IDianaMain.hpp 8160 2009-03-16 18:36:30Z miha $
00013  * -----------------------------------------------------------------------------
00014  *  Description:
00015  */
00016 
00017 #ifndef IDIANA_MAIN_HPP
00018 #define IDIANA_MAIN_HPP
00019 
00020 
00021 #include <CapeOpen.hpp>
00022 #include <Diana/IDianaReporting.hpp>
00023 #include <Diana/IDianaNLPParalleling.hpp>
00024 #include <Diana/parallel/IParallelEnv.hpp>
00025 
00026 namespace Diana {
00027 
00034   class IDianaMain : public Common::Utilities::ICapeUtilities  {
00035   public:
00036     virtual ~IDianaMain(){};
00037 
00038   public:
00048     virtual Common::Collection::ICapeCollection* GetParameters()
00049       throw (Common::Error::ECapeUnknown, Common::Error::ECapeFailedInitialisation,
00050              Common::Error::ECapeNoImpl) = 0;
00051 
00065     virtual void SetSimulationContext(Common::Identification::ICapeIdentification* simContextManager)
00066       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument,
00067              Common::Error::ECapeFailedInitialisation, Common::Error::ECapeNoImpl) = 0;
00068 
00081     virtual void Initialize()
00082       throw (Common::Error::ECapeUnknown, Common::Error::ECapeFailedInitialisation,
00083              Common::Error::ECapeOutOfResources, Common::Error::ECapeLicenceError,
00084              Common::Error::ECapeBadInvOrder) = 0;
00085 
00094     virtual void Terminate()
00095       throw (Common::Error::ECapeUnknown, Common::Error::ECapeOutOfResources,
00096              Common::Error::ECapeBadInvOrder) = 0;
00100     virtual Numeric::Solvers::Model::ICapeNumericModelManager* GetModelManager()
00101       throw (Common::Error::ECapeUnknown, Common::Error::ECapeOutOfResources,
00102              Common::Error::ECapeFailedInitialisation) = 0;
00103 
00107     virtual Numeric::Solvers::Solver::ICapeNumericSolverFactory* GetSolverFactory()
00108       throw (Common::Error::ECapeUnknown, Common::Error::ECapeOutOfResources,
00109              Common::Error::ECapeFailedInitialisation) = 0;
00113     virtual Numeric::Solvers::NLPTasks::ICapeNumericNLPTaskFactory* GetNLPTaskFactory()
00114       throw (Common::Error::ECapeUnknown, Common::Error::ECapeOutOfResources,
00115              Common::Error::ECapeFailedInitialisation) = 0;
00116 
00117 
00121     virtual IParallelEnv* CreateParallelEnv()
00122         throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl) = 0;
00123 
00127     virtual Diana::IDianaReporting* CreateReportingInterface(const Common::Types::CapeString& strName)
00128       throw (Common::Error::ECapeUnknown, Common::Error::ECapeOutOfResources,
00129              Common::Error::ECapeFailedInitialisation) = 0;
00130 
00133     virtual Diana::IDianaNLPSolverParallelInterface* CreateNLPSolverParallelInterface(int argc, char *argv[], Common::Types::CapeString strLibraryName)
00134       throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument,
00135              Common::Error::ECapeOutOfBounds, Common::Error::ECapeOutOfResources,
00136              Common::Error::ECapeFailedInitialisation, Common::Error::ECapeUser) = 0;
00137 
00141     virtual Common::Types::CapeString GetVersion()
00142       throw (Common::Error::ECapeUnknown) = 0;
00143 
00144     virtual void Beep(int percent=0)
00145       throw (Common::Error::ECapeUnknown) = 0;
00146 
00147 #ifdef DEBUG
00148     virtual void DebuggerTrap()
00149       throw (Common::Error::ECapeUnknown) = 0;
00150 #endif
00151   };
00152 
00158   extern IDianaMain* GetDianaMain(const Common::Types::CapeArrayString& args=Common::Types::CapeArrayString());
00159 };
00160 
00161 #endif // IDIANA_MAIN_HPP