20#ifndef OPM_BLACKOILWELLMODEL_RESCOUP_IMPL_HEADER_INCLUDED
21#define OPM_BLACKOILWELLMODEL_RESCOUP_IMPL_HEADER_INCLUDED
24#ifndef OPM_BLACKOILWELLMODEL_RESCOUP_HEADER_INCLUDED
29#ifdef RESERVOIR_COUPLING_ENABLED
31#include <opm/common/TimingMacros.hpp>
45template<
typename TypeTag>
46BlackoilWellModelRescoup<TypeTag>::
47BlackoilWellModelRescoup(BlackoilWellModel<TypeTag>& well_model)
48 : well_model_{well_model}
54template<
typename TypeTag>
56BlackoilWellModelRescoup<TypeTag>::
57receiveGroupConstraintsFromMaster()
60 RescoupReceiveGroupConstraints<Scalar, IndexTraits> constraint_receiver{
61 this->well_model_.guideRateHandler(),
62 this->well_model_.groupStateHelper()
64 constraint_receiver.receiveGroupConstraintsFromMaster();
67template<
typename TypeTag>
69BlackoilWellModelRescoup<TypeTag>::
70receiveSlaveGroupData()
73 assert(this->well_model_.isReservoirCouplingMaster());
74 RescoupReceiveSlaveGroupData<Scalar, IndexTraits> slave_group_data_receiver{
75 this->well_model_.groupStateHelper(),
77 slave_group_data_receiver.receiveSlaveGroupData();
80template<
typename TypeTag>
82BlackoilWellModelRescoup<TypeTag>::
83rescoupSyncSummaryData()
95 if (this->well_model_.isReservoirCouplingMaster()) {
96 if (this->well_model_.reservoirCouplingMaster().needsSlaveDataReceive()) {
97 this->receiveSlaveGroupData();
98 this->well_model_.reservoirCouplingMaster().setNeedsSlaveDataReceive(
false);
101 if (this->well_model_.isReservoirCouplingSlave()) {
102 if (this->well_model_.reservoirCouplingSlave().isLastSubstepOfSyncTimestep()) {
103 this->sendSlaveGroupDataToMaster();
108template<
typename TypeTag>
110BlackoilWellModelRescoup<TypeTag>::
111sendSlaveGroupDataToMaster()
114 assert(this->well_model_.isReservoirCouplingSlave());
115 RescoupSendSlaveGroupData<Scalar, IndexTraits> slave_group_data_sender{
116 this->well_model_.groupStateHelper()};
117 slave_group_data_sender.sendSlaveGroupDataToMaster();
120template<
typename TypeTag>
122BlackoilWellModelRescoup<TypeTag>::
123sendMasterGroupConstraintsToSlaves()
127 RescoupConstraintsCalculator<Scalar, IndexTraits> constraints_calculator{
128 this->well_model_.guideRateHandler(),
129 this->well_model_.groupStateHelper()
131 constraints_calculator.calculateMasterGroupConstraintsAndSendToSlaves();
143template<
typename TypeTag>
144std::optional<ReservoirCoupling::ScopedLoggerGuard>
145BlackoilWellModelRescoup<TypeTag>::
146setupScopedLogger(DeferredLogger& local_logger)
148 if (this->well_model_.isReservoirCouplingMaster()) {
149 return ReservoirCoupling::ScopedLoggerGuard{
150 this->well_model_.reservoirCouplingMaster().logger(),
153 }
else if (this->well_model_.isReservoirCouplingSlave()) {
154 return ReservoirCoupling::ScopedLoggerGuard{
155 this->well_model_.reservoirCouplingSlave().logger(),
Definition: blackoilbioeffectsmodules.hh:45