Draft: ENH: Surface termination
Checklist
-
I have read the contribution guidelines. -
Unit tests have been added for any new or changed code, and the test suite passes. Note: Your request will likely not be merged without the appropriate tests. -
"closes #XXXX" is in the body of the MR description to link the related issue, if applicable.
New version of the 'surface_with_termination' function that was somewhat hidden in the files:
- Everything is using Numpy, making the function faster
- Added one optional parameter 'bottom termination' and changed the current optional parameter 'termination' to 'top_termination' the bottom termination is obtained (if possible) by cutting the slab layer by layer, allowing users to obtain dipole-free surfaces.
- The new 'minimum_thickness' parameter controls what is the minimum slab size when requesting 'bottom_termination'.
- The previous similarity check can now be completed by setting the 'symmetry_check' to True which uses the SymmetryEquivalenceCheck class in order to obtain symmetrically inequivalent surfaces only. Slowing down the function considerably.
It would be nice to have the approval of the previous maintainer, but it seems that their gitlab account does not exist anymore?
Also, it would also be nice if someone with a higher knowledge of symmetries could answer this question: For some reasons I believed that the symmetry checker would always return True because all we do is translate the same unit-cell and add vacuum, which imo should always lead to symmetrically equivalent structures?