
    i                        d dl mZ d dlmZ d dlmZ d dlZddlm	Z	  ed           G d	 d
                      Z
ddZ	 	 	 	 dddZdS )    )annotations)	dataclass)SequenceN   )TightBindingModelT)frozenc                  8    e Zd ZU ded<   ded<   ded<   ded<   d	S )
	ModelSpecr   modelzlist[tuple[str, np.ndarray]]k_pathzlist[tuple[float, float]]	bz_boundsztuple[float, float]energy_windowN)__name__
__module____qualname____annotations__     2D:\ml\projects\myproj\tight binding\tb\examples.pyr
   r
      sB         ((((((((&&&&&&r   r
   returntuple[str, ...]c                     dS )N)chainsquaresshr   r   r   r   list_modelsr      s    %%r         ?皙?333333?        namestrtfloatt1t2deltac                   |                                                                  }|dk    rt          j        dgg          }t          j        dg          t          j        | ggt          j                  fg}t          t          dd||          dt          j        dg          fdt          j        t          j        g          fgt          j         t          j        fgd	t          |          z  d
t          |          z  f          S |dk    rwt          j        dgg          }t          j        ddg          t          j        | ggt          j                  ft          j        ddg          t          j        | ggt          j                  fg}t          t          dd||          dt          j        ddg          fdt          j        t          j        dg          fdt          j        t          j        t          j        g          fdt          j        ddg          fgt          j         t          j        ft          j         t          j        fgdt          |          z  dt          |          z  f          S |dk    rOt          j        |dgd| ggt          j                  }t          j        dg          t          j        d|gddggt          j                  ft          j        dg          t          j        d|gddggt          j                  fg}t          t          |          t          |          t          |          d          }t          t          dd||          dt          j        dg          fdt          j        t          j        g          fgt          j         t          j        fgd	|z  d
|z  f          S t          d|            )Nr   r    r   )dtypez1D chainr   GXg      g      @)r   r   r   r   r   z2D square lattice   Mg      g      @r   z	SSH chainzUnknown model: )striplowernparray
complex128r
   r   piabsmax
ValueError)	r!   r#   r%   r&   r'   keyonsitehoppingsenergy_scales	            r   build_model_specr;      s    **,,



C
g~~C5'""Xse__bh!vR]CCCD
 #J68DDbhuoo&bhw''( '#a&&=#A,7
 
 
 	
 hC5'""XsCj!!28qbTF"-#H#H#HIXsCj!!28qbTF"-#H#H#HI
 #$7FHMMbhSz**+bhs|,,-bhru~../bhSz**+	 "%8#a&&=#A,7

 

 

 
	
 e||uf -
 
 
 #b	c
 -  	 #b	c
 -  	
, 3r77CGGSZZ==#KFHEEbhuoo&bhw''( ',.l0BC
 
 
 	
 -t--
.
..r   )r   r   )r   r   r   r    )r!   r"   r#   r$   r%   r$   r&   r$   r'   r$   r   r
   )
__future__r   dataclassesr   typingr   numpyr0   r   r   r
   r   r;   r   r   r   <module>r@      s    " " " " " " ! ! ! ! ! !           $ $ $ $ $ $ $' ' ' ' ' ' ' '& & & & R/ R/ R/ R/ R/ R/ R/r   