mus_particle_type_module contains the main particle data types for LBM-DEM simulations of solid particles in the flow
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_MEM_type), | intent(inout) | :: | this | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(tem_stencilHeader_type), | intent(in) | :: | stencil |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_MEM_type), | intent(inout) | :: | this | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(tem_stencilHeader_type), | intent(in) | :: | stencil | |||
| type(mus_param_type), | intent(in) | :: | params |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_MEM_type), | intent(inout) | :: | this | |||
| integer, | intent(in) | :: | BCinteraction(:) | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(tem_stencilHeader_type), | intent(in) | :: | stencil | |||
| type(mus_geom_type), | intent(in) | :: | geometry | |||
| type(mus_param_type), | intent(in) | :: | params | |||
| logical, | intent(out) | :: | rmflag |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_MEM_type), | intent(inout) | :: | this | |||
| type(mus_particle_group_type), | intent(inout) | :: | particleGroup | |||
| type(mus_param_type), | intent(in) | :: | params |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_MEM_type), | intent(inout) | :: | this | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(tem_stencilHeader_type), | intent(in) | :: | stencil | |||
| type(mus_param_type), | intent(in) | :: | params |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_MEM_type), | intent(inout) | :: | this | |||
| type(mus_particle_group_type), | intent(inout) | :: | particleGroup | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(tem_stencilHeader_type), | intent(in) | :: | stencil | |||
| type(mus_geom_type), | intent(in) | :: | geometry | |||
| type(mus_param_type), | intent(in) | :: | params | |||
| logical, | intent(out) | :: | rmflag |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_MEM_type), | intent(inout) | :: | this | |||
| real(kind=rk), | intent(in) | :: | dt |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_MEM_type), | intent(inout) | :: | this | |||
| type(mus_geom_type), | intent(in) | :: | geometry | |||
| real(kind=rk), | intent(in) | :: | dt |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_MEM_type), | intent(inout) | :: | this | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(mus_geom_type), | intent(in) | :: | geometry | |||
| integer, | intent(in) | :: | myRank | |||
| integer, | intent(in) | :: | procs(:) | |||
| integer, | intent(in) | :: | nProcs | |||
| real(kind=rk), | intent(in) | :: | dx | |||
| logical, | intent(out) | :: | rmflag |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_MEM_type), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_group_type), | intent(inout) | :: | particleGroup | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(mus_geom_type), | intent(in) | :: | geometry | |||
| type(mus_param_type), | intent(in) | :: | params |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_group_type), | intent(inout) | :: | particleGroup | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(mus_geom_type), | intent(in) | :: | geometry | |||
| type(mus_param_type), | intent(in) | :: | params |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_group_type), | intent(inout) | :: | particleGroup | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(mus_geom_type), | intent(in) | :: | geometry | |||
| type(mus_param_type), | intent(in) | :: | params |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_group_type), | intent(inout) | :: | particleGroup | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(mus_geom_type), | intent(in) | :: | geometry | |||
| type(mus_param_type), | intent(in) | :: | params |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_group_type), | intent(inout) | :: | particleGroup | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(mus_geom_type), | intent(in) | :: | geometry | |||
| type(mus_param_type), | intent(in) | :: | params |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_DPS_type), | intent(inout) | :: | particle | |||
| type(mus_particle_interpolator_type), | intent(in) | :: | interpolator | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(mus_geom_type), | intent(in) | :: | geometry | |||
| type(mus_param_type), | intent(in) | :: | params | |||
| real(kind=rk), | intent(out) | :: | Ftot(3) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_DPS_type), | intent(inout) | :: | particle | |||
| type(mus_particle_interpolator_type), | intent(in) | :: | interpolator | |||
| type(mus_scheme_type), | intent(inout) | :: | scheme | |||
| type(mus_geom_type), | intent(in) | :: | geometry | |||
| type(mus_param_type), | intent(in) | :: | params | |||
| real(kind=rk), | intent(out) | :: | Ftot(3) |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=rk), | intent(in) | :: | xp(3) | |||
| integer, | intent(in) | :: | coord_xp(4) | |||
| type(mus_scheme_type), | intent(in) | :: | scheme | |||
| real(kind=rk), | intent(in) | :: | geom_origin(3) | |||
| real(kind=rk), | intent(in) | :: | dx | |||
| type(mus_particle_interpolator_type), | intent(in) | :: | interpolator | |||
| real(kind=rk), | intent(out) | :: | vel_xp(3) | |||
| real(kind=rk), | intent(out) | :: | rho_xp | |||
| real(kind=rk), | intent(out) | :: | eps_f_xp | |||
| integer, | intent(in), | optional | :: | posOfCoord |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | coord(4) | |||
| type(mus_scheme_type), | intent(in) | :: | scheme | |||
| real(kind=rk), | intent(out) | :: | grad_p(3) | |||
| real(kind=rk), | intent(out) | :: | curl_u(3) | |||
| logical, | intent(out) | :: | err | |||
| integer, | intent(in), | optional | :: | posOfCoord |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(mus_particle_group_type), | intent(inout) | :: | this | |||
| type(mus_particles_communication_type), | intent(inout) | :: | send | |||
| type(mus_particles_communication_type), | intent(inout) | :: | recv | |||
| integer, | intent(in) | :: | comm | |||
| integer, | intent(in) | :: | myRank | |||
| integer, | intent(in) | :: | message_flag |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_DPS_type), | intent(inout) | :: | particle |
Particle to apply force to |
||
| real(kind=rk), | intent(in) | :: | eps_p |
Solid volume fraction interpolated to location of the particle |
||
| real(kind=rk), | intent(in) | :: | nu |
Fluid kinematic viscosity (phy) |
||
| real(kind=rk), | intent(out) | :: | Fd(3) |
Output: drag force on particle |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_DPS_type), | intent(inout) | :: | particle |
Particle to apply force to |
||
| real(kind=rk), | intent(in) | :: | nu |
Fluid kinematic viscosity (phy) |
||
| real(kind=rk), | intent(out) | :: | Flift(3) |
Output: drag force on particle |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_DPS_type), | intent(inout) | :: | particle |
Particle to apply force to |
||
| real(kind=rk), | intent(out) | :: | Fp(3) |
Fluid kinematic viscosity (phy) |
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() |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_group_type), | intent(in) | :: | particleGroup | |||
| integer, | intent(in) | :: | logUnit |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_group_type), | intent(in) | :: | particleGroup | |||
| integer, | intent(in) | :: | logUnit | |||
| integer, | intent(in) | :: | myRank | |||
| integer, | intent(in) | :: | iter |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_group_type), | intent(in) | :: | particleGroup |
Particle group to print |
||
| character(len=*), | intent(in) | :: | particle_kind | |||
| integer, | intent(in) | :: | logUnit |
Unit to write output to |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_group_type), | intent(in) | :: | particleGroup | |||
| integer, | intent(in) | :: | logUnit | |||
| integer, | intent(in) | :: | myRank | |||
| integer, | intent(in) | :: | iter |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_group_type), | intent(in) | :: | particleGroup |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_group_type), | intent(inout) | :: | particleGroup |