nanoTB: Podręcznik użytkownika kodu źródłowego (Reference

Transkrypt

nanoTB: Podręcznik użytkownika kodu źródłowego (Reference
nanoTB:
Podręcznik użytkownika kodu źródłowego
(Reference manual)
1.89
Wygenerował za pomocą programu Doxygen 1.3.9.1
Jacek Dziedzic, [email protected]
Thu Aug 25 13:16:58 2005
Spis treści
1 nanoTB: Indeks przestrzeni nazw
1.1
nanoTB: Lista przestrzeni nazw . . . . . . . . . . . . . . . . . . . . . . . . . .
2 nanoTB: Indeks hierarchiczny
2.1
nanoTB: Hierarchia klas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 nanoTB: Indeks klas
3.1
nanoTB: Lista klas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 nanoTB: Indeks plików
4.1
nanoTB: Lista plików . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 nanoTB: Indeks stron dodatkowych
5.1
nanoTB: Dodatkowe strony . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 nanoTB: Dokumentacja przestrzeni nazw
1
1
3
3
5
5
7
7
9
9
11
6.1
Dokumentacja przestrzeni nazw Basis set . . . . . . . . . . . . . . . . . . . . 11
6.2
Dokumentacja przestrzeni nazw Geometry . . . . . . . . . . . . . . . . . . . . 14
6.3
Dokumentacja przestrzeni nazw NRL params . . . . . . . . . . . . . . . . . . 15
6.4
Dokumentacja przestrzeni nazw TB2MD . . . . . . . . . . . . . . . . . . . . . 17
6.5
Dokumentacja przestrzeni nazw TB system . . . . . . . . . . . . . . . . . . . 18
7 nanoTB: Dokumentacja klas
19
7.1
Dokumentacja klasy basis set . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7.2
Dokumentacja klasy box shape . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7.3
Dokumentacja struktury consts . . . . . . . . . . . . . . . . . . . . . . . . . . 28
7.4
Dokumentacja klasy cylinder shape . . . . . . . . . . . . . . . . . . . . . . . . 30
7.5
Dokumentacja klasy EBadOrbital . . . . . . . . . . . . . . . . . . . . . . . . . 36
ii
SPIS TREŚCI
7.6 Dokumentacja klasy EBadOrbitalCount . . . . . . . . . . . . . . . . . . . . . 37
7.7 Dokumentacja klasy EBadSCFModel . . . . . . . . . . . . . . . . . . . . . . . 38
7.8 Dokumentacja klasy EChemicalPotentialConvergenceFailure . . . . . . . . . . 39
7.9 Dokumentacja klasy EFailedToDeterminePhysicalRanges . . . . . . . . . . . . 40
7.10 Dokumentacja klasy ENegativeEnergy . . . . . . . . . . . . . . . . . . . . . . 41
7.11 Dokumentacja klasy EOnlyMonatomicsSupported . . . . . . . . . . . . . . . . 42
7.12 Dokumentacja klasy EOpenShellNotSupported . . . . . . . . . . . . . . . . . 43
7.13 Dokumentacja klasy EOutOfScene . . . . . . . . . . . . . . . . . . . . . . . . 44
7.14 Dokumentacja klasy EOverlapMatrixUnphysical . . . . . . . . . . . . . . . . 45
7.15 Dokumentacja klasy EParamFileStyleNotSupported . . . . . . . . . . . . . . 46
7.16 Dokumentacja klasy ESCFConvergenceFailure . . . . . . . . . . . . . . . . . . 47
7.17 Dokumentacja klasy ETwoCenterOverlapIntegralUnphysical . . . . . . . . . . 48
7.18 Dokumentacja klasy EUnphysicalDistance . . . . . . . . . . . . . . . . . . . . 49
7.19 Dokumentacja klasy geometry . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.20 Dokumentacja klasy nrl params . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.21 Dokumentacja klasy shape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
7.22 Dokumentacja klasy sphere shape . . . . . . . . . . . . . . . . . . . . . . . . . 65
7.23 Dokumentacja klasy tb2md . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.24 Dokumentacja klasy tb system . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8 nanoTB: Dokumentacja plików
109
8.1 Dokumentacja pliku basis set.cpp . . . . . . . . . . . . . . . . . . . . . . . . . 109
8.2 Dokumentacja pliku basis set.h . . . . . . . . . . . . . . . . . . . . . . . . . . 110
8.3 Dokumentacja pliku exceptions.h . . . . . . . . . . . . . . . . . . . . . . . . . 113
8.4 Dokumentacja pliku geometry.cpp . . . . . . . . . . . . . . . . . . . . . . . . 115
8.5 Dokumentacja pliku geometry.h . . . . . . . . . . . . . . . . . . . . . . . . . . 116
8.6 Dokumentacja pliku geometry shapes.cpp . . . . . . . . . . . . . . . . . . . . 118
8.7 Dokumentacja pliku geometry shapes.h . . . . . . . . . . . . . . . . . . . . . 119
8.8 Dokumentacja pliku nrl force.cpp . . . . . . . . . . . . . . . . . . . . . . . . . 121
8.9 Dokumentacja pliku nrl HS.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . 122
8.10 Dokumentacja pliku nrl matrix element formulas.cpp . . . . . . . . . . . . . . 123
8.11 Dokumentacja pliku nrl params.cpp . . . . . . . . . . . . . . . . . . . . . . . 125
8.12 Dokumentacja pliku nrl params.h . . . . . . . . . . . . . . . . . . . . . . . . . 126
8.13 Dokumentacja pliku nrl two center.cpp . . . . . . . . . . . . . . . . . . . . . . 129
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
SPIS TREŚCI
iii
8.14 Dokumentacja pliku rdf.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
8.15 Dokumentacja pliku read params.cpp . . . . . . . . . . . . . . . . . . . . . . . 131
8.16 Dokumentacja pliku release.h . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
8.17 Dokumentacja pliku tb2md.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . 133
8.18 Dokumentacja pliku tb2md.h . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
8.19 Dokumentacja pliku tb system.cpp . . . . . . . . . . . . . . . . . . . . . . . . 136
8.20 Dokumentacja pliku tb system.h . . . . . . . . . . . . . . . . . . . . . . . . . 138
9 nanoTB: Dokumentacja stron dodatkowych
9.1
141
Lista dostrzeżonych błędów (known bugs) . . . . . . . . . . . . . . . . . . . . 141
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
Rozdział 1
nanoTB: Indeks przestrzeni
nazw
1.1
nanoTB: Lista przestrzeni nazw
Tutaj znajdują się wszystkie udokumentowane przestrzenie nazw wraz z ich krótkimi opisami:
Basis set (Baza orbitali) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Geometry (Opis geometrii: klasy geometry, shape, box shape(str. 21), cylinder shape(str. 30), sphere shape(str. 65) i kilka stałych) . . . . . . . . .
NRL params (Zagadnienia specyficzne pliku konfiguracyjnego dla NRL-TB.
Struktura, w której przechowujemy parametry, metoda odczytująca je z
pliku, conversion factors dla różnych jednostek) . . . . . . . . . . . . . . .
TB2MD (Zawiera interejs między MD a TB, w postaci klasy tb2md(str. 71)) . .
TB system (Zawiera wszystkie informacje dotyczące pojedynczego regionu TB. W
przestrzeni nazw TB system jest właściwie tylko klasa tb system(str. 77)
i kilka aliasów) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
14
15
17
18
2
nanoTB: Indeks przestrzeni nazw
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
Rozdział 2
nanoTB: Indeks hierarchiczny
2.1
nanoTB: Hierarchia klas
Ta lista dziedziczenia posortowana jest z grubsza, choć nie całkowicie, alfabetycznie:
E
basis set . . . . . . . . . . . . . . . . . .
consts . . . . . . . . . . . . . . . . . . .
EBadOrbital . . . . . . . . . . . . . . .
EBadOrbitalCount . . . . . . . . . . . .
EBadSCFModel . . . . . . . . . . . . .
EChemicalPotentialConvergenceFailure
EFailedToDeterminePhysicalRanges . .
ENegativeEnergy . . . . . . . . . . . . .
EOnlyMonatomicsSupported . . . . . .
EOpenShellNotSupported . . . . . . . .
EOutOfScene . . . . . . . . . . . . . . .
EOverlapMatrixUnphysical . . . . . . .
EParamFileStyleNotSupported . . . . .
ESCFConvergenceFailure . . . . . . . .
ETwoCenterOverlapIntegralUnphysical
EUnphysicalDistance . . . . . . . . . . .
geometry . . . . . . . . . . . . . . . . .
nrl params . . . . . . . . . . . . . . . .
shape . . . . . . . . . . . . . . . . . . .
box shape . . . . . . . . . . . . . . .
cylinder shape . . . . . . . . . . . .
sphere shape . . . . . . . . . . . . .
tb2md . . . . . . . . . . . . . . . . . . .
tb system . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
19
28
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
60
62
21
30
65
71
77
4
nanoTB: Indeks hierarchiczny
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
Rozdział 3
nanoTB: Indeks klas
3.1
nanoTB: Lista klas
Tutaj znajdują się klasy, struktury, unie i interfejsy wraz z ich krótkimi opisami:
basis set (Opisuje bazę orbitali) . . . . . . . . . . . . . . . . . . . . . . . . . . . .
box shape (Opisuje obiekt o kształcie kostki (prostopadłościanu, box). Może opisywać np. region TB lub scenę MD) . . . . . . . . . . . . . . . . . . . . .
consts (Przeliczniki pozwalające zamieniać jednostki używane przez NRL na nasze)
cylinder shape (Opisuje obiekt o kształcie walca. Może opisywać np. region TB.
Periodyczność walca, jeśli włączona, odnosi się tylko do osi, do której walec
jest równoległy) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EBadOrbital (Błąd 004: Próba użycia orbitala spoza aktualnie używanej bazy
orbitali) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EBadOrbitalCount (Błąd 003: Nieobsługiwana liczba orbitali w pliku z parametrami NRL-TB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EBadSCFModel (Błąd 012: Nierozpoznana opcja opisująca samouzgodnienie w
pliku konfiguracyjnym) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EChemicalPotentialConvergenceFailure (Błąd 007: Nie osiągnięto zbieżności
podczas wyznaczania potencjału chemicznego) . . . . . . . . . . . . . . .
EFailedToDeterminePhysicalRanges (Błąd 008: Nie udało się wyznaczenie
najmniejszej odległości międzyatomowej, dla której całki nakładania zachowują sens fizyczny) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ENegativeEnergy (Błąd 015: Wykryto ujemną energię jednego z atomów) . . . .
EOnlyMonatomicsSupported (Błąd 002: Plik z parametrami NRL-TB zawiera
więcej niż jeden typ atomów) . . . . . . . . . . . . . . . . . . . . . . . . .
EOpenShellNotSupported (Błąd 006: Układy otwartopowłokowe nie są obsługiwane) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
EOutOfScene (Błąd 014: Jeden z atomów opuścił scene symulacji a nie ma periodycznych warunków brzegowych) . . . . . . . . . . . . . . . . . . . . .
EOverlapMatrixUnphysical (Błąd 011: Jeden z elementów off-site macierzy nakładania przyjął wartość spoza (-1,1)) . . . . . . . . . . . . . . . . . . . .
EParamFileStyleNotSupported (Błąd 001: Plik z parametrami NRL-TB ma
nierozpoznany format) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
21
28
30
36
37
38
39
40
41
42
43
44
45
46
6
nanoTB: Indeks klas
ESCFConvergenceFailure (Błąd 013: Nie osiągnięto samouzgodnienia ładunku)
ETwoCenterOverlapIntegralUnphysical (Błąd 010: Jedna z całek dwucentrowych przyjęła wartość spoza (-1,1)) . . . . . . . . . . . . . . . . . . . . . .
EUnphysicalDistance (Błąd 009: Wykryto odległość międzyatomowa, która doprowadzi do niefizyczności układu w sensie Ref. (P2), p. 10) . . . . . . . .
geometry (Opisuje geometrię regionu TB i sceny MD, po której region się porusza)
nrl params (Wszystkie parametry specyficzne dla NRL) . . . . . . . . . . . . . .
shape (Kształt ogólny (abstrakcyjny) regionu) . . . . . . . . . . . . . . . . . . . .
sphere shape (Opisuje obiekt o kształcie kuli. Może opisywać np. region TB. Kula
nie może mieć periodycznych warunków brzegowych) . . . . . . . . . . . .
tb2md (Interfejs między MD a TB) . . . . . . . . . . . . . . . . . . . . . . . . . .
tb system (Klasa reprezentuje pojedynczy region TB) . . . . . . . . . . . . . . .
47
48
49
50
60
62
65
71
77
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
Rozdział 4
nanoTB: Indeks plików
4.1
nanoTB: Lista plików
Tutaj znajduje się lista wszystkich udokumentowanych plików z ich krótkimi opisami:
basis set.cpp (Zawiera opis bazy orbitali) . . . . . . . . . . . . . . . . . . . . . . 109
basis set.h (Plik nagłówkowy modułu basis set.cpp(str. 109)) . . . . . . . . . . 110
exceptions.h (Plik nagłówkowy definiujący wyjątki występujące w programie) . . 113
geometry.cpp (Geometria systemu (regionu TB, sceny MD), dane o ukladzie (Pos,
Vel, Acc, etc.), obliczenia geometryczne (odległości, kosinusy kierunkowe,
etc.)) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
geometry.h (Plik nagłówkowy modułu geometry.cpp(str. 115)) . . . . . . . . . . 116
geometry shapes.cpp (Kształty geometryczne (abstrakcyjny – shape, kostka –
box shape, walec – cylinder shape i kula sphere shape)) . . . . . . . . . . 118
geometry shapes.h (Plik nagłówkowy modułu geometry shapes.cpp(str. 118)) 119
nrl force.cpp (Implementacja NRL-TB – funkcje obliczajace siły działające na
poszczególne atomy) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
nrl HS.cpp (Implementacja NRL-TB – funkcje obliczajace macierze H, S, H der
i S der) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
nrl matrix element formulas.cpp (Implementacja NRL-TB – funkcje obliczające poszczególne elementy macierzowe w H, S, H der, S der) . . . . . . . 123
nrl params.cpp (Zagadnienia specyficzne pliku konfiguracyjnego NRL-TB) . . . 125
nrl params.h (Plik nagłówkowy modułu nrl params.cpp(str. 125)) . . . . . . . 126
nrl two center.cpp (Implementacja NRL-TB – części opisujące zależność od odległości) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
rdf.cpp (Oblicza radialna funkcję rozkładu (RDF) dla regionu TB) . . . . . . . . 130
read params.cpp (Zawiera funkcje czytającą parametry regionu TB (nie nrl-TB)) 131
release.h (Zawiera szczegóły bieżącej wersji programu) . . . . . . . . . . . . . . . 132
tb2md.cpp (Zawiera kod związany bezpośrednio z intefejsem TB/MD. Zagadnienia związane z cross-scalingiem trafiają tu) . . . . . . . . . . . . . . . . . 133
tb2md.h (Plik nagłówkowy modułu tb2md.cpp(str. 133)) . . . . . . . . . . . . . 134
tb system.cpp (Zawiera kod związany z pojedynczym regionem TB) . . . . . . . 136
tb system.h (Plik nagłówkowy modułu tb system.cpp(str. 136)) . . . . . . . . . 138
8
nanoTB: Indeks plików
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
Rozdział 5
nanoTB: Indeks stron
dodatkowych
5.1
nanoTB: Dodatkowe strony
Tutaj znajduje się lista stron dodatkowych dokumentacji:
Lista dostrzeżonych błędów (known bugs) . . . . . . . . . . . . . . . . . . . . . . . 141
10
nanoTB: Indeks stron dodatkowych
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
Rozdział 6
nanoTB: Dokumentacja
przestrzeni nazw
6.1
Dokumentacja przestrzeni nazw Basis set
Baza orbitali.
Zawiera:
class basis set
Opisuje bazę orbitali.
— orbitale —
enum orbital {
s, p x, p y, p z,
d xy, d yz, d zx, d x2 y2,
d 3z2 r2 }
Orbitale.
const unsigned int Norbitals max = 9
9: s, px, py, pz, dxy, dyz, dzx, dx2-y2, d3z2-r2
const unsigned int orbital counts [ ] = {1,3,3,2}
Ile jest orbitali danego typu (jeden s, trzy p, trzy t 2g, dwa e g).
const std::string orbital names [Norbitals max] = {”s”,”p x”,”p y”,”p z”,”d xy”,”d yz”,”d zx”,”d x2 y2”,”d 3z2 r2”}
Nazwy orbitali.
12
nanoTB: Dokumentacja przestrzeni nazw
const unsigned int orbital types count = 4
Liczba typów orbitali. 4: s, p, t 2g, e g.
— interakcje między orbitalami (orbitale molekularne) —
enum orbital interaction {
sssigma, spsigma, ppsigma, pppi,
sdsigma, pdsigma, pdpi, ddsigma,
ddpi, dddelta }
Interakcje między orbitalami (orbitale molekularne).
const unsigned int delta [Norbital interactions max] = {1,0,1,1,0,0,0,1,1,1}
const unsigned int Norbital interactions max = 10
Maksymalna liczba orbitali molekularnych (10: ssσ..ddδ).
const std::string orbital interaction names [Norbital interactions max]
Nazwy orbitali molekularnych.
6.1.1
Opis szczegółowy
Zawiera definicje klasy basis set(str. 19), która opisuje bazę orbitali. Zawiera środowisko, z
którego korzystają wszystkie instancje basis set(str. 19), czyli np. enum’y orbitali, nazwy
orbitali, nazwy interakcji, etc.
W modelu sp3d5 mamy 9 orbitali (1∗s, 3∗p, 5∗d) i 10 interakcji między orbitalami (orbitali
molekularnych), tyle samo jest też całek dwucentrowych. W modelu sp3 są 4 typy orbitali,
4 interakcje. W tej sytuacji enum’y dla wyższych orbitali są również zdefiniowane, tyle że
nie są wykorzystywane.
Za Mehlem i Papaconstantopoulosem przyjmujemy, że orbitale ’d’ mogą się rozszczepiać na
t2g i eg .
Słowniczek:
orbital - s, px , dx2 y2 , etc.
typ orbitalu (orbital type) - s, p, t2g , eg , etc.
interakcja miedzy orbitalami, orbital molekularny (orbital interaction) - ssσ, spπ, etc.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
6.1 Dokumentacja przestrzeni nazw Basis set
6.1.2
Dokumentacja zmiennych
6.1.2.1
const unsigned int delta[Norbital interactions max] =
{1,0,1,1,0,0,0,1,1,1}
13
Delta Kroneckera(l,l’) przeliczona dla wszystkich orbitali molekularnych 1, gdy ’likeorbitals’; 0, gdy ’unlike-orbitals’. (l i l’ – orbitalna liczba kwantowa pierwszego i drugiego
orbitala)
Definicja w linii 85 pliku basis set.h.
Odwołania do tego symbolu występują w: tb system::two center overlap integral() i tb system::two center overlap integral derivative().
6.1.2.2
const std::string orbital interaction names[Norbital interactions max]
Wartość początkowa:
{"ss(sigma)","sp(sigma)","pp(sigma)","pp(pi)","sd(sigma)",
"pd(sigma)","pd(pi)","dd(sigma)","dd(pi)","dd(delta)"}
Definicja w linii 79 pliku basis set.h.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
14
6.2
nanoTB: Dokumentacja przestrzeni nazw
Dokumentacja przestrzeni nazw Geometry
Opis geometrii: klasy geometry, shape, box shape(str. 21), cylinder shape(str. 30), sphere shape(str. 65) i kilka stałych.
Zawiera:
class box shape
Opisuje obiekt o kształcie kostki (prostopadłościanu, box). Może opisywać np. region TB
lub scenę MD.
class cylinder shape
Opisuje obiekt o kształcie walca. Może opisywać np. region TB. Periodyczność walca, jeśli
włączona, odnosi się tylko do osi, do której walec jest równoległy.
class geometry
Opisuje geometrię regionu TB i sceny MD, po której region się porusza.
class shape
Kształt ogólny (abstrakcyjny) regionu.
class sphere shape
Opisuje obiekt o kształcie kuli. Może opisywać np. region TB. Kula nie może mieć periodycznych warunków brzegowych.
— aliasy dla orientacji walca —
const
const
const
const
int
int
int
int
ORI
ORI
ORI
ORI
UNDEFINED = -1
X=0
Y=1
Z=2
— aliasy dla kształtów —
const
const
const
const
int
int
int
int
SHA
SHA
SHA
SHA
BOX = 0
CYLINDER = 1
SPHERE = 2
UNDEFINED = -1
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
6.3 Dokumentacja przestrzeni nazw NRL params
6.3
15
Dokumentacja przestrzeni nazw NRL params
Zagadnienia specyficzne pliku konfiguracyjnego dla NRL-TB. Struktura, w której przechowujemy parametry, metoda odczytująca je z pliku, conversion factors dla różnych jednostek.
Zawiera:
struct consts
Przeliczniki pozwalające zamieniać jednostki używane przez NRL na nasze.
class nrl params
Wszystkie parametry specyficzne dla NRL.
Wyliczenia
enum params {
atomic weight, R c, screen l, formal valence s,
formal valence p, formal valence d, lambda, a s,
b s, c s, d s, a p,
b p, c p, d p, a t2g,
b t2g, c t2g, d t2g, a eg,
b eg, c eg, d eg, He sssigma,
Hf sssigma, Hg sssigma, Hh sssigma, He spsigma,
Hf spsigma, Hg spsigma, Hh spsigma, He ppsigma,
Hf ppsigma, Hg ppsigma, Hh ppsigma, He pppi,
Hf ppi, Hg pppi, Hh pppi, He sdsigma,
Hf sdsigma, Hg sdsigma, Hh sdsigma, He pdsigma,
Hf pdsigma, Hg pdsigma, Hh pdsigma, He pdpi,
Hf pdpi, Hg pdpi, Hh pdpi, He ddsigma,
Hf ddsigma, Hg ddsigma, Hh ddsigma, He ddpi,
Hf ddpi, Hg ddpi, Hh ddpi, He dddelta,
Hf dddelta, Hg dddelta, Hh dddelta, Se sssigma,
Sf sssigma, Sg sssigma, Sh sssigma, Se spsigma,
Sf spsigma, Sg spsigma, Sh spsigma, Se ppsigma,
Sf ppsigma, Sg ppsigma, Sh ppsigma, Se pppi,
Sf ppi, Sg pppi, Sh pppi, Se sdsigma,
Sf sdsigma, Sg sdsigma, Sh sdsigma, Se pdsigma,
Sf pdsigma, Sg pdsigma, Sh pdsigma, Se pdpi,
Sf pdpi, Sg pdpi, Sh pdpi, Se ddsigma,
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
16
nanoTB: Dokumentacja przestrzeni nazw
Sf ddsigma, Sg ddsigma, Sh ddsigma, Se ddpi,
Sf ddpi, Sg ddpi, Sh ddpi, Se dddelta,
Sf dddelta, Sg dddelta, Sh dddelta, last param marker }
Zmiennoprzecinkowe parametry z pliku z parametrami NRL.
Zmienne
const struct NRL params::consts constants
Przeliczniki pozwalające zamieniać jednostki używane przez NRL na nasze.
6.3.1
Dokumentacja zmiennych
6.3.1.1
const struct NRL params::consts constants
Michał używa:
A (angstroem) dla odległości
amu (atomis mass unit) dla masy
fs (femtosecond) dla czasu
wobec tego: amu∗A2 /f s2 dla energii (nazwijmy ją IEU – internal energy unit)
wobec tego: A/f s2 dla przyspieszenia (nazwijmy ją IAU – internal accel. unit)
Ostrzeżenie:
Te stałe są inicjowane zgodnie z kolejnością deklaracji, NIE w kolejności alfabetycznej
i NIE w kolejności w jakiej są wymienione w init list konstruktora.
Zmiany w tych stałych wymagają rekompilacji NIE TYLKO nrl params.cpp(str. 125)
Odwołania do tego symbolu występują w: tb system::perform step(), tb system::produce diagnostics() i nrl params::read params().
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
6.4 Dokumentacja przestrzeni nazw TB2MD
6.4
Dokumentacja przestrzeni nazw TB2MD
Zawiera interejs między MD a TB, w postaci klasy tb2md(str. 71).
Zawiera:
class tb2md
Interfejs między MD a TB.
Funkcje
double weighing function (double x)
Funkcja ważenia dla miksowania TB+MD.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
17
18
6.5
nanoTB: Dokumentacja przestrzeni nazw
Dokumentacja przestrzeni nazw TB system
Zawiera wszystkie informacje dotyczące pojedynczego regionu TB. W przestrzeni nazw TB system jest właściwie tylko klasa tb system(str. 77) i kilka aliasów.
Zawiera:
class tb system
Klasa reprezentuje pojedynczy region TB.
aliasy
const
const
const
const
const
bool no bounds checking = false
unsigned int SCF ELSTNER = 2
unsigned int SCF HUBBARD = 1
unsigned int SCF NONE = 0
bool with bounds checking = true
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
Rozdział 7
nanoTB: Dokumentacja klas
7.1
Dokumentacja klasy basis set
Opisuje bazę orbitali.
#include <basis set.h>
Metody publiczne
basis set ()
Konstruktor, w tej chwili pusty.
void initialize (const unsigned int model)
Inicjuje bazę orbitali dla danego modelu (1==sp3, 2==sp3d5).
Atrybuty publiczne
unsigned int Norbital interactions
Liczba interakcji między orbitalami (orbitali molekularnych) w tej bazie.
unsigned int Norbitals
Liczba orbitali w tej bazie.
7.1.1
Dokumentacja metod
7.1.1.1
void initialize (const unsigned int model)
Inicjalizuje bazę orbitali zależnie od modelu, który ma ona reprezentować.
20
nanoTB: Dokumentacja klas
Parametry:
← model 0==sp3, 1==sp3d5
Definicja w linii 18 pliku basis set.cpp.
Odwołuje się do basis set::Norbital interactions i basis set::Norbitals.
Odwołania do tego symbolu występują w: tb system::initialize().
Dokumentacja dla tej klasy została wygenerowana na podstawie plików:
basis set.h
basis set.cpp
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.2 Dokumentacja klasy box shape
7.2
21
Dokumentacja klasy box shape
Opisuje obiekt o kształcie kostki (prostopadłościanu, box). Może opisywać np. region TB
lub scenę MD.
#include <geometry shapes.h>
Diagram dziedziczenia dla box shape
shape
# m_auto
# m_origin
# m_periodic
+ shape()
+ ~shape()
box_shape
- m_Box
- m_Max
- m_Min
- m_Ratios
+ box_shape()
Metody publiczne
box shape ()
Konstruktor kostki zerowej.
modifiers
void adjust size (double max dist)
Koryguje rozmiary kostki tak, aby zmieściły się w nim atomy do ”odległości” max dist włącznie. ”Odległość” jest liczona zgodnie z metryką niekartezjańską, opisaną w
podręczniku użytkownika.
void init auto (Framework::Maths::Vect3d edge ratios, Framework::Maths::Vect3d
requested origin, bool is periodic)
Inicjuje kostkę o zmiennym rozmiarze, przez podanie stosunków długości krawędzi,
punktu początkowego i czy ma być periodyczna.
void init fixed (Framework::Maths::Vect3d box size, Framework::Maths::Vect3d
requested origin, bool is periodic)
Inicjuje kostkę o stałym rozmiarze, przez podanie rozmiarów, współrzędnych srodka i
czy ma być periodyczna.
void init fixed (std::vector< double > requested box, bool is periodic)
Inicjuje kostkę o stałym rozmiarze, przez podanie współrzędnych obu wierzchołków i czy
ma być periodyczna.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
22
nanoTB: Dokumentacja klas
void move by (Framework::Maths::Vect3d offset)
Przesuwa kostkę o wektor.
— accessors —
const Framework::Maths::Vect3d & Box () const
Zwraca wektor rozmiarów kostki.
const Framework::Maths::Vect3d Box2 () const
Zwraca wektor 1/2 ∗ (rozmiary kostki).
void gather distances and indices (const nano ∗const Michal, std::vector<
std::pair< double, int > > &distances and indices, const geometry &geom) const
Prosi kostkę o obliczenie odległości wszystkich atomów ∗sceny MD∗ względem punktu
początkowego, które to odległości wraz z indeksami odpowiadających im atomów zwraca.
std::string info () const
Zwraca rozmiary kształtu w formie czytelnej dla człowieka.
void make periodic in shape (double &dx, double &dy, double &dz) const
Nakłada periodyczność kształtu na współrzędne dx, dy, dz.
const Framework::Maths::Vect3d & Max () const
Zwraca położenie drugiego wierzchołka kostki.
const Framework::Maths::Vect3d & Min () const
Zwraca położenie pierwszego wierzchołka kostki.
const Framework::Maths::Vect3d & Ratios () const
Zwraca wektor stosunków długości krawędzi kostki.
double relative distance of (const Framework::Maths::Vect3d &pos, const geometry &geom) const
Zwraca względną (<0..1>) ”odległość” punktu zadanego w ą pos względem środka kostki. Odległość jest mierzona metryką niekartezjańską, dokładnie opisaną w podręczniku
użytkownika.
double volume () const
Zwraca objętość kostki.
int what shape () const
Zwraca SHA BOX.
Atrybuty prywatne
Framework::Maths::Vect3d m Box
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.2 Dokumentacja klasy box shape
23
Rozmiar kostki.
Framework::Maths::Vect3d m Max
Przeciwny wierzchołek.
Framework::Maths::Vect3d m Min
Jeden wierzchołek.
Framework::Maths::Vect3d m Ratios
Stosunek długości krawędzi kostki.
7.2.1
Dokumentacja metod
7.2.1.1
void adjust size (double max dist) [virtual]
Koryguje rozmiary kostki, aby zmieściły się w niej atomy do odległości max dist włącznie
(od środka kostki). Odległość jest mierzona na scenie i jest zwykłą odległością euklidesową.
Ewentualne periodyczne warunki brzegowe sceny są uwzględniane. Kształt kostki (tj. stosunek długości krawędzi) pozostaje stały, skalowane są tylko krawędzie. Kostka nie może mieć
ustalonego rozmiaru (tj. musi być m auto==true), inaczej zgłasza Assert.
Parametry:
← max dist – odległość graniczna, poniżej której mają mieścić się atomy
Implementuje shape (str. 62).
Definicja w linii 326 pliku geometry shapes.cpp.
7.2.1.2
void gather distances and indices (const nano ∗const Michal,
std::vector< std::pair< double, int > > & distances and indices, const
geometry & geom) const [virtual]
Uwaga:
Metryka względem której liczone są odległości nie jest kartezjańska, dokładny opis znajduje się w podręczniku użytkownika
Implementuje shape (str. 62).
Definicja w linii 227 pliku geometry shapes.cpp.
Odwołuje się do for all MD atoms i geometry::scene dist().
Oto graf wywołań dla tej funkcji:
gather_distances_and_indices
Geometry::geometry::scene_dist
Geometry::geometry::get_scene_dxdydz
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
24
7.2.1.3
nanoTB: Dokumentacja klas
string info () const [virtual]
Zwraca rozmiary kostki w postaci łancucha czytelnego dla człowieka: ”origin: [...], min: [...],
max: [...]
Implementuje shape (str. 63).
Definicja w linii 169 pliku geometry shapes.cpp.
Odwołuje się do box shape::m Box, box shape::m Max, box shape::m Min i box shape::m Ratios.
Odwołania do tego symbolu występują w: tb system::advance(), box shape::init auto(), box shape::init fixed(), geometry::quick setup(), tb system::read params() i geometry::reduce location().
7.2.1.4
void init auto (Framework::Maths::Vect3d edge ratios,
Framework::Maths::Vect3d requested origin, bool is periodic)
Inicjalizuje kształt kostki przez podanie stosunków długości boków, położenia środka kostki
i atrybutu periodyczności. Kostka będzie miała zmienny rozmiar, na starcie taki, że najmniejsza krawędź będzie miała długość 1.0 A.
Parametry:
← edge ratios – wektor stosunków długości boków
← requested origin – wektor położenia środka kostki
← is periodic – true, jeśli kostka ma być periodyczna
Definicja w linii 79 pliku geometry shapes.cpp.
Odwołuje się do box shape::info(), box shape::m Box, box shape::m Max, box shape::m Min
i box shape::m Ratios.
Odwołania do tego symbolu występują w: tb system::read params().
Oto graf wywołań dla tej funkcji:
init_auto
7.2.1.5
info
void init fixed (Framework::Maths::Vect3d box size,
Framework::Maths::Vect3d requested origin, bool is periodic)
Inicjalizuje kształt kostki przez podanie rozmiarów kostki, punktu początkowego (środka
kostki) i atrybutu periodyczności
Kostka będzie miała stały rozmiar.
Parametry:
← box size – wektor rozmiarów kostki
← requested origin – wektor punktu początkowego (środka) kostki
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.2 Dokumentacja klasy box shape
25
← is periodic – true, jeśli kostka ma być periodyczna
Definicja w linii 144 pliku geometry shapes.cpp.
Odwołuje się do box shape::info(), box shape::m Box, box shape::m Max, box shape::m Min
i box shape::m Ratios.
Oto graf wywołań dla tej funkcji:
init_fixed
7.2.1.6
info
void init fixed (std::vector< double > requested box, bool is periodic)
Inicjalizuje kształt kostki przez podanie położenia rogów kostki i atrybutu periodyczności
Kostka będzie miała stały rozmiar.
Parametry:
← requested box – wektor ∗sześciu∗ doubli opisujących dwa punkty przestrzeni, które
definiują kostke
← is periodic – true, jeśli kostka ma być periodyczna
Definicja w linii 117 pliku geometry shapes.cpp.
Odwołuje się do for all dimensions, box shape::info(), box shape::m Box, box shape::m Max, box shape::m Min i box shape::m Ratios.
Odwołania do tego symbolu występują w: geometry::quick setup(), tb system::read params() i geometry::set scene().
Oto graf wywołań dla tej funkcji:
init_fixed
7.2.1.7
info
void make periodic in shape (double & dx, double & dy, double & dz)
const [virtual]
Nakłada warunki brzegowe kostki na współrzedne.
Parametry:
↔ dx,dy,dz – Współrzędne, które mają być przetransformowane
Uwaga:
W razie, gdy kostka ∗nie∗ jest de facto periodyczna, zgłasza Assert.
Implementuje shape (str. 63).
Definicja w linii 197 pliku geometry shapes.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
26
nanoTB: Dokumentacja klas
Odwołuje się do box shape::Box() i box shape::Box2().
Oto graf wywołań dla tej funkcji:
Box
make_periodic_in_shape
Box2
7.2.1.8
void move by (Framework::Maths::Vect3d offset) [virtual]
Przesuwa kostkę o wektor.
Parametry:
offset – Wektor o który kostka ma być przesunięta
Reimplementowana z shape (str. 63).
Definicja w linii 185 pliku geometry shapes.cpp.
Odwołuje się do box shape::m Max i box shape::m Min.
7.2.1.9
double relative distance of (const Framework::Maths::Vect3d & pos,
const geometry & geom) const [virtual]
Zwraca względną ”odległość” między punktem a środkiem kostki. Zakres zmienności tej
”odległości” jest od 0 (środek kostki) do 1 (punkt na powierzchni bocznej), jeśli punkt
był w kostce. Jeśli punkt był poza kostką, ma odległość >1. . Metryka, wzgłedem której
liczymy odległości jest niekartezjańska, ponieważ wszystkie punkty na powierzchni kostki
powinny mieć ”odległość” równą 1. Dokładny opis metryki jest w podręczniku użytkownika.
Ewentualne periodyczne warunki brzegowe sceny są uwzględniane, ponieważ korzystamy z
get scene dxdydz().
PBC regionu nie są uwzględniane, chyba nie mają wpływu? @
Parametry:
← pos – położenie punktu, w GLOBALNYM układzie współrzędnych (tym, który widzi Michał)
Zwraca:
wspomniana ”odległość” względna
Implementuje shape (str. 63).
Definicja w linii 259 pliku geometry shapes.cpp.
Odwołuje się do box shape::Box2(), for all dimensions i geometry::get scene dxdydz().
Oto graf wywołań dla tej funkcji:
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.2 Dokumentacja klasy box shape
27
Box2
relative_distance_of
Geometry::geometry::get_scene_dxdydz
7.2.1.10
double volume () const [virtual]
Zwraca objętość kostki.
Implementuje shape (str. 63).
Definicja w linii 210 pliku geometry shapes.cpp.
Odwołuje się do box shape::m Box.
Dokumentacja dla tej klasy została wygenerowana na podstawie plików:
geometry shapes.h
geometry shapes.cpp
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
28
7.3
nanoTB: Dokumentacja klas
Dokumentacja struktury consts
Przeliczniki pozwalające zamieniać jednostki używane przez NRL na nasze.
#include <nrl params.h>
Atrybuty publiczne
const double c accel
jednostki przyspieszenia same wychodzą
const double c Boltzmann k
0.6333e-5 Ry/K -> IEU/K
const double c distance
(Liczba a.u. (Bohrów) w Angstroemie)
const double c energy
jednostki energii same wychodzą
const double c energy eV to Ry
(13.606 eV w jednym Ry)
const double c mass
(Zostajemy przy amu)
const double c time
(Zostajemy przy fs)
7.3.1
Opis szczegółowy
Michał używa:
A (angstroem) dla odległości
amu (atomis mass unit) dla masy
fs (femtosecond) dla czasu
wobec tego: amu∗A2 /f s2 dla energii (nazwijmy ją IEU – internal energy unit)
wobec tego: A/f s2 dla przyspieszenia (nazwijmy ją IAU – internal accel. unit)
Ostrzeżenie:
Te stałe są inicjowane zgodnie z kolejnością deklaracji, NIE w kolejności alfabetycznej
i NIE w kolejności w jakiej są wymienione w init list konstruktora.
Zmiany w tych stałych wymagają rekompilacji NIE TYLKO nrl params.cpp(str. 125)
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.3 Dokumentacja struktury consts
Definicja w linii 37 pliku nrl params.h.
Dokumentacja dla tej struktury została wygenerowana na podstawie pliku:
nrl params.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
29
30
7.4
nanoTB: Dokumentacja klas
Dokumentacja klasy cylinder shape
Opisuje obiekt o kształcie walca. Może opisywać np. region TB. Periodyczność walca, jeśli
włączona, odnosi się tylko do osi, do której walec jest równoległy.
#include <geometry shapes.h>
Diagram dziedziczenia dla cylinder shape
shape
# m_auto
# m_origin
# m_periodic
+ shape()
+ ~shape()
cylinder_shape
- m_height
- m_orientation
- m_radius
+ cylinder_shape()
Metody publiczne
cylinder shape ()
Konstruktor walca zerowego o niezdefiniowanej orientacji.
modifiers
void adjust size (double max dist)
Koryguje rozmiary walca tak, aby zmieściły się w nim atomy do ”odległości” max dist
włącznie.
void init auto (int orientation, Framework::Maths::Vect3d requested origin, double
height, bool is periodic)
Inicjuje walec o zmiennym rozmiarze, zadając mu orientację przestrzenną, położenie
osi i periodyczność.
void init fixed (int orientation, Framework::Maths::Vect3d requested origin, double height, double radius, bool is periodic)
Inicjuje walec o stałym rozmiarze, zadając mu orientację przestrzenną, położenie osi i
periodyczność.
void move by (Framework::Maths::Vect3d offset)
Przesuwa walec o zadany wektor.
double dist from axis (const Framework::Maths::Vect3d &p1, const geometry
&geom) const
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.4 Dokumentacja klasy cylinder shape
31
Zwraca odległość punktu p1 od osi walca.
void gather distances and indices (const nano ∗const Michal, std::vector<
std::pair< double, int > > &distances and indices, const geometry &geom) const
Prosi walec o obliczenie odległości wszystkich atomów ∗sceny MD∗ względem osi walca,
które to odległości wraz z indeksami odpowiadających im atomów zwraca.
double height () const
Zwraca wysokość walca.
std::string info () const
Zwraca rozmiary walca w formie czytelnej dla człowieka.
void make periodic in shape (double &dx, double &dy, double &dz) const
Nakłada periodyczność kształtu na współrzędne dx, dy, dz. Dla walca periodyczność obowiązuje tylko wzdłuż jednej z osi.
int orientation () const
Zwraca orientację walca.
double radius () const
Zwraca promień walca.
double relative distance of (const Framework::Maths::Vect3d &pos, const geometry &geom) const
Zwraca względną (<0..1>) ”odległość” punktu zadanego w ą pos względem osi walca, tj.
punkty na osi mają odległość 0, a punkty na brzegach 1.
double volume () const
Zwraca objętość walca.
int what shape () const
Zwraca SHA CYLINDER.
Atrybuty prywatne
double m height
Wysokość walca.
int m orientation
Orientacja przestrzenna (wzdłuż której osi).
double m radius
Promień walca.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
32
nanoTB: Dokumentacja klas
7.4.1
Dokumentacja metod
7.4.1.1
void adjust size (double max dist) [virtual]
Koryguje rozmiary walca, aby zmieściły się w nim atomy do względnej ”odległości” max dist włącznie. ”Odległość” jest liczona metryką euklidesową od osi walca. Korekta następuje
przez zwiększenie promienia.
Implementuje shape (str. 62).
Definicja w linii 494 pliku geometry shapes.cpp.
Odwołuje się do cylinder shape::m radius.
7.4.1.2
double dist from axis (const Framework::Maths::Vect3d & p1, const
geometry & geom) const
Zwraca odległość kartezjańską między punktem p1 a osią walca. Periodyczność sceny, jeśli
obowiązuje, jest uwzględniana
Parametry:
← p1 – Położenie punktu
← geom – Geometria, na której pracujemy (zależy od niej scene dist)
Uwaga:
Współrzędne punktu ’p1’ są wyrażone w GLOBALNYM układzie współrzędnych (tym,
który widzi Michał, właściwym dla sceny MD)
Definicja w linii 436 pliku geometry shapes.cpp.
Odwołuje się do cylinder shape::m orientation i geometry::scene dist().
Odwołania do tego symbolu występują w: cylinder shape::gather distances and indices() i
cylinder shape::relative distance of().
Oto graf wywołań dla tej funkcji:
dist_from_axis
7.4.1.3
Geometry::geometry::scene_dist
Geometry::geometry::get_scene_dxdydz
void gather distances and indices (const nano ∗const Michal,
std::vector< std::pair< double, int > > & distances and indices, const
geometry & geom) const [virtual]
Dla wszystkich atomów sceny MD (nie regionu!) oblicza ich odległość od osi walca. Tworzy
wektor par: odległość : indeks, gdzie indeks jest indeksem danego atomu ’u Michała’. Ten
(posortowany po indeksach) wektor par jest zwracany, a potem go sortują po odległościach
Parametry:
← Michal – stały wskaźnik na stałe nano Michała
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.4 Dokumentacja klasy cylinder shape
33
← geom – geometria, w której pracujemy (zależy od niej dist from axis)
→ distances and indices – tu zwracany jest wynik
Implementuje shape (str. 62).
Definicja w linii 476 pliku geometry shapes.cpp.
Odwołuje się do cylinder shape::dist from axis() i for all MD atoms.
Oto graf wywołań dla tej funkcji:
gather_distances_and_indices
7.4.1.4
dist_from_axis
Geometry::geometry::scene_dist
Geometry::geometry::get_scene_dxdydz
string info () const [virtual]
Zwraca rozmiary walca w postaci łancucha czytelnego dla człowieka: ”origin: [x1, y1, z1],
radius: r, height: h, orientation: o”
Implementuje shape (str. 63).
Definicja w linii 457 pliku geometry shapes.cpp.
Odwołuje się do cylinder shape::m height, cylinder shape::m orientation i cylinder shape::m radius.
Odwołania do tego symbolu występują w: cylinder shape::init auto() i cylinder shape::init fixed().
7.4.1.5
void init auto (int orientation, Framework::Maths::Vect3d
requested origin, double height, bool is periodic)
Walec o ∗zmiennym∗ rozmiarze.
Inicjalizuje kształt walca, nadając mu orientację i punkt początkowy.
Parametry:
← orientation – jedna z orientacji ORI X, ORI Y, ORI Z czyli wzdłuż osi odpowiednio X, Y i Z.
← requested origin – punkt, przez który przechodzić ma oś walca. (jedna ze współrzędnych jest nieistotna)
← height – wysokość (długość walca)
← is periodic – true, jeśli walec ma być periodyczny
Uwaga:
Wywołanie init(..) nie definiuje jeszcze promienia i wysokości walca
Definicja w linii 353 pliku geometry shapes.cpp.
Odwołuje się do cylinder shape::info(), cylinder shape::m height, cylinder shape::m orientation i cylinder shape::m radius.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
34
nanoTB: Dokumentacja klas
Odwołania do tego symbolu występują w: tb system::read params().
Oto graf wywołań dla tej funkcji:
init_auto
7.4.1.6
info
void init fixed (int orientation, Framework::Maths::Vect3d
requested origin, double height, double radius, bool is periodic)
Walec o ∗stałym∗ rozmiarze.
Inicjalizuje kształt walca, nadając mu orientację i punkt początkowy.
Parametry:
← orientation – jedna z orientacji ORI X, ORI Y, ORI Z czyli wzdłuż osi odpowiednio X, Y i Z.
← requested origin – punkt, przez który przechodzić ma oś walca. (jedna ze współrzędnych jest nieistotna)
← is periodic – true, jeśli walec ma być periodyczny
Uwaga:
Wywołanie init(..) nie definiuje jeszcze promienia i wysokości walca
Definicja w linii 380 pliku geometry shapes.cpp.
Odwołuje się do cylinder shape::info(), cylinder shape::m height, cylinder shape::m orientation i cylinder shape::m radius.
Odwołania do tego symbolu występują w: tb system::read params().
Oto graf wywołań dla tej funkcji:
init_fixed
7.4.1.7
info
void make periodic in shape (double & dx, double & dy, double & dz)
const [virtual]
Nakłada warunki brzegowe walca na współrzedne.
Parametry:
↔ dx,dy,dz – Współrzędne, które mają być przetransformowane
Uwaga:
W razie, gdy walec ∗nie∗ jest de facto periodyczny, zgłasza Assert.
Dla walca warunki periodyczne obowiązują tylko wzdłuż jednej osi.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.4 Dokumentacja klasy cylinder shape
35
Implementuje shape (str. 63).
Definicja w linii 410 pliku geometry shapes.cpp.
Odwołuje się do cylinder shape::m height i cylinder shape::m orientation.
7.4.1.8
void move by (Framework::Maths::Vect3d offset) [virtual]
Przesuwa walec o wektor.
Parametry:
offset – Wektor o który walec ma być przesunięty
Reimplementowana z shape (str. 63).
Definicja w linii 399 pliku geometry shapes.cpp.
7.4.1.9
double relative distance of (const Framework::Maths::Vect3d & pos,
const geometry & geom) const [virtual]
Zwraca względną ”odległość” między punktem a osią walca. Zakres zmienności tej ”odległości” jest: od 0 (punkt na osi), przez 1 (punkt na powierzchni bocznej), do >1 (punkt spoza
regionu)
Parametry:
← pos – położenie punktu na scenie (czyli w GLOBALNYM ukladzie)
← geom – geometria, w której pracujemy (zależy od niej dist from axis)
Implementuje shape (str. 63).
Definicja w linii 508 pliku geometry shapes.cpp.
Odwołuje się do cylinder shape::dist from axis().
Oto graf wywołań dla tej funkcji:
relative_distance_of
7.4.1.10
dist_from_axis
Geometry::geometry::scene_dist
Geometry::geometry::get_scene_dxdydz
double volume () const [virtual]
Zwraca objętość walca.
Implementuje shape (str. 63).
Definicja w linii 424 pliku geometry shapes.cpp.
Odwołuje się do cylinder shape::m height i cylinder shape::m radius.
Dokumentacja dla tej klasy została wygenerowana na podstawie plików:
geometry shapes.h
geometry shapes.cpp
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
36
7.5
nanoTB: Dokumentacja klas
Dokumentacja klasy EBadOrbital
Błąd 004: Próba użycia orbitala spoza aktualnie używanej bazy orbitali.
#include <exceptions.h>
Metody publiczne
EBadOrbital (const Basis set::orbital o)
7.5.1
Opis szczegółowy
Próba użycia orbitala spoza aktualnie używanej bazy orbitali, np. orbitala d xy podczas
pracy w modelu sp3. Błąd wewnętrzny programu.
Definicja w linii 55 pliku exceptions.h.
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.6 Dokumentacja klasy EBadOrbitalCount
7.6
37
Dokumentacja klasy EBadOrbitalCount
Błąd 003: Nieobsługiwana liczba orbitali w pliku z parametrami NRL-TB.
#include <exceptions.h>
Metody publiczne
EBadOrbitalCount (const int norbitals)
7.6.1
Opis szczegółowy
Plik z parametrami NRL-TB zawiera liczbę orbitali inną niż 4 i 9. W tej chwili pracujemy
tylko w modelach sp3 (4 orbitale) i sp3d5 (9 orbitali).
Definicja w linii 39 pliku exceptions.h.
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
38
7.7
nanoTB: Dokumentacja klas
Dokumentacja klasy EBadSCFModel
Błąd 012: Nierozpoznana opcja opisująca samouzgodnienie w pliku konfiguracyjnym.
#include <exceptions.h>
Metody publiczne
EBadSCFModel (const std::string what)
7.7.1
Opis szczegółowy
Nierozpoznana opcja opisująca samouzgodnienie w pliku konfiguracyjnym. Dopuszczalne
wartości to NONE, HUBBARD i ELSTNER.
Definicja w linii 156 pliku exceptions.h.
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.8 Dokumentacja klasy EChemicalPotentialConvergenceFailure
7.8
Dokumentacja
klasy
ConvergenceFailure
39
EChemicalPotential-
Błąd 007: Nie osiągnięto zbieżności podczas wyznaczania potencjału chemicznego.
#include <exceptions.h>
7.8.1
Opis szczegółowy
Nie osiągnięto zbieżności podczas wyznaczania potencjału chemicznego
Definicja w linii 87 pliku exceptions.h.
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
40
7.9
nanoTB: Dokumentacja klas
Dokumentacja klasy EFailedToDeterminePhysicalRanges
Błąd 008: Nie udało się wyznaczenie najmniejszej odległości międzyatomowej, dla której
całki nakładania zachowują sens fizyczny.
#include <exceptions.h>
Metody publiczne
EFailedToDeterminePhysicalRanges (double r)
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.10 Dokumentacja klasy ENegativeEnergy
7.10
41
Dokumentacja klasy ENegativeEnergy
Błąd 015: Wykryto ujemną energię jednego z atomów.
#include <exceptions.h>
Metody publiczne
ENegativeEnergy (int n, double En)
7.10.1
Opis szczegółowy
Wykryto ujemną energię jednego z atomów.
Uwaga:
Ten wyjątek jest wyłączony, bo dopuszczalne są ujemne energie atomowe
Definicja w linii 188 pliku exceptions.h.
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
42
7.11
nanoTB: Dokumentacja klas
Dokumentacja klasy EOnlyMonatomicsSupported
Błąd 002: Plik z parametrami NRL-TB zawiera więcej niż jeden typ atomów.
#include <exceptions.h>
Metody publiczne
EOnlyMonatomicsSupported (const int natoms)
7.11.1
Opis szczegółowy
Plik z parametrami NRL-TB zawiera wiecej niż jeden typ atomów. W tej chwili pracujemy
tylko z układami monoatomowymi.
Definicja w linii 26 pliku exceptions.h.
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.12 Dokumentacja klasy EOpenShellNotSupported
7.12
Dokumentacja klasy EOpenShellNotSupported
Błąd 006: Układy otwartopowłokowe nie są obsługiwane.
#include <exceptions.h>
Metody publiczne
EOpenShellNotSupported (unsigned int Ne, unsigned int Natoms)
7.12.1
43
Opis szczegółowy
Układy otwartopowłokowe nie są obsługiwane
Definicja w linii 76 pliku exceptions.h.
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
44
7.13
nanoTB: Dokumentacja klas
Dokumentacja klasy EOutOfScene
Błąd 014: Jeden z atomów opuścił scene symulacji a nie ma periodycznych warunków brzegowych.
#include <exceptions.h>
Metody publiczne
EOutOfScene (unsigned int d, unsigned int i, double pos, double newpos)
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.14 Dokumentacja klasy EOverlapMatrixUnphysical
7.14
45
Dokumentacja klasy EOverlapMatrixUnphysical
Błąd 011: Jeden z elementów off-site macierzy nakładania przyjął wartość spoza (-1,1).
#include <exceptions.h>
Metody publiczne
EOverlapMatrixUnphysical (unsigned int I, unsigned int J, unsigned int i, unsigned
int j, unsigned int alpha, unsigned int beta, double elem)
7.14.1
Opis szczegółowy
Jeden z elementów off-site macierzy nakładania przyjął wartość spoza (-1,1). Oznacza to, że
układ stracił sens fizyczny w sensie Ref. (P2), p. 10
Definicja w linii 137 pliku exceptions.h.
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
46
7.15
nanoTB: Dokumentacja klas
Dokumentacja
Supported
klasy
EParamFileStyleNot-
Błąd 001: Plik z parametrami NRL-TB ma nierozpoznany format.
#include <exceptions.h>
Metody publiczne
EParamFileStyleNotSupported (const std::string which)
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.16 Dokumentacja klasy ESCFConvergenceFailure
7.16
47
Dokumentacja klasy ESCFConvergenceFailure
Błąd 013: Nie osiągnięto samouzgodnienia ładunku.
#include <exceptions.h>
Metody publiczne
ESCFConvergenceFailure (int scf type)
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
48
7.17
nanoTB: Dokumentacja klas
Dokumentacja klasy ETwoCenterOverlapIntegralUnphysical
Błąd 010: Jedna z całek dwucentrowych przyjęła wartość spoza (-1,1).
#include <exceptions.h>
Metody publiczne
ETwoCenterOverlapIntegralUnphysical (unsigned int i, unsigned int j, unsigned
int q, double overlap, double R)
7.17.1
Opis szczegółowy
Jedna z całek dwucentrowych przyjęła wartość spoza (-1,1) Oznacza to, że układ stracił sens
fizyczny w sensie Ref. (P2), p.10
Definicja w linii 120 pliku exceptions.h.
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.18 Dokumentacja klasy EUnphysicalDistance
7.18
49
Dokumentacja klasy EUnphysicalDistance
Błąd 009: Wykryto odległość międzyatomowa, która doprowadzi do niefizyczności układu w
sensie Ref. (P2), p. 10.
#include <exceptions.h>
Metody publiczne
EUnphysicalDistance (unsigned int i, unsigned int j, double R, double R min)
Dokumentacja dla tej klasy została wygenerowana na podstawie pliku:
exceptions.h
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
50
7.19
nanoTB: Dokumentacja klas
Dokumentacja klasy geometry
Opisuje geometrię regionu TB i sceny MD, po której region się porusza.
#include <geometry.h>
Metody publiczne
void get dlmn (const unsigned int i, const unsigned int j, double &d, double &l,
double &m, double &n) const
Oblicza odległość i kosinusy kierunkowe dla dwóch atomów.
void get scene dxdydz (const Framework::Maths::Vect3d &p1, const Framework::Maths::Vect3d &p2, double &dx, double &dy, double &dz) const
Oblicza składowe odległości między punktami ∗na scenie∗.
Framework::Maths::Vect3d reduce location (const Framework::Maths::Vect3d pos)
const
To tak naprawde naklada periodycznosc sceny na wsp-ne, poprzednie tylko na skladowe
odleglosci.
double scene dist (const Framework::Maths::Vect3d
work::Maths::Vect3d &p2) const
&p1,
const
Frame-
Oblicza odległość między punktami ∗sceny∗.
geometry ()
Konstruktor.
void initialize (const unsigned int Natoms)
void quick setup (const nano ∗const Michal)
Ustawia region TB na taki, który pokrywa się ze sceną MD i nie jest periodyczny.
void set region (int requested region shape)
Ustawia kształt regionu na zadany.
void set scene (std::vector< double > &requested scene, bool is periodic)
Ustawia scenę na żądaną.
Atrybuty publiczne
shape ∗ region
Geometria regionu TB.
box shape scene box
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.19 Dokumentacja klasy geometry
51
Scena MD, po której porusza się region.
Dane układu
Wektory zawierające stan układu: położenia, prędkości, przyspieszenia, masy, energie
wszystkich atomów. Są one ekstrahowane z tablic nano Michała.
Wszystkie te wektory są traktowane konstruktorem ’do-nothing’, a dopiero potem alokowane przez make new().
Framework::Maths::simple vector< Framework::Maths::Vect3d > Acc
Przyspieszenia atomów.
Framework::Maths::simple vector< Framework::Maths::Vect3d > Acc 1
@ prowizorka na potrzeby debugu
Framework::Maths::simple vector< Framework::Maths::Vect3d > Acc 2
@ prowizorka na potrzeby debugu
Framework::Maths::simple vector< double > Mass
Masy atomów.
Framework::Maths::simple vector< Framework::Maths::Vect3d > Pos
Położenia atomów.
Framework::Maths::simple vector< double > PotEng
Energie potencjalne atomów.
Framework::Maths::simple vector< Framework::Maths::Vect3d > Vel
Prędkości atomów.
Dane układu
Wektory zawierające stan układu: położenia, prędkości, przyspieszenia, masy, energie
wszystkich atomów. Są one ekstrahowane z tablic nano Michała.
Wszystkie te wektory są traktowane konstruktorem ’do-nothing’, a dopiero potem alokowane przez make new().
unsigned int Natoms
Metody prywatne
double dist (const Framework::Maths::Vect3d &p1, const Framework::Maths::Vect3d
&p2) const
Oblicza odległość między punktami ∗w regionie∗.
double dist (const unsigned int i, const unsigned int j) const
Oblicza odległość między atomami ∗w regionie∗.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
52
nanoTB: Dokumentacja klas
void get dxdydz (const Framework::Maths::Vect3d &p1, const
work::Maths::Vect3d &p2, double &dx, double &dy, double &dz) const
Frame-
Oblicza składowe odległości między punktami ∗w regionie∗.
void get dxdydz (const unsigned int i, const unsigned int j, double &dx, double &dy,
double &dz) const
Oblicza składowe odległości między atomami w regionie.
void make periodic in region (double &dx, double &dy, double &dz) const
Nakłada periodyczność regionu TB na współrzędne dx, dy, dz.
void make periodic in scene (double &dx, double &dy, double &dz) const
Nakłada periodyczność sceny MD na współrzędne dx, dy, dz.
Klasy i metody zaprzyjaźnione
class TB system::tb system
7.19.1
Dokumentacja konstruktora i destruktora
7.19.1.1
geometry ()
Konstruktor, który tylko tworzy placeholdery na wektory Pos, Vel, etc. i zeruje Natoms i
region.
Definicja w linii 38 pliku geometry.cpp.
7.19.2
Dokumentacja metod
7.19.2.1
double dist (const Framework::Maths::Vect3d & p1, const
Framework::Maths::Vect3d & p2) const [private]
Zwraca odległość kartezjańską między dwoma punktami regionu TB. Jeśli region jest periodyczny, to periodyczność jest uwzględniana. Do obliczania odległości korzysta z get dxdydz()(str. 54).
Parametry:
← p1,p2 – punkty
Zwraca:
– odległość
Definicja w linii 223 pliku geometry.cpp.
Odwołuje się do geometry::get dxdydz().
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.19 Dokumentacja klasy geometry
53
Oto graf wywołań dla tej funkcji:
dist
7.19.2.2
get_dxdydz
double dist (const unsigned int i, const unsigned int j) const
[private]
Zwraca odległość kartezjańską między dwoma atomami regionu TB. Jeśli region jest periodyczny, to periodyczność jest uwzględniana
Parametry:
← i,j – atomy
Zwraca:
– odległość
Definicja w linii 236 pliku geometry.cpp.
Odwołuje się do geometry::Natoms i geometry::Pos.
Odwołania do tego symbolu występują w: geometry::get dlmn().
7.19.2.3
void get dlmn (const unsigned int i, const unsigned int j, double & d,
double & l, double & m, double & n) const
Zwraca odległość kartezjańską i kosinusy kierunkowe wektora między dwoma atomami. Jeśli
region jest periodyczny, to periodyczność jest uwzględniana
Parametry:
← i,j – atomy
→ d – odległość
→ l,m,n – kosinusy kierunkowe
Definicja w linii 250 pliku geometry.cpp.
Odwołuje się do geometry::dist() i geometry::get dxdydz().
Odwołania do tego symbolu występują w: tb system::calculate lookups for().
Oto graf wywołań dla tej funkcji:
dist
get_dlmn
get_dxdydz
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
54
7.19.2.4
nanoTB: Dokumentacja klas
void get dxdydz (const Framework::Maths::Vect3d & p1, const
Framework::Maths::Vect3d & p2, double & dx, double & dy, double
& dz) const [private]
Zwraca składowe wektora łączącego punkty p1 i p2 regionu TB. Jeśli region jest periodyczny,
to periodyczność jest uwzględniana.
Parametry:
← p1,p2 – punkty
→ dx,dy,dz – tu zwracane są składowe wektora
Definicja w linii 193 pliku geometry.cpp.
Odwołuje się do shape::is periodic(), geometry::make periodic in region() i geometry::region.
Oto graf wywołań dla tej funkcji:
Geometry::shape::is_periodic
get_dxdydz
make_periodic_in_region
7.19.2.5
Geometry::shape::make_periodic_in_shape
void get dxdydz (const unsigned int i, const unsigned int j, double &
dx, double & dy, double & dz) const [private]
Zwraca składowe wektora łączącego atomy i j . Jeśli region jest periodyczny, to periodyczność
jest uwzględniana.
Parametry:
← i,j – atomy
→ dx,dy,dz – tu zwracane są składowe wektora
Definicja w linii 209 pliku geometry.cpp.
Odwołuje się do geometry::Natoms i geometry::Pos.
Odwołania do tego symbolu występują w: geometry::dist() i geometry::get dlmn().
7.19.2.6
void get scene dxdydz (const Framework::Maths::Vect3d & p1, const
Framework::Maths::Vect3d & p2, double & dx, double & dy, double
& dz) const
Zwraca składowe wektora łączącego punkty p1 i p2 sceny. Jeśli scena jest periodyczna, to
periodyczność jest uwzględniana.
Parametry:
← p1,p2 – punkty
→ dx,dy,dz – tu zwracane są składowe wektora
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.19 Dokumentacja klasy geometry
55
Definicja w linii 267 pliku geometry.cpp.
Odwołuje się do shape::is periodic(), geometry::make periodic in scene() i geometry::scene box.
Odwołania do tego symbolu występują w: box shape::relative distance of() i geometry::scene dist().
Oto graf wywołań dla tej funkcji:
Geometry::shape::is_periodic
get_scene_dxdydz
make_periodic_in_scene
Geometry::box_shape::Box
Geometry::box_shape::Box2
7.19.2.7
void initialize (const unsigned int Natoms)
Przydziela pamięć, ustawia this->Natoms
Definicja w linii 68 pliku geometry.cpp.
Odwołuje się do geometry::Acc, geometry::Acc 1, geometry::Acc 2, geometry::Mass, geometry::Pos, geometry::PotEng i geometry::Vel.
Odwołania do tego symbolu występują w: tb system::initialize() i tb system::produce diagnostics().
7.19.2.8
void make periodic in region (double & dx, double & dy, double &
dz) const [private]
Narzuca periodyczne warunki brzegowe regionu na współrzędne.
Uwaga:
Gdy region nie jest de facto periodyczny, zgłasza Assert
Definicja w linii 179 pliku geometry.cpp.
Odwołuje się do shape::make periodic in shape() i geometry::region.
Odwołania do tego symbolu występują w: geometry::get dxdydz().
Oto graf wywołań dla tej funkcji:
make_periodic_in_region
Geometry::shape::make_periodic_in_shape
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
56
7.19.2.9
nanoTB: Dokumentacja klas
void make periodic in scene (double & dx, double & dy, double &
dz) const [private]
Narzuca periodyczne warunki brzegowe sceny na współrzędne. Na wyjściu żadna ze współrzędnych nie przekracza połowy długości sceny w danym kierunku.
Parametry:
↔ dx,dy,dz – transformowane współrzędne
Uwaga:
Gdy scena nie jest de facto periodyczna, zgłasza Assert
Definicja w linii 147 pliku geometry.cpp.
Odwołuje się do box shape::Box(), box shape::Box2(), shape::is periodic() i geometry::scene box.
Odwołania do tego symbolu występują w: geometry::get scene dxdydz().
Oto graf wywołań dla tej funkcji:
Geometry::box_shape::Box
make_periodic_in_scene
Geometry::box_shape::Box2
Geometry::shape::is_periodic
7.19.2.10
void quick setup (const nano ∗const Michal)
Ustawia geometrię chwilową, której rozmiary są takie same jak sceny MD,
Parametry:
← Michal – stały wskaźnik na stałe nano Michała.
Uwaga:
Origin zostanie sam ustawiony przez init fixed().
Definicja w linii 87 pliku geometry.cpp.
Odwołuje się do shape::info(), box shape::info(), box shape::init fixed(), geometry::region,
geometry::scene box, geometry::set region() i geometry::set scene().
Odwołania do tego symbolu występują w: tb system::produce diagnostics().
Oto graf wywołań dla tej funkcji:
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.19 Dokumentacja klasy geometry
57
Geometry::shape::info
Geometry::box_shape::info
quick_setup
Geometry::box_shape::init_fixed
set_region
set_scene
7.19.2.11
Vect3d reduce location (const Framework::Maths::Vect3d pos) const
Konwertuje polozenie do ’postaci normalnej’, tj. sprowadza je do sceny, jeśli było w scenie
tylko modulo. (make periodic in scene działa dla odległości, nie współrzędnych)
Parametry:
← pos – wejsciowe polozenie, we współrzednych Michała
Zwraca:
wyjsciowe polozenie
Definicja w linii 163 pliku geometry.cpp.
Odwołuje się do box shape::Box(), for all dimensions, box shape::info(), box shape::Max(),
box shape::Min() i geometry::scene box.
Odwołania do tego symbolu
tb2md::calculate forces().
występują
w:
tb2md::assign atoms to region()
i
Oto graf wywołań dla tej funkcji:
Geometry::box_shape::Box
Geometry::box_shape::info
reduce_location
Geometry::box_shape::Max
Geometry::box_shape::Min
7.19.2.12
double scene dist (const Framework::Maths::Vect3d & p1, const
Framework::Maths::Vect3d & p2) const
Zwraca odległość kartezjańską między dwoma punktami sceny. Jeśli scena jest periodyczna,
to periodyczność jest uwzględniana
Parametry:
← p1,p2 – punkty
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
58
nanoTB: Dokumentacja klas
Zwraca:
– odległość
Definicja w linii 280 pliku geometry.cpp.
Odwołuje się do geometry::get scene dxdydz().
Odwołania do tego symbolu występują w: cylinder shape::dist from axis(), sphere shape::dist from center() i box shape::gather distances and indices().
Oto graf wywołań dla tej funkcji:
Geometry::shape::is_periodic
scene_dist
get_scene_dxdydz
Geometry::box_shape::Box
make_periodic_in_scene
Geometry::box_shape::Box2
7.19.2.13
void set region (int requested region shape)
Ustawia typ regionu na żądany. Metoda ta jedynie przydziela pamięć przez new, używając
odpowiedniego typu (kształtu). Resztę set-upu dla danego kształtu trzeba wykonać innymi
metodami.
Parametry:
← requested region shape – SHA BOX lub SHA CYLINDER
Definicja w linii 124 pliku geometry.cpp.
Odwołuje się do geometry::region.
Odwołania do tego symbolu występują w: geometry::quick setup() i tb system::read params().
7.19.2.14
void set scene (std::vector< double > & requested scene, bool
is periodic)
Ustawia parametry sceny (scene box). Metoda ta jest wołana przez konstruktor klasy tb system po odczytaniu pliku konfiguracyjnego.
Parametry:
← requested scene – wektor sześciu liczb opisujących położenie dwóch przeciwległych
wierzchołków sceny.
← is periodic – true, jeśli scena ma być periodyczna
Definicja w linii 114 pliku geometry.cpp.
Odwołuje się do box shape::init fixed() i geometry::scene box.
Odwołania do tego symbolu występują w: geometry::quick setup() i tb system::read params().
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.19 Dokumentacja klasy geometry
59
Oto graf wywołań dla tej funkcji:
set_scene
Geometry::box_shape::init_fixed
Geometry::box_shape::info
7.19.3
Dokumentacja atrybutów składowych
7.19.3.1
unsigned int Natoms
Dla geometrii, które należą do jakiegoś tb system tu przechowujemy kopię Natoms rodzica.
Dla geometrii nienależących do żadnego tb system (np. chwilowych) tu wpisujemy liczbę
atomów. Musi być public.
Definicja w linii 79 pliku geometry.h.
Odwołania do tego symbolu występują w: geometry::dist(), geometry::get dxdydz() i tb system::set Natoms().
Dokumentacja dla tej klasy została wygenerowana na podstawie plików:
geometry.h
geometry.cpp
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
60
7.20
nanoTB: Dokumentacja klas
Dokumentacja klasy nrl params
Wszystkie parametry specyficzne dla NRL.
#include <nrl params.h>
Metody publiczne
nrl params ()
Konstruktor.
void read params (const std::string filename, unsigned int param file number)
Czyta parametry z pliku.
Atrybuty publiczne
bool initialized
Czy już wczytano parametry?
struct {
int model
int style
} model details
sczegóły modelu
style – Konwencja stosowana przez NRL przy obliczaniu macierzy nakładania (pierwsza
linia pliku konfiguracyjnego)
model – 1 - sp3, 2 - sp3d5 z rozszczepieniem na t2g i eg
double par [param count]
Tablica parametrów.
Statyczne atrybuty publiczne
const unsigned int param count = 103
Liczba parametrów NRL (przy czytaniu z pliku).
7.20.1
Dokumentacja konstruktora i destruktora
7.20.1.1
nrl params ()
no-op konstruktor
Definicja w linii 26 pliku nrl params.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.20 Dokumentacja klasy nrl params
61
7.20.2
Dokumentacja metod
7.20.2.1
void read params (const std::string filename, unsigned int
param file number)
Metoda czyta parametry NRL-TB z pliku z parametrami zadanego przez filename.
Parametry:
← filename – plik, z którego czytamy
Parametry są czytane sekwencyjnie, po czym następuje konwersja jednostek z tych, które są
używane w NRL do tych, którymi my operujemy (Ry->eV), (a.u.-> Angstroem).
Dosyć idiotoodporna. W razie niepowodzenia zgłasza wyjątek.
Definicja w linii 39 pliku nrl params.cpp.
Odwołuje się do consts::c distance, consts::c energy, NRL params::constants, nrl params::initialized, nrl params::model details i nrl params::par.
Odwołania do tego symbolu występują w: tb system::initialize().
Dokumentacja dla tej klasy została wygenerowana na podstawie plików:
nrl params.h
nrl params.cpp
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
62
7.21
nanoTB: Dokumentacja klas
Dokumentacja klasy shape
Kształt ogólny (abstrakcyjny) regionu.
#include <geometry shapes.h>
Diagram dziedziczenia dla shape
shape
# m_auto
# m_origin
# m_periodic
+ shape()
+ ~shape()
box_shape
- m_Box
- m_Max
- m_Min
- m_Ratios
+ box_shape()
cylinder_shape
- m_height
- m_orientation
- m_radius
sphere_shape
- m_radius
+ sphere_shape()
+ cylinder_shape()
Metody publiczne
— modifiers —
virtual void adjust size (double max dist)=0
Koryguje rozmiary kształtu tak, aby zmieściły się w nim atomy do ”odległości” max dist
włącznie. ”Odległość” jest liczona zgodnie z metryką zależną od konkretnego kształtu,
więc tu metoda jest abstrakcyjna.
virtual void move by (const Framework::Maths::Vect3d offset)
Przesuwa kształt o wektor.
virtual void set auto (bool auto )
Ustawia kształtowi atrybut automatycznego rozmiaru na żądany.
virtual void set origin (const Framework::Maths::Vect3d new origin)
Przesuwa kształt w zadane miejsce.
virtual void set periodic (bool periodic)
Ustawia kształtowi atrybut periodyczności na żądany.
— accessors —
virtual void gather distances and indices (const nano ∗const Michal,
std::vector< std::pair< double, int > > &distances and indices, const geometry
&geom) const =0
Prosi kształt o obliczenie odległości wszystkich atomów ∗sceny MD∗ względem punktu
początkowego regionu, które to odległości wraz z indeksami odpowiadających im atomów
zwraca. Tu: abstrakcyjna.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.21 Dokumentacja klasy shape
63
virtual std::string info () const =0
Zwraca rozmiary kształtu w formie czytelnej dla człowieka, tu: abstrakcyjna.
virtual bool is auto () const
Zwraca true, jeśli kształt może zmieniać rozmiar.
virtual bool is periodic () const
Zwraca true, jeśli kształt jest periodyczny.
virtual void make periodic in shape (double &dx, double &dy, double &dz) const
=0
Nakłada periodyczność kształtu na współrzędne dx, dy, dz. Tu: abstrakcyjna.
virtual const Framework::Maths::Vect3d & origin () const
Zwraca położenie początku (origin) kształtu.
virtual double relative distance of (const Framework::Maths::Vect3d &pos, const
geometry &geom) const =0
Zwraca względną (<0..1>) ”odległość” punktu zadanego w ą pos względem punktu
początkowego. Metryka względem której mierzymy ”odległość” zależy od konkretnego
kształtu, więc tu metoda jest abstrakcyjna.
virtual double volume () const =0
Zwraca objętość kształtu, tu: abstrakcyjna.
virtual int what shape () const
Zwraca ID kształtu, jest przykrywana przez klasy pochodne.
Atrybuty chronione
bool m auto
True, jeśli kształt może zmieniać rozmiar.
Framework::Maths::Vect3d m origin
Położenie początku (origin) kształtu.
bool m periodic
True, jeśli kształt jest periodyczny.
7.21.1
Dokumentacja metod
7.21.1.1
void move by (const Framework::Maths::Vect3d offset) [virtual]
Przesuwa kształt o zadany wektor
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
64
nanoTB: Dokumentacja klas
Parametry:
← offset – Wektor, o ktory ma być przesunięty kształt
Reimplementowana w box shape (str. 26), cylinder shape (str. 35) i sphere shape
(str. 69).
Definicja w linii 46 pliku geometry shapes.cpp.
Odwołuje się do shape::m origin.
Odwołania do tego symbolu występują w: tb system::advance().
7.21.1.2
void set origin (const Framework::Maths::Vect3d new origin)
[virtual]
Ustawia punkt początkowy (origin) kształtu. Co jest punktem początkowym, to już zależy
od konkretnego kształtu.
Definicja w linii 55 pliku geometry shapes.cpp.
Odwołuje się do shape::m origin.
Odwołania do tego symbolu występują w: tb system::advance(), tb system::read params() i
tb system::trace defect().
Dokumentacja dla tej klasy została wygenerowana na podstawie plików:
geometry shapes.h
geometry shapes.cpp
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.22 Dokumentacja klasy sphere shape
7.22
65
Dokumentacja klasy sphere shape
Opisuje obiekt o kształcie kuli. Może opisywać np. region TB. Kula nie może mieć periodycznych warunków brzegowych.
#include <geometry shapes.h>
Diagram dziedziczenia dla sphere shape
shape
# m_auto
# m_origin
# m_periodic
+ shape()
+ ~shape()
sphere_shape
- m_radius
+ sphere_shape()
Metody publiczne
sphere shape ()
Konstruktor kuli o zerowym promieniu.
modifiers
void adjust size (double max dist)
Koryguje rozmiary kuli tak, aby zmieściły się w niej atomy do ”odległości” max dist
włącznie.
void init auto (Framework::Maths::Vect3d requested origin)
Inicjuje kulę o automatycznym rozmiarze zadając położenie środka.
void init fixed (Framework::Maths::Vect3d requested origin, double radius)
Inicjuje kulę o stałym promieniu, zadając położenie środka i promień.
void move by (Framework::Maths::Vect3d offset)
Przesuwa kule o zadany wektor.
modifiers
double dist from center (const Framework::Maths::Vect3d &p1, const geometry
&geom) const
Zwraca odległość punktu p1 od środka kuli.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
66
nanoTB: Dokumentacja klas
void gather distances and indices (const nano ∗const Michal, std::vector<
std::pair< double, int > > &distances and indices, const geometry &geom) const
Prosi kule o obliczenie odległości wszystkich atomów ∗sceny MD∗ względem środka kuli,
które to odległości wraz z indeksami odpowiadających im atomów zwraca.
std::string info () const
Zwraca rozmiary kuli w formie czytelnej dla człowieka.
void make periodic in shape (double &dx, double &dy, double &dz) const
Nakłada periodyczność kształtu na współrzędne dx, dy, dz. Dla kuli pozostaje bez efektu.
double radius () const
Zwraca promień kuli.
double relative distance of (const Framework::Maths::Vect3d &pos, const geometry &geom) const
Zwraca względną (<0..1>) ”odległość” punktu zadanego w pos względem środka kuli, tj.
punkty na osi mają odległość 0, a punkty na brzegach 1.
double volume () const
Zwraca objętość kuli.
int what shape () const
Zwraca SHA SPHERE.
Atrybuty prywatne
double m radius
Promień kuli.
7.22.1
Dokumentacja metod
7.22.1.1
void adjust size (double max dist) [virtual]
Koryguje rozmiary kuli, aby zmieściły się w nim atomy do względnej ”odległości” max dist
włącznie. ”Odległość” jest liczona metryką euklidesową od środka kuli. Korekta następuje
przez zwiększenie promienia.
Implementuje shape (str. 62).
Definicja w linii 667 pliku geometry shapes.cpp.
Odwołuje się do sphere shape::m radius.
7.22.1.2
double dist from center (const Framework::Maths::Vect3d & p1,
const geometry & geom) const
Zwraca odległość kartezjańską między punktem p1 a środkiem kuli. Periodyczność sceny,
jeśli obowiązuje, jest uwzględniana
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.22 Dokumentacja klasy sphere shape
67
Parametry:
← p1 – Położenie punktu
← geom – Geometria, na której pracujemy (zależy od niej scene dist)
Uwaga:
Współrzędne punktu ’p1’ są wyrażone w GLOBALNYM układzie współrzędnych (tym,
który widzi Michał, właściwym dla sceny MD)
Ostrzeżenie:
Nieprzetestowane, prawie żywcem przekopiowane z walca
Definicja w linii 537 pliku geometry shapes.cpp.
Odwołuje się do geometry::scene dist().
Odwołania do tego symbolu występują w: sphere shape::gather distances and indices() i
sphere shape::relative distance of().
Oto graf wywołań dla tej funkcji:
dist_from_center
7.22.1.3
Geometry::geometry::scene_dist
Geometry::geometry::get_scene_dxdydz
void gather distances and indices (const nano ∗const Michal,
std::vector< std::pair< double, int > > & distances and indices,
const geometry & geom) const [virtual]
Dla wszystkich atomów sceny MD (nie regionu!) oblicza ich odległość od środka kuli. worzy
wektor par: odległość : indeks, gdzie indeks jest indeksem danego atomu ’u Michała’. Ten
(posortowany po indeksach) wektor par jest zwracany, a potem go sortują po odległościach
Parametry:
← Michal – stały wskaźnik na stałe nano Michała
← geom – geometria, w której pracujemy (zależy od niej dist from axis)
→ distances and indices – tu zwracany jest wynik
Implementuje shape (str. 62).
Definicja w linii 576 pliku geometry shapes.cpp.
Odwołuje się do sphere shape::dist from center() i for all MD atoms.
Oto graf wywołań dla tej funkcji:
gather_distances_and_indices
dist_from_center
Geometry::geometry::scene_dist
Geometry::geometry::get_scene_dxdydz
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
68
7.22.1.4
nanoTB: Dokumentacja klas
string info () const [virtual]
Zwraca rozmiary kuli w postaci łancucha czytelnego dla człowieka: ”origin: [x1, y1, z1],
radius: r”
Implementuje shape (str. 63).
Definicja w linii 608 pliku geometry shapes.cpp.
Odwołania do tego symbolu występują w: sphere shape::init auto() i sphere shape::init fixed().
7.22.1.5
void init auto (Framework::Maths::Vect3d requested origin)
Kula o ∗zmiennym∗ rozmiarze.
Inicjalizuje kształt kuli, nadając jej punkt początkowy.
Parametry:
← requested origin – punkt, przez który przechodzić ma oś walca. (jedna ze współrzędnych jest nieistotna)
Uwaga:
Wywołanie init(..) nie definiuje jeszcze promienia kuli
Definicja w linii 625 pliku geometry shapes.cpp.
Odwołuje się do sphere shape::info() i sphere shape::m radius.
Odwołania do tego symbolu występują w: tb system::read params().
Oto graf wywołań dla tej funkcji:
init_auto
7.22.1.6
info
void init fixed (Framework::Maths::Vect3d requested origin, double
radius)
Kula o ∗stałym∗ rozmiarze.
Inicjalizuje kształt kuli, nadając mu orientację i punkt początkowy.
Parametry:
← is periodic – true, jeśli walec ma być periodyczny
Definicja w linii 643 pliku geometry shapes.cpp.
Odwołuje się do sphere shape::info() i sphere shape::m radius.
Odwołania do tego symbolu występują w: tb system::read params().
Oto graf wywołań dla tej funkcji:
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.22 Dokumentacja klasy sphere shape
init_fixed
7.22.1.7
69
info
void make periodic in shape (double & dx, double & dy, double &
dz) const [virtual]
Nakłada warunki brzegowe współrzedne. Dla kuli nie robi nic :) (nop)
Parametry:
↔ dx,dy,dz – Współrzędne, które mają być przetransformowane
Implementuje shape (str. 63).
Definicja w linii 555 pliku geometry shapes.cpp.
7.22.1.8
void move by (Framework::Maths::Vect3d offset) [virtual]
Przesuwa kule o wektor.
Parametry:
offset – Wektor o który kula ma być przesunięta
Reimplementowana z shape (str. 63).
Definicja w linii 658 pliku geometry shapes.cpp.
7.22.1.9
double relative distance of (const Framework::Maths::Vect3d & pos,
const geometry & geom) const [virtual]
Zwraca względną ”odległość” między punktem a środkiem kuli. Zakres zmienności tej ”odległości” jest od 0 (punkt w srodku) przez 1 (punkt na powierzchni), do >1 (punkt poza
regionem)
Parametry:
← pos – położenie punktu na scenie (czyli w GLOBALNYM ukladzie)
← geom – geometria, w której pracujemy (zależy od niej dist from axis)
Implementuje shape (str. 63).
Definicja w linii 596 pliku geometry shapes.cpp.
Odwołuje się do sphere shape::dist from center().
Oto graf wywołań dla tej funkcji:
relative_distance_of
dist_from_center
Geometry::geometry::scene_dist
Geometry::geometry::get_scene_dxdydz
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
70
7.22.1.10
nanoTB: Dokumentacja klas
double volume () const [virtual]
Zwraca objętość kuli.
Implementuje shape (str. 63).
Definicja w linii 563 pliku geometry shapes.cpp.
Odwołuje się do sphere shape::m radius.
Dokumentacja dla tej klasy została wygenerowana na podstawie plików:
geometry shapes.h
geometry shapes.cpp
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.23 Dokumentacja klasy tb2md
7.23
71
Dokumentacja klasy tb2md
Interfejs między MD a TB.
#include <tb2md.h>
Metody publiczne
void calculate forces ()
Wykonuje jeden krok. Nasz łącznik z nano.
void initialize ()
Inicjalizer.
void restore tb2md state ()
Odtwarza stan (po ”odtworz” w pliku konfiguracyjnym).
void save tb2md state ()
Zapisuje stan.
tb2md (const nano ∗const Michal, const std::vector< int > param vector)
Konstruktor.
std::string which region contains (int i)
Zwraca identyfikator regionu zawierającego dany atom.
∼tb2md ()
Destruktor.
Atrybuty publiczne
bool is initialized
czy tb2md(str. 71) jest calkowicie zainicjowany
Metody prywatne
void assign atoms to region (const unsigned int r)
Wypełnia region atomami.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
72
nanoTB: Dokumentacja klas
Atrybuty prywatne
const nano ∗ Michal
lokalizacja ’strony Michała’
unsigned int my region
numer regionu danego node’a (∗niezaimplementowane∗)
unsigned int Nregions
liczba regionów TB
const unsigned int Nregions max
górne ograniczenie powyższego
Framework::Maths::simple vector< TB system::tb system ∗ > regions
Tablica regionów (dokładnie rzecz biorąc, wskaźników na regiony).
Klasy i metody zaprzyjaźnione
class TB system::tb system
7.23.1
Opis szczegółowy
Interfejs między MD a TB. Na ogół mamy do czynienia z jednym tylko obiektem klasy tb2md(str. 71), który pełni rolę sterującą całym interfejsem. Interfejs zawiera w sobie
wszystkie regiony TB i zarządza nimi.
Definicja w linii 54 pliku tb2md.h.
7.23.2
Dokumentacja konstruktora i destruktora
7.23.2.1
tb2md (const nano ∗const Michal, const std::vector< int >
param vector)
Konstruktor interfejsu TB2MD(str. 17). Inicjuje wszystkie regiony TB. Liczbę tych regionów wyznacza się na podstawie długości wektora parametrów param vector .
Parametry:
← param vector – zawiera numery plików konfiguracyjnych dla poszczególnych regionów TB.
← Michal – wskaźnik do nano Michała
Na dzień dzisiejszy tworzy tablice regionów (regions), a potem tworzy wszystkie regiony
(new).
Definicja w linii 49 pliku tb2md.cpp.
Odwołuje się do for all regions, tb2md::Nregions, tb2md::Nregions max i tb2md::regions.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.23 Dokumentacja klasy tb2md
7.23.2.2
73
∼tb2md ()
Niszczy intefrejs TB/MD. Zapewnia wywolanie destruktorow dla wszystkich regionów TB,
dzieki czemu zamykaja one po sobie pliki.
Definicja w linii 102 pliku tb2md.cpp.
Odwołuje się do for all regions, tb2md::is initialized i tb2md::regions.
7.23.3
Dokumentacja metod
7.23.3.1
void assign atoms to region (const unsigned int region) [private]
Wypełnia region TB odpowiednimi atomami. Najpierw prosi region o zwrócenie tablicy
zawierającej odległości wszystkich atomów sceny względem punktu początkowego regionu.
Sortuje tę tablice, wybiera pierwsze capacity atomów, kopiując je do wewnątrz regionu. Jeśli
atomów zabraknie (na scenie jest mniej niż capacity), to Natoms danego regionu zostanie
odpowiednio obniżone.
Definicja w linii 239 pliku tb2md.cpp.
Odwołuje się do geometry::Acc, shape::adjust size(), tb system::cross scaling, tb system::current geometry, for all atoms in, shape::gather distances and indices(), shape::is auto(), geometry::Mass, tb2md::Michal, tb system::Natoms, tb system::Nvalence electrons, geometry::Pos, geometry::PotEng, geometry::reduce location(), geometry::region,
tb system::region capacity, tb2md::regions, shape::relative distance of(), tb system::set Natoms(), tb system::TB2MD indices i geometry::Vel.
Odwołania do tego symbolu występują w: tb2md::calculate forces() i tb system::trace defect().
Oto graf wywołań dla tej funkcji:
Geometry::shape::adjust_size
Geometry::shape::gather_distances_and_indices
Geometry::box_shape::Box
Geometry::shape::is_auto
assign_atoms_to_region
Geometry::box_shape::info
Geometry::geometry::reduce_location
Geometry::box_shape::Max
Geometry::shape::relative_distance_of
Geometry::box_shape::Min
TB_system::tb_system::set_Natoms
7.23.3.2
void calculate forces ()
Punkt styku z nanoMD. To ta metoda jest wywoływana w każdym kroku symulacji MD
przez nano::calculate forces TB(), która z kolei jest wołana przez nano::calculate forces().
Kroki wykonywane tutaj:
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
74
nanoTB: Dokumentacja klas
Pętla po wszystkich regionach obejmująca:
1. Stworzenie mapy gestosci na scenie widzianej w kazdym regionie
2. Przypisanie atomów do regionu (ekstrakcja odpowiednich atomów od Michała),
3. Wykonanie kroku TB dla regionu,
4. Dokonywanie mieszania (prymitywny cross-scaling) wyników obliczonych za pomocą TB i MD.
Znany błąd
Występuje offset energii na styku.
Atomy znajdujące się w więcej niż jednym regionie będą miały wpływ MD uwzględniany
wielokrotnie, po czym i tak zostanie zaakceptowany wariant z ostatniego regionu. Na
razie pracujemy z jednym regionem, więc nie ma to większego znaczenia.
Definicja w linii 140 pliku tb2md.cpp.
Odwołuje się do geometry::Acc, tb system::advance(), tb2md::assign atoms to region(),
tb system::cross scaling,
tb system::current geometry,
tb system::debug acc,
tb system::debug indices, tb system::debug mixing, tb system::debug pos, tb system::debug region, tb system::debug vel, tb system::debugs, tb system::energies from MD, for all atoms in, for all dimensions, for all regions, tb2md::Michal, tb system::Natoms,
shape::origin(), tb system::perform step(), geometry::Pos, geometry::PotEng, cylinder shape::radius(), sphere shape::radius(), geometry::reduce location(), geometry::region,
tb system::region capacity, tb system::region velocity, tb2md::regions, shape::relative distance of(), tb system::step, tb system::TB2MD indices, tb system::update density map(), geometry::Vel i TB2MD::weighing function().
Oto graf wywołań dla tej funkcji:
TB_system::tb_system::advance
Geometry::shape::origin
Geometry::geometry::reduce_location
assign_atoms_to_region
Geometry::shape::relative_distance_of
calculate_forces
TB_system::tb_system::perform_step
Geometry::cylinder_shape::radius
Geometry::sphere_shape::radius
TB_system::tb_system::update_density_map
TB2MD::weighing_function
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.23 Dokumentacja klasy tb2md
7.23.3.3
75
void initialize ()
Inicjalizuje interfejs TB/MD. Na dzień dzisiejszy jest ty tylko pętla inicjalizacji regionów
TB.
Definicja w linii 79 pliku tb2md.cpp.
Odwołuje się do for all regions, tb2md::is initialized, tb2md::Michal, tb2md::regions i
tb2md::restore tb2md state().
Oto graf wywołań dla tej funkcji:
initialize
7.23.3.4
restore_tb2md_state
void restore tb2md state ()
Odtwarza stan całego interfejsu (”save/restore”). Na dzisiaj to tylko RDF każdego regionu
(jeśli właczony) i połozenie regionu (jeśli cross-scaling)
Definicja w linii 412 pliku tb2md.cpp.
Odwołuje się do for all regions i tb2md::regions.
Odwołania do tego symbolu występują w: tb2md::initialize().
7.23.3.5
void save tb2md state ()
Zapisuje stan całego interfejsu (”save/restore”). Na dzisiaj to tylko RDF każdego regionu
(jeśli właczony) i połozenie regionu (jeśli cross-scaling)
Definicja w linii 398 pliku tb2md.cpp.
Odwołuje się do for all regions i tb2md::regions.
7.23.3.6
std::string which region contains (int i)
Zwraca łancuch zawierający identyfikator regionu TB, w którym znajduje się i-ty atom.
Jeśli atom nie jest przypisany do żadnego regionu, zwraca ””. Jeśli atom należy do kilku
regionów, wybiera ten, który ma najmniejszy numer.
W tej chwili identyfikatorem regionu jest po prostu jego numer (jako string). Funkcja przeznaczona jest do ’doklejania’ numeru regionu do nazw atomów zapisywanych w wyjściowych
plikach z konfiguracją oraz podczas kontaktów z użytkownikiem. (”atom #i in region #r”)
Parametry:
← i – numer atomu po stronie Michala
Definicja w linii 382 pliku tb2md.cpp.
Odwołuje się do for all regions, tb system::Natoms, tb2md::regions i tb system::TB2MD indices.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
76
nanoTB: Dokumentacja klas
Dokumentacja dla tej klasy została wygenerowana na podstawie plików:
tb2md.h
tb2md.cpp
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
7.24
77
Dokumentacja klasy tb system
Klasa reprezentuje pojedynczy region TB.
#include <tb system.h>
— potencjał chemiczny i rozkład Fermiego —
Uwaga:
Beta musi być zadeklarowane ∗po∗ nrl params, ponieważ w liście inicjalizacyjnej klasy
tb system inicjalizacja bety zależy od nrl params::constants(str. 16)
double calculate chem pot (unsigned int &t)
oblicza potencjał chemiczny
double fermi f (const double z) const
rozkład Fermiego f(z)
double beta
==1/(kT), k==1 w jednostkach atomowych
double chem pot
bieżący potencjał chemiczny
double electronic temp
bieżąca temperatura elektronowa
bool electronic temp is auto
true, jeśli temperatura elektronowa jest ustawiana na żądaną temperaturę układu
double electronic weight min
poziomy energetyczne powyzej tej wagi Fermiego będą ignorowane (zaoszczędza czas)
— RDF —
void calculate RDF (std::string filename)
Oblicza RDF na podstawie obsadzeń.
void clear RDF ()
Zeruje RDF.
void restore RDF state (std::string filename)
Odtwarza stan RDF z pliku.
void save RDF state (std::string filename)
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
78
nanoTB: Dokumentacja klas
Zapisuje stan RDF do pliku.
void step RDF ()
Wykonuje jeden krok RDF (zwiększa obsadzenia powłok).
Framework::Maths::simple vector< double[2]> RDF
Stablicowany RDF, czyli tablica par: (r, RDF(r)).
bool RDF disable
unsigned int rdf equil steps
Liczba kroków równoważenia, wtedy RDF nie pracuje.
const std::string RDF filename
Nazwa pliku wyjściowego dla RDF.
double rdf max
Promień odcięcia RDF.
unsigned int rdf produce every
Co ile krokow obliczac RDF.
Framework::Maths::simple vector< long int > RDF shells
Obsadzenia kolejnych powłok RDF.
unsigned int rdf shells no
Liczba powłok RDF (rozdzielczość RDF).
unsigned int RDF steps
Liczba kroków przez które obliczany był RDF.
long int RDF ticks beyond cutoff
Liczba ticków, które trafiły poza cutoff.
— varia —
void determine physical ranges ()
Wyznacza odległość, zbliżenie atomów poniżej której prowadzi do niefizycznego zachowania.
void make sure if physical (vect3d &v, unsigned int &I, unsigned int &J)
Sprawdza, czy układ nie stał się niefizyczny z powodu zbyt małej odległości międzyatomowej.
void restore region position (std::string filename)
Odtwarza położenie regionu (”save/restore”).
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
79
void save region position (std::string filename)
Zachowuje położenie regionu (”save/restore”).
bool atoms can be ignored
true, jeśli atomy zafiksowane mogą być ignorowane w liczeniu sił
bool atoms were ignored
true, jeśli nie liczono sil dla pewnych atomow, bo byly zafiksowane
bool energies from MD
jeśli true, to energie wszystkich atomów są brane z MD, nie z TB (konieczne do śledzenia
defektu)
double R min
minimalna odległość, zbliżenie się dwóch atomów poniżej której prowadzi do niefizyczności
double total acceleration tolerance
maksymalna tolerancja na calkowite przyspieszenie ukladu (gdy wieksze, krzycz)
— śledzenie defektów, mapa gęstości —
void update density map ()
Uaktualnia mape gestosci sceny.
bool region traces defects
true, jesli region sledzi defekty po energiach, false jesli uniform velocity
Framework::density map scene density map
mapa gęstości
double trace jump tolerance
o tyle maksymalnie może przesunąc się region w jednym kroku
unsigned int trace number
tyle najbardziej energetycznych atomów kandyduje do roli defektu
Metody publiczne
void advance ()
Przesuwa region TB zgodnie z jego prędkością, region velocity[].
void initialize ()
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
80
nanoTB: Dokumentacja klas
Zapewnia tworzenie właściwe regionu TB.
void open debug files ()
Otwiera i ew. formatuje pliki diagnostyczne.
void perform step ()
Wykonuje jeden krok formalizmu TB.
void produce diagnostics (const std::string outfilename, const std::string plot param filename)
Wypluwa informacje diagnostyczne.
const Framework::Maths::square matrix< double > & return hamiltonian ()
const
Zwraca na zewnątrz referencję do hamiltonianu.
const Framework::Maths::square matrix< double > & return overlap () const
Zwraca na zewnątrz referencję do macierzy nakładania.
void set Natoms (unsigned int n)
Ustawia liczbę atomów w regionie, uaktualniając Ne, Natomorbitals i current geometry.Natoms.
tb system (TB2MD::tb2md ∗const parent, unsigned int n)
Przygotowuje do utworzenia regionu TB.
Framework::Maths::Vect3d trace defect ()
Przesuwa region TB tam, gdzie jest defekt (heurystyka).
∼tb system ()
Zamyka pliki diagnostyczne (przydatne na wypadek wyjatku).
Metody prywatne
void assign expected Mulliken charges ()
Przypisuje atomom oczekiwane ładunki Mullikena.
void calculate lookups for (Geometry::geometry &geom)
Wypełnia lookupy dla geometrii geom.
double calculate Mulliken charge for atom (const unsigned int i) const
Oblicza ładunek Mullikena na atomie i.
void read params (const std::string system param filename)
Wczytuje parametry z pliku konfiguracyjnego.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
81
— obliczenia energii i sił —
double calculate energy ()
Oblicza energię układu.
double calculate force for atom (unsigned int k, unsigned int d) const
Oblicza składową w kierunku d siły działającej na atom i od pozostałych atomów.
void determine Nocc ()
Przygotowuje lookupy wag Fermiego, wyznacza Nocc.
void force prepare tables ()
Przygotowuje lookupy potrzebne do obliczenia sił atomowych.
— funkcje wypełniające macierze hamiltona, nakładania i ich pochodne —
void calculate hamiltonian ()
Wypełnia macierz H.
void calculate overlap ()
Wypełnia macierz S.
— zależności odległościowe —
void calculate two center integrals and derivatives (unsigned int i, unsigned
int j)
Oblicza całki dwucentrowe, ich pochodne (we wszystkich kierunkach) i pochodne dwucentrowych całek funkcji nakładania.
double F c (unsigned int i, unsigned int j) const
Funkcja odcięcia, wg NRL.
double two center integral (unsigned int i, unsigned int j, unsigned int q) const
Całka dwucentrowa.
double two center integral derivative (unsigned int i, unsigned int j, unsigned
int q, unsigned int coord) const
Pochodna całki dwucentrowej.
double two center overlap integral (unsigned int i, unsigned int j, unsigned int
q, bool check bounds) const
Dwucentrowa całka nakładania.
double two center overlap integral derivative (unsigned int i, unsigned int j,
unsigned int q, unsigned int coord) const
Pochodna dwucentrowej całki nakładania.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
82
nanoTB: Dokumentacja klas
— elementy macierzowe i ich pochodne —
double offsite derivative matrix element (unsigned int i, unsigned int alpha,
unsigned int j, unsigned int beta, unsigned int k, unsigned int coord, char type, int
CHEATER=0)
Pochodna elementu macierzowego off-site hamiltonianu lub macierzy nakładania.
double offsite matrix element (unsigned int i, unsigned int alpha, unsigned int
j, unsigned int beta, const Framework::Maths::simple vector< double > &two center) const
Element macierzowy off-site hamiltonianu.
double onsite derivative matrix element (unsigned int i, unsigned int alpha,
unsigned int k, unsigned int coord) const
Pochodna elementu macierzowego on-site hamiltonianu.
double onsite matrix element (unsigned int i, unsigned int alpha) const
Element macierzowy on-site hamiltonianu.
Atrybuty prywatne
std::map< std::string, bool > debugs
— interfejs z tb2md —
bool cross scaling
czy włączony cross-scaling, czy tylko zwykłe TB-driven MD robimy
bool just restarted
czy to pierwszy krok po (re)starcie?
TB2MD::tb2md ∗ parent
Wskaźnik do nadrzędnego tb2md (który zawiera ten region).
unsigned int region number
Numer tego regionu.
Framework::Maths::simple vector< int > TB2MD indices
Tablica konwersji indeksów atomowych w regionie TB na te w scenie MD u Michała.
— dane układu —
Basis set::basis set current basis set
Bieżąca baza orbitali.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
83
Geometry::geometry current geometry
Bieżąca geometria układu.
Framework::Maths::square matrix< double > H
Hamiltonian.
Framework::Maths::simple vector< double > H eigenvalues
Wartości własne hamiltonianu.
Framework::Maths::square matrix< double > H eigenvectors
Wektory własne hamiltonianu.
int max step
Żądana liczba kroków symulacji
unsigned int Natomorbitals
Całkowita liczba orbitali (na konkretnych atomach) w regionie TB (”M∗N”). Jest ona
równa rozmiarowi macierzy H i liczbie poziomów energetycznych.
unsigned int Natoms
Liczba atomów w regionie TB (”N”).
unsigned int Ne
Całkowita liczba elektronów walencyjnych w regionie TB, równa Natoms∗Nvalence electrons.
unsigned int Nocc
Liczba poziomów energetycznych, które uwzgledniamy w sumach (wyznaczona przez Fermi cutoff ).
unsigned int Nvalence electrons
Liczba elektronów walencyjnych ∗jednego∗ atomu, równa sumie formal valency occupancies.
NRL params::nrl params params
Bieżące parametry NRL.
unsigned int region capacity
Maksymalna (żądana) liczba atomów w regionie (pojemność regionu). Bieżąca liczba
atomów może być mniejsza (na przykład na scenie jest mniej atomów niż wynosi pojemność regionu).
Framework::Maths::Vect3d region velocity
Prędkość, z jaką porusza się region.
Framework::Maths::square matrix< double > S
Macierz nakładania.
Framework::Maths::square matrix< double > S scratch
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
84
nanoTB: Dokumentacja klas
Kopia macierzy nakładania, niszczona podczas diagonalizacji.
Framework::Maths::square matrix< double > S U
Rozkład Choleskiego macierzy nakładania.
int step
Bieżący krok symulacji.
— strumienie wyjściowe dla potrzeb diagnostycznych —
Framework::better ofstream debug acc
Przyspieszenia atomow w regionie.
Framework::better ofstream debug atomic data
Różne informacje.
Framework::better ofstream debug charge
Ładunki Mullikena poszczególnych atomów
Framework::better ofstream debug energy
Energie poszczególnych atomów.
Framework::better ofstream debug indices
Indeksy w MD atomow regionu TB.
Framework::better ofstream debug mixing
Mieszanie przyspieszen TB i MD, usrednianie.
Framework::better ofstream debug N i
Obsadzenia Alfonso/Wu/Kaxirasa.
Framework::better ofstream debug pos
Polozenia atomow w regionie.
Framework::better ofstream debug region
Polożenie i prędkość regionu TB.
Framework::better ofstream debug tot acc
Przyspieszenie wypadkowe regionu (powinno być bliskie zeru).
Framework::better ofstream debug trace
Tracer defektow.
Framework::better ofstream debug vel
Predkosci atomow w regionie.
— ładunek —
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
85
Uwaga:
Tablice Q i UTQ nie są alokowane gdy samouzgodnienie Hubbarda jest wyłączone
double Elstner factor [4]
vide Elstner et al., PRB 58, vol. 11, p.7267, ”From this we obtain...”
double Hubbard U
Wartość parametru Hubbarda (Hubbard U).
Framework::Maths::simple vector< double > IPR
Inverse Participation Ratios.
double Mulliken added energy
Energia dodana z powodu czynnika Hubbarda.
Framework::Maths::simple vector< double > Mulliken charges
Ładunki Mullikena (q i) wszystkich atomów
Framework::Maths::simple vector< double > Mulliken charges old
Ładunki Mullikena z poprzedniego sub-kroku (przy samouzgodnieniu)
Framework::Maths::simple vector< double > Mulliken expected
Oczekiwane ładunki Mullikena (q0 i) wszystkich atomów.
Framework::Maths::square matrix< double > Q
Czynniki Hubbarda w postaci macierzowej.
unsigned int scf type
Obowiązujące samouzgodnienie: SCF NONE, SCF HUBBARD lub SCF ELSTNER.
Framework::Maths::square matrix< double > UTQ
Tablica pomocnicza Hubbarda.
— lookup tables —
Framework::Maths::simple vector< double > H der ij epsilon S der ij
Framework::Maths::square matrix< double > K cols
Tablica pomocnicza wkładów do siły.
Framework::Maths::square matrix< Framework::Maths::Vect3d > K rows
Tablica pomocnicza wkładów do siły.
Framework::Maths::square matrix< double > Lookup f1
exp(-lambda∧ 2∗R)∗F c(R)
Framework::Maths::square matrix< double > Lookup f2
exp((R-R c)/screen l+5)
Framework::Maths::square matrix< Framework::Maths::Vect3d > Lookup lmn
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
86
nanoTB: Dokumentacja klas
l ij, m ij, n ij (kosinusy kierunkowe)
Framework::Maths::square matrix< Framework::Maths::Vect3d > Lookup lmn2
Kwadraty kosinusów kierunkowych.
Framework::Maths::square matrix< double > Lookup r
Odległości międzyatomowe: r ij,.
Framework::Maths::simple vector< double[6]> Lookup rho
Czynnik zależny od otoczenia ’rho’ i jego potęgi.
Framework::Maths::simple vector< double > two center
TC.
Framework::Maths::simple vector< double > two center derivatives [3]
Pochodne TC.
Framework::Maths::simple vector< double > two center derivatives negated
[3]
Zanegowane pochodne TC.
Framework::Maths::simple vector< double > two center overlap
TC nakładania.
Framework::Maths::simple vector< double > two center overlap derivatives [3]
Pochodne TC nakładania.
Framework::Maths::simple vector< double > two center overlap derivatives negated [3]
Zanegowane pochodne TC nakładania.
Framework::Maths::simple vector< double > weights
Wagi Fermiego kolejnych poziomów.
— zmienne wewnętrzne —
unsigned int Niwork
jw.
unsigned int Nwork
Rozmiary tablic roboczych LAPACKA.
Klasy i metody zaprzyjaźnione
class TB2MD::tb2md
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
87
7.24.1
Dokumentacja konstruktora i destruktora
7.24.1.1
tb system (TB2MD::tb2md ∗const parent, unsigned int n)
Konstruktor dla pojedynczego regionu TB. Wszystkie macierze i wektory są tu tylko nullkonstruowane, alokowane są one dopiero w inicjalizerze nieco potem.
Parametry:
← parent – Wskażnik na ’rodzica’, czyli układ tb2md, którego częscią jest ten tb system(str. 77)
← n – Numer pliku konfiguracyjnego właściwego dla tego regionu TB (i zarazem nr
regionu)
Definicja w linii 49 pliku tb system.cpp.
7.24.2
Dokumentacja metod
7.24.2.1
void advance ()
Je region traces defects == true, to przesuwa region tam, gdzie jest defekt. (szczegoly w
tb system::trace defect(str. 103)).
Je region traces defects == false, to przesuwa punkt początkowy regionu zgodnie z region velocity[]. Krok czasowy potrzebny do wyznaczenia przesunięcia wynosi
parent->Michal->deltaT.
Pilnuje ew. periodycznych warunków brzegowych sceny. Jeśli środek regionu wychodzi poza
scene i są PBC, to wkłada go z drugiej strony sceny. Jeśli nie ma PBC, to kończy program.
Definicja w linii 1001 pliku tb system.cpp.
Odwołuje się do box shape::Box(), for all dimensions, box shape::info(), shape::is periodic(), box shape::Max(), tb2md::Michal, box shape::Min(), shape::move by(), tb system::Natoms, shape::origin(), tb system::parent, geometry::region, tb system::region number, tb system::region velocity, shape::set origin() i tb system::trace defect().
Odwołania do tego symbolu występują w: tb2md::calculate forces().
Oto graf wywołań dla tej funkcji:
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
88
nanoTB: Dokumentacja klas
Geometry::box_shape::Box
Geometry::box_shape::info
Geometry::shape::is_periodic
Geometry::box_shape::Max
advance
Geometry::box_shape::Min
Geometry::shape::move_by
Geometry::shape::origin
trace_defect
TB2MD::tb2md::assign_atoms_to_region
Geometry::shape::set_origin
7.24.2.2
void assign expected Mulliken charges () [private]
Oblicza oczekiwany ładunek Mullikena (q0 i) dla wszystkich atomów. Zakładamy, przynajmniej na razie, że oczekiwany ładunek jest taki sam, jak formal valence occupancy, czyli
liczba elektronów walencyjnych. Obliczone ładunki są zapisywane do Mulliken expected[].
Definicja w linii 709 pliku tb system.cpp.
Odwołania do tego symbolu występują w: tb system::initialize().
7.24.2.3
double calculate chem pot (unsigned int & t) [private]
Oblicza potencjał chemiczny (µ). Potencjał chemiczny jest określony przez zależność norPwszystkie poziomy
f (εn − µ) = Ne , gdzie Ne jest liczbą elektronów w układzie,
malizacyjną: n
a εn jest energią n-tego poziomu energetycznego odpowiadającego.
To równanie nie może być rozwiązane analitycznie, rozwiązujemy je zgadując wartości µ w
sposób podobny do bisekcji.
Parametry:
→ t – liczba kroków, która była potrzebna do znalezienia rozwiązania, dla potrzeb
diagnostycznych.
Zwraca:
– znależiony potencjał chemiczny, µ.
Uwaga:
Żądana dokładność bezwzględna wyniku jest zawarta w zmiennej epsilon, i wynosi 10 −8 .
W razie nieosiągnięcia zbieżności w ciągu max ticks == 250 kroków zgłasza wyjątek.
Definicja w linii 781 pliku tb system.cpp.
Odwołania do tego symbolu występują w: tb system::perform step().
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
7.24.2.4
89
double calculate energy () [private]
Oblicza całkowitą energię elektronową na podstawie poziomów energetycznych. Przyjmujemy ważenie za pomocą rozkładu Fermiego.
Uwaga:
Zakładamy, że w H eigenvalues[] mamy εi , a w chem pot mamy obliczony potencjał
chemiczny.
Zwraca:
Pall
Eband = 2 ∗ n f (εn − µ)εn
Definicja w linii 954 pliku tb system.cpp.
Odwołuje się do
system::weights.
for all occupied energy levels in,
tb system::H eigenvalues
i
tb -
Odwołania do tego symbolu występują w: tb system::perform step().
7.24.2.5
void calculate hamiltonian () [private]
Wypełnia macierz Hamiltona.
Uwaga:
Zakładamy, że lookup’y są już wypełnione.
Jeśli włączone jest samouzgodnienie Hubbarda, to uwzględnia w hamiltonianie człony
”Hubbard U”
Definicja w linii 37 pliku nrl HS.cpp.
Odwołuje się do tb system::beta, tb system::current basis set, tb system::current geometry, for all atoms in, for all half matrix elements in, for all interactions in, for all orbitals in, tb system::H, tb system::Hubbard U, tb system::Mulliken added energy,
tb system::Mulliken charges, tb system::Mulliken expected, basis set::Norbitals, tb system::offsite matrix element(), tb system::onsite matrix element(), tb system::Q, tb system::S U, tb system::scf type, tb system::two center, tb system::two center integral() i
tb system::UTQ.
Odwołania do tego symbolu występują w: tb system::perform step().
Oto graf wywołań dla tej funkcji:
offsite_matrix_element
calculate_hamiltonian
onsite_matrix_element
two_center_integral
F_c
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
90
7.24.2.6
nanoTB: Dokumentacja klas
void calculate lookups for (Geometry::geometry & geom) [private]
Oblicza dla wszystkich par atomowych ich odległości, kosinusy kierunkowe, ich kwadraty i
zapisuje je do lookupów. Przelicza również czynnik zależny od otoczenia ’rho’ dla wszystkich
atomów i zapisuje go, wraz z jego potęgami do lookupów. Przelicza również pomocnicze
czynniki ’f1’ i ’f2’ i zachowuje. Wszystkie te wielkości obliczane są dla geometrii geom.
Parametry:
← geom – Geometria, na której pracujemy Reference: notebook
Uwaga:
W przypadku, gdy rho == 0.0 (dwa atomy daleko od siebie) powstaje problem z rho ∧ (1/3) == inf. Naprawde dla odległych atomów powinno być rho == (prawie) 0.0, wtedy
rho∧ (-1/3) == bardzo dużo, po czym ta ogromna liczba i tak powinna znikać, bo jest
mnożona przez 0.0 z F c()(str. 93). Wobec tego rho == 0.0 jest zastępowane infinitezymalnie mała liczbą, żeby rho∧ (-1/3) wyszło kulturalne.
Definicja w linii 460 pliku tb system.cpp.
Odwołuje się do tb system::F c(), for all atomic pairs in, for all atoms in, for all dimensions, geometry::get dlmn(), tb system::Lookup f1, tb system::Lookup f2, tb system::Lookup lmn, tb system::Lookup lmn2, tb system::Lookup r, tb system::Lookup rho, nrl params::par i tb system::params.
Odwołania do tego symbolu występują w: tb system::perform step() i tb system::produce diagnostics().
Oto graf wywołań dla tej funkcji:
F_c
calculate_lookups_for
Geometry::geometry::dist
Geometry::geometry::get_dlmn
Geometry::geometry::get_dxdydz
7.24.2.7
double calculate Mulliken charge for atom (const unsigned int i)
const [private]
Oblicza ładunek Mullikena na atomie i.
Uwaga:
Zakłada, że jesteśmy po diagonalizacji i w H siedzą wektory własne, nie hamiltonian.
Spodziewa się również wartości własnych w H eigenvalues i potencjału chemicznego w
chem pot.
Parametry:
← i – numer atomu
Zwraca:
– ładunek Mullikena na atomie i: qi Reference: Helsinki, Lecture 5, p. 11, 12 Reference:
Elstner et al., PRB 58, 11 (1998), p. 7264, po przyjęciu składowych wektora własnego,
które sa rzeczywiste (w sensie nie-zespolone)
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
91
Definicja w linii 650 pliku tb system.cpp.
Odwołuje się do for all occupied energy levels in.
Odwołania do tego symbolu występują w: tb system::perform step().
7.24.2.8
void calculate overlap () [private]
Wypełnia macierz nakładania.
Uwaga:
Zakładamy, że lookup’y są już wypełnione.
Definicja w linii 127 pliku nrl HS.cpp.
Odwołuje się do tb system::beta, tb system::current basis set, tb system::current geometry,
for all atoms in, for all half matrix elements in, for all interactions in, for all orbitals in,
basis set::Norbitals, tb system::offsite matrix element(), tb system::S, tb system::two center
i tb system::two center overlap integral().
Odwołania do tego symbolu występują w: tb system::perform step().
Oto graf wywołań dla tej funkcji:
offsite_matrix_element
calculate_overlap
two_center_overlap_integral
7.24.2.9
F_c
void calculate RDF (std::string filename) [private]
Oblicza sam RDF na podstawie obsadzeń powłok RDF. Zapisuje wyniki do pliku, którego
nazwę określa filename, w formacie kompatybilnym z DL POLY.
Uwaga:
Na razie nazwy atomów zapisywane są jako ”Xx”
Definicja w linii 83 pliku rdf.cpp.
Odwołuje się do tb system::current geometry, tb system::Natoms, tb system::RDF, tb system::rdf max, tb system::RDF shells, tb system::RDF steps, tb system::RDF ticks beyond cutoff i geometry::region.
Odwołania do tego symbolu występują w: tb system::perform step().
7.24.2.10
void clear RDF () [private]
Zeruje RDF
Definicja w linii 27 pliku rdf.cpp.
Odwołuje się do tb system::RDF shells, tb system::RDF steps i tb system::RDF ticks beyond cutoff.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
92
nanoTB: Dokumentacja klas
Odwołania do tego symbolu występują w: tb system::initialize().
7.24.2.11
void determine Nocc () [private]
Wypełnia lookupy weights[n], które przechowują wagi Fermiego dla obsadzonych poziomów
energetycznych. Wyznacza Nocc, czyli liczbe obsadzonych poziomów, uwzględniającą odcięcie zadane w pliku konfiguracyjnych (normalnie rzędu 1e-8). Poziomy, których wagi Fermiego
są mniejsze niż to odcięcie nie są uwzględniane przy sumowaniu
Definicja w linii 973 pliku tb system.cpp.
Odwołuje się do tb system::chem pot, tb system::fermi f(), for all energy levels in, tb system::H eigenvalues, tb system::Nocc i tb system::weights.
Odwołania do tego symbolu występują w: tb system::perform step().
Oto graf wywołań dla tej funkcji:
determine_Nocc
7.24.2.12
fermi_f
void determine physical ranges () [private]
Wyznacza najmniejszą odległość międzyatomową, poniżej której układ staje się niefizyczny
(R min). Niefizyczność układu pojawia się, gdy któraś z dwucentrowych całek nakładania
przyjmie wartość spoza (-1,1). Naturalnie fakt, że całki nakładania są w przepisowym zakresie niczego jeszcze nie gwarantuje, ale pogwałcenie tego daje nam pewność, że układ przestał
mieć sens fizyczny.
Metoda ta jest wywoływana przed rozpoczęciem symulacji i pozwala ustalić R min. Podczas
samej symulacji za pomocą make sure if physical(...) sprawdzamy, czy atomy nie zbliżyły
się za bardzo.
Reference: ”The Slater-Koster Tight-Binding Method: A Computationally Efficiend and
Accurate Approach”, unpublished. (P2), p. 10
Procedura postępowania jest taka, że tworzymy chwilową geometrię zawierającą tylko dwa
atomy, w odległości 20 A i zbliżamy je co 0.01 A, sprawdzając wartości wszystkich dwucentrowych całek nakładania. Gdy tylko któraś przyjmie wartość spoza (-1,1), kończymy.
Trzeba trochę zachodu z tworzeniem chwilowej geometrii, ale tak jest skonstruowany system
lookupów – to cena, jaką trzeba zapłacić za ogólność.
Uwaga:
Istotne jest, że ta chwilowa geometria jest nieperiodyczna – taka jest konstruowana
domyślnie i o taką nam chodzi. Rozmiary domyślnej geometrii są (0,0,0), ale to w tym
miejscu nieistotne.
Definicja w linii 864 pliku tb system.cpp.
Odwołuje się do tb system::parent.
Odwołania do tego symbolu występują w: tb system::initialize().
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
7.24.2.13
93
double F c (unsigned int i, unsigned int j) const [private]
Oblicza wartość funkcji odcięcia F c dla odległości między atomami i i j .
Parametry:
← i – Numer pierwszego atomu
← j – Numer drugiego atomu
Zwraca:
Fc (rij )
Uwaga:
Zakłada, że lookup dla ’czynnika f2’ jest wypełniony
Zakłada się, że i>=j, inaczej Assert.
dla i==j zwraca approx(1.0)
Definicja w linii 38 pliku nrl two center.cpp.
Odwołuje się do tb system::Lookup f2, tb system::Lookup r, nrl params::par i tb system::params.
Odwołania do tego symbolu występują w: tb system::calculate lookups for(), tb system::onsite derivative matrix element(),
tb system::two center integral(),
tb system::two center integral derivative(), tb system::two center overlap integral() i tb system::two center overlap integral derivative().
7.24.2.14
double fermi f (const double z) const [private]
Oblicza funkcję Fermiego f(z). Definicja: f (z) =
1
1+exp (βz)
Parametry:
← z – argument funkcji (z)
Zwraca:
– wartość funkcji (f(z))
Definicja w linii 759 pliku tb system.cpp.
Odwołania do tego symbolu występują w: tb system::determine Nocc().
7.24.2.15
void initialize ()
P.o. konstruktora (inicjalizer) dla pojedynczego regionu TB. Jest punktem styku z nano
Michała, wykonuje całą inicjalizację regionu TB.
Uwaga:
Metoda ta jest wywoływana ze środka konstruktora nano::nano(), więc trzeba uważać
aby wykorzystywać tylko te fragmenty nano, które są już zainicjowane. Kolejne kroki,
które są wykonywane:
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
94
nanoTB: Dokumentacja klas
ustalenie liczby kroków i bieżącego kroku symulacji na podstawie tych z nano,
wczytanie pliku z parametrami NRL
wczytanie pliku z parametrami symulacji
inicjalizacja bazy orbitali
inicjalizacja geometrii
ustalenie liczby atomów, orbitali, elektronów walencyjnych
przydzielenie pamięci na najważniejsze struktury
wyzerowanie RDF
przypisanie atomom oczekiwanych ładunków Mullikena
inicjalizacja samouzgodnienia Elstnera (jeśli występuje) – niezaimplementowane
wypisanie informacji diagnostycznych (wykresy całek dwucentrowych)
ustalenie granic fizyczności układu
wypisanie informacji o zajętości pamięci
Definicja w linii 204 pliku tb system.cpp.
Odwołuje się do tb system::assign expected Mulliken charges(), tb system::clear RDF(),
tb system::current basis set, tb system::current geometry, tb system::determine physical ranges(), for all dimensions, tb system::H, tb system::H eigenvalues, tb system::H eigenvectors, geometry::initialize(), basis set::initialize(), tb system::IPR, tb system::K cols,
tb system::K rows, tb system::Lookup f1, tb system::Lookup f2, tb system::Lookup lmn, tb system::Lookup lmn2, tb system::Lookup r, tb system::Lookup rho, box shape::Max(), tb system::max step, tb2md::Michal, box shape::Min(), nrl params::model,
nrl params::model details,
tb system::Mulliken charges, tb system::Mulliken charges old, tb system::Mulliken expected, tb system::Natomorbitals, tb system::Natoms, basis set::Norbital interactions,
tb system::Nvalence electrons,
tb system::open debug files(), nrl params::par, tb system::params, tb system::parent, geometry::PotEng, tb system::produce diagnostics(), tb system::Q, tb system::RDF, tb system::RDF shells,
tb system::rdf shells no,
tb system::read params(),
nrl params::read params(),
tb system::region capacity, tb system::region number, tb system::S, tb system::S scratch,
tb system::S U, geometry::scene box, tb system::scene density map, tb system::scf type,
tb system::set Natoms(), tb system::step, tb system::TB2MD indices, tb system::two tb system::two center derivatives negated,
center,
tb system::two center derivatives,
tb system::two center overlap, tb system::two center overlap derivatives, tb system::two center overlap derivatives negated, tb system::UTQ i tb system::weights.
Oto graf wywołań dla tej funkcji:
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
95
assign_expected_Mulliken_charges
clear_RDF
determine_physical_ranges
Basis_set::basis_set::initialize
Geometry::box_shape::Max
initialize
Geometry::geometry::initialize
Geometry::box_shape::Min
open_debug_files
produce_diagnostics
read_params
NRL_params::nrl_params::read_params
set_Natoms
7.24.2.16
void make sure if physical (vect3d & v, unsigned int & I, unsigned
int & J) [private]
Poszukuje w układzie dwóch najbliższych sobie atomów i sprawdza, czy ta minimalna odległość nie jest mniejsza od najmniejszej dozwolonej, dla której układ jeszcze pozostaje
sensowny fizycznie (R min). Jeżeli tak, zgłasza wyjątek. Poszukuje również najbardziej oddalonych atomów.
Parametry:
→ v – v[0] zawiera minimalną odległość międzyatomową, v[1] maksymalną, v[2] jest
nieużywane.
→ I,J – indeksy najbliższych sobie atomów
Definicja w linii 832 pliku tb system.cpp.
Odwołania do tego symbolu występują w: tb system::perform step().
7.24.2.17
double offsite derivative matrix element (unsigned int i, unsigned
int alpha, unsigned int j, unsigned int beta, unsigned int k, unsigned
int coord, char type, int CHEATER = 0) [private]
Oblicza pochodną macierzowego elementu off-site między atomami i i j , względem współrzędnej coord (0==x, 1==y, 2==z). i!=j.
Parametry:
← i – numer pierwszego atomu
← j – numer drugiego atomu
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
96
nanoTB: Dokumentacja klas
← alpha – numer orbitala na pierwszym atomie
← beta – numer orbitala na drugim atomie
← coord – współrzędna, po której różniczkujemy
← type – ’H’, jeśli liczymy elementy macierzy H, ’S’, jeśli nakładania (różnią się wartościami pochodnej całki dwucentrowej)
← CHEATER – @ prowizorka na potrzeby debugu
Zwraca:
element macierzowy
dHiα,jβ
drcoord
Uwaga:
i!=j. Jeśli tak nie jest, zgłasza Assert
JUZ NIE -> Zakłada się, że lookup dla l, m, n, two center (sic!) i two center derivative
jest wypełniony.
Definicja w linii 531 pliku nrl matrix element formulas.cpp.
Odwołuje się do tb system::current basis set, tb system::Lookup lmn, tb system::Lookup lmn2, tb system::Lookup r, basis set::Norbitals, tb system::offsite matrix element(), tb system::two center derivatives, tb system::two center derivatives negated, tb system::two center overlap derivatives i tb system::two center overlap derivatives negated.
Odwołania do tego symbolu występują w: tb system::force prepare tables().
Oto graf wywołań dla tej funkcji:
offsite_derivative_matrix_element
7.24.2.18
offsite_matrix_element
double offsite matrix element (unsigned int i, unsigned
int alpha, unsigned int j, unsigned int beta, const
Framework::Maths::simple vector< double > & two center) const
[private]
Oblicza macierzowy off-site element H, między atomami i, j .
Parametry:
← i numer pierwszego atomu
← j numer drugiego atomu
← alpha numer orbitala na pierwszym atomie
← beta numer orbitala na drugim atomie
← two center obliczone wcześniej całki dwucentrowe dla tej pary atomow, zeby nie
liczyć ich wielokrotnie. Przekazanie w tym miejscu ∗pochodnych∗ całek dwucentrowych pozwala na liczenie tą funkcją drugiej części (”part 2”) ∗pochodnej∗ macierzowego elementu H.
Zwraca:
element macierzowy Hiα,jβ
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
97
Uwaga:
i!=j. Jeśli tak nie jest, zgłasza Assert
Zakłada się, że lookup dla l, m, n i two center jest wypełniony.
Definicja w linii 99 pliku nrl matrix element formulas.cpp.
Odwołuje się do tb system::current basis set, tb system::Lookup lmn, tb system::Lookup lmn2 i basis set::Norbitals.
Odwołania do tego symbolu występują w: tb system::calculate hamiltonian(), tb system::calculate overlap() i tb system::offsite derivative matrix element().
7.24.2.19
double onsite derivative matrix element (unsigned int i, unsigned
int alpha, unsigned int k, unsigned int coord) const [private]
Oblicza pochodną elementu macierzowego on-site dla atomu i i orbitala alpha, względem
współrzędnej coord (0==x, 1==y, 2==z) atomu k .
Parametry:
← i – numer atomu
← alpha – numer orbitala
← coord – współrzędna, po której różniczkujemy
Zwraca:
element macierzowy
dHiα,iα
dcoordk
Uwaga:
i, alpha opisują numer site’u, a k to numer atomu, dla którego liczymy siłę
Zakłada, że lookup’y dla rho, f1 i f2 są wypełnione.
Definicja w linii 439 pliku nrl matrix element formulas.cpp.
Odwołuje się do tb system::current basis set, tb system::F c(), for all atoms in, tb system::Lookup f1, tb system::Lookup f2, tb system::Lookup lmn, tb system::Lookup rho,
tb system::Natoms, basis set::Norbitals, nrl params::par i tb system::params.
Odwołania do tego symbolu występują w: tb system::force prepare tables().
Oto graf wywołań dla tej funkcji:
onsite_derivative_matrix_element
7.24.2.20
F_c
double onsite matrix element (unsigned int i, unsigned int alpha)
const [private]
Oblicza macierzowy on-site element H, dla atomu i i orbitala alpha.
Uwaga:
Zakłada się, że lookup dla rho jest wypełniony.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
98
nanoTB: Dokumentacja klas
Parametry:
← i numer atomu
← alpha numer orbitala
Zwraca:
element macierzowy Hiα,iα
Definicja w linii 49 pliku nrl matrix element formulas.cpp.
Odwołuje się do tb system::current basis set, tb system::Lookup rho, tb system::Natoms,
basis set::Norbitals, nrl params::par i tb system::params.
Odwołania do tego symbolu występują w: tb system::calculate hamiltonian().
7.24.2.21
void open debug files ()
Otwiera pliki diagnostyczne dla bieżącego regionu. Jeżeli odpowiednie opcje w pliku konfiguracyjnym były włączone, pliki debugowe są otwierane (tworzone). W przeciwnym razie
nie są.
Definicja w linii 103 pliku tb system.cpp.
Odwołuje się do tb system::debug acc, tb system::debug atomic data, tb system::debug charge, tb system::debug energy, tb system::debug indices, tb system::debug mixing, tb system::debug N i, tb system::debug pos, tb system::debug region, tb system::debug tot acc, tb system::debug trace, tb system::debug vel i tb system::region number.
Odwołania do tego symbolu występują w: tb system::initialize().
7.24.2.22
void perform step ()
Wykojuje pojedynczy krok TBMD. Kolejno wykonywane czynności obejmują
1. Obliczenie wartości β dla rozkładu Fermiego
2. Sprawdzenie, czy tablice Pos, Acc, PotEng nie zawierają NaN (sanity check)
3. Obliczenie lookupów (odległości, kosinusy kierunkowe, etc.)
4. Sprawdzenie, czy odległości międzyatomowe pozostają w granicach fizycznych
5. Przygotowanie ładunków Mullikena przed pierwszą iteracją samouzgodnienia
6. Obliczenie macierzy nakładania
7. Jeśli obowiązuje samouzgodnienie Hubbarda, to rozkład Choleskiego macierzy S.
8. Obliczenie macierzy hamiltona (z uwzględnieniem ”U Hubbarda”, jeśli włączone)
9. Sprawdzenie, czy macierze H i S nie zawierają NaN (sanity check)
10. Sprawdzenie, czy wszystkie elementy macierzowe S należą do (-1,1)
11. Obliczenie potencjału chemicznego
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
99
12. Obliczenie ładunków Mullikena na wszystkich atomach
13. Obliczenie bieżących ładunków Mullikena (mieszanie właśnie obliczonych z tymi z
poprzedniego kroku)
14. Obliczenie IPR (Inverse Participation Ratio)
15. Sprawdzenie warunku samouzgodnienia i jeśli nie jest spełniony, kolejny przebieg pętli
samouzgodnienia
16. Obliczenie pochodnych macierzy Hamilotna i nakładania.
17. Sprawdzenie, czy macierze H der i S der nie zawierają NaN (sanity check)
18. Obliczenie czynnika γ (Alfonso, Wu, Kaxiras, PRB 59, p. 7746, eq. (5), (6))
19. Obliczenie energii i obsadzeń związanych z wszystkimi atomami
20. Obliczenie E band
21. Obliczenie sił i przyspieszeń
22. Wypisanie informacji diagnostycznych
23. Wykonanie kroku obliczania RDF.
Uwaga:
W tej chwili dosyć rozgrzebane, zawiera kilka elementów eksperymentalnych i diagnostycznych.
if(true) {
Definicja w linii 1157 pliku tb system.cpp.
Odwołuje się do tb system::beta, consts::c Boltzmann k, tb system::calculate chem pot(),
tb system::calculate energy(), tb system::calculate force for atom(), tb system::calculate hamiltonian(), tb system::calculate lookups for(), tb system::calculate Mulliken charge for atom(), tb system::calculate overlap(), tb system::calculate RDF(), tb system::chem pot,
NRL params::constants,
tb system::debug atomic data,
tb system::debug charge, tb system::debug energy, tb system::debug N i, tb system::debug tot acc, tb system::determine Nocc(), tb system::electronic temp, for all atoms in, for all dimensions,
for all half matrix elements in, for all occupied energy levels in, for all orbitals in, tb system::force prepare tables(), tb system::H, tb system::H eigenvalues, tb system::H eigenvectors, tb system::IPR, tb system::just restarted, tb system::make sure if physical(),
tb2md::Michal, tb system::Mulliken added energy, tb system::Mulliken charges, tb system::Mulliken charges old, tb system::Mulliken expected, tb system::Natomorbitals,
tb system::Natoms, tb system::parent, tb system::RDF filename, tb system::rdf produce every, tb system::region number, tb system::S, tb system::S scratch, tb system::S U,
tb system::scene density map, tb system::scf type, tb system::step, tb system::step RDF(),
tb system::total acceleration tolerance i tb system::weights.
Odwołania do tego symbolu występują w: tb2md::calculate forces().
Oto graf wywołań dla tej funkcji:
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
100
nanoTB: Dokumentacja klas
calculate_chem_pot
calculate_energy
calculate_force_for_atom
calculate_hamiltonian
calculate_lookups_for
calculate_Mulliken_charge_for_atom
perform_step
calculate_overlap
calculate_RDF
determine_Nocc
force_prepare_tables
make_sure_if_physical
step_RDF
7.24.2.23
void produce diagnostics (const std::string outfilename, const
std::string plot param filename)
Produkuje informacje diagnostyczne. Na dzień dzisiejszy są to wykresy całek dwucentrowych
które zapisywane są do pliku outfilename. Zakresy, dla których chcemy te całki wykreślać
są wczytywane z pliku plot param filename.
Parametry:
← outfilename – Nazwa pliku, do którego zapisywane są wykresy
← plot param filename – Nazwa pliku, z którego pobierane są zakresy zmienności,
dla których tworzymy wykres.
Definicja w linii 385 pliku tb system.cpp.
Odwołuje się do consts::c distance, consts::c energy, tb system::calculate lookups for(),
NRL params::constants, tb system::current basis set, for all interactions in, tb system::H,
geometry::initialize(), tb2md::Michal, tb system::parent, geometry::Pos, geometry::quick setup(), tb system::two center integral() i tb system::two center overlap integral().
Odwołania do tego symbolu występują w: tb system::initialize().
Oto graf wywołań dla tej funkcji:
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
101
calculate_lookups_for
Geometry::geometry::initialize
produce_diagnostics
Geometry::geometry::quick_setup
two_center_integral
two_center_overlap_integral
7.24.2.24
void read params (const std::string system param filename)
[private]
Czyta parametry z pliku konfiguracyjnego o nazwie system param filename
Parametry:
← system param filename – Nazwa pliku konfiguracyjnego
Uwaga:
Funkcja korzysta z parsera zdefiniowanego w Framework i jest dosyć idiotoodporna. W
razie jakichkolwiek problemów zgłasza wyjątek.
Definicja w linii 36 pliku read params.cpp.
Odwołuje się do tb system::atoms can be ignored, box shape::Box(), tb system::cross scaling, tb system::current geometry, tb system::electronic temp, tb system::electronic temp is auto, tb system::electronic weight min, tb system::energies from MD, for all dimensions, tb system::Hubbard U, shape::info(), box shape::info(), box shape::init auto(), sphere shape::init auto(), cylinder shape::init auto(), box shape::init fixed(),
sphere shape::init fixed(), cylinder shape::init fixed(), tb2md::Michal, shape::origin(), tb system::parent, tb system::R min, tb system::RDF disable, tb system::rdf equil steps, tb system::rdf max, tb system::rdf produce every, tb system::rdf shells no, geometry::region,
tb system::region capacity, tb system::region number, tb system::region traces defects,
tb system::region velocity, geometry::scene box, tb system::scf type, shape::set origin(),
geometry::set region(),
geometry::set scene(),
tb system::total acceleration tolerance,
tb system::trace jump tolerance i tb system::trace number.
Odwołania do tego symbolu występują w: tb system::initialize().
Oto graf wywołań dla tej funkcji:
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
102
nanoTB: Dokumentacja klas
Geometry::box_shape::Box
Geometry::shape::info
Geometry::box_shape::init_auto
Geometry::box_shape::info
Geometry::sphere_shape::init_auto
Geometry::sphere_shape::init_fixed
read_params
Geometry::cylinder_shape::init_auto
Geometry::sphere_shape::info
Geometry::cylinder_shape::info
Geometry::cylinder_shape::init_fixed
Geometry::box_shape::init_fixed
Geometry::shape::origin
Geometry::shape::set_origin
Geometry::geometry::set_region
Geometry::geometry::set_scene
7.24.2.25
const Maths::square matrix< double > & return hamiltonian ()
const
Zwraca stałą referencję do macierzy Hamiltona. W tej chwili nieużywane, ale ponieważ macierz H jest prywatna, to gdybyśmy kiedyś interfejsowali nanoTB: z jakimś innym modułem,
będzie jak znalazł.
Definicja w linii 344 pliku tb system.cpp.
7.24.2.26
const Maths::square matrix< double > & return overlap () const
Zwraca stałą referencję do macierzy nakładania. W tej chwili nieużywane, ale ponieważ macierz H jest prywatna, to gdybyśmy kiedyś interfejsowali nanoTB: z jakimś innym modułem,
będzie jak znalazł.
Definicja w linii 354 pliku tb system.cpp.
7.24.2.27
void step RDF () [private]
Zwiększa liczbę atomów w kolejnych powłokach RDF, inkrementuje liczbę kroków Jeśli trwa
równoważenie układu, nic nie robi.
Definicja w linii 39 pliku rdf.cpp.
Odwołuje się do for all atoms in, tb system::Lookup r, tb system::RDF shells, tb system::rdf shells no, tb system::RDF steps, tb system::RDF ticks beyond cutoff i tb system::step.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
103
Odwołania do tego symbolu występują w: tb system::perform step().
7.24.2.28
Vect3d trace defect ()
Wyszukuje defekt przeglądając energie atomów. Bada się trace number atomów o największych energiach, centrując próbnie region na każdym z nich. Następnie oblicza się (ważoną)
energię zawartą w regionie. Wybiera się region, w którym zawarta była największa energia,
po czym sprawdza się czy region nie przesunął się o więcej niż trace jump. Jeśli tak, zgłaszany
jest wyjątek (oznacza to, że albo powstał drugi defekt, albo wyszukiwanie zawiodło).
Uwaga:
Aby ta funkcja miała sens, musi być energies from MD == true, bo inaczej offset energii
psuje sprawe (oraz niedokładnie zdefiniowana energia kazdego atomu w TB)
Ważenie jest dosyć arbitralne – wybrałem wielomian, który daje 1.0 dla środka regionu,
0.0 dla końca regionu i w miarę szybko maleje.
Zwraca:
nowe położenie regionu
Definicja w linii 1053 pliku tb system.cpp.
Odwołuje się do tb2md::assign atoms to region(), tb system::debug trace, tb system::energies from MD, for all atoms in, for all MD atoms, tb2md::Michal, shape::origin(), nrl params::par, tb system::params, tb system::parent, shape::set origin(),
tb system::step i tb system::trace jump tolerance.
Odwołania do tego symbolu występują w: tb system::advance().
Oto graf wywołań dla tej funkcji:
Geometry::shape::adjust_size
Geometry::shape::gather_distances_and_indices
Geometry::box_shape::Box
Geometry::shape::is_auto
TB2MD::tb2md::assign_atoms_to_region
Geometry::box_shape::info
Geometry::geometry::reduce_location
trace_defect
Geometry::shape::origin
Geometry::box_shape::Max
Geometry::shape::relative_distance_of
Geometry::shape::set_origin
Geometry::box_shape::Min
set_Natoms
7.24.2.29
double two center integral (unsigned int i, unsigned int j, unsigned
int q) const [private]
Oblicza ∗∗∗ CAŁKĘ DWUCENTROWĄ ∗∗∗ między atomami i i j , dla oddziaływania między orbitalami (orbitala molekularnego) q. Wartości zwracane przez tę funkcję służą do
wypełniania tablicy two center[].
Parametry:
← i – Numer pierwszego atomu
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
104
nanoTB: Dokumentacja klas
← j – Numer drugiego atomu
← q – Numer oddziaływania między orbitalami (orbitala molekularnego)
Zwraca:
Hq , q ∈ {ssσ, spσ, spπ, · · ·}, – całka dwucentrowa
Uwaga:
Zakłada się, że i>j, inaczej Assert.
Definicja w linii 56 pliku nrl two center.cpp.
Odwołuje się do tb system::current basis set, tb system::F c(), tb system::Lookup r, tb system::Natoms, basis set::Norbital interactions, nrl params::par i tb system::params.
Odwołania do tego symbolu występują w: tb system::calculate hamiltonian(), tb system::calculate two center integrals and derivatives() i tb system::produce diagnostics().
Oto graf wywołań dla tej funkcji:
two_center_integral
7.24.2.30
F_c
double two center integral derivative (unsigned int i, unsigned int j,
unsigned int q, unsigned int coord) const [private]
Oblicza ∗∗∗ POCHODNĄ CAŁKI DWUCENTROWEJ ∗∗∗ między atomami i i j , dla oddziaływania między orbitalami (orbitala molekularnego) q. Różniczkowanie odbywa się po
współrzędnej coord .
W ogólności powinniśmy jeszcze wiedzieć po współrzędnej którego atomu różniczkujemy, tj.
przekazywać jeszcze numer atomu: k . Jeśli jednak k jest różne od i i od j , to wynik jest
zero. Dlatego wystarczy umieć obliczać pochodną po współrzędnej i-tego atomu, a dla j-tego
zanegować wynik (bo cosinus kierunkowy zmienia znak). Vide notebook. (Żeby było jasne
– neguje sobie wywołujący. Negacja, która odbywa się tutaj jest tylko po to, zeby obslużyć
automatycznie przypadki j>i).
Wartości zwracane przez tę funkcję służą do wypełniania tablicy two center derivative[].
Parametry:
← i – Numer pierwszego atomu
← j – Numer drugiego atomu
← q – Numer oddziaływania między orbitalami (orbitala molekularnego)
← coord – Numer współrzędnej, po której różniczkujemy (0==x, 1==y, 2==z).
Zwraca:
dHq
drcoord , q
∈ {ssσ, spσ, spπ, · · ·} – pochodna całki dwucentrowej
Uwaga:
Zakłada się, że i!=j, inaczej Assert. NIE wymaga i>j.
Zakłada się, że lookupy dla l, m, n i f2 są wypełnione. Reference: notebook, p. 3
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
105
Definicja w linii 144 pliku nrl two center.cpp.
Odwołuje się do tb system::current basis set, tb system::F c(), tb system::Lookup f2, tb system::Lookup lmn, tb system::Lookup r, tb system::Natoms, basis set::Norbital interactions, nrl params::par i tb system::params.
Odwołania do tego symbolu występują w: tb system::calculate two center integrals and derivatives().
Oto graf wywołań dla tej funkcji:
two_center_integral_derivative
7.24.2.31
F_c
double two center overlap integral (unsigned int i, unsigned int j,
unsigned int q, bool check bounds) const [private]
Oblicza ∗∗∗ DWUCENTROWĄ CAŁKĘ NAKŁADANIA ∗∗∗ między atomami i i j , dla
oddziaływania między orbitalami (orbitala molekularnego) q. Wartości zwracane przez tę
funkcję służą do wypełniania tablicy two center[].
Parametry:
← i – Numer pierwszego atomu
← j – Numer drugiego atomu
← q – Numer oddziaływania między orbitalami (orbitala molekularnego)
← check bounds – jeśli true, to sprawdza się czy wynik jest nie większy co do modułu
od jeden. Pozwala to wykryć sytuacje niefizyczne. Podanie ’false’(==no bounds checking) pozwala obliczać te całki podczas wyznaczania granic fizyczności układu,
gdzie w naturalny sposób otrzymujemy wartości niefizyczne.
Zwraca:
Sq , q ∈ {ssσ, spσ, spπ, · · ·}, – całka dwucentrowa
Uwaga:
Zakłada się, że i>j, inaczej Assert.
Definicja w linii 90 pliku nrl two center.cpp.
Odwołuje się do tb system::current basis set, Basis set::delta, tb system::F c(), tb system::Lookup r, nrl params::model details, tb system::Natoms, basis set::Norbital interactions, nrl params::par, tb system::params i nrl params::style.
Odwołania do tego symbolu występują w: tb system::calculate overlap(), tb system::calculate two center integrals and derivatives() i tb system::produce diagnostics().
Oto graf wywołań dla tej funkcji:
two_center_overlap_integral
F_c
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
106
7.24.2.32
nanoTB: Dokumentacja klas
double two center overlap integral derivative (unsigned int i,
unsigned int j, unsigned int q, unsigned int coord) const [private]
Oblicza ∗∗∗ POCHODNĄ DWUCENTROWEJ CAŁKI NAKŁADANIA ∗∗∗ między atomami i i j , dla oddziaływania między orbitalami (orbitala molekularnego) q. Różniczkowanie
odbywa się po współrzędnej coord .
W ogólności powinniśmy jeszcze wiedzieć po współrzędnej którego atomu różniczkujemy, tj.
przekazywać jeszcze numer atomu: k . Jeśli jednak k jest różne od i i od j , to wynik jest
zero. Dlatego wystarczy umieć obliczać pochodną po współrzędnej i-tego atomu, a dla j-tego
zanegować wynik (bo cosinus kierunkowy zmienia znak). Vide notebook. (Żeby było jasne
– neguje sobie wywołujący. Negacja, która odbywa się tutaj jest tylko po to, zeby obslużyć
automatycznie przypadki j>i).
Wartości zwracane przez tę funkcję służą do wypełniania tablicy two center derivative[].
Parametry:
← i – Numer pierwszego atomu
← j – Numer drugiego atomu
← q – Numer oddziaływania między orbitalami (orbitala molekularnego)
← coord – Numer współrzędnej, po której różniczkujemy (0==x, 1==y, 2==z).
Zwraca:
dSq
drcoord , q
∈ {ssσ, spσ, spπ, · · ·} – pochodna całki dwucentrowej
Uwaga:
Zakłada się, że i!=j, inaczej Assert. NIE wymaga i>j.
Zakłada się, że lookupy dla l, m, n i f2 są wypełnione. Reference: notebook, p. 3, 4
Definicja w linii 205 pliku nrl two center.cpp.
Odwołuje się do tb system::current basis set, Basis set::delta, tb system::F c(), tb system::Lookup f2, tb system::Lookup lmn, tb system::Lookup r, nrl params::model details, tb system::Natoms, basis set::Norbital interactions, nrl params::par, tb system::params i nrl params::style.
Odwołania do tego symbolu występują w: tb system::calculate two center integrals and derivatives().
Oto graf wywołań dla tej funkcji:
two_center_overlap_integral_derivative
F_c
7.24.3
Dokumentacja atrybutów składowych
7.24.3.1
unsigned int Nwork [private]
Uwaga:
Po diagonalizacji macierz H jest nadpisywana tablicą wektorów własnych Stan ten trwa
aż do wywołania update hamiltonian(), po czym H znów zawiera macierz hamiltona.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
7.24 Dokumentacja klasy tb system
Definicja w linii 218 pliku tb system.h.
7.24.3.2
bool RDF disable [private]
czy nie liczyć rdf? (np. gdy zmienia się liczba atomów)
Definicja w linii 266 pliku tb system.h.
Odwołania do tego symbolu występują w: tb system::read params().
Dokumentacja dla tej klasy została wygenerowana na podstawie plików:
tb system.h
nrl force.cpp
nrl HS.cpp
nrl matrix element formulas.cpp
nrl two center.cpp
rdf.cpp
read params.cpp
tb system.cpp
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
107
108
nanoTB: Dokumentacja klas
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
Rozdział 8
nanoTB: Dokumentacja plików
8.1
Dokumentacja pliku basis set.cpp
Zawiera opis bazy orbitali.
#include "basis set.h"
#include "exceptions.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w basis set.cpp:
string
framework.h
util.h
basis_set.h
exceptions.h
basis_set.cpp
Przestrzenie nazw
namespace Basis set
8.1.1
Opis szczegółowy
Definicja w pliku basis set.cpp.
110
8.2
nanoTB: Dokumentacja plików
Dokumentacja pliku basis set.h
Plik nagłówkowy modułu basis set.cpp(str. 109).
#include <string>
Wykres zależności dla plików nagłówkowych włączanych (#include) w basis set.h:
string
basis_set.h
Poniższy graf pokazuje, które pliki bezpośrednio lub pośrednio zależą od tego pliku:
basis_set.cpp
read_params.cpp
exceptions.h
tb_system.cpp
tb_system.h
basis_set.h
Przestrzenie nazw
namespace Basis set
Zawiera:
class basis set
Opisuje bazę orbitali.
— orbitale —
enum orbital {
s, p x, p y, p z,
d xy, d yz, d zx, d x2 y2,
d 3z2 r2 }
Orbitale.
const unsigned int Norbitals max = 9
9: s, px, py, pz, dxy, dyz, dzx, dx2-y2, d3z2-r2
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.2 Dokumentacja pliku basis set.h
111
const unsigned int orbital counts [ ] = {1,3,3,2}
Ile jest orbitali danego typu (jeden s, trzy p, trzy t 2g, dwa e g).
const std::string orbital names [Norbitals max] = {”s”,”p x”,”p y”,”p z”,”d xy”,”d yz”,”d zx”,”d x2 y2”,”d 3z2 r2”}
Nazwy orbitali.
const unsigned int orbital types count = 4
Liczba typów orbitali. 4: s, p, t 2g, e g.
— interakcje między orbitalami (orbitale molekularne) —
enum orbital interaction {
sssigma, spsigma, ppsigma, pppi,
sdsigma, pdsigma, pdpi, ddsigma,
ddpi, dddelta }
Interakcje między orbitalami (orbitale molekularne).
const unsigned int delta [Norbital interactions max] = {1,0,1,1,0,0,0,1,1,1}
const unsigned int Norbital interactions max = 10
Maksymalna liczba orbitali molekularnych (10: ssσ..ddδ).
const std::string orbital interaction names [Norbital interactions max]
Nazwy orbitali molekularnych.
Makrodefinicje
#define for all interactions in(basis set instance, index variable)
Przebiega zadaną bazę orbitali basis set instance po wszystkich oddziaływaniach orbitalorbital (czyli orbitalach molekularnych, sssigma, spσ, spπ, etc.) zmienną index variable.
#define for all orbitals in(basis set instance, index variable)
Przebiega zadaną bazę orbitali basis set instance po wszystkich orbitalach zmienną index variable.
8.2.1
Opis szczegółowy
Definicja w pliku basis set.h.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
112
nanoTB: Dokumentacja plików
8.2.2
Dokumentacja makrodefinicji
8.2.2.1
#define for all interactions in(basis set instance, index variable)
Wartość:
for(register unsigned int Norbital_interactions_=basis_set_instance.Norbital_interactions, \
index_variable=0; index_variable < Norbital_interactions_; ++index_variable)
Definicja w linii 27 pliku basis set.h.
Odwołania do tego symbolu występują w: tb system::calculate hamiltonian(), tb system::calculate overlap(), tb system::calculate two center integrals and derivatives() i
tb system::produce diagnostics().
8.2.2.2
#define for all orbitals in(basis set instance, index variable)
Wartość:
for(unsigned int Norbitals_=basis_set_instance.Norbitals, index_variable=0; \
index_variable < Norbitals_; ++index_variable)
Definicja w linii 17 pliku basis set.h.
Odwołania do tego symbolu występują w: tb system::calculate hamiltonian(), tb system::calculate overlap(), tb system::force prepare tables() i tb system::perform step().
8.2.3
Dokumentacja zmiennych
8.2.3.1
const unsigned int delta[Norbital interactions max] =
{1,0,1,1,0,0,0,1,1,1}
Delta Kroneckera(l,l’) przeliczona dla wszystkich orbitali molekularnych 1, gdy ’likeorbitals’; 0, gdy ’unlike-orbitals’. (l i l’ – orbitalna liczba kwantowa pierwszego i drugiego
orbitala)
Definicja w linii 85 pliku basis set.h.
Odwołania do tego symbolu występują w: tb system::two center overlap integral() i tb system::two center overlap integral derivative().
8.2.3.2
const std::string orbital interaction names[Norbital interactions max]
Wartość początkowa:
{"ss(sigma)","sp(sigma)","pp(sigma)","pp(pi)","sd(sigma)",
"pd(sigma)","pd(pi)","dd(sigma)","dd(pi)","dd(delta)"}
Definicja w linii 79 pliku basis set.h.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.3 Dokumentacja pliku exceptions.h
8.3
113
Dokumentacja pliku exceptions.h
Plik nagłówkowy definiujący wyjątki występujące w programie.
#include <framework.h>
#include "basis set.h"
#include "util.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w exceptions.h:
string
framework.h
basis_set.h
util.h
exceptions.h
Poniższy graf pokazuje, które pliki bezpośrednio lub pośrednio zależą od tego pliku:
basis_set.cpp
geometry.cpp
geometry_shapes.cpp
nrl_force.cpp
nrl_HS.cpp
nrl_params.cpp
nrl_two_center.cpp
read_params.cpp
tb_system.cpp
exceptions.h
Zawiera:
class E
class EBadOrbital
Błąd 004: Próba użycia orbitala spoza aktualnie używanej bazy orbitali.
class EBadOrbitalCount
Błąd 003: Nieobsługiwana liczba orbitali w pliku z parametrami NRL-TB.
class EBadSCFModel
Błąd 012: Nierozpoznana opcja opisująca samouzgodnienie w pliku konfiguracyjnym.
class EChemicalPotentialConvergenceFailure
Błąd 007: Nie osiągnięto zbieżności podczas wyznaczania potencjału chemicznego.
class EFailedToDeterminePhysicalRanges
Błąd 008: Nie udało się wyznaczenie najmniejszej odległości międzyatomowej, dla której
całki nakładania zachowują sens fizyczny.
class ENegativeEnergy
Błąd 015: Wykryto ujemną energię jednego z atomów.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
114
nanoTB: Dokumentacja plików
class EOnlyMonatomicsSupported
Błąd 002: Plik z parametrami NRL-TB zawiera więcej niż jeden typ atomów.
class EOpenShellNotSupported
Błąd 006: Układy otwartopowłokowe nie są obsługiwane.
class EOutOfScene
Błąd 014: Jeden z atomów opuścił scene symulacji a nie ma periodycznych warunków
brzegowych.
class EOverlapMatrixUnphysical
Błąd 011: Jeden z elementów off-site macierzy nakładania przyjął wartość spoza (-1,1).
class EParamFileStyleNotSupported
Błąd 001: Plik z parametrami NRL-TB ma nierozpoznany format.
class ESCFConvergenceFailure
Błąd 013: Nie osiągnięto samouzgodnienia ładunku.
class ETwoCenterOverlapIntegralUnphysical
Błąd 010: Jedna z całek dwucentrowych przyjęła wartość spoza (-1,1).
class EUnphysicalDistance
Błąd 009: Wykryto odległość międzyatomowa, która doprowadzi do niefizyczności układu
w sensie Ref. (P2), p. 10.
8.3.1
Opis szczegółowy
Definicja w pliku exceptions.h.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.4 Dokumentacja pliku geometry.cpp
8.4
115
Dokumentacja pliku geometry.cpp
Geometria systemu (regionu TB, sceny MD), dane o ukladzie (Pos, Vel, Acc, etc.), obliczenia
geometryczne (odległości, kosinusy kierunkowe, etc.).
#include <cmath>
#include <sstream>
#include <string>
#include <framework.h>
#include "exceptions.h"
#include "geometry.h"
#include "geometry shapes.h"
#include "tb2md.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w geometry.cpp:
framework.h
exceptions.h
cmath
sstream
string
geometry_shapes.h
tb2md.h
geometry.h
geometry.cpp
Przestrzenie nazw
namespace
namespace
namespace
namespace
8.4.1
Framework
Geometry
Maths
std
Opis szczegółowy
Uwaga:
Kształty związane bezpośrednio z geometrią (i należące do przestrzeni nazw Geometry(str. 14)) trafiły do pliku geometry shapes.cpp(str. 118)
Definicja w pliku geometry.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
116
8.5
nanoTB: Dokumentacja plików
Dokumentacja pliku geometry.h
Plik nagłówkowy modułu geometry.cpp(str. 115).
#include <vector>
#include <framework.h>
#include "geometry shapes.h"
#include "../src/cell.h"
#include "../src/nano.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w geometry.h:
vector
framework.h
string
utility
../src/cell.h
../src/nano.h
geometry_shapes.h
geometry.h
Poniższy graf pokazuje, które pliki bezpośrednio lub pośrednio zależą od tego pliku:
tb2md.cpp
geometry.cpp
tb_system.h
geometry_shapes.cpp
geometry.h
Przestrzenie nazw
namespace Geometry
Zawiera:
class geometry
Opisuje geometrię regionu TB i sceny MD, po której region się porusza.
Makrodefinicje
#define for all atomic pairs in(geometry instance)
Przebiega zadaną geometrię po wszystkich parach atomowych (i, j), gdzie i>=j. Bieżące
numery atomów nazywają się i i j.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.5 Dokumentacja pliku geometry.h
117
#define for all atoms in(geometry instance, index variable) for(register unsigned int
Natoms =geometry instance.Natoms, index variable=0; index variable < Natoms ; ++index variable)
Przebiega zadaną geometrię po wszystkich atomach. Nazwa zmiennej identyfikującej bieżący numer atomu zadawana jest w miejsce index variable.
#define for all dimensions for(unsigned int d=0;d<3;++d)
Przebiega po wszystkich wymiarach przestrzennych d, ie. wykonuje
for(unsigned int d=0;d<3;++d) .
8.5.1
Opis szczegółowy
Sczegółowych informacji o module szukaj w geometry.cpp(str. 115)
Definicja w pliku geometry.h.
8.5.2
Dokumentacja makrodefinicji
8.5.2.1
#define for all atomic pairs in(geometry instance)
Wartość:
for(register unsigned int Natoms_=geometry_instance.Natoms, i=0; i < Natoms_; ++i) \
for(register unsigned int j=0; j<=i; ++j)
Definicja w linii 34 pliku geometry.h.
Odwołania do tego symbolu występują w: tb system::calculate lookups for().
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
118
8.6
nanoTB: Dokumentacja plików
Dokumentacja pliku geometry shapes.cpp
Kształty geometryczne (abstrakcyjny – shape, kostka – box shape, walec – cylinder shape i
kula sphere shape).
#include <cmath>
#include <sstream>
#include <string>
#include <framework.h>
#include "exceptions.h"
#include "geometry.h"
#include "geometry shapes.h"
#include "tb2md.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w geometry shapes.cpp:
framework.h
exceptions.h
cmath
sstream
string
geometry_shapes.h
tb2md.h
geometry.h
geometry_shapes.cpp
Przestrzenie nazw
namespace Geometry
8.6.1
Opis szczegółowy
W użyciu mamy więc trzy kształty: SHA CYLINDER, SHA SPHERE i SHA BOX. Pierwszy reprezentuje walec o zadanym promieniu i wysokości, zorientowany wzdłuż jednej z osi
układu współrzędnych (orientation). Periodyczność, jeśli występuje, dla walca jest realizowana tylko wzdłuż osi. SHA SPHERE reprezentuje kulę, bez periodyczności. SHA BOX
reprezentuje prostopadłościan (kostkę, box). Periodyczność, jeśli występuje, dla kostki realizowana jest we wszystkich kierunkach. Więcej szczegółów można znaleźć w podręczniku
użytkownika.
Na razie polega sie na tym, że scena MD ma ksztalt SHA BOX, bo po co niepotrzebnie
uogólniać. Region może mieć wszystkie trzy kształty.
Definicja w pliku geometry shapes.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.7 Dokumentacja pliku geometry shapes.h
8.7
119
Dokumentacja pliku geometry shapes.h
Plik nagłówkowy modułu geometry shapes.cpp(str. 118).
#include <string>
#include <utility>
#include <vector>
#include <framework.h>
#include "../src/cell.h"
#include "../src/nano.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w geometry shapes.h:
string
utility
vector
framework.h
../src/cell.h
../src/nano.h
geometry_shapes.h
Poniższy graf pokazuje, które pliki bezpośrednio lub pośrednio zależą od tego pliku:
tb2md.cpp
geometry.cpp
tb_system.h
geometry_shapes.cpp
geometry.h
geometry_shapes.h
Przestrzenie nazw
namespace Geometry
Zawiera:
class box shape
Opisuje obiekt o kształcie kostki (prostopadłościanu, box). Może opisywać np. region TB
lub scenę MD.
class cylinder shape
Opisuje obiekt o kształcie walca. Może opisywać np. region TB. Periodyczność walca, jeśli
włączona, odnosi się tylko do osi, do której walec jest równoległy.
class shape
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
120
nanoTB: Dokumentacja plików
Kształt ogólny (abstrakcyjny) regionu.
class sphere shape
Opisuje obiekt o kształcie kuli. Może opisywać np. region TB. Kula nie może mieć periodycznych warunków brzegowych.
— aliasy dla orientacji walca —
const
const
const
const
int
int
int
int
ORI
ORI
ORI
ORI
UNDEFINED = -1
X=0
Y=1
Z=2
— aliasy dla kształtów —
const
const
const
const
8.7.1
int
int
int
int
SHA
SHA
SHA
SHA
BOX = 0
CYLINDER = 1
SPHERE = 2
UNDEFINED = -1
Opis szczegółowy
Sczegółowych informacji o module szukaj w geometry shapes.cpp(str. 118)
Definicja w pliku geometry shapes.h.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.8 Dokumentacja pliku nrl force.cpp
8.8
121
Dokumentacja pliku nrl force.cpp
Implementacja NRL-TB – funkcje obliczajace siły działające na poszczególne atomy.
#include <vector>
#include <list>
#include <iostream>
#include <iomanip>
#include <framework.h>
#include "exceptions.h"
#include "tb system.h"
#include "../src/utils.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w nrl force.cpp:
framework.h
vector
list
iostream
iomanip
exceptions.h
tb_system.h
../src/utils.h
nrl_force.cpp
8.8.1
Opis szczegółowy
Funkcje, które się tu znajdują są metodami klasy TB system::tb system(str. 77), ale trzymanie ich w pliku tb system.cpp(str. 136) było niewygodne.
Definicja w pliku nrl force.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
122
8.9
nanoTB: Dokumentacja plików
Dokumentacja pliku nrl HS.cpp
Implementacja NRL-TB – funkcje obliczajace macierze H, S, H der i S der.
#include <framework.h>
#include "exceptions.h"
#include "tb system.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w nrl HS.cpp:
framework.h
util.h
8.9.1
string
basis_set.h
map
exceptions.h
tb_system.h
nrl_HS.cpp
tb2md.h
geometry.h
../src/nano.h
nrl_params.h
Opis szczegółowy
Tu trzymamy funkcje wypełniające:
H – Macierz Hamiltona
S – Macierz nakladania
H der – Macierz pochodnych Hamiltonianu
S der – Macierz pochodnych elementow macierzy nakladania
Funkcje obliczające pojedyncze elementy macierzowe są w nrl matrix element formulas.cpp(str. 123)
Funkcje, które się tu znajdują są metodami klasy TB system::tb system(str. 77), ale trzymanie ich w pliku tb system.cpp(str. 136) było niewygodne.
Definicja w pliku nrl HS.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.10 Dokumentacja pliku nrl matrix element formulas.cpp
8.10
Dokumentacja
formulas.cpp
pliku
123
nrl matrix element -
Implementacja NRL-TB – funkcje obliczające poszczególne elementy macierzowe w H, S,
H der, S der.
#include <framework.h>
#include <iostream>
#include "tb system.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w nrl matrix element formulas.cpp:
framework.h
map
../src/nano.h
geometry.h
nrl_params.h
iostream
tb_system.h
nrl_matrix_element_formulas.cpp
tb2md.h
8.10.1
string
basis_set.h
Opis szczegółowy
Tu trzymamy funkcje obliczające poszczególne elementy macierzowe, czyli
elementy on-site
elementy off-site
pochodne obydwu
Zdefiniowane tu funkcje są częścią klasy TB system::tb system(str. 77), ale trzymanie ich
w tb system.cpp(str. 136) było niewygodne, dlatego trafiły tu.
Zdefiniowane funkcje [dla macierzy H]:
onsite matrix element(...),
offsite matrix element(...),
onsite derivative matrix element(...),
offsite derivative matrix element(...).
Zdefiniowane funkcje [dla macierzy S]:
nie ma onsite matrix element, bo elementy na przekątnej są trywialne,
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
124
nanoTB: Dokumentacja plików
nie ma offsite matrix element, bo mają taką samą postać jak H, tylko tablica, two center integral[] jest inaczej wypełniana (via two center overlap integral),
nie ma onsite derivative matrix element, bo są zero,
nie ma offsite derivative matrix element, bo mają taką samą postać jak H, tylko tablica two center integral derivative[] jest inaczej wypełniana (via two center overlap integral derivative).
Definicja w pliku nrl matrix element formulas.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.11 Dokumentacja pliku nrl params.cpp
8.11
125
Dokumentacja pliku nrl params.cpp
Zagadnienia specyficzne pliku konfiguracyjnego NRL-TB.
#include <cmath>
#include <fstream>
#include <iostream>
#include <string>
#include <framework.h>
#include "exceptions.h"
#include "nrl params.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w nrl params.cpp:
string
fstream
cmath
basis_set.h
nrl_params.h
exceptions.h
util.h
framework.h
iostream
nrl_params.cpp
8.11.1
Opis szczegółowy
Właściwie jest tu tylko metoda czytająca te parametry z pliku.
Definicja w pliku nrl params.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
126
8.12
nanoTB: Dokumentacja plików
Dokumentacja pliku nrl params.h
Plik nagłówkowy modułu nrl params.cpp(str. 125).
#include <fstream>
#include <string>
Wykres zależności dla plików nagłówkowych włączanych (#include) w nrl params.h:
fstream
string
nrl_params.h
Poniższy graf pokazuje, które pliki bezpośrednio lub pośrednio zależą od tego pliku:
tb_system.h
nrl_params.cpp
nrl_params.h
Przestrzenie nazw
namespace NRL params
Zawiera:
struct consts
Przeliczniki pozwalające zamieniać jednostki używane przez NRL na nasze.
class nrl params
Wszystkie parametry specyficzne dla NRL.
Wyliczenia
enum params {
atomic weight, R c, screen l, formal valence s,
formal valence p, formal valence d, lambda, a s,
b s, c s, d s, a p,
b p, c p, d p, a t2g,
b t2g, c t2g, d t2g, a eg,
b eg, c eg, d eg, He sssigma,
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.12 Dokumentacja pliku nrl params.h
127
Hf sssigma, Hg sssigma, Hh sssigma, He spsigma,
Hf spsigma, Hg spsigma, Hh spsigma, He ppsigma,
Hf ppsigma, Hg ppsigma, Hh ppsigma, He pppi,
Hf ppi, Hg pppi, Hh pppi, He sdsigma,
Hf sdsigma, Hg sdsigma, Hh sdsigma, He pdsigma,
Hf pdsigma, Hg pdsigma, Hh pdsigma, He pdpi,
Hf pdpi, Hg pdpi, Hh pdpi, He ddsigma,
Hf ddsigma, Hg ddsigma, Hh ddsigma, He ddpi,
Hf ddpi, Hg ddpi, Hh ddpi, He dddelta,
Hf dddelta, Hg dddelta, Hh dddelta, Se sssigma,
Sf sssigma, Sg sssigma, Sh sssigma, Se spsigma,
Sf spsigma, Sg spsigma, Sh spsigma, Se ppsigma,
Sf ppsigma, Sg ppsigma, Sh ppsigma, Se pppi,
Sf ppi, Sg pppi, Sh pppi, Se sdsigma,
Sf sdsigma, Sg sdsigma, Sh sdsigma, Se pdsigma,
Sf pdsigma, Sg pdsigma, Sh pdsigma, Se pdpi,
Sf pdpi, Sg pdpi, Sh pdpi, Se ddsigma,
Sf ddsigma, Sg ddsigma, Sh ddsigma, Se ddpi,
Sf ddpi, Sg ddpi, Sh ddpi, Se dddelta,
Sf dddelta, Sg dddelta, Sh dddelta, last param marker }
Zmiennoprzecinkowe parametry z pliku z parametrami NRL.
Zmienne
const struct NRL params::consts constants
Przeliczniki pozwalające zamieniać jednostki używane przez NRL na nasze.
8.12.1
Opis szczegółowy
Sczegółowych informacji o module szukaj w nrl params.cpp(str. 125)
Definicja w pliku nrl params.h.
8.12.2
Dokumentacja zmiennych
8.12.2.1
const struct NRL params::consts constants
Michał używa:
A (angstroem) dla odległości
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
128
nanoTB: Dokumentacja plików
amu (atomis mass unit) dla masy
fs (femtosecond) dla czasu
wobec tego: amu∗A2 /f s2 dla energii (nazwijmy ją IEU – internal energy unit)
wobec tego: A/f s2 dla przyspieszenia (nazwijmy ją IAU – internal accel. unit)
Ostrzeżenie:
Te stałe są inicjowane zgodnie z kolejnością deklaracji, NIE w kolejności alfabetycznej
i NIE w kolejności w jakiej są wymienione w init list konstruktora.
Zmiany w tych stałych wymagają rekompilacji NIE TYLKO nrl params.cpp(str. 125)
Odwołania do tego symbolu występują w: tb system::perform step(), tb system::produce diagnostics() i nrl params::read params().
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.13 Dokumentacja pliku nrl two center.cpp
8.13
129
Dokumentacja pliku nrl two center.cpp
Implementacja NRL-TB – części opisujące zależność od odległości.
#include <framework.h>
#include "exceptions.h"
#include "tb system.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w nrl two center.cpp:
framework.h
util.h
8.13.1
string
basis_set.h
map
exceptions.h
tb_system.h
nrl_two_center.cpp
tb2md.h
geometry.h
../src/nano.h
nrl_params.h
Opis szczegółowy
Moduł zawiera funkcje do obliczania:
całek dwucentrowych,
dwucentrowych całek nakładania
pochodnych całek dwucentrowych,
pochodnych dwucentrowych całek nakladania
F c, funkcji odcięcia
Funkcje, które się tu znajdują są metodami klasy TB system::tb system(str. 77), ale trzymanie ich w pliku tb system.cpp(str. 136) było niewygodne.
Definicja w pliku nrl two center.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
130
8.14
nanoTB: Dokumentacja plików
Dokumentacja pliku rdf.cpp
Oblicza radialna funkcję rozkładu (RDF) dla regionu TB.
#include <fstream>
#include <iomanip>
#include <string>
#include <framework.h>
#include "tb system.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w rdf.cpp:
fstream
string
nrl_params.h
iomanip
basis_set.h
map
../src/nano.h
geometry.h
tb_system.h
rdf.cpp
8.14.1
framework.h
tb2md.h
Opis szczegółowy
Funkcje, które się tu znajdują są metodami klasy TB system::tb system(str. 77), ale trzymanie ich w pliku tb system.cpp(str. 136) było niewygodne.
Definicja w pliku rdf.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.15 Dokumentacja pliku read params.cpp
8.15
131
Dokumentacja pliku read params.cpp
Zawiera funkcje czytającą parametry regionu TB (nie nrl-TB).
#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>
#include <framework.h>
#include "basis set.h"
#include "exceptions.h"
#include "tb system.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w read params.cpp:
string
util.h
exceptions.h
basis_set.h
iostream
framework.h
nrl_params.h
sstream
read_params.cpp
iomanip
../src/nano.h
map
geometry.h
tb_system.h
tb2md.h
Przestrzenie nazw
namespace TB system
8.15.1
Opis szczegółowy
Funkcje, które się tu znajdują są metodami klasy TB system::tb system(str. 77), ale trzymanie ich w pliku tb system.cpp(str. 136) było niewygodne.
Definicja w pliku read params.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
132
8.16
nanoTB: Dokumentacja plików
Dokumentacja pliku release.h
Zawiera szczegóły bieżącej wersji programu.
Makrodefinicje
#define DEBUGTIMERS
Włącza zapisywanie pliku DEBUGTimer, w których zapisywane są czasy wykonania poszczególnych kroków, dla celów diagnostycznych.
#define VERSION STRING ”1.89”
Numer wersji programu.
8.16.1
Opis szczegółowy
Definicja w pliku release.h.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.17 Dokumentacja pliku tb2md.cpp
8.17
133
Dokumentacja pliku tb2md.cpp
Zawiera kod związany bezpośrednio z intefejsem TB/MD. Zagadnienia związane z crossscalingiem trafiają tu.
#include <framework.h>
#include <algorithm>
#include <vector>
#include <utility>
#include <iostream>
#include "geometry.h"
#include "tb system.h"
#include "tb2md.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w tb2md.cpp:
framework.h
vector
geometry.h
tb_system.h
tb2md.h
algorithm
utility
iostream
tb2md.cpp
Przestrzenie nazw
namespace Maths::Maths manip
namespace TB2MD
Funkcje
double weighing function (double x)
Funkcja ważenia dla miksowania TB+MD.
8.17.1
Opis szczegółowy
Wszystkie zdefiniowane tu symbole trafiają do przestrzeni nazw TB2MD(str. 17).
Definicja w pliku tb2md.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
134
8.18
nanoTB: Dokumentacja plików
Dokumentacja pliku tb2md.h
Plik nagłówkowy modułu tb2md.cpp(str. 133).
#include <string>
#include <vector>
#include <framework.h>
#include "../src/nano.h"
#include "tb system.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w tb2md.h:
fstream
string
framework.h
nrl_params.h
vector
tb2md.h
utility
../src/nano.h
../src/cell.h
geometry_shapes.h
basis_set.h
geometry.h
map
tb_system.h
Poniższy graf pokazuje, które pliki bezpośrednio lub pośrednio zależą od tego pliku:
tb2md.cpp
geometry.cpp
geometry_shapes.cpp
tb_system.cpp
tb2md.h
tb_system.h
Przestrzenie nazw
namespace TB2MD
Zawiera:
class tb2md
Interfejs między MD a TB.
Makrodefinicje
#define for all MD atoms(Michal ptr, index variable) for(unsigned int index variable=0; index variable < (unsigned int) Michal ptr → Npart; ++index variable)
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.18 Dokumentacja pliku tb2md.h
135
Przebiega wszystkie atomy sceny MD, wskaźnik na którą jest pierwszym parametrem,
zmienną index variable.
#define for all regions for(unsigned int r=0; r < Nregions; ++r)
Przebiega bieżący interejs TB2MD(str. 17) po wszystkich regionach TB. Numer regionu
nazywa się r.
8.18.1
Opis szczegółowy
Sczegółowych informacji o module szukaj w tb2md.cpp(str. 133)
Definicja w pliku tb2md.h.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
136
8.19
nanoTB: Dokumentacja plików
Dokumentacja pliku tb system.cpp
Zawiera kod związany z pojedynczym regionem TB.
#include <algorithm>
#include <cmath>
#include <iostream>
#include <limits>
#include <sstream>
#include <string>
#include <framework.h>
#include "basis set.h"
#include "exceptions.h"
#include "../src/utils.h"
#include "tb2md.h"
#include "tb system.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w tb system.cpp:
string
util.h
exceptions.h
algorithm
cmath
iostream
limits
sstream
basis_set.h
framework.h
../src/nano.h
tb_system.h
vector
../src/utils.h
tb2md.h
tb_system.cpp
Przestrzenie nazw
namespace TB system
8.19.1
Opis szczegółowy
Spore części tego modułu (metody klasy TB system::tb system(str. 77)) trafiły do innych plików (nrl HS.cpp(str. 122), nrl matrix element formulas.cpp(str. 123), nrl two center.cpp(str. 129)).
Wszystkie symbole wprowadzone w tym module siedzą w przestrzeni nazw TB system(str. 18). Na moduł składa się właściwie tylko klasa tb system i kilka aliasów.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.19 Dokumentacja pliku tb system.cpp
Definicja w pliku tb system.cpp.
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
137
138
8.20
nanoTB: Dokumentacja plików
Dokumentacja pliku tb system.h
Plik nagłówkowy modułu tb system.cpp(str. 136).
#include <map>
#include <string>
#include <framework.h>
#include "basis set.h"
#include "geometry.h"
#include "nrl params.h"
#include "tb2md.h"
#include "../src/nano.h"
Wykres zależności dla plików nagłówkowych włączanych (#include) w tb system.h:
string
fstream
nrl_params.h
vector
../src/cell.h
utility
../src/nano.h
framework.h
geometry_shapes.h
basis_set.h
geometry.h
map
tb_system.h
tb2md.h
Poniższy graf pokazuje, które pliki bezpośrednio lub pośrednio zależą od tego pliku:
tb2md.cpp
nrl_force.cpp
nrl_HS.cpp
nrl_matrix_element_formulas.cpp
nrl_two_center.cpp
rdf.cpp
read_params.cpp
tb_system.cpp
tb_system.h
tb2md.h
Przestrzenie nazw
namespace TB system
Zawiera:
class tb system
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
8.20 Dokumentacja pliku tb system.h
139
Klasa reprezentuje pojedynczy region TB.
aliasy
const
const
const
const
const
bool no bounds checking = false
unsigned int SCF ELSTNER = 2
unsigned int SCF HUBBARD = 1
unsigned int SCF NONE = 0
bool with bounds checking = true
Makrodefinicje
#define for all atomorbitals(i, alpha)
Przebiega bieżącą bazę atomową bieżącego regionu TB po wszystkich orbitalach α wszystkich atomów i.
#define for all energy levels in(tb system instance)
Przebiega zadany region TB po wszystkich poziomach energetycznych n. Poziomów energetycznych jest tyle, ile atomorbitali w układzie. Przy przebieganiu nie jest istotne jak
poziomy te są obsadzone.
#define for all half matrix elements in(tb system instance)
Przebiega zadany region TB po wszystkich indeksach I, J, przy czym I>=J. Indeksy I i J
odnoszą się do wszystkich atomorbitali. Stosowane do przebiegania po macierzach, makro
to umożliwia przebieganie dolnej połowy macierzy wraz z przekątną.
#define for all occupied energy levels in(tb system instance) for(register signed
int Nocc =(signed int) tb system instance.Nocc, n=Nocc -1; n>=0; –n)
Przebiega zadany region TB po obsadzonych poziomach energetycznych n. Poziomów energetycznych jest Nocc, są to wszystkie poziomy, których waga jest nie większa niż zadana
przez Fermi cutoff w pliku konfiguracyjnym. Trzeba pamiętać, żeby wcześniej było wywołane determine Nocc(...) Poziomy są przebiegane ∗od góry∗, żeby sumowanie wychodziło
dokładniejsze przy maleńkich wagach, które się tam pojawiaja. Do tego trzeba zrzutowac
na (signed), bo inaczej sa problemy z zerem w petli...
8.20.1
Opis szczegółowy
Sczegółowych informacji o module szukaj w tb system.cpp(str. 136)
Definicja w pliku tb system.h.
8.20.2
Dokumentacja makrodefinicji
8.20.2.1
#define for all atomorbitals(i, alpha)
Wartość:
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
140
nanoTB: Dokumentacja plików
for_all_atoms_in( current_geometry,i) \
for_all_orbitals_in( current_basis_set,alpha)
Definicja w linii 65 pliku tb system.h.
8.20.2.2
#define for all energy levels in(tb system instance)
Wartość:
for(register unsigned int Natomorbitals_=tb_system_instance.Natomorbitals, \
n=0; n < Natomorbitals_; ++n)
Definicja w linii 44 pliku tb system.h.
Odwołania do tego symbolu występują w: tb system::determine Nocc().
8.20.2.3
#define for all half matrix elements in(tb system instance)
Wartość:
for(register unsigned int Natomorbitals_=tb_system_instance.Natomorbitals, \
I=0; I < Natomorbitals_; ++I) \
for(register unsigned int J=0; J<=I; ++J)
Definicja w linii 34 pliku tb system.h.
Odwołania do tego symbolu występują w: tb system::calculate hamiltonian(), tb system::calculate overlap() i tb system::perform step().
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
Rozdział 9
nanoTB: Dokumentacja stron
dodatkowych
9.1
Lista dostrzeżonych błędów (known bugs)
Składowa calculate forces(str. 73)() Występuje offset energii na styku.
Atomy znajdujące się w więcej niż jednym regionie będą miały wpływ MD uwzględniany wielokrotnie, po czym i tak zostanie zaakceptowany wariant z ostatniego regionu.
Na razie pracujemy z jednym regionem, więc nie ma to większego znaczenia.
Skorowidz
SKOROWIDZ
∼tb2md
TB2MD::tb2md, 72
adjust size
Geometry::box shape, 23
Geometry::cylinder shape, 32
Geometry::sphere shape, 66
advance
TB system::tb system, 87
assign atoms to region
TB2MD::tb2md, 73
assign expected Mulliken charges
TB system::tb system, 88
Basis set, 11
delta, 13
orbital interaction names, 13
basis set.cpp, 109
basis set.h, 110
delta, 112
for all interactions in, 112
for all orbitals in, 112
orbital interaction names, 112
Basis set::basis set, 19
initialize, 19
calculate chem pot
TB system::tb system, 88
calculate energy
TB system::tb system, 88
calculate forces
TB2MD::tb2md, 73
calculate hamiltonian
TB system::tb system, 89
calculate lookups for
TB system::tb system, 89
calculate Mulliken charge for atom
TB system::tb system, 90
calculate overlap
TB system::tb system, 91
calculate RDF
TB system::tb system, 91
clear RDF
TB system::tb system, 91
constants
NRL params, 16
nrl params.h, 127
delta
Basis set, 13
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
143
144
SKOROWIDZ
basis set.h, 112
determine Nocc
TB system::tb system, 92
determine physical ranges
TB system::tb system, 92
dist
Geometry::geometry, 52, 53
dist from axis
Geometry::cylinder shape, 32
dist from center
Geometry::sphere shape, 66
EBadOrbital, 36
EBadOrbitalCount, 37
EBadSCFModel, 38
EChemicalPotentialConvergenceFailure, 39
EFailedToDeterminePhysicalRanges, 40
ENegativeEnergy, 41
EOnlyMonatomicsSupported, 42
EOpenShellNotSupported, 43
EOutOfScene, 44
EOverlapMatrixUnphysical, 45
EParamFileStyleNotSupported, 46
ESCFConvergenceFailure, 47
ETwoCenterOverlapIntegralUnphysical, 48
EUnphysicalDistance, 49
exceptions.h, 113
Fc
TB system::tb system, 92
fermi f
TB system::tb system, 93
for all atomic pairs in
geometry.h, 117
for all atomorbitals
tb system.h, 139
for all energy levels in
tb system.h, 140
for all half matrix elements in
tb system.h, 140
for all interactions in
basis set.h, 112
for all orbitals in
basis set.h, 112
gather distances and indices
Geometry::box shape, 23
Geometry::cylinder shape, 32
Geometry::sphere shape, 67
Geometry, 14
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
SKOROWIDZ
geometry
Geometry::geometry, 52
geometry.cpp, 115
geometry.h, 116
for all atomic pairs in, 117
Geometry::box shape, 21
adjust size, 23
gather distances and indices, 23
info, 23
init auto, 24
init fixed, 24, 25
make periodic in shape, 25
move by, 26
relative distance of, 26
volume, 27
Geometry::cylinder shape, 30
adjust size, 32
dist from axis, 32
gather distances and indices, 32
info, 33
init auto, 33
init fixed, 34
make periodic in shape, 34
move by, 35
relative distance of, 35
volume, 35
Geometry::geometry, 50
dist, 52, 53
geometry, 52
get dlmn, 53
get dxdydz, 53, 54
get scene dxdydz, 54
initialize, 55
make periodic in region, 55
make periodic in scene, 55
Natoms, 59
quick setup, 56
reduce location, 57
scene dist, 57
set region, 58
set scene, 58
Geometry::shape, 62
move by, 63
set origin, 64
Geometry::sphere shape, 65
adjust size, 66
dist from center, 66
gather distances and indices, 67
info, 67
init auto, 68
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
145
146
SKOROWIDZ
init fixed, 68
make periodic in shape, 69
move by, 69
relative distance of, 69
volume, 69
geometry shapes.cpp, 118
geometry shapes.h, 119
get dlmn
Geometry::geometry, 53
get dxdydz
Geometry::geometry, 53, 54
get scene dxdydz
Geometry::geometry, 54
info
Geometry::box shape, 23
Geometry::cylinder shape, 33
Geometry::sphere shape, 67
init auto
Geometry::box shape, 24
Geometry::cylinder shape, 33
Geometry::sphere shape, 68
init fixed
Geometry::box shape, 24, 25
Geometry::cylinder shape, 34
Geometry::sphere shape, 68
initialize
Basis set::basis set, 19
Geometry::geometry, 55
TB2MD::tb2md, 74
TB system::tb system, 93
make periodic in region
Geometry::geometry, 55
make periodic in scene
Geometry::geometry, 55
make periodic in shape
Geometry::box shape, 25
Geometry::cylinder shape, 34
Geometry::sphere shape, 69
make sure if physical
TB system::tb system, 95
move by
Geometry::box shape, 26
Geometry::cylinder shape, 35
Geometry::shape, 63
Geometry::sphere shape, 69
Natoms
Geometry::geometry, 59
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
SKOROWIDZ
nrl force.cpp, 121
nrl HS.cpp, 122
nrl matrix element formulas.cpp, 123
NRL params, 15
constants, 16
nrl params
NRL params::nrl params, 60
nrl params.cpp, 125
nrl params.h, 126
constants, 127
NRL params::consts, 28
NRL params::nrl params, 60
nrl params, 60
read params, 61
nrl two center.cpp, 129
Nwork
TB system::tb system, 106
offsite derivative matrix element
TB system::tb system, 95
offsite matrix element
TB system::tb system, 96
onsite derivative matrix element
TB system::tb system, 97
onsite matrix element
TB system::tb system, 97
open debug files
TB system::tb system, 98
orbital interaction names
Basis set, 13
basis set.h, 112
perform
TB
produce
TB
step
system::tb system, 98
diagnostics
system::tb system, 100
quick setup
Geometry::geometry, 56
rdf.cpp, 130
RDF disable
TB system::tb system, 107
read params
NRL params::nrl params, 61
TB system::tb system, 101
read params.cpp, 131
reduce location
Geometry::geometry, 57
relative distance of
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
147
148
SKOROWIDZ
Geometry::box shape, 26
Geometry::cylinder shape, 35
Geometry::sphere shape, 69
release.h, 132
restore tb2md state
TB2MD::tb2md, 75
return hamiltonian
TB system::tb system, 102
return overlap
TB system::tb system, 102
save tb2md state
TB2MD::tb2md, 75
scene dist
Geometry::geometry, 57
set origin
Geometry::shape, 64
set region
Geometry::geometry, 58
set scene
Geometry::geometry, 58
step RDF
TB system::tb system, 102
TB2MD, 17
tb2md
TB2MD::tb2md, 72
tb2md.cpp, 133
tb2md.h, 134
TB2MD::tb2md, 71
∼tb2md, 72
assign atoms to region, 73
calculate forces, 73
initialize, 74
restore tb2md state, 75
save tb2md state, 75
tb2md, 72
which region contains, 75
TB system, 18
tb system
TB system::tb system, 87
tb system.cpp, 136
tb system.h, 138
for all atomorbitals, 139
for all energy levels in, 140
for all half matrix elements in, 140
TB system::tb system, 77
advance, 87
assign expected Mulliken charges, 88
calculate chem pot, 88
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
SKOROWIDZ
calculate energy, 88
calculate hamiltonian, 89
calculate lookups for, 89
calculate Mulliken charge for atom, 90
calculate overlap, 91
calculate RDF, 91
clear RDF, 91
determine Nocc, 92
determine physical ranges, 92
F c, 92
fermi f, 93
initialize, 93
make sure if physical, 95
Nwork, 106
offsite derivative matrix element, 95
offsite matrix element, 96
onsite derivative matrix element, 97
onsite matrix element, 97
open debug files, 98
perform step, 98
produce diagnostics, 100
RDF disable, 107
read params, 101
return hamiltonian, 102
return overlap, 102
step RDF, 102
tb system, 87
trace defect, 103
two center integral, 103
two center integral derivative, 104
two center overlap integral, 105
two center overlap integral derivative, 105
trace defect
TB system::tb system, 103
two center integral
TB system::tb system, 103
two center integral derivative
TB system::tb system, 104
two center overlap integral
TB system::tb system, 105
two center overlap integral derivative
TB system::tb system, 105
volume
Geometry::box shape, 27
Geometry::cylinder shape, 35
Geometry::sphere shape, 69
which region contains
TB2MD::tb2md, 75
Wygenerowano Thu Aug 25 13:16:58 2005 dla projektu [[nanoTB:]] za pomocą
programu Doxygen
149

Podobne dokumenty