Based on the stacktrace the problematic access happens within mg_cell_worker(): Stacktrace: ----------- #0 /opt/dealii/lib/libdeal_II.g.so.9.2.0-pre: void dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true>::get_dof_values<dealii::TrilinosWrappers::MPI::Vector, double*>(dealii::TrilinosWrappers::MPI::Vector const&, double*, double*) const #1 /opt/dealii/lib/libdeal_II.g.so.9.2.0-pre: void dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true>::get_dof_values<dealii::TrilinosWrappers::MPI::Vector, double>(dealii::TrilinosWrappers::MPI::Vector const&, dealii::Vector<double>&) const #2 /opt/dealii/lib/libdeal_II.g.so.9.2.0-pre: void dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true>::get_interpolated_dof_values<dealii::TrilinosWrappers::MPI::Vector, double>(dealii::TrilinosWrappers::MPI::Vector const&, dealii::Vector<double>&, unsigned int) const #3 /opt/dealii/lib/libdeal_II.g.so.9.2.0-pre: void dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true>::get_interpolated_dof_values<dealii::TrilinosWrappers::MPI::Vector, double>(dealii::TrilinosWrappers::MPI::Vector const&, dealii::Vector<double>&, unsigned int) const #4 /opt/dealii/lib/libdeal_II.g.so.9.2.0-pre: void dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true>::get_interpolated_dof_values<dealii::TrilinosWrappers::MPI::Vector, double>(dealii::TrilinosWrappers::MPI::Vector const&, dealii::Vector<double>&, unsigned int) const #5 /opt/dealii/lib/libdeal_II.g.so.9.2.0-pre: dealii::FEValuesBase<2, 2>::CellIterator<dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > >::get_interpolated_dof_values(dealii::TrilinosWrappers::MPI::Vector const&, dealii::Vector<double>&) const #6 /opt/dealii/lib/libdeal_II.g.so.9.2.0-pre: void dealii::FEValuesBase<2, 2>::get_function_gradients<dealii::TrilinosWrappers::MPI::Vector>(dealii::TrilinosWrappers::MPI::Vector const&, std::vector<dealii::Tensor<1, 2, dealii::TrilinosWrappers::MPI::Vector::value_type>, std::allocator<dealii::Tensor<1, 2, dealii::TrilinosWrappers::MPI::Vector::value_type> > >&) const #7 ./MG_test: void Step15::MinimalSurfaceProblem<2>::mg_cell_worker<dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > >(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&) #8 ./MG_test: Step15::MinimalSurfaceProblem<2>::assemble_multigrid()::{lambda(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&)#1}::operator()(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&) const #9 ./MG_test: std::_Function_handler<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&), Step15::MinimalSurfaceProblem<2>::assemble_multigrid()::{lambda(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&)#1}>::_M_invoke(std::_Any_data const&, dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&) #10 ./MG_test: std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&)>::operator()(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&) const #11 ./MG_test: dealii::MeshWorker::mesh_loop<dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> >, Step15::ScratchData<2>, Step15::CopyData, dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > >(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, dealii::identity<dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > >::type const&, dealii::identity<std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&)> >::type const&, dealii::identity<std::function<void (Step15::CopyData const&)> >::type const&, Step15::ScratchData<2> const&, Step15::CopyData const&, dealii::MeshWorker::AssembleFlags, dealii::identity<std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, unsigned int, Step15::ScratchData<2>&, Step15::CopyData&)> >::type const&, dealii::identity<std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, unsigned int, unsigned int, dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, unsigned int, unsigned int, Step15::ScratchData<2>&, Step15::CopyData&)> >::type const&, unsigned int, unsigned int)::{lambda(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&)#1}::operator()(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&) const #12 ./MG_test: void dealii::WorkStream::run<dealii::MeshWorker::mesh_loop<dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> >, Step15::ScratchData<2>, Step15::CopyData, dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > >(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, dealii::identity<dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > >::type const&, dealii::identity<std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&)> >::type const&, dealii::identity<std::function<void (Step15::CopyData const&)> >::type const&, Step15::ScratchData<2> const&, Step15::CopyData const&, dealii::MeshWorker::AssembleFlags, dealii::identity<std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, unsigned int, Step15::ScratchData<2>&, Step15::CopyData&)> >::type const&, dealii::identity<std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, unsigned int, unsigned int, dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, unsigned int, unsigned int, Step15::ScratchData<2>&, Step15::CopyData&)> >::type const&, unsigned int, unsigned int)::{lambda(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&)#1}, std::function<void (Step15::CopyData const&)>, dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> >, Step15::ScratchData<2>, Step15::CopyData>(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, dealii::identity<dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > >::type const&, dealii::MeshWorker::mesh_loop<dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> >, Step15::ScratchData<2>, Step15::CopyData, dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > >(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, dealii::identity<dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > >::type const&, dealii::identity<std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&)> >::type const&, dealii::identity<std::function<void (Step15::CopyData const&)> >::type const&, Step15::ScratchData<2> const&, Step15::CopyData const&, dealii::MeshWorker::AssembleFlags, dealii::identity<std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, unsigned int, Step15::ScratchData<2>&, Step15::CopyData&)> >::type const&, dealii::identity<std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, unsigned int, unsigned int, dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, unsigned int, unsigned int, Step15::ScratchData<2>&, Step15::CopyData&)> >::type const&, unsigned int, unsigned int)::{lambda(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&)#1}, std::function<void (Step15::CopyData const&)>, Step15::ScratchData<2> const&, Step15::CopyData const&, unsigned int, unsigned int) #13 ./MG_test: void dealii::MeshWorker::mesh_loop<dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> >, Step15::ScratchData<2>, Step15::CopyData, dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > >(dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, dealii::identity<dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > >::type const&, dealii::identity<std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, Step15::ScratchData<2>&, Step15::CopyData&)> >::type const&, dealii::identity<std::function<void (Step15::CopyData const&)> >::type const&, Step15::ScratchData<2> const&, Step15::CopyData const&, dealii::MeshWorker::AssembleFlags, dealii::identity<std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, unsigned int, Step15::ScratchData<2>&, Step15::CopyData&)> >::type const&, dealii::identity<std::function<void (dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, unsigned int, unsigned int, dealii::TriaIterator<dealii::DoFCellAccessor<dealii::DoFHandler<2, 2>, true> > const&, unsigned int, unsigned int, Step15::ScratchData<2>&, Step15::CopyData&)> >::type const&, unsigned int, unsigned int) #14 ./MG_test: Step15::MinimalSurfaceProblem<2>::assemble_multigrid() #15 ./MG_test: Step15::MinimalSurfaceProblem<2>::run() #16 ./MG_test: main
which is guarded by the if-condition. Am Freitag, 19. Juli 2019 17:26:00 UTC+2 schrieb Wolfgang Bangerth: > > On 7/19/19 9:15 AM, 'Maxi Miller' via deal.II User Group wrote: > > I am trying to port example 15 to a MPI-supported version, using the > geometric > > multigrid method as preconditioner (to get more familiar with the > > implementation). I followed example 50 while doing that, but currently I > get > > the error > > An error occurred in line <3866> of file > > > <~/Downloads/git-files/dealii/include/deal.II/dofs/dof_accessor.templates.h> > > > in function > > void dealii::DoFCellAccessor<DoFHandlerType, > lda>::get_dof_values(const > > InputVector&, ForwardIterator, ForwardIterator) const [with InputVector > = > > dealii::TrilinosWrappers::MPI::Vector; ForwardIterator = double*; > > DoFHandlerType = dealii::DoFHandler<2, 2>; bool level_dof_access = true] > > The violated condition was: > > this->is_artificial() == false > > Additional information: > > Can't ask for DoF indices on artificial cells. > > as soon as I try to run my program using several MPI threads. I tried to > guard > > that part using if (cell->level_subdomain_id() == > > triangulation.locally_owned_subdomain()) as suggested in step-50, but > that did > > not help. Why am I still trying to request data from artificial cells, > even > > though I guarded that code part (at least I assume it guards it > accordingly). > > Are you sure you guarded the right place? Have you checked with a debugger > where the problem actually happens? > > Best > WB > > -- > ------------------------------------------------------------------------ > Wolfgang Bangerth email: bang...@colostate.edu > <javascript:> > www: http://www.math.colostate.edu/~bangerth/ > > -- 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+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/7ec5fd7e-5788-4627-b5b2-4a7bca380981%40googlegroups.com.