Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
documentation:language_reference:functions:blockbanddiagonalize [2024/09/25 16:33] Sina Shokridocumentation:language_reference:functions:blockbanddiagonalize [2025/02/20 13:23] (current) – Added input and output of the function Sarah Görlitz
Line 1: Line 1:
 ====== BlockBandDiagonalize ====== ====== 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: 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} $$ $$ 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:+Now, assuming that $M$ corresponds to a tight-binding Hamiltonian defined on some basis, we can linearly combine the second and third basis orbitals, such that we get a single orbital which mix with the first orbital via the 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} $$ $$ 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: 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} $$ $$ M' = U M U^{T} = \begin{pmatrix} 0 & \frac{1}{\sqrt{2}} & 0 \\   \frac{1}{\sqrt{2}} & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} $$
 +In the new representation, the first basis orbital only mixes with the second 
 +The basis orbital and not with the third one.
 The function //BlockBandDiagonalize()// can accept 3 types of objects as an arguments: [[documentation:language_reference:objects:tightbinding:start|Tight-binding object]], [[documentation:language_reference:objects:operator:start|Operator]], or [[documentation:language_reference:objects:matrix:start|Matrix]].  The function //BlockBandDiagonalize()// can accept 3 types of objects as an arguments: [[documentation:language_reference:objects:tightbinding:start|Tight-binding object]], [[documentation:language_reference:objects:operator:start|Operator]], or [[documentation:language_reference:objects:matrix:start|Matrix]]. 
 ### ###
  
-===== Input =====+====== Input =====
 +Case 1: 
 +  * //matrix//: hermitian matrix 
 +  * //blockSize//: size of the block (as number) or list of vectors representing the starting states
  
-  bla Integer +Case 2: 
-  * bla2 Real+  //operator//hermitian operator 
 +  * //wave function //single wave function of list of wave functions
  
-===== Output =====+Case 3: 
 +  * //tightbindingObject//: tight binding object 
 +  * //startingBlock //: list of atoms with positions, shells and orbitals used as starting block
  
-  * bla : real 
  
-===== Example =====+//(Optional) Third argument (in all cases)//
  
-### +   *NTri : (//integer//) maximum number of blocks included (//default: $\infty$//) 
-description text + 
-###+   *NOrtho : (//integer//) maximum number of reorthogonalizations (//default: $\infty$//)
  
-==== Input ==== +  *ReOrthogonalize: (//boolean//) use additional Gran-Schmidt orthogonalization after the Löwdin orthogonalization (//default: true//)
-<code Quanty Example.Quanty> +
--- some example code +
-</code>+
  
-==== Result ==== +====== Output ====== 
-<file Quanty_Output> +   *//matrix//: block-band diagonal matrix
-text produced as output +
-</file>+
  
 ===== Table of contents ===== ===== Table of contents =====
 {{indexmenu>.#1}} {{indexmenu>.#1}}
  
Print/export