pythtb.TBModel.make_supercell#

TBModel.make_supercell(sc_red_lat, return_sc_vectors=False, to_home=True)[source]#

Make model on a super-cell.

Constructs a pythtb.TBModel representing a super-cell of the current object. This function can be used together with cut_piece() in order to create slabs with arbitrary surfaces.

By default all orbitals will be shifted to the home cell after unit cell has been created. That way all orbitals will have reduced coordinates between 0 and 1. If you wish to avoid this behavior, you need to set, to_home argument to False.

Removed in version 2.0.0: Parameter to_home_supress_warning has been removed.

Parameters:
sc_red_latarray-like

Super-cell lattice vectors in terms of reduced coordinates of the original tight-binding model. Shape must be (dim_r, dim_r). First index in the array specifies super-cell vector, while second index specifies coordinate of that super-cell vector.

If dim_k < dim_r then still need to specify full array with size (dim_r, dim_r) for consistency, but non-periodic directions must have 0 on off-diagonal elements and 1 on diagonal.

return_sc_vectorsbool, optional

Default value is False. If True returns also lattice vectors inside the super-cell. Internally, super-cell tight-binding model will have orbitals repeated in the same order in which these super-cell vectors are given, but if argument to_home is set True (which it is by default) then additionally, orbitals will be shifted to the home cell.

to_homebool, optional

Default value is True. If True will shift all orbitals to the home cell along periodic directions.

Returns:
sc_tbpythtb.TBModel

Tight-binding model in a super-cell.

sc_vectorsnumpy.ndarray, optional

Super-cell vectors, returned only if return_sc_vectors is set to True (default value is False).

Notes

The super-cell is constructed by repeating the original unit cell according to the specified super-cell lattice vectors. The resulting model will have a larger Brillouin zone and may exhibit different electronic properties compared to the original model.

Examples

Create super-cell out of 2d tight-binding model tb

>>> sc_tb = tb.make_supercell([[2, 1], [-1, 2]])