Eng bindender Hamiltonoperator für 2D-Gitter mit endlicher Dimension und Nanodraht

Der Hamiltonoperator eines 1D-Gitters mit Endlichkeit N Atome (wenn wir eine Basis pro Atom betrachten) ist wie folgt gegeben N × N Matrix-

Geben Sie hier die Bildbeschreibung ein

Hier E ist die Energie vor Ort und T ist das Sprungintegral. Wie kann ich also den Hamilton-Operator für ein 2D-Gitter mit endlicher Größe konstruieren? Wenn wir zum Beispiel eine Scheibe von einem Nanodraht nehmen (z. B. quadratischer Si-Nanodraht), erhalten wir ein solches 2D-Gitter mit endlicher Höhe und Breite. Aus diesem Hamilton-Operator einer Scheibe möchte ich den Hamilton-Operator für den gesamten Nanodraht berechnen. Wie kann ich das machen?

Fragen Sie die Konstruktion mit einem Code oder einer mathematischen Notation, wie eine solche Matrix konstruiert wird? Meinst du mit berechnen diagonalisieren? Möchten Sie es von Hand oder mit einem Computerprogramm diagonalisieren?
Ich muss wissen, wie man die Hamilton-Matrix für einen Nanodraht mit zwei endlichen Breiten und einer unendlichen Länge konstruiert. Ich werde mit MATLAB-Code diagonalisieren. Durch die Bildung des richtigen Hamilton-Operators (H) für Bulk und Ultra-Thin-Body (UTB) habe ich bereits die Dispersion für sie erhalten, während ich H für Nanodraht nicht konstruiert habe. Wie ich den Bulk- und UTB-Hamiltonian geschrieben habe und was ich speziell brauche, finden Sie unter dem Link-drive.google.com/file/d/0B1uxzqELZ2NNVTNYXRsTENxU1k/…
Für ein kartesisches Gitter in 2D erhalten Sie eine fünfdiagonale Matrix (im Gegensatz zu einer tridiagonalen in 1D). Die zusätzlichen Diagonalen entsprechen den Sprungtermen in der y-Richtung. Die Form der Matrix ist dieselbe wie die Laplace-Matrix eines kartesischen Gitters.

Antworten (1)

Das „einzige“, was Sie tun müssen, ist, ein Mapping zu erstellen. Sie haben eine Basisfunktion bei

R = A X + B Y
mit Index i. Mit anderen Worten, Ihre Basis ist ϕ A B ich . Da Matlab nur (gut) Vektoren und Matrizen versteht, müssen Sie dies auf einen kontinuierlichen Index n abbilden. Zum Beispiel ein Quadrat mit Seiten N A , Und N B Und N ich Basisfunktionen pro Standort.

N A B ich = ( A + N A B ) N ich + ich .

Dann müssen Sie die Regeln für Matrixelemente festlegen. Hier ist ein Beispielcode (der in 10 Minuten geschrieben wurde, möglicherweise einige Fehler enthält). Sehen Sie sich an, wie der Sparse-Befehl funktioniert, um zu verstehen, wie der Hamilton-Operator aufgebaut ist. Wie Sie sehen können, gibt es nichts Schwieriges. Nur ist es etwas mühsam, den Überblick über die Indizierung zu behalten. Die eigentliche Diagonalisierung ist dann nur noch eine Zeile. Dem Beispiel fehlt k_z, also müssen Sie das dann selbst einfügen. Dies bedeutet, dass Sie bei der Konstruktion Ihrer Matrixelemente die Streuung berücksichtigen müssen.

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));

Aktualisieren:

Dies sind die Schritte (IHMO), um einen einfachen TB-Code zu erstellen.

1) Ermitteln Sie die Positionen der Atome und Atomtypen (Nehmen Sie zum Beispiel die kubische 8-Atom-Einheitszelle von GaAs und wiederholen Sie sie 15 x 15 x 1 Mal und schneiden Sie dann Atome aus, die zu weit von der Mitte entfernt sind, um einen kugelförmigen Draht zu erzeugen). Protip: Verwenden Sie Gitterebenen und bekannte Oberflächen zum Schneiden.

2) Jedes Atom wird haben N B Basisfunktionen. Ihr Hamiltonian wird aus Blöcken von bestehen N B × N B . In Matlab-Notation können alle Hamilton-Matrix-Elemente zwischen zwei Stellen (indiziert mit a1 und a2) geschrieben werden als:

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

3) Schleife über alle Atome in deiner Zelle (das bedeutet alle (sagen wir) 200 Atome, nicht die Einheitszelle von GaAs). Schleifen Sie für jedes Atom über seine Nachbarschaft (denken Sie daran, auch in die benachbarten Zellen zu schauen).

4) Berechne alle Hamilton-Matrix-Elemente dieser Atompaare und ADDiere sie an geeigneter Stelle im Hamilton-Operator. (Denken Sie daran, den Phasenfaktor hinzuzufügen, wenn sich die Paare nicht in derselben Einheitszelle befinden).

Bewerten Sie den Unterschied zwischen zwei Atompositionen, und teilen Sie ihn noch besser durch a/4, wobei a Ihre Gitterkonstante ist.

Δ R = ( R A 1 R A 2 ) / ( A / 4 )
.

Sie könnten am Ende einen Vektor wie diesen (-1,-1,-1) haben, bei dem Sie leicht ableiten können, dass dies die Interaktion des nächsten Nachbarn ist, und die entsprechenden Matrixelemente hinzufügen.

