siesta-project / flos Goto Github PK
View Code? Open in Web Editor NEWInterfacing SIESTA to Lua scripts using the flook code
Home Page: https://siesta-project.github.io/flos/index.html
License: MIT License
Interfacing SIESTA to Lua scripts using the flook code
Home Page: https://siesta-project.github.io/flos/index.html
License: MIT License
Hi,
Sometimes in the chemical reaction we have a complex path with one or more rotation. The initial linear interpolation is very bad idea for these paths. It is a good idea to grow a path. Instead of considering all images, we consider two images near to the fixed initial and final configurations, after minimizing their total force (which its criteria could be read from fdf file, for example 0.2 eV/A), the neb.lua add two other images near to them, and this approach continued until all requested image number is introduced in the path. This technique is for string method. see the paper:
Title:
A growing string method for determining transition states: Comparison to the nudged elastic band and string methods
Dear Nick,
in neb_simple.lua file, if the user uses 3 input data (initial.xyz, final.xyz, and N) for interpolation, he/she gets error. This is because that in line 46-70 the code tries to open the files that don't exist.
By the way, I got the middle class from git, thank you. It is a good idea to place these information in the manual of siesta.
Thanks,
Reza
Instead of having the excessive code examples much of it may be reduced to a single SIESTA
function which does everything.
I.e. the examples should be shortened and input into each of the classes such that one may do:
relaxation = flos.LBFGS(...)
-- Pass the siesta table for interaction
-- and retrieve the function that is going to be used
-- to communicate with SIESTA
siesta_comm = relaxation:SIESTA(siesta)
Thus the use of flos
may be greatly eased for those who are willing to use the respectable defaults.
Although this heavily limits the fine-tuning of the method, it will greatly improve usability
Hi Nick,
I have downloaded master version of flos. It seems that when I extract its zip file, the middleclass is empty! Could you please check it?
Thanks
Reza
Hello, i do not have much experience with lua, so i might be asking a stupid question here.
If i run a simple lua script that just prints "hello", and run siesta with mpirun -np N
, the printed "hello" appears N times.
Looking around the examples of siesta.lua
scripts i haven't found any mpi-related directives, so i am slightly confused.
Is there any simple way to limit the lua script to a single cpu?
1- As a chemist user (which are the main user of NEB), I don't need detailed information on forces, such as tangent, perpendicular, spring, ... . Only one parameter (i.e., maximum force on images) is more clear for the neb iteration step. So, I need to know that in each NEB iteration, what is the maximum force, and does the path goes to the minimize the force or not. By seeing fluctuations in maximum force (and also their images) I decided to continue the job or kill it. It is very important. Because, we (chemists) could easily find from the images of a NEB iteration that if the path is good for NEB or not.
2- I am not sure, and didn't investigate their detail codes, but I think ASE approach in FHI-aims has less force fluctuation. I have tested the same job with FHI-aims and flos/siesta.
3- We need that for each NEB iteration to see the proposed path and its maximum force. Jmol program can easily show the path, but need that all images be in one file. We need jmol or other similar open source code to see the path. So, for each iteration it is better that the code save all images in one file. Now, the code writes all iterations of an image in a file which is not useful for investigating the NEB path for each iteration step.
4- Maybe saving jmol xyz file in a directory with the name of iterationXXX is better.
5- It is better that the code gets initial and final optimized structure in the fdf file and generate the images authomatically. it is more user-friendly work.
6- All NEB parameters (such as number of images, the maximum force criteria, needing climbing or not, spring force constant, initial and final image, ....) should be readable from one fdf input file. It is more user-friendly work.
Siesta code is very fast. using more user-friendly flos with it, could be convert it to the most usable code for NEB.
Thanks
Reza
Flook.mod not found. I had to add the line: FLOOK_INC += -I$(FLOOK_PATH) because Flook.mod is in the top dir of flook.
Hi Nick,
I am working with NEB calculations with siesta/flos and siesta/ASE (https://wiki.fysik.dtu.dk/ase/ase/neb.html).
As you may know, ASE is a set of python codes that links to different calculators (such as siesta, openmx, fhi-aims, vasp, orca, gaussian, dmol3, castep, and many other codes) to do optimization, NEB calculation, phonon analyses, and other calculations. from two years ago, I used different calculators with ASE to do NEB calculations. The best one is siesta+ASE which is very fast and robust.
Comparing to siesta/ASE, siesta/flos needs more steps ( more than twice), but each similar steps (with the same n_images and the same SCF parameters) in siesta/flos is very faster than siesta/ASE. For example, one NEB calculation in FLOS+siesta is twice or more faster than ASE+siesta (maybe this is because that FLOS uses LUA and ASE is based on Python). Almost half of these very large NEB steps contain some images with very low forces (below the criteria I set; i.e. 0.05 eV/A). For example, with n_images equal to 12, in 151 th step of NEB, more than 7 images have forces of 0.07 or less. But in the next steps, these images change, and therefore, their forces change. One good idea is that, the structures of these images are fixed unless their forces becomes greater than the threshold value (0.05 eV/A). You can follow this idea if the following paper:
‘Scaled and Dynamic Optimizations of Nudged Elastic Bands’, P. Lindgren, G. Kastlunger and A. A. Peterson, J. Chem. Theory Comput. 15, 11, 5787-5793 (2019).
It has been proved that with this trick, speed of convergence increases more than twice (see the paper).
In ASE, it has been implemented as "DyNEB". You can see its source code:
https://wiki.fysik.dtu.dk/ase/_modules/ase/neb.html#DyNEB
Thanks
Reza
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.