(git:c28f603)
Loading...
Searching...
No Matches
qs_localization_methods Module Reference

Localization methods such as 2x2 Jacobi rotations Steepest Decents Conjugate Gradient. More...

Functions/Subroutines

subroutine, public approx_l1_norm_sd (c, iterations, eps, converged, sweeps)
 ...
 
subroutine, public initialize_weights (cell, weights)
 ...
 
subroutine, public jacobi_rotations (weights, zij, vectors, para_env, max_iter, eps_localization, sweeps, out_each, target_time, start_time, restricted)
 wrapper for the jacobi routines, should be removed if jacobi_rot_para can deal with serial para_envs.
 
subroutine, public jacobi_cg_edf_ls (para_env, weights, zij, vectors, max_iter, eps_localization, iter, out_each, nextra, do_cg, nmo, vectors_2, mos_guess)
 combine jacobi rotations (serial) and conjugate gradient with golden section line search for partially occupied wannier functions
 
subroutine, public rotate_orbitals (rmat, vectors)
 ...
 
subroutine, public crazy_rotations (weights, zij, vectors, max_iter, max_crazy_angle, crazy_scale, crazy_use_diag, eps_localization, iterations, converged)
 yet another crazy try, computes the angles needed to rotate the orbitals first and rotates them all at the same time (hoping for the best of course)
 
subroutine, public direct_mini (weights, zij, vectors, max_iter, eps_localization, iterations)
 use the exponential parametrization as described in to perform a direct mini Gerd Berghold et al. PRB 61 (15), pag. 10040 (2000) none of the input is modified for the time being, just finds the rotations that minimizes, and throws it away afterwards :-) apart from being expensive and not cleaned, this works fine useful to try different spread functionals
 
subroutine, public zij_matrix (vectors, op_sm_set, zij_fm_set)
 ...
 
subroutine, public scdm_qrfact (vectors)
 ...
 
subroutine, public cardoso_souloumiac (weights, zij, max_iter, eps_localization, sweeps, out_each, vectors)
 Achieves minimisation of the spread functional by simultaneous diagonalisation with Jacobi rotations as presented in Cardoso & Souloumiac, SIAM J. Matrix Anal. Appl., 17(1), 161. Generalizes the Jacobi algorithm to complex matrices.
 
subroutine, public cardoso_souloumiac_pipek (zij, vec, sweeps, max_iter, eps, out_each)
 Pipek-Mezey version of the Cardoso-Souloumiac PADE algorithm for complex-valued matrices.
 

Detailed Description

Localization methods such as 2x2 Jacobi rotations Steepest Decents Conjugate Gradient.

History
Initial parallellization of jacobi (JVDV 07.2003) direct minimization using exponential parametrization (JVDV 09.2003) crazy rotations go fast (JVDV 10.2003)
Author
CJM (04.2003)

Function/Subroutine Documentation

◆ approx_l1_norm_sd()

subroutine, public qs_localization_methods::approx_l1_norm_sd ( type(cp_fm_type), intent(in)  c,
integer, intent(in)  iterations,
real(kind=dp), intent(in)  eps,
logical, intent(inout)  converged,
integer, intent(inout)  sweeps 
)

...

Parameters
C...
iterations...
eps...
converged...
sweeps...

Definition at line 101 of file qs_localization_methods.F.

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

◆ initialize_weights()

subroutine, public qs_localization_methods::initialize_weights ( type(cell_type), pointer  cell,
real(kind=dp), dimension(:)  weights 
)

...

Parameters
cell...
weights...

Definition at line 267 of file qs_localization_methods.F.

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

◆ jacobi_rotations()

subroutine, public qs_localization_methods::jacobi_rotations ( real(kind=dp), dimension(:), intent(in)  weights,
type(cp_fm_type), dimension(:, :), intent(in)  zij,
type(cp_fm_type), intent(in)  vectors,
type(mp_para_env_type), pointer  para_env,
integer, intent(in)  max_iter,
real(kind=dp), intent(in)  eps_localization,
integer  sweeps,
integer, intent(in)  out_each,
real(dp)  target_time,
real(dp)  start_time,
integer  restricted 
)

wrapper for the jacobi routines, should be removed if jacobi_rot_para can deal with serial para_envs.

Parameters
weights...
zij...
vectors...
para_env...
max_iter...
eps_localization...
sweeps...
out_each...
target_time...
start_time...
restricted...
History
Author
Joost VandeVondele (02.2010)

Definition at line 305 of file qs_localization_methods.F.

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

◆ jacobi_cg_edf_ls()

subroutine, public qs_localization_methods::jacobi_cg_edf_ls ( type(mp_para_env_type), pointer  para_env,
real(kind=dp), dimension(:), intent(in)  weights,
type(cp_fm_type), dimension(:, :), intent(in)  zij,
type(cp_fm_type), intent(in)  vectors,
integer, intent(in)  max_iter,
real(kind=dp), intent(in)  eps_localization,
integer  iter,
integer, intent(in)  out_each,
integer, intent(in)  nextra,
logical, intent(in)  do_cg,
integer, intent(in), optional  nmo,
type(cp_fm_type), intent(in), optional  vectors_2,
type(cp_fm_type), intent(in), optional  mos_guess 
)

