pythtb.TBModel.make_finite#

TBModel.make_finite(periodic_dirs, num_cells, glue_edges=None)[source]#

Returns a finite model.

This function constructs a finite tight-binding model by removing periodicity along specified directions. The resulting model has open boundary conditions along those directions, with the option to glue edges together.

Added in version 2.0.0.

Parameters:
periodic_dirslist[int]

List of indices of periodic directions along which you wish to make the model finite.

num_cellslist[int]

Number of unit cells of the sample along each periodic direction.

glue_edgeslist[bool], optional

If True, allow hoppings from one edge to the other of a cut model along the corresponding direction. If None (default), no edge gluing is performed along any direction and we have open boundary conditions.

Returns:
finitepythtb.TBModel

A model whose periodic hoppings have been removed (OBC model).

See also

cut_piece()

Cut a lower-dimensional piece out of a higher-dimensional model.

Haldane Chern-insulator model

For an example

Edge states of the Haldane ribbon

For an example

Fu-Kane–Mele 3D Topological Insulator

For an example

Bianco-Resta Local Chern marker

For an example

Notes

  • This function applies cut_piece() iteratively along each specified direction. The order of directions in dirs determines the sequence of cuts.

  • Orbitals in the returned model are numbered so that the i-th orbital of the n-th unit cell along the first direction in dirs, the m-th unit cell along the second direction in dirs, etc., has index i + norb * (n + m * num_cells[0] + ...) (here norb is the number of orbitals in the original model).

  • The real-space lattice vectors of the returned model are the same as those of the original model; only the dimensionality of reciprocal space is reduced.

Examples

Construct a two-dimensional finite model by removing periodicity along both lattice vectors of a two-dimensional model >>> lat = Lattice([[1.0, 0.0], [0.0, 1.0]], [[0.0, 0.0]], periodic_dirs=[0,1]) >>> tb = TBModel(lat) >>> fin_tb = tb.make_finite(periodic_dirs=[0, 1], num_cells=[10, 5]) >>> fin_tb.dim_k 0 >>> fin_tb.norb 50