(git:3add494)
qs_fb_atomic_halo_types Module Reference

Functions/Subroutines

subroutine, public fb_atomic_halo_release (atomic_halo)
 Releases an fb_atomic_halo object. More...
 
subroutine, public fb_atomic_halo_nullify (atomic_halo)
 Nullifies a fb_atomic_halo object, note that it does not release the original object. This procedure is used to nullify the pointer contained in the object which is used to associate to the actual object content. More...
 
logical function, public fb_atomic_halo_has_data (atomic_halo)
 Checks if a fb_atomic_halo object is associated with an actual data content or not. More...
 
subroutine, public fb_atomic_halo_create (atomic_halo)
 Creates and initialises an empty fb_atomic_halo object. More...
 
subroutine, public fb_atomic_halo_init (atomic_halo)
 Initialises an fb_atomic_halo object, and makes it empty. More...
 
subroutine, public fb_atomic_halo_get (atomic_halo, owner_atom, owner_id_in_halo, natoms, nelectrons, halo_atoms, sorted, cost)
 Gets attributes from a fb_atomic_halo object, one should only access the data content in a fb_atomic_halo outside this module via this procedure. More...
 
subroutine, public fb_atomic_halo_set (atomic_halo, owner_atom, owner_id_in_halo, natoms, nelectrons, halo_atoms, sorted, cost)
 Sets attributes in a fb_atomic_halo object, one should only set the data content in a fb_atomic_halo from outside this module via this procedure. More...
 
subroutine, public fb_atomic_halo_sort (atomic_halo)
 Sort the list of atomic indices in the halo in ascending order. The atomic_halo must not be empty. More...
 
subroutine, public fb_atomic_halo_atom_global2halo (atomic_halo, iatom_global, iatom_halo, found)
 Given a global atomic index, convert it to its index in a given atomic halo, if found. The atomic_halo object must already have been sorted. More...
 
integer function, public fb_atomic_halo_nelectrons_estimate_z (atomic_halo, particle_set)
 Estimates the total number of electrons in a halo using atomic numbers. More...
 
real(kind=dp) function, public fb_atomic_halo_cost (atomic_halo, particle_set, qs_kind_set)
 Estimates the computational cost with respect to the filter matrix calculation associated to an atomic halo. Given the bottle neck of the filter matrix generation will be the diagoanlisation of the atomic matrices (each consists of atoms in an atomic halo), the cost can be estimated by counting the total number of contracted gaussians in the halo. More...
 
subroutine, public fb_atomic_halo_build_halo_atoms (owner_atom, particle_set, cell, pair_radii, halo_atoms, nhalo_atoms, owner_id_in_halo)
 Builds halo atoms for a given (owner) atom. More...
 
subroutine, public fb_atomic_halo_list_release (atomic_halos)
 Releases an fb_atomic_halo_list object. More...
 
subroutine, public fb_atomic_halo_list_nullify (atomic_halos)
 Nullifies a fb_atomic_halo_list object, note that it does not release the original object. This procedure is used to nullify the pointer contained in the object which is used to associate to the actual object content. More...
 
logical function, public fb_atomic_halo_list_has_data (atomic_halos)
 Checks if a fb_atomic_halo_list object is associated with an actual data content or not. More...
 
subroutine, public fb_atomic_halo_list_associate (a, b)
 Associates one fb_atomic_halo_list object to another. More...
 
subroutine, public fb_atomic_halo_list_create (atomic_halos)
 Creates and initialises an empty fb_atomic_halo_list object. More...
 
subroutine, public fb_atomic_halo_list_get (atomic_halos, nhalos, max_nhalos, halos)
 Gets attributes from an fb_atomic_halo_list object, one should only access the data content in a fb_atomic_halo_list outside this module via this procedure. More...
 
subroutine, public fb_atomic_halo_list_set (atomic_halos, nhalos, max_nhalos, halos)
 Sets attributes from an fb_atomic_halo_list object, one should only set the data content in a fb_atomic_halo_list outside this module via this procedure. More...
 
subroutine, public fb_atomic_halo_list_write_info (atomic_halos, para_env, scf_section)
 Writes out the atomic halo list summary, no detailed neighbour lists, just average, min and max number of halo atoms in the halo list. More...
 
pure subroutine, public fb_build_pair_radii (rcut, nkinds, pair_radii)
 Builds the required pair_radii array required for building the halo atoms from a given set of cut off radii. More...
 

Function/Subroutine Documentation

◆ fb_atomic_halo_release()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_release ( type(fb_atomic_halo_obj), intent(inout)  atomic_halo)

