Diana  0.8.3
DianaXmlDAESO.hpp
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: DianaXmlDAESO.hpp 8160 2009-03-16 18:36:30Z miha $
00013  * -----------------------------------------------------------------------------
00014  *  Description:
00015  */
00016 
00017 #ifndef DIANA_XML_DAESO_H
00018 #define DIANA_XML_DAESO_H
00019 #include <CapeOpen.hpp>
00020 #include <Diana.hpp>
00021 
00022 namespace Diana{
00023 
00029   Common::Types::CapeBoolean ensureXercesInitialized();
00030 
00031     using Common::Types::CapeString;
00037   class DianaXmlDAESO : public DianaDAESO {
00038 
00039   protected:
00040       CapeString loadDirectory;
00041     Common::Types::CapeString strXmlDataFile; 
00042 
00043   public:
00044 
00046     DianaXmlDAESO(const Common::Types::CapeString& _strXmlDataFile,
00047                   const Common::Types::CapeString& _name,
00048                   Common::Types::CapeLong          _nVars,
00049                   Common::Types::CapeLong          _nEqns,
00050                   Common::Types::CapeLong          _nRealParams,
00051                   Common::Types::CapeLong          _nStructureParams,
00052                   Common::Types::CapeLong          _nIntegerParams,
00053                   Common::Types::CapeLong          _nHelpVariables,
00054                   Common::Types::CapeLong          _nPhi = 0,
00055                   Common::Types::CapeLong          _nPlaces = 0);
00057     DianaXmlDAESO(const DianaXmlDAESO& org);
00058     
00059     virtual ~DianaXmlDAESO();
00060 
00062     void Initialize()
00063       throw (Common::Error::ECapeUnknown, Common::Error::ECapeFailedInitialisation,
00064              Common::Error::ECapeOutOfResources, Common::Error::ECapeLicenceError,
00065              Common::Error::ECapeBadInvOrder);
00066 
00070       virtual const CapeString& getLoadDirectory();
00075       virtual void setLoadDirectory(const CapeString& _dir);
00076 
00077 
00085     virtual Common::Types::CapeBoolean initializeData(void *input)
00086             throw(Common::Error::ECapeFailedInitialisation);
00087 
00088 
00091     virtual Common::Types::CapeBoolean initializeData(const Common::Types::CapeString& fileName=
00092                                 Common::Types::CapeStringUNDEFINED)
00093             throw(Common::Error::ECapeFailedInitialisation);
00094     
00097     virtual Common::Types::CapeBoolean initializeDataFromString(const Common::Types::CapeString& data)
00098             throw(Common::Error::ECapeFailedInitialisation);
00099 
00101 
00103     virtual void addSpar(const Common::Types::CapeString& _name,
00104                          const Common::Types::CapeString& descr=Common::Types::CapeStringUNDEFINED);
00105 
00108     virtual void addIpar(const Common::Types::CapeString& _name,
00109                          const Common::Types::CapeString& descr,
00110                          const Common::Types::CapeArrayLong& idxLower,
00111                          const Common::Types::CapeArrayLong& idxUpper
00112                          );
00113 
00116     virtual void addRpar(const Common::Types::CapeString& _name,
00117                          const Common::Types::CapeString& descr,
00118                          const Common::Types::CapeArrayLong& idxLower,
00119                          const Common::Types::CapeArrayLong& idxUpper
00120         );
00121 
00124     virtual void addHelp(const Common::Types::CapeString& _name,
00125                          const Common::Types::CapeString& descr,
00126                          const Common::Types::CapeArrayLong& idxLower,
00127                          const Common::Types::CapeArrayLong& idxUpper);
00128 
00131     virtual void addState(const Common::Types::CapeString& _name,
00132                           const Common::Types::CapeString& descr,
00133                          const Common::Types::CapeArrayLong& idxLower,
00134                          const Common::Types::CapeArrayLong& idxUpper);
00135 
00136     virtual void addPlace(const Common::Types::CapeString& _name,
00137                           const Common::Types::CapeString& descr,
00138                           const Common::Types::CapeArrayLong& idxLower,
00139                           const Common::Types::CapeArrayLong& idxUpper,
00140                           const Common::Types::CapeBoolean fork=false
00141         );
00142     virtual void addDirectTransition(const Common::Types::CapeString& _name,
00143                                        const Common::Types::CapeString& descr,
00144                                        const Common::Types::CapeArrayLong& idxLower,
00145                                        const Common::Types::CapeArrayLong& idxUpper
00146 );
00147     virtual void addExplicitTransition(const Common::Types::CapeString& _name,
00148                                        const Common::Types::CapeString& descr,
00149                                        const Common::Types::CapeArrayLong& idxLower,
00150                                        const Common::Types::CapeArrayLong& idxUpper
00151 );
00152     virtual void addImplicitTransition(const Common::Types::CapeString& _name,
00153                                        const Common::Types::CapeString& descr,
00154                                        const Common::Types::CapeArrayLong& idxLower,
00155                                        const Common::Types::CapeArrayLong& idxUpper
00156         );
00157 
00161     virtual void initParameter(const Common::Types::CapeString& name, 
00162                                const Common::Types::CapeArrayLong& value,
00163                                const Common::Types::CapeArrayLong& minValue, 
00164                                const Common::Types::CapeArrayLong& maxValue);
00168     virtual void initPlace(const Common::Types::CapeString& name, 
00169                            const Common::Types::CapeArrayBoolean& value);
00173     virtual void initParameter(const Common::Types::CapeString& name, 
00174                                const Common::Types::CapeArrayDouble& value, 
00175                                const Common::Types::CapeArrayDouble& minValue, 
00176                                const Common::Types::CapeArrayDouble& maxValue);
00179     virtual void initState(const Common::Types::CapeString& name,
00180                            const Common::Types::CapeArrayDouble&  dblValue,     
00181                            const Common::Types::CapeArrayDouble&  minValue,
00182                            const Common::Types::CapeArrayDouble&  maxValue,
00183                            const Common::Types::CapeArrayDouble&  absError);
00186       virtual void connectTransitionFrom(CapeLong transIndex, CapeLong placeIndex);
00189       virtual void connectTransitionTo(CapeLong transIndex, CapeLong placeIndex);
00190 
00194     virtual void addEquation(const Common::Types::CapeString& name, 
00195                              const Common::Types::CapeString& descr,
00196                              const Common::Types::CapeLong startRow);
00199     virtual void addDiffPattern(Common::Types::CapeLong rowIndex, 
00200                                 Common::Types::CapeLong colIndex);
00203     virtual void addJacPattern(Common::Types::CapeLong rowIndex, 
00204                                Common::Types::CapeLong colIndex);
00207     virtual void finishPatterns();
00208 
00209   private:
00210     Common::Types::CapeBoolean                    bInitialized;
00211 
00212   private:
00213     Common::Types::CapeLong curSpar;           
00214     Common::Types::CapeLong curIpar;           
00215     Common::Types::CapeLong curRpar;           
00216     Common::Types::CapeLong curHelp;           
00217     Common::Types::CapeLong curState;          
00218     Common::Types::CapeLong curPlace;          
00219     Common::Types::CapeLong curExplicitTransition; 
00220     Common::Types::CapeLong curImplicitTransition; 
00221     Common::Types::CapeArrayLong iJRow;    
00222     Common::Types::CapeArrayLong iJCol;    
00223     Common::Types::CapeArrayLong iDRow;    
00224     Common::Types::CapeArrayLong iDCol;    
00225   };
00226 }
00227 
00228 #endif // DIANA_XML_DAESO_H
00229