Neko 1.99.6
A portable framework for high-order spectral element flow simulations
Loading...
Searching...
No Matches
lpt_migrate::lpt_migrate_t Type Reference

Public Member Functions

procedure, pass(thisinit (this, lag_len, strategy)
 Initialise particle migration settings.
 
procedure, pass(thisfree (this)
 Reset migration settings to defaults.
 
procedure, pass(thisinitialize_particle_distribution (this, inertia, particles)
 Apply the initial particle distribution required by the strategy.
 
procedure, pass(thismigrate_particles (this, global_interp, periodic_bc, inertia, particles)
 Update particle ownership according to the selected migration strategy.
 

Public Attributes

integer lag_len = 0
 
integer strategy = LPT_MIGRATE_TO_OWNER
 

Private Member Functions

procedure, pass(this), private distribute_particles_evenly (this, inertia, particles)
 Distribute particles from rank 0 evenly across all ranks.
 
procedure, pass(this), private distribute_particle_ids (this, ids_old, counts, offsets, n_local, ids_local)
 Scatter particle ids from rank 0 to the current rank.
 
procedure, pass(this), private distribute_particle_scalar (this, scalar_old, counts, offsets, n_local, scalar_local)
 Scatter one particle scalar field from rank 0 to the current rank.
 
procedure, pass(this), private localize_global_interpolation (this, global_interp, n_local)
 Mark interpolation data as local after migration has completed.
 
procedure, pass(this), private migrate_particle_ids (this, migrate_comm, ids_old, n_particles_old, n_local, particle_ids_local)
 Exchange particle ids according to global-interpolation ownership data.
 
procedure, pass(this), private migrate_particle_scalar (this, migrate_comm, scalar_old, n_particles_old, n_local, scalar_local)
 Exchange one particle scalar according to interpolation ownership data.
 

Detailed Description

Definition at line 52 of file lpt_migration.f90.

Member Function/Subroutine Documentation

◆ distribute_particle_ids()

procedure, pass(this), private lpt_migrate::lpt_migrate_t::distribute_particle_ids ( class(lpt_migrate_t), intent(inout this,
integer, dimension(:), intent(in), allocatable  ids_old,
integer, dimension(0:), intent(in counts,
integer, dimension(0:), intent(in offsets,
integer, intent(in n_local,
integer, dimension(:), intent(inout), allocatable  ids_local 
)
private
Parameters
ids_oldRoot-rank particle ids.
countsNumber of ids assigned to each rank.
offsetsOffsets into ids_old.
n_localNumber of ids received by this rank.
ids_localLocal particle ids.

Definition at line 61 of file lpt_migration.f90.

◆ distribute_particle_scalar()

procedure, pass(this), private lpt_migrate::lpt_migrate_t::distribute_particle_scalar ( class(lpt_migrate_t), intent(inout this,
type(vector_t), intent(inout scalar_old,
integer, dimension(0:), intent(in counts,
integer, dimension(0:), intent(in offsets,
integer, intent(in n_local,
type(vector_t), intent(inout scalar_local 
)
private
Parameters
scalar_oldRoot-rank scalar values.
countsNumber of values assigned to each rank.
offsetsOffsets into scalar_old.
n_localNumber of values received by this rank.
scalar_localLocal scalar values.

Definition at line 62 of file lpt_migration.f90.

◆ distribute_particles_evenly()

procedure, pass(this), private lpt_migrate::lpt_migrate_t::distribute_particles_evenly ( class(lpt_migrate_t), intent(inout this,
logical, intent(in inertia,
type(particles_t), intent(inout particles 
)
private
Parameters
inertiaWhether particles carry inertial state.
particlesParticle storage to redistribute.

Definition at line 60 of file lpt_migration.f90.

◆ free()

procedure, pass(this) lpt_migrate::lpt_migrate_t::free ( class(lpt_migrate_t), intent(inout this)

Definition at line 57 of file lpt_migration.f90.

◆ init()

procedure, pass(this) lpt_migrate::lpt_migrate_t::init ( class(lpt_migrate_t), intent(inout this,
integer, intent(in lag_len,
integer, intent(in), optional  strategy 
)
Parameters
lag_lenNumber of lagged RHS levels carried by particles.
strategyOptional migration strategy identifier.

Definition at line 56 of file lpt_migration.f90.

◆ initialize_particle_distribution()

procedure, pass(this) lpt_migrate::lpt_migrate_t::initialize_particle_distribution ( class(lpt_migrate_t), intent(inout this,
logical, intent(in inertia,
type(particles_t), intent(inout particles 
)
Parameters
inertiaWhether particles carry inertial state.
particlesParticle storage to distribute.

Definition at line 58 of file lpt_migration.f90.

◆ localize_global_interpolation()

procedure, pass(this), private lpt_migrate::lpt_migrate_t::localize_global_interpolation ( class(lpt_migrate_t), intent(inout this,
type(global_interpolation_t), intent(inout global_interp,
integer, intent(in n_local 
)
private
Parameters
global_interpInterpolation object to update.
n_localNumber of local particles.

Definition at line 63 of file lpt_migration.f90.

◆ migrate_particle_ids()

procedure, pass(this), private lpt_migrate::lpt_migrate_t::migrate_particle_ids ( class(lpt_migrate_t), intent(inout this,
type(glb_intrp_comm_t), intent(inout migrate_comm,
integer, dimension(:), intent(in), allocatable  ids_old,
integer, intent(in n_particles_old,
integer, intent(in n_local,
integer, dimension(:), intent(inout), allocatable  particle_ids_local 
)
private
Parameters
migrate_commRedistribution communicator from interpolation.
ids_oldParticle ids before migration.
n_particles_oldNumber of particles before migration.
n_localNumber of particles after migration.
particle_ids_localParticle ids after migration.

Definition at line 64 of file lpt_migration.f90.

◆ migrate_particle_scalar()

procedure, pass(this), private lpt_migrate::lpt_migrate_t::migrate_particle_scalar ( class(lpt_migrate_t), intent(inout this,
type(glb_intrp_comm_t), intent(inout migrate_comm,
type(vector_t), intent(inout scalar_old,
integer, intent(in n_particles_old,
integer, intent(in n_local,
type(vector_t), intent(inout scalar_local 
)
private
Parameters
migrate_commRedistribution communicator from interpolation.
scalar_oldScalar values before migration.
n_particles_oldNumber of particles before migration.
n_localNumber of particles after migration.
scalar_localScalar values after migration.

Definition at line 65 of file lpt_migration.f90.

◆ migrate_particles()

procedure, pass(this) lpt_migrate::lpt_migrate_t::migrate_particles ( class(lpt_migrate_t), intent(inout this,
type(global_interpolation_t), intent(inout global_interp,
type(lpt_periodic_bc_t), intent(inout periodic_bc,
logical, intent(in inertia,
type(particles_t), intent(inout particles 
)
Parameters
global_interpInterpolation object used to locate particle owners.
periodic_bcPeriodic wrapper applied before ownership lookup.
inertiaWhether particles carry inertial state.
particlesParticle storage to migrate.

Definition at line 59 of file lpt_migration.f90.

Member Data Documentation

◆ lag_len

integer lpt_migrate::lpt_migrate_t::lag_len = 0

Definition at line 53 of file lpt_migration.f90.

◆ strategy

integer lpt_migrate::lpt_migrate_t::strategy = LPT_MIGRATE_TO_OWNER

Definition at line 54 of file lpt_migration.f90.


The documentation for this type was generated from the following file: