aiidalab / aiidalab-qe

AiiDAlab App for Quantum ESPRESSO
https://aiidalab-qe.readthedocs.io/
MIT License
12 stars 14 forks source link

Support bandstructure calculation for two-dimensional materials #211

Closed unkcpz closed 1 month ago

unkcpz commented 2 years ago

The main blocker of this feature is that the seekpath not yet support the kpath finding for all types of two-dimensional structures. Trace back to the discussion:

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.

Originally posted by @giovannipizzi in https://github.com/giovannipizzi/seekpath/issues/76#issuecomment-618851600

For the input structure which already has periodic_type=[True, True, False] the QeApp now raise the exception that it is not supported. We should in the future, create a input structure with proper orientation and use seekpath to get the correct k-path. While for the input structure that already has a vacuum layer set, the pymatgen detect it is 2D structure, besides raise a warning, the structure needs to be converted to the proper orientation so the seekpath can work properly.

unkcpz commented 2 years ago

Comments from @giovannipizzi in thread:

The main issue for 2D materials is not seekpath in my view, but the fact that if (e.g. in optimade) a direction is marked as non-periodic, special care should be taken not to just take the 3D cell, but only the 2D cell and create the 3D one adding enough vacuum (probably the vacuum should be a user-chosen parameter, with a sensible default) + possibly offering some additional custom parameters (e.g. whether to add some treatment for 2D systems, and enforce 1 k-point only along z).

giovannipizzi commented 9 months ago

Probably this can be (almost) closed. Before closing, though, a few notes/request.

  1. Now the text "If your system has periodicity xy. Please select one of the five 2D Bravais lattices corresponding to your system." and the dropdown always appears, also for 3D systems. I think it's confusing, can this be hidden and one says simply "The path is selected automatically using seekpath [link]" if the system is 3D?
  2. When 2D, as discussed, use the logic in AiiDA/tools/data/array/kpoints/legacy
  3. Both in 2D and 3D (for the future maybe, to move to a different issue?) can we have a way to specify optionally a list of k-points for the path? in the form

    kpt_start kpt_end num_points kpt_start kpt_end num_points ...

unkcpz commented 9 months ago

Thanks @giovannipizzi.

@AndresOrtegaGuerrero, let's find a time together to try to address them.

AndresOrtegaGuerrero commented 9 months ago

Thank you , for the code in aiidalab_qe I implemented the same as here https://pubs.acs.org/doi/10.1021/acs.jpclett.2c02972 I checked the function for 2d, https://github.com/aiidalab/aiidalab-qe/blob/98ebc43e66fbd0a49e47c89e2d24e20ebc084cc0/src/aiidalab_qe/plugins/bands/workchain.py#L59

I noticed that there is difference in the oblique and in the centered rectangular , where in the paper, they defined the points (of a few high symmetrical points) based on the value of gamma ( gamma < 90 ) , what do you think @giovannipizzi @unkcpz