Module ppm_module_inl_xset_vlist

This module contains routines and functions used in creating verlet lists by use of inhomogeneous cell lists.

Defined Types

name description

no types

Defined Module Interfaces

Defined Module Subroutines

name description

cross_neighbor_d

This function is to be used for lsymm = TRUE case, where we have

cross_neighbor_s

This function is to be used for lsymm = TRUE case, where we have

inemptylist

Given the cell index, this function checks whether the cell is

isneighbor_d

Given indices of two particles, checks whether the euclidian distance

isneighbor_s

Given indices of two particles, checks whether the euclidian distance

putinemptylist

Given the index of the cell, this subroutine stores the cell index

Interface count_xset_neigh

Subroutines contained in this interface:

name description

count_xset_neigh_s

Given the particle index, this subroutine locates the cell that this

count_xset_neigh_d

Given the particle index, this subroutine locates the cell that this

Interface create_inl_xset_vlist

Subroutines contained in this interface:

name description

create_inl_xset_vlist_s

This subroutine creates verlet lists for particles whose coordinates

create_inl_xset_vlist_d

This subroutine creates verlet lists for particles whose coordinates

Interface get_xset_neigh

Subroutines contained in this interface:

name description

get_xset_neigh_s

Given the particle index, this subroutine locates the cell that this

get_xset_neigh_d

Given the particle index, this subroutine locates the cell that this

Interface get_xset_verletlists

Subroutines contained in this interface:

name description

get_xset_verletlists_s

This subroutine allocates nvlist and fills it with number of

get_xset_verletlists_d

This subroutine allocates nvlist and fills it with number of

Interface getparticlecoordepth

Subroutines contained in this interface:

name description

getparticlecoordepth_s

Given the particle index, this subroutine modifies p_coor array and

getparticlecoordepth_d

Given the particle index, this subroutine modifies p_coor array and

Interface getparticlesincell

Subroutines contained in this interface:

name description

getparticlesincell_s

Given the cell index, this subroutine modifies the list array such

getparticlesincell_d

Given the cell index, this subroutine modifies the list array such

Interface getsubdomainparticles

Subroutines contained in this interface:

Interface indomain

Subroutines contained in this interface:

name description

indomain_s

This function checks whether given coordinates are inside whole

indomain_d

This function checks whether given coordinates are inside whole

Interface is_xset_neighbor

Subroutines contained in this interface:

name description

is_xset_neighbor_s

Given indices of two particles, checks whether the euclidian distance

is_xset_neighbor_d

Given indices of two particles, checks whether the euclidian distance

Interface ppm_inl_xset_vlist

Subroutines contained in this interface:

name description

inl_xset_vlist_s

Inhomogeneous cross-set neighborlists. This routine provides

inl_xset_vlist_d

Inhomogeneous cross-set neighborlists. This routine provides

hnl_xset_vlist_s

Inhomogeneous cross-set neighborlists. This routine provides

hnl_xset_vlist_d

Inhomogeneous cross-set neighborlists. This routine provides

Subroutine count_xset_neigh_d

Given the particle index, this subroutine locates the cell that this cell is located in, gathers all particles in these cells and updates verlet lists of all these particles.

Arguments

name type dimension intent optional description

red_refidx

integer

(IN)

Particle index

red_clist

ppm_clist

(IN)

cell list red

blue_clist

ppm_clist

(IN)

cell list blue

domain

real array

(2*ppm_dim)

Pysical extent of whole domain including ghost layers

red

real array

(:,:)

(IN)

Particle coordinates red

rcred

real array

(:)

(IN)

Particle cutoff radii red

blue

real array

(:,:)

(IN)

Particle coordinates blue

rcblue

real array

(:)

(IN)

Particle cutoff radii blue

skin

real

(IN)

Skin parameter

nvlist

integer array

(:)

Number of neighbors of particles. nvlist(i) contains number of

red_refidx

integer, , (IN)

Particle index

red_clist

ppm_clist, , (IN)

cell list red

blue_clist

ppm_clist, , (IN)

cell list blue

domain

real array, (2*ppm_dim), no intent declared

Pysical extent of whole domain including ghost layers

red

real array, (:,:), (IN)

Particle coordinates red

rcred

real array, (:), (IN)

Particle cutoff radii red

blue

real array, (:,:), (IN)

Particle coordinates blue

rcblue

real array, (:), (IN)

Particle cutoff radii blue

skin

real, , (IN)

Skin parameter

nvlist

integer array, (:), no intent declared

Number of neighbors of particles. nvlist(i) contains number of neighbors particle i has.

Used Modules

has no uses

Subroutine count_xset_neigh_s

Given the particle index, this subroutine locates the cell that this cell is located in, gathers all particles in these cells and updates verlet lists of all these particles.

Arguments

name type dimension intent optional description

red_refidx

integer

(IN)

Particle index

red_clist

ppm_clist

(IN)

cell list red

blue_clist

ppm_clist

(IN)

cell list blue

domain

real array

(2*ppm_dim)

Pysical extent of whole domain including ghost layers

red

real array

(:,:)

(IN)

Particle coordinates red

rcred

real array

(:)

(IN)

Particle cutoff radii red

blue

real array

(:,:)

(IN)

Particle coordinates blue

rcblue

real array

(:)

(IN)

Particle cutoff radii blue

skin

real

(IN)

Skin parameter

nvlist

integer array

(:)

Number of neighbors of particles. nvlist(i) contains number of

red_refidx

integer, , (IN)

Particle index

red_clist

ppm_clist, , (IN)

cell list red

blue_clist

ppm_clist, , (IN)

cell list blue

domain

real array, (2*ppm_dim), no intent declared

Pysical extent of whole domain including ghost layers

red

real array, (:,:), (IN)

Particle coordinates red

