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