Skip to content

Commit 9799277

Browse files
aritortoSoilRos
authored andcommitted
Fix LGR failing tests
1 parent eebb24c commit 9799277

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

opm/grid/CpGrid.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -814,7 +814,8 @@ namespace Dune
814814
const int& preAdaptMaxLevel,
815815
const std::map<std::array<int,2>,int>& markedElemAndEquivRefinedCorn_to_corner,
816816
const std::vector<std::vector<std::array<int,2>>>& cornerInMarkedElemWithEquivRefinedCorner,
817-
const std::vector<std::array<int,3>>& cells_per_dim_vec) const;
817+
const std::vector<std::array<int,3>>& cells_per_dim_vec,
818+
const std::vector<Dune::cpgrid::EntityVariableBase<cpgrid::Geometry<0,3>>>& refined_corners_vec) const;
818819

819820
/// @brief Set geometrical and topological attributes for each refined level grid.
820821
void setRefinedLevelGridsGeometries( /* Refined corner arguments */

opm/grid/cpgrid/CpGrid.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3870,7 +3870,8 @@ void CpGrid::populateRefinedCells(std::vector<Dune::cpgrid::EntityVariableBase<c
38703870
const int& preAdaptMaxLevel,
38713871
const std::map<std::array<int,2>,int>& markedElemAndEquivRefinedCorn_to_corner,
38723872
const std::vector<std::vector<std::array<int,2>>>& cornerInMarkedElemWithEquivRefinedCorner,
3873-
const std::vector<std::array<int,3>>& cells_per_dim_vec) const
3873+
const std::vector<std::array<int,3>>& cells_per_dim_vec,
3874+
const std::vector<Dune::cpgrid::EntityVariableBase<cpgrid::Geometry<0,3>>>& refined_corners_vec) const
38743875
{
38753876
// --- Refined cells ---
38763877
for (std::size_t shiftedLevel = 0; shiftedLevel < refined_cell_count_vec.size(); ++shiftedLevel) {
@@ -3879,7 +3880,9 @@ void CpGrid::populateRefinedCells(std::vector<Dune::cpgrid::EntityVariableBase<c
38793880
refined_cell_to_point_vec[shiftedLevel].resize(refined_cell_count_vec[shiftedLevel]);
38803881
refined_global_cell_vec[shiftedLevel].resize(refined_cell_count_vec[shiftedLevel]);
38813882

3882-
const auto& allLevelCorners = refined_geometries_vec[shiftedLevel].geomVector(std::integral_constant<int,3>());
3883+
auto copyCorners = refined_corners_vec[shiftedLevel];
3884+
auto allLevelCorners = *refined_geometries_vec[shiftedLevel].geomVector(std::integral_constant<int,3>());
3885+
allLevelCorners.swap(copyCorners);
38833886

38843887
for (int cell = 0; cell < refined_cell_count_vec[shiftedLevel]; ++cell) {
38853888

@@ -3966,7 +3969,7 @@ void CpGrid::populateRefinedCells(std::vector<Dune::cpgrid::EntityVariableBase<c
39663969

39673970
// Create a pointer to the first element of "refined_cell_to_point" (required as the fourth argement to construct a Geometry<3,3> type object).
39683971
int* indices_storage_ptr = refined_cell_to_point_vec[shiftedLevel][cell].data();
3969-
refined_cells_vec[shiftedLevel][cell] = cpgrid::Geometry<3,3>(elemLgrGeom.center(), elemLgrGeom.volume(), allLevelCorners.get(), indices_storage_ptr);
3972+
refined_cells_vec[shiftedLevel][cell] = cpgrid::Geometry<3,3>(elemLgrGeom.center(), elemLgrGeom.volume(), &allLevelCorners, indices_storage_ptr);
39703973
} // refined_cells
39713974
// Refined face to cell.
39723975
refined_cell_to_face_vec[shiftedLevel].makeInverseRelation(refined_face_to_cell_vec[shiftedLevel]);
@@ -4042,7 +4045,8 @@ void CpGrid::setRefinedLevelGridsGeometries( /* Refined corner arguments */
40424045
preAdaptMaxLevel,
40434046
markedElemAndEquivRefinedCorn_to_corner,
40444047
cornerInMarkedElemWithEquivRefinedCorner,
4045-
cells_per_dim_vec);
4048+
cells_per_dim_vec,
4049+
refined_corners_vec);
40464050

40474051
}
40484052

opm/grid/cpgrid/Entity.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,6 @@ Dune::cpgrid::Geometry<3,3> Dune::cpgrid::Entity<codim>::geometryInFather() cons
543543
// Compute the volume of the 'local-entity'.
544544
double volume_in_father_reference_elem = double(1)/(cells_per_dim[0]*cells_per_dim[1]*cells_per_dim[2]);
545545
// Construct (and return) the Geometry<3,3> of 'child-cell in the reference element of its father (unit cube)'.
546-
OPM_THROW(std::logic_error, "Entity has no father.");
547546
return Dune::cpgrid::Geometry<3,3>(center_in_father_reference_elem, volume_in_father_reference_elem,
548547
in_father_reference_elem_corners);
549548
}

0 commit comments

Comments
 (0)