combine jacobi rotations (serial) and conjugate gradient with golden section line search for partially occupied wannier functions

Parameters
para_env...
weights...
zij...
vectors...
max_iter...
eps_localization...
iter...
out_each...
nextra...
do_cg...
nmo...
vectors_2...
mos_guess...

Definition at line 602 of file qs_localization_methods.F.

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

◆ rotate_orbitals()

subroutine, public qs_localization_methods::rotate_orbitals ( type(cp_fm_type), intent(in)  rmat,
type(cp_fm_type), intent(in)  vectors 
)

...

Parameters
rmat...
vectors...

Definition at line 1407 of file qs_localization_methods.F.

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

◆ crazy_rotations()

subroutine, public qs_localization_methods::crazy_rotations ( real(kind=dp), dimension(:), intent(in)  weights,
type(cp_fm_type), dimension(:, :), intent(in)  zij,
type(cp_fm_type), intent(in)  vectors,
integer, intent(in)  max_iter,
real(kind=dp), intent(in)  max_crazy_angle,
real(kind=dp)  crazy_scale,
logical  crazy_use_diag,
real(kind=dp), intent(in)  eps_localization,
integer  iterations,
logical, intent(out), optional  converged 
)

yet another crazy try, computes the angles needed to rotate the orbitals first and rotates them all at the same time (hoping for the best of course)

Parameters
weights...
zij...
vectors...
max_iter...
max_crazy_angle...
crazy_scale...
crazy_use_diag...
eps_localization...
iterations...
converged...

Definition at line 1613 of file qs_localization_methods.F.

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

◆ direct_mini()

subroutine, public qs_localization_methods::direct_mini ( real(kind=dp), dimension(:), intent(in)  weights,
type(cp_fm_type), dimension(:, :), intent(in)  zij,
type(cp_fm_type), intent(in)  vectors,
integer, intent(in)  max_iter,
real(kind=dp), intent(in)  eps_localization,
integer  iterations 
)

use the exponential parametrization as described in to perform a direct mini Gerd Berghold et al. PRB 61 (15), pag. 10040 (2000) none of the input is modified for the time being, just finds the rotations that minimizes, and throws it away afterwards :-) apart from being expensive and not cleaned, this works fine useful to try different spread functionals

Parameters
weights...
zij...
vectors...
max_iter...
eps_localization...
iterations...

Definition at line 1812 of file qs_localization_methods.F.

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

◆ zij_matrix()

subroutine, public qs_localization_methods::zij_matrix ( type(cp_fm_type), intent(in)  vectors,
type(dbcsr_p_type), dimension(:, :), pointer  op_sm_set,
type(cp_fm_type), dimension(:, :), intent(in)  zij_fm_set 
)

...

Parameters
vectors...
op_sm_set...
zij_fm_set...

Definition at line 3021 of file qs_localization_methods.F.

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

◆ scdm_qrfact()

subroutine, public qs_localization_methods::scdm_qrfact ( type(cp_fm_type), intent(in)  vectors)

...

Parameters
vectors...

Definition at line 3058 of file qs_localization_methods.F.

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

◆ cardoso_souloumiac()

subroutine, public qs_localization_methods::cardoso_souloumiac ( real(kind=dp), dimension(:), intent(in)  weights,
type(cp_cfm_type), dimension(:, :), intent(inout)  zij,
integer, intent(in)  max_iter,
real(kind=dp), intent(in)  eps_localization,
integer  sweeps,
integer, intent(in)  out_each,
type(cp_cfm_type), pointer  vectors 
)

Achieves minimisation of the spread functional by simultaneous diagonalisation with Jacobi rotations as presented in Cardoso & Souloumiac, SIAM J. Matrix Anal. Appl., 17(1), 161. Generalizes the Jacobi algorithm to complex matrices.

Parameters
weightsarray of weights for calculating the total spread
zijspread operator matrices
max_itermaximum number iterations
eps_localizationnumerical tolerance
sweepscounts number of sweeps required
out_eachhow often to print info
vectorscomplex vectors to be localized
History
2020-04 created [LS]
Author
Lukas Schreder

Definition at line 3129 of file qs_localization_methods.F.

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

◆ cardoso_souloumiac_pipek()

subroutine, public qs_localization_methods::cardoso_souloumiac_pipek ( type(cp_cfm_type), dimension(:, :), pointer  zij,
type(cp_cfm_type), pointer  vec,
integer  sweeps,
integer  max_iter,
real(dp)  eps,
integer  out_each 
)

Pipek-Mezey version of the Cardoso-Souloumiac PADE algorithm for complex-valued matrices.

Parameters
zijspread operator matrices
veccomplex vectors to be localised
sweepscounts number of sweeps required
max_itermaximum number iterations
epsnumerical tolerance
out_eachhow often to print info
History
2020-04 created [LS]
Author
Lukas Schreder

Definition at line 3240 of file qs_localization_methods.F.

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