Гамильтониан сильной связи для двумерной конечномерной решетки и нанопроволоки

Гамильтониан одномерной решетки с конечными Н атомов (если рассматривать по одному базису на атом) определяется следующим Н × Н матрица-

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

Здесь Е энергия на месте и т является интегралом перескока. Итак, как я могу построить гамильтониан для двумерной решетки конечного размера? Например, если мы возьмем срез нанопроволоки (скажем, нанопроволоки Si квадратной формы), мы получим такую ​​двумерную решетку, имеющую конечные высоту и ширину. Из этого гамильтониана одного среза я хочу вычислить гамильтониан для всей нанопроволоки. Как мне это сделать?

Вы спрашиваете построение с помощью какого-то кода или математической записи, как построить такую ​​матрицу? Под вычислением вы имеете в виду диагонализацию? Вы хотите диагонализировать его вручную или с помощью компьютерной программы?
Мне нужно знать, как построить матрицу Гамильтона для нанопроволоки, имеющей две конечные ширины и одну бесконечную длину. Я буду диагонализовать, используя код MATLAB. Формируя правильный гамильтониан (H) для объемного и ультратонкого тела (UTB), я уже получил дисперсию для них, но не смог построить H для нанопроволоки. Как я писал объемный и ето гамильтониан и что конкретно мне нужно смотрите по ссылке- drive.google.com/ file/d/0B1uxzqELZ2NNVTNrYXRsTENxU1k/…
Для декартовой сетки в 2D вы получите пятидиагональную матрицу (в отличие от трехдиагональной в 1D). Дополнительные диагонали будут соответствовать прыжкам в направлении y. Форма матрицы будет такой же, как матрица Лапласа декартовой сетки.

Ответы (1)

Единственное, что вам нужно сделать, это установить сопоставление. У вас есть базовая функция в

р "=" а Икс + б Д
с индексом я. Другими словами, ваша основа ф а б я . Поскольку Matlab понимает (хорошо) только векторы и матрицы, вам нужно сопоставить это с непрерывным индексом n. Например, квадрат со сторонами Н а , и Н б и Н я базовых функций на сайт.

н а б я "=" ( а + Н а б ) Н я + я .

Затем нужно установить правила для элементов матрицы. Вот пример кода (писал, что через 10 минут могут быть баги). Посмотрите, как работает sparse-command, чтобы понять, как строится гамильтониан. Как видите, ничего сложного нет. Только немного утомительно следить за индексацией. Тогда фактическая диагонализация - это всего одна строка. В примере не хватает k_z, так что вам придется вставить его самостоятельно. Это будет означать, что при построении элементов матрицы вам нужно будет учитывать дисперсию.

Na = 20; % Number of atoms in x directions
Nb = 20;
Ni = 2;

H_S = [ 1.0 0.1 ; 0.1 1.0 ]; % Hamiltonian for same site interaction
H_NN = [ 0.1 0.0 ; 0.0 0.1 ]; % Hamiltonian for nearest neighbour interaction

% Values to store the constructed sparse hamiltonian
nn1 = [];
nn2 = [];
Hnn = [];

% Loop over all lattice sites
for a1=1:Na, for b1=1:Nb
  % Loop over all neighbouring sites
  for da=-1:1
  a2=a1+da;
  if (a2 <1 || a2 > Na)
    continue;
  end
  for db=-1:1
    b2=b1+db;
    if (b2 <1 || b2 > Nb)
      continue;
    end
    % Loop over all basis function pairs
    for i1=1:Ni, for i2=1:Ni
      n1 = ((a1-1) + (b1-1) * Na) * Ni + i1; % Magic happends here
      n2 = ((a2-1) + (b2-1) * Na) * Ni + i2;
      NN = max(abs(da),abs(db));
      if (NN == 0)
        nn1 = [ nn1 n1 ]; % XXX Super slow
        nn2 = [ nn2 n2 ];
        Hnn = [ Hnn H_S(i1,i2) ];
      end
      if (NN == 1)
        nn1 = [ nn1 n1 ]; % XXX Super slow
        nn2 = [ nn2 n2 ];
        Hnn = [ Hnn H_NN(i1,i2) ];
      end
    end,end
  end
end, end
end
H = sparse(nn1, nn2, Hnn);
[U,E] = eig(H);
plot(diag(E));

Обновлять:

Это шаги (IHMO), как создать простой код TB.

1) получить положения атомов и типов атомов (например, взять кубическую элементарную ячейку из 8 атомов GaAs и повторить это 15x15x1 раз, а затем вырезать атомы, которые находятся слишком далеко от центра, чтобы создать сферическую проволоку). Совет: для резки используйте плоскости решетки и известные поверхности.

2) Каждый атом будет иметь Н б Базисные функции. Ваш гамильтониан будет состоять из блоков Н б × Н б . В нотации Matlab все матричные элементы Гамильтона между двумя сайтами (с индексами a1 и a2) можно записать как:

