Module ppm_module_inl_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

inemptylist

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

is_xset_neighbor_d

Given indices of two particles, checks whether the euclidian distance

is_xset_neighbor_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_neigh

Subroutines contained in this interface:

name description

count_neigh_s

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

count_neigh_d

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

Interface count_neigh_sym

Subroutines contained in this interface:

Interface create_inl_vlist

Subroutines contained in this interface:

name description

create_inl_vlist_s

This subroutine creates verlet lists for particles whose coordinates

create_inl_vlist_d

This subroutine creates verlet lists for particles whose coordinates

Interface cross_neighbor

Subroutines contained in this interface:

name description

cross_neighbor_s

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

cross_neighbor_d

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

Interface get_neigh

Subroutines contained in this interface:

name description

get_neigh_s

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

get_neigh_d

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

Interface get_neigh_sym

Subroutines contained in this interface:

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 getverletlists

Subroutines contained in this interface:

name description

getverletlists_s

This subroutine allocates nvlist and fills it with number of

getverletlists_d

This subroutine allocates nvlist and fills it with number of

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 isneighbor

Subroutines contained in this interface:

name description

isneighbor_s

Given indices of two particles, checks whether the euclidian distance

isneighbor_d

Given indices of two particles, checks whether the euclidian distance

Interface ppm_inl_vlist

Subroutines contained in this interface:

name description

inl_vlist_s

inl_vlist_d

Subroutine count_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

p_idx

integer

(IN)

Particle index

clist

ppm_clist

(IN)

cell list

domain

real array

(2*ppm_dim)

Pysical extent of whole domain including ghost layers

xp

real array

(:,:)

(IN)

Particle coordinates

cutoff

real array

(:)

(IN)

Particle cutoff radii

skin

real

(IN)

Skin parameter

nvlist

integer array

(:)

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

p_idx

integer, , (IN)

Particle index

clist

ppm_clist, , (IN)

cell list

domain

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

Pysical extent of whole domain including ghost layers

xp

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

Particle coordinates

cutoff

real array, (:), (IN)

Particle cutoff radii

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_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

p_idx

integer

(IN)

Particle index

clist

ppm_clist

(IN)

cell list

domain

real array

(2*ppm_dim)

Pysical extent of whole domain including ghost layers

xp

real array

(:,:)

(IN)

Particle coordinates

cutoff

real array

(:)

(IN)

Particle cutoff radii

skin

real

(IN)

Skin parameter

nvlist

integer array

(:)

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

p_idx

integer, , (IN)

Particle index

clist

ppm_clist, , (IN)

cell list

domain

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

Pysical extent of whole domain including ghost layers

xp

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

Particle coordinates

cutoff

real array, (:), (IN)

Particle cutoff radii

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_neigh_sym_d

Arguments

name type dimension intent optional description

p_idx

integer

(IN)

Particle index

clist

ppm_clist

(IN)

cell list

domain

real array

(2*ppm_dim)

Pysical extent of whole domain including ghost layers

actual_domain

real array

(2*ppm_dim)

Physical extent of actual domain excluding ghost layers

xp

real array

(:,:)

(IN)

Particle coordinates

cutoff

real array

(:)

(IN)

Particle cutoff radii

skin

real

(IN)

Skin parameter

nvlist

integer array

(:)

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

p_idx

integer, , (IN)

Particle index

clist

ppm_clist, , (IN)

cell list

domain

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

Pysical extent of whole domain including ghost layers

actual_domain

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

Physical extent of actual domain excluding ghost layers

xp

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

Particle coordinates

cutoff

real array, (:), (IN)

Particle cutoff radii

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_neigh_sym_s

Arguments

name type dimension intent optional description

p_idx

integer

(IN)

Particle index

clist

ppm_clist

(IN)

cell list

domain

real array

(2*ppm_dim)

Pysical extent of whole domain including ghost layers

actual_domain

real array

(2*ppm_dim)

Physical extent of actual domain excluding ghost layers

xp

real array

(:,:)

(IN)

Particle coordinates

cutoff

real array

(:)

(IN)

Particle cutoff radii

skin

real

(IN)

Skin parameter

nvlist

integer array

(:)

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

p_idx

integer, , (IN)

Particle index

clist

ppm_clist, , (IN)

cell list

domain

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

Pysical extent of whole domain including ghost layers

actual_domain

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

Physical extent of actual domain excluding ghost layers

xp

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

Particle coordinates

cutoff

real array, (:), (IN)

Particle cutoff radii

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_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

xp

real array

(:,:)

(IN)

Particle coordinates array. F.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

skin

real

(IN)

Skin parameter

lsymm

logical

(IN)

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

actual_domain

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

xp

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

Particle coordinates array. F.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

skin

real, , (IN)

Skin parameter

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_domain

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_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

xp

real array

(:,:)

(IN)

Particle coordinates array. F.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

skin

real

(IN)

Skin parameter

lsymm

logical

(IN)

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

actual_domain

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

xp

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

Particle coordinates array. F.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

skin

real, , (IN)

Skin parameter

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_domain

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_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

p_idx

integer

(IN)

Particle index

clist

ppm_clist

(IN)

cell list

domain

real array

(2*ppm_dim)

Pysical extent of whole domain including ghost layers

xp

real array

(:,:)

(IN)

Particle coordinates

cutoff

real array

(:)

(IN)

Particle cutoff radii

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

p_idx

integer, , (IN)

Particle index

clist

ppm_clist, , (IN)

cell list

domain

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

Pysical extent of whole domain including ghost layers

xp

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

Particle coordinates

cutoff

real array, (:), (IN)

