The revised depth correction algorithm requires per-cell depth
information (in SourceDataSpan::Item::Depth) for the reservoir
contributions so honour this requirement.
This is potentially a somewhat wasteful approach since the cell
centre depth is constant throughout a simulation, but it's a simple
strategy that does not require large API and synchronisation
changes, so we nevertheless stick to this as a first implementation.
We will reduce the amount of communication if this becomes a
bottleneck.
This commit adds a new container class,
ParallelPAvgDynamicSourceData
which inherits from PAvgDynamicSourceData and provides a parallel
view of source contributions. Member function
collectLocalSources
will call the user-provided source term evaluation function for each
source location in its purview--typically those locations owned by
the current MPI rank. Those values will be distributed to other MPI
ranks through member function synchroniseSources which will fill the
base class' 'src_' data member, and become available to clients
through read-only item spans.