In Ö H Symmetrie, könnten Sie den Absolutwert der drei Elemente des Differenzvektors nehmen und sie sortieren, um einen eindeutigen Deskriptor des Matrixelements zu erhalten. Die Zinkblende-Struktur hat eine geringere Symmetrie, aber es könnte ähnliche Tricks geben.

Danke für den Code, obwohl ich ihn nicht haben wollte. Ich habe es mit GaAs zu tun, bei dem ein Atom von 4 Nachbarn umgeben ist. Nehmen wir das Kation bei (0 0 0), dann sind vier Vektoren x0=[1 1 1]/4; x1 = [1 - 1 - 1]/4; x2=[-1 1 -1]/4; x3=[-1 -1 1]/4; verbindet vier Anionen mit dem Kation. Wenn ich nun diese 5 Atome kombiniere, erstelle ich eine Elementarzelle, deren Hamiltonoperator H_u=[Haa Hac; Hca Hcc]. Haa ist die Onsite-Energie des Anions und Hac ist die Überlappung zwischen Anion und Kation (hier ohne 'k'). Wenn ich dann 5 Einheitszellen entlang x und 5 entlang y habe, möchte ich den Hamilton-Operator für eine Platte "H_s" schreiben, sagen wir, in Bezug auf H_u.
Das entspricht dem fünfmaligen Wiederholen der Einheitszelle entlang der 'x'- und 'y'-Richtungen. Danach schreibe ich den gesamten Hamilton-Operator des Nanodrahts (mit „k_z“-Termen) als H=H_s_i + H_s_(i-1)exp(-ik.z) + H_s_(i+1)exp(ik.z). Wie würden also diese Matrizen H_s_i, H_s_(i+1), H_s_(i-1) aussehen? (Ich möchte sie von Hand schreiben, bevor ich irgendwelche Codes verwende. Das macht das Verständnis viel klarer).
Entschuldigung, ich bin immer noch verwirrt, an welchem ​​​​Teil Sie hier stecken bleiben. Es gibt im Grunde drei Schritte, um einen einfachen, eng verbindlichen Code zu erstellen. 1) Finden Sie die Einheitszelle heraus (in Ihrem Fall periodisch in einer Richtung) 2) Finden Sie alle Atomplätze und ihren Typ (Ga, As) innerhalb dieser Einheitszelle heraus 3) Berechnen Sie die Hamilton-Matrix-Elemente zwischen allen Basisfunktionen an allen Standorten (und seien Sie dabei schlau). Hast du 1 und 2 schon herausgefunden?
Lassen Sie uns eine atomare Einheitszelle und eine Basis in einem 1D-Gitter haben, wobei die Position jeder Einheitszelle durch R = ax gegeben ist. Wenn die Onsite-Energie 'e' und die NN-Wechselwirkung 't' ist, dann ist der Hamilton-Operator für "4 Einheitszellen" H_1D=[et 0 0; tet 0; 0 tet; 0 0 te]. Lassen Sie nun dieselbe Einheitszelle einen 2D-Kristall bilden, wobei die Position jeder Einheitszelle durch R = ax + by gegeben ist. Hier können wir denken, dass sich die 1D-Kette entlang der y-Richtung wiederholt, daher kann H_2D in Bezug auf H_1D geschrieben werden als: H_2D=[H_1D [T] [0] [0]; [T] H_1D [T] [0]; [0] [T] H_1D [T]; [0] [0] [T] H_1D], wobei [T] diag(t, t, t, t) wäre.
Lassen Sie uns nun diesen endlichen 2D-Kristall entlang 'z' wiederholen. Wir können also den Nanodraht-Hamiltonoperator unter Verwendung von 3 solcher 2D-Hamiltonoperatoren schreiben, die sich bei z = 0, z = +1, z = –1 befinden, als – H_nw = H_2D_0 + T_2D ext(ikz) + T_2D exp(ik(-z)) . Für ein perfektes quadratisches Gitter ist es jedoch ziemlich einfach, auf diese Weise zu denken. Im Fall von GaAs habe ich ein Ga und ein As genommen, die eine Einheitszelle bilden. (Basis ist nicht mein Problem, lasst uns erstmal eine Basis geben). In diesem Fall wäre der Kristall ein FCC-Kristall. Das H für Onsite-Energie (für zweiatomige Elementarzellen) ist [Haa 0; 0 Hcc].
Eine NN-Wechselwirkung ist t=[0 Hac; 0 0] für 3 der 6 NNs bei (x+y)a/2, (y+z)a/2 und (z+x)a/2 liegen. Die Lage der Ruhe 3 NN ist durch ihren negativen Vektor gegeben, und ihre Wechselwirkung ist [0 0; Hca 0]. Da die Position jeder NN-Einheitszelle durch einen Vektor gegeben ist, der entlang aller 'x'-, 'y'-, 'z'-Achsen eine Komponente ungleich Null aufweist, habe ich es versäumt, den Hamilton-Operator für die 1D-Kette entlang der x-Achse und dann den Hamilton-Operator für 2D zu formulieren Gitter (in der xy-Ebene) unter Verwendung dieser 1D-Kette, und schließlich den Nanodraht-Hamiltonoperator aus diesem 2D-Gitter zu bilden.
Hallo! Ich denke, Sie sollten aufhören, über 1D-Ketten nachzudenken, sondern anfangen, über das Problem im Allgemeinen nachzudenken. Ich werde die Antwort für eine ausführlichere Beschreibung aktualisieren.
Danke mein Herr. Ich werde Sie wissen lassen, wenn ich auf weitere Schwierigkeiten stoße.