...
source: qs_fb_atomic_halo_types.Fdefines a fb_atomic_halo_list object
TYPE(fb_atomic_halo_list_data), |
POINTER, PRIVATE | :: | obj | ... |
defines a fb_atomic_halo object
TYPE(fb_atomic_halo_data), |
POINTER, PRIVATE | :: | obj | ... |
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
TYPE(fb_atomic_halo_obj), |
INTENT(in) |
:: | atomic_halo | the atomic_halo object | |
INTEGER, |
INTENT(in) |
:: | iatom_global | the global atomic index | |
INTEGER, |
INTENT(out) |
:: | iatom_halo | the atomic index inside the halo | |
LOGICAL, |
INTENT(out) |
:: | found | returns true if given atom is in the halo, otherwise false |
Builds halo atoms for a given (owner) atom
INTEGER, |
INTENT(in) |
:: | owner_atom | the atom the halo is going to be built for | |
TYPE(particle_type), |
INTENT(in) |
:: | particle_set(:) | an array of cp2k particle set objects, this provides atomic information | |
TYPE(cell_type), |
POINTER |
:: | cell | cp2k cell object, used for resolving periodic boundary conditions | |
REAL(dp), |
INTENT(in) |
:: | pair_radii(:,:) | 2D array storing interaction radii between two kinds | |
INTEGER, |
POINTER |
:: | halo_atoms(:) | must be NULL pointer on input, and outputs an array of halo atoms corresponding to the owner atom | |
INTEGER, |
INTENT(out) |
:: | nhalo_atoms | outputs number of halo atoms | |
INTEGER, |
INTENT(out) |
:: | owner_id_in_halo | the index of the owner atom in the halo_atoms list |
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
Return Value | :: | REAL(dp) |
TYPE(fb_atomic_halo_obj), |
INTENT(in) |
:: | atomic_halo | the atomic_halo object in question | |
TYPE(particle_type), |
INTENT(in) |
:: | particle_set(:) | an array of cp2k particle set objects, this provides atomic information | |
TYPE(qs_kind_type), |
INTENT(in) |
:: | qs_kind_set(:) | cp2k qs_kind objects, provides information on the number of contracted gaussian functions each kind has |
Creates and initialises an empty fb_atomic_halo object
TYPE(fb_atomic_halo_obj), |
INTENT(inout) |
:: | atomic_halo | the fb_atomic_halo object, its content must be NULL and cannot be UNDEFINED |
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.
TYPE(fb_atomic_halo_obj), |
INTENT(in) |
:: | atomic_halo | the fb_atomic_halo object, its content must not be NULL or UNDEFINED | |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | owner_atom | if present, outputs atmic_halo%obj%owner_atom |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | owner_id_in_halo | ... |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | natoms | if present, outputs atomic_halo%obj%natoms |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | nelectrons | if present, outputs atomic_halo%obj%nelectrons |
INTEGER, |
OPTIONAL, POINTER |
:: | halo_atoms(:) | if present, outputs pointer atomic_halo%obj%halo_atoms | |
LOGICAL, |
INTENT(out), |
OPTIONAL |
:: | sorted | if present, outputs atomic_halo%obj%sorted |
REAL(dp), |
INTENT(out), |
OPTIONAL |
:: | cost | if present, outputs atomic_halo%obj%cost |
Checks if a fb_atomic_halo object is associated with an actual data content or not
Return Value | :: | LOGICAL |
TYPE(fb_atomic_halo_obj), |
INTENT(in) |
:: | atomic_halo | the fb_atomic_halo object |
Initialises an fb_atomic_halo object, and makes it empty
TYPE(fb_atomic_halo_obj), |
INTENT(inout) |
:: | atomic_halo | the fb_atomic_halo object, its content must not be NULL or UNDEFINED |
Associates one fb_atomic_halo_list object to another
TYPE(fb_atomic_halo_list_obj), |
INTENT(out) |
:: | a | the fb_atomic_halo_list object to be associated | |
TYPE(fb_atomic_halo_list_obj), |
INTENT(in) |
:: | b | the fb_atomic_halo_list object that a is to be associated to |
Creates and initialises an empty fb_atomic_halo_list object
TYPE(fb_atomic_halo_list_obj), |
INTENT(inout) |
:: | atomic_halos | the fb_atomic_halo object, its content must not be NULL or UNDEFINED |
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.
TYPE(fb_atomic_halo_list_obj), |
INTENT(in) |
:: | atomic_halos | the fb_atomic_halo object, its content must not be NULL or UNDEFINED | |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | nhalos | if present, gives nhalos = atomic_halos%obj%nhalos |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | max_nhalos | if present, gives max_nhalos = atomic_halos%obj%max_nhalos |
TYPE(fb_atomic_halo_obj), |
OPTIONAL, POINTER |
:: | halos(:) | if present, gives halos => atomic_halos%obj%halos |
Checks if a fb_atomic_halo_list object is associated with an actual data content or not
Return Value | :: | LOGICAL |
TYPE(fb_atomic_halo_list_obj), |
INTENT(in) |
:: | atomic_halos | the fb_atomic_halo_list object |
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
TYPE(fb_atomic_halo_list_obj), |
INTENT(inout) |
:: | atomic_halos | the fb_atomic_halo_list object |
Releases an fb_atomic_halo_list object
TYPE(fb_atomic_halo_list_obj), |
INTENT(inout) |
:: | atomic_halos | the fb_atomic_halo object, its content must not be UNDEFINED, and does nothing if it is NULL |
Retains an fb_atomic_halo_list object
TYPE(fb_atomic_halo_list_obj), |
INTENT(in) |
:: | atomic_halos | the fb_atomic_halo object, its content must not be NULL or UNDEFINED |
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.
TYPE(fb_atomic_halo_list_obj), |
INTENT(inout) |
:: | atomic_halos | the fb_atomic_halo object, its content must not be NULL or UNDEFINED | |
INTEGER, |
INTENT(in), |
OPTIONAL |
:: | nhalos | if present, sets atomic_halos%obj%nhalos = nhalos |
INTEGER, |
INTENT(in), |
OPTIONAL |
:: | max_nhalos | if present, sets atomic_halos%obj%max_nhalos = max_nhalos |
TYPE(fb_atomic_halo_obj), |
OPTIONAL, POINTER |
:: | halos(:) | if present, reallocates atomic_halos%obj%halos to the size of halos |
Writes out the atomic halo list summary, no detailed neighbour lists, just average, min and max number of halo atoms in the halo list
TYPE(fb_atomic_halo_list_obj), |
INTENT(in) |
:: | atomic_halos | the fb_atomic_halo object | |
TYPE(cp_para_env_type), |
POINTER |
:: | para_env | pointer to a para_env_type object containing MPI info | |
TYPE(section_vals_type), |
POINTER |
:: | scf_section | pointer to the scf input section |
Estimates the total number of electrons in a halo using atomic numbers
Return Value | :: | INTEGER |
TYPE(fb_atomic_halo_obj), |
INTENT(in) |
:: | atomic_halo | the atomic_halo object | |
TYPE(particle_type), |
INTENT(in) |
:: | particle_set(:) | an array of cp2k particle set objects (this gives atomic information) |
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
TYPE(fb_atomic_halo_obj), |
INTENT(inout) |
:: | atomic_halo | the fb_atomic_halo object |
Releases an fb_atomic_halo object
TYPE(fb_atomic_halo_obj), |
INTENT(inout) |
:: | atomic_halo | the fb_atomic_halo object, its content must not be UNDEFINED, and the subroutine does nothing if the content points to NULL |
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.
TYPE(fb_atomic_halo_obj), |
INTENT(inout) |
:: | atomic_halo | the fb_atomic_halo object, its content must not be NULL or UNDEFINED | |
INTEGER, |
INTENT(in), |
OPTIONAL |
:: | owner_atom | if present, sets atmic_halo%obj%owner_atom = owner_atom |
INTEGER, |
INTENT(in), |
OPTIONAL |
:: | owner_id_in_halo | ... |
INTEGER, |
INTENT(in), |
OPTIONAL |
:: | natoms | if present, sets atomic_halo%obj%natoms = natoms |
INTEGER, |
INTENT(in), |
OPTIONAL |
:: | nelectrons | if present, sets atomic_halo%obj%nelectrons = nelectrons |
INTEGER, |
OPTIONAL, POINTER |
:: | halo_atoms(:) | if present, reallocates atomic_halo%obj%halo_atoms to the size of halo_atoms, and copies contents of halo_atoms to atomic_halo%obj%halo_atoms | |
LOGICAL, |
INTENT(in), |
OPTIONAL |
:: | sorted | if present, sets atomic_halo%obj%sorted = sorted |
REAL(dp), |
INTENT(in), |
OPTIONAL |
:: | cost | if present, sets atomic_halo%obj%cost = cost |
Sort the list of atomic indices in the halo in accending order. The atomic_halo must not be empty
TYPE(fb_atomic_halo_obj), |
INTENT(inout) |
:: | atomic_halo | the atomic_halo object |
Builds the required pair_radii array required for building the halo atoms from a given set of cut off radii
REAL(dp), |
INTENT(in) |
:: | rcut(:) | rcut(ikind) is the cutoff radii for determining the halo corresponding to atomic kind ikind | |
INTEGER, |
INTENT(in) |
:: | nkinds | total number of atomic kinds in rcut | |
REAL(dp), |
INTENT(out) |
:: | pair_radii(:,:) | output array pair_radii(ikind,jkind) gives the corresponding interaction range between a pair of atoms of kinds ikind and jkind |
derived type containing the list of atoms in an atomic halo, used by filtered-basis diagonalisation method
INTEGER |
:: | id_nr | unique id for the object | |
INTEGER |
:: | ref_count | reference count on the object | |
INTEGER |
:: | owner_atom | global atomic id of the atom this halo belongs to | |
INTEGER |
:: | owner_id_in_halo | index of the owner_atom in the halo_atoms array | |
INTEGER |
:: | natoms | number of atoms in the halo | |
INTEGER |
:: | nelectrons | estimate of total number of electrons in halo | |
INTEGER, |
DIMENSION(:), POINTER | :: | halo_atoms | the list of global id of atoms in the halo |
LOGICAL |
:: | sorted | whether the halo_atoms list is sorted or not | |
REAL(dp) |
:: | cost | computational cost for the atomic matrix associated to this atomic halo |
derived type describing an atomic halo list used by filtered-basis diagonalisation method
INTEGER |
:: | id_nr | unique id for the object | |
INTEGER |
:: | ref_count | reference count on the object | |
INTEGER |
:: | nhalos | number of halos in the list | |
INTEGER |
:: | max_nhalos | maximum of the number of halos amongst all of the procs | |
TYPE(fb_atomic_halo_obj), |
DIMENSION(:), POINTER | :: | halos | halos(ihalo) gives the ihalo-th fb_atomic_halo object |