Automatic block size causes errors for QkDGLocalFiniteElementMap
When using QkDGLocalFiniteElementMap
and lettings PDELab deduct the blocking size, assertions in the vector backend access fail.
Description
I'm currently updating my code base to PDELab v2.6. Although I have been using fixed
blocking in my vector backend, I did not set block sizes so far, and in versions <= 2.5 this apparently resulted in a block size of 1. With v2.6, PDELab tries to automatically deduce the block size. This results in run time errors for QkDGLocalFiniteElementMap
.
Code snippet of grid function space creation:
static constexpr int order = 1;
static constexpr int dim = GridView::dimension;
using RF = double;
using DF = typename GridView::Grid::ctype;
using ES = Dune::PDELab::OverlappingEntitySet<GridView>;
using CON = Dune::PDELab::P0ParallelConstraints;
using FEM = typename Dune::PDELab::QkDGLocalFiniteElementMap<DF, RF, order, dim>;
using GFS = typename Dune::PDELab::GridFunctionSpace<ES, FEM, CON,
Dune::PDELab::ISTL::VectorBackend<Dune::PDELab::ISTL::Blocking::fixed>
>;
Everything works fine on simplices with a OPBLocalFiniteElementMap
and block size Dune::PB::pk_size(order, dim)
.
Associated logs
I saved a backtrace of the error: bt-qkdg-blocking.log
Current bug behavior
Dune::PDELab::ISTL::VectorBackend<Dune::PDELab::ISTL::Blocking::fixed>
with QkDGLocalFiniteElementMap<DF, RF, order, dim>
leads to assertion error
Assertion failed: (i == 0), function access_vector_element
Expected behavior
Code works fine for automatically deduced block size.
My current workaround
Set block size to 1. No more errors, but no benefit from fixed blocking.
using GFS = typename Dune::PDELab::GridFunctionSpace<ES, FEM, CON,
Dune::PDELab::ISTL::VectorBackend<Dune::PDELab::ISTL::Blocking::fixed, 1>
>;