13. Dodatek 4: Podręcznik użytkownika programu nanoMD
13.1. Plik wejściowy setup.in
Plik ten zawiera niezbędne parametry do przeprowadzenia symulacji, oraz nazwy po-zostałych plików wejściowych (spec.in i pos.xyz. Został on podzielony na sekcje. Każda sekcja zaczyna się od nagłówka:
section nazwa sekcji i kończy słowem kluczowym end.
W sekcji głównej section main dostępne są następujące pola:
pos=’pos.xyz’
program odczytuje pozycje atomów z pliku o nazwie plik.pos, którego struktura opisana jest poniżej,
127
spec=’spec.in’
program odczytuje specyfikacje układu z pliku o nazwie plik.spec, którego struktura opisana jest poniżej,
out=’nazwa’
zapisywanie wyników do plików:
statystyki – do pliku nazwa.log, pozycje atomów – do pliku nazwa.xyz,
dane potrzebne do kontynuacji symulacji przy ponownym jej uruchomie-niu – do pliku nazwa.coord-N,
zmienne określające sposób startu symulacji (ich ustawinie jest opcjonalnie) restart
program wpierw odczyta ustawienia symulacji z plików konfiguracyjnych, później odczyta stanu układu z pliku ’nazwa.coord’ i nastąpi start symulacji
odtworz
program odczyta stan układu z pliku restore zapisywanego co 100 kroków i nastąpi kontynuacja przerwanej symulacji
overwrite
program wystartuje nowa symulacje, z tym że wszystkie pliki wyjściowe (o ile istnieją) zostaną nadpisane
coord=’start.coord’
program wpierw odczyta ustawienia symulacji z plików konfiguracyjnych, później odczyta stanu układu z pliku start.coord i nastąpi start symulacji zmienne określające parametry układu:
temp=T
temperatura początkowa symulacji [K]
chtemp=n
zmiana temperatury wzorcowej, przeprowadzane w n etapach określonych w n liniach po polu chtemp (n=0 oznacza brak zmian), każda linia składa się z trzech liczb:
Np Nk Tk
które oznaczają, że temperatura wzorcowa zmieniać się będzie liniowo od kroku Np do kroku Nk, uzyskując w korku Nk wartość Tk [K]
termos=typ M
temperatura utrzymywana poprzez działanie termostatu oznaczonego nu-merem typ z parametrem będącym odpowiednikiem masy M.
W programie przewidziane zostały trzy możliwości:
typ rodzaj termostatu 0 brak termostatu
1 termostat Nos´e–Hoovera 2 termostat gaussowski
scale=n
skalowanie prędkości do temperatury, przeprowadzane w n etapach okre-ślonych w n liniach po polu scale (n=0 oznacza brak skalowania), każda linia składa się z trzech liczb:
Np Nk Ns
które oznaczają, że skalowanie odbywać się będzie od kroku Np do kroku Nk, co Ns kroków,
timestep=h
całkowanie równań ruchu, przeprowadzane z krokiem czasowym h poda-nym w [fs],
steps=N
liczba kroków symulacji (całkowania równań ruchu), nstep=N
numer pierwszego kroku, kroki będą numerowane od N store= Nlog,Nxyz,Ncoord
statystyki liczone i zapisywane do pliku nazwa.log co Nlog kroków;
położenia atomów zapisywane do pliku nazwa.xyz co Nxyz kroków; dane potrzebne do kontynuacji symulacji zapisywane do pliku nazwa.coord-N co Ncoord kroków,
cutoff=RC
definiuje promień odcięcia, co oznacza, że najbliżsi sąsiedzi atomu będą szukani w kuli o promieniu RC wokół niego,
types=n
określa liczbę grup atomów, do których przypisane są oddziaływania ze-wnętrzne, grupę te opisywane są w sekcjach section typeN przedsta-wionych poniżej, typy numerowane są od 0, przy czym typ zerowy (type0
zawsze odnosi się do wszystkich atomów układu, np.: jeśli chcemy zdefi-niować jeden własny typ, należy wpisać types=2
stat=Ns Z
Ns określa liczbę kroków branych do obliczenia średnich wartości, Z - co które średnie mają być zapisane do pliku nazwa.stat
stress-stat=Ns
określa liczbę kroków Nsbranych do obliczenia średniej wartości naprężeń stress-grid=dx dy dz
przestrzeń układu zostanie podzielone na kostki o wymiarach dx,dy,dz w ramach których będzie obliczane średnie naprężenie i zapisywane do pliku out.stress w binarnym formacie dat3d
gtemp=dx dy dy dz N
przestrzeń układu zostanie podzielone na kostki o wymiarach dx,dy,dz w ramach których będzie obliczana średnia temperatura z N kroków i zapisywana do pliku out.gTemp w binarnym formacie dat3d
blocks=Nb
liczba zdefiniowanych bloków w układzie, do których przypisane są od-działywania zewnętrzne, bloki opisywane są w sekcjach section blockN, bloki numerowane są od 0, w trakcie symulacji do bloków będą przypisy-wane dynamicznie co chk blocks kroków
chk blocks=Nbc
określa liczbę kroków co ile ma nastąpić przypisanie atomów do zdefinio-wanych bloków
zero amom=I
I = 1 – będzie zerowany całkowity moment pędu układu, I = 0 – zerowanie wyłączone
zero lmom=I
I = 1 – będzie zerowany całkowity pęd układu, I = 0 – zerowanie wyłą-czone
collect xyz=Ns Z
średnie położeń atomów liczone z Ns kroków, zapisywane co Z średnia collect vel=Ns Z
średnie prędkości atmomów liczone z Nskroków, zapisywane co Z średnia collect prdf=Ns Z R dr S
pseudo RDF, liczony z Ns kroków, do histogramu brane będą położenia z
co S kroku, zapisywany będzie co Z RDF, RDF o długości R, i dokładności dr, jeżeli R i dr nie są ustawione, to są przyjmowane wartości domyślne R = rcutof f, dr = 0.1, S = 10
collect mprof=Ns Z R dr x y z
profil masy, liczony od punktu (x,y,z), domyślnie (x,y,z) = (0,0,0) collect msd=Z
msd całego układu zapisywane co Z kroków, wynik zostanie zapisny w pliku *.MSD
collect smsd=Ns Z R dr
”shell msd” msd w powłokach, liczonych od środka masy układu, długość smsd= R grubość powłok= dr, w pliku *.SMSD-NNNN zostanie zapisny SMSD z korku NNNN, w pliku *.SDMSD zostanie zapisny przyrost msd.
Oddziaływania zewnętrzne definiowane są w oddzielnych sekcjach:
section typeN gdzie N=0..types-1 jest numerem grupy atomów.
Atomy można przypisać do danej grupy przez dodanie numeru grupy po znaku podkre-ślenia ’ ’ do nazwy rodzaju atomu zdefiniowanego w pierwszej kolumnie pliku, zawierającego współrzędne atomów.
Sekcja type0 jest zarezerwowana dla oddziaływań przypisywanych wszystkim atomom układu.
W każdej sekcji section typeN można określić następujące oddziaływania zewnętrzne:
fixed=nx,ny,nz
gdzie ni może przyjmować wartości 0 albo 1 i jest maską ruchomości atomów w danym wymiarze, np.:
maska ’1,1,0’ oznacza, że atomy tej grupy będą mogły się poruszać jedynie w płaszczyźnie Oxy
veloc=vx,vy,vz
atomom danej grupy będzie przypisana stała prędkość v= (vx,vy,vz) w [ ˚f sA]
force=fx,fy,fz
na daną grupę będzie działać stała siła Fzew= (fx,fy,fz) Bloki geometryczne definiowane są w oddzielnych sekcjach o nazwach:
section blockN
gdzie N=0..blocks-1 Do bloków można przypisywać wszystkie oddziaływania zewnętrzne, w ten sam sposób jak w sekcji section typeN. Dodatkowym oddziaływaniem jest grzejnik:
heater= t Th ∆T Nmin p
w danym bloku będzie utrzymywana stała temperatura Th, stała t określa rodzaj zastosowanego algorytmu utrzymywania temperatury (na chwilę obecną zaimplementowana jest tylko metoda izokinetyczna Heermana, t = 0), ∆T określa maksymalną różnicę między temperaturą Th a śred-nią temperaturą grzejnika, przy której grzejnik nie jest włączany, Nmin określa minimalną liczbę kroków z których liczona jest średnia tempera-tura grzejnika, p jest parametrem ustawianym w zależności od potrzeb zastosowanego algorytmu
Bloki geometryczne definiowane są za pomocą listy wierzchołków i listy numerów wierzchoł-ków tworzących ściany:
vertex=Nv
określa liczbę wierzchołków, których współrzędne w postaci xiyizimuszą być podane w Nv następnych wierszach
sites=Ns
określa liczbę ścian, których wierzchołki tworzące muszą być podane w postaci nk1 nk2 nk3, gdzie nk, są numerami porządkowymi listy wierz-chołków (vertex) numerowanymi od 0
Poniżej zamieszczono przykładową definicję bloku o kształcie prostopadłościanu o skraj-nych wierzchołkach (−5,−5,−240)−(25,25,−110)
section block0
vertex=8 # wierzcho/lki -5 -5 -240
25 -5 -240 25 25 -240 -5 20 -240 -5 -5 -110 25 -5 -110 25 25 -110 -5 25 -110
sites=6 # kt/ore wierzcho/lki tworz/a /sciany 0 1 2
0 4 5 0 4 7 1 2 6 3 2 6 4 5 6 end
Przykładowy plik setup.in:
# konf
section main
# restart
# odtworz
pos=’5x5x5.xyz’ # pozycje atomow
spec=’spec.in’ # typy, potencjaly dla atomow
out=’test’ # nazwa plikow wysciowych (*.log, *.xyz ...) temp=300 # temperaura w K
cutoff=9 # promien odciecia, ten sam dla wszystkich steps=100000 # ilosc krokow
termos= 0 0.4
scale=3 # skalowanie predkosci do temperatury 0 2000 2 # od 0 do 2000 kroku co drugi
2000 3000 6 # od 2000 do 3000 kroku co 6 timestep=0.5 # fs
types=3 # ilosc typow
store=10 500 5000 # co ile ma zapisywac: srednie, xyz statis=100 2
stress-stat=1000 # usrednia naprezenia z 1000 krokow
stress-grid=10 10 10 # usrednia naprezenia w blokach 10x10x10 angstr.
end
# sekcje typow, type0 dotyczy wszystkich
section type0
force=0 0 -9.81 # stala sila end
section type1
fixed=0 0 0 # maska ruchomosci na danym wymiarze veloc=0 0 0.01 # angstrom//fs
end
section type2 fixed=0 0 0
veloc=0 0 -0.01 # stala predkosc Angstr//fs end