Diana  0.8.3
DianaNLAESO.hpp
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