Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00056 #ifndef __ENGINE_HPP__
00057 #define __ENGINE_HPP__
00058
00059
00060 #include <openfluid/dllexport.hpp>
00061 #include <openfluid/core/TypeDefs.hpp>
00062
00063 namespace openfluid {
00064 namespace base {
00065 class RuntimeEnvironment;
00066 class SimulationStatus;
00067 class SimulationInfo;
00068 }
00069 namespace core {
00070 class Value;
00071 class DateTime;
00072 }
00073 namespace io {
00074 class IOListener;
00075 class OutputsWriter;
00076 class MessagesWriter;
00077 }
00078 }
00079
00080
00081 namespace openfluid { namespace machine {
00082
00083 class PluginManager;
00084 class ModelInstance;
00085 class MachineListener;
00086 class SimulationBlob;
00087
00088
00089
00090
00091
00092
00096 class DLLEXPORT Engine
00097 {
00098 public:
00099
00100 struct PretestInfos_t
00101 {
00102 bool Model;
00103 std::string ModelMsg;
00104
00105 bool Inputdata;
00106 std::string InputdataMsg;
00107
00108 bool ExtraFiles;
00109 std::string ExtraFilesMsg;
00110
00111 PretestInfos_t() : Model(true), ModelMsg(""),
00112 Inputdata(true), InputdataMsg(""),
00113 ExtraFiles(true), ExtraFilesMsg("")
00114 { };
00115 };
00116
00117 private:
00118
00119 SimulationBlob& m_SimulationBlob;
00120
00121 openfluid::base::RuntimeEnvironment* mp_RunEnv;
00122
00123 openfluid::base::SimulationStatus* mp_SimStatus;
00124
00125
00126
00127 MachineListener* mp_MachineListener;
00128
00129 openfluid::io::IOListener* mp_IOListener;
00130
00131 ModelInstance& m_ModelInstance;
00132
00133 openfluid::io::OutputsWriter* mp_OutputsWriter;
00134
00135 openfluid::io::MessagesWriter* mp_MessagesWriter;
00136
00137
00138
00139 void checkSimulationVarsProduction(int ExpectedVarsCount);
00140
00141 void checkModelConsistency();
00142
00143 void checkInputDataConsistency();
00144
00145 void checkExtraFilesConsistency();
00146
00147 void checkExistingVariable(openfluid::core::VariableName_t VarName,
00148 openfluid::core::Value::Type VarType,
00149 openfluid::core::UnitClass_t ClassName,
00150 std::string FunctionName);
00151
00152 void createVariable(openfluid::core::VariableName_t VarName,
00153 openfluid::core::Value::Type VarType,
00154 openfluid::core::UnitClass_t ClassName,
00155 bool UpdateMode,
00156 std::string FunctionName);
00157
00158 void checkExistingInputData(openfluid::core::InputDataName_t DataName,
00159 openfluid::core::UnitClass_t ClassName,
00160 std::string FunctionName);
00161
00162 void prepareOutputDir();
00163
00164 void initOutputs();
00165
00166 void prepareOutputs();
00167
00168 void saveOutputs(const openfluid::core::DateTime& CurrentDT);
00169
00170 void saveSimulationInfos();
00171
00172 void saveSimulationProfile();
00173
00174
00175 public:
00179 Engine(SimulationBlob& SimBlob, ModelInstance& MInstance,
00180 openfluid::machine::MachineListener* MachineListener,
00181 openfluid::io::IOListener* IOListener);
00182
00186 ~Engine();
00187
00188
00189 void pretestConsistency(PretestInfos_t& PretestInfos);
00190
00191
00192 void initParams();
00193
00194 void prepareData();
00195
00196 void checkConsistency();
00197
00198 void run();
00199
00200 void saveReports();
00201
00202 void closeOutputs();
00203
00204 openfluid::base::SimulationInfo* getSimulationInfo() { return (openfluid::base::SimulationInfo*)mp_SimStatus; };
00205
00206 SimulationBlob* getSimulationBlob() { return &m_SimulationBlob; };
00207
00208 MachineListener* getMachineListener() { return mp_MachineListener; };
00209
00210 openfluid::io::IOListener* getIOListener() { return mp_IOListener; };
00211
00212 ModelInstance* getModelInstance() { return &m_ModelInstance; };
00213
00214
00215 };
00216
00217
00218 } }
00219
00220
00221 #endif
00222
00223
00224
00225
00226
00227
00228