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:
- finite
pythtb.TBModel A model whose periodic hoppings have been removed (OBC model).
- finite
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