Diana
0.8.3
|
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