The master needs more data than the currently sent slave group
potentials:
- surface production rates
- reservoir voidage rates
- reinjection rates
- surface injection rate
- reservoir injection rate
1) A slave may run independently until it is activated by a GRUPSLAV keyword in the schedule. Before that point it determines its own timestepping strategy. After activation, its timestepping is controlled and synced by the master. 2) If the slave activates later (schedule DATE) than the master, it will have to wait until the master reaches that point of time, before it synchronizes with the master. 3) The master may run independently until it is activated by a SLAVES keyword in the schedule. Before that point it determines its own timestepping strategy. After activation, it tries to synchronize with activated slaves and adjust its time stepping to their report steps.
replacing it with a new PhaseUsageInfo and FluidSystem, both of which
are using the same implementation of PhaseUsageInfo, and only one set of
indices is used. Currently, it is the BlackOilDefaultFluidSystemIndices.
This commit switches updateGuideRatesForWells() away from exchanging
potential rates for individual wells through one collective message
per well. Instead, we gather well level potential rates for the
current rank into a large vector, and exchange those values with all
ranks in the current communicator in a single message. While the
size of that message is obviously larger (3 * #wells) and therefore
uses more memory, we potentially gain runtime performance by having
less latency and synchronisation cost.
Even if a group is a pure injection group, we still need to include its
group potential in the calculation of the production potential of a
higher group