(git:f824184)
Loading...
Searching...
No Matches
preconditioner Module Reference

computes preconditioners, and implements methods to apply them currently used in qs_ot More...

Data Types

interface  apply_preconditioner

Functions/Subroutines

subroutine, public make_preconditioner (preconditioner_env, precon_type, solver_type, matrix_h, matrix_s, matrix_t, mo_set, energy_gap, convert_precond_to_dbcsr, chol_type)
 ...
subroutine, public make_preconditioner_complex_full_all (preconditioner_env, matrix_c_re, matrix_c_im, matrix_h_re, matrix_h_im, matrix_s_re, matrix_s_im, energy_gap, solver_type)
 Construct FULL_ALL directly from one complex H(k), S(k), and C(k) channel.
subroutine, public make_preconditioner_complex_full_all_batch (preconditioners, matrix_c, matrix_h, matrix_s, energy_gap, solver_type, handled)
 Build local FULL_ALL preconditioners from cached operators in bounded batches. Only the independent eigensolves run inside OpenMP.
subroutine, public make_preconditioner_complex_full_single (preconditioner_env, matrix_h_re, matrix_h_im, matrix_s_re, matrix_s_im, mo_set, energy_gap, solver_type)
 Construct a complex FULL_SINGLE preconditioner from H(k) and S(k).
subroutine, public make_preconditioner_complex_fermi_low_rank (preconditioner_env, matrix_c_re, matrix_c_im, matrix_h_re, matrix_h_im, matrix_s_re, matrix_s_im, energy_gap, max_rank, solver_type)
 Construct FERMI_LOW_RANK directly for one complex k-point channel.
subroutine, public make_preconditioner_complex_full_all_covariant (preconditioner_env, matrix_c_re, matrix_c_im, matrix_h_re, matrix_h_im, matrix_s_re, matrix_s_im, energy_gap, solver_type, occupation_signature)
 Construct rotation-covariant FULL_ALL for one complex k-point channel.
subroutine, public make_preconditioner_complex_full_single_inverse (preconditioner_env, matrix_c_re, matrix_c_im, matrix_h_re, matrix_h_im, matrix_s_re, matrix_s_im, energy_gap, solver_type)
 Construct a complex FULL_SINGLE_INVERSE preconditioner without discarding Im(H,S,C).
subroutine, public make_preconditioner_complex_full_s_inverse (preconditioner_env, matrix_s_re, matrix_s_im, solver_type)
 Construct a complex FULL_S_INVERSE preconditioner.
subroutine, public make_preconditioner_complex_full_kinetic (preconditioner_env, matrix_t_re, matrix_t_im, matrix_s_re, matrix_s_im, energy_gap, solver_type)
 Construct a complex FULL_KINETIC preconditioner.
subroutine, public dbcsr_pair_to_cfm (matrix_re, matrix_im, preconditioner_env, matrix_name, matrix)
 Copy a real/imaginary DBCSR pair to one distributed complex full matrix.
subroutine, public restart_preconditioner (qs_env, preconditioner, prec_type, nspins)
 Allows for a restart of the preconditioner depending on the method it purges all arrays or keeps them.
subroutine, public prepare_preconditioner (qs_env, mos, matrix_ks, matrix_s, ot_preconditioner, prec_type, solver_type, energy_gap, nspins, has_unit_metric, convert_to_dbcsr, chol_type, full_mo_set, chebyshev_degree, low_rank_base, fermi_low_rank_max_rank, lattice_fft, lattice_fft_local_cells)
 ...

Detailed Description

computes preconditioners, and implements methods to apply them currently used in qs_ot

History
  • [UB] 2009-05-13 Adding stable approximate inverse (full and sparse)
Author
Joost VandeVondele (09.2002)

Function/Subroutine Documentation

◆ make_preconditioner()

