Can seekpath apply for 1D and 2D systems?
hongyi-zhao opened this issue · 5 comments
Hi,
Can seekpath apply for 1D and 2D systems?
Regards
Unfortunately not - we need first a library like SPGLIB to work for 2D systems.
It's something that I've had in mind for some time but I have no timeline for this, sorry.
Suggestions welcome, if someone wants to contribute!
I think for 1D, you do not need Seekpath since it is only a one-dimensional k-path between Gamma (0) and Z (0.5 or pi/a). For 2D, even when you are making a structure file (POSCAR or cif for instance), the lattice for the "non-periodic" dimension will need to be large to avoid interaction between two layers.
If you use that structure file in the seekpath engine, you would instantly notice that one dimension of the Brillouin zone getting really small. Hence, you would need only the paths in the plane that is crossing Gamma. So you can manually remove the other paths in the input of your choice.
The problem only happens if the input of choice is either QuantumExpresso or VASP KPOINTS input for LDA/GGA/Hybrid/GW where the explicit k-points are generated.
Maybe, a simple modification in the code to automatically remove all the k-points in the planes that are not crossing Gamma if the user specifies upfront that it is a 2D materials ?
This way we do not need to rely on the spglib to work for 2D materials.
Any thought?
Hi @hungpham2017, thanks for your comments.
I fear that the situation is a bit more complex than this.
In many simple situations, what you suggest might work (e.g. in cubic symmetry).
Still, it requires some logic - e.g. you cannot just drop lines not going via Γ; you need to flatten everything on a plane, and remove points and duplicates.
Example, for cP1
, and non-periodic direction, there is no line that does not reduce to a point when flattening along k_z. However, for the path Γ—X—M—Γ—R—X|R—M—X_1
, with flattening you would have X->Γ, M->X_1,R->R'
(where I am defining with R'
the point (1/2,1/2,0)). Then the path becomes Γ—Γ—X_1—Γ—R'—X_1|R'—X_1—X_1
; removing points you get Γ—X_1—Γ—R'—X_1|R'—X_1
and removing duplicates (and with some reordering): Γ—X_1—R'—Γ
.
In any case, this requires reordering that might be different, e.g. in the case of cP2
, so the path is not standardised anymore, or even remaining in the case of cP1
, depending in the non-periodic direction is x, y, or z.
Now, I take a bad example because you cannot have a cubic-�symmetry system being 2D. But the problem is similar in other cases, and is worse in orthorhombic and monoclinic: this is the difference between space groups (230) and settings (530), see e.g. this table (settings in the first column, space group in the second column).
In practice, the problem is (given the 3D space group) understanding also the actual setting, and downselecting the symmetry based on which setting (i.e., in the case of monoclinic, it is very different if the non-periodic direction is on the plane where the two axes are perpendicular, or it is along one of these two axes).
In any case, I agree that for many simple systems your suggestion (with my algorithm above) would work (and at least can produce some paths, even if non-standard names or order), but to fully automate it, it would require some additional work
@giovannipizzi I learned the following fact in the AiiDA documentation here.
The 2D implementation is based on the Ramirez paper:
R. Ramirez and M. C. Bohm,
Simple geometric generation of special points in brillouin-zone integrations. Two-dimensional bravais lattices
Int. J. Quant. Chem., XXX, 391-411 (1986)
DOI: 10.1002/qua.560300306
So, it means that the 2D system supporting already implemented in the early versions of AiiDA, why this method not merged into the seekpath package?
Regards
That implementation was not general enough. It required the cell to be already oriented in a given direction.
The difficult part is to standardise the orientation of the cell in the 2D case.
If this is done, it's easy to then implement the definition of high-symmetry points for 2D.