ParticleIterator< dim, number > Class Template Reference
|
Developer Documentation
|
STL-style bidirectional iterator over particles. More...
#include <particle_iterator.hpp>
Classes | |
| struct | PropertyPoolIteratorData |
Public Types | |
| using | iterator_category = std::bidirectional_iterator_tag |
| using | difference_type = std::ptrdiff_t |
| using | value_type = DEMParticleAccessor< dim, number > |
| using | reference = DEMParticleAccessor< dim, number > & |
| using | pointer = DEMParticleAccessor< dim, number > * |
Public Member Functions | |
| ParticleIterator ()=default | |
| ParticleIterator (dealii::Particles::ParticleIterator< dim > particle) | |
| ParticleIterator (dealii::Particles::PropertyPool< dim > &property_pool, const typename dealii::Particles::PropertyPool< dim >::Handle handle) | |
| DEMParticleAccessor< dim, number > & | operator* () |
| const DEMParticleAccessor< dim, number > & | operator* () const |
| DEMParticleAccessor< dim, number > * | operator-> () |
| const DEMParticleAccessor< dim, number > * | operator-> () const |
| bool | operator!= (const ParticleIterator &c) const |
| bool | operator== (const ParticleIterator &c) const |
| ParticleIterator & | operator++ () |
| ParticleIterator | operator++ (int) |
| ParticleIterator & | operator-- () |
| ParticleIterator | operator-- (int) |
Private Member Functions | |
| void | make_accessor () |
| void | refresh_accessor () |
Private Attributes | |
| std::optional< DEMParticleAccessor< dim, number > > | particle_accessor |
| std::variant< dealii::Particles::ParticleIterator< dim >, PropertyPoolIteratorData > | deal_ii_iterator |
| Variant type for the underlying iterator. | |
Detailed Description
class MeltPoolDG::ParticleIterator< dim, number >
STL-style bidirectional iterator over particles.
This iterator provides a uniform interface to traverse particles, whether they belong to a dealii::Particles::ParticleHandler or are stored in a PropertyPool. The interface is consistent for both cases and supports standard STL-style iterator operations, including: operator*, operator->, operator++, operator--, and comparison operators.
Dereferencing the iterator yields a ParticleAccessor object, which grants direct access to the particle's properties as defined in MeltPoolDG.
Member Typedef Documentation
◆ difference_type
| using MeltPoolDG::ParticleIterator< dim, number >::difference_type = std::ptrdiff_t |
◆ iterator_category
| using MeltPoolDG::ParticleIterator< dim, number >::iterator_category = std::bidirectional_iterator_tag |
◆ pointer
| using MeltPoolDG::ParticleIterator< dim, number >::pointer = DEMParticleAccessor<dim, number> * |
◆ reference
| using MeltPoolDG::ParticleIterator< dim, number >::reference = DEMParticleAccessor<dim, number> & |
◆ value_type
| using MeltPoolDG::ParticleIterator< dim, number >::value_type = DEMParticleAccessor<dim, number> |
Constructor & Destructor Documentation
◆ ParticleIterator() [1/3]
|
default |
Default constructor; creates an invalid iterator.
◆ ParticleIterator() [2/3]
| MeltPoolDG::ParticleIterator< dim, number >::ParticleIterator | ( | dealii::Particles::ParticleIterator< dim > | particle | ) |
Construct the iterator from a deal.II particle iterator.
- Parameters
-
particle The underlying deal.II particle iterator.
◆ ParticleIterator() [3/3]
| MeltPoolDG::ParticleIterator< dim, number >::ParticleIterator | ( | dealii::Particles::PropertyPool< dim > & | property_pool, |
| const typename dealii::Particles::PropertyPool< dim >::Handle | handle | ||
| ) |
Construct from a deal.II particle property pool and a corresponding handle identifying the particle of interest in the property pool.
- Parameters
-
property_pool The property pool containing the particle. handle Handle of the particle in the property pool.
Member Function Documentation
◆ make_accessor()
|
private |
Construct the particle accessor from the current iterator state.
- Note
- Does not check whether the iterator is valid; use refresh_accessor() for that.
◆ operator!=()
| bool MeltPoolDG::ParticleIterator< dim, number >::operator!= | ( | const ParticleIterator< dim, number > & | c | ) | const |
◆ operator*() [1/2]
| DEMParticleAccessor< dim, number > & MeltPoolDG::ParticleIterator< dim, number >::operator* | ( | ) |
Dereference operator.
- Exceptions
-
Assert if the iterator is invalid (only in debug mode).
◆ operator*() [2/2]
| const DEMParticleAccessor< dim, number > & MeltPoolDG::ParticleIterator< dim, number >::operator* | ( | ) | const |
Same as above but const.
◆ operator++() [1/2]
| ParticleIterator< dim, number > & MeltPoolDG::ParticleIterator< dim, number >::operator++ | ( | ) |
Pre-increment operator. Advances to the next particle.
◆ operator++() [2/2]
| ParticleIterator< dim, number > MeltPoolDG::ParticleIterator< dim, number >::operator++ | ( | int | ) |
Post-increment operator.
◆ operator--() [1/2]
| ParticleIterator< dim, number > & MeltPoolDG::ParticleIterator< dim, number >::operator-- | ( | ) |
Pre-decrement operator. Moves to the previous particle.
◆ operator--() [2/2]
| ParticleIterator< dim, number > MeltPoolDG::ParticleIterator< dim, number >::operator-- | ( | int | ) |
Post-decrement operator.
◆ operator->() [1/2]
| DEMParticleAccessor< dim, number > * MeltPoolDG::ParticleIterator< dim, number >::operator-> | ( | ) |
Arrow operator.
- Exceptions
-
Assert if the iterator is invalid (only in debug mode).
◆ operator->() [2/2]
| const DEMParticleAccessor< dim, number > * MeltPoolDG::ParticleIterator< dim, number >::operator-> | ( | ) | const |
Same as above but const.
◆ operator==()
| bool MeltPoolDG::ParticleIterator< dim, number >::operator== | ( | const ParticleIterator< dim, number > & | c | ) | const |
◆ refresh_accessor()
|
private |
Refreshes the internal accessor to match the current iterator state. Sets the cached particle_accessor or resets it if the iterator is invalid.
Member Data Documentation
◆ deal_ii_iterator
|
private |
Variant type for the underlying iterator.
◆ particle_accessor
|
private |
Cached particle accessor for the current iterator position. Note the optional will be empty in the case that the iterator points to an invalid position.
The documentation for this class was generated from the following file:
- include/meltpooldg/particles/particle_iterator.hpp
Generated by