Added global cell indices to faults and added optimalizations

This commit is contained in:
Magne Sjaastad 2013-12-09 09:52:10 +01:00
parent 5edcb1c161
commit d53e9aa9c1
4 changed files with 32 additions and 17 deletions

View File

@ -160,16 +160,17 @@ void RivFaultGeometryGenerator::computeArrays()
if (m_showNativeFaultFaces)
{
for (size_t fIdx = 0; fIdx < faultFaces.size(); fIdx++)
#pragma omp parallel for
for (int fIdx = 0; fIdx < faultFaces.size(); fIdx++)
{
size_t cellIndex = faultFaces[fIdx].m_globalCellIndex;
size_t cellIndex = faultFaces[fIdx].m_nativeGlobalCellIndex;
if (m_limitFaultsToFilters)
{
if (!(*m_cellVisibility)[cellIndex]) continue;
}
cvf::StructGridInterface::FaceType face = faultFaces[fIdx].m_face;
cvf::StructGridInterface::FaceType face = faultFaces[fIdx].m_nativeFace;
cvf::Vec3d cornerVerts[8];
m_grid->cellCornerVertices(cellIndex, cornerVerts);
@ -195,18 +196,19 @@ void RivFaultGeometryGenerator::computeArrays()
if (m_showOppositeFaultFaces)
{
for (size_t fIdx = 0; fIdx < faultFaces.size(); fIdx++)
#pragma omp parallel for
for (int fIdx = 0; fIdx < faultFaces.size(); fIdx++)
{
size_t currentCellIndex = faultFaces[fIdx].m_globalCellIndex;
cvf::StructGridInterface::FaceType currentFace = faultFaces[fIdx].m_face;
cvf::StructGridInterface::FaceType face = m_grid->oppositeFace(currentFace);
size_t cellIndex = faultFaces[fIdx].m_oppositeGlobalCellIndex;
cvf::StructGridInterface::FaceType face = faultFaces[fIdx].m_oppositeFace;
/*
size_t i, j, k, ni, nj, nk;
m_grid->ijkFromCellIndex(currentCellIndex, &i, &j, &k);
m_grid->neighborIJKAtCellFace(i, j, k, currentFace, &ni, &nj, &nk);
size_t cellIndex = m_grid->cellIndexFromIJK(ni, nj, nk);
*/
if (m_limitFaultsToFilters)
{
if (!(*m_cellVisibility)[cellIndex]) continue;

View File

@ -118,7 +118,15 @@ void RigFault::computeFaultFacesFromCellRanges(const RigMainGrid* grid)
// Do not need to compute global grid cell index as for a maingrid localIndex == globalIndex
//size_t globalCellIndex = grid->globalGridCellIndex(localCellIndex);
m_faultFaces.push_back(FaultFace(localCellIndex, faceEnum));
cvf::StructGridInterface::FaceType oppositeFace = grid->oppositeFace(faceEnum);
size_t ni, nj, nk;
grid->ijkFromCellIndex(localCellIndex, &i, &j, &k);
grid->neighborIJKAtCellFace(i, j, k, faceEnum, &ni, &nj, &nk);
size_t oppositeCellIndex = grid->cellIndexFromIJK(ni, nj, nk);
m_faultFaces.push_back(FaultFace(localCellIndex, faceEnum, oppositeCellIndex, oppositeFace));
}
}
}

View File

@ -39,13 +39,17 @@ public:
struct FaultFace
{
FaultFace(size_t globalCellIndex, cvf::StructGridInterface::FaceType face) :
m_globalCellIndex(globalCellIndex),
m_face(face)
{ }
FaultFace(size_t nativeGlobalCellIndex, cvf::StructGridInterface::FaceType nativeFace, size_t oppositeGlobalCellIndex, cvf::StructGridInterface::FaceType oppositeFace) :
m_nativeGlobalCellIndex(nativeGlobalCellIndex),
m_nativeFace(nativeFace),
m_oppositeGlobalCellIndex(oppositeGlobalCellIndex),
m_oppositeFace(oppositeFace)
{ }
size_t m_globalCellIndex;
cvf::StructGridInterface::FaceType m_face;
size_t m_nativeGlobalCellIndex;
cvf::StructGridInterface::FaceType m_nativeFace;
size_t m_oppositeGlobalCellIndex;
cvf::StructGridInterface::FaceType m_oppositeFace;
};
public:

View File

@ -545,7 +545,8 @@ void RigGridBase::setFaults(const cvf::Collection<RigFault>& faults)
{
m_faults = faults;
for (size_t i = 0; i < m_faults.size(); i++)
#pragma omp parallel for
for (int i = 0; i < m_faults.size(); i++)
{
m_faults[i]->computeFaultFacesFromCellRanges(this->mainGrid());
}