Provides the data type for the discrete particles
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_DPS_type), | intent(inout) | :: | particle |
Particle to initialize |
||
| integer | :: | nProcs |
Number of processes to communicate particle data with |
Basic particle type for Discrete Particle Simulations In DPS particles are unresolved i.e. they are not represented on the grid. Instead, their effect on the flow is considered using the volume fraction in the fluid_GNS scheme's equilibrium distribution functions and forcing terms. Hence the scheme kind should be set to 'fluid_GNS' when using these kinds of particles.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | particleID | ||||
| integer, | public | :: | owner | ||||
| integer, | public | :: | previousOwner |
Previous owner of this particle. Used to determine when to Send data like particle%momInc to new owner |
|||
| logical, | public, | allocatable | :: | existsOnProc(:) | |||
| logical, | public, | allocatable | :: | addToProc(:) | |||
| logical, | public, | allocatable | :: | removeFromProc(:) | |||
| logical, | public | :: | newForMe | = | .FALSE. |
Logical which tells us whether to initialize this particle or not is set to true only immediately after receiving this particle from a neighboring process |
|
| logical, | public | :: | hasCollided | = | .FALSE. |
hasCollided tells us whether particle has just had its velocity modified in a collision and that this information needs to be sent to other processes |
|
| logical, | public | :: | removeParticle_global | = | .FALSE. |
removeParticle_global indicates that this particle needs to be removed after e.g. hitting an open boundary. This information is first sent to all other procs that know about this particle, then the particle is actually removed from the particleGroup. |
|
| logical, | public | :: | removeParticle_local | = | .FALSE. |
removeParticle_local indicates that this particle needs to be removed from this process's particleGroup because its coordOfOrigin is not within one lattice site of a local fluid cell |
|
| real(kind=rk), | public | :: | radius | ||||
| integer, | public | :: | Rn | ||||
| real(kind=rk), | public | :: | mass | ||||
| real(kind=rk), | public | :: | rotInertia | ||||
| real(kind=rk), | public | :: | vel(6) | ||||
| real(kind=rk), | public | :: | pos(6) | ||||
| real(kind=rk), | public | :: | oldPos(6) | ||||
| integer, | public | :: | coordOfOrigin(4) | ||||
| integer, | public | :: | oldCoordOfOrigin(4) | ||||
| integer, | public | :: | posOfOrigin | ||||
| real(kind=rk), | public | :: | F(6) | = | 0.0_rk | ||
| real(kind=rk), | public | :: | Favg(3) | = | 0.0_rk | ||
| real(kind=rk), | public | :: | u_fluid(3) | = | 0.0_rk | ||
| real(kind=rk), | public | :: | rho_fluid | = | 0.0_rk | ||
| real(kind=rk), | public | :: | eps_f_fluid | = | 0.0_rk | ||
| real(kind=rk), | public | :: | grad_p_fluid(3) | = | 0.0_rk | ||
| real(kind=rk), | public | :: | curl_u_fluid(3) | = | 0.0_rk | ||
| real(kind=rk), | public | :: | Fext(6) | = | 0.0_rk | ||
| real(kind=rk), | public | :: | F_DEM(2,6) | = | 0.0_rk | ||
| integer, | public | :: | F_DEM_now | = | 1 | ||
| integer, | public | :: | F_DEM_next | = | 2 | ||
| type(dyn_intarray_type), | public | :: | DEM_neighborlist |
List containing indices of nearby particles to check for collisions during the DEM subcycles |
|||
| integer, | public | :: | nWallPos | = | 0 | ||
| real(kind=rk), | public | :: | avgWallPos(3) | = | 0.0_rk | ||
| real(kind=rk), | public | :: | rwall(3) | = | 0.0_rk | ||
| logical, | public | :: | interactWithWall | = | .FALSE. |
dynamic array (da) type for mus_particle_dps_type
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | public | :: | nvals | = | 0 | ||
| integer, | public | :: | containersize | = | 0 | ||
| type(mus_particle_DPS_type), | public, | allocatable | :: | val(:) | |||
| integer, | public, | allocatable | :: | pidlist(:) | |||
| integer, | public, | allocatable | :: | pidsort(:) |
return the sorted position of a value in the given dynamic array
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dyn_particle_dps_array_type), | intent(in) | :: | me | |||
| integer, | intent(in) | :: | pid | |||
| logical, | intent(in), | optional | :: | nextifnotfound |
flag to indicate, if the next entry in the list should be returned, if the searched one is not found. |
|
| integer, | intent(in), | optional | :: | lower | ||
| integer, | intent(in), | optional | :: | upper |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dyn_particle_dps_array_type), | intent(inout) | :: | me | |||
| integer, | intent(in), | optional | :: | length |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dyn_particle_dps_array_type), | intent(inout) | :: | me |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dyn_particle_dps_array_type), | intent(inout) | :: | me | |||
| type(mus_particle_DPS_type), | intent(inout) | :: | particle | |||
| integer, | intent(in), | optional | :: | length | ||
| logical | :: | wasadded |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dyn_particle_dps_array_type), | intent(inout) | :: | me | |||
| integer, | intent(in), | optional | :: | length |
optional length to expand the array with |
swaps the position of two particles in particle dynamic array new position of ielem1 = old position of ielem2 and vice-versa also updates the pidlist and pidsort arrays
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dyn_particle_dps_array_type), | intent(inout) | :: | me |
particle array to operate on |
||
| integer, | intent(in) | :: | ielem1 |
current index of one element |
||
| integer, | intent(in) | :: | ielem2 |
current index of other element |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dyn_particle_dps_array_type), | intent(inout) | :: | particles |
particle group to operate on |
||
| integer, | intent(in) | :: | ielem |
current index of element to remove |
truncate the dynamic particle array to only fit the actual entries
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(dyn_particle_dps_array_type), | intent(inout) | :: | me |
particle array to operate on |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(mus_particle_DPS_type), | intent(inout) | :: | particle |
Particle to initialize |
||
| integer | :: | nProcs |
Number of processes to communicate particle data with |