sisl
sisl copied to clipboard
init commit of siestabarriers
Hi @zerothi
just start working on merging NEB stuff in sisl toolbox i just open the pull for u to just check if u are agreed with this way ... cheers
by the way, i already have talked to Miguel regarding bsse for neb we have an Idea how to do and check it now ... i"ll work on that later ...
I haven't gone through the rest of the files, but there are quite some things that needs adaptation. The structure of the code seems to want to be class based, but in fact it is just a container with
ifstatements. Now, either choice could be ok, but classes would allow easier extensibility.Generally I would discourage CamelCase module names. So I would advice against this.
Is there a reason for
siestabarriersrather thansiesta.neb? orsiesta.barrier? From reading the module namenebshould be sufficiently descriptive. Or does this do anything beyond NEB?
now i'have something like this :
Example case
from toolbox.siesta.barriers import VacancyExchange
import sisl
host= sisl.get_sile('./MgO-sheet.fdf').read_geometry()
A=VacancyExchange(host_structure=host,
ghost=True,
interpolation_method='idpp',
trace_atom_initial_position=2,
trace_atom_final_position=18,
number_of_images=17)
A.set_initial_relaxed_path("/home/aakhtar/Calculations/2020/siesta/SiestaBarriers/VacancyExchange/new-0/results/")
A.set_final_relaxed_path("/home/aakhtar/Calculations/2020/siesta/SiestaBarriers/VacancyExchange/new-8/results/")
A.set_initial_relaxed_fdf_name("input.fdf")
A.set_final_relaxed_fdf_name("input.fdf")
A.set_relaxed(False)
A.Generate_Vacancy_Exchange_Images()
A.IO.prepare_NEB()
Put code here
i removed the intermediate class (SiestaBarrier) ... now for each barrier type will have its one class to initiate (VacancyExchange,Exchange,Manual,...) like this: class VacancyExchange(SiestaBarriersBase): """ Init Object for VacancyExchange INPUTs: host_structure = Sisl Stucture Object number_of_images = # of images for NEB trace_atom_initial_position = initial Atom Position/Index trace_atom_final_position = final Atom Position/Index interpolation_method = idpp """
def __init__(self,
host_structure ,
number_of_images ,
trace_atom_initial_position ,
trace_atom_final_position ,
interpolation_method = 'iddp',
ghost = True ,
):
super().__init__(
relaxed = False,
host_structure = host_structure ,
number_of_images = number_of_images,
initial_relaxed_path = None,
initial_relaxed_fdf_name = None ,
final_relaxed_path = None ,
final_relaxed_fdf_name = None,
trace_atom_initial_position = trace_atom_initial_position ,
trace_atom_final_position = trace_atom_final_position ,
atol = 1e-2,
rtol = 1e-2,
)
self.host_structure = host_structure
self.number_of_images = number_of_images
self.interpolation_method = interpolation_method
self.ghost = ghost
@zerothi haven't fixed ur other comments yet ... will do after u show me the BarrierManual example .... tanx...
I have made a PR against your branch, please have a look there, I am quite honest, so don't be discouraged. Perhaps you may use a co-worker and ask them what would be natural in the interface for the NEB classes. As it is, it is too complicated, I think. :)
Let me know if you have questions!
This has gone stale for some time, I would be happy to pick it up later, but for now we'll close this PR.