rcred

real array, (:), (IN)

Particle cutoff radii red

blue

real array, (:,:), (IN)

Particle coordinates blue

rcblue

real array, (:), (IN)

Particle cutoff radii blue

skin

real, , (IN)

Skin parameter

nvlist

integer array, (:), no intent declared

Number of neighbors of particles. nvlist(i) contains number of neighbors particle i has.

Used Modules

has no uses

Subroutine create_inl_xset_vlist_d

This subroutine creates verlet lists for particles whose coordinates and cutoff radii are provided by xp and cutoff, respectively. Here, Np denotes the number of real particles and Mp is the total number of particles including ghost particles. Given these inputs and others that are required, this subroutine allocates and fills nvlist. If the OPTIONAL parameter lstore is set to TRUE or not passed, vlist is also allocated and filled.

Arguments

name type dimension intent optional description

red

real array

(:,:)

(IN)

Coordinates array for refernece particles (red)

nred

integer

(IN)

Number of real red particles

mred

integer

(IN)

Number of all red particles

rcred

real array

(:)

(IN)

Red particles cutoff radii

blue

real array

(:,:)

(IN)

Coordinates array for refernece particles (blue)

nblue

integer

(IN)

Number of real blue particles

mblue

integer

(IN)

Number of all blue particles

rcblue

real array

(:)

(IN)

blue particles cutoff radii

skin

real

(IN)

Skin parameter

curr_dom

real array

(2*ppm_dim)

ghostlayer

real array

(ppm_dim)

(IN)

Extra area/volume over the actual domain introduced by

info

integer

(OUT)

Info to be RETURNed. 0 if SUCCESSFUL.

vlist

integer array

(:,:)

verlet lists. vlist(3, 6) is the 3rd neighbor of particle 6.

nvlist

integer array

(:)

number of neighbors of particles. nvlist(i) is number of

lstore

logical

(IN)

X

OPTIONAL logical parameter to choose whether to store

red

real array, (:,:), (IN)

Coordinates array for refernece particles (red)

nred

integer, , (IN)

Number of real red particles

mred

integer, , (IN)

Number of all red particles

rcred

real array, (:), (IN)

Red particles cutoff radii

blue

real array, (:,:), (IN)

Coordinates array for refernece particles (blue)

nblue

integer, , (IN)

Number of real blue particles

mblue

integer, , (IN)

Number of all blue particles

rcblue

real array, (:), (IN)

blue particles cutoff radii

skin

real, , (IN)

Skin parameter

curr_dom

real array, (2*ppm_dim), no intent declared

ghostlayer

real array, (ppm_dim), (IN)

Extra area/volume over the actual domain introduced by ghost layers.

info

integer, , (OUT)

Info to be RETURNed. 0 if SUCCESSFUL.

vlist

integer array, (:,:), no intent declared

verlet lists. vlist(3, 6) is the 3rd neighbor of particle 6.

nvlist

integer array, (:), no intent declared

number of neighbors of particles. nvlist(i) is number of neighbors particle i has.

(Optional) lstore

logical, , (IN)

OPTIONAL logical parameter to choose whether to store vlist or not. By default, it is set to TRUE.

Used Modules

has no uses

Subroutine create_inl_xset_vlist_s

This subroutine creates verlet lists for particles whose coordinates and cutoff radii are provided by xp and cutoff, respectively. Here, Np denotes the number of real particles and Mp is the total number of particles including ghost particles. Given these inputs and others that are required, this subroutine allocates and fills nvlist. If the OPTIONAL parameter lstore is set to TRUE or not passed, vlist is also allocated and filled.

Arguments

name type dimension intent optional description

red

real array

(:,:)

(IN)

Coordinates array for refernece particles (red)

nred

integer

(IN)

Number of real red particles

mred

integer

(IN)

Number of all red particles

rcred

real array

(:)

(IN)

Red particles cutoff radii

blue

real array

(:,:)

(IN)

Coordinates array for refernece particles (blue)

nblue

integer

(IN)

Number of real blue particles

mblue

integer

(IN)

Number of all blue particles

rcblue

real array

(:)

(IN)

blue particles cutoff radii

skin

real

(IN)

Skin parameter

curr_dom

real array

(2*ppm_dim)

ghostlayer

real array

(ppm_dim)

(IN)

Extra area/volume over the actual domain introduced by

info

integer

(OUT)

Info to be RETURNed. 0 if SUCCESSFUL.

vlist

integer array

(:,:)

verlet lists. vlist(3, 6) is the 3rd neighbor of particle 6.

nvlist

integer array

(:)

number of neighbors of particles. nvlist(i) is number of

lstore

logical

(IN)

X

OPTIONAL logical parameter to choose whether to store

red

real array, (:,:), (IN)

Coordinates array for refernece particles (red)

nred

integer, , (IN)

Number of real red particles

mred

integer, , (IN)

Number of all red particles

rcred

real array, (:), (IN)

Red particles cutoff radii

blue

real array, (:,:), (IN)

Coordinates array for refernece particles (blue)

nblue

integer, , (IN)

Number of real blue particles

mblue

integer, , (IN)

Number of all blue particles

rcblue

real array, (:), (IN)

blue particles cutoff radii

skin

real, , (IN)

Skin parameter

curr_dom

real array, (2*ppm_dim), no intent declared

ghostlayer

real array, (ppm_dim), (IN)

Extra area/volume over the actual domain introduced by ghost layers.

info

integer, , (OUT)

Info to be RETURNed. 0 if SUCCESSFUL.

vlist

integer array, (:,:), no intent declared

verlet lists. vlist(3, 6) is the 3rd neighbor of particle 6.

nvlist

integer array, (:), no intent declared

number of neighbors of particles. nvlist(i) is number of neighbors particle i has.

