Skip to content

Commit 9e99465

Browse files
committed
WIP reduce duplication code
1 parent a2cf7a0 commit 9e99465

4 files changed

Lines changed: 69 additions & 129 deletions

File tree

opm/grid/cpgrid/CpGrid.cpp

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2196,13 +2196,10 @@ bool CpGrid::refineAndUpdateGrid(bool throwOnFailure,
21962196
elemLgrAndElemLgrCorner_to_refinedLevelAndRefinedCorner,
21972197
vanishedRefinedCorner_to_itsLastAppearance,
21982198
markedElem_to_itsLgr,
2199-
assignRefinedLevel,
22002199
preAdaptMaxLevel,
22012200
markedElemAndEquivRefinedCorn_to_corner,
22022201
cornerInMarkedElemWithEquivRefinedCorner,
2203-
cells_per_dim_vec,
2204-
cellRefsBoundaryInfo,
2205-
withoutFaults);
2202+
cellRefsBoundaryInfo);
22062203

22072204
// Update leaf grid geometries
22082205
// --- Adapted corners ---
@@ -2242,13 +2239,9 @@ bool CpGrid::refineAndUpdateGrid(bool throwOnFailure,
22422239
elemLgrAndElemLgrCorner_to_adaptedCorner,
22432240
vanishedRefinedCorner_to_itsLastAppearance,
22442241
markedElem_to_itsLgr,
2245-
assignRefinedLevel,
22462242
markedElemAndEquivRefinedCorn_to_corner,
22472243
cornerInMarkedElemWithEquivRefinedCorner,
2248-
cells_per_dim_vec,
2249-
preAdaptMaxLevel,
2250-
cellRefsBoundaryInfo,
2251-
withoutFaults);
2244+
cellRefsBoundaryInfo);
22522245

22532246
for (int level = 0; level < levels; ++level) {
22542247
const int refinedLevelGridIdx = level + preAdaptMaxLevel +1;

opm/grid/cpgrid/LgrFaultHelpers.cpp

Lines changed: 46 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,7 @@ void addFaces(int
877877
}
878878
}
879879

