Diana
0.8.3
|
00001 #ifndef DIANA_NLAESO_HPP 00002 #define DIANA_NLAESO_HPP 00003 00004 #include <CapeOpen.hpp> 00005 #include <Diana/IDianaSolver.hpp> 00006 #include <Diana/IDianaNLAESO.hpp> 00007 #include <Basic/DianaBasic.hpp> 00008 #include <Diana/DianaDAESO.hpp> 00009 #include <Diana/DianaParameter.hpp> 00010 00011 namespace Diana{ 00012 00016 class DianaNLAESO : virtual public IDianaNLAESO{ 00018 friend class DianaParameter; 00019 public: 00021 DianaNLAESO( const CapeString& _name, 00022 const CapeString& _description, 00023 Numeric::Solvers::Eso::ICapeNumericDAESO* _pESO ); 00024 00026 virtual ~DianaNLAESO(); 00027 00029 const Common::Types::CapeString& GetComponentName() const 00030 throw (Common::Error::ECapeUnknown); 00031 00034 void SetComponentName(const Common::Types::CapeString& _name) 00035 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument); 00036 00038 const Common::Types::CapeString& GetComponentDescription() const 00039 throw (Common::Error::ECapeUnknown); 00040 00041 00054 void Initialize() 00055 throw (Common::Error::ECapeUnknown, Common::Error::ECapeFailedInitialisation, 00056 Common::Error::ECapeOutOfResources, Common::Error::ECapeLicenceError, 00057 Common::Error::ECapeBadInvOrder); 00058 00060 const Common::Types::CapeArrayDouble& GetAllVariables() 00061 throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadInvOrder); 00062 00063 00066 void SetAllVariables(const Common::Types::CapeArrayDouble& varValues) 00067 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument, 00068 Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds); 00069 /*************************************************************/ 00070 00084 void SetSimulationContext(Common::Identification::ICapeIdentification* simContextManager) 00085 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument, 00086 Common::Error::ECapeFailedInitialisation, Common::Error::ECapeNoImpl); 00087 00088 00093 void SetFixedVariables(const Common::Types::CapeArrayLong& varIndices, 00094 const Common::Types::CapeArrayDouble& varValues) 00095 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument, 00096 Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds, 00097 Common::Error::ECapeNoImpl); 00106 void Terminate() 00107 throw (Common::Error::ECapeUnknown, Common::Error::ECapeOutOfResources, 00108 Common::Error::ECapeBadInvOrder); 00109 00110 00112 const Common::Types::CapeArrayDouble& GetLowerBounds() 00113 throw (Common::Error::ECapeUnknown); 00114 00116 const Common::Types::CapeArrayDouble& GetUpperBounds() 00117 throw (Common::Error::ECapeUnknown); 00118 00119 00122 void SetComponentDescription(const Common::Types::CapeString& _description) 00123 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument); 00124 00128 void SetVariables(const Common::Types::CapeArrayLong& varIndices, 00129 const Common::Types::CapeArrayDouble& varValues) 00130 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument, 00131 Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds); 00132 00135 Common::Types::CapeArrayDouble GetVariables(const Common::Types::CapeArrayLong& varIndices) 00136 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument, 00137 Common::Error::ECapeBadInvOrder, Common::Error::ECapeOutOfBounds); 00147 Common::Collection::ICapeCollection* GetParameters() 00148 throw (Common::Error::ECapeUnknown, Common::Error::ECapeFailedInitialisation); 00149 00150 00153 Common::Types::CapeArrayDouble GetResiduals(const Common::Types::CapeArrayLong& eqnIndices) 00154 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument, 00155 Common::Error::ECapeOutOfBounds, Common::Error::ECapeBadInvOrder, 00156 Common::Error::ECapeFailedInitialisation); 00157 00158 00160 const Common::Types::CapeArrayDouble& GetAllResiduals() 00161 throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadInvOrder, 00162 Common::Error::ECapeFailedInitialisation); 00163 00170 const Diana::DianaSparseArray& GetAllJacobianValues() 00171 throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl); 00172 00178 Common::Types::CapeArrayDouble GetJacobianValues(const Common::Types::CapeArrayLong& indices) 00179 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument, 00180 Common::Error::ECapeNoImpl, Common::Error::ECapeOutOfBounds); 00181 00182 00189 const Diana::DianaSparseArray& GetJacobianStruct() 00190 throw (Common::Error::ECapeUnknown, Common::Error::ECapeNoImpl); 00191 00193 Common::Types::CapeLong GetNumEqns() 00194 throw (Common::Error::ECapeUnknown); 00195 00197 Common::Types::CapeLong GetNumVars() 00198 throw (Common::Error::ECapeUnknown, Common::Error::ECapeBadInvOrder); 00199 00201 void SetVariablesIndex(const Common::Types::CapeArrayLong& varIndexes) 00202 throw (Common::Error::ECapeUnknown, Common::Error::ECapeInvalidArgument, 00203 Common::Error::ECapeOutOfBounds, Common::Error::ECapeNoImpl); 00204 00205 00206 00207 protected: 00208 Common::Types::CapeBoolean bInitialized; 00209 Common::Types::CapeString name; 00210 Common::Types::CapeString description; 00211 00212 Diana::DianaCollection collParameters; 00213 00214 Common::Types::CapeArrayDouble arrStates; 00215 Common::Types::CapeArrayLong arrDifferentialVarIndexes; 00216 00217 Diana::DianaSparseArray JacobianMatrix; 00218 Common::Types::CapeArrayDouble arrVariables; 00219 Common::Types::CapeArrayDouble arrDerivatives; 00220 00221 00222 Numeric::Solvers::Eso::ICapeNumericDAESO* m_pESO; 00223 00224 }; 00225 }; 00226 00227 #endif // DIANA_NLAESO_HPP 00228