Alex Granovsky
gran@classic.chem.msu.su
Sorry for the delayed reply.
We have very carefully checked your input file and performed
multiple numeric simulations with it. Our conclusion is that
the only reason causing such an unstable behavior is the partial
loss of precision due to overlap matrix being very badly defined
(the condition number of overlap matrix is ca. 10.0). This results
in the variational collapse at one of SCF iterations.
All the best,
Alex
On Mon Dec 30 '13 10:35pm, Slawomir Janicki wrote
-------------------------------------------------
>Dear Alex,
>The smallest eigenvalue is 3E-9. I am, obviously, guilty of using diffuse functions :). The basis set is QZVPD.
>It would be great if I could figure out what causes the SCF to converge 2 out of 3 times. The convergence is either excellent (four iterations) or none at all.
>The geometry optimization completes just fine when I set RSTRCT=.T.
>Slawomir
>On Mon Dec 30 '13 10:47am, Alex Granovsky wrote
>-----------------------------------------------
>>Dear Slawomir,
>>what is the condition number of the overlap matrix?
>>All the best,
>>Alex
>>
>>
>>On Sat Dec 28 '13 2:50am, Slawomir Janicki wrote
>>------------------------------------------------
>>>Dear Alex,
>>>Thank you for the explanation, the keywords work as you described them. Unfortunately, after 2-3 steps the SCF convergence goes bad regardless of how fine the geometry steps are. Is there anything else I can do to make subsequent steps work better?
>>>Here is an example of the initial SCF cycle:
>>>
NONZERO BLOCKS ITER EX DEM TOTAL ENERGY E CHANGE DENSITY CHANGE DIIS ERROR VIR. SHIFT DAMPING INTEGRALS SKIPPED * * * INITIATING DIIS PROCEDURE * * * 1 0 0 -434.359186149 -434.359186149 0.000055301 0.000000004 0.000000000 1.000000000 -1 230828006 2 1 0 -434.359186149 0.000000000 0.000069912 0.000000006 0.000000000 1.000000000 -1 230828009 3 2 0 -434.359186149 0.000000000 0.000003143 0.000000004 0.000000000 1.000000000 -1 230828008 4 3 0 -434.359186149 0.000000000 0.000018057 0.000000004 0.000000000 1.000000000 -1 230828006
>>>and in NSERCH=2:
>>>
NONZERO BLOCKS ITER EX DEM TOTAL ENERGY E CHANGE DENSITY CHANGE DIIS ERROR VIR. SHIFT DAMPING INTEGRALS SKIPPED * * * INITIATING DIIS PROCEDURE * * * 1 0 0 -434.359273918 -434.359273918************** 0.000676156 0.000000000 1.000000000 -1 230835077 2 1 0 -484.570859519 -50.211585601 1.378330879 60.696937501 0.191718895 1.000000000 -1 220440880 3 2 0 -564.905282460 -80.334422941 33.998870566 230.717968198 0.091718897 1.000000000 -1 220440880 4 3 0 -522.005967258 42.899315201 48.043352731 132.231704842 0.091718921 1.000000000 -1 220440881 5 4 0 -615.147126282 -93.141159024 48.912991636 284.451759398 0.091718921 1.000000000 -1 220440880 6 5 0 -501.008175486 114.138950796 50.567582645 138.445519042 0.091718983 1.000000000 -1 220440885 7 6 0 -514.529372285 -13.521196799 12.461155802 137.606126900 0.091719423 1.000000000 -1 220440887 8 7 0 -367.367076079 147.162296206 35.518904269 109.518705567 0.091719467 1.000000000 -1 220440892
>>>The keywords are:
>>>
$STATPT HESS=READ $END $STATPT NSTEP=100 OPTTOL=1E-6 TRMIN=1E-5 TRMAX=0.001 METHOD=GDIIS $END $STATPT MIXED=.F. NSKIP=0 DXMAX=0.05 HSSEND=.T. $END $SCF DIRSCF=.T. $END $CONTRL MAXIT=100 $END $SCF FDIFF=.F. XFDIFF=.T. $END $SCF EXTRAP=.F. $END $SCF SOSCF=.F. SOGTOL=1000 $END $SCF DIIS=.T. ETHRSH=2500 MAXDII=10 $END $SCF DAMP=.T. DMPCUT=0.0 $END $SCF SHIFT=.T. $END $SCF RSTRCT=.F. $END
>>>Is setting RSTRCT=.T. the only solution?
>>>Slawomir
>>>
>>>
>>>On Wed Dec 25 '13 11:28am, Alex Granovsky wrote
>>>-----------------------------------------------
>>>>Dear Slawomir,
>>>>I'm sorry for some delay with my reply.
>>>>The present implementation of gdiis in Firefly works as follows.
>>>>The very initial steps are performed using QA method just to gather
>>>>statistics. The number of QA steps to use is controlled by the NSKIP
>>>>keyword in the $statpt group. The default is nskip=2.
>>>>After performing initial QA steps, algorithm switches to gdiis.
>>>>While working in the gdiis mode, it is still possible for algorithm
>>>>to select pure NR step if it seems to be more efficient at a given
>>>>geometry update step. This fallback to NR steps can be disabled by
>>>>setting MIXED keyword of $statpt group to .false.
>>>>Finally, if gdiis is invoked for TS searche, it executes QA procedure.
>>>>Hope this helps.
>>>>All the best,
>>>>Alex
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>On Thu Dec 19 '13 5:20pm, Slawomir Janicki wrote
>>>>------------------------------------------------
>>>>>Hi,
>>>>>How can I delay switching from GDIIS to NR method in geometry optimization?
>>>>>When NR kicks in a large step causes SCF convergence to fail, presumably because of a bad guess. I tried to decrease DXMAX to 0.001, but there seems to be no effect on when NR starts.
>>>>>Is there a better way to delay or prevent switching to NR? Alternatively, is there a way to reduce the NR step size?
>>>>>Below is an example of the step when NR starts:
>>>>>
MAXIMUM GRADIENT = 0.0462724 RMS GRADIENT = 0.0142135 FORCE CONSTANT MATRIX NOT UPDATED --- TAKING FIRST STEP MIN SEARCH, CORRECT HESSIAN, TRYING PURE NR STEP NR STEP HAS LENGTH = 92.651197 TRIM/QA LAMBDA FOR NON-TS MODES = -84.40598785 TRIM/QA STEP HAS LENGTH = 0.001000 RADIUS OF STEP TAKEN= 0.00100 CURRENT TRUST RADIUS= 0.00100 TRANSFORMING DISPLACEMENT FROM INTERNALS TO CARTESIANS THE ROOT MEAN SQUARE ERROR IN ITERATION 1 IS 0.00000001 THE ROOT MEAN SQUARE ERROR IN ITERATION 2 IS 0.00000000 MAX PRIMITIVE INTERNAL COORDINATE DEVIATION IS 0.00000000 INTERNAL COORDINATES SELF-INCONSISTENCY IS 0.00000303
>>>>>Slawomir