ASPECT
|
Public Member Functions | |
virtual void | local_integrate_step (const typename ParticleHandler< dim >::particle_iterator &begin_particle, const typename ParticleHandler< dim >::particle_iterator &end_particle, const std::vector< Tensor< 1, dim >> &old_velocities, const std::vector< Tensor< 1, dim >> &velocities, const double dt)=0 |
virtual bool | new_integration_step () |
virtual std::size_t | get_data_size () const |
virtual std::array< bool, 3 > | required_solution_vectors () const =0 |
virtual const void * | read_data (const typename ParticleHandler< dim >::particle_iterator &particle, const void *data) |
virtual void * | write_data (const typename ParticleHandler< dim >::particle_iterator &particle, void *data) const |
Public Member Functions inherited from aspect::Particle::ParticleInterfaceBase | |
ParticleInterfaceBase () | |
void | set_particle_manager_index (unsigned int particle_manager_index) |
Set which particle manager the plugin belongs to. More... | |
unsigned int | get_particle_manager_index () const |
Gets which particle manager the plugin belong to. More... | |
Public Member Functions inherited from aspect::Plugins::InterfaceBase | |
virtual | ~InterfaceBase ()=default |
virtual void | initialize () |
virtual void | update () |
virtual void | parse_parameters (ParameterHandler &prm) |
Additional Inherited Members | |
Static Public Member Functions inherited from aspect::Plugins::InterfaceBase | |
static void | declare_parameters (ParameterHandler &prm) |
An abstract class defining virtual methods for performing integration of particle paths through the simulation velocity field.
Definition at line 47 of file interface.h.
|
pure virtual |
Perform an integration step of moving the particles of one cell by the specified timestep dt. Implementations of this function must update the particle location. Between calls to this function the velocity at the updated particle positions is evaluated and passed as input argument during the next call.
[in] | begin_particle | An iterator to the first particle to be moved. |
[in] | end_particle | An iterator to the last particle to be moved. |
[in] | old_velocities | The velocities at t_n, i.e. before the particle movement, for all particles between begin_particle and end_particle at their current position. |
[in] | velocities | The velocities at the particle positions at t_{n+1}, i.e. after the particle movement. Note that this is the velocity at the old positions, but at the new time. It is the responsibility of this function to compute the new location of the particles. |
[in] | dt | The length of the integration timestep. |
Implemented in aspect::Particle::Integrator::RK2< dim >, aspect::Particle::Integrator::RK4< dim >, and aspect::Particle::Integrator::Euler< dim >.
|
virtual |
This function is called at the end of every integration step. In case of multi-step integrators it signals the beginning of a new integration step. The default implementation always returns false, which is ok for single-step integration methods.
Reimplemented in aspect::Particle::Integrator::RK2< dim >, and aspect::Particle::Integrator::RK4< dim >.
|
virtual |
Return data length of the integration related data required for communication in terms of number of bytes. When data about particles is transported from one processor to another, or stored on disk for snapshots, integrators get the chance to store whatever information they need with each particle. This function returns how many pieces of additional information a concrete integrator class needs to store for each particle.
|
pure virtual |
Return a list of boolean values indicating which solution vectors are required for the integration. The first entry indicates if the particle integrator requires the solution vector at the old old time (k-1), the second entry indicates if the particle integrator requires the solution vector at the old time (k), and the third entry indicates if the particle integrator requires the solution vector at the new time (k+1).
Implemented in aspect::Particle::Integrator::RK2< dim >, aspect::Particle::Integrator::RK4< dim >, and aspect::Particle::Integrator::Euler< dim >.
|
virtual |
Read integration related data for a particle specified by particle_id from the data array. This function is called after transferring a particle to the local domain during an integration step.
[in] | data | A pointer into the data array. The pointer marks the position where this function starts reading. |
[in] | particle | An iterator pointing to the particle to read the data for. |
data
advanced by get_data_size() bytes.
|
virtual |
Write integration related data to a vector for a particle specified by particle_id. This function is called in cases where particles leave the local domain during an integration step to transfer this data to another process.
[in] | particle | An iterator pointing to the particle to write the data for. |
[in] | data | A pointer into the array of integrator data. |
data
advanced by get_data_size() bytes.