21 #ifndef _aspect_particle_property_interface_h
22 #define _aspect_particle_property_interface_h
65 std::vector<small_vector<Tensor<1,dim>,50>>
gradients;
206 std::vector<std::string>
362 std::vector<double> &particle_properties)
const;
527 std::vector<std::pair<std::string, unsigned int>>
573 std::vector<double> &particle_properties)
const override;
582 std::vector<std::pair<std::string, unsigned int>>
634 const ParticleHandler<dim> &particle_handler,
681 std::vector<UpdateFlags>
722 template <
typename ParticlePropertyType,
723 typename =
typename std::enable_if_t<std::is_base_of<Interface<dim>,ParticlePropertyType>::value>>
744 template <
typename ParticlePropertyType,
745 typename =
typename std::enable_if_t<std::is_base_of<Interface<dim>,ParticlePropertyType>::value>>
747 const ParticlePropertyType &
801 const std::string &description,
856 template <
typename ParticlePropertyType,
typename>
861 return this->
template has_matching_active_plugin<ParticlePropertyType>();
866 template <
typename ParticlePropertyType,
typename>
868 const ParticlePropertyType &
871 return this->
template get_matching_active_plugin<ParticlePropertyType>();
881 #define ASPECT_REGISTER_PARTICLE_PROPERTY(classname,name,description) \
882 template class classname<2>; \
883 template class classname<3>; \
884 namespace ASPECT_REGISTER_PARTICLE_PROPERTY_ ## classname \
886 aspect::internal::Plugins::RegisterHelper<aspect::Particle::Property::Interface<2>,classname<2>> \
887 dummy_ ## classname ## _2d (&aspect::Particle::Property::Manager<2>::register_particle_property, \
888 name, description); \
889 aspect::internal::Plugins::RegisterHelper<aspect::Particle::Property::Interface<3>,classname<3>> \
890 dummy_ ## classname ## _3d (&aspect::Particle::Property::Manager<3>::register_particle_property, \
891 name, description); \
boost::iterator_range< particle_iterator > particle_iterator_range
ParticleIterator< dim, spacedim > particle_iterator
void parse_parameters(ParameterHandler &prm) override
void initialize_one_particle_property(const Point< dim > &position, std::vector< double > &particle_properties) const override
std::vector< std::pair< std::string, unsigned int > > get_property_information() const override
unsigned int n_integrator_properties
virtual void initialize_one_particle_property(const Point< dim > &position, std::vector< double > &particle_properties) const
unsigned int data_position
virtual DEAL_II_DEPRECATED void update_particle_property(const unsigned int data_position, const Vector< double > &solution, const std::vector< Tensor< 1, dim >> &gradients, typename ParticleHandler< dim >::particle_iterator &particle) const
virtual unsigned int get_data_position() const
virtual void update_particle_properties(const ParticleUpdateInputs< dim > &inputs, typename ParticleHandler< dim >::particle_iterator_range &particles) const
virtual InitializationModeForLateParticles late_initialization_mode() const
virtual void set_data_position(const unsigned int data_position)
virtual AdvectionField advection_field_for_boundary_initialization(const unsigned int property_component) const
virtual UpdateFlags get_update_flags(const unsigned int component) const
virtual std::vector< std::pair< std::string, unsigned int > > get_property_information() const =0
virtual UpdateTimeFlags need_update() const
virtual DEAL_II_DEPRECATED UpdateFlags get_needed_update_flags() const
void set_particle_manager_index(unsigned int particle_manager_index)
Set the particle manager index for all particle properties.
std::size_t get_particle_size() const
const ParticlePropertyInformation & get_data_info() const
std::vector< double > initialize_late_particle(const Point< dim > &particle_location, const ParticleHandler< dim > &particle_handler, const Interpolator::Interface< dim > &interpolator, const typename parallel::distributed::Triangulation< dim >::active_cell_iterator &cell=typename parallel::distributed::Triangulation< dim >::active_cell_iterator()) const
unsigned int get_n_property_components() const
void parse_parameters(ParameterHandler &prm) override
unsigned int get_plugin_index_by_name(const std::string &name) const
DEAL_II_DEPRECATED bool has_matching_property() const
void update_particles(ParticleUpdateInputs< dim > &inputs, typename ParticleHandler< dim >::particle_iterator_range &particles) const
DEAL_II_DEPRECATED const ParticlePropertyType & get_matching_property() const
static void write_plugin_graph(std::ostream &output_stream)
static void declare_parameters(ParameterHandler &prm)
unsigned int particle_manager_index
bool plugin_name_exists(const std::string &name) const
UpdateTimeFlags need_update() const
ParticlePropertyInformation property_information
static void register_particle_property(const std::string &name, const std::string &description, void(*declare_parameters_function)(ParameterHandler &), std::unique_ptr< Property::Interface< dim >>(*factory_function)())
std::vector< UpdateFlags > get_update_flags() const
void initialize() override
void initialize_one_particle(typename ParticleHandler< dim >::particle_iterator &particle) const
bool check_plugin_order(const std::string &first, const std::string &second) const
unsigned int n_plugins() const
unsigned int get_components_by_field_name(const std::string &name) const
unsigned int n_fields() const
unsigned int get_position_by_field_index(const unsigned int field_index) const
unsigned int get_position_by_plugin_index(const unsigned int plugin_index) const
unsigned int number_of_plugins
unsigned int n_components() const
std::vector< std::string > field_names
unsigned int get_position_by_field_name(const std::string &name) const
unsigned int get_field_index_by_name(const std::string &name) const
std::vector< unsigned int > components_per_field
unsigned int get_fields_by_plugin_index(const unsigned int plugin_index) const
std::vector< std::string > get_property_names() const
std::vector< unsigned int > position_per_plugin
std::vector< unsigned int > components_per_plugin
ParticlePropertyInformation(const std::vector< std::vector< std::pair< std::string, unsigned int >>> &property_information)
unsigned int get_components_by_field_index(const unsigned int field_index) const
unsigned int get_components_by_plugin_index(const unsigned int plugin_index) const
unsigned int number_of_components
bool fieldname_exists(const std::string &name) const
ParticlePropertyInformation()
std::vector< unsigned int > fields_per_plugin
unsigned int number_of_fields
std::string get_field_name_by_index(const unsigned int field_index) const
std::vector< unsigned int > position_per_field
#define DEAL_II_DEPRECATED
typename ::Triangulation< dim, spacedim >::active_cell_iterator active_cell_iterator
InitializationModeForLateParticles
@ interpolate_respect_boundary
std::vector< small_vector< Tensor< 1, dim >, 50 > > gradients
DoFHandler< dim >::active_cell_iterator current_cell
std::vector< small_vector< double, 50 > > solution