w90_disentangle Module

module~~w90_disentangle~~UsesGraph module~w90_disentangle w90_disentangle module~w90_parameters w90_parameters module~w90_parameters->module~w90_disentangle module~w90_sitesym w90_sitesym module~w90_sitesym->module~w90_disentangle module~w90_constants w90_constants module~w90_constants->module~w90_disentangle module~w90_constants->module~w90_parameters module~w90_constants->module~w90_sitesym module~w90_io w90_io module~w90_constants->module~w90_io module~w90_io->module~w90_disentangle module~w90_io->module~w90_parameters module~w90_io->module~w90_sitesym
Help

This module contains the core routines to extract an optimal subspace from a set of entangled bands.

Used By

module~~w90_disentangle~~UsedByGraph module~w90_disentangle w90_disentangle proc~wannier_run wannier_run module~w90_disentangle->proc~wannier_run program~wannier wannier module~w90_disentangle->program~wannier
Help


Variables

TypeVisibility AttributesNameInitial
real(kind=dp), private, allocatable:: eigval_opt(:,:)

At input it contains a large set of eigenvalues. At it is slimmed down to contain only those inside the energy window.

logical, private :: linner

Is there a frozen window

logical, private, allocatable:: lfrozen(:,:)

true if the i-th band inside outer window is frozen

integer, private, allocatable:: nfirstwin(:)

index of lowest band inside outer window at nkp-th

integer, private, allocatable:: ndimfroz(:)

number of frozen bands at nkp-th k point

integer, private, allocatable:: indxfroz(:,:)

number of bands inside outer window at nkp-th k point

integer, private, allocatable:: indxnfroz(:,:)

outer-window band index for the i-th non-frozen state (equals 1 if it is the bottom of outer window)


Subroutines

public subroutine dis_main()

Main disentanglement routine

Arguments

None

private subroutine dis_windows()

This subroutine selects the states that are inside the outer window (ie, the energy window out of which we fish out the optimally-connected subspace) and those that are inside the inner window (that make up the frozen manifold, and are straightfowardly included as they are). This, in practice, amounts to slimming down the original num_wann x num_wann overlap matrices, removing rows and columns that belong to u_nks that have been excluded forever, and marking (indexing) the rows and columns that correspond to frozen states.

Arguments

None

private subroutine dis_project()

Construct projections for the start of the disentanglement routine

Arguments

None

private subroutine dis_proj_froz()

COMPUTES THE LEADING EIGENVECTORS OF Q_froz . P_s . Q_froz, WHERE P_s PROJECTOR OPERATOR ONTO THE SUBSPACE S OF THE PROJECTED GAUSSIANS, P_f THE PROJECTOR ONTO THE FROZEN STATES, AND Q_froz = 1 - P_froz, ALL EXP IN THE BASIS OF THE BLOCH EIGENSTATES INSIDE THE OUTER ENERGY WINDOW (See Eq. (27) in Sec. III.G of SMV)

Arguments

None

private subroutine dis_extract()

Extracts an num_wann-dimensional subspace at each k by minimizing Omega_I

Arguments

None

private subroutine dis_extract_gamma()

Extracts an num_wann-dimensional subspace at each k by minimizing Omega_I (Gamma point version)

Arguments

None