Faults Guarded Fault neighbour calculation

This commit is contained in:
Jacob Støren 2013-12-17 13:26:46 +01:00
parent 56b7053a15
commit 344ac7a146

View File

@ -74,9 +74,9 @@ const std::vector<RigFault::FaultFace>& RigFault::faultFaces() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RigFault::computeFaultFacesFromCellRanges(const RigMainGrid* grid) void RigFault::computeFaultFacesFromCellRanges(const RigMainGrid* mainGrid)
{ {
if (!grid) return; if (!mainGrid) return;
m_faultFaces.clear(); m_faultFaces.clear();
@ -95,37 +95,41 @@ void RigFault::computeFaultFacesFromCellRanges(const RigMainGrid* grid)
for (size_t i = min.x(); i <= max.x(); i++) for (size_t i = min.x(); i <= max.x(); i++)
{ {
if (i >= grid->cellCountI()) if (i >= mainGrid->cellCountI())
{ {
continue; continue;
} }
for (size_t j = min.y(); j <= max.y(); j++) for (size_t j = min.y(); j <= max.y(); j++)
{ {
if (j >= grid->cellCountJ()) if (j >= mainGrid->cellCountJ())
{ {
continue; continue;
} }
for (size_t k = min.z(); k <= max.z(); k++) for (size_t k = min.z(); k <= max.z(); k++)
{ {
if (k >= grid->cellCountK()) if (k >= mainGrid->cellCountK())
{ {
continue; continue;
} }
size_t localCellIndex = grid->cellIndexFromIJK(i, j, k);
// Do not need to compute global grid cell index as for a maingrid localIndex == globalIndex // Do not need to compute global grid cell index as for a maingrid localIndex == globalIndex
//size_t globalCellIndex = grid->globalGridCellIndex(localCellIndex); //size_t globalCellIndex = grid->globalGridCellIndex(localCellIndex);
size_t ni, nj, nk; size_t ni, nj, nk;
grid->ijkFromCellIndex(localCellIndex, &i, &j, &k); mainGrid->neighborIJKAtCellFace(i, j, k, faceEnum, &ni, &nj, &nk);
grid->neighborIJKAtCellFace(i, j, k, faceEnum, &ni, &nj, &nk); if (ni != cvf::UNDEFINED_SIZE_T && nj != cvf::UNDEFINED_SIZE_T && nk != cvf::UNDEFINED_SIZE_T)
{
size_t localCellIndex = mainGrid->cellIndexFromIJK(i, j, k);
size_t oppositeCellIndex = mainGrid->cellIndexFromIJK(ni, nj, nk);
size_t oppositeCellIndex = grid->cellIndexFromIJK(ni, nj, nk); m_faultFaces.push_back(FaultFace(localCellIndex, faceEnum, oppositeCellIndex));
}
m_faultFaces.push_back(FaultFace(localCellIndex, faceEnum, oppositeCellIndex)); else
{
cvf::Trace::show("Warning: Undefined Fault neighbor detected.");
}
} }
} }
} }