dealii / dealii

The development repository for the deal.II finite element library
https://www.dealii.org
Other
1.39k stars 750 forks source link

particles/particle_handler_06 fails with an error #10351

Closed bangerth closed 3 months ago

bangerth commented 4 years ago

My patch #10320 also broke another test, particles/particle_handler_06:

9638: An error occurred in line <359> of file </raid/bangerth/p/deal.II/1/dealii/source/particles/particle_handler.cc> in function
9638:     dealii::Particles::ParticleHandler<<anonymous>, <anonymous> >::particle_iterator_range dealii::Particles::ParticleHandler<<anonymous>, <anonymous> >::particles_in_cell(const typename dealii::Triangulation<dim, spacedim>::active_cell_iterator&) [with int dim = 2; int spacedim = 2; dealii::Particles::ParticleHandler<<anonymous>, <anonymous> >::particle_iterator_range = boost::iterator_range<dealii::Particles::ParticleIterator<2, 2> >; typename dealii::Triangulation<dim, spacedim>::active_cell_iterator = dealii::TriaActiveIterator<dealii::CellAccessor<2, 2> >]
9638: The violated condition was: 
9638:     false
9638: Additional information: 
9638:     You can't ask for the particles on an artificial cell since we don't know what exists on these kinds of cells.

That's because before, if ParticleHandler::particles_on_cell() was called on an artificial cell, it simply returned zero, whereas now it throws an error. That makes sense because we just don't know anything about artificial cells. We shouldn't be calling this function on these cells, but the testcase apparently does.

@gassmoeller FYI

bangerth commented 4 years ago

Awkwardly, this happens not from user code, but from exchange_ghost_particles(). That will require a bit more debugging than I can do on a Sunday afternoon.

gassmoeller commented 3 months ago

This was fixed (either in #12412 or before).