(git:1e0ab71)
Loading...
Searching...
No Matches
gw_non_periodic_ri_rs Module Reference

GW using RI-RS Approximation for molecules. More...

Functions/Subroutines

subroutine, public gw_calc_non_periodic_ri_rs (qs_env, bs_env)
 GW calculation using RI-RS formalism for molecules.
 
subroutine, public precompute_ri_rs_radii (qs_env, bs_env)
 Compute per-atom AO and RI basis radii from the most diffuse Gaussian primitive in the AO ("ORB") and RI auxiliary ("RI_AUX") basis sets. Stores results in bs_envri_rsradius_ao_per_atom(:) and bs_envri_rsradius_ri_per_atom(:) and prints a per-atom table. Radius: r_kind = sqrt(-log(eps) / alpha_min_kind) with eps = eps_filter.
 
subroutine, public ri_rs_grid_assembler (qs_env, bs_env, ri_rs_grid_points)
 Compute grid points for RI-RS Right now based on Ivan and Xavier implementation JCP 150, 174120 (2019), JCTC 17, 2383 (2021)
 
subroutine, public get_basis_offsets (particle_set, qs_kind_set, first_sgf, total_sgf)
 Helper for OMP threads to fill phi_val column values.
 
subroutine, public solve_d_lp_distributed (phi_local, d_vec, d_lp, n_loc, n_ao, n_rhs, tikhonov, para_env_sub, blacs_env_sub, fm_struct_d, fm_struct_b, fm_d, fm_b, info)
 Distributed pdpotrf/pdpotrs solve of D x = b for one atom of the RI-RS Z_lP build. Called when N_PROCS_PER_ATOM_Z_LP > 1, with a subgroup of cooperating ranks and an associated BLACS context. Each rank in the subgroup holds the (replicated) phi_local and the (replicated) RHS d_lp; it builds its own block-cyclic slice of the squared+Jacobi-scaled Gram matrix D via tiled DGEMM, factorizes via cp_fm_cholesky_decompose (UPLO='U'), and solves with cp_fm_cholesky_solve. The replicated d_lp is updated in place via cp_fm_get_submatrix.
 

Detailed Description

GW using RI-RS Approximation for molecules.

History
04.2026 created [Ritaj Tyagi]

Function/Subroutine Documentation

◆ gw_calc_non_periodic_ri_rs()

subroutine, public gw_non_periodic_ri_rs::gw_calc_non_periodic_ri_rs ( type(qs_environment_type), pointer  qs_env,
type(post_scf_bandstructure_type), pointer  bs_env 
)

GW calculation using RI-RS formalism for molecules.

Parameters
qs_env...
bs_env...

Definition at line 108 of file gw_non_periodic_ri_rs.F.

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

◆ precompute_ri_rs_radii()

subroutine, public gw_non_periodic_ri_rs::precompute_ri_rs_radii ( type(qs_environment_type), pointer  qs_env,
type(post_scf_bandstructure_type), pointer  bs_env 
)

Compute per-atom AO and RI basis radii from the most diffuse Gaussian primitive in the AO ("ORB") and RI auxiliary ("RI_AUX") basis sets. Stores results in bs_envri_rsradius_ao_per_atom(:) and bs_envri_rsradius_ri_per_atom(:) and prints a per-atom table. Radius: r_kind = sqrt(-log(eps) / alpha_min_kind) with eps = eps_filter.

Parameters
qs_env...
bs_env...

Definition at line 228 of file gw_non_periodic_ri_rs.F.

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

◆ ri_rs_grid_assembler()

subroutine, public gw_non_periodic_ri_rs::ri_rs_grid_assembler ( type(qs_environment_type), pointer  qs_env,
type(post_scf_bandstructure_type), pointer  bs_env,
real(kind=dp), dimension(:, :), intent(out), allocatable  ri_rs_grid_points 
)

Compute grid points for RI-RS Right now based on Ivan and Xavier implementation JCP 150, 174120 (2019), JCTC 17, 2383 (2021)

Parameters
qs_env...
bs_env...
ri_rs_grid_points...

Definition at line 311 of file gw_non_periodic_ri_rs.F.

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

◆ get_basis_offsets()

subroutine, public gw_non_periodic_ri_rs::get_basis_offsets ( type(particle_type), dimension(:), pointer  particle_set,
type(qs_kind_type), dimension(:), pointer  qs_kind_set,
integer, dimension(:), intent(out)  first_sgf,
integer, intent(out)  total_sgf 
)

Helper for OMP threads to fill phi_val column values.

Parameters
particle_set...
qs_kind_set...
first_sgf...
total_sgf...

Definition at line 705 of file gw_non_periodic_ri_rs.F.

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

◆ solve_d_lp_distributed()

subroutine, public gw_non_periodic_ri_rs::solve_d_lp_distributed ( real(kind=dp), dimension(:, :), intent(in)  phi_local,
real(kind=dp), dimension(:), intent(in)  d_vec,
real(kind=dp), dimension(:, :), intent(inout)  d_lp,
integer, intent(in)  n_loc,
integer, intent(in)  n_ao,
integer, intent(in)  n_rhs,
real(kind=dp), intent(in)  tikhonov,
type(mp_para_env_type), pointer  para_env_sub,
type(cp_blacs_env_type), pointer  blacs_env_sub,
type(cp_fm_struct_type), pointer  fm_struct_d,
type(cp_fm_struct_type), pointer  fm_struct_b,
type(cp_fm_type), intent(inout)  fm_d,
type(cp_fm_type), intent(inout)  fm_b,
integer, intent(out)  info 
)

Distributed pdpotrf/pdpotrs solve of D x = b for one atom of the RI-RS Z_lP build. Called when N_PROCS_PER_ATOM_Z_LP > 1, with a subgroup of cooperating ranks and an associated BLACS context. Each rank in the subgroup holds the (replicated) phi_local and the (replicated) RHS d_lp; it builds its own block-cyclic slice of the squared+Jacobi-scaled Gram matrix D via tiled DGEMM, factorizes via cp_fm_cholesky_decompose (UPLO='U'), and solves with cp_fm_cholesky_solve. The replicated d_lp is updated in place via cp_fm_get_submatrix.

Parameters
phi_localreplicated (n_loc x n_ao) AO values on the sphere grid
d_vecreplicated Jacobi diagonal = 1 / ||phi_i||^2
d_lpreplicated RHS in/out (n_loc x n_rhs); on input pre-scaled by d_vec, on output also pre-scaled (caller post-scales)
n_locnumber of sphere-local grid points
n_aonumber of AO basis functions
n_rhsnumber of RI functions of this atom_P (RHS columns)
tikhonovregularisation added to the diagonal
para_env_subsub-communicator of the atom-group
blacs_env_subBLACS context on the sub-communicator
fm_struct_D...
fm_struct_b...
fm_D...
fm_b...
info0 on success, non-zero if pdpotrf or pdpotrs failed

Definition at line 1307 of file gw_non_periodic_ri_rs.F.

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