Octopus
nonlocal_overlap_matrix.F90 File Reference

Go to the source code of this file.

Modules

module  nonlocal_overlap_matrix_oct_m
 Exact inverse of the ultrasoft/PAW generalized overlap operator for overlapping spheres.
 

Data Types

type  nonlocal_overlap_matrix_oct_m::overlap_cluster_t
 One connected component of the projector-overlap graph. More...
 
type  nonlocal_overlap_matrix_oct_m::overlap_matrix_t
 The exact inverse-overlap operator, grouped into overlap clusters. More...
 

Functions/Subroutines

subroutine nonlocal_overlap_matrix_oct_m::overlap_matrix_detect (this, nmat, projector_matrices, projector_to_atom, epot, space, self_overlap)
 Detect distinct-atom projector overlap and group the projector matrices into the connected components (clusters) of the overlap graph. Sets use_global_coupling and fills clusters when at least one cluster spans more than one matrix or a sphere overlaps its own periodic images; otherwise the per-atom (block-diagonal) inverse is exact and nothing is grouped. More...
 
recursive integer function nonlocal_overlap_matrix_oct_m::uf_find (parent, ii)
 Union-find "find" with path compression (roots of the projector-overlap graph). More...
 
subroutine nonlocal_overlap_matrix_oct_m::uf_union (parent, ii, jj)
 Union-find "union" of two projector matrices into one cluster. More...
 
subroutine nonlocal_overlap_matrix_oct_m::overlap_matrix_build (this, projector_matrices, projector_phases, mesh, kstart, kend)
 Assemble the exact inverse-overlap coupling -T for each overlap cluster. More...
 
subroutine fill_phased_ket (im, ik, zg)
 
subroutine accumulate_gram (pmI, pmJ, zgI, zgJ, mmat, oa, ob)
 
subroutine nonlocal_overlap_matrix_oct_m::overlap_matrix_end (this)
 Release the exact inverse-overlap cluster data. More...
 
subroutine nonlocal_overlap_matrix_oct_m::doverlap_matrix_apply (this, projector_matrices, proj, nst_linear, ik)
 Apply the exact inverse-overlap coupling p` = -T p (mix = -T stored per cluster), dense within each overlap cluster, to the already domain-reduced projection vector, in place. Replaces the per-matrix block-diagonal coupling; the caller`s subsequent scatter reads the coupled slices. proj is the projection vector (nst_linear, full_projection_size); its per-matrix slice starts at thisproj_offset(im). More...
 
subroutine nonlocal_overlap_matrix_oct_m::zoverlap_matrix_apply (this, projector_matrices, proj, nst_linear, ik)
 Apply the exact inverse-overlap coupling p` = -T p (mix = -T stored per cluster), dense within each overlap cluster, to the already domain-reduced projection vector, in place. Replaces the per-matrix block-diagonal coupling; the caller`s subsequent scatter reads the coupled slices. proj is the projection vector (nst_linear, full_projection_size); its per-matrix slice starts at thisproj_offset(im). More...
 

Variables

logical nonlocal_overlap_matrix_oct_m::uspp_gpu_approx_warned = .false.
 Emit the "exact inverse overlap is CPU-only" warning at most once per run. More...
 

Function/Subroutine Documentation

◆ fill_phased_ket()

subroutine overlap_matrix_build::fill_phased_ket ( integer, intent(in)  im,
integer, intent(in)  ik,
complex(real64), dimension(:, :), intent(out), allocatable  zg 
)
private

Definition at line 462 of file nonlocal_overlap_matrix.F90.

◆ accumulate_gram()

subroutine overlap_matrix_build::accumulate_gram ( type(projector_matrix_t), intent(in)  pmI,
type(projector_matrix_t), intent(in)  pmJ,
complex(real64), dimension(:, :), intent(in)  zgI,
complex(real64), dimension(:, :), intent(in)  zgJ,
complex(real64), dimension(:, :), intent(inout)  mmat,
integer, intent(in)  oa,
integer, intent(in)  ob 
)
private

Definition at line 501 of file nonlocal_overlap_matrix.F90.