well, if one wants to be sure that DIIS will be turned on
regardless on anything, one needs to set thrdii to the
really huge value, e.g. 1E10.
Note the thrdii threshold is very similar to the ETHRSH
parameter of $SCF group, the only difference is in the
definition of DIIS error.
The existence of thrdii, especialy having default
value of 0.05 only, could seem to be a kind of stupidity. :-)
However, this is not the case! The idea is that before
switching to DIIS, Firefly tries to perform several plain
SCF-like iterations until thrdii threshold is satisfied.
In some cases, these plain SCF iterations diverge,
and thus DIIS will not be turned on (unless one provides
really huge thrdii). In many cases (but not always!) this
absence of the initial convergence means that either HF or
MP2 itself (or both) does not adequately describe the system
of interest. The DIIS converger is really very powerful tool
(perhaps too powerful) and is usually capable to converge CPHF
equations even in problematic cases. Thus, the default small
value of thrdii is the way to request user's attention in
problematic cases to check if MP2 is really bad, or not.
The simplest way to check whether MP2 is not adequate is
to look at occupation numbers of MP2 natural orbitals.
If there are frozen core orbitals with occupancies larger
than ca. 2.05, most likely MP2 is not adequate. If there are
virtual orbitals having occupancies considerable smaller
than zero (e.g., -0.05), MP2 most likely is not adequate as well.
MP2 natural orbitals and their occupation numbers can be
obtained by either performing runtyp=energy mplevl=2 run
with activated mp2prp flag:
$mp2 mp2prp=.t. method=1 $end
or as a byproduct of runtyp=gradient mplevl=2 run.
One needs to be careful not to set nprint to -5, otherwise,
this information will not be available!
These problematic cases should be further inspected to find out
whether MP2 problems are caused by the use of inadequate basis
set (and hence, the problems can be solved using better basis set),
or are inherent to MP2 (e.g., because of milti-configuration
nature of true wavefunction).
I doubt if this is documented in details in manual, nor I think
it is easy (but not impossible) to find this information elsewhere.
Perhaps, there should be some diagnostic message printed in the
case of CPHF divergence. Meanwhile, I hope this information will
be of some use.
To much extent, more or less the same consideration is
applicable to CIS as well (and this is why it also defines
On Tue Mar 24 '09 3:34pm, Valentin Monev wrote
>>Solution, as provided by Alex G: add thrdii=10 to the $mp2 group (current default thrdii=0.05).
>Initially, this helped, but after about six optimization steps, CPHF again failed (to initiate DIIS and thus failed) to converge in the default 100 iterations. ICUT and NCONV and INTTYP did not help. I set thrdii=12, and it seems problem is resolved.
[ This message was edited on Sat Mar 28 '09 at 2:29pm by the author ]