Closed ExpHP closed 5 years ago
Funny. I thought a smaller starting alpha of 1e-4
would fix this specific case, but in fact it does just the opposite! Apparently there is a largeish positive slope at that distance, so the search interval never gets expanded in either case
106 steps, starting alpha 1e-4
[ 141.294s][TRACE] Chasing 2 bad eigenvectors...
[ 141.405s][TRACE] i: 0 v: -1987.17452262468805 dv: +0.00e0 g: 2.4402943e-16 22222222222222222222 2
[ 141.405s][DEBUG] Using steepest descent. (i: 1)
[ 141.573s][TRACE] LS: i: 1 (INI) a: 1e-4 s: +3.920387585408192e-9 v: -1987.1745226246862
[ 141.657s][TRACE] LS: i: 3 (DS1) a: 9.137563056492585e-12 s: +6.006901568439117e-16 v: -1987.1745226246878
[ 141.740s][TRACE] LS: i: 4 (DS2) a: -6.184651416134867e-12 s: -5.381187993033064e-16 v: -1987.1745226246874
[ 141.740s][DEBUG] update_interval: Exit by strange guess (U0), (0e0, 9.137563056492585e-12) vs -6.184651416134867e-12
100 steps, starting alpha = 1e-4
[ 137.057s][TRACE] Chasing 2 bad eigenvectors...
[ 137.166s][TRACE] i: 0 v: -1987.17452262468896 dv: +0.00e0 g: 3.9219420e-16 11111111112222222222 1
[ 137.166s][DEBUG] Using steepest descent. (i: 1)
[ 137.344s][TRACE] LS: i: 1 (INI) a: 1e-4 s: +3.920673867376733e-9 v: -1987.1745226246842
[ 137.427s][TRACE] LS: i: 3 (DS1) a: 9.598698494088662e-14 s: -1.3042333611264825e-16 v: -1987.174522624689
[ 137.508s][TRACE] LS: i: 4 (DS2) a: -2.8519764623749952e-15 s: -3.986232514784425e-16 v: -1987.174522624689
[ 137.508s][DEBUG] update_interval: Exit by strange guess (U0), (9.598698494088662e-14, 1e-4) vs -2.8519764623749952e-15
[ 137.591s][TRACE] LS: i: 5 (BSC) a: 5.000000004799349e-5 s: +1.9603362150786906e-9 v: -1987.174522624685
[ 137.673s][TRACE] LS: i: 7 (DS1) a: 3.4225420500120907e-12 s: -4.072460883268955e-16 v: -1987.1745226246892
[ 137.756s][TRACE] LS: i: 8 (DS2) a: -1.4712989620365761e-12 s: -1.2806685814311028e-16 v: -1987.174522624689
(note: the similar values of s=+3.92e-9
in both cases suggest that my earlier note about "different directions in projected subspace" is probably irrelevant, and that the linesearches are on similarly-shaped curves)
What on earth is this?! Is the energy curve along this line some kind of capital-N shape?
The energy curve from alpha = 0 to 1e-2:
It is that tiny bump at the beginning that catches it.
Making stuff like this work for changes on the order of 1e-10 eV is a collosal waste of time, and only impacts the ultra-low frequency modes. (and who's to say those are even physical when the energy barrier is so small? This is Lennard Jones all over again...)
067-b
used to converge prior to me removing the 100 stepCG_DESCENT
limit; now it gets perpetually stuck with two imaginary frequencies at -2.1480 wavenumber.Removing the limit only makes it run 106 steps initially; just 6 more than before. But debug output shows that when it chases those eigenvectors during the first steepest descent step, it finds a positive slope at
alpha = ~1e-11
, cutting off all larger values:whereas when it stops and diagonalizes on the 100th step, it finds an ever-so-ridiculously-slightly negative slope at alpha =
3e-13
, and after a bisection locates a reasonably large negative force at alpha =0.005
.(aside: The
11111111112222222222
and22222222222222222222
indicate that the "steepest descent" directions in the projected subspace of bad eigenvectors is slightly different; I'm not sure whether these linesearches are dealing with curves of fundamentally different shapes.)The greater point, however, is that the slope at alpha = 0 is almost zero, yet there is a reasonably large negative slope a short distance away. This breaks the double-secant strategy which seems to be too good at closing in on areas it has discovered with nearly-zero slope.