21 #ifndef _aspect_particle_manager_h 22 #define _aspect_particle_manager_h 26 #include <deal.II/particles/particle.h> 27 #include <deal.II/particles/particle_accessor.h> 28 #include <deal.II/particles/particle_iterator.h> 29 #include <deal.II/particles/particle_handler.h> 30 #include <deal.II/particles/property_pool.h> 33 #include <deal.II/matrix_free/fe_point_evaluation.h> 44 #include <deal.II/base/timer.h> 45 #include <deal.II/base/array_view.h> 47 #include <boost/serialization/unique_ptr.hpp> 55 struct SimulatorSignals;
59 using namespace ::Particles;
121 get_property_manager() const;
128 const Particles::ParticleHandler<dim> &
129 get_particle_handler() const;
142 Particles::ParticleHandler<dim> &
143 get_particle_handler();
163 void copy_particle_handler (const Particles::ParticleHandler<dim> &from_particle_handler,
164 Particles::ParticleHandler<dim> &to_particle_handler) const;
171 void backup_particles ();
179 void restore_particles ();
185 void setup_initial_state ();
193 get_interpolator() const;
198 void generate_particles();
202 void initialize_particles();
211 void advance_timestep();
224 types::particle_index n_global_particles() const;
244 #if DEAL_II_VERSION_GTE(9,6,0) 246 cell_weight(
const typename parallel::distributed::Triangulation<dim>::cell_iterator &cell,
247 const CellStatus status);
250 cell_weight(
const typename parallel::distributed::Triangulation<dim>::cell_iterator &cell,
251 const typename parallel::distributed::Triangulation<dim>::CellStatus status);
257 void update_particles();
262 template <
class Archive>
263 void serialize (Archive &ar,
const unsigned int version);
270 save (std::ostringstream &os)
const;
277 load (std::istringstream &is);
294 parse_parameters (ParameterHandler &prm,
const unsigned int particle_manager);
302 remove_particles = 0x1,
305 remove_and_add_particles = remove_particles | add_particles
315 point_density_function,
422 std::map<types::subdomain_id, unsigned int>
423 get_subdomain_id_to_neighbor_map()
const;
431 apply_particle_per_cell_bounds();
437 void advect_particles();
443 local_initialize_particles(
const typename ParticleHandler<dim>::particle_iterator &begin_particle,
444 const typename ParticleHandler<dim>::particle_iterator &end_particle);
459 const std::vector<EvaluationFlags::EvaluationFlags> &evaluation_flags,
471 local_advect_particles(
const typename DoFHandler<dim>::active_cell_iterator &cell,
472 const typename ParticleHandler<dim>::particle_iterator &begin_particle,
473 const typename ParticleHandler<dim>::particle_iterator &end_particle,
482 ParticleHandler<dim> &particle_handler,
483 const bool connect_to_checkpoint_signals =
true)
const;
493 std::vector<typename Particles::ParticleHandler<dim>::particle_iterator_range>
494 get_neighboring_particle_ranges(
const typename Triangulation<dim>::active_cell_iterator &cell,
495 const typename Particles::ParticleHandler<dim> &particle_handler,
496 typename GridTools::Cache<dim> &grid_cache);
502 template <
class Archive>
void serialize(Archive &ar, const unsigned int version)
ParticlePDF< dim >::KernelFunction kernel_function
unsigned int max_particles_per_cell
unsigned int min_particles_per_cell
unsigned int particle_weight
std::unique_ptr< Generator::Interface< dim > > generator
std::unique_ptr< Integrator::Interface< dim > > integrator
std::unique_ptr< Particles::ParticleHandler< dim > > particle_handler
Particles::ParticleHandler< dim > particle_handler_backup
std::unique_ptr< Property::Manager< dim > > property_manager
std::unique_ptr< Interpolator::Interface< dim > > interpolator
DeletionAlgorithm deletion_algorithm
void declare_parameters(ParameterHandler &prm)
ParticleLoadBalancing::Kind particle_load_balancing
std::mt19937 random_number_generator
boost::container::small_vector< T, N > small_vector