H((a1*N):(a1*N+N-1), (a2*N):(a2*N+N-1) = Hloc;

3) Перебрать все атомы в вашей ячейке (это означает все (скажем) 200 атомов, а не элементарную ячейку GaAs). Для каждого атома выполните цикл по его окрестностям (не забудьте также заглянуть в соседние ячейки).

4) Вычислить все матричные элементы гамильтониана этих пар атомов и добавить их в соответствующее место в гамильтониане. (не забудьте добавить фазовый коэффициент, если пары не находятся в одной элементарной ячейке).

Оцените разницу между двумя положениями атомов и, что еще лучше, разделите ее на а/4, где а — постоянная вашей решетки.

Δ р "=" ( р а 1 р а 2 ) / ( а / 4 )
.

У вас может получиться такой вектор (-1,-1,-1), где вы можете легко сделать вывод, что это взаимодействие с ближайшим соседом, и добавить соответствующие матричные элементы.

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

Спасибо за код, хотя я его не хотел. Я имею дело с GaAs, в котором один атом окружен четырьмя соседями. Если взять катион в точке (0 0 0), то четыре вектора x0=[1 1 1]/4; х1=[1-1-1]/4; х2=[-1 1 -1]/4; х3=[-1 -1 1]/4; связывает четыре аниона с катионом. Теперь, объединив эти 5 атомов, я составляю одну элементарную ячейку, гамильтониан которой равен H_u=[Haa Hac; Hca Hcc]. Haa — это внутренняя энергия аниона, а Hac — это перекрытие между анионом и катионом (без «k» здесь). Затем, если у меня есть 5 элементарных ячеек по x и 5 по y, я хочу написать гамильтониан для одной плиты, скажем, «H_s», в терминах H_u.
Это эквивалентно пятикратному повторению элементарной ячейки вдоль направлений «x» и «y». После этого я запишу полный гамильтониан нанопроволоки (с членами «k_z») как H=H_s_i + H_s_(i-1)exp(-ik.z) + H_s_(i+1)exp(ik.z). Так как же будут выглядеть эти матрицы H_s_i, H_s_(i+1), H_s_(i-1)? (Я хочу написать их вручную, прежде чем использовать какие-либо коды. Это делает понимание более ясным).
Извините, я все еще не понимаю, в какой части вы застряли здесь. Есть в основном три шага, чтобы сделать простой код жесткой привязки. 1) Определите элементарную ячейку (в вашем случае периодическую в одном направлении) 2) Определите все положения атомов и их тип (Ga, As) в этой элементарной ячейке 3) Рассчитайте матричные элементы гамильтониана между всеми базисными функциями на всех сайтах (и будьте внимательны). Вы уже разобрались с 1 и 2?
пусть у нас есть одна элементарная ячейка атома и один базис в одномерной решетке, где положение каждой элементарной ячейки задается R=ax. Если внутренняя энергия равна «e», а взаимодействие NN равно «t», то гамильтониан для «4 элементарных ячеек» будет H_1D=[et 0 0; тет 0; 0 тет; 0 0 тэ]. Теперь пусть та же элементарная ячейка образует двумерный кристалл, где положение каждой элементарной ячейки задается как R=ax+by. Здесь мы можем думать, что цепочка 1D повторяется вдоль направления y, поэтому H_2D можно записать в терминах H_1D как H_2D=[H_1D [T] [0] [0]; [Т] H_1D [Т] [0]; [0] [Т] H_1D [Т]; [0] [0] [T] H_1D], где [T] будет diag(t, t, t, t).
Теперь пусть этот конечный двумерный кристалл повторяется вдоль 'z'. Итак, мы можем записать гамильтониан нанопроволоки, взяв 3 таких двумерных гамильтониана, расположенных в точках z=0, z=+1, z=-1, как H_nw=H_2D_0 + T_2D ext(ikz) + T_2D exp(ik(-z)) . Однако думать таким образом довольно просто для идеальной квадратной решетки. В случае GaAs я взял один Ga и один As, образующие элементарную ячейку. (База - это не моя проблема, пусть сначала одна база). В этом случае кристалл будет FCC. H для внутренней энергии (для элементарной ячейки с двумя атомами) составляет [Haa 0; 0 ГЦК].
Одно взаимодействие НС будет t=[0 Hac; 0 0] для 3 из 6 NN будут расположены в точках (x+y)a/2, (y+z)a/2 и (z+x)a/2. Расположение остальных 3 NN задается их отрицательным вектором, и их взаимодействие будет [0 0; Hca 0]. Поскольку положение каждой элементарной ячейки NN задается вектором, который имеет ненулевую компоненту по всем осям «x», «y», «z», мне не удалось сформулировать гамильтониан для 1D-цепочки по оси x, тогда гамильтониан для 2D решетку (в плоскости xy), используя эти одномерные цепочки, и, наконец, сформировать гамильтониан нанопроволоки из этой двумерной решетки.
Привет! Я думаю, вам следует отказаться от размышлений об одномерных цепях, а начать думать о проблеме в целом. Я обновлю ответ для более подробного описания.
Спасибо, сэр. Я дам вам знать, если у меня возникнут новые трудности.