(Optional) lstore

logical, , (IN)

OPTIONAL logical parameter to choose whether to store vlist or not. By default, it is set to TRUE.

Used Modules

has no uses

Subroutine cross_neighbor_d

This function is to be used for lsymm = TRUE case, where we have ghost layers only in positive direction which makes it necessary to take ghost-ghost interaction into account. So, ghost particles that are cross-neighbors should be detected and put in verlet list of one of them.

Arguments

name type dimension intent optional description

p_idx

integer

(IN)

Index of first particle

p_neigh

integer

(IN)

Index of second particle

xp

real array

(:,:)

(IN)

Coordinates of particles

actual_domain

real array

(2*ppm_dim)

(IN)

Physical extent of actual domain without ghost layers

p_idx

integer, , (IN)

Index of first particle

p_neigh

integer, , (IN)

Index of second particle

xp

real array, (:,:), (IN)

Coordinates of particles

actual_domain

real array, (2*ppm_dim), (IN)

Physical extent of actual domain without ghost layers

Used Modules

has no uses

Subroutine cross_neighbor_s

This function is to be used for lsymm = TRUE case, where we have ghost layers only in positive direction which makes it necessary to take ghost-ghost interaction into account. So, ghost particles that are cross-neighbors should be detected and put in verlet list of one of them.

Arguments

name type dimension intent optional description

p_idx

integer

(IN)

Index of first particle

p_neigh

integer

(IN)

Index of second particle

xp

real array

(:,:)

(IN)

Coordinates of particles

actual_domain

real array

(2*ppm_dim)

(IN)

Physical extent of actual domain without ghost layers

p_idx

integer, , (IN)

Index of first particle

p_neigh

integer, , (IN)

Index of second particle

xp

real array, (:,:), (IN)

Coordinates of particles

actual_domain

real array, (2*ppm_dim), (IN)

Physical extent of actual domain without ghost layers

Used Modules

has no uses

Subroutine get_xset_neigh_d

Given the particle index, this subroutine locates the cell that this cell is located in, gathers all particles in these cells and updates verlet lists of all these particles.

Arguments

name type dimension intent optional description

red_refidx

integer

(IN)

Particle index

red_clist

ppm_clist

(IN)

cell list red

blue_clist

ppm_clist

(IN)

cell list blue

domain

real array

(2*ppm_dim)

Pysical extent of whole domain including ghost layers

red

real array

(:,:)

(IN)

Particle coordinates red

rcred

real array

(:)

(IN)

Particle cutoff radii red

blue

real array

(:,:)

(IN)

Particle coordinates blue

rcblue

real array

(:)

(IN)

Particle cutoff radii blue

skin

real

(IN)

Skin parameter

vlist

integer array

(:,:)

Verlet list, where vlist(j, i) contains the jth neighbor of

nvlist

integer array

(:)

Number of neighbors of particles. nvlist(i) contains number of

red_refidx

integer, , (IN)

Particle index

red_clist

ppm_clist, , (IN)

cell list red

blue_clist

ppm_clist, , (IN)

cell list blue

domain

real array, (2*ppm_dim), no intent declared

Pysical extent of whole domain including ghost layers

red

real array, (:,:), (IN)

Particle coordinates red

rcred

real array, (:), (IN)

Particle cutoff radii red

blue

real array, (:,:), (IN)

Particle coordinates blue

rcblue

real array, (:), (IN)

Particle cutoff radii blue

skin

real, , (IN)

Skin parameter

vlist

integer array, (:,:), no intent declared

Verlet list, where vlist(j, i) contains the jth neighbor of ith particle

nvlist

integer array, (:), no intent declared

Number of neighbors of particles. nvlist(i) contains number of neighbors particle i has.

Used Modules

has no uses

Subroutine get_xset_neigh_s

Given the particle index, this subroutine locates the cell that this cell is located in, gathers all particles in these cells and updates verlet lists of all these particles.

Arguments

name type dimension intent optional description

red_refidx

integer

(IN)

Particle index

red_clist

ppm_clist

(IN)

cell list red

blue_clist

ppm_clist

(IN)

cell list blue

domain

real array

(2*ppm_dim)

Pysical extent of whole domain including ghost layers

red

real array

(:,:)

(IN)

Particle coordinates red

rcred

real array

(:)

(IN)

Particle cutoff radii red

blue

real array

(:,:)

(IN)

Particle coordinates blue

rcblue

real array

(:)

(IN)

Particle cutoff radii blue

skin

real

(IN)

Skin parameter

vlist

integer array

(:,:)

Verlet list, where vlist(j, i) contains the jth neighbor of

nvlist

integer array

(:)

Number of neighbors of particles. nvlist(i) contains number of

red_refidx

integer, , (IN)

Particle index

red_clist

ppm_clist, , (IN)

cell list red

blue_clist

ppm_clist, , (IN)

cell list blue

domain

real array, (2*ppm_dim), no intent declared

Pysical extent of whole domain including ghost layers

red

real array, (:,:), (IN)

Particle coordinates red

rcred

real array, (:), (IN)

Particle cutoff radii red

blue

real array, (:,:), (IN)

Particle coordinates blue

rcblue

real array, (:), (IN)

Particle cutoff radii blue

skin

real, , (IN)

Skin parameter

vlist

integer array, (:,:), no intent declared

Verlet list, where vlist(j, i) contains the jth neighbor of ith particle

nvlist

integer array, (:), no intent declared

Number of neighbors of particles. nvlist(i) contains number of neighbors particle i has.

Used Modules

has no uses

Subroutine get_xset_verletlists_d

This subroutine allocates nvlist and fills it with number of neighbors of each particle. Then, if lstore is TRUE, it also allocates vlist array and fills it with neighbor particles IDs for each particle.

Arguments

