:sequential_nav: next
.. _tutorial-lua-engine:
The Lua scripting engine
========================
For background on the use of Lua in Siesta, please see the `flos
documentation site `_
In particular, you can read up on:
* How hooks at certain points in the program are implemented
* Which Siesta variables can be shared with Lua
* The functionality implemented in the FLOS library.
A structural optimization example
---------------------------------
Here we just offer a glimpse of what be done with Lua in Siesta
through a practical example. We will take one of the :ref:`structural
relaxation` cases and run it
under the control of a Lua script that invokes the LBFGS algorithm.
.. hint::
Enter the *relaxation* directory
Note the only two changes needed to enable the LBFGS optimizer::
MD.TypeOfRun Lua
Lua.Script relax_geometry_lbfgs.lua
The Lua script resides in the same directory.
In this case, the LBFGS algorithm appears marginally worse than the
Broyden method we used in the above-mentioned tutorial, but still much
better than 'conjugate gradients'. There are still some knobs to try
in the script, if you feel like it.
..
A convenience example
(This can be, for example, a script that will plot the eggbox-effect curve
automatically.)