Obtener una densidad de unión estrecha de los estados con mayor precisión

Calculé numéricamente la densidad de estados (DoS) para la dispersión de unión estrecha 3-D ϵ ( k X , k y , k z ) = 2 t ( porque k X + porque k y + porque k z ) y obtuve la siguiente gráfica [ t = 1 ha sido elegida].

ingrese la descripción de la imagen aquí

Lo que hice es resumir k -puntos de la función de Green de red,

GRAMO ( k X , k y , k z , ω ) = 1 ω ϵ ( k X , k y , k z ) + i 0 +
y encontrando el DoS desde su parte imaginaria: D ( ω ) = 1 π Soy k X k y k y GRAMO ( k X , k y , k z , ω ) .

Uno puede notar fácilmente que hay ruidos a bajas energías. ¿Hay alguna forma alternativa de obtener un mejor resultado? Como el que se muestra en una figura de un papel [Ref: arXiv:1207.4014] :

ingrese la descripción de la imagen aquí

¿Puede haber alguna expresión estándar matemática que se pueda calcular a través de Mathematica o Matlab?

Pregunta de bonificación relacionada: ¿Se puede aplicar el mismo método a una red triangular asimétrica que tiene dispersión? ϵ ( k X , k y ) = 2 t ( porque k X + porque k y ) 2 t porque ( k X + k y ) ?

En general, tener una mayor 0 + en la función de Green reduciría el ruido.
Simplemente tome más puntos de impulso en su suma, el resultado puede mejorarse.

Respuestas (3)

Lo siento por la respuesta tardía, pero espero que esto pueda ser útil para alguien más.

Puede reducir el ruido utilizando una integral elíptica.

D ( ε ) = 1 4 π 3 t π π d ϕ k ( 1 ( ε + 2 t porque ϕ 4 t ) 2 )

Donde K es la integral elíptica completa de primer tipo: http://mathworld.wolfram.com/CompleteEllipticIntegraloftheFirstKind.html .

No es baladí llegar hasta aquí. E incluso a partir de esta expresión, la integral debe hacerse numéricamente con cuidado (tiene singularidades para muchos valores de ε ) pero debería dar mejores resultados. Correr durante seis segundos en Mathematica me da (con t = 1 2 3 ):ingrese la descripción de la imagen aquí

TL;DR

Con Matlabo Mathematikano puedo ayudar, pero Pythonhay una implementación disponible: sc_dos ingrese la descripción de la imagen aquí Aquí D es la mitad del ancho de banda D = 6 t .

import numpy as np
import gftool as gt

eps = np.linspace(-1.2, 1.2, num=6001)
dos = gt.sc_dos(eps, half_bandwidth=1)

La evaluación del DOS me toma ~100 ms.


Ya diste las expresiones correctas. Tenemos la función de Green

GRAMO ( z ) = 1 norte k 1 z ϵ k
y la densidad (normalizada) de estados (DOS)
D ( ϵ ) = 1 norte k d ( ϵ ϵ k ) = 1 π GRAMO ( ϵ + i 0 + ) ,
dónde ϵ es una variable de energía real. La segunda igualdad es Sokhotski–Plemelj .

Una suma ingenua sobre los puntos es extremadamente exigente, ya que una gran cantidad de k puntos es necesario en 3 Dimensiones.

Para suavizar la función, podemos evaluar la función de Green en un contorno paralelo al eje real desplazado por un finito η > 0 en semiplano complejo superior:

D ( ϵ ) 1 π GRAMO ( ϵ + i η ) .

Cuanto más grande elegimos η más suave se vuelve la función, pero por otro lado perdemos características.

Como solo nos interesa el límite termodinámico norte , un enfoque más inteligente que el simple muestreo k , es reemplazar la suma por la integral. Para integrales, tenemos algoritmos más o menos eficientes.

Así que calculemos

GRAMO ( z ) = d 3 k 2 π 3 1 z ϵ k
en cambio. El ϵ k , es simétrico para todo k X i : ϵ ( k X i ) = ϵ ( k X i ) , por lo que es suficiente para integrar más de una octava parte de la zona de Brillouin.

Y finalmente podemos usar resultados analíticos para las integrales. Notamos que podemos expresar la función de Green 3D en términos de resultados conocidos de la función de Green 1D y 2D como tenemos

ϵ k = ϵ k X , k y , k z = ϵ k X , k y 2 D 2 t porque ( k z ) = ϵ k X 1 D 2 t [ porque ( k y ) + porque ( k z ) ]
y por lo tanto
GRAMO ( z ) = d k z 2 π GRAMO 2 D ( z 2 t porque ( k z ) ) = d k y 2 π d k z 2 π GRAMO 1 D ( z 2 t [ porque ( k y ) + porque ( k z ) ] ) .

La función de Green unidimensional GRAMO 1 D ( z ) se puede evaluar fácilmente, la función de Green bidimensional GRAMO 2 D ( z ) se puede expresar en términos de la integral elíptica completa de primer tipo (que se puede encontrar en los libros de texto estándar). Usando GRAMO 2 D ( z ) es básicamente el resultado dado por bRost03 .

Un tipo muy inteligente llamado Joyce incluso encontró una expresión para GRAMO 3 D ( z ) en 1973. Las ecuaciones son un poco largas y complicadas, así que evitaré copiarlas aquí. Pero los implementamos en un Pythonmódulo gftool>=0.8.0, vea sc_dos . También encontrará las referencias relevantes allí.

Tuve el mismo problema. usé la fórmula ρ ( ϵ ) = k d ( ϵ ϵ ( k ) ) para calcular numéricamente la densidad de estados. hice un resumen 100 k valores para cada componente, y usó una distribución gaussiana con σ = 0.1 para que la función delta obtenga el siguiente diagrama. Usando más grande σ termina suavizando la singularidad en la derivada alrededor de ϵ = ± 2 .

El código se escribió en C++ y se ejecutó durante aproximadamente 60 segundos. y el eje es ρ ( ϵ ) , X el eje es ϵ y t = 1 .


ingrese la descripción de la imagen aquí

PD: Hice la suma de la mitad de la zona de Brillouin, que era lo que necesitaba para mi aplicación.