name type dimension intent optional description

red

real array

(:,:)

(IN)

coordinates array of red particles

rcred

real array

(:)

(IN)

Red particles cutoff radii

red_clist

ppm_clist

(IN)

Red particle cell list

blue

real array

(:,:)

(IN)

coordinates array of blue particles

rcblue

real array

(:)

(IN)

Blue particles cutoff radii

blue_clist

ppm_clist

(IN)

Blue particle cell list

skin

real

(IN)

Skin parameter

whole_domain

real array

(2*ppm_dim)

Physical extent of whole domain including ghost layers.

curr_dom

real array

(2*ppm_dim)

Physical extent of actual domain without ghost layers.

vlist

integer array

(:,:)

Verlet lists of particles. vlist(j, i) corresponds to jth neighbor

nvlist

integer array

(:)

Number of neighbors that particles have. nvlist(i) is the

lstore

logical

(IN)

Logical parameter to choose whether to store vlist or not.

info

integer

red

real array, (:,:), (IN)

coordinates array of red particles

rcred

real array, (:), (IN)

Red particles cutoff radii

red_clist

ppm_clist, , (IN)

Red particle cell list

blue

real array, (:,:), (IN)

coordinates array of blue particles

rcblue

real array, (:), (IN)

Blue particles cutoff radii

blue_clist

ppm_clist, , (IN)

Blue particle cell list

skin

real, , (IN)

Skin parameter

whole_domain

real array, (2*ppm_dim), no intent declared

Physical extent of whole domain including ghost layers.

curr_dom

real array, (2*ppm_dim), no intent declared

Physical extent of actual domain without ghost layers.

vlist

integer array, (:,:), no intent declared

Verlet lists of particles. vlist(j, i) corresponds to jth neighbor of particle i.

nvlist

integer array, (:), no intent declared

Number of neighbors that particles have. nvlist(i) is the number of neighbor particle i has.

lstore

logical, , (IN)

Logical parameter to choose whether to store vlist or not.

info

integer, , no intent declared

Used Modules

has no uses

Subroutine get_xset_verletlists_s

This subroutine allocates nvlist and fills it with number of neighbors of each particle. Then, if lstore is TRUE, it also allocates vlist array and fills it with neighbor particles IDs for each particle.

Arguments

name type dimension intent optional description

red

real array

(:,:)

(IN)

coordinates array of red particles

rcred

real array

(:)

(IN)

Red particles cutoff radii

red_clist

ppm_clist

(IN)

Red particle cell list

blue

real array

(:,:)

(IN)

coordinates array of blue particles

rcblue

real array

(:)

(IN)

Blue particles cutoff radii

blue_clist

ppm_clist

(IN)

Blue particle cell list

skin

real

(IN)

Skin parameter

whole_domain

real array

(2*ppm_dim)

Physical extent of whole domain including ghost layers.

curr_dom

real array

(2*ppm_dim)

Physical extent of actual domain without ghost layers.

vlist

integer array

(:,:)

Verlet lists of particles. vlist(j, i) corresponds to jth neighbor

nvlist

integer array

(:)

Number of neighbors that particles have. nvlist(i) is the

lstore

logical

(IN)

Logical parameter to choose whether to store vlist or not.

info

integer

red

real array, (:,:), (IN)

coordinates array of red particles

rcred

real array, (:), (IN)

Red particles cutoff radii

red_clist

ppm_clist, , (IN)

Red particle cell list

blue

real array, (:,:), (IN)

coordinates array of blue particles

rcblue

real array, (:), (IN)

Blue particles cutoff radii

blue_clist

ppm_clist, , (IN)

Blue particle cell list

skin

real, , (IN)

Skin parameter

whole_domain

real array, (2*ppm_dim), no intent declared

Physical extent of whole domain including ghost layers.

curr_dom

real array, (2*ppm_dim), no intent declared

Physical extent of actual domain without ghost layers.

vlist

integer array, (:,:), no intent declared

Verlet lists of particles. vlist(j, i) corresponds to jth neighbor of particle i.

nvlist

integer array, (:), no intent declared

Number of neighbors that particles have. nvlist(i) is the number of neighbor particle i has.

lstore

logical, , (IN)

Logical parameter to choose whether to store vlist or not.

info

integer, , no intent declared

Used Modules

has no uses

Subroutine getparticlecoordepth_d

Given the particle index, this subroutine modifies p_coor array and p_depth variables such that they contain coordinates and depth of the particle, respectively.

Arguments

name type dimension intent optional description

p_idx

integer

(IN)

domain

real array

(2*ppm_dim)

p_coor

real array

(:)

p_depth

integer

(INOUT)

xp

real array

(:,:)

(IN)

cutoff

real array

(:)

(IN)

skin

real

(IN)

p_idx

integer, , (IN)

domain

real array, (2*ppm_dim), no intent declared

p_coor

real array, (:), no intent declared

p_depth

integer, , (INOUT)

xp

real array, (:,:), (IN)

cutoff

real array, (:), (IN)

skin

real, , (IN)

Used Modules

has no uses

Subroutine getparticlecoordepth_s

Given the particle index, this subroutine modifies p_coor array and p_depth variables such that they contain coordinates and depth of the particle, respectively.

Arguments

name type dimension intent optional description

p_idx

integer

(IN)

domain

real array

(2*ppm_dim)

p_coor

real array

(:)

p_depth

integer

(INOUT)

xp

real array

(:,:)

(IN)

cutoff

real array

(:)

(IN)

skin

real

(IN)

p_idx

integer, , (IN)

domain

real array, (2*ppm_dim), no intent declared

p_coor

real array, (:), no intent declared

p_depth

integer, , (INOUT)

xp

real array, (:,:), (IN)

cutoff

real array, (:), (IN)

skin

real, , (IN)