Releases an fb_atomic_halo object.

Parameters
atomic_halothe fb_atomic_halo object, its content must not be UNDEFINED, and the subroutine does nothing if the content points to NULL
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 129 of file qs_fb_atomic_halo_types.F.

Here is the caller graph for this function:

◆ fb_atomic_halo_nullify()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_nullify ( type(fb_atomic_halo_obj), intent(inout)  atomic_halo)

Nullifies a fb_atomic_halo object, note that it does not release the original object. This procedure is used to nullify the pointer contained in the object which is used to associate to the actual object content.

Parameters
atomic_halothe fb_atomic_halo object
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 154 of file qs_fb_atomic_halo_types.F.

Here is the caller graph for this function:

◆ fb_atomic_halo_has_data()

logical function, public qs_fb_atomic_halo_types::fb_atomic_halo_has_data ( type(fb_atomic_halo_obj), intent(in)  atomic_halo)

Checks if a fb_atomic_halo object is associated with an actual data content or not.

Parameters
atomic_halothe fb_atomic_halo object
Returns
...
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 180 of file qs_fb_atomic_halo_types.F.

Here is the caller graph for this function:

◆ fb_atomic_halo_create()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_create ( type(fb_atomic_halo_obj), intent(inout)  atomic_halo)

Creates and initialises an empty fb_atomic_halo object.

Parameters
atomic_halothe fb_atomic_halo object, its content must be NULL and cannot be UNDEFINED
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 193 of file qs_fb_atomic_halo_types.F.

Here is the caller graph for this function:

◆ fb_atomic_halo_init()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_init ( type(fb_atomic_halo_obj), intent(inout)  atomic_halo)

Initialises an fb_atomic_halo object, and makes it empty.

Parameters
atomic_halothe fb_atomic_halo object, its content must not be NULL or UNDEFINED
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 213 of file qs_fb_atomic_halo_types.F.

Here is the caller graph for this function:

◆ fb_atomic_halo_get()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_get ( type(fb_atomic_halo_obj), intent(in)  atomic_halo,
integer, intent(out), optional  owner_atom,
integer, intent(out), optional  owner_id_in_halo,
integer, intent(out), optional  natoms,
integer, intent(out), optional  nelectrons,
integer, dimension(:), optional, pointer  halo_atoms,
logical, intent(out), optional  sorted,
real(kind=dp), intent(out), optional  cost 
)

Gets attributes from a fb_atomic_halo object, one should only access the data content in a fb_atomic_halo outside this module via this procedure.

Parameters
atomic_halothe fb_atomic_halo object, its content must not be NULL or UNDEFINED
owner_atom[OPTIONAL]: if present, outputs atmic_haloobjowner_atom
owner_id_in_halo...
natoms[OPTIONAL]: if present, outputs atomic_haloobjnatoms
nelectrons[OPTIONAL]: if present, outputs atomic_haloobjnelectrons
halo_atoms[OPTIONAL]: if present, outputs pointer atomic_haloobjhalo_atoms
sorted[OPTIONAL]: if present, outputs atomic_haloobjsorted
cost[OPTIONAL]: if present, outputs atomic_haloobjcost
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 245 of file qs_fb_atomic_halo_types.F.

Here is the caller graph for this function:

◆ fb_atomic_halo_set()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_set ( type(fb_atomic_halo_obj), intent(inout)  atomic_halo,
integer, intent(in), optional  owner_atom,
integer, intent(in), optional  owner_id_in_halo,
integer, intent(in), optional  natoms,
integer, intent(in), optional  nelectrons,
integer, dimension(:), optional, pointer  halo_atoms,
logical, intent(in), optional  sorted,
real(kind=dp), intent(in), optional  cost 
)

Sets attributes in a fb_atomic_halo object, one should only set the data content in a fb_atomic_halo from outside this module via this procedure.

Parameters
atomic_halothe fb_atomic_halo object, its content must not be NULL or UNDEFINED
owner_atom[OPTIONAL]: if present, sets atmic_haloobjowner_atom = owner_atom
owner_id_in_halo...
natoms[OPTIONAL]: if present, sets atomic_haloobjnatoms = natoms
nelectrons[OPTIONAL]: if present, sets atomic_haloobjnelectrons = nelectrons
halo_atoms[OPTIONAL]: if present, reallocates atomic_haloobjhalo_atoms to the size of halo_atoms, and copies contents of halo_atoms to atomic_haloobjhalo_atoms
sorted[OPTIONAL]: if present, sets atomic_haloobjsorted = sorted
cost[OPTIONAL]: if present, sets atomic_haloobjcost = cost
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 288 of file qs_fb_atomic_halo_types.F.

