(git:cd2a8c4)
Loading...
Searching...
No Matches
gw_utils_compute_integrals Module Reference

Utility method to build 3-center integrals for small cell GW. More...

Data Types

type  gw_3c_ctx_type
 Shared read-only context for repeated 3-center integral block builds: screening parameters, basis maxima, contracted sphi tables, and the one-time gamma / truncated-Coulomb table initializations. Create and release OUTSIDE any OMP parallel region; creation is MPI-collective when the potential is truncated. More...
type  gw_3c_ws_type
 Per-thread workspace for 3-center integral block builds: libint object + contraction buffers. Each thread creates its own (inside the parallel region is fine). More...

Functions/Subroutines

subroutine, public gw_3c_ctx_create (ctx, bs_env, potential_parameter, basis_j, basis_k, basis_i)
 Build the shared 3c-integral context from the band-structure environment and explicitly supplied potential and basis sets.
subroutine, public gw_3c_ctx_release (ctx)
 Releases the shared 3c-integral context.
subroutine, public gw_3c_ws_create (ws, ctx)
 Creates a per-thread 3c workspace: libint object + LIBXSMM contraction buffers.
subroutine, public gw_3c_ws_release (ws)
 Releases a per-thread 3c workspace.
subroutine, public build_3c_integral_block_ctx (int_3c, ctx, ws, atom_j, atom_k, atom_i, cell_j, cell_k, cell_i, j_offset, k_offset, i_offset, screened)
 Computes the 3c integral block (mu(atom_j) nu(atom_k) | P(atom_i)) for ONE atom triple, accumulating into the caller-zeroed int_3c at the given block offsets. Thread-safe: reads the frozen ctx + read-only module tables, mutates only its arguments and the per-thread ws.
subroutine, public build_3c_integral_block (int_3c, qs_env, potential_parameter, basis_j, basis_k, basis_i, cell_j, cell_k, cell_i, atom_j, atom_k, atom_i, j_bf_start_from_atom, k_bf_start_from_atom, i_bf_start_from_atom)
 ...

Detailed Description

Utility method to build 3-center integrals for small cell GW.

Function/Subroutine Documentation

◆ gw_3c_ctx_create()

subroutine, public gw_utils_compute_integrals::gw_3c_ctx_create ( type(gw_3c_ctx_type), intent(out) ctx,
type(post_scf_bandstructure_type), pointer bs_env,
type(libint_potential_type), intent(in) potential_parameter,
type(gto_basis_set_p_type), dimension(:) basis_j,
type(gto_basis_set_p_type), dimension(:) basis_k,
type(gto_basis_set_p_type), dimension(:) basis_i )

Build the shared 3c-integral context from the band-structure environment and explicitly supplied potential and basis sets.

Parameters
ctx...
bs_env...
potential_parameter...
basis_j...
basis_k...
basis_i...

Definition at line 107 of file gw_utils_compute_integrals.F.

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

◆ gw_3c_ctx_release()

subroutine, public gw_utils_compute_integrals::gw_3c_ctx_release ( type(gw_3c_ctx_type), intent(inout) ctx)

Releases the shared 3c-integral context.

Parameters
ctx...

Definition at line 274 of file gw_utils_compute_integrals.F.

Here is the caller graph for this function:

◆ gw_3c_ws_create()

subroutine, public gw_utils_compute_integrals::gw_3c_ws_create ( type(gw_3c_ws_type), intent(out) ws,
type(gw_3c_ctx_type), intent(in) ctx )

Creates a per-thread 3c workspace: libint object + LIBXSMM contraction buffers.

Parameters
ws...
ctx...

Definition at line 301 of file gw_utils_compute_integrals.F.

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

◆ gw_3c_ws_release()

subroutine, public gw_utils_compute_integrals::gw_3c_ws_release ( type(gw_3c_ws_type), intent(inout) ws)

Releases a per-thread 3c workspace.

Parameters
ws...

Definition at line 318 of file gw_utils_compute_integrals.F.

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

◆ build_3c_integral_block_ctx()

subroutine, public gw_utils_compute_integrals::build_3c_integral_block_ctx ( real(kind=dp), dimension(:, :, :) int_3c,
type(gw_3c_ctx_type), intent(in) ctx,
type(gw_3c_ws_type), intent(inout) ws,
integer, intent(in) atom_j,
integer, intent(in) atom_k,
integer, intent(in) atom_i,
integer, dimension(3), intent(in), optional cell_j,
integer, dimension(3), intent(in), optional cell_k,
integer, dimension(3), intent(in), optional cell_i,
integer, intent(in), optional j_offset,
integer, intent(in), optional k_offset,
integer, intent(in), optional i_offset,
logical, intent(out), optional screened )

Computes the 3c integral block (mu(atom_j) nu(atom_k) | P(atom_i)) for ONE atom triple, accumulating into the caller-zeroed int_3c at the given block offsets. Thread-safe: reads the frozen ctx + read-only module tables, mutates only its arguments and the per-thread ws.

Parameters
int_3cpre-zeroed target; the triple's contribution is accumulated in place
ctxshared context from gw_3c_ctx_create
wsper-thread workspace from gw_3c_ws_create
atom_j...
atom_k...
atom_i...
cell_j...
cell_k...
cell_i...
j_offsetblock offset of atom_j's first sgf in int_3c dim 1 (default 0)
k_offsetblock offset of atom_k's first sgf in int_3c dim 2 (default 0)
i_offsetblock offset of atom_i's first RI sgf in int_3c dim 3 (default 0)
screened.TRUE. if the kind-radius screens killed the whole triple (int_3c untouched)

Definition at line 347 of file gw_utils_compute_integrals.F.

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

◆ build_3c_integral_block()

subroutine, public gw_utils_compute_integrals::build_3c_integral_block ( real(kind=dp), dimension(:, :, :) int_3c,
type(qs_environment_type), pointer qs_env,
type(libint_potential_type), intent(in) potential_parameter,
type(gto_basis_set_p_type), dimension(:) basis_j,
type(gto_basis_set_p_type), dimension(:) basis_k,
type(gto_basis_set_p_type), dimension(:) basis_i,
integer, dimension(3), intent(in), optional cell_j,
integer, dimension(3), intent(in), optional cell_k,
integer, dimension(3), intent(in), optional cell_i,
integer, intent(in), optional atom_j,
integer, intent(in), optional atom_k,
integer, intent(in), optional atom_i,
integer, dimension(:), optional j_bf_start_from_atom,
integer, dimension(:), optional k_bf_start_from_atom,
integer, dimension(:), optional i_bf_start_from_atom )

...

Parameters
int_3c...
qs_env...
potential_parameter...
basis_j...
basis_k...
basis_i...
cell_j...
cell_k...
cell_i...
atom_j...
atom_k...
atom_i...
j_bf_start_from_atom...
k_bf_start_from_atom...
i_bf_start_from_atom...

Definition at line 501 of file gw_utils_compute_integrals.F.

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