Used Modules

has no uses

Subroutine getparticlesincell_d

Given the cell index, this subroutine modifies the list array such that it contains the particle IDs of this cell and sets nlist to number of particles in this cell.

Arguments

name type dimension intent optional description

cell_idx

integer

(IN)

xp

real array

(:,:)

(IN)

this is basically a dummy argument to force fortran to generate

clist

ppm_clist

(IN)

list

integer array

(:)

(INOUT)

nlist

integer

(INOUT)

cell_idx

integer, , (IN)

xp

real array, (:,:), (IN)

this is basically a dummy argument to force fortran to generate two versions of this routine

clist

ppm_clist, , (IN)

list

integer array, (:), (INOUT)

nlist

integer, , (INOUT)

Used Modules

has no uses

Subroutine getparticlesincell_s

Given the cell index, this subroutine modifies the list array such that it contains the particle IDs of this cell and sets nlist to number of particles in this cell.

Arguments

name type dimension intent optional description

cell_idx

integer

(IN)

xp

real array

(:,:)

(IN)

this is basically a dummy argument to force fortran to generate

clist

ppm_clist

(IN)

list

integer array

(:)

(INOUT)

nlist

integer

(INOUT)

cell_idx

integer, , (IN)

xp

real array, (:,:), (IN)

this is basically a dummy argument to force fortran to generate two versions of this routine

clist

ppm_clist, , (IN)

list

integer array, (:), (INOUT)

nlist

integer, , (INOUT)

Used Modules

has no uses

Subroutine getsubdomainparticles_d

Arguments

name type dimension intent optional description

xp

real array

(:,:)

(IN)

Particle coordinates array.

np

integer

(IN)

Number of real particles

mp

integer

(IN)

Number of all particles including ghost particles

cutoff

real array

(:)

(IN)

Particles cutoff radii

lsymm

logical

(IN)

If lsymm = TRUE, verlet lists are symmetric and we have ghost

actual_subdomain

real array

(2*ppm_dim)

ghost_extend

real array

(ppm_dim)

(IN)

Extra area/volume over the actual domain introduced by

xp_sub

real array

(:,:)

Particle coordinates array. F.e., xp(1, i) is the x-coor of particle i.

cutoff_sub

real array

(:)

Particles cutoff radii

np_sub

integer

(OUT)

Number of real particles of subdomain

mp_sub

integer

(OUT)

Number of all particles including ghost particles of subdomain

p_id

integer array

(:)

xp

real array, (:,:), (IN)

Particle coordinates array. i.e., xp(1, i) is the x-coor of particle i.

np

integer, , (IN)

Number of real particles

mp

integer, , (IN)

Number of all particles including ghost particles

cutoff

real array, (:), (IN)

Particles cutoff radii

lsymm

logical, , (IN)

If lsymm = TRUE, verlet lists are symmetric and we have ghost layers only in (+) directions in all axes. Else, we have ghost layers in all directions.

actual_subdomain

real array, (2*ppm_dim), no intent declared

ghost_extend

real array, (ppm_dim), (IN)

Extra area/volume over the actual domain introduced by ghost layers.

xp_sub

real array, (:,:), no intent declared

Particle coordinates array. F.e., xp(1, i) is the x-coor of particle i.

cutoff_sub

real array, (:), no intent declared

Particles cutoff radii

np_sub

integer, , (OUT)

Number of real particles of subdomain

mp_sub

integer, , (OUT)

Number of all particles including ghost particles of subdomain

p_id

integer array, (:), no intent declared

Used Modules

has no uses

Subroutine getsubdomainparticles_s

Arguments

name type dimension intent optional description

xp

real array

(:,:)

(IN)

Particle coordinates array.

np

integer

(IN)

Number of real particles

mp

integer

(IN)

Number of all particles including ghost particles

cutoff

real array

(:)

(IN)

Particles cutoff radii

lsymm

logical

(IN)

If lsymm = TRUE, verlet lists are symmetric and we have ghost

actual_subdomain

real array

(2*ppm_dim)

ghost_extend

real array

(ppm_dim)

(IN)

Extra area/volume over the actual domain introduced by

xp_sub

real array

(:,:)

Particle coordinates array. F.e., xp(1, i) is the x-coor of particle i.

cutoff_sub

real array

(:)

Particles cutoff radii

np_sub

integer

(OUT)

Number of real particles of subdomain

mp_sub

integer

(OUT)

Number of all particles including ghost particles of subdomain

p_id

integer array

(:)

xp

real array, (:,:), (IN)

Particle coordinates array. i.e., xp(1, i) is the x-coor of particle i.

np

integer, , (IN)

Number of real particles

mp

integer, , (IN)

Number of all particles including ghost particles

cutoff

real array, (:), (IN)

Particles cutoff radii

lsymm

logical, , (IN)

If lsymm = TRUE, verlet lists are symmetric and we have ghost layers only in (+) directions in all axes. Else, we have ghost layers in all directions.

actual_subdomain

real array, (2*ppm_dim), no intent declared

ghost_extend

real array, (ppm_dim), (IN)

Extra area/volume over the actual domain introduced by ghost layers.

xp_sub

real array, (:,:), no intent declared

Particle coordinates array. F.e., xp(1, i) is the x-coor of particle i.

cutoff_sub

real array, (:), no intent declared

Particles cutoff radii

np_sub

integer, , (OUT)

Number of real particles of subdomain

mp_sub

integer, , (OUT)

Number of all particles including ghost particles of subdomain

p_id

integer array, (:), no intent declared

Used Modules

has no uses

Subroutine hnl_xset_vlist_d

Inhomogeneous cross-set neighborlists. This routine provides Verlet-list-like neighbor lists of particles of one set (blue) to a set of other particles (red). The neighborlists are built analogous to the inhomogenous neighborlists described in Awile2011. The red particles are assumed to have interaction radius = domain size and we use the same neighborhood relation as in INL.

