![]() |
(git:b77b4be)
|
Data Types | |
type | fb_atomic_halo_list_obj |
defines a fb_atomic_halo_list object More... | |
type | fb_atomic_halo_obj |
defines a fb_atomic_halo object More... | |
Functions/Subroutines | |
subroutine, public | fb_atomic_halo_release (atomic_halo) |
Releases an fb_atomic_halo object. | |
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. | |
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. | |
subroutine, public | fb_atomic_halo_create (atomic_halo) |
Creates and initialises an empty fb_atomic_halo object. | |
subroutine, public | fb_atomic_halo_init (atomic_halo) |
Initialises an fb_atomic_halo object, and makes it empty. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
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. | |
subroutine, public | fb_atomic_halo_list_release (atomic_halos) |
Releases an fb_atomic_halo_list object. | |
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. | |
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. | |
subroutine, public | fb_atomic_halo_list_associate (a, b) |
Associates one fb_atomic_halo_list object to another. | |
subroutine, public | fb_atomic_halo_list_create (atomic_halos) |
Creates and initialises an empty fb_atomic_halo_list object. | |
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. | |
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. | |
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. | |
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. | |
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.
atomic_halo | the fb_atomic_halo object, its content must not be UNDEFINED, and the subroutine does nothing if the content points to NULL |
Definition at line 129 of file qs_fb_atomic_halo_types.F.
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.
atomic_halo | the fb_atomic_halo object |
Definition at line 154 of file qs_fb_atomic_halo_types.F.
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.
atomic_halo | the fb_atomic_halo object |
Definition at line 180 of file qs_fb_atomic_halo_types.F.
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.
atomic_halo | the fb_atomic_halo object, its content must be NULL and cannot be UNDEFINED |
Definition at line 193 of file qs_fb_atomic_halo_types.F.
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.
atomic_halo | the fb_atomic_halo object, its content must not be NULL or UNDEFINED |
Definition at line 213 of file qs_fb_atomic_halo_types.F.
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.
atomic_halo | the 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 |
Definition at line 245 of file qs_fb_atomic_halo_types.F.
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.
atomic_halo | the 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 |
Definition at line 288 of file qs_fb_atomic_halo_types.F.
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.
atomic_halo | the atomic_halo object |
Definition at line 325 of file qs_fb_atomic_halo_types.F.
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.
atomic_halo | the atomic_halo object |
iatom_global | the global atomic index |
iatom_halo | the atomic index inside the halo |
found | returns true if given atom is in the halo, otherwise false |
Definition at line 348 of file qs_fb_atomic_halo_types.F.
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.
atomic_halo | the atomic_halo object |
particle_set | an array of cp2k particle set objects (this gives atomic information) |
Definition at line 384 of file qs_fb_atomic_halo_types.F.
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.
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 |
Definition at line 421 of file qs_fb_atomic_halo_types.F.
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.
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 |
Definition at line 459 of file qs_fb_atomic_halo_types.F.
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.
atomic_halos | the fb_atomic_halo object, its content must not be UNDEFINED, and does nothing if it is NULL |
Definition at line 522 of file qs_fb_atomic_halo_types.F.
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.
atomic_halos | the fb_atomic_halo_list object |
Definition at line 548 of file qs_fb_atomic_halo_types.F.
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.
atomic_halos | the fb_atomic_halo_list object |
Definition at line 561 of file qs_fb_atomic_halo_types.F.
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.
a | the fb_atomic_halo_list object to be associated |
b | the fb_atomic_halo_list object that a is to be associated to |
Definition at line 574 of file qs_fb_atomic_halo_types.F.
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.
atomic_halos | the fb_atomic_halo object, its content must not be NULL or UNDEFINED |
Definition at line 587 of file qs_fb_atomic_halo_types.F.
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.
atomic_halos | the 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 |
Definition at line 631 of file qs_fb_atomic_halo_types.F.
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.
atomic_halos | the 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 |
Definition at line 655 of file qs_fb_atomic_halo_types.F.
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.
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 |
Definition at line 755 of file qs_fb_atomic_halo_types.F.
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.
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 |
Definition at line 825 of file qs_fb_atomic_halo_types.F.