![]() |
(git:f2099e5)
|
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. | |
Initialize atom-owned RI-RS grids by Cholesky selection from Lebedev grids.
| 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.
| bs_env | Band-structure environment containing GW parameters. |
Definition at line 104 of file gw_ri_rs_grid_initialization.F.