Arguments

name type dimension intent optional description

topoid

integer

(IN)

ID of the topology.

red

real array

(:,:)

(IN)

Coordinates array for reference particles (red)

nred

integer

(IN)

Number of real red particles

mred

integer

(IN)

Number of all red particles including ghost particles

blue

real array

(:,:)

(IN)

Coordinates array for neighbor particle set (blue)

nblue

integer

(IN)

Number of real blue particles

mblue

integer

(IN)

Number of all blue particles including ghost particles

cutoff

real

(IN)

Blue particle cutoff radii scalar

skin

real

(IN)

Skin parameter

ghostlayer

real array

(2*ppm_dim)

(IN)

Extra area/volume over the actual domain introduced by

info

integer

(OUT)

Info to be RETURNed. 0 if SUCCESSFUL.

vlist

integer array

(:,:)

verlet lists. vlist(3, 6) is the 3rd neighbor of particle 6.

nvlist

integer array

(:)

number of neighbors of particles. nvlist(i) is number of

lstore

logical

(IN)

X

OPTIONAL logical parameter to choose whether to store

topoid

integer, , (IN)

ID of the topology.

red

real array, (:,:), (IN)

Coordinates array for reference particles (red)

nred

integer, , (IN)

Number of real red particles

mred

integer, , (IN)

Number of all red particles including ghost particles

blue

real array, (:,:), (IN)

Coordinates array for neighbor particle set (blue)

nblue

integer, , (IN)

Number of real blue particles

mblue

integer, , (IN)

Number of all blue particles including ghost particles

cutoff

real, , (IN)

Blue particle cutoff radii scalar

skin

real, , (IN)

Skin parameter

ghostlayer

real array, (2*ppm_dim), (IN)

Extra area/volume over the actual domain introduced by ghost layers.

info

integer, , (OUT)

Info to be RETURNed. 0 if SUCCESSFUL.

vlist

integer array, (:,:), no intent declared

verlet lists. vlist(3, 6) is the 3rd neighbor of particle 6.

nvlist

integer array, (:), no intent declared

number of neighbors of particles. nvlist(i) is number of neighbors particle i has.

(Optional) lstore

logical, , (IN)

OPTIONAL logical parameter to choose whether to store vlist or not. By default, it is set to TRUE.

Used Modules

has no uses

Subroutine hnl_xset_vlist_s

Inhomogeneous cross-set neighborlists. This routine provides Verlet-list-like neighbor lists of particles of one set (blue) to a set of other particles (red). The neighborlists are built analogous to the inhomogenous neighborlists described in Awile2011. The red particles are assumed to have interaction radius = domain size and we use the same neighborhood relation as in INL.

Arguments

name type dimension intent optional description

topoid

integer

(IN)

ID of the topology.

red

real array

(:,:)

(IN)

Coordinates array for reference particles (red)

nred

integer

(IN)

Number of real red particles

mred

integer

(IN)

Number of all red particles including ghost particles

blue

real array

(:,:)

(IN)

Coordinates array for neighbor particle set (blue)

nblue

integer

(IN)

Number of real blue particles

mblue

integer

(IN)

Number of all blue particles including ghost particles

cutoff

real

(IN)

Blue particle cutoff radii scalar

skin

real

(IN)

Skin parameter

ghostlayer

real array

(2*ppm_dim)

(IN)

Extra area/volume over the actual domain introduced by

info

integer

(OUT)

Info to be RETURNed. 0 if SUCCESSFUL.

vlist

integer array

(:,:)

verlet lists. vlist(3, 6) is the 3rd neighbor of particle 6.

nvlist

integer array

(:)

number of neighbors of particles. nvlist(i) is number of

lstore

logical

(IN)

X

OPTIONAL logical parameter to choose whether to store

topoid

integer, , (IN)

ID of the topology.

red

real array, (:,:), (IN)

Coordinates array for reference particles (red)

nred

integer, , (IN)

Number of real red particles

mred

integer, , (IN)

Number of all red particles including ghost particles

blue

real array, (:,:), (IN)

Coordinates array for neighbor particle set (blue)

nblue

integer, , (IN)

Number of real blue particles

mblue

integer, , (IN)

Number of all blue particles including ghost particles

cutoff

real, , (IN)

Blue particle cutoff radii scalar

skin

real, , (IN)

Skin parameter

ghostlayer

real array, (2*ppm_dim), (IN)

Extra area/volume over the actual domain introduced by ghost layers.

info

integer, , (OUT)

Info to be RETURNed. 0 if SUCCESSFUL.

vlist

integer array, (:,:), no intent declared

verlet lists. vlist(3, 6) is the 3rd neighbor of particle 6.

nvlist

integer array, (:), no intent declared

number of neighbors of particles. nvlist(i) is number of neighbors particle i has.

(Optional) lstore

logical, , (IN)

OPTIONAL logical parameter to choose whether to store vlist or not. By default, it is set to TRUE.

Used Modules

has no uses

Subroutine indomain_d

This function checks whether given coordinates are inside whole domain including ghost layers or not and RETURNs logical result.

Arguments

name type dimension intent optional description

coor

real array

(ppm_dim)

(IN)

1D Array of coordinates. First index is x-coordinate.

domain

real array

(2*ppm_dim)

(IN)

Physical extent of whole domain including ghost layers.

coor

real array, (ppm_dim), (IN)

1D Array of coordinates. First index is x-coordinate.

domain

real array, (2*ppm_dim), (IN)

Physical extent of whole domain including ghost layers.

Used Modules

has no uses

Subroutine indomain_s

This function checks whether given coordinates are inside whole domain including ghost layers or not and RETURNs logical result.

