Skip to content

Commit

Permalink
Merge pull request #13053 from peterrum/reinit_geometric_transfer_dg_cg
Browse files Browse the repository at this point in the history
Fix MGTwoLevelTransfer::reinit_geometric_transfer for DG <-> CG
  • Loading branch information
peterrum committed Dec 9, 2021
2 parents c1d536f + ef4840d commit a63c559
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1321,22 +1321,27 @@ namespace internal
transfer.schemes[0].n_dofs_per_cell_coarse);

// ---------------------- lexicographic_numbering ----------------------
std::vector<unsigned int> lexicographic_numbering;
std::vector<unsigned int> lexicographic_numbering_fine;
std::vector<unsigned int> lexicographic_numbering_coarse;
if (reference_cell == ReferenceCells::get_hypercube<dim>())
{
const Quadrature<1> dummy_quadrature(
std::vector<Point<1>>(1, Point<1>()));
internal::MatrixFreeFunctions::ShapeInfo<Number> shape_info;
shape_info.reinit(dummy_quadrature, fe_fine, 0);
lexicographic_numbering = shape_info.lexicographic_numbering;
lexicographic_numbering_fine = shape_info.lexicographic_numbering;
shape_info.reinit(dummy_quadrature, fe_coarse, 0);
lexicographic_numbering_coarse = shape_info.lexicographic_numbering;
}
else
{
const auto dummy_quadrature =
reference_cell.template get_gauss_type_quadrature<dim>(1);
internal::MatrixFreeFunctions::ShapeInfo<Number> shape_info;
shape_info.reinit(dummy_quadrature, fe_fine, 0);
lexicographic_numbering = shape_info.lexicographic_numbering;
lexicographic_numbering_fine = shape_info.lexicographic_numbering;
shape_info.reinit(dummy_quadrature, fe_coarse, 0);
lexicographic_numbering_coarse = shape_info.lexicographic_numbering;
}

// ------------------------------ indices ------------------------------
Expand Down Expand Up @@ -1367,7 +1372,7 @@ namespace internal
i++)
level_dof_indices_coarse_0[i] =
transfer.partitioner_coarse->global_to_local(
local_dof_indices[lexicographic_numbering[i]]);
local_dof_indices[lexicographic_numbering_coarse[i]]);
}

// child
Expand All @@ -1378,7 +1383,7 @@ namespace internal
i++)
level_dof_indices_fine_0[i] =
transfer.partitioner_fine->global_to_local(
local_dof_indices[lexicographic_numbering[i]]);
local_dof_indices[lexicographic_numbering_fine[i]]);
}

// move pointers
Expand All @@ -1403,7 +1408,7 @@ namespace internal
i++)
level_dof_indices_coarse_1[i] =
transfer.partitioner_coarse->global_to_local(
local_dof_indices[lexicographic_numbering[i]]);
local_dof_indices[lexicographic_numbering_coarse[i]]);
}

// child
Expand All @@ -1414,7 +1419,7 @@ namespace internal
i++)
level_dof_indices_fine_1[cell_local_chilren_indices[c][i]] =
transfer.partitioner_fine->global_to_local(
local_dof_indices[lexicographic_numbering[i]]);
local_dof_indices[lexicographic_numbering_fine[i]]);
}

// move pointers (only once at the end)
Expand Down

0 comments on commit a63c559

Please sign in to comment.