62 template <
typename Comm>
63 void communicate(
const Comm& comm) {
64 auto size = this->m_in_injecting_group.size();
65 comm.sum( this->m_in_injecting_group.data(), size);
66 comm.sum( this->m_in_producing_group.data(), size);
67 comm.sum( this->m_is_open.data(), size);
68 comm.min( this->m_efficiency_scaling_factors.data(), size);
69 is_rank0_ = (comm.rank() == 0);
74 GlobalWellInfo(
const Schedule& sched, std::size_t report_step,
const std::vector<Well>& local_wells);
75 bool in_producing_group(
const std::string& wname)
const;
76 bool in_injecting_group(
const std::string& wname)
const;
77 bool is_open(
const std::string& wname)
const;
78 std::size_t well_index(
const std::string& wname)
const;
79 const std::string& well_name(std::size_t well_index)
const;
80 void update_injector(std::size_t well_index, WellStatus well_status, WellInjectorCMode injection_cmode);
81 void update_producer(std::size_t well_index, WellStatus well_status, WellProducerCMode production_cmode);
82 void update_efficiency_scaling_factor(std::size_t well_index,
const Scalar efficiency_scaling_factor);
83 Scalar efficiency_scaling_factor(
const std::string& wname)
const;
88 std::vector<std::size_t> local_map;
90 std::map<std::string, std::size_t> name_map;
91 std::vector<int> m_in_injecting_group;
92 std::vector<int> m_in_producing_group;
93 std::vector<int> m_is_open;
94 std::vector<Scalar> m_efficiency_scaling_factors;