mus_particle_group_type Derived Type

type, public :: mus_particle_group_type

Data type representing a collection of particles, typically all


Components

Type Visibility Attributes Name Initial
type(dyn_particle_mem_array_type), public :: particles_MEM
type(dyn_particle_dps_array_type), public :: particles_DPS
type(mus_particle_interpolator_type), public :: interpolator

Object containing information on interpolation boundaries and weight functions to interpolate and distribute fluid properties from lattice to particle and vice-versa.

integer, public :: nParticles
logical, public :: enableCollisions = .FALSE.

Logical set to TRUE if particle collision are enabled, false otherwise

real(kind=rk), public :: collision_time

Collision time

real(kind=rk), public :: collision_tol

Threshold gap at which to consider two particles colliding

real(kind=rk), public :: rho0_lat

Density to use for hydrodynamic force computation when local density is not available This is in lattice units!

integer, public :: Nsubcycles

Number of DEM subcycles to execute per LBM time step

integer, public, allocatable :: BC_interaction(:)
integer, public :: particleLogInterval

Log particle data every this many time steps, i.e. for particleLogInterval = 1 the particle data is logged every time step.

integer, public :: particleBufferSize

Buffer size for the force, velocity and other particle data buffers. Should be set in musubi.lua particles table.

real(kind=rk), public :: halo_distance

Particles are communicated to processes once they come within halo_distance of the boundary between two processes. For MEM (fully resolved) particles we usually choose this to be one particle diameter. For DPS (unresolved) particles we choose halo_distance = the mesh size.

type(mus_particles_communication_type), public :: send
type(mus_particles_communication_type), public :: recv
procedure(pg_applyHydroForceFunc), public, pointer :: applyHydrodynamicForces => null()
procedure(pg_moveFunc), public, pointer :: moveParticles => null()
procedure(pg_mapFunc), public, pointer :: mapParticles => null()
procedure(pg_momentumTransferFunc), public, pointer :: transferMomentumToFluid => null()
procedure(pg_modifyAuxFieldFunc), public, pointer :: addParticleSourcesToAuxField => null()
procedure(momTransFunc), public, pointer, nopass :: transfer_momentum => null()
procedure(modAuxFieldFunc), public, pointer, nopass :: modify_auxfield => null()
procedure(interpolateFluidPropFunc), public, pointer, nopass :: intp => null()
procedure(calcVelAndPGradFunc), public, pointer, nopass :: calc_vel_and_p_grad => null()
procedure(pg_dragForceFunc), public, pointer, nopass :: calcDragForce => null()
procedure(pg_liftForceFunc), public, pointer, nopass :: calcLiftForce => null()
procedure(pg_pressureForceFunc), public, pointer, nopass :: calcPressureForce => null()
procedure(exchangepIDvectorFunc), public, pointer :: exchangeForces => null()
procedure(exchangepIDvectorFunc), public, pointer :: exchangeParticleStates => null()
procedure(exchangepIDvectorFunc), public, pointer :: exchangeNewParticles => null()