Particle cutoff radii

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_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

p_idx

integer

(IN)

Particle index

clist

ppm_clist

(IN)

cell list

domain

real array

(2*ppm_dim)

Pysical extent of whole domain including ghost layers

xp

real array

(:,:)

(IN)

Particle coordinates

cutoff

real array

(:)

(IN)

Particle cutoff radii

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

p_idx

integer, , (IN)

Particle index

clist

ppm_clist, , (IN)

cell list

domain

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

Pysical extent of whole domain including ghost layers

xp

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

Particle coordinates

cutoff

real array, (:), (IN)

Particle cutoff radii

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_neigh_sym_d

Arguments

name type dimension intent optional description

p_idx

integer

(IN)

Particle index

clist

ppm_clist

(IN)

cell list

domain

real array

(2*ppm_dim)

Pysical extent of whole domain including ghost layers

actual_domain

real array

(2*ppm_dim)

Physical extent of actual domain excluding ghost layers

xp

real array

(:,:)

(IN)

Particle coordinates

cutoff

real array

(:)

(IN)

Particle cutoff radii

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

p_idx

integer, , (IN)

Particle index

clist

ppm_clist, , (IN)

cell list

domain

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

Pysical extent of whole domain including ghost layers

actual_domain

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

Physical extent of actual domain excluding ghost layers

xp

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

Particle coordinates

cutoff

real array, (:), (IN)

Particle cutoff radii

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_neigh_sym_s

Arguments

name type dimension intent optional description

p_idx

integer

(IN)

Particle index

clist

ppm_clist

(IN)

cell list

domain

real array

(2*ppm_dim)

Pysical extent of whole domain including ghost layers

actual_domain

real array

(2*ppm_dim)

Physical extent of actual domain excluding ghost layers

xp

real array

(:,:)

(IN)

Particle coordinates

cutoff

real array

(:)

(IN)

Particle cutoff radii

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

p_idx

integer, , (IN)

Particle index

clist

ppm_clist, , (IN)

cell list

domain

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

Pysical extent of whole domain including ghost layers

actual_domain

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

Physical extent of actual domain excluding ghost layers

xp

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

Particle coordinates

cutoff

real array, (:), (IN)

Particle cutoff radii

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 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 getverletlists_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. Depending on lsymm parameter, it calls the appropriate subroutine.

Arguments

name type dimension intent optional description

xp

real array

(:,:)

(IN)

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

cutoff

real array

(:)

(IN)

Particles cutoff radii

clist

ppm_clist

(IN)

cell list

skin

real

(IN)

Skin parameter

lsymm

logical

(IN)

Logical parameter to define whether lists are symmetric or not

whole_domain

real array

(2*ppm_dim)

Physical extent of whole domain including ghost layers.

actual_domain

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

xp

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

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

cutoff

real array, (:), (IN)

Particles cutoff radii

clist

ppm_clist, , (IN)

cell list

skin

real, , (IN)

Skin parameter

lsymm

logical, , (IN)

Logical parameter to define whether lists are symmetric or not 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.

whole_domain

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

Physical extent of whole domain including ghost layers.

actual_domain

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 getverletlists_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. Depending on lsymm parameter, it calls the appropriate subroutine.

Arguments

name type dimension intent optional description

xp

real array

(:,:)

(IN)

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

cutoff

real array

(:)

(IN)

Particles cutoff radii

clist

ppm_clist

(IN)

cell list

skin

real

(IN)

Skin parameter

lsymm

logical

(IN)

Logical parameter to define whether lists are symmetric or not

whole_domain

real array

(2*ppm_dim)

Physical extent of whole domain including ghost layers.

actual_domain

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

xp

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

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

cutoff

real array, (:), (IN)

Particles cutoff radii

clist

ppm_clist, , (IN)

cell list

skin

real, , (IN)

Skin parameter

lsymm

logical, , (IN)

Logical parameter to define whether lists are symmetric or not 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.

whole_domain

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

Physical extent of whole domain including ghost layers.

actual_domain

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 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_vlist_d

Arguments

name type dimension intent optional description

topoid

integer

(IN)

ID of the topology.

xp

real array

(:,:)

(IN)

Particle coordinates array. F.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)

Particle cutoff radii array

skin

real

(IN)

Skin parameter

lsymm

logical

(IN)

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

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.

xp

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

Particle coordinates array. F.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)

Particle cutoff radii array

skin

real, , (IN)

Skin parameter

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.

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_vlist_s

Arguments

name type dimension intent optional description

topoid

integer

(IN)

ID of the topology.

xp

real array

(:,:)

(IN)

Particle coordinates array. F.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)

Particle cutoff radii array

skin

real

(IN)

Skin parameter

lsymm

logical

(IN)

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

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.

xp

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

Particle coordinates array. F.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)

Particle cutoff radii array

skin

real, , (IN)

Skin parameter

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.

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

clist

ppm_clist

empty_list

integer array

(:)

empty_pos

integer

max_nneigh

integer

ncells

integer array

(:,:)

neigh_nplist

integer

neigh_plist

integer array

(:)

own_nplist

integer

own_plist

integer array

(:)

used

logical array

(:)

clist

ppm_clist,

empty_list

integer array, (:)

empty_pos

integer,

max_nneigh

integer,

ncells

integer array, (:,:)

neigh_nplist

integer,

neigh_plist

integer array, (:)

own_nplist

integer,

own_plist

integer array, (:)

used

logical array, (:)

Used Modules

ppm_module_data, ppm_module_error, ppm_module_alloc, ppm_module_substop, ppm_module_inl_clist, ppm_module_substart