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: IDianaDAESO.hpp 8160 2009-03-16 18:36:30Z miha $ 00013 * ----------------------------------------------------------------------------- 00014 * Description: 00015 */ 00016 00017 #ifndef IDIANA_ESO_HPP 00018 #define IDIANA_ESO_HPP 00019 00020 #include <CapeOpen.hpp> 00021 #include <Diana/IDianaPetriNet.hpp> 00022 00023 namespace Diana { 00024 00027 class IDianaDAESO : virtual public Numeric::Solvers::Eso::ICapeNumericDAESO { 00028 #ifndef SWIG 00029 00030 friend std::ostream& operator<<(std::ostream& out_file, const IDianaDAESO& eso); 00031 #endif 00032 public: 00034 virtual ~IDianaDAESO(){}; 00035 00036 #if defined(__GNUC__) && (__GNUC__>=4) 00037 #define DIANA_DAESO_CLONERET Diana::IDianaDAESO 00038 #else 00039 #define DIANA_DAESO_CLONERET Common::Identification::ICapeIdentification 00040 #endif 00041 00043 virtual DIANA_DAESO_CLONERET* clone() throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl) = 0; 00044 00045 virtual void SaveState(const Common::Types::CapeString& filename) 00046 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument) = 0; 00047 00048 virtual void LoadState(const Common::Types::CapeString& filename) 00049 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument) = 0; 00050 00051 virtual void LoadStateDiva(const Common::Types::CapeString& states, 00052 const Common::Types::CapeString& params, 00053 const Common::Types::CapeString& mapfile=Common::Types::CapeString()) 00054 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument) = 0; 00055 00059 virtual Common::Collection::ICapeCollection* GetStateVariables() 00060 throw (Common::Error::ECapeUnknown) = 0; 00061 00065 virtual Common::Collection::ICapeCollection* GetRealParameters() 00066 throw (Common::Error::ECapeUnknown) = 0; 00067 00070 virtual void SetAllRealParameters(const Common::Types::CapeArrayDouble& varValues) 00071 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument, 00072 Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds) = 0; 00073 00077 virtual void SetRealParameters(const Common::Types::CapeArrayLong& varIndices, 00078 const Common::Types::CapeArrayDouble& varValues) 00079 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument, 00080 Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds) = 0; 00081 00083 virtual const Common::Types::CapeArrayDouble& GetAllRealParameters() 00084 throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadInvOrder) = 0; 00085 00088 virtual Common::Types::CapeArrayDouble GetRealParameters(const Common::Types::CapeArrayLong& varIndices) 00089 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument, 00090 Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds) = 0; 00091 00092 virtual const Diana::DianaSparseArray& GetHighOrderJacobian(Common::Types::CapeLong nXOrder, 00093 Common::Types::CapeLong nDOrder, 00094 Common::Types::CapeLong nPOrder) 00095 throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl) = 0; 00096 00097 virtual CapeArrayDouble GetAbsoluteError() const 00098 throw(Common::Error::ECapeUnknown) = 0; 00099 00100 00102 virtual const Common::Types::CapeArrayDouble& GetAllPhiValues() 00103 throw (Common::Error::ECapeUnknown)=0; 00104 00105 00107 virtual Common::Types::CapeDouble GetPhiValue(CapeLong index) 00108 throw (Common::Error::ECapeUnknown)=0; 00109 00110 00112 virtual Diana::IDianaPetriNet* GetPetriNet() 00113 throw (Common::Error::ECapeUnknown) = 0; 00114 00115 00116 #ifndef SWIG 00117 00120 virtual void BeforeStep(Diana::IDianaNumericDAESolver *solver) throw (Common::Error::ECapeUnknown) = 0; 00121 00124 virtual void AfterStep(Diana::IDianaNumericDAESolver *solver) throw (Common::Error::ECapeUnknown) = 0; 00125 #endif 00126 00127 virtual const DianaSparseArray& GetAllParJacobianValues(const Common::Types::CapeArrayLong& parIndices) 00128 throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl) = 0; 00129 #ifndef SWIG 00130 virtual const DianaSparseArray& GetAllParJacobianValues(const Common::Types::CapeArrayLong* const parIndices=NULL) 00131 throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl) = 0; 00132 #endif 00133 }; 00134 }; 00135 00136 #endif // IDIANA_ESO_HPP 00137