![]() |
(git:1e0ab71)
|
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. | |
GW using RI-RS Approximation for molecules.
| 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.
| qs_env | ... |
| bs_env | ... |
Definition at line 108 of file gw_non_periodic_ri_rs.F.
| 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.
| qs_env | ... |
| bs_env | ... |
Definition at line 228 of file gw_non_periodic_ri_rs.F.
| 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)
| qs_env | ... |
| bs_env | ... |
| ri_rs_grid_points | ... |
Definition at line 311 of file gw_non_periodic_ri_rs.F.
| 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.
| particle_set | ... |
| qs_kind_set | ... |
| first_sgf | ... |
| total_sgf | ... |
Definition at line 705 of file gw_non_periodic_ri_rs.F.
| 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.
| phi_local | replicated (n_loc x n_ao) AO values on the sphere grid |
| d_vec | replicated Jacobi diagonal = 1 / ||phi_i||^2 |
| d_lp | replicated RHS in/out (n_loc x n_rhs); on input pre-scaled by d_vec, on output also pre-scaled (caller post-scales) |
| n_loc | number of sphere-local grid points |
| n_ao | number of AO basis functions |
| n_rhs | number of RI functions of this atom_P (RHS columns) |
| tikhonov | regularisation added to the diagonal |
| para_env_sub | sub-communicator of the atom-group |
| blacs_env_sub | BLACS context on the sub-communicator |
| fm_struct_D | ... |
| fm_struct_b | ... |
| fm_D | ... |
| fm_b | ... |
| info | 0 on success, non-zero if pdpotrf or pdpotrs failed |
Definition at line 1307 of file gw_non_periodic_ri_rs.F.