geodynamics / aspect

A parallel, extensible finite element code to simulate convection in both 2D and 3D models.
https://aspect.geodynamics.org/
Other
227 stars 237 forks source link

particle_interpolator_nearest_neighbor test throws error #2853

Open MFraters opened 5 years ago

MFraters commented 5 years ago

To test #2851 on one of my larger models, I installed the newest deal.ii master on a cluster with candi. I ran into some problems so I ran the tester and I noticed, and I have tracked the/a problem to the following setup:

I installed aspect in a completely new folder, linked with the deal.ii master. Here is some more info:

-----------------------------------------------------------------------------
-- This is ASPECT, the Advanced Solver for Problems in Earth's ConvecTion.
--     . version 2.1.0-pre (master, 10511c8)
--     . using deal.II 9.1.0-pre (master, 3635e11)
--     .       with 32 bit indices and vectorization level 1 (128 bits)
--     . using Trilinos 12.10.1
--     . using p4est 2.0.0
--     . running in DEBUG mode
--     . running with 1 MPI process
-----------------------------------------------------------------------------

The test particle_interpolator_nearest_neighbor produces the following output:

test 415
    Start 415: particle_interpolator_nearest_neighbor

415: Test command: /trinity/shared/apps/tr17.10/x86_64/cmake-3.11.2/bin/cmake "-DBINARY_DIR=/quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/tests" "-DTESTNAME=tests.particle_interpolator_nearest_neighbor" "-DERROR="Test particle_interpolator_nearest_neighbor failed"" "-P" "/quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/tests/run_test.cmake"
415: Test timeout computed to be: 600
415: 
415: --------------------------------------------------------
*** Error in `415: An error occurred in line <72> of file </quanta1/home/fraters/deal.ii/2019-03-14_candi/tmp/unpack/deal.II-master/source/grid/cell_id.cc> in function
415:     dealii::CellId::CellId(const std::array<unsigned int, 4UL> &)
415: The violated condition was: 
415:     n_child_indices < child_indices.size()
415: Additional information: 
415:     This exception -- which is used in many places in the library -- usually indicates that some condition which the author of the code thought must be satisfied at a certain point in an algorithm, is not fulfilled. An example would be that the first part of an algorithm sorts elements of an array in ascending order, and a second part of the algorithm later encounters an element that is not larger than the previous one.
415: 
415: There is usually not very much you can do if you encounter such an exception since it indicates an error in deal.II, not in your own program. Try to come up with the smallest possible program that still demonstrates the error and contact the deal.II mailing lists with it to obtain help.
415: 
415: Stacktrace:
415: -----------
415: #0  /quanta1/home/fraters/deal.ii/2019-03-14_candi/deal.II-master/lib/libdeal_II.g.so.9.1.0-pre: dealii::CellId::CellId(std::array<unsigned int, 4ul> const&)
415: #1  /quanta1/home/fraters/deal.ii/2019-03-14_candi/deal.II-master/lib/libdeal_II.g.so.9.1.0-pre: dealii::Particles::ParticleHandler<2, 2>::send_recv_particles(std::map<unsigned int, std::vector<dealii::Particles::ParticleIterator<2, 2>, std::allocator<dealii::Particles::ParticleIterator<2, 2> > >, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::vector<dealii::Particles::ParticleIterator<2, 2>, std::allocator<dealii::Particles::ParticleIterator<2, 2> > > > > > const&, std::multimap<std::pair<int, int>, dealii::Particles::Particle<2, 2>, std::less<std::pair<int, int> >, std::allocator<std::pair<std::pair<int, int> const, dealii::Particles::Particle<2, 2> > > >&, std::map<unsigned int, std::vector<dealii::TriaActiveIterator<dealii::CellAccessor<2, 2> >, std::allocator<dealii::TriaActiveIterator<dealii::CellAccessor<2, 2> > > >, std::less<unsigned int>, std::allocator<std::pair<unsigned int const, std::vector<dealii::TriaActiveIterator<dealii::CellAccessor<2, 2> >, std::allocator<dealii::TriaActiveIterator<dealii::CellAccessor<2, 2> > > > > > > const&)
415: #2  /quanta1/home/fraters/deal.ii/2019-03-14_candi/deal.II-master/lib/libdeal_II.g.so.9.1.0-pre: dealii::Particles::ParticleHandler<2, 2>::exchange_ghost_particles()
415: #3  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: ) [0x208d47f]
415: #4  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: boost::detail::function::void_function_obj_invoker1<aspect::Particle::World<2>::connect_to_signals(aspect::SimulatorSignals<2>&)::{lambda(dealii::parallel::distributed::Triangulation<2, 2>&)#8}, void, dealii::parallel::distributed::Triangulation<2, 2>&>::invoke(boost::detail::function::function_buffer&, dealii::parallel::distributed::Triangulation<2, 2>&)
415: #5  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: boost::function1<void, dealii::parallel::distributed::Triangulation<2, 2>&>::operator()(dealii::parallel::distributed::Triangulation<2, 2>&) const
415: #6  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: boost::signals2::detail::void_type boost::signals2::detail::call_with_tuple_args<boost::signals2::detail::void_type>::m_invoke<boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)>, 0u, dealii::parallel::distributed::Triangulation<2, 2>&>(boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)>&, boost::signals2::detail::unsigned_meta_array<0u>, std::tuple<dealii::parallel::distributed::Triangulation<2, 2>&> const&, boost::enable_if<boost::is_void<boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)>::result_type>, void>::type*) const
415: #7  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: boost::signals2::detail::void_type boost::signals2::detail::call_with_tuple_args<boost::signals2::detail::void_type>::operator()<boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)>, dealii::parallel::distributed::Triangulation<2, 2>&, 1ul>(boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)>&, std::tuple<dealii::parallel::distributed::Triangulation<2, 2>&> const&, boost::mpl::size_t<1ul>) const
415: #8  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: boost::signals2::detail::void_type boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, dealii::parallel::distributed::Triangulation<2, 2>&>::operator()<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >(boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > const&) const
415: #9  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, dealii::parallel::distributed::Triangulation<2, 2>&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> >::dereference() const
415: #10  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, dealii::parallel::distributed::Triangulation<2, 2>&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> >::reference boost::iterators::iterator_core_access::dereference<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, dealii::parallel::distributed::Triangulation<2, 2>&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >(boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, dealii::parallel::distributed::Triangulation<2, 2>&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > const&)
415: #11  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: boost::iterators::detail::iterator_facade_base<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, dealii::parallel::distributed::Triangulation<2, 2>&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> >, boost::signals2::detail::void_type, boost::iterators::single_pass_traversal_tag, boost::signals2::detail::void_type&, long, false, false>::operator*() const
415: #12  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: void boost::signals2::optional_last_value<void>::operator()<boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, dealii::parallel::distributed::Triangulation<2, 2>&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >(boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, dealii::parallel::distributed::Triangulation<2, 2>&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> >, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, dealii::parallel::distributed::Triangulation<2, 2>&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> >) const
415: #13  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: void boost::signals2::detail::combiner_invoker<void>::operator()<boost::signals2::optional_last_value<void>, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, dealii::parallel::distributed::Triangulation<2, 2>&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >(boost::signals2::optional_last_value<void>&, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, dealii::parallel::distributed::Triangulation<2, 2>&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> >, boost::signals2::detail::slot_call_iterator_t<boost::signals2::detail::variadic_slot_invoker<boost::signals2::detail::void_type, dealii::parallel::distributed::Triangulation<2, 2>&>, std::_List_iterator<boost::shared_ptr<boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> > >, boost::signals2::detail::connection_body<std::pair<boost::signals2::detail::slot_meta_group, boost::optional<int> >, boost::signals2::slot<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)> >, boost::signals2::mutex> >) const
415: #14  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: boost::signals2::detail::signal_impl<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)>, boost::function<void (boost::signals2::connection const&, dealii::parallel::distributed::Triangulation<2, 2>&)>, boost::signals2::mutex>::operator()(dealii::parallel::distributed::Triangulation<2, 2>&)
415: #15  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: boost::signals2::signal<void (dealii::parallel::distributed::Triangulation<2, 2>&), boost::signals2::optional_last_value<void>, int, std::less<int>, boost::function<void (dealii::parallel::distributed::Triangulation<2, 2>&)>, boost::function<void (boost::signals2::connection const&, dealii::parallel::distributed::Triangulation<2, 2>&)>, boost::signals2::mutex>::operator()(dealii::parallel::distributed::Triangulation<2, 2>&)
415: #16  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: aspect::Simulator<2>::refine_mesh(unsigned int)
415: #17  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: aspect::Simulator<2>::maybe_do_initial_refinement(unsigned int)
415: #18  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: aspect::Simulator<2>::run()
415: #19  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: void run_simulator<2>(std::string const&, std::string const&, bool, bool, bool)
415: #20  /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/build/aspect: main
415: --------------------------------------------------------
415: 
415: Calling MPI_Abort now.
415: To break execution in a GDB session, execute 'break MPI_Abort' before running. You can also put the following into your ~/.gdbinit:
415:   set breakpoint pending on
415:   break MPI_Abort
415:   set breakpoint pending auto
415: application called MPI_Abort(MPI_COMM_WORLD, 255) - process 1
415: gmake[3]: *** [output-particle_interpolator_nearest_neighbor/screen-output] Error 255
415: gmake[2]: *** [CMakeFiles/particle_interpolator_nearest_neighbor.statistics.diff.dir/all] Error 2
415: gmake[1]: *** [CMakeFiles/tests.particle_interpolator_nearest_neighbor.dir/rule] Error 2
415: gmake: *** [tests.particle_interpolator_nearest_neighbor] Error 2
415: *** "Test particle_interpolator_nearest_neighbor failed": ***
415: Scanning dependencies of target particle_interpolator_nearest_neighbor.statistics.diff
415: Generating particle_interpolator_nearest_neighbor.x.prm
415: Generating output-particle_interpolator_nearest_neighbor/screen-output
415: 
415: CMake Error at /quanta1/home/fraters/aspect/2019-03-18_aspect/aspect/tests/run_test.cmake:14 (MESSAGE):
415:   *** Test aborted.
415: 
415: 
1/1 Test #415: particle_interpolator_nearest_neighbor ...***Failed    5.56 sec
gassmoeller commented 5 years ago

I failed to reproduce your bug with the same ASPECT version and a slightly older deal.II version. At least deal.II version 4148a002ed seems to be running the test without problems. I also did not see any relevant changes to the deal.II files between these versions. Can you give my deal.II version a try and see if the bug is still there?