thchr / Brillouin.jl

Brillouin zones and paths for dispersion calculations in Julia.
MIT License
50 stars 15 forks source link

Relax requirement that tricilinic angles must be all acute or all obtuse #34

Open kbarros opened 3 hours ago

kbarros commented 3 hours ago

Hi @thchr, thank you for the very nice package. I'm working to integrate it with our Sunny software for magnetic simulations.

There is a check here that triclinic angles must be all-acute or all-obtuse: https://github.com/thchr/Brillouin.jl/blob/7defcdc7a027d948fda9fbaf39a592ddd0697001/src/bravais-branches.jl#L129-L147

You commented that SeeK-path automatically transforms to this setting. Is this something that Brillouin.jl might also automate? Otherwise, is there a suggestion for how to implement this in one's own code?

thchr commented 3 hours ago

Yeah, transforming to this is something I've wanted to implement for a while but haven't yet. I think the main steps are the following: 1. transform to Niggli-reduced cell and 2. transform from Niggli-reduced cell to a standard/conventional cell. I recently added a method to do step 1 (Niggli-reduced cell in Bravais.jl), but haven't gotten around to doing step 2. I think it's probably described in ITA how to do it. Would love to add it to Bravais.jl one day; with that, it'd would be trivial to do this automatically in Brillouin.jl as well.

In the meanwhile, it should be possible to do this via Spglib.jl: see https://thchr.github.io/Brillouin.jl/stable/kpaths/#Treating-unit-cells-in-non-standard-settings.

kbarros commented 2 hours ago

Ah, this helps a lot. We already depend on Spglib, but I didn't realize it could standardize the triclinic lattice like this. Thanks!