mus_particle_DPS_type_module Module

Provides the data type for the discrete particles



Interfaces

public interface allocateProcessMasks

  • private subroutine allocateProcessMasks_DPS(particle, nProcs)

    Arguments

    Type IntentOptional Attributes Name
    type(mus_particle_DPS_type), intent(inout) :: particle

    Particle to initialize

    integer :: nProcs

    Number of processes to communicate particle data with


Derived Types

type, public ::  mus_particle_DPS_type

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.

Components

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.

type, public ::  dyn_particle_dps_array_type

dynamic array (da) type for mus_particle_dps_type

Components

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(:)

Functions

public function sortposofval_particle_dps(me, pid, nextifnotfound, lower, upper) result(pos)

return the sorted position of a value in the given dynamic array

Read more…

Arguments

Type IntentOptional 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

Return Value integer


Subroutines

public subroutine init_da_particle_dps(me, length)

Arguments

Type IntentOptional Attributes Name
type(dyn_particle_dps_array_type), intent(inout) :: me
integer, intent(in), optional :: length

public subroutine destroy_da_particle_dps(me)

Arguments

Type IntentOptional Attributes Name
type(dyn_particle_dps_array_type), intent(inout) :: me

public subroutine append_da_particle_dps(me, particle, length, wasadded)

Arguments

Type IntentOptional 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

public subroutine expand_da_particle_dps(me, length)

Arguments

Type IntentOptional Attributes Name
type(dyn_particle_dps_array_type), intent(inout) :: me
integer, intent(in), optional :: length

optional length to expand the array with

public subroutine swap_da_particle_dps(me, ielem1, ielem2)

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

Arguments

Type IntentOptional 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

public subroutine remove_particle_from_da_particle_dps(particles, ielem)

Arguments

Type IntentOptional 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

public subroutine truncate_da_particle_dps(me)

truncate the dynamic particle array to only fit the actual entries

Arguments

Type IntentOptional Attributes Name
type(dyn_particle_dps_array_type), intent(inout) :: me

particle array to operate on

private subroutine allocateProcessMasks_DPS(particle, nProcs)

Arguments

Type IntentOptional Attributes Name
type(mus_particle_DPS_type), intent(inout) :: particle

Particle to initialize

integer :: nProcs

Number of processes to communicate particle data with