• Nie Znaleziono Wyników

Plik wejściowy setup.in

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