Documentation for module qs_localization_methods

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

source: qs_localization_methods.F
Loading...

public Subroutines/Functions:

...
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)
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
...
wrapper for the jacobi routines, should be removed if jacobi_rot_para can deal with serial para_envs.
...

SUBROUTINEapprox_l1_norm_sd(c, iterations, eps, converged, sweeps)

...

Arguments:
TYPE(cp_fm_type),
POINTER
:: c ...
INTEGER,
INTENT(in)
:: iterations ...
REAL(dp),
INTENT(in)
:: eps ...
LOGICAL,
INTENT(inout)
:: converged ...
INTEGER,
INTENT(inout)
:: sweeps ...

SUBROUTINEcrazy_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)

Arguments:
REAL(dp),
INTENT(in)
:: weights(:) ...
INTENT(inout)
:: zij(:,:) ...
TYPE(cp_fm_type),
POINTER
:: vectors ...
INTEGER,
INTENT(in)
:: max_iter ...
REAL(dp),
INTENT(in)
:: max_crazy_angle ...
REAL(dp)
:: crazy_scale ...
LOGICAL
:: crazy_use_diag ...
REAL(dp),
INTENT(in)
:: eps_localization ...
INTEGER
:: iterations ...
LOGICAL,
INTENT(out),
OPTIONAL
:: converged ...

SUBROUTINEdirect_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

Arguments:
REAL(dp),
INTENT(in)
:: weights(:) ...
INTENT(inout)
:: zij(:,:) ...
TYPE(cp_fm_type),
POINTER
:: vectors ...
INTEGER,
INTENT(in)
:: max_iter ...
REAL(dp),
INTENT(in)
:: eps_localization ...
INTEGER
:: iterations ...

SUBROUTINEinitialize_weights(cell, weights)

...

Arguments:
TYPE(cell_type),
INTENT(in)
:: cell ...
REAL(dp)
:: weights(:) ...

SUBROUTINEjacobi_rotations(weights, zij, vectors, para_env, max_iter, eps_localization, sweeps, out_each, target_time, start_time)

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

Arguments:
REAL(dp),
INTENT(in)
:: weights(:) ...
INTENT(inout)
:: zij(:,:) ...
TYPE(cp_fm_type),
POINTER
:: vectors ...
POINTER
:: para_env ...
INTEGER,
INTENT(in)
:: max_iter ...
REAL(dp),
INTENT(in)
:: eps_localization ...
INTEGER
:: sweeps ...
INTEGER,
INTENT(in)
:: out_each ...
REAL(dp)
:: target_time ...
REAL(dp)
:: start_time ...

SUBROUTINErotate_orbitals(rmat, vectors)

...

Arguments:
TYPE(cp_fm_type),
POINTER
:: rmat ...
TYPE(cp_fm_type),
POINTER
:: vectors ...