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.
give this module better name
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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(param), | intent(in) | :: | p | |||
type(basis), | intent(in) | :: | b | |||
type(wf_data), | intent(inout) | :: | f | |||
integer, | intent(in) | :: | 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
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(param), | intent(in) | :: | p | |||
type(basis), | intent(in) | :: | b | |||
type(wf_data), | intent(inout) | :: | f | |||
integer, | intent(in) | :: | niter |