Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inquiry Regarding hetbuilder's Capabilities for Constructing Heterostructures. #6

Open
hongyi-zhao opened this issue Jan 29, 2024 · 10 comments

Comments

@hongyi-zhao
Copy link

I am particularly interested in understanding whether the hetbuilder tool is exclusively intended for designing van der Waals heterostructures, or if it also can be used to construct non-van der Waals heterostructures. Any hints on this question will be helpful.

Regards,
Zhao

@romankempt
Copy link
Owner

Hi Zhao, the answer to that is "depens on the physics":

If you combine two strongly interacting layers (e.g., something with a strong interlayer dipole, or situations where the layers fuse together, as for some Pd_xSe_y polytpes), then the concept "Coincidence Unit Cell" does generally not work. In these situations, the new unit cell that forms from the two layers is completely different to the previous ones. In practice, this is not a big problem, because one usually knows something about the new unit cell from XRD measurements and can start to build models from there.

If you combine two layers with medium interaction (e.g., some perovskites, strongly interacting vdW heterostructures, magnetic heterostructures), the Coincidence Lattice Method can work to find starting models. However, one should carefully check if the new, combined unit cell changes because of the interaction. Here, one has to do a lot of modelling work to figure out which Coincidence Unit Cell, which layer orientation, and which layer arrangement is actually the most stable.

If you combine two weakly interacting layers, the issue is generally a different one. In reality, two weakly interacting layers do not care much about the lattice parameters of the other layer. But to build a model, one has to squeeze both layers into the same unit cell. This is the case that hetbuilder is mostly designed for. The challenge is to find unit cells with the smallest strain possible. One should still check if the lattice parameters of the individual layers might change in the heterostructure, e.g., due to electrostatic screening.

Hope that helps!

@hongyi-zhao hongyi-zhao changed the title Inquiry Regarding hetbuilder Capabilities for Constructing Heterostructures. Inquiry Regarding hetbuilder's Capabilities for Constructing Heterostructures. Jan 30, 2024
@hongyi-zhao
Copy link
Author

hongyi-zhao commented Jan 30, 2024

Thank you for your comments and detailed explanations. Here are some of my further thoughts:

  1. Based on my tries, hetbuilder only works with two 2D materials. But for a given 2D material, it can always be seen cut from a certain 3D material. But, once you cut the 2D material out, the plane Miller index is fixed. As a result, by using hetbuilder, we can not check the 2D materials constructed from the original 3D material by splitting the different crystal faces once and for all. What do you think about this problem and do you have any plans to implement this feature to search the different crystal planes from two given bulk initial crystals?
  2. For any given two crystal faces of 2D material, we can not intuitively know which one they belong to strongly interacting, medium interaction, or weakly interacting layers: For this purpose, a DFT or some kind of computation is needed, am I right?
  3. When we splice these two 2D materials together, what initial interlayer spacing should we choose to construct heterojunction?
  4. There are many types of heterostructures, for instance, just considering the number of layers, we can pose the following question: How many layers should we select from the initial two types of 2D materials that constitute them to construct the final heterostructure? How do you consider and deal with such questions?

@romankempt
Copy link
Owner

  1. You can construct interfaces of any surface by just rotating them into the xy plane such that hetbuilder accepts them. Specific support for getting bulk surfaces is not there, but I think you can just have a look at the ASE for that (ase.geometry or ase.build)

  2. Yes, though figuring this out is usually why people look at heterostructures in the first place ^^

  3. Also depends on your use case. The default is 4 Angström I think, which is close enough to allow for the layers to interact with each other (if one does a relaxation, for example), but far enough to allow the layers to move left and right to find their favored position. In practice, I recommend to try shifting one of the layers a little bit to the left or right during the optimization to check for "optimal alignment", because this is typically the bottle neck during a relaxation. One can also try to pre-optimize using a force field or DFTB or whatever.

  4. Depends on what you want to study and what you can achieve computationally. Most papers so far have focussed on bilayers because it just becomes computationally very expensive to go beyond that.

@hongyi-zhao
Copy link
Author

hongyi-zhao commented Jan 31, 2024

  1. [...] In practice, I recommend to try shifting one of the layers a little bit to the left or right during the optimization to check for "optimal alignment", because this is typically the bottle neck during a relaxation.

It seems that we should shift a little bit of u + v step-by-step in the subsequent geometry optimization, where u and v are the 2D lattice vectors. However, it seems that the computational cost can become very expensive this way.

Therefore, I propose the following idea: first, to carry out the best match filtering through rotation + shift using the coincidence lattice theory, and then, to further geometrically optimize the obtained results. Do you think this strategy is feasible?

Overall, the issues discussed above boil down to the following two key challenges to be addressed:

  1. Finding a matching lattice between the 2D material and substrate surface.
  2. Identifying "ideal" or likely locations to place the 2D material on the substrate surface to generate stable low-energy heterostructures.

On the other hand, the Hetero2d package, as discussed in its corresponding paper, employs various methods to identify stable heterostructures, thereby addressing the challenges previously mentioned. Another algorithm is the Zur algorithm which is used by tribchem, as described here.

By simply comparing the descriptions of algorithm implementations in the papers on the coincidence lattice method and the Zur algorithm, it seems that the latter is more powerful and flexible. Below is a brief comparison of their respective abstracts:
image
image

See here for the related discussion.

@romankempt
Copy link
Owner

Keep me up to date :)

@hongyi-zhao
Copy link
Author

Other further questions:

  1. By only shifting one of the layers, can this ensure that the supercell size we have obtained remains unchanged?
  2. What do you think about my above-suggested idea, "rotation + shift using the coincidence lattice theory" as the first step? Is it feasible?

@romankempt
Copy link
Owner

  1. The atomic motif is independent of the choice of the unit cell.

  2. There is no shift in the coincidence lattice method since it deals only with the unit cell, not the atomic motif. The atomic arrangement is something one has to figure out through relaxations.

@hongyi-zhao
Copy link
Author

hongyi-zhao commented Feb 1, 2024

3. [...] In practice, I recommend to try shifting one of the layers a little bit to the left or right during the optimization to check for "optimal alignment", because this is typically the bottle neck during a relaxation.

Let's return to the question above:

  1. Why do you mention only left or right, and not other possible directions?
  2. To what extent or size range should we try shifting a little bit?
  3. When do the shifting one of the layers a little bit, for each result obtained, should xtalcomp or pymatgen StructureMatcher be used first to analyze whether it is a duplicate structure that has been obtained, to avoid repeated meaningless studies?

@romankempt
Copy link
Owner

romankempt commented Feb 1, 2024

With left or right I just mean in the xy-plane. The extent depends on your structures. For a simple surface, e.g., it makes sense to check something like +a/2, +b/2, +(a+b)/2 (if those are symmetrically distinct). The rest one has to figure out during the relaxation.

Also, take into account that the twist angle generally lowers the symmetry.

@hongyi-zhao
Copy link
Author

hongyi-zhao commented Feb 2, 2024

With left or right I just mean in the xy-plane. The extent depends on your structures. For a simple surface, e.g., it makes sense to check something like +a/2, +b/2, +(a+b)/2 (if those are symmetrically distinct). The rest one has to figure out during the relaxation.

The Hetero2d package uses Wyckoff sites to deal with this challenge, as described in its paper.

Also, take into account that the twist angle generally lowers the symmetry.

However, for a particular study, the possible focus of our attention may not always be that higher symmetry is better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants