neweffpot Module

This module implement the DIIS in two ways. (1) construct_Veff(): Simple relaxation + DIIS. The error vector can be effective or potential; (2) DIIS. DIIS from the begining. The error vector vector is density matrix. (2) is recommended for the calculation.

Todo

give this module better name



Subroutines

public subroutine diis(p, b, f, niter)

Direct inversion of iterative subspace [DIIS] procedure Implement Eqs. (1)-(4) Pulay J. Comp. Chem. 3. 556 (1982) Feb.25.2015 : K.H : (1) Half of operation (w.r. i and j ) can be skipped using symmetry. (2) You do not need full matrix multiplication (dimension=B%N_basis) since we just need the trace this amounts to ~10 sec gain per iteration for 180 atom (660basis) calculations

Read more…

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f
integer, intent(in) :: niter

public subroutine diis_unrestricted(p, b, f, niter)

Feb.25.2015 : K.H : (1) Half of operation (w.r. i and j ) can be skipped using symmetry. (2) You do not need full matrix multiplication (dimension=B%N_basis) since we just need the trace this amounts to ~10 sec gain per iteration for 180 atom (660basis) calculations

Arguments

Type IntentOptional Attributes Name
type(param), intent(in) :: p
type(basis), intent(in) :: b
type(wf_data), intent(inout) :: f
integer, intent(in) :: niter