(git:f2099e5)
Loading...
Searching...
No Matches
gw_ri_rs_grid_initialization Module Reference

Initialize atom-owned RI-RS grids by Cholesky selection from Lebedev grids. More...

Functions/Subroutines

subroutine, public initialize_ri_rs_grid (bs_env)
 Construct the initial RI-RS grid of every atom.

Detailed Description

Initialize atom-owned RI-RS grids by Cholesky selection from Lebedev grids.

Function/Subroutine Documentation

◆ initialize_ri_rs_grid()

subroutine, public gw_ri_rs_grid_initialization::initialize_ri_rs_grid ( type(post_scf_bandstructure_type), pointer bs_env)

Construct the initial RI-RS grid of every atom.

For every atom B, the Lebedev grid points are

(1) r_l = R_B + ρ_s Ω_a,

where ρ_s is a radial quadrature point and Ω_a is a Lebedev direction. Lebedev grids are tabulated according to the angular degree L up to which they integrate exactly. To integrate a three-centre integral (μν|P), the smallest available Lebedev grid satisfying

(2) L >= 2 l_AO,max + l_RI,max + ΔL

is used. Here, l_AO,max is the maximum angular momentum of the atomic AO basis functions ϕ_μ, l_RI,max is the maximum angular momentum of the auxiliary basis functions φ_P, and the internal angular buffer is ΔL. Enough radial points ρ_s are used that the Lebedev grid of every atom B contains at least

(3) N_initial^B >= α_initial N_AO^B,

points, where N_AO^B is the number of atomic orbitals on atom B and α_initial = max(30, 2 RS_AO_RATIO). The factor two provides candidates that can be discarded by the molecular Voronoi filter. The requested initial RI-RS grid of atom A contains

(4) N_R^A = ceil(RS_AO_RATIO * N_AO^A)

points. Around every atom A, a cluster is defined as

(5) C_A = {B : |R_B - R_A| <= CUTOFF_ATOMIC_CLUSTER}.

The Cholesky selection uses all Lebedev grid points of every atom B in C_A. The molecular Voronoi cell of atom A is

(6) V_A = {r_l : |r_l - R_A| <= |r_l - R_B| for every atom B}.

For cluster C_A, Cholesky selection is performed on

(7) D_ll' = [Σ_(μ in C_A) ϕ_μ(r_l) ϕ_μ(r_l')]^2.

The first grid point is the point with the largest diagonal element,

(8) d_l^(0) = D_ll, q_1 = arg max_l d_l^(0).

For every selected point q_k, the Cholesky column and diagonal are updated according to

(9) L_lk = [D_lq_k - Σ_(j<k) L_lj L_q_kj]/sqrt(d_q_k^(k-1)),

(10) d_l^(k) = max(0, d_l^(k-1) - L_lk^2),

and the next point q_(k+1) is the point with the largest d_l^(k). Points outside V_A take part in Eqs. (7)-(10), but only selected points inside V_A are placed into the RI-RS grid of atom A. If D_ll' reaches its numerical rank before N_R^A points have been retained, let S_A contain the retained points. Every unused point r_l in V_A is assigned the distance

(11) ρ_l = min_(q in S_A) |r_l - q|,

and the point

(12) q_new = arg max_(r_l in V_A and r_l not in S_A) ρ_l

is appended to S_A. Equations (11)-(12) are repeated until Eq. (4) is satisfied. This maximin distance is only a geometric selection criterion, not the three-centre-integral fitting error. Each cluster C_A is processed independently on one MPI rank; only the completed atom grids are communicated.

Parameters
bs_envBand-structure environment containing GW parameters.

Definition at line 104 of file gw_ri_rs_grid_initialization.F.

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