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