Automatic block size causes errors for QkDGLocalFiniteElementMap
QkDGLocalFiniteElementMap and lettings PDELab deduct the blocking size, assertions in the vector backend access fail.
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
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
I saved a backtrace of the error: bt-qkdg-blocking.log
Current bug behavior
QkDGLocalFiniteElementMap<DF, RF, order, dim> leads to assertion error
Assertion failed: (i == 0), function access_vector_element
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> >;