Skip to content

Commit c06b45b

Browse files
committed
Attempt to fix lgr failing tests
1 parent 3cb34ed commit c06b45b

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
@@ -3876,7 +3876,8 @@ void CpGrid::populateRefinedCells(std::vector<Dune::cpgrid::EntityVariableBase<c
38763876
const int& preAdaptMaxLevel,
38773877
const std::map<std::array<int,2>,int>& markedElemAndEquivRefinedCorn_to_corner,
38783878
const std::vector<std::vector<std::array<int,2>>>& cornerInMarkedElemWithEquivRefinedCorner,
3879-
const std::vector<std::array<int,3>>& cells_per_dim_vec) const
3879+
const std::vector<std::array<int,3>>& cells_per_dim_vec,
3880+
const std::vector<Dune::cpgrid::EntityVariableBase<cpgrid::Geometry<0,3>>>& refined_corners_vec) const
38803881
{
38813882
// --- Refined cells ---
38823883
for (std::size_t shiftedLevel = 0; shiftedLevel < refined_cell_count_vec.size(); ++shiftedLevel) {
@@ -3885,7 +3886,9 @@ void CpGrid::populateRefinedCells(std::vector<Dune::cpgrid::EntityVariableBase<c
38853886
refined_cell_to_point_vec[shiftedLevel].resize(refined_cell_count_vec[shiftedLevel]);
38863887
refined_global_cell_vec[shiftedLevel].resize(refined_cell_count_vec[shiftedLevel]);
38873888

3888-
const auto& allLevelCorners = refined_geometries_vec[shiftedLevel].geomVector(std::integral_constant<int,3>());
3889+
auto copyCorners = refined_corners_vec[shiftedLevel];
3890+
auto allLevelCorners = *refined_geometries_vec[shiftedLevel].geomVector(std::integral_constant<int,3>());
3891+
allLevelCorners.swap(copyCorners);
38893892

38903893
for (int cell = 0; cell < refined_cell_count_vec[shiftedLevel]; ++cell) {
38913894

@@ -3972,7 +3975,7 @@ void CpGrid::populateRefinedCells(std::vector<Dune::cpgrid::EntityVariableBase<c
39723975

39733976
// 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).
39743977
int* indices_storage_ptr = refined_cell_to_point_vec[shiftedLevel][cell].data();
3975-
refined_cells_vec[shiftedLevel][cell] = cpgrid::Geometry<3,3>(elemLgrGeom.center(), elemLgrGeom.volume(), allLevelCorners.get(), indices_storage_ptr);
3978+
refined_cells_vec[shiftedLevel][cell] = cpgrid::Geometry<3,3>(elemLgrGeom.center(), elemLgrGeom.volume(), &allLevelCorners, indices_storage_ptr);
39763979
} // refined_cells
39773980
// Refined face to cell.
39783981
refined_cell_to_face_vec[shiftedLevel].makeInverseRelation(refined_face_to_cell_vec[shiftedLevel]);
@@ -4048,7 +4051,8 @@ void CpGrid::setRefinedLevelGridsGeometries( /* Refined corner arguments */
40484051
preAdaptMaxLevel,
40494052
markedElemAndEquivRefinedCorn_to_corner,
40504053
cornerInMarkedElemWithEquivRefinedCorner,
4051-
cells_per_dim_vec);
4054+
cells_per_dim_vec,
4055+
refined_corners_vec);
40524056

40534057
}
40544058

opm/grid/cpgrid/Entity.hpp

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

0 commit comments

Comments
 (0)