@@ -1784,11 +1784,12 @@ bool CpGridData::hasNNCs(const std::vector<int>& cellIndices) const
17841784 return hasNNC;
17851785}
17861786
1787- std::tuple< const std::shared_ptr<CpGridData>,
1788- const std::vector<std::array<int ,2 >>,
1789- std::unordered_map<int ,int >, // extraRefCornIdx_to_parentFaceIdx
1790- std::vector<int >,
1791- std::vector<bool >>
1787+ /* std::tuple< const std::shared_ptr<CpGridData>,
1788+ const std::vector<std::array<int,2>>, // parentBoundaryVertexIdx_to_correctedCellRefGridBoundaryVertexIdx
1789+ std::unordered_map<int,int>, // refinedBoundaryCornIdx_to_parentFaceIdx
1790+ std::vector<int>, // refinedFace_to_parentFace
1791+ std::vector<bool>> // coincideWithCoarseCorner*/
1792+ std::pair<std::shared_ptr<CpGridData>, Opm::Lgr::CellRefinementBoundaryInfo>
17921793CpGridData::refineSingleCell (const std::array<int ,3 >& cells_per_dim,
17931794 const int & parent_idx,
17941795 std::vector<std::vector<std::pair<int , std::vector<int >>>>& faceInMarkedElemAndRefinedFaces) const
@@ -1798,14 +1799,7 @@ CpGridData::refineSingleCell(const std::array<int,3>& cells_per_dim,
17981799 std::shared_ptr<CpGridData> cellRefGrid_ptr = std::make_shared<CpGridData>(cellRef_data); // ccobj_
17991800 auto & cellRefGrid = *cellRefGrid_ptr;
18001801 Opm::Lgr::GeomData cellRefGeomData (cellRefGrid);
1801-
1802- /* DefaultGeometryPolicy& cellRef_geometries = cellRefGrid.geometry_;
1803- std::vector<std::array<int,8>>& refined_cell_to_point = cellRefGrid.cell_to_point_;
1804- cpgrid::OrientedEntityTable<0,1>& refined_cell_to_face = cellRefGrid.cell_to_face_;
1805- Opm::SparseTable<int>& refined_face_to_point = cellRefGrid.face_to_point_;
1806- cpgrid::OrientedEntityTable<1,0>& refined_face_to_cell = refined_grid.face_to_cell_;
1807- cpgrid::EntityVariable<enum face_tag,1>& refined_face_tags = refined_grid.face_tag_;
1808- cpgrid::SignedEntityVariable<Dune::FieldVector<double,3>,1>& refined_face_normals = refined_grid.face_normals_;*/
1802+
18091803
18101804 const auto & parentCellToPoint = this ->cell_to_point_ [parent_idx];
18111805 Opm::Lgr::containsEightDifferentCorners (parentCellToPoint); // refinement supported only for hexahedron
@@ -1863,12 +1857,16 @@ CpGridData::refineSingleCell(const std::array<int,3>& cells_per_dim,
18631857 for (const auto & [parentGridVertexIdx, equivRefVertexIdx] : parentBoundaryVertexIdx_to_correctedCellRefGridBoundaryVertexIdx) {
18641858 coincideWithParentGridVertex[equivRefVertexIdx] = true ;
18651859 }
1860+
1861+ Opm::Lgr::CellRefinementBoundaryInfo cellRefinementBoundaryInfo{
1862+ .parentVertex_to_boundaryRefinedVertex = parentBoundaryVertexIdx_to_correctedCellRefGridBoundaryVertexIdx,
1863+ .boundaryRefinedVertex_to_parentFace = correctedCellRefGridBoundaryVertexIdx_to_parentGridFaceIdx,
1864+ .boundaryRefinedFace_to_parentFace = correctedCellRefGridBoundaryFaceIdx_to_parentGridFaceIdx,
1865+ .boundaryRefinedVertexCoincidesWithParentVertex = coincideWithParentGridVertex,
1866+ .parentCellhasSingleFacePerType = hasOnlyOneFacePerType
1867+ };
18661868
1867- return {cellRefGrid_ptr,
1868- parentBoundaryVertexIdx_to_correctedCellRefGridBoundaryVertexIdx,
1869- correctedCellRefGridBoundaryVertexIdx_to_parentGridFaceIdx,
1870- correctedCellRefGridBoundaryFaceIdx_to_parentGridFaceIdx,
1871- coincideWithParentGridVertex};
1869+ return {cellRefGrid_ptr, cellRefinementBoundaryInfo};
18721870 }
18731871 else {
18741872 // To store the corrected cell-refinement: aware of multiple parent-cell-faces of the same type (same tag and same orientation).
@@ -1895,12 +1893,17 @@ CpGridData::refineSingleCell(const std::array<int,3>& cells_per_dim,
18951893 for (const auto & [parentGridVertexIdx, equivRefVertexIdx] : parentBoundaryVertexIdx_to_correctedCellRefGridBoundaryVertexIdx) {
18961894 coincideWithParentGridVertex[equivRefVertexIdx] = true ;
18971895 }
1896+
1897+
1898+ Opm::Lgr::CellRefinementBoundaryInfo cellRefinementBoundaryInfo{
1899+ .parentVertex_to_boundaryRefinedVertex = parentBoundaryVertexIdx_to_correctedCellRefGridBoundaryVertexIdx,
1900+ .boundaryRefinedVertex_to_parentFace = correctedCellRefGridBoundaryVertexIdx_to_parentGridFaceIdx,
1901+ .boundaryRefinedFace_to_parentFace = correctedCellRefGridBoundaryFaceIdx_to_parentGridFaceIdx,
1902+ .boundaryRefinedVertexCoincidesWithParentVertex = coincideWithParentGridVertex,
1903+ .parentCellhasSingleFacePerType = hasOnlyOneFacePerType
1904+ };
18981905
1899- return {correctedCellRefGrid_ptr,
1900- parentBoundaryVertexIdx_to_correctedCellRefGridBoundaryVertexIdx,
1901- correctedCellRefGridBoundaryVertexIdx_to_parentGridFaceIdx,
1902- correctedCellRefGridBoundaryFaceIdx_to_parentGridFaceIdx,
1903- coincideWithParentGridVertex};
1906+ return {correctedCellRefGrid_ptr, cellRefinementBoundaryInfo};
19041907 }
19051908}
19061909
0 commit comments