const dealii::Triangulation<dim> &triangulation,
const unsigned int mg_level,
const bool hold_all_faces_to_owned_cells,
+ const bool build_inner_faces,
std::vector<std::pair<unsigned int, unsigned int>> &cell_levels);
/**
const dealii::Triangulation<dim> &triangulation,
const unsigned int mg_level,
const bool hold_all_faces_to_owned_cells,
+ const bool build_inner_faces,
std::vector<std::pair<unsigned int, unsigned int>> &cell_levels)
{
use_active_cells = mg_level == numbers::invalid_unsigned_int;
if (dcell->at_boundary(f) && !dcell->has_periodic_neighbor(f))
face_is_owned[dcell->face(f)->index()] =
FaceCategory::locally_active_at_boundary;
+ else if (!build_inner_faces)
+ continue;
// treat boundaries of cells of different refinement level
// inside the domain in case of multigrid separately
const std::vector<unsigned int> &cell_vectorization_category,
const bool cell_vectorization_categories_strict,
const bool do_face_integrals,
+ const bool build_inner_faces,
const bool overlap_communication_computation,
MatrixFreeFunctions::TaskInfo & task_info,
std::vector<std::pair<unsigned int, unsigned int>> &cell_level_index,
face_setup.initialize(dof_handler[0]->get_triangulation(),
mg_level,
hold_all_faces_to_owned_cells,
+ build_inner_faces,
cell_level_index);
const unsigned int n_dof_handlers = dof_handler.size();
additional_data.cell_vectorization_category,
additional_data.cell_vectorization_categories_strict,
do_face_integrals,
+ additional_data.mapping_update_flags_inner_faces != update_default,
additional_data.overlap_communication_computation,
task_info,
cell_level_index,