Diana  0.8.3
IDianaSensDAESO.hpp
00001 /* -----------------------------------------------------------------------------
00002 */
00003 #ifndef IDIANA_SENS_DAESO_H
00004 #define IDIANA_SENS_DAESO_H
00005 
00006 #include <CapeOpen.hpp>
00007 #include <Diana/IDianaDAESO.hpp>
00008 
00009 namespace Diana{
00010     using Common::Types::CapeLong;
00011     using Common::Types::CapeDouble;
00012     using Common::Types::CapeBoolean;
00013     using Common::Types::CapeString;
00014     using Common::Types::CapeArrayDouble;
00015     using Common::Types::CapeArrayLong;
00016     using Common::Error::ECapeUnknown;
00017     using Common::Error::ECapeFailedInitialisation;
00018     using Common::Error::ECapeBadInvOrder;
00019 
00024     class IDianaSensDAESO : virtual public IDianaDAESO {
00025     public:
00027         virtual ~IDianaSensDAESO() {};
00028 
00034         // TODO: Decide this function is needed for interface
00035         //virtual IDianaDAESO& GetModel() = 0;
00036 
00040         virtual CapeLong GetNumSensParameters() 
00041             throw (ECapeUnknown, 
00042                    ECapeFailedInitialisation) = 0;
00043 
00047         virtual CapeLong GetNumSensInitStates() 
00048             throw (ECapeUnknown, 
00049                    ECapeFailedInitialisation) = 0;
00050         
00054         virtual const CapeArrayLong& GetSensParametersIndices() const
00055             throw (ECapeUnknown, 
00056                    ECapeFailedInitialisation) = 0;
00057 
00061         virtual const CapeArrayLong& GetSensInitStatesIndices() const
00062             throw (ECapeUnknown, 
00063                    ECapeFailedInitialisation) = 0;
00064 
00068         virtual const CapeArrayDouble& GetSensParameters() const
00069             throw (ECapeUnknown, 
00070                 ECapeFailedInitialisation) = 0;
00071 
00075         virtual void SetSensParameters(const Common::Types::CapeArrayDouble& pars)
00076             throw (ECapeUnknown, 
00077                 ECapeFailedInitialisation) = 0;
00078 
00082         virtual const DianaSparseArray& GetSensParJacobianValues()
00083             throw (Common::Error::ECapeUnknown, 
00084                 Common::Error::ECapeNoImpl) = 0;
00085 
00089         virtual const CapeArrayDouble& GetSensInitStates()
00090             throw (Common::Error::ECapeUnknown, 
00091                 Common::Error::ECapeFailedInitialisation) = 0;
00092 
00096         virtual void SetSensInitStates(const Common::Types::CapeArrayDouble& states)
00097             throw (Common::Error::ECapeUnknown, 
00098                 Common::Error::ECapeFailedInitialisation) = 0;
00099 
00103         virtual Common::Types::CapeArrayDouble GetAllModelVariables() = 0;
00104 
00109         virtual void SetAllModelVariables(const Common::Types::CapeArrayDouble& vars) = 0;
00110 
00114         virtual Common::Types::CapeArrayDouble GetAllModelDerivatives() = 0;
00115 
00116     
00121         virtual void SetAllModelDerivatives(const Common::Types::CapeArrayDouble& vars) = 0;
00122 
00126         virtual const CapeArrayDouble& GetAllModelResiduals() 
00127             throw (ECapeUnknown, ECapeBadInvOrder,
00128                    ECapeFailedInitialisation) = 0;
00129 
00130         virtual const DianaSparseArray& GetAllModelJacobianValues() const
00131             throw (Common::Error::ECapeUnknown,
00132                 Common::Error::ECapeNoImpl) = 0;
00133         
00134         virtual const Diana::DianaSparseArray& GetAllModelDiffJacobianValues() const
00135              throw (Common::Error::ECapeUnknown, 
00136                 Common::Error::ECapeNoImpl) = 0;
00137         
00138                 
00145         virtual Common::Types::CapeArrayDouble GetAllSensitivities() = 0;
00146 
00147     
00152         virtual void SetAllSensitivities(const Common::Types::CapeArrayDouble& vars) = 0;
00153     
00154 
00159     virtual void SetFixedVariables(const Common::Types::CapeArrayLong& varIndices,
00160                            const Common::Types::CapeArrayDouble& varValues)
00161             throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument,
00162              Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds,
00163              Common::Error::ECapeNoImpl) = 0;
00164 
00167     virtual void SetAllVariables(const Common::Types::CapeArrayDouble& varValues)
00168             throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument,
00169              Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds) = 0;
00170 
00174     virtual void SetVariables(const Common::Types::CapeArrayLong& varIndices,
00175                       const Common::Types::CapeArrayDouble& varValues)
00176             throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument,
00177              Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds) = 0;
00178 
00180     virtual const Common::Types::CapeArrayDouble& GetAllVariables()
00181             throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadInvOrder) = 0;
00182 
00185     virtual Common::Types::CapeArrayDouble GetVariables(const Common::Types::CapeArrayLong& varIndices)
00186             throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument,
00187              Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds) = 0;
00188 
00190     virtual const Common::Types::CapeArrayDouble& GetAllResiduals()
00191             throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadInvOrder,
00192              Common::Error::ECapeFailedInitialisation) = 0;
00193 
00194 
00201     virtual const Diana::DianaSparseArray& GetJacobianStruct()
00202             throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl) = 0;
00203 
00210     virtual const Diana::DianaSparseArray& GetAllJacobianValues()
00211             throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl) = 0;
00212 
00213 
00215     virtual void SetVariablesIndex(const Common::Types::CapeArrayLong& varIndexes)
00216             throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument,
00217              Common::Error::ECapeOutOfBounds, Common::Error::ECapeNoImpl) = 0;
00218 
00220     virtual const Common::Types::CapeArrayDouble& GetLowerBounds()
00221             throw (Common::Error::ECapeUnknown) = 0;
00222 
00224     virtual const Common::Types::CapeArrayDouble& GetUpperBounds()
00225             throw (Common::Error::ECapeUnknown) = 0;
00226 
00232     virtual void SetAllDerivatives(const Common::Types::CapeArrayDouble& varValues)
00233             throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument,
00234              Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds) = 0;
00235 
00241     virtual const Common::Types::CapeArrayDouble& GetAllDerivatives()
00242             throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadInvOrder) = 0;
00243 
00247     virtual Common::Types::CapeArrayDouble GetDerivatives(const Common::Types::CapeArrayLong& varIndices)
00248             throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument,
00249              Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds) = 0;
00250 
00255     virtual void SetDerivatives(const Common::Types::CapeArrayLong& varIndices,
00256                         const Common::Types::CapeArrayDouble& varValues)
00257             throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument,
00258              Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds) = 0;
00259 
00268     virtual const Diana::DianaSparseArray& GetDiffJacobianStruct()
00269             throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl) = 0;
00270 
00278     virtual const Diana::DianaSparseArray& GetAllDiffJacobianValues()
00279             throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl) = 0;
00280 
00281 
00284     virtual void SetIndependentVar(Common::Types::CapeDouble indVar)
00285             throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument) = 0;
00286 
00288     virtual Common::Types::CapeDouble GetIndependentVar()
00289             throw (Common::Error::ECapeUnknown) = 0;
00290   };
00291 
00292 
00293  
00294 };
00295 
00296 #endif // IDIANA_SENS_DAESO_H