[Dune] ALUGrid: GlobalIdSet crashes for refinement level > 10
Simon Praetorius
simon.praetorius at tu-dresden.de
Mon Jul 29 15:25:31 CEST 2019
An analysis by @felix.mueller revealed that this error is related to an
integer overflow happening in the `createId()` function of
`ALU3dGridGlobalIdSet`. (It is not related to parallelization or
load-balancing, but just to the number of refinement levels.
On 29.07.19 13:24, Simon Praetorius wrote:
> Hi Community,
>
> I'm trying to use ALUGrid in parallel with just 2 ranks (dim=dimworld=2,
> elType=simplex, refType=conforming), create a grid using a
> StructuredGridFactory and making the following three steps:
>
> 1. grid.loadBalance()
> 2. grid.globalRefine(11)
> 3. grid.globalIdSet()
>
> Whenever the global refinement level is > 10, I get an assertion in
> `ALU3dGridGlobalIdSet::buildVertexIds()`:
>
>> Assertion `ids_[codim][vertex.getIndex()].isValid()' failed
> What is the reason for this error? Do I do something wrong in the setup
> of the grid? How to workaround this problem? I need a GlobalIdSet for
> the setup of global communication.
>
> See below a minimal example. Tested with dune-2.6 and dune-git version.
> Compiler gcc 7.3, openMPI 3.1.
>
> Best wishes,
> Simon
>
> Minimal example:
>
> ```
> #include "config.h"
> #include <dune/alugrid/grid.hh>
> #include <dune/common/filledarray.hh>
> #include <dune/common/parallel/mpihelper.hh>
> #include <dune/grid/utility/structuredgridfactory.hh>
>
> int main(int argc, char** argv)
> {
> Dune::MPIHelper::instance(argc, argv);
>
> using Grid = Dune::ALUGrid<2,2,Dune::simplex,Dune::conforming>;
> using Factory = Dune::StructuredGridFactory<Grid>;
> auto grid = Factory::createSimplexGrid({0.0,0.0}, {1.0,1.0},
> Dune::filledArray<2,int>(1));
>
> grid->loadBalance();
> grid->globalRefine(11); // 10: OK, 11: ERROR
> auto const& globalIdSet = grid->globalIdSet();
> }
> ```
>
>
> _______________________________________________
> Dune mailing list
> Dune at lists.dune-project.org
> https://lists.dune-project.org/mailman/listinfo/dune
More information about the Dune
mailing list