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