Here is the caller graph for this function:

◆ fb_atomic_halo_sort()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_sort ( type(fb_atomic_halo_obj), intent(inout)  atomic_halo)

Sort the list of atomic indices in the halo in ascending order. The atomic_halo must not be empty.

Parameters
atomic_halothe atomic_halo object
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 325 of file qs_fb_atomic_halo_types.F.

Here is the caller graph for this function:

◆ fb_atomic_halo_atom_global2halo()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_atom_global2halo ( type(fb_atomic_halo_obj), intent(in)  atomic_halo,
integer, intent(in)  iatom_global,
integer, intent(out)  iatom_halo,
logical, intent(out)  found 
)

Given a global atomic index, convert it to its index in a given atomic halo, if found. The atomic_halo object must already have been sorted.

Parameters
atomic_halothe atomic_halo object
iatom_globalthe global atomic index
iatom_halothe atomic index inside the halo
foundreturns true if given atom is in the halo, otherwise false
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 348 of file qs_fb_atomic_halo_types.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fb_atomic_halo_nelectrons_estimate_z()

integer function, public qs_fb_atomic_halo_types::fb_atomic_halo_nelectrons_estimate_z ( type(fb_atomic_halo_obj), intent(in)  atomic_halo,
type(particle_type), dimension(:), intent(in)  particle_set 
)

Estimates the total number of electrons in a halo using atomic numbers.

Parameters
atomic_halothe atomic_halo object
particle_setan array of cp2k particle set objects (this gives atomic information)
Returns
estimate of electron number
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 384 of file qs_fb_atomic_halo_types.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fb_atomic_halo_cost()

real(kind=dp) function, public qs_fb_atomic_halo_types::fb_atomic_halo_cost ( type(fb_atomic_halo_obj), intent(in)  atomic_halo,
type(particle_type), dimension(:), intent(in)  particle_set,
type(qs_kind_type), dimension(:), intent(in)  qs_kind_set 
)

Estimates the computational cost with respect to the filter matrix calculation associated to an atomic halo. Given the bottle neck of the filter matrix generation will be the diagoanlisation of the atomic matrices (each consists of atoms in an atomic halo), the cost can be estimated by counting the total number of contracted gaussians in the halo.

Parameters
atomic_halo: the atomic_halo object in question
particle_set: an array of cp2k particle set objects, this provides atomic information
qs_kind_set: cp2k qs_kind objects, provides information on the number of contracted gaussian functions each kind has
Returns
: computation cost w.r.t. the filter matrix calculation for this atomic halo
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 421 of file qs_fb_atomic_halo_types.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fb_atomic_halo_build_halo_atoms()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_build_halo_atoms ( integer, intent(in)  owner_atom,
type(particle_type), dimension(:), intent(in)  particle_set,
type(cell_type), pointer  cell,
real(kind=dp), dimension(:, :), intent(in)  pair_radii,
integer, dimension(:), pointer  halo_atoms,
integer, intent(out)  nhalo_atoms,
integer, intent(out)  owner_id_in_halo 
)

Builds halo atoms for a given (owner) atom.

Parameters
owner_atom: the atom the halo is going to be built for
particle_set: an array of cp2k particle set objects, this provides atomic information
cell: cp2k cell object, used for resolving periodic boundary conditions
pair_radii: 2D array storing interaction radii between two kinds
halo_atoms: must be NULL pointer on input, and outputs an array of halo atoms corresponding to the owner atom
nhalo_atoms: outputs number of halo atoms
owner_id_in_halo: the index of the owner atom in the halo_atoms list
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 459 of file qs_fb_atomic_halo_types.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fb_atomic_halo_list_release()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_list_release ( type(fb_atomic_halo_list_obj), intent(inout)  atomic_halos)

Releases an fb_atomic_halo_list object.

Parameters
atomic_halosthe fb_atomic_halo object, its content must not be UNDEFINED, and does nothing if it is NULL
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 522 of file qs_fb_atomic_halo_types.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fb_atomic_halo_list_nullify()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_list_nullify ( type(fb_atomic_halo_list_obj), intent(inout)  atomic_halos)

Nullifies a fb_atomic_halo_list object, note that it does not release the original object. This procedure is used to nullify the pointer contained in the object which is used to associate to the actual object content.

Parameters
atomic_halosthe fb_atomic_halo_list object
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 548 of file qs_fb_atomic_halo_types.F.

Here is the caller graph for this function:

◆ fb_atomic_halo_list_has_data()