subroutine, public preconditioner::make_preconditioner ( type(preconditioner_type) preconditioner_env,
integer, intent(in) precon_type,
integer, intent(in) solver_type,
type(dbcsr_type), pointer matrix_h,
type(dbcsr_type), optional, pointer matrix_s,
type(dbcsr_type), optional, pointer matrix_t,
type(mo_set_type), intent(in) mo_set,
real(kind=dp) energy_gap,
logical, intent(in), optional convert_precond_to_dbcsr,
integer, intent(in), optional chol_type )

...

Parameters
preconditioner_env...
precon_type...
solver_type...
matrix_h...
matrix_s...
matrix_t...
mo_set...
energy_gap...
convert_precond_to_dbcsr...
chol_type...
History
09.2014 removed some unused or unfinished methods removed sparse preconditioners and the sparse approximate inverse at rev 14341 [Florian Schiffmann]

Definition at line 714 of file preconditioner.F.

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

◆ make_preconditioner_complex_full_all()

subroutine, public preconditioner::make_preconditioner_complex_full_all ( type(preconditioner_type) preconditioner_env,
type(dbcsr_type), pointer matrix_c_re,
type(dbcsr_type), pointer matrix_c_im,
type(dbcsr_type), pointer matrix_h_re,
type(dbcsr_type), pointer matrix_h_im,
type(dbcsr_type), pointer matrix_s_re,
type(dbcsr_type), pointer matrix_s_im,
real(kind=dp), intent(in) energy_gap,
integer, intent(in) solver_type )

Construct FULL_ALL directly from one complex H(k), S(k), and C(k) channel.

Parameters
preconditioner_envpreconditioner storage
matrix_c_rereal part of the active OT reference orbitals
matrix_c_imimaginary part of the active OT reference orbitals
matrix_h_rereal part of H(k)
matrix_h_imimaginary part of H(k)
matrix_s_rereal part of S(k)
matrix_s_imimaginary part of S(k)
energy_gapdenominator floor
solver_typeinverse application selected in the OT input

Definition at line 967 of file preconditioner.F.

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

◆ make_preconditioner_complex_full_all_batch()

subroutine, public preconditioner::make_preconditioner_complex_full_all_batch ( type(preconditioner_p_type), dimension(:), intent(in) preconditioners,
type(dbcsr_p_type), dimension(:, :), intent(in) matrix_c,
type(cp_fm_p_type), dimension(:, :), intent(in) matrix_h,
type(cp_fm_p_type), dimension(:, :), intent(in) matrix_s,
real(dp), intent(in) energy_gap,
integer, intent(in) solver_type,
logical, intent(out) handled )

Build local FULL_ALL preconditioners from cached operators in bounded batches. Only the independent eigensolves run inside OpenMP.

Parameters
preconditionerslocal channel preconditioners
matrix_creal/imaginary DBCSR reference orbitals
matrix_hcached real/imaginary Hamiltonians
matrix_scached real/imaginary overlaps
energy_gapdenominator floor
solver_typeinverse application selected in the OT input
handledfalse when the existing distributed or explicitly selected solver is required

Definition at line 1023 of file preconditioner.F.

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

◆ make_preconditioner_complex_full_single()

subroutine, public preconditioner::make_preconditioner_complex_full_single ( type(preconditioner_type) preconditioner_env,
type(dbcsr_type), pointer matrix_h_re,
type(dbcsr_type), pointer matrix_h_im,
type(dbcsr_type), pointer matrix_s_re,
type(dbcsr_type), pointer matrix_s_im,
type(mo_set_type), intent(in) mo_set,
real(kind=dp), intent(in) energy_gap,
integer, intent(in) solver_type )

Construct a complex FULL_SINGLE preconditioner from H(k) and S(k).

Parameters
preconditioner_envpreconditioner storage
matrix_h_rereal part of H(k)
matrix_h_imimaginary part of H(k)
matrix_s_rereal part of S(k)
matrix_s_imimaginary part of S(k)
mo_setorbital energy labels defining the occupied edge
energy_gapdenominator floor
solver_typerequested inverse solver