880+
880881
void populateFaceData(int oldGridNumFaces,
881882
const Dune::cpgrid::CpGridData& oldGrid,
882883
const std::map<int,BoundaryFaceInfo>& boundaryFacesInfo,
@@ -914,6 +915,30 @@ void populateFaceData(int oldGridNumFaces,
914915
int newGrid_num_points = 0;
915916
int newGrid_face_count = 0;
916917

918+
auto registerFace = [&](int oldFaceIdx,
919+
int newFaceIdx,
920+
int parentFaceIdx,
921+
auto&& geometry,
922+
auto&& normal,
923+
auto tag)
924+
{
925+
modificationMap.oldGridFaceIdx_to_newGridFaceIdxList[oldFaceIdx].push_back(newFaceIdx);
926+
modificationMap.newGridFaceIdx_to_oldGridFaceIdx[newFaceIdx] = oldFaceIdx;
927+
928+
if (parentFaceIdx != -1) {
929+
newGridFaceIdx_to_parentFaceIdx[newFaceIdx] = parentFaceIdx;
930+
}
931+
932+
newGridFaces[newFaceIdx] = geometry;
933+
mutable_newGridFaceTags[newFaceIdx] = tag;
934+
mutable_newGridFaceNormals[newFaceIdx] = normal;
935+
936+
const auto& faceToCell = oldGrid.faceToCell(oldFaceIdx);
937+
newGridGeomData.face_to_cell.appendRow(faceToCell.begin(), faceToCell.end());
938+
939+
++newGrid_face_count;
940+
};
941+
917942
for (int i = 0; i < oldGrid.numFaces(); ++i) {
918943

919944
std::vector<int> newFaceIndices{};
@@ -925,17 +950,6 @@ void populateFaceData(int oldGridNumFaces,
925950

926951
const auto face = Dune::cpgrid::EntityRep<1>(i, true);
927952

928-
modificationMap.oldGridFaceIdx_to_newGridFaceIdxList[i].push_back(newGrid_face_count);
929-
modificationMap.newGridFaceIdx_to_oldGridFaceIdx[newGrid_face_count] = i;
930-
931-
if (parentFaceIdx!= -1) {
932-
newGridFaceIdx_to_parentFaceIdx[newGrid_face_count] = parentFaceIdx;
933-
}
934-
935-
newGridFaces[newGrid_face_count] = (*oldGrid.getGeometry().geomVector(std::integral_constant<int,1>()))[face];
936-
mutable_newGridFaceTags[newGrid_face_count] = oldGrid.faceTag(i);
937-
mutable_newGridFaceNormals[newGrid_face_count] = oldGrid.faceNormals(i);
938-
939953
std::vector<int> faceToPoint{};
940954
faceToPoint.reserve(oldGrid.faceToPoint(i).size());
941955
for (const auto& vertexIdx : oldGrid.faceToPoint(i)) {
@@ -944,25 +958,19 @@ void populateFaceData(int oldGridNumFaces,
944958
newGrid_num_points += faceToPoint.size();
945959
aux_newGrid_face_to_point[newGrid_face_count] = faceToPoint;
946960

947-
const auto& faceToCell = oldGrid.faceToCell(i);
948-
newGridGeomData.face_to_cell.appendRow(faceToCell.begin(), faceToCell.end());
949-
950-
++newGrid_face_count;
961+
registerFace(i,
962+
newGrid_face_count,
963+
parentFaceIdx,
964+
(*oldGrid.getGeometry().geomVector(std::integral_constant<int,1>()))[face],
965+
oldGrid.faceNormals(i),
966+
oldGrid.faceTag(i));
951967
}
952968
else {
953969
const auto& boundaryFaceInfo = itP->second;
954970
const auto& newFacesInfo = boundaryFaceInfo.vanishedCellRefFace_to_newRefinedFaces[i];
955971

956972
if ( boundaryFaceInfo.faceFullyContainedInNeighbor[i] || newFacesInfo.empty()){
957973
const auto face = Dune::cpgrid::EntityRep<1>(i, true);
958-
959-
modificationMap.oldGridFaceIdx_to_newGridFaceIdxList[i].push_back(newGrid_face_count);
960-
modificationMap.newGridFaceIdx_to_oldGridFaceIdx[newGrid_face_count] = i;
961-
newGridFaceIdx_to_parentFaceIdx[newGrid_face_count] = parentFaceIdx;
962-
963-
newGridFaces[newGrid_face_count] = (*oldGrid.getGeometry().geomVector(std::integral_constant<int,1>()))[face];
964-
mutable_newGridFaceTags[newGrid_face_count] = oldGrid.faceTag(i);
965-
mutable_newGridFaceNormals[newGrid_face_count] = oldGrid.faceNormals(i);
966974

967975
std::vector<int> faceToPoint{};
968976
faceToPoint.reserve(oldGrid.faceToPoint(i).size());
@@ -972,24 +980,20 @@ void populateFaceData(int oldGridNumFaces,
972980
newGrid_num_points += faceToPoint.size();
973981
aux_newGrid_face_to_point[newGrid_face_count] = faceToPoint;
974982

975-
const auto& faceToCell = oldGrid.faceToCell(i);
976-
newGridGeomData.face_to_cell.appendRow(faceToCell.begin(), faceToCell.end());
977-
978-
++newGrid_face_count;
983+
registerFace(i,
984+
newGrid_face_count,
985+
parentFaceIdx,
986+
(*oldGrid.getGeometry().geomVector(std::integral_constant<int,1>()))[face],
987+
oldGrid.faceNormals(i),
988+
oldGrid.faceTag(i));
979989
}
980990
else {
981991
for (const auto& [grid2_faceIdx, newFaceToCoord] : newFacesInfo) {
982-
992+
983993
newFaceIndices.push_back(newGrid_face_count);
984-
modificationMap.oldGridFaceIdx_to_newGridFaceIdxList[i].push_back(newGrid_face_count);
985-
modificationMap.newGridFaceIdx_to_oldGridFaceIdx[newGrid_face_count] = i;
986-
newGridFaceIdx_to_parentFaceIdx[newGrid_face_count] = parentFaceIdx;
987-
988-
const auto [faceCenter, faceArea, faceNormal] = computeFaceCenterAreaNormal(newFaceToCoord);
989994

990-
newGridFaces[newGrid_face_count] = Dune::cpgrid::Geometry<2,3>(faceCenter, faceArea);
991-
mutable_newGridFaceTags[newGrid_face_count] = oldGrid.faceTag(i); // shared tag
992-
mutable_newGridFaceNormals[newGrid_face_count] = faceNormal;
995+
const auto [faceCenter, faceArea, faceNormal] =
996+
computeFaceCenterAreaNormal(newFaceToCoord);
993997

994998
std::vector<int> faceToPoint{};
995999
faceToPoint.reserve(newFaceToCoord.size());
@@ -1012,9 +1016,12 @@ void populateFaceData(int oldGridNumFaces,
10121016
newGrid_num_points += faceToPoint.size();
10131017
aux_newGrid_face_to_point[newGrid_face_count] = faceToPoint;
10141018

1015-
const auto& face_to_cell = oldGrid.faceToCell(i);
1016-
newGridGeomData.face_to_cell.appendRow(face_to_cell.begin(), face_to_cell.end());
1017-
++newGrid_face_count;
1019+
registerFace(i,
1020+
newGrid_face_count,
1021+
parentFaceIdx,
1022+
Dune::cpgrid::Geometry<2,3>(faceCenter, faceArea),
1023+
faceNormal,
1024+
oldGrid.faceTag(i));
10181025
}
10191026
}
10201027
}

0 commit comments

Comments
 (0)