Data type representing a collection of particles, typically all
| 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() |