Saturday, September 12, 2009

A bad situation for Armijo backtracking & Next Steps




In the configuration on the right, we start from a position in the energy landscape where the energy is very steep.

---
Next Steps:
Try running molecular dynamics with zero viscosity and try both indenter types. Use the 6000 atom system.
Analyze new LAMMPS line_minimizer (7Sep version).

Thursday, September 10, 2009

Results of running plain Armijo bactracking

I disabled the quadratic branch in the linesearch, which forces backtracking by cutting alpha by a factor of 2. This new scheme performs much worse as I get failed linesearches in systems where the indenter has barely interacted with the lattice. Besides, there are failed linesearches on each step of the indenter :(

On inspecting the output from the linemin, it became clear that the failed linesearch arose due to |de_ideal| being less than IDEAL_TOL. I think that this condition is caused because we are very close to the minimum to start with. In this specific instance f.s didn't even change sign (it remained negative).
Note: All the above observations were made with IDEAL_TOL = 1e-10

Next I tried to minimize the first indentation configuration with IDEAL_TOL = 1e-18. With this new IDEAL_TOL the backtracker performed much better but I still got a failed linesearch. Despite f.s changing sign, the backtracker failed to identify the energy minimum because the Armijo sufficient decrease condition wasn't satisfied. Eventually, because of cutting alpha by a factor of 2, a failed linesearch arose when: |de_ideal| < IDEAL_TOL.

Conclusion: backtracker needs more muscle !

Tuesday, September 8, 2009

Min::linemin_quadratic() flowchart

Concerns:
(1) We may be abandoning plain Armijo backtracking when it may be having some remaining mileage . The danger in this is that the quadratic mode may satisfy Armijo by jumping to the initial point.

(2) The quadratic mode assumes success when:
(de <= de_ideal || de_ideal >= -IDEAL_TOL) == True
At the initial point this is automatically true (even when forces aren't zero).
Note that: de_ideal = -0.4(alpha)(initial_f.s)
and in quadratic mode: alpha = alpha0

(3) Jumping to the initial point can cause the minimizer to go into an infinite loop causing it to exit with either MAX_FORCE_EVALUATIONS or MAX_ITERATIONS (ie. max cg loops).

(4) Example of linemin_quadratic() when it exit with success by jumping to the initial point:

----
count fdotdirall energy alpha start
0 2.436356006811224e-03 -2.719796543157099e+00 3.460098962684194e-01 initial
1 -1.801321567525278e+01 -1.684889377507936e+00 3.460098962684194e-01
2 -1.017649600012320e+00 -2.658368603360779e+00 1.730049481342097e-01
3 -2.847044105111986e-01 -2.708236347904628e+00 8.650247406710485e-02
4 -1.597636733426530e-01 -2.715590284316164e+00 5.290154968720939e-02 insideQuad
5 -1.297466257039866e-01 -2.716985938194178e+00 4.325123703355242e-02
6 -6.561635732195255e-02 -2.719095785009185e+00 2.162561851677621e-02
7 -3.280817866097375e-02 -2.719629373969908e+00 1.081280925838811e-02
8 2.436356006811224e-03 -2.719796543157099e+00 1.665334536937735e-15 insideQuad
9 2.436356006811224e-03 -2.719796543157099e+00 1.665334536937735e-15
9 2.436356006811223e-03 -2.719796543157099e+00 1.660130366509804e-15 0.000000000000000e+00 -1.617867436214352e-18 exitingLinemin
---
The 3rd last entry in line 9 (last line) is the decrease in energy compared to the initial point & the 2nd last entry is de_ideal.

This caused an infinite loop and at the end the minimizer quit due to MAX_FORCE_EVALS, leaving the final state with large forces.

----