Allow a few well completions in the overlap.

If on one process a well completion is next to border then
it might also be stored in the neighbor process. Still not
all the completions of the well are known to the neighbor.
This breaks the previous assumption that for each well all
completions must belong to the partition of the process.

Therefore with this commit we allow wells that only have a
part of their completions assigned to the partition of the process.
This wells are deactivated under the assumption that they must
exist completely on another process due to the partitioning.
This commit is contained in:
Markus Blatt
2015-09-08 20:38:02 +02:00
parent 830fd552f4
commit af2f3a0a90

View File

@@ -152,10 +152,6 @@ void WellsManager::createWellsFromSpecs(std::vector<WellConstPtr>& wells, size_t
if (cgit == cartesian_to_compressed.end()) {
if ( is_parallel_run_ )
{
// \todo remove hack for parallel runs! HACK!
std::cerr<<" Warning: Cell with i,j,k indices " << i << ' ' << j << ' '
<< k << " not found in grid (well = " << well->name()
<< ") Assuming a parallel run and ignoring it"<<std::endl;
completion_on_proc[c]=0;
continue;
}
@@ -222,10 +218,12 @@ void WellsManager::createWellsFromSpecs(std::vector<WellConstPtr>& wells, size_t
// Check that the complete well is on this process
if ( sum_completions_on_proc < completionSet->size() )
{
std::size_t missing = completionSet->size()-sum_completions_on_proc;
OPM_THROW(std::runtime_error, "Each well must be completely stored "
<< "on one process! Not the case for " << well->name() << ": "
<< missing << " completions missing.");
std::cout<< "Well "<< well->name() << " semms not be in "
<< "completely in the disjoint partition of "
<< "process deactivating here." << std::endl;
// Mark well as not existent on this process
wells_on_proc[wellIter-wells.begin()] = 0;
continue;
}
}
}