Perhaps you are right
There is a good reason I chose this explicit route. There is a really annoying trait of SIESTA. If you write a keyword in a SIESTA input file that doesn't exist SIESTA ignores it.
I found the problem got even worse when using ASE because it takes you mentally further from the SIESTA input/output files. The only solution I could think of was explicit checking on the ASE side - basically, ASE compensating for SIESTA. And then there is the unit problem as you mentioned.
About the versions, I think different versions are best handled by being explicit - to support version 4 we should introduce the class Siesta4 and set Siesta=Siesta4. Then a user can always be explicit and import a specific version of the calculator.
I agree with your changes, but we should get Jens' input for spin default and whether we can use OrderedDict.
I like it here, I have an active board gaming club and plenty of interesting work ahead of me.
Yep, I think you are right. If someone wants to explicitly write these keywords, then they should be allowed to do so. If you write it, you take responsibility, yes. I would also be fine with dropping default writing of the kgrid_Monkhorst_Pack if the defaults are consistent. InitSpin is important though because it changes the default behavior to ase (unpolarized default).
YES, I initially wrote it with an ordered dict, but Jens didn't want this in the code for some reason(he had a reason but I don't remember it). Whether UNPOLARIZED should be default, maybe we should also ask Jens.
@jensj : Are we allowed to use ordered dicts now? What default spin would be most in line with ASE?
Hi Marc,
I think the calculator behave like a standard ase calculator - so ase default behavior trumps SIESTA. But the SIESTA behavior can be enforced by setting the proper keywords. Do you agree? If we agree on the principle then we can discuss how best to implement it - if not, then we have to discuss this first.
What are your concrete problems?
Mads PS: What are you up to these days?