43class SingleWellState {
49 SingleWellState(
const std::string& name,
53 Scalar pressure_first_connection,
59 template<
class Serializer>
60 void serializeOp(Serializer& serializer)
67 serializer(pressure_first_connection);
68 serializer(temperature);
69 serializer(energy_rate);
70 serializer(efficiency_scaling_factor);
71 serializer(phase_mixing_rates);
72 serializer(well_potentials);
73 serializer(productivity_index);
74 serializer(implicit_ipr_a);
75 serializer(implicit_ipr_b);
76 serializer(surface_rates);
77 serializer(reservoir_rates);
78 serializer(prev_surface_rates);
79 serializer(trivial_group_target);
82 serializer(injection_cmode);
83 serializer(production_cmode);
84 serializer(filtrate_conc);
85 serializer(perf_data);
86 serializer(primaryvar);
87 serializer(alq_state);
88 serializer(group_target);
89 serializer(was_shut_before_action_applied);
92 bool operator==(
const SingleWellState&)
const;
95 std::reference_wrapper<const ParallelWellInfo<Scalar>> parallel_info;
97 WellStatus status{WellStatus::OPEN};
102 Scalar pressure_first_connection{0};
105 Scalar temperature{0};
106 Scalar energy_rate{0.};
108 Scalar efficiency_scaling_factor{1.0};
111 Scalar filtrate_conc{0};
113 std::array<Scalar,4> phase_mixing_rates{};
116 dissolved_gas_in_water = 1,
122 std::string group_name;
126 return group_name == other.group_name && target_value == other.target_value;
129 template<
class Serializer>
130 void serializeOp(Serializer& serializer) {
131 serializer(group_name);
132 serializer(target_value);
136 std::vector<Scalar> well_potentials;
137 std::vector<Scalar> productivity_index;
138 std::vector<Scalar> implicit_ipr_a;
139 std::vector<Scalar> implicit_ipr_b;
140 std::vector<Scalar> surface_rates;
141 std::vector<Scalar> reservoir_rates;
142 std::vector<Scalar> prev_surface_rates;
144 bool trivial_group_target;
145 std::optional<GroupTarget> group_target;
148 WellInjectorCMode injection_cmode{WellInjectorCMode::CMODE_UNDEFINED};
149 WellProducerCMode production_cmode{WellProducerCMode::CMODE_UNDEFINED};
150 std::vector<Scalar> primaryvar;
151 ALQState<Scalar> alq_state;
155 bool was_shut_before_action_applied {
false};
164 void update_producer_targets(
const Well& ecl_well,
const SummaryState& st);
165 void update_injector_targets(
const Well& ecl_well,
const SummaryState& st);
172 bool updateStatus(WellStatus status);
173 void init_timestep(
const SingleWellState& other);
181 Scalar sum_solvent_rates()
const;
182 Scalar sum_polymer_rates()
const;
183 Scalar sum_brine_rates()
const;
184 Scalar sum_microbial_rates()
const;
185 Scalar sum_oxygen_rates()
const;
186 Scalar sum_urea_rates()
const;
187 Scalar sum_wat_mass_rates()
const;
189 Scalar sum_filtrate_rate()
const;
190 Scalar sum_filtrate_total()
const;
193 Scalar sum_connection_rates(
const std::vector<Scalar>& connection_rates)
const;