Более точное получение плотной привязки состояний

Я численно рассчитал плотность состояний (DoS) для трехмерной дисперсии сильной связи. ϵ ( к Икс , к у , к г ) "=" 2 т ( потому что к Икс + потому что к у + потому что к г ) и получил следующий график [ т "=" 1 был выбран].

введите описание изображения здесь

То, что я сделал, это суммирование к -точки решеточной функции Грина,

г ( к Икс , к у , к г , ю ) "=" 1 ю ϵ ( к Икс , к у , к г ) + я 0 +
и нахождение DoS по его мнимой части: Д ( ю ) "=" 1 π Я к Икс к у к у г ( к Икс , к у , к г , ю ) .

Легко заметить, что при низких энергиях появляются шумы. Есть ли альтернативный способ получить лучший результат? Как показано на рисунке из статьи [Ссылка: arXiv:1207.4014]:

введите описание изображения здесь

Может ли быть какое-то математическое стандартное выражение, которое можно рассчитать с помощью Mathematica или Matlab?

Связанный бонусный вопрос: можно ли применить тот же метод к асимметричной треугольной решетке, имеющей дисперсию ϵ ( к Икс , к у ) "=" 2 т ( потому что к Икс + потому что к у ) 2 т потому что ( к Икс + к у ) ?

В общем, имея большую 0 + в функции Грина уменьшит шум.
Просто берите больше точек импульса при суммировании, результат можно улучшить.

Ответы (3)

Извините за поздний ответ, но, надеюсь, это может быть полезно для кого-то еще!

Вы можете уменьшить шум, используя эллиптический интеграл.

Д ( ε ) "=" 1 4 π 3 т π π г ф К ( 1 ( ε + 2 т потому что ф 4 т ) 2 )

Где K — полный эллиптический интеграл первого рода: http://mathworld.wolfram.com/CompleteEllipticIntegraloftheFirstKind.html .

Добраться сюда не так уж и просто. И даже из этого выражения интеграл нужно делать численно с осторожностью (он имеет особенности при многих значениях ε ), но это должно дать лучшие результаты. Запуск в течение шести секунд в Mathematica дает мне (с т "=" 1 2 3 ):введите описание изображения здесь

TL;DR

С Matlabили Mathematikaпомочь не могу, но Pythonесть реализация: sc_dos введите описание изображения здесь Здесь Д это половина пропускной способности Д "=" 6 т .

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)

У меня оценка DOS занимает ~100 мс.


Вы уже привели правильные выражения. У нас есть функция Грина

г ( г ) "=" 1 Н к 1 г ϵ к
и (нормализованная) плотность состояний (DOS)
Д ( ϵ ) "=" 1 Н к дельта ( ϵ ϵ к ) "=" 1 π г ( ϵ + я 0 + ) ,
где ϵ - реальная энергетическая переменная. Второе равенство есть Сохоцкого–Племеля .

Наивная сумма по очкам чрезвычайно требовательна, так как огромное количество к точки необходимы в 3 измерениях.

Чтобы сгладить функцию, мы можем вычислить функцию Грина на контуре, параллельном действительной оси, сдвинутой на конечную величину. η > 0 в верхнюю комплексную полуплоскость:

Д ( ϵ ) 1 π г ( ϵ + я η ) .

Чем больше мы выбираем η тем плавнее становится функция, но, с другой стороны, мы теряем функции.

Поскольку нас интересует только термодинамический предел Н , более разумный подход, чем просто выборка к , состоит в замене суммы интегралом. Для интегралов у нас есть более или менее эффективные алгоритмы.

Итак, давайте посчитаем

г ( г ) "=" г 3 к 2 π 3 1 г ϵ к
вместо. ϵ к , симметрична для всех к Икс я : ϵ ( к Икс я ) "=" ϵ ( к Икс я ) , таким образом, достаточно проинтегрировать более одной восьмой зоны Бриллюэна.

И, наконец, мы можем использовать аналитические результаты для интегралов. Отметим, что мы можем выразить трехмерную функцию Грина в терминах известных результатов одномерной и двумерной функции Грина, поскольку мы имеем

ϵ к "=" ϵ к Икс , к у , к г "=" ϵ к Икс , к у 2 Д 2 т потому что ( к г ) "=" ϵ к Икс 1 Д 2 т [ потому что ( к у ) + потому что ( к г ) ]
и поэтому
г ( г ) "=" г к г 2 π г 2 Д ( г 2 т потому что ( к г ) ) "=" г к у 2 π г к г 2 π г 1 Д ( г 2 т [ потому что ( к у ) + потому что ( к г ) ] ) .

Одномерная функция Грина г 1 Д ( г ) может быть легко вычислена, двумерная функция Грина г 2 Д ( г ) можно выразить через полный эллиптический интеграл первого рода (который можно найти в стандартных учебниках). С использованием г 2 Д ( г ) в основном результат, данный bRost03 .

Очень умный парень по имени Джойс даже нашел выражение для г 3 Д ( г ) в 1973 году. Уравнения немного длинны и сложны, поэтому я не буду их здесь копировать. Но мы реализовали их в Pythonмодуле gftool>=0.8.0, см. sc_dos . Там же вы найдете соответствующие ссылки.

У меня была такая же беда. я использовал формулу р ( ϵ ) "=" к дельта ( ϵ ϵ ( к ) ) для численного расчета плотности состояний. я подвел итог 100 к значения для каждого компонента и использовали распределение Гаусса с о "=" 0,1 для дельта-функции, чтобы получить следующую диаграмму. Использование большего о заканчивается сглаживанием сингулярности в производной около ϵ "=" ± 2 .

Код был написан на C++ и работал около 60 секунды. у ось р ( ϵ ) , Икс ось ϵ и т "=" 1 .


введите описание изображения здесь

PS: Я провел суммирование по половине зоны Бриллюэна, что мне и было нужно для моего приложения.