Matrix-free DG with adaptive refinements

62 views
Skip to first unread message

Michał Wichrowski

unread,
Oct 12, 2019, 11:29:54 AM10/12/19
to deal.II User Group
Dear all,
I modified step-59 function run() so that in only makes grid and does local refinement and initializes MatrixFree object.  This triggers an assertion when calling
        mg_mf_storage_level->reinit(dof_handler,
                                    dummy,
                                    QGauss<1>(fe.degree + 1),
                                    additional_data);
in system_setup().

Function run():
            Point<dim> upper_right;
            upper_right[0] = 2.5;
            for (unsigned int d = 1; d < dim; ++d)
              upper_right[d] = 2.8;
            GridGenerator::hyper_rectangle(triangulation,
                                           Point<dim>(),
                                           upper_right);
            triangulation.begin_active()->face(0)->set_boundary_id(10);
            triangulation.begin_active()->face(1)->set_boundary_id(11);
            triangulation.begin_active()->face(2)->set_boundary_id(0);
            for (unsigned int f = 3; f < GeometryInfo<dim>::faces_per_cell; ++f)
              triangulation.begin_active()->face(f)->set_boundary_id(1);

            std::vector<GridTools::PeriodicFacePair<
              typename Triangulation<dim>::cell_iterator>>
              periodic_faces;
            GridTools::collect_periodic_faces(
              triangulation, 10, 11, 0, periodic_faces);
            triangulation.add_periodicity(periodic_faces);

            triangulation.refine_global(1);

            Vector<float> estimated_error_per_cell(triangulation.n_active_cells());
            for (unsigned int i = 0; i < estimated_error_per_cell.size(); ++i)
              estimated_error_per_cell[i] = std::sin(i) * std::sin(i);

            parallel::distributed::GridRefinement::refine_and_coarsen_fixed_number(
                triangulation, estimated_error_per_cell, 0.3, 0.0);
            triangulation.execute_coarsening_and_refinement();
          
        setup_system();
  

Error message:

--------------------------------------------------------
An error occurred in line <4993> of file </home/mwichro/lib/dealii/source/fe/fe_values.cc> in function
    void dealii::FESubfaceValues<dim, spacedim>::reinit(const typename dealii::Triangulation<dim, spacedim>::cell_iterator&, unsigned int, unsigned int) [with int dim = 3; int spacedim = 3; typename dealii::Triangulation<dim, spacedim>::cell_iterator = dealii::TriaIterator<dealii::CellAccessor<3, 3> >]
The violated condition was: 
    subface_no < cell->face(face_no)->n_children()
Additional information: 
    Index 0 is not in the half-open range [0,0). In the current case, this half-open range is in fact empty, suggesting that you are accessing an element of an empty collection such as a vector that has not been set to the correct size.

Stacktrace:
-----------

I have no idea what may be causing this. 

Martin Kronbichler

unread,
Oct 14, 2019, 3:29:57 PM10/14/19
to dea...@googlegroups.com

Dear Michal,

Thanks for reporting this problem - this is indeed a bug. It seems we did not think carefully about the case with periodic boundary conditions and hanging nodes. I have opened an issue at deal.II so we can try to fix it soon: https://github.com/dealii/dealii/issues/8905

Best,
Martin

--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to dealii+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/69586e52-7e99-41e4-a7f1-930cffd6c046%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages