$$\rightleftharpoonup{xx}$$
$$\longleftharp{xx}$$,
$$\longrightharp{xx}$$,
Płyny i stopione substancje są aktywnymi chemicznymi i fizycznymi wektorami transportu w naturalnym środowisku. Podwyższone tempo dyfuzji atomowej sprzyja wymianom chemicznym i reakcjom, niska lepkość w połączeniu ze zmiennym wyporem sprzyja dużemu transferowi masy, a relacje gęstości kryształów i stopów sprzyjają warstwowaniu się wewnątrz ciał planetarnych. Brak sieci okresowej, typowe wysokie temperatury wymagane do osiągnięcia stanu stopionego oraz trudność w hartowaniu sprawiają, że eksperymentalne określenie szeregu oczywistych właściwości, takich jak gęstość, dyfuzja i lepkość, jest niezwykle trudne. Trudności te sprawiają, że alternatywne metody obliczeniowe są silnymi i użytecznymi narzędziami do badania tej klasy materiałów.
Wraz z pojawieniem się mocy obliczeniowej i dostępnością superkomputerów, dwie główne techniki numerycznych symulacji atomistycznych są obecnie wykorzystywane do badania stanu dynamicznego niekrystalicznego systemu atomistycznego, Monte Carlo1 i dynamika molekularna (MD)1,2. W symulacjach Monte Carlo przestrzeń konfiguracyjna jest próbkowana losowo; Metody Monte Carlo pokazują skalowanie liniowe w równoległości, jeśli wszystkie obserwacje próbkowania są od siebie niezależne. Jakość wyników zależy od jakości generatora liczb losowych i reprezentatywności próbkowania. Metody Monte Carlo pokazują skalowanie liniowe w równoległości, jeśli próbkowanie jest od siebie niezależne. W dynamice molekularnej (MD) przestrzeń konfiguracyjna jest próbkowana przez zależne od czasu trajektorie atomowe. Zaczynając od danej konfiguracji, trajektorie atomowe są obliczane przez całkowanie newtonowskich równań ruchu. Siły międzyatomowe można obliczyć za pomocą modelowych potencjałów międzyatomowych (w klasycznym MD) lub przy użyciu metod pierwszych zasad (in ab initio, czyli pierwszych zasad, MD). Jakość wyników zależy od długości trajektorii i jej zdolności do unikania przyciągania do lokalnych minimów.
Symulacje dynamiki molekularnej zawierają mnóstwo informacji, wszystkie związane z dynamicznym zachowaniem systemu. Średnie właściwości termodynamiczne, takie jak energia wewnętrzna, temperatura i ciśnienie, są raczej standardowe do obliczenia. Można je wyodrębnić z pliku wyjściowego symulacji i uśrednić, podczas gdy wielkości związane bezpośrednio z ruchem atomów, jak również z ich wzajemnym stosunkiem, muszą być obliczone po ekstrakcji pozycji i prędkości atomów.
W związku z tym, wiele wysiłku poświęcono wizualizacji wyników, a różne pakiety są dostępne dzisiaj, na różnych platformach, open source lub nie [Ovito3, VMD4, Vesta5, Travis6, itd.]. Wszystkie te narzędzia wizualizacyjne skutecznie radzą sobie z odległościami międzyatomowymi, a tym samym umożliwiają efektywne obliczanie funkcji rozkładu par i współczynników dyfuzji. Różne grupy przeprowadzające symulacje dynamiki molekularnej na dużą skalę mają zastrzeżone oprogramowanie do analizy różnych innych właściwości wynikających z symulacji, czasami w shareware lub innych formach ograniczonego dostępu do społeczności, a czasami ograniczone pod względem zakresu i zastosowania do niektórych konkretnych pakietów. W niektórych z tych pakietów opracowywane i implementowane są zaawansowane algorytmy do wydobywania informacji o wiązaniach międzyatomowych, wzorcach geometrycznych i termodynamice3,4,5,6,7, itd.
Tutaj proponujemy pakiet UMD - pakiet open-source napisany w Pythonie do analizy wyników symulacji dynamiki molekularnej. Pakiet UMD pozwala na obliczanie szerokiego zakresu właściwości strukturalnych, dynamicznych i termodynamicznych (Rysunek 1). Pakiet jest dostępny za pośrednictwem strony internetowej GitHub (https://github.com/rcaracas/UMD_package) oraz na dedykowanej stronie (http://moonimpact.eu/umd-package/) projektu ERC IMPACT w formie pakietu otwartego dostępu.
Aby uczynić to uniwersalnym i łatwiejszym w obsłudze, nasze podejście polega na tym, aby najpierw wyodrębnić wszystkie informacje związane ze stanem termodynamicznym i trajektoriami atomowymi z pliku wyjściowego rzeczywistego przebiegu dynamiki molekularnej. Informacje te są przechowywane w dedykowanym pliku, którego format jest niezależny od oryginalnego pakietu MD, w którym przeprowadzono symulację. Nazywamy te pliki "umd", co oznacza Uniwersalną Dynamikę Molekularną. W ten sposób nasz pakiet UMD może być łatwo używany przez dowolną grupę ab initio z dowolnym oprogramowaniem, a wszystko to przy minimalnym wysiłku adaptacyjnym. Jedynym wymogiem do korzystania z obecnego pakietu jest zapisanie odpowiedniego parsera z danych wyjściowych określonego oprogramowania MD do formatu pliku umd, jeśli ten jeszcze nie istnieje. Na razie udostępniamy takie parsery dla pakietów VASP8 oraz QBox9.

Rysunek 1: Schemat blokowy biblioteki UMD.
Właściwości fizyczne są zaznaczone na niebiesko, a główne skrypty Pythona i ich opcje są na czerwono. Kliknij tutaj, aby zobaczyć większą wersję tego rysunku.
Pliki umd to pliki ASCII; typowe rozszerzenie to "umd.dat", ale nie jest to obowiązkowe. Wszystkie komponenty analizy mogą odczytywać pliki ASCII w formacie umd, niezależnie od rzeczywistego rozszerzenia nazwy. Jednak niektóre z automatycznych skryptów zaprojektowanych do szybkiego wykonywania statystyk na dużą skalę w kilku symulacjach specjalnie szukają plików z rozszerzeniem umd.dat. Każda właściwość fizyczna jest wyrażona w jednym wierszu. Każdy wiersz zaczyna się od słowa kluczowego. W ten sposób format jest wysoce elastyczny i pozwala na dodawanie nowych właściwości do pliku umd, przy jednoczesnym zachowaniu jego czytelności we wszystkich wersjach. Pierwsze 30 wierszy pliku umd z symulacji pirolitu przy 4,6 GPa i 3000 K, użytego poniżej w dyskusji, są pokazane w Rysunek 2.

Rysunek 2: Początek pliku umd opisującego symulację ciekłego pirolitu w temperaturze 4,6 GPa i temperaturze 3000 K.
Po nagłówku następuje opis każdej migawki. Każda właściwość jest zapisana w jednym wierszu, zawierającym nazwę właściwości fizycznej, wartość (wartości) i jednostki, wszystkie oddzielone spacjami. Kliknij tutaj, aby zobaczyć większą wersję tego rysunku.
Wszystkie pliki umd zawierają nagłówek opisujący zawartość komórki symulacyjnej: liczbę atomów, elektronów i typów atomów, a także szczegóły dotyczące każdego atomu, takie jak jego typ, symbol chemiczny, liczba elektronów walencyjnych i jego masa. Pusta linia oznacza koniec nagłówka i oddziela go od głównej części pliku umd.
Następnie każdy krok symulacji jest szczegółowo opisany. Po pierwsze, podane są chwilowe parametry termodynamiczne, każdy na innej linii, określając (i) nazwę parametru, taką jak energia, naprężenia, równoważne ciśnienie hydrostatyczne, gęstość, objętość, parametry sieci itp., (ii) jego wartość (wartości) oraz (iii) jego jednostki. Następna jest tabela opisująca atomy. Wiersz nagłówka zawiera różne miary, takie jak pozycje kartezjańskie, prędkości, ładunki itp., oraz ich jednostki. Następnie każdy atom jest szczegółowo opisany w jednym wierszu. W grupach po trzy, odpowiadających trzem osiom x, y, z, wpisy to: pozycje zredukowane, pozycje kartezjańskie złożone w komórce symulacji, pozycje kartezjańskie (które prawidłowo uwzględniają fakt, że atomy mogą przechodzić przez kilka komórek elementarnych podczas symulacji), prędkości atomowe i siły atomowe. Ostatnie dwa wpisy to skalary: ładunek i moment magnetyczny.
Dwie główne biblioteki zapewniają prawidłowe funkcjonowanie całego pakietu. Biblioteka umd_process.py zajmuje się plikami umd, takimi jak odczytywanie i drukowanie. Biblioteka crystallography.py zajmuje się wszystkimi informacjami związanymi z rzeczywistą strukturą atomową. Filozofia leżąca u podstaw biblioteki crystallography.py polega na traktowaniu kraty jako przestrzeni wektorowej. Parametry komórki elementarnej wraz z ich orientacją reprezentują wektory bazowe. "Przestrzeń" ma szereg atrybutów skalarnych (właściwa objętość, gęstość, temperatura i określona liczba atomów), właściwości termodynamiczne (energia wewnętrzna, ciśnienie, pojemność cieplna itp.) oraz szereg właściwości tensoralnych (naprężenie i sprężystość). Atomy zasiedlają tę przestrzeń. Klasa "Lattice" definiuje ten zespół, wraz z kilkoma krótkimi obliczeniami, takimi jak objętość właściwa, gęstość, otrzymanie odwrotności sieci z sieci bezpośredniej itp. Klasa "Atoms" definiuje atomy. Charakteryzują się one szeregiem właściwości skalarnych (nazwa, symbol, masa, liczba elektronów itp.) oraz szeregiem właściwości wektorowych (położenie w przestrzeni, albo względem bazy wektorowej opisanej w klasie Lattice, albo względem uniwersalnych współrzędnych kartezjańskich, prędkości, sił itp.). Oprócz tych dwóch klas biblioteka crystallography.py zawiera szereg funkcji do wykonywania różnych testów i obliczeń, takich jak odległości atomowe lub mnożenie komórek. Układ okresowy pierwiastków jest również dołączony jako słownik.
Różne komponenty pakietu umd zapisują kilka plików wyjściowych. Z reguły wszystkie są plikami ASCII, wszystkie ich wpisy są oddzielone zakładkami i są tak oczywiste, jak to tylko możliwe. Na przykład, zawsze wyraźnie wskazują one na własność fizyczną i jej jednostki. Pliki umd.dat są w pełni zgodne z tą regułą.