Arguments

name type dimension intent optional description

coor

real array

(ppm_dim)

(IN)

1D Array of coordinates. First index is x-coordinate.

domain

real array

(2*ppm_dim)

(IN)

Physical extent of whole domain including ghost layers.

coor

real array, (ppm_dim), (IN)

1D Array of coordinates. First index is x-coordinate.

domain

real array, (2*ppm_dim), (IN)

Physical extent of whole domain including ghost layers.

Used Modules

has no uses

Subroutine inemptylist

Given the cell index, this function checks whether the cell is in empty list or not and returns TRUE if inside.

Arguments

name type dimension intent optional description

c_idx

integer

(IN)

Cell index

c_idx

integer, , (IN)

Cell index

Used Modules

has no uses

Subroutine inl_xset_vlist_d

Inhomogeneous cross-set neighborlists. This routine provides Verlet-list-like neighbor lists of particles of one set (blue) to a set of other particles (red). The neighborlists are built analogous to the inhomogenous neighborlists described in Awile2011. The red particles are assumed to have interaction radius = domain size and we use the same neighborhood relation as in INL.

Arguments

name type dimension intent optional description

topoid

integer

(IN)

ID of the topology.

red

real array

(:,:)

(IN)

Coordinates array for reference particles (red)

nred

integer

(IN)

Number of real red particles

mred

integer

(IN)

Number of all red particles including ghost particles

blue

real array

(:,:)

(IN)

Coordinates array for neighbor particle set (blue)

nblue

integer

(IN)

Number of real blue particles

mblue

integer

(IN)

Number of all blue particles including ghost particles

rcblue

real array

(:)

(IN)

Blue particle cutoff radii array

skin

real

(IN)

Skin parameter

ghostlayer

real array

(2*ppm_dim)

(IN)

Extra area/volume over the actual domain introduced by

info

integer

(OUT)

Info to be RETURNed. 0 if SUCCESSFUL.

vlist

integer array

(:,:)

verlet lists. vlist(3, 6) is the 3rd neighbor of particle 6.

nvlist

integer array

(:)

number of neighbors of particles. nvlist(i) is number of

lstore

logical

(IN)

X

OPTIONAL logical parameter to choose whether to store

topoid

integer, , (IN)

ID of the topology.

red

real array, (:,:), (IN)

Coordinates array for reference particles (red)

nred

integer, , (IN)

Number of real red particles

mred

integer, , (IN)

Number of all red particles including ghost particles

blue

real array, (:,:), (IN)

Coordinates array for neighbor particle set (blue)

nblue

integer, , (IN)

Number of real blue particles

mblue

integer, , (IN)

Number of all blue particles including ghost particles

rcblue

real array, (:), (IN)

Blue particle cutoff radii array

skin

real, , (IN)

Skin parameter

ghostlayer

real array, (2*ppm_dim), (IN)

Extra area/volume over the actual domain introduced by ghost layers.

info

integer, , (OUT)

Info to be RETURNed. 0 if SUCCESSFUL.

vlist

integer array, (:,:), no intent declared

verlet lists. vlist(3, 6) is the 3rd neighbor of particle 6.

nvlist

integer array, (:), no intent declared

number of neighbors of particles. nvlist(i) is number of neighbors particle i has.

(Optional) lstore

logical, , (IN)

OPTIONAL logical parameter to choose whether to store vlist or not. By default, it is set to TRUE.

Used Modules

has no uses

Subroutine inl_xset_vlist_s

Inhomogeneous cross-set neighborlists. This routine provides Verlet-list-like neighbor lists of particles of one set (blue) to a set of other particles (red). The neighborlists are built analogous to the inhomogenous neighborlists described in Awile2011. The red particles are assumed to have interaction radius = domain size and we use the same neighborhood relation as in INL.

Arguments

name type dimension intent optional description

topoid

integer

(IN)

ID of the topology.

red

real array

(:,:)

(IN)

Coordinates array for reference particles (red)

nred

integer

(IN)

Number of real red particles

mred

integer

(IN)

Number of all red particles including ghost particles

blue

real array

(:,:)

(IN)

Coordinates array for neighbor particle set (blue)

nblue

integer

(IN)

Number of real blue particles

mblue

integer

(IN)

Number of all blue particles including ghost particles

rcblue

real array

(:)

(IN)

Blue particle cutoff radii array

skin

real

(IN)

Skin parameter

ghostlayer

real array

(2*ppm_dim)

(IN)

Extra area/volume over the actual domain introduced by

info

integer

(OUT)

Info to be RETURNed. 0 if SUCCESSFUL.

vlist

integer array

(:,:)

verlet lists. vlist(3, 6) is the 3rd neighbor of particle 6.

nvlist

integer array

(:)

number of neighbors of particles. nvlist(i) is number of

lstore

logical

(IN)

X

OPTIONAL logical parameter to choose whether to store

topoid

integer, , (IN)

ID of the topology.

red

real array, (:,:), (IN)

Coordinates array for reference particles (red)

nred

integer, , (IN)

Number of real red particles

mred

integer, , (IN)

Number of all red particles including ghost particles

blue

real array, (:,:), (IN)

Coordinates array for neighbor particle set (blue)

nblue

integer, , (IN)

Number of real blue particles

mblue

integer, , (IN)

Number of all blue particles including ghost particles

rcblue

real array, (:), (IN)

Blue particle cutoff radii array

skin

real, , (IN)

Skin parameter

ghostlayer

real array, (2*ppm_dim), (IN)

Extra area/volume over the actual domain introduced by ghost layers.

info

integer, , (OUT)

Info to be RETURNed. 0 if SUCCESSFUL.

vlist

integer array, (:,:), no intent declared

verlet lists. vlist(3, 6) is the 3rd neighbor of particle 6.

