@@ -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
0 commit comments