logical function, public qs_fb_atomic_halo_types::fb_atomic_halo_list_has_data ( type(fb_atomic_halo_list_obj), intent(in)  atomic_halos)

Checks if a fb_atomic_halo_list object is associated with an actual data content or not.

Parameters
atomic_halosthe fb_atomic_halo_list object
Returns
...
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 561 of file qs_fb_atomic_halo_types.F.

◆ fb_atomic_halo_list_associate()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_list_associate ( type(fb_atomic_halo_list_obj), intent(out)  a,
type(fb_atomic_halo_list_obj), intent(in)  b 
)

Associates one fb_atomic_halo_list object to another.

Parameters
athe fb_atomic_halo_list object to be associated
bthe fb_atomic_halo_list object that a is to be associated to
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 574 of file qs_fb_atomic_halo_types.F.

Here is the caller graph for this function:

◆ fb_atomic_halo_list_create()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_list_create ( type(fb_atomic_halo_list_obj), intent(inout)  atomic_halos)

Creates and initialises an empty fb_atomic_halo_list object.

Parameters
atomic_halosthe fb_atomic_halo object, its content must not be NULL or UNDEFINED
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 587 of file qs_fb_atomic_halo_types.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fb_atomic_halo_list_get()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_list_get ( type(fb_atomic_halo_list_obj), intent(in)  atomic_halos,
integer, intent(out), optional  nhalos,
integer, intent(out), optional  max_nhalos,
type(fb_atomic_halo_obj), dimension(:), optional, pointer  halos 
)

Gets attributes from an fb_atomic_halo_list object, one should only access the data content in a fb_atomic_halo_list outside this module via this procedure.

Parameters
atomic_halosthe fb_atomic_halo object, its content must not be NULL or UNDEFINED
nhalos[OPTIONAL]: if present, gives nhalos = atomic_halosobjnhalos
max_nhalos[OPTIONAL]: if present, gives max_nhalos = atomic_halosobjmax_nhalos
halos[OPTIONAL]: if present, gives halos => atomic_halosobjhalos
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 631 of file qs_fb_atomic_halo_types.F.

Here is the caller graph for this function:

◆ fb_atomic_halo_list_set()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_list_set ( type(fb_atomic_halo_list_obj), intent(inout)  atomic_halos,
integer, intent(in), optional  nhalos,
integer, intent(in), optional  max_nhalos,
type(fb_atomic_halo_obj), dimension(:), optional, pointer  halos 
)

Sets attributes from an fb_atomic_halo_list object, one should only set the data content in a fb_atomic_halo_list outside this module via this procedure.

Parameters
atomic_halosthe fb_atomic_halo object, its content must not be NULL or UNDEFINED
nhalos[OPTIONAL]: if present, sets atomic_halosobjnhalos = nhalos
max_nhalos[OPTIONAL]: if present, sets atomic_halosobjmax_nhalos = max_nhalos
halos[OPTIONAL]: if present, reallocates atomic_halosobjhalos to the size of halos
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 655 of file qs_fb_atomic_halo_types.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fb_atomic_halo_list_write_info()

subroutine, public qs_fb_atomic_halo_types::fb_atomic_halo_list_write_info ( type(fb_atomic_halo_list_obj), intent(in)  atomic_halos,
type(mp_para_env_type), pointer  para_env,
type(section_vals_type), pointer  scf_section 
)

Writes out the atomic halo list summary, no detailed neighbour lists, just average, min and max number of halo atoms in the halo list.

Parameters
atomic_halos: the fb_atomic_halo object
para_env: pointer to a para_env_type object containing MPI info
scf_section: pointer to the scf input section
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 755 of file qs_fb_atomic_halo_types.F.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ fb_build_pair_radii()

pure subroutine, public qs_fb_atomic_halo_types::fb_build_pair_radii ( real(kind=dp), dimension(:), intent(in)  rcut,
integer, intent(in)  nkinds,
real(kind=dp), dimension(:, :), intent(out)  pair_radii 
)

Builds the required pair_radii array required for building the halo atoms from a given set of cut off radii.

Parameters
rcut: rcut(ikind) is the cutoff radii for determining the halo corresponding to atomic kind ikind
nkinds: total number of atomic kinds in rcut
pair_radii: output array pair_radii(ikind,jkind) gives the corresponding interaction range between a pair of atoms of kinds ikind and jkind
Author
Lianheng Tong (LT) lianh.nosp@m.eng..nosp@m.tong@.nosp@m.kcl..nosp@m.ac.uk

Definition at line 825 of file qs_fb_atomic_halo_types.F.

Here is the caller graph for this function: