I’m looking to use structures derived from Materials Cloud 2D database which seems to be one of the better-maintained 2D material structure databases (correct me if I’m wrong) to programmatically create “stacks” of 2D materials with variable spacing, twist angles, etc.
AI has been helpful up to a point where I can easily take .cif’s from MC2D, import them into python using pymatgen, and then use make_supercell()
to expand the 2D primitives into an arbitrary size.
What I’m asking is what is the optimum way to “stack” these structures together with arbitrary (x,y,theta) shifts to create a 3D heterostructure (as a structure
object)? For instance, graphene-hBN-graphene-hBN - etc.