-
Notifications
You must be signed in to change notification settings - Fork 298
/
StaticSystemOMCFactory.h
53 lines (47 loc) · 2.08 KB
/
StaticSystemOMCFactory.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#pragma once
/** @addtogroup simcorefactoriesPolicies
*
* @{
*/
shared_ptr<ISimData> createSimDataFunction();
shared_ptr<ISimVars> createSimVarsFunction(size_t dim_real,size_t dim_int,size_t dim_bool,size_t dim_string,size_t dim_pre_vars,size_t dim_z,size_t z_i);
shared_ptr<IMixedSystem> createSystemFunction(IGlobalSettings* globalSettings,shared_ptr<ISimObjects> simObjects);
shared_ptr<IAlgLoopSolverFactory> createStaticAlgLoopSolverFactory(IGlobalSettings* globalSettings,PATH library_path,PATH modelicasystem_path);
/*
Policy class to create a OMC-, Modelica- system or AlgLoopSolver
*/
template <class CreationPolicy>
struct StaticSystemOMCFactory: public ObjectFactory<CreationPolicy>
{
public:
StaticSystemOMCFactory(PATH library_path, PATH modelicasystem_path, PATH config_path)
:ObjectFactory<CreationPolicy>(library_path, modelicasystem_path, config_path)
{
_use_modelica_compiler = false;
}
virtual ~StaticSystemOMCFactory()
{
}
virtual shared_ptr<ISimData> createSimData()
{
return createSimDataFunction();
}
virtual shared_ptr<ISimVars> createSimVars(size_t dim_real,size_t dim_int,size_t dim_bool,size_t dim_string,size_t dim_pre_vars,size_t dim_z,size_t z_i)
{
return createSimVarsFunction(dim_real, dim_int, dim_bool, dim_string, dim_pre_vars, dim_z, z_i);
}
virtual shared_ptr<IAlgLoopSolverFactory> createAlgLoopSolverFactory(IGlobalSettings* globalSettings)
{
return createStaticAlgLoopSolverFactory(globalSettings,ObjectFactory<CreationPolicy>::_library_path,ObjectFactory<CreationPolicy>::_modelicasystem_path);
}
shared_ptr<IMixedSystem> createSystem(string modelLib,string modelKey,IGlobalSettings* globalSettings,shared_ptr<ISimObjects> simObjects)
{
return createSystemFunction(globalSettings,simObjects);
}
shared_ptr<IMixedSystem> createModelicaSystem(PATH modelica_path, string modelKey, IGlobalSettings* globalSettings,shared_ptr<ISimObjects> simObjects)
{
throw ModelicaSimulationError(MODEL_FACTORY,"Modelica is not supported");
}
bool _use_modelica_compiler;
};
/** @} */ // end of simcorefactoriesPolicies