Notes:Screening
From Diracwiki
We have some number of old density matrices Dk − 1,Dk − 2 etc, and want to write the new density matrix as
where ΔD will be sent to TWOFCK and should give efficient screening. Currently we are minimizing the Frobenius norm (sum of squares of elements) of ΔD, using one old density matrix. In the general case we have to solve Sc = y, where
Sij = (Dk − i,Dk − j) and yi = (Dk,Dk − i).
Here
is the inner product between the D "vectors". However, the use of the Frobenius norm gives the larges weight to the large elements of ΔD. This is not really what we want, because we care more about producing as many small elements in ΔD as possible. Therefore we can imagine to introduce a metric matrix M, so that
and set M to emphasize the elements that have a chance of being made small. In practice one could imagine
- Calculate ΔD using a unit (Mij = 1) metric.
- Find the largest elements (with some definition of largest) of ΔD and set the corresponding elements in M to zero.
- Recalculate S using the new metric.
- Solve for the new ΔD
Doing this for the water molecule SCF in test 1 shrinks the elements in the final iteration ΔD by four orders of magnitude. In this case I used five old density matrices. Just using a large number of old densities without modifying the metric did very little. A simple test inside Dirac shows that it is not enough to use one historical density matrix with a modified metric. The reason is that at the end of the SCF the change in density is almost orthogonal to the last density matrix.
It would also be possible to give larger weight to certain elements of ΔD, for example those that come from different integral blocks or centers.
