(git:26ffdda)
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, mo_set, 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_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 695 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,
type(mo_set_type), intent(in) mo_set,
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)
mo_set...
energy_gapdenominator floor
solver_typeinverse application selected in the OT input

Definition at line 949 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 1014 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 1066 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 1112 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 1156 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 1239 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 1270 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 1306 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 1344 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 1415 of file preconditioner.F.

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