Table of Contents
This is an old revision of the document!
BlockBandDiagonalize
The function BlockBandDiagonalize() can be used to reduce the number of basis (spin-)orbitals by making linear combinations of (spin-)orbitals, according to the tight-binding structure (hopping matrix elements) within the (spin-)orbitals. As a simple example to make the idea clear, consider the following 3-by-3 matrix: $$ M = \begin{pmatrix} 0 & 1 & 1 \\ 1 & 1 & 0 \\ 1 & 0 & 1 \end{pmatrix} $$ Now, we can linearly combine the second and third basis vectors, such that we get a single vector which mix with the first vector via matrix M. Consider the following unitary rotation matrix: $$ U = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ 0 & \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix} $$ Now, transforming the matrix $ M $ using the unitary matrix $ U $ results in: $$ M' = U M U^{T} = \begin{pmatrix} 0 & \frac{1}{\sqrt{2}} & 0 \\ \frac{1}{\sqrt{2}} & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} $$ The function BlockBandDiagonalize() can accept 3 types of objects as an arguments: Tight-binding object, Operator, or Matrix.
Input
-
bla : Integer
-
bla2 : Real
Output
-
bla : real
Example
description text
Input
- Example.Quanty
-- some example code
Result
text produced as output