00001
00011 #ifndef BS_BOS_CORE_PY_WELL_FACTORY_H_
00012 #define BS_BOS_CORE_PY_WELL_FACTORY_H_
00013
00014 #include "calc_well.h"
00015 #include "well_controller.h"
00016 #include "well_limit_operation.h"
00017 #include "calc_model.h"
00018 #include "export_python_wrapper.h"
00019 #include "well_rate_control_interface.h"
00020
00021
00022 namespace blue_sky {
00023 namespace python {
00024
00025 STRATEGY_CLASS_WRAPPER (well_factory, py_well_factory)
00026 {
00027 public:
00028 typedef smart_ptr <well <strategy_t>, true> sp_well_t;
00029 typedef smart_ptr <wells::connection <strategy_t>, true> sp_connection_t;
00030 typedef well_factory <strategy_t> wrapped_t;
00031 public:
00032 STRATEGY_CLASS_WRAPPER_DECL (py_well_factory);
00033 WRAPPER_METHOD_R_CONST (create_well, sp_well_t, 2, (std::string, std::string));
00034 WRAPPER_METHOD_R_CONST (create_connection, sp_connection_t, 0, (empty_arg__));
00035 };
00036
00037 using namespace wells;
00038 STRATEGY_CLASS_WRAPPER (well_controller_factory, py_well_controller_factory)
00039 {
00040 public:
00041 typedef smart_ptr <well_controller <strategy_t>, true> sp_well_controller_t;
00042 typedef smart_ptr <well_rate_control <strategy_t>, true> sp_well_control_t;
00043 typedef smart_ptr <calc_model <strategy_t>, true> sp_calc_model_t;
00044 typedef well_controller_factory <strategy_t> wrapped_t;
00045
00046 public:
00047 STRATEGY_CLASS_WRAPPER_DECL (py_well_controller_factory);
00048 WRAPPER_METHOD_R_CONST (create_controller, sp_well_controller_t, 0, (empty_arg__));
00049 WRAPPER_METHOD_R_CONST (create_control, sp_well_control_t, 3, (rate_control_type, bool, const sp_calc_model_t &));
00050 };
00051
00052 STRATEGY_CLASS_WRAPPER (well_rate_control_factory, py_well_rate_control_factory)
00053 {
00054 public:
00055 typedef well_rate_control_interface <strategy_t> well_rate_control_t;
00056 typedef smart_ptr <calc_model <strategy_t>, true> sp_calc_model_t;
00057 typedef smart_ptr <well_rate_control_t, true> sp_well_rate_control_t;
00058 typedef well_rate_control_factory <strategy_t> wrapped_t;
00059
00060 public:
00061 STRATEGY_CLASS_WRAPPER_DECL (py_well_rate_control_factory);
00062 WRAPPER_METHOD_R (create_control, sp_well_rate_control_t, 4, (rate_control_type, bool, bool, const sp_calc_model_t &));
00063 };
00064
00065 CLASS_WRAPPER (well_limit_operation_factory, py_well_limit_operation_factory)
00066 {
00067 public:
00068 typedef smart_ptr <well_limit_operation, true> sp_well_limit_operation_t;
00069 typedef well_limit_operation_factory wrapped_t;
00070 public:
00071 CLASS_WRAPPER_DECL (py_well_limit_operation_factory);
00072 WRAPPER_METHOD_R (create_limit, sp_well_limit_operation_t, 1, (limit_operation_type));
00073 };
00074
00078 void
00079 py_export_well_factories ();
00080
00081 }
00082 }
00083
00084
00085 #endif // #ifndef BS_BOS_CORE_PY_WELL_FACTORY_H_
00086