nvlist

integer array, (:), no intent declared

number of neighbors of particles. nvlist(i) is number of neighbors particle i has.

(Optional) lstore

logical, , (IN)

OPTIONAL logical parameter to choose whether to store vlist or not. By default, it is set to TRUE.

Used Modules

has no uses

Subroutine is_xset_neighbor_d

Given indices of two particles, checks whether the euclidian distance is smaller than the sum of minimum cutoff radius of these particles and the skin, then RETURNs TRUE if so. Works for nD.

Arguments

name type dimension intent optional description

red_idx

integer

(IN)

Index of first particle

blue_idx

integer

(IN)

Index of second particle

red

real array

(:,:)

(IN)

Coordinate array of particles (red)

rcred

real array

(:)

(IN)

Cutoff radii of particles (red)

blue

real array

(:,:)

(IN)

Coordinate array of particles (blue)

rcblue

real array

(:)

(IN)

Cutoff radii of particles (blue)

skin

real

(IN)

Skin parameter

red_idx

integer, , (IN)

Index of first particle

blue_idx

integer, , (IN)

Index of second particle

red

real array, (:,:), (IN)

Coordinate array of particles (red)

rcred

real array, (:), (IN)

Cutoff radii of particles (red)

blue

real array, (:,:), (IN)

Coordinate array of particles (blue)

rcblue

real array, (:), (IN)

Cutoff radii of particles (blue)

skin

real, , (IN)

Skin parameter

Used Modules

has no uses

Subroutine is_xset_neighbor_s

Given indices of two particles, checks whether the euclidian distance is smaller than the sum of minimum cutoff radius of these particles and the skin, then RETURNs TRUE if so. Works for nD.

Arguments

name type dimension intent optional description

red_idx

integer

(IN)

Index of first particle

blue_idx

integer

(IN)

Index of second particle

red

real array

(:,:)

(IN)

Coordinate array of particles (red)

rcred

real array

(:)

(IN)

Cutoff radii of particles (red)

blue

real array

(:,:)

(IN)

Coordinate array of particles (blue)

rcblue

real array

(:)

(IN)

Cutoff radii of particles (blue)

skin

real

(IN)

Skin parameter

red_idx

integer, , (IN)

Index of first particle

blue_idx

integer, , (IN)

Index of second particle

red

real array, (:,:), (IN)

Coordinate array of particles (red)

rcred

real array, (:), (IN)

Cutoff radii of particles (red)

blue

real array, (:,:), (IN)

Coordinate array of particles (blue)

rcblue

real array, (:), (IN)

Cutoff radii of particles (blue)

skin

real, , (IN)

Skin parameter

Used Modules

has no uses

Subroutine isneighbor_d

Given indices of two particles, checks whether the euclidian distance is smaller than the sum of minimum cutoff radius of these particles and the skin, then RETURNs TRUE if so. Works for nD.

Arguments

name type dimension intent optional description

p_idx

integer

(IN)

Index of first particle

p_neigh

integer

(IN)

Index of second particle

xp

real array

(:,:)

(IN)

Coordinate array of particles

cutoff

real array

(:)

(IN)

Cutoff radii of particles

skin

real

(IN)

Skin parameter

p_idx

integer, , (IN)

Index of first particle

p_neigh

integer, , (IN)

Index of second particle

xp

real array, (:,:), (IN)

Coordinate array of particles

cutoff

real array, (:), (IN)

Cutoff radii of particles

skin

real, , (IN)

Skin parameter

Used Modules

has no uses

Subroutine isneighbor_s

Given indices of two particles, checks whether the euclidian distance is smaller than the sum of minimum cutoff radius of these particles and the skin, then RETURNs TRUE if so. Works for nD.

Arguments

name type dimension intent optional description

p_idx

integer

(IN)

Index of first particle

p_neigh

integer

(IN)

Index of second particle

xp

real array

(:,:)

(IN)

Coordinate array of particles

cutoff

real array

(:)

(IN)

Cutoff radii of particles

skin

real

(IN)

Skin parameter

p_idx

integer, , (IN)

Index of first particle

p_neigh

integer, , (IN)

Index of second particle

xp

real array, (:,:), (IN)

Coordinate array of particles

cutoff

real array, (:), (IN)

Cutoff radii of particles

skin

real, , (IN)

Skin parameter

Used Modules

has no uses

Subroutine putinemptylist

Given the index of the cell, this subroutine stores the cell index in the empty list. In case of insufficient list size, allocates a larger array and copies the content within into the new array.

Arguments

name type dimension intent optional description

c_idx

integer

(IN)

Index of the cell

c_idx

integer, , (IN)

Index of the cell

Used Modules

has no uses

Defined Module Variables

name type dimension description

blue_clist

ppm_clist

empty_list

integer array

(:)

empty_pos

integer

max_nneigh

integer

ncells

integer array

(:,:)

neigh_blue

integer array

(:)

neigh_nblue

integer

neigh_nred

integer

neigh_red

integer array

(:)

own_blue

integer array

(:)

own_nblue

integer

own_nred

integer

own_red

integer array

(:)

red_clist

ppm_clist

used

logical array

(:)

blue_clist

ppm_clist,

empty_list

integer array, (:)

empty_pos

integer,

max_nneigh

integer,

ncells

integer array, (:,:)

neigh_blue

integer array, (:)

neigh_nblue

integer,

neigh_nred

integer,

neigh_red

integer array, (:)

own_blue

integer array, (:)

own_nblue

integer,

own_nred

integer,

own_red

integer array, (:)

red_clist

ppm_clist,

used

logical array, (:)

Used Modules

ppm_module_data, ppm_module_error, ppm_module_alloc, ppm_module_substop, ppm_module_inl_clist, ppm_module_substart