Definition at line 1107 of file preconditioner.F.

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

◆ make_preconditioner_complex_fermi_low_rank()

subroutine, public preconditioner::make_preconditioner_complex_fermi_low_rank ( type(preconditioner_type) preconditioner_env,
type(dbcsr_type), pointer matrix_c_re,
type(dbcsr_type), pointer matrix_c_im,
type(dbcsr_type), pointer matrix_h_re,
type(dbcsr_type), pointer matrix_h_im,
type(dbcsr_type), pointer matrix_s_re,
type(dbcsr_type), pointer matrix_s_im,
real(kind=dp), intent(in) energy_gap,
integer, intent(in) max_rank,
integer, intent(in) solver_type )

Construct FERMI_LOW_RANK directly for one complex k-point channel.

Parameters
preconditioner_envpreconditioner storage
matrix_c_rereal part of the active OT reference orbitals
matrix_c_imimaginary part of the active OT reference orbitals
matrix_h_rereal part of H(k)
matrix_h_imimaginary part of H(k)
matrix_s_rereal part of S(k)
matrix_s_imimaginary part of S(k)
energy_gapdenominator floor
max_rankmaximum complementary rank, or -1 for the full complement
solver_typeinverse application selected in the OT input

Definition at line 1159 of file preconditioner.F.

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

◆ make_preconditioner_complex_full_all_covariant()

subroutine, public preconditioner::make_preconditioner_complex_full_all_covariant ( type(preconditioner_type) preconditioner_env,
type(dbcsr_type), pointer matrix_c_re,
type(dbcsr_type), pointer matrix_c_im,
type(dbcsr_type), pointer matrix_h_re,
type(dbcsr_type), pointer matrix_h_im,
type(dbcsr_type), pointer matrix_s_re,
type(dbcsr_type), pointer matrix_s_im,
real(kind=dp), intent(in) energy_gap,
integer, intent(in) solver_type,
real(kind=dp), dimension(:, :), intent(in), optional occupation_signature )

Construct rotation-covariant FULL_ALL for one complex k-point channel.

Parameters
preconditioner_envpreconditioner storage
matrix_c_rereal part of the active OT reference orbitals
matrix_c_imimaginary part of the active OT reference orbitals
matrix_h_rereal part of H(k)
matrix_h_imimaginary part of H(k)
matrix_s_rereal part of S(k)
matrix_s_imimaginary part of S(k)
energy_gapdenominator floor
solver_typeinverse application selected in the OT input
occupation_signatureoccupations that define the admissible private gauge

Definition at line 1205 of file preconditioner.F.

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

◆ make_preconditioner_complex_full_single_inverse()

subroutine, public preconditioner::make_preconditioner_complex_full_single_inverse ( type(preconditioner_type) preconditioner_env,
type(dbcsr_type), pointer matrix_c_re,
type(dbcsr_type), pointer matrix_c_im,
type(dbcsr_type), pointer matrix_h_re,
type(dbcsr_type), pointer matrix_h_im,
type(dbcsr_type), pointer matrix_s_re,
type(dbcsr_type), pointer matrix_s_im,
real(kind=dp), intent(in) energy_gap,
integer, intent(in) solver_type )

Construct a complex FULL_SINGLE_INVERSE preconditioner without discarding Im(H,S,C).

Parameters
preconditioner_envpreconditioner storage
matrix_c_rereal part of the occupied reference orbitals
matrix_c_imimaginary part of the occupied reference orbitals
matrix_h_rereal part of H(k)
matrix_h_imimaginary part of H(k)
matrix_s_rereal part of S(k)
matrix_s_imimaginary part of S(k)
energy_gaplower spectral bound
solver_typerequested inverse solver

Definition at line 1249 of file preconditioner.F.

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

◆ make_preconditioner_complex_full_s_inverse()

subroutine, public preconditioner::make_preconditioner_complex_full_s_inverse ( type(preconditioner_type) preconditioner_env,
type(dbcsr_type), pointer matrix_s_re,
type(dbcsr_type), pointer matrix_s_im,
integer, intent(in) solver_type )

Construct a complex FULL_S_INVERSE preconditioner.

Parameters
preconditioner_envpreconditioner storage
matrix_s_rereal part of S(k)
matrix_s_imimaginary part of S(k)
solver_typerequested inverse solver

Definition at line 1332 of file preconditioner.F.

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

◆ make_preconditioner_complex_full_kinetic()

subroutine, public preconditioner::make_preconditioner_complex_full_kinetic ( type(preconditioner_type) preconditioner_env,
type(dbcsr_type), pointer matrix_t_re,
type(dbcsr_type), pointer matrix_t_im,
type(dbcsr_type), pointer matrix_s_re,
type(dbcsr_type), pointer matrix_s_im,
real(kind=dp), intent(in) energy_gap,
integer, intent(in) solver_type )

Construct a complex FULL_KINETIC preconditioner.

Parameters
preconditioner_envpreconditioner storage
matrix_t_rereal part of T(k)
matrix_t_imimaginary part of T(k)
matrix_s_rereal part of S(k)
matrix_s_imimaginary part of S(k)
energy_gapnon-negative overlap shift
solver_typerequested inverse solver

Definition at line 1363 of file preconditioner.F.

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

◆ dbcsr_pair_to_cfm()

subroutine, public preconditioner::dbcsr_pair_to_cfm ( type(dbcsr_type), pointer matrix_re,
type(dbcsr_type), pointer matrix_im,
type(preconditioner_type) preconditioner_env,
character(len=*), intent(in) matrix_name,
type(cp_cfm_type), intent(out) matrix )

Copy a real/imaginary DBCSR pair to one distributed complex full matrix.

Parameters
matrix_rereal matrix component
matrix_imimaginary matrix component
preconditioner_envsource of the distribution context
matrix_namematrix label
matrixcomplex output matrix

Definition at line 1399 of file preconditioner.F.

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

◆ restart_preconditioner()

subroutine, public preconditioner::restart_preconditioner ( type(qs_environment_type), pointer qs_env,
type(preconditioner_p_type), dimension(:), pointer preconditioner,
integer, intent(in) prec_type,
integer, intent(in) nspins )

Allows for a restart of the preconditioner depending on the method it purges all arrays or keeps them.

Parameters
qs_env...
preconditioner...
prec_type...
nspins...

Definition at line 1449 of file preconditioner.F.

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

◆ prepare_preconditioner()

subroutine, public preconditioner::prepare_preconditioner ( type(qs_environment_type), pointer qs_env,
type(mo_set_type), dimension(:), intent(inout) mos,
type(dbcsr_p_type), dimension(:), pointer matrix_ks,
type(dbcsr_p_type), dimension(:), pointer matrix_s,
type(preconditioner_p_type), dimension(:), pointer ot_preconditioner,
integer, intent(in) prec_type,
integer, intent(in) solver_type,
real(dp), intent(in) energy_gap,
integer, intent(in) nspins,
logical, intent(in), optional has_unit_metric,
logical, intent(in), optional convert_to_dbcsr,
integer, intent(in), optional chol_type,
logical, intent(in), optional full_mo_set,
integer, intent(in), optional chebyshev_degree,
integer, intent(in), optional low_rank_base,
integer, intent(in), optional fermi_low_rank_max_rank,
integer, intent(in), optional lattice_fft,
integer, intent(in), optional lattice_fft_local_cells )

...

Parameters
qs_env...
mos...
matrix_ks...
matrix_s...
ot_preconditioner...
prec_type...
solver_type...
energy_gap...
nspins...
has_unit_metric...
convert_to_dbcsr...
chol_type...
full_mo_set...
chebyshev_degree...
low_rank_base...
fermi_low_rank_max_rank...
lattice_fft...
lattice_fft_local_cells...

Definition at line 1520 of file preconditioner.F.

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