(git:6344619)
Loading...
Searching...
No Matches
qs_mo_methods Module Reference

collects routines that perform operations directly related to MOs More...

Data Types

interface  calculate_subspace_eigenvalues
interface  make_basis_sv

Functions/Subroutines

subroutine, public make_basis_sm (vmatrix, ncol, matrix_s)
 returns an S-orthonormal basis v (v^T S v ==1)
subroutine, public make_basis_cholesky (vmatrix, ncol, ortho)
 return a set of S orthonormal vectors (C^T S C == 1) where the cholesky decomposed form of S is passed as an argument
subroutine, public make_basis_lowdin (vmatrix, ncol, matrix_s)
 return a set of S orthonormal vectors (C^T S C == 1) where a Loedwin transformation is applied to keep the rotated vectors as close as possible to the original ones
subroutine, public make_basis_simple (vmatrix, ncol)
 given a set of vectors, return an orthogonal (C^T C == 1) set spanning the same space (notice, only for cases where S==1)
subroutine, public calculate_orthonormality (orthonormality, mo_array, matrix_s)
 ...
subroutine, public calculate_magnitude (mo_array, mo_mag_min, mo_mag_max)
 ...
subroutine, public make_mo_eig (mos, nspins, ks_rmpv, scf_control, mo_derivs, admm_env, hairy_probes, probe)
 Calculate KS eigenvalues starting from OF MOS.
subroutine, public calculate_orbital_fock_elements (orbitals, ks_matrix, orbital_energies, max_offdiag)
 Orbital energies <phi_i|F|phi_i> of a set of orbitals and the largest off-diagonal Fock matrix element max_{i/=j} |<phi_i|F|phi_j>| within the set. Unlike calculate_subspace_eigenvalues, the orbitals are not rotated and the energies belong to the given orbitals. The orbitals are canonical if the off-diagonal elements vanish.
subroutine, public make_mo_set_canonical (mo_set, ks_matrix, eps_canonical, rotated, max_offdiag, mo_derivs)
 Rotates the orbitals of an MO set into canonical orbitals (eigenvectors of the Fock matrix in the space of the orbitals), separately within the occupied and within the unoccupied orbitals, so that the occupied space (the determinant) is unchanged. The orbitals are rotated in place: the eigenvalues, the DBCSR copy of the coefficients (if used) and the orbital derivatives (if given) are rotated consistently, C' = C U and D' = D U. Nothing is done if the orbitals are already canonical, i.e. if no off-diagonal Fock matrix element exceeds eps_canonical; orbitals of a converged diagonalization SCF are therefore never changed. Requires integer occupations (0 or the maximum occupation); fractionally occupied orbitals and ROKS orbitals must not be mixed this way.

Detailed Description

collects routines that perform operations directly related to MOs

Note
first version : most routines imported
Author
Joost VandeVondele (2003-08)

Function/Subroutine Documentation

◆ make_basis_sm()

subroutine, public qs_mo_methods::make_basis_sm ( type(cp_fm_type), intent(in) vmatrix,
integer, intent(in) ncol,
type(dbcsr_type), pointer matrix_s )

returns an S-orthonormal basis v (v^T S v ==1)

Parameters
vmatrix...
ncol...
matrix_s...
History
03.2006 created [Joost VandeVondele]

Definition at line 90 of file qs_mo_methods.F.

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

◆ make_basis_cholesky()

subroutine, public qs_mo_methods::make_basis_cholesky ( type(cp_fm_type), intent(in) vmatrix,
integer, intent(in) ncol,
type(cp_fm_type), intent(in) ortho )

return a set of S orthonormal vectors (C^T S C == 1) where the cholesky decomposed form of S is passed as an argument

Parameters
vmatrix...
ncol...
orthocholesky decomposed S matrix
History
03.2006 created [Joost VandeVondele]
Note
if the cholesky decomposed S matrix is not available use make_basis_sm since this is much faster than computing the cholesky decomposition of S

Definition at line 250 of file qs_mo_methods.F.

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

◆ make_basis_lowdin()

subroutine, public qs_mo_methods::make_basis_lowdin ( type(cp_fm_type), intent(in) vmatrix,
integer, intent(in) ncol,
type(dbcsr_type) matrix_s )

return a set of S orthonormal vectors (C^T S C == 1) where a Loedwin transformation is applied to keep the rotated vectors as close as possible to the original ones

Parameters
vmatrix...
ncol...
matrix_s...

par History 05.2009 created [MI]

Note

Definition at line 301 of file qs_mo_methods.F.

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

◆ make_basis_simple()

subroutine, public qs_mo_methods::make_basis_simple ( type(cp_fm_type), intent(in) vmatrix,
integer, intent(in) ncol )

given a set of vectors, return an orthogonal (C^T C == 1) set spanning the same space (notice, only for cases where S==1)

Parameters
vmatrix...
ncol...
History
03.2006 created [Joost VandeVondele]

Definition at line 357 of file qs_mo_methods.F.

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

◆ calculate_orthonormality()

subroutine, public qs_mo_methods::calculate_orthonormality ( real(kind=dp) orthonormality,
type(mo_set_type), dimension(:), intent(in) mo_array,
type(dbcsr_type), optional, pointer matrix_s )

...

Parameters
orthonormality...
mo_array...
matrix_s...

Definition at line 690 of file qs_mo_methods.F.

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

◆ calculate_magnitude()

subroutine, public qs_mo_methods::calculate_magnitude ( type(mo_set_type), dimension(:), intent(in) mo_array,
real(kind=dp) mo_mag_min,
real(kind=dp) mo_mag_max )

...

Parameters
mo_array...
mo_mag_min...
mo_mag_max...

Definition at line 769 of file qs_mo_methods.F.

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

◆ make_mo_eig()

subroutine, public qs_mo_methods::make_mo_eig ( type(mo_set_type), dimension(:), intent(inout) mos,
integer, intent(in) nspins,
type(dbcsr_p_type), dimension(:), pointer ks_rmpv,
type(scf_control_type), pointer scf_control,
type(dbcsr_p_type), dimension(:), pointer mo_derivs,
type(admm_type), optional, pointer admm_env,
logical, optional hairy_probes,
type(hairy_probes_type), dimension(:), optional, pointer probe )

Calculate KS eigenvalues starting from OF MOS.

Parameters
mos...
nspins...
ks_rmpv...
scf_control...
mo_derivs...
admm_env...
hairy_probes...
probe...
History
02.2013 moved from qs_scf_post_gpw

Definition at line 824 of file qs_mo_methods.F.

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

◆ calculate_orbital_fock_elements()

subroutine, public qs_mo_methods::calculate_orbital_fock_elements ( type(cp_fm_type), intent(in) orbitals,
type(dbcsr_type), pointer ks_matrix,
real(kind=dp), dimension(:), intent(out) orbital_energies,
real(kind=dp), intent(out) max_offdiag )

Orbital energies <phi_i|F|phi_i> of a set of orbitals and the largest off-diagonal Fock matrix element max_{i/=j} |<phi_i|F|phi_j>| within the set. Unlike calculate_subspace_eigenvalues, the orbitals are not rotated and the energies belong to the given orbitals. The orbitals are canonical if the off-diagonal elements vanish.

Parameters
orbitalsS-orthonormal orbitals (columns)
ks_matrixKohn-Sham or Fock matrix
orbital_energiesdiagonal elements; filled up to MIN(SIZE, number of orbitals)
max_offdiaglargest off-diagonal element in absolute value

Definition at line 911 of file qs_mo_methods.F.

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

◆ make_mo_set_canonical()

subroutine, public qs_mo_methods::make_mo_set_canonical ( type(mo_set_type), intent(inout) mo_set,
type(dbcsr_type), pointer ks_matrix,
real(kind=dp), intent(in) eps_canonical,
logical, intent(out) rotated,
real(kind=dp), intent(out) max_offdiag,
type(dbcsr_type), optional, pointer mo_derivs )

Rotates the orbitals of an MO set into canonical orbitals (eigenvectors of the Fock matrix in the space of the orbitals), separately within the occupied and within the unoccupied orbitals, so that the occupied space (the determinant) is unchanged. The orbitals are rotated in place: the eigenvalues, the DBCSR copy of the coefficients (if used) and the orbital derivatives (if given) are rotated consistently, C' = C U and D' = D U. Nothing is done if the orbitals are already canonical, i.e. if no off-diagonal Fock matrix element exceeds eps_canonical; orbitals of a converged diagonalization SCF are therefore never changed. Requires integer occupations (0 or the maximum occupation); fractionally occupied orbitals and ROKS orbitals must not be mixed this way.

Parameters
mo_setthe MO set (e.g. the SCF orbitals after an OT optimization)
ks_matrixKohn-Sham or Fock matrix
eps_canonicallargest off-diagonal Fock matrix element accepted as canonical
rotatedwhether the orbitals were rotated
max_offdiaglargest off-diagonal Fock matrix element before the rotation
mo_derivsderivatives of the energy with respect to the orbitals (OT), rotated as well

Definition at line 979 of file qs_mo_methods.F.

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