![]() |
(git:b77b4be)
|
Utility methods to build 3-center integral tensors of various types. More...
Functions/Subroutines | |
subroutine, public | build_2c_neighbor_lists (ij_list, basis_i, basis_j, potential_parameter, name, qs_env, sym_ij, molecular, dist_2d, pot_to_rad) |
Build 2-center neighborlists adapted to different operators This mainly wraps build_neighbor_lists for consistency with build_3c_neighbor_lists. | |
subroutine, public | build_3c_neighbor_lists (ijk_list, basis_i, basis_j, basis_k, dist_3d, potential_parameter, name, qs_env, sym_ij, sym_jk, sym_ik, molecular, op_pos, own_dist) |
Build a 3-center neighbor list. | |
subroutine, public | neighbor_list_3c_destroy (ijk_list) |
Destroy 3c neighborlist. | |
subroutine, public | neighbor_list_3c_iterator_create (iterator, ijk_nl) |
Create a 3-center neighborlist iterator. | |
subroutine, public | neighbor_list_3c_iterator_destroy (iterator) |
Destroy 3c-nl iterator. | |
recursive integer function, public | neighbor_list_3c_iterate (iterator) |
Iterate 3c-nl iterator. | |
subroutine, public | get_3c_iterator_info (iterator, ikind, jkind, kkind, nkind, iatom, jatom, katom, rij, rjk, rik, cell_j, cell_k) |
Get info of current iteration. | |
subroutine, public | build_3c_derivatives (t3c_der_i, t3c_der_k, filter_eps, qs_env, nl_3c, basis_i, basis_j, basis_k, potential_parameter, der_eps, op_pos, do_kpoints, do_hfx_kpoints, bounds_i, bounds_j, bounds_k, ri_range, img_to_ri_cell) |
Build 3-center derivative tensors. | |
subroutine, public | calc_3c_virial (work_virial, t3c_trace, pref, qs_env, nl_3c, basis_i, basis_j, basis_k, potential_parameter, der_eps, op_pos) |
Calculates the 3c virial contributions on the fly. | |
subroutine, public | build_3c_integrals (t3c, filter_eps, qs_env, nl_3c, basis_i, basis_j, basis_k, potential_parameter, int_eps, op_pos, do_kpoints, do_hfx_kpoints, desymmetrize, cell_sym, bounds_i, bounds_j, bounds_k, ri_range, img_to_ri_cell, cell_to_index_ext) |
Build 3-center integral tensor. | |
subroutine, public | build_2c_derivatives (t2c_der, filter_eps, qs_env, nl_2c, basis_i, basis_j, potential_parameter, do_kpoints) |
Calculates the derivatives of 2-center integrals, wrt to the first center. | |
subroutine, public | calc_2c_virial (work_virial, t2c_trace, pref, qs_env, nl_2c, basis_i, basis_j, potential_parameter) |
Calculates the virial coming from 2c derivatives on the fly. | |
subroutine, public | build_2c_integrals (t2c, filter_eps, qs_env, nl_2c, basis_i, basis_j, potential_parameter, do_kpoints, do_hfx_kpoints, ext_kpoints, regularization_ri) |
... | |
subroutine, public | compress_tensor (tensor, blk_indices, compressed, eps, memory) |
... | |
subroutine, public | decompress_tensor (tensor, blk_indices, compressed, eps) |
... | |
subroutine, public | get_tensor_occupancy (tensor, nze, occ) |
... | |
Utility methods to build 3-center integral tensors of various types.
subroutine, public qs_tensors::build_2c_neighbor_lists | ( | type(neighbor_list_set_p_type), dimension(:), pointer | ij_list, |
type(gto_basis_set_p_type), dimension(:) | basis_i, | ||
type(gto_basis_set_p_type), dimension(:) | basis_j, | ||
type(libint_potential_type), intent(in) | potential_parameter, | ||
character(len=*), intent(in) | name, | ||
type(qs_environment_type), pointer | qs_env, | ||
logical, intent(in), optional | sym_ij, | ||
logical, intent(in), optional | molecular, | ||
type(distribution_2d_type), optional, pointer | dist_2d, | ||
integer, intent(in), optional | pot_to_rad | ||
) |
Build 2-center neighborlists adapted to different operators This mainly wraps build_neighbor_lists for consistency with build_3c_neighbor_lists.
ij_list | 2c neighbor list for atom pairs i, j |
basis_i | basis object for atoms i |
basis_j | basis object for atoms j |
potential_parameter | ... |
name | name of 2c neighbor list |
qs_env | ... |
sym_ij | Symmetry in i, j (default .TRUE.) |
molecular | ... |
dist_2d | optionally a custom 2d distribution |
pot_to_rad | which radius (1 for i, 2 for j) should be adapted to incorporate potential |
Definition at line 141 of file qs_tensors.F.
subroutine, public qs_tensors::build_3c_neighbor_lists | ( | type(neighbor_list_3c_type), intent(out) | ijk_list, |
type(gto_basis_set_p_type), dimension(:) | basis_i, | ||
type(gto_basis_set_p_type), dimension(:) | basis_j, | ||
type(gto_basis_set_p_type), dimension(:) | basis_k, | ||
type(distribution_3d_type), intent(in) | dist_3d, | ||
type(libint_potential_type), intent(in) | potential_parameter, | ||
character(len=*), intent(in) | name, | ||
type(qs_environment_type), pointer | qs_env, | ||
logical, intent(in), optional | sym_ij, | ||
logical, intent(in), optional | sym_jk, | ||
logical, intent(in), optional | sym_ik, | ||
logical, intent(in), optional | molecular, | ||
integer, intent(in), optional | op_pos, | ||
logical, intent(in), optional | own_dist | ||
) |
Build a 3-center neighbor list.
ijk_list | 3c neighbor list for atom triples i, j, k |
basis_i | basis object for atoms i |
basis_j | basis object for atoms j |
basis_k | basis object for atoms k |
dist_3d | 3d distribution object |
potential_parameter | ... |
name | name of 3c neighbor list |
qs_env | ... |
sym_ij | Symmetry in i, j (default .FALSE.) |
sym_jk | Symmetry in j, k (default .FALSE.) |
sym_ik | Symmetry in i, k (default .FALSE.) |
molecular | ??? not tested |
op_pos | ... |
own_dist | ... |
Definition at line 278 of file qs_tensors.F.
subroutine, public qs_tensors::neighbor_list_3c_destroy | ( | type(neighbor_list_3c_type), intent(inout) | ijk_list | ) |
Destroy 3c neighborlist.
ijk_list | ... |
Definition at line 382 of file qs_tensors.F.
subroutine, public qs_tensors::neighbor_list_3c_iterator_create | ( | type(neighbor_list_3c_iterator_type), intent(out) | iterator, |
type(neighbor_list_3c_type), intent(in) | ijk_nl | ||
) |
Create a 3-center neighborlist iterator.
iterator | ... |
ijk_nl | ... |
Definition at line 399 of file qs_tensors.F.
subroutine, public qs_tensors::neighbor_list_3c_iterator_destroy | ( | type(neighbor_list_3c_iterator_type), intent(inout) | iterator | ) |
Destroy 3c-nl iterator.
iterator | ... |
Definition at line 444 of file qs_tensors.F.
recursive integer function, public qs_tensors::neighbor_list_3c_iterate | ( | type(neighbor_list_3c_iterator_type), intent(inout) | iterator | ) |
Iterate 3c-nl iterator.
iterator | ... |
Definition at line 466 of file qs_tensors.F.
subroutine, public qs_tensors::get_3c_iterator_info | ( | type(neighbor_list_3c_iterator_type), intent(inout) | iterator, |
integer, intent(out), optional | ikind, | ||
integer, intent(out), optional | jkind, | ||
integer, intent(out), optional | kkind, | ||
integer, intent(out), optional | nkind, | ||
integer, intent(out), optional | iatom, | ||
integer, intent(out), optional | jatom, | ||
integer, intent(out), optional | katom, | ||
real(kind=dp), dimension(3), intent(out), optional | rij, | ||
real(kind=dp), dimension(3), intent(out), optional | rjk, | ||
real(kind=dp), dimension(3), intent(out), optional | rik, | ||
integer, dimension(3), intent(out), optional | cell_j, | ||
integer, dimension(3), intent(out), optional | cell_k | ||
) |
Get info of current iteration.
iterator | ... |
ikind | ... |
jkind | ... |
kkind | ... |
nkind | ... |
iatom | ... |
jatom | ... |
katom | ... |
rij | ... |
rjk | ... |
rik | ... |
cell_j | ... |
cell_k | ... |
Definition at line 562 of file qs_tensors.F.
subroutine, public qs_tensors::build_3c_derivatives | ( | type(dbt_type), dimension(:, :, :), intent(inout) | t3c_der_i, |
type(dbt_type), dimension(:, :, :), intent(inout) | t3c_der_k, | ||
real(kind=dp), intent(in) | filter_eps, | ||
type(qs_environment_type), pointer | qs_env, | ||
type(neighbor_list_3c_type), intent(inout) | nl_3c, | ||
type(gto_basis_set_p_type), dimension(:) | basis_i, | ||
type(gto_basis_set_p_type), dimension(:) | basis_j, | ||
type(gto_basis_set_p_type), dimension(:) | basis_k, | ||
type(libint_potential_type), intent(in) | potential_parameter, | ||
real(kind=dp), intent(in), optional | der_eps, | ||
integer, intent(in), optional | op_pos, | ||
logical, intent(in), optional | do_kpoints, | ||
logical, intent(in), optional | do_hfx_kpoints, | ||
integer, dimension(2), intent(in), optional | bounds_i, | ||
integer, dimension(2), intent(in), optional | bounds_j, | ||
integer, dimension(2), intent(in), optional | bounds_k, | ||
real(dp), intent(in), optional | ri_range, | ||
integer, dimension(:), intent(in), optional | img_to_ri_cell | ||
) |
Build 3-center derivative tensors.
t3c_der_i | empty DBCSR tensor which will contain the 1st center derivatives |
t3c_der_k | empty DBCSR tensor which will contain the 3rd center derivatives |
filter_eps | Filter threshold for tensor blocks |
qs_env | ... |
nl_3c | 3-center neighborlist |
basis_i | ... |
basis_j | ... |
basis_k | ... |
potential_parameter | ... |
der_eps | neglect integrals smaller than der_eps |
op_pos | operator position. 1: calculate (i|jk) integrals, 2: calculate (ij|k) integrals |
do_kpoints | ... this routine requires that libint has been static initialised somewhere else |
do_hfx_kpoints | ... |
bounds_i | ... |
bounds_j | ... |
bounds_k | ... |
RI_range | ... |
img_to_RI_cell | ... |
Definition at line 920 of file qs_tensors.F.
subroutine, public qs_tensors::calc_3c_virial | ( | real(dp), dimension(3, 3), intent(inout) | work_virial, |
type(dbt_type), intent(inout) | t3c_trace, | ||
real(kind=dp), intent(in) | pref, | ||
type(qs_environment_type), pointer | qs_env, | ||
type(neighbor_list_3c_type), intent(inout) | nl_3c, | ||
type(gto_basis_set_p_type), dimension(:) | basis_i, | ||
type(gto_basis_set_p_type), dimension(:) | basis_j, | ||
type(gto_basis_set_p_type), dimension(:) | basis_k, | ||
type(libint_potential_type), intent(in) | potential_parameter, | ||
real(kind=dp), intent(in), optional | der_eps, | ||
integer, intent(in), optional | op_pos | ||
) |
Calculates the 3c virial contributions on the fly.
work_virial | ... |
t3c_trace | the tensor with which the trace should be taken |
pref | ... |
qs_env | ... |
nl_3c | 3-center neighborlist, with a distribution matching that of t3c_trace |
basis_i | ... |
basis_j | ... |
basis_k | ... |
potential_parameter | ... |
der_eps | neglect integrals smaller than der_eps |
op_pos | operator position. 1: calculate (i|jk) integrals, 2: calculate (ij|k) integrals this routine requires that libint has been static initialised somewhere else |
Definition at line 1626 of file qs_tensors.F.
subroutine, public qs_tensors::build_3c_integrals | ( | type(dbt_type), dimension(:, :), intent(inout) | t3c, |
real(kind=dp), intent(in) | filter_eps, | ||
type(qs_environment_type), pointer | qs_env, | ||
type(neighbor_list_3c_type), intent(inout) | nl_3c, | ||
type(gto_basis_set_p_type), dimension(:) | basis_i, | ||
type(gto_basis_set_p_type), dimension(:) | basis_j, | ||
type(gto_basis_set_p_type), dimension(:) | basis_k, | ||
type(libint_potential_type), intent(in) | potential_parameter, | ||
real(kind=dp), intent(in), optional | int_eps, | ||
integer, intent(in), optional | op_pos, | ||
logical, intent(in), optional | do_kpoints, | ||
logical, intent(in), optional | do_hfx_kpoints, | ||
logical, intent(in), optional | desymmetrize, | ||
logical, intent(in), optional | cell_sym, | ||
integer, dimension(2), intent(in), optional | bounds_i, | ||
integer, dimension(2), intent(in), optional | bounds_j, | ||
integer, dimension(2), intent(in), optional | bounds_k, | ||
real(dp), intent(in), optional | ri_range, | ||
integer, dimension(:), intent(in), optional | img_to_ri_cell, | ||
integer, dimension(:, :, :), optional, pointer | cell_to_index_ext | ||
) |
Build 3-center integral tensor.
t3c | empty DBCSR tensor Should be of shape (1,1) if no kpoints are used and of shape (nimages, nimages) if k-points are used |
filter_eps | Filter threshold for tensor blocks |
qs_env | ... |
nl_3c | 3-center neighborlist |
basis_i | ... |
basis_j | ... |
basis_k | ... |
potential_parameter | ... |
int_eps | neglect integrals smaller than int_eps |
op_pos | operator position. 1: calculate (i|jk) integrals, 2: calculate (ij|k) integrals |
do_kpoints | ... this routine requires that libint has been static initialised somewhere else |
do_hfx_kpoints | ... |
desymmetrize | ... |
cell_sym | ... |
bounds_i | ... |
bounds_j | ... |
bounds_k | ... |
RI_range | ... |
img_to_RI_cell | ... |
cell_to_index_ext | ... |
Definition at line 2117 of file qs_tensors.F.
subroutine, public qs_tensors::build_2c_derivatives | ( | type(dbcsr_type), dimension(:, :), intent(inout) | t2c_der, |
real(kind=dp), intent(in) | filter_eps, | ||
type(qs_environment_type), pointer | qs_env, | ||
type(neighbor_list_set_p_type), dimension(:), pointer | nl_2c, | ||
type(gto_basis_set_p_type), dimension(:) | basis_i, | ||
type(gto_basis_set_p_type), dimension(:) | basis_j, | ||
type(libint_potential_type), intent(in) | potential_parameter, | ||
logical, intent(in), optional | do_kpoints | ||
) |
Calculates the derivatives of 2-center integrals, wrt to the first center.
t2c_der | ... this routine requires that libint has been static initialised somewhere else |
filter_eps | Filter threshold for matrix blocks |
qs_env | ... |
nl_2c | 2-center neighborlist |
basis_i | ... |
basis_j | ... |
potential_parameter | ... |
do_kpoints | ... |
Definition at line 2730 of file qs_tensors.F.
subroutine, public qs_tensors::calc_2c_virial | ( | real(dp), dimension(3, 3), intent(inout) | work_virial, |
type(dbcsr_type), intent(inout) | t2c_trace, | ||
real(kind=dp), intent(in) | pref, | ||
type(qs_environment_type), pointer | qs_env, | ||
type(neighbor_list_set_p_type), dimension(:), pointer | nl_2c, | ||
type(gto_basis_set_p_type), dimension(:) | basis_i, | ||
type(gto_basis_set_p_type), dimension(:) | basis_j, | ||
type(libint_potential_type), intent(in) | potential_parameter | ||
) |
Calculates the virial coming from 2c derivatives on the fly.
work_virial | ... |
t2c_trace | the 2c tensor that we should trace with the derivatives |
pref | ... |
qs_env | ... |
nl_2c | 2-center neighborlist. Assumed to have compatible distribution with t2c_trace, and to be non-symmetric |
basis_i | ... |
basis_j | ... |
potential_parameter | ... |
Definition at line 2975 of file qs_tensors.F.
subroutine, public qs_tensors::build_2c_integrals | ( | type(dbcsr_type), dimension(:), intent(inout) | t2c, |
real(kind=dp), intent(in) | filter_eps, | ||
type(qs_environment_type), pointer | qs_env, | ||
type(neighbor_list_set_p_type), dimension(:), pointer | nl_2c, | ||
type(gto_basis_set_p_type), dimension(:) | basis_i, | ||
type(gto_basis_set_p_type), dimension(:) | basis_j, | ||
type(libint_potential_type), intent(in) | potential_parameter, | ||
logical, intent(in), optional | do_kpoints, | ||
logical, intent(in), optional | do_hfx_kpoints, | ||
type(kpoint_type), optional, pointer | ext_kpoints, | ||
real(kind=dp), optional | regularization_ri | ||
) |
...
t2c | empty DBCSR matrix |
filter_eps | Filter threshold for matrix blocks |
qs_env | ... |
nl_2c | 2-center neighborlist |
basis_i | ... |
basis_j | ... |
potential_parameter | ... |
do_kpoints | ... |
do_hfx_kpoints | ... this routine requires that libint has been static initialised somewhere else |
ext_kpoints | ... |
regularization_RI | ... |
Definition at line 3152 of file qs_tensors.F.
subroutine, public qs_tensors::compress_tensor | ( | type(dbt_type), intent(inout) | tensor, |
integer, dimension(:, :), intent(inout), allocatable | blk_indices, | ||
type(hfx_compression_type), intent(inout) | compressed, | ||
real(dp), intent(in) | eps, | ||
real(dp), intent(inout) | memory | ||
) |
...
tensor | tensor with data. Data is cleared after compression. |
blk_indices | ... |
compressed | compressed tensor data |
eps | all entries < eps are discarded |
memory | ... |
Definition at line 3407 of file qs_tensors.F.
subroutine, public qs_tensors::decompress_tensor | ( | type(dbt_type), intent(inout) | tensor, |
integer, dimension(:, :) | blk_indices, | ||
type(hfx_compression_type), intent(inout) | compressed, | ||
real(dp), intent(in) | eps | ||
) |
...
tensor | empty tensor which is filled by decompressed data |
blk_indices | indices of blocks to be reserved |
compressed | compressed data |
eps | all entries < eps are discarded |
Definition at line 3535 of file qs_tensors.F.
subroutine, public qs_tensors::get_tensor_occupancy | ( | type(dbt_type), intent(in) | tensor, |
integer(int_8), intent(out) | nze, | ||
real(dp), intent(out) | occ | ||
) |
...
tensor | ... |
nze | ... |
occ | ... |
Definition at line 3626 of file qs_tensors.F.