Gaussian Cube FilesOriginal written by Paul BourkeDecember 2003
Wprowadzenie Plik kostki opisuje dane wolumetryczne, jak również pozycje atomów i pochodzi z pakietu oprogramowania Gaussian. Plik składa się z nagłówka, który zawiera informację o atomie i rozmiar oraz orientację danych wolumetrycznych. Następują dane wolumetryczne, jeden skalar na element wokselowy. Wszystkie aspekty tego pliku to tekst (czytelny dla człowieka), początkowo wartości liczbowe wynosiły 5 szerokości dla liczb całkowitych, które rozpoczynały każdą linię nagłówka (po pierwszej), a wartości zmiennoprzecinkowe zostały sformatowane 12.6, czyli 12 znaków szerokości z sześcioma miejscami dziesiętnymi. NagłówekPierwsze dwa wiersze nagłówka są komentarzami i są zwykle ignorowane przy parsowaniu pakietów lub używane jako dwie domyślne etykiety. Trzecia linia zawiera liczbę atomów zawartych w pliku, po których następuje pozycja początku danych wolumetrycznych. Następne trzy linie podają liczbę wokseli wzdłuż każdej osi (x, y, z), po których następuje wektor osi. Uwaga: oznacza to, że wolumin nie musi być wyrównany z osią współrzędnych, w rzeczywistości oznacza to również, że może być ścinany, chociaż większość pakietów wolumetrycznych tego nie obsługuje. Długość każdego wektora jest długością boku woksela, umożliwiając w ten sposób nie objętość sześcienną. Jeśli znak liczby wokseli w wymiarze jest dodatni, to jednostki są Bohrami, jeśli są ujemne, to Angstremami. Ostatnia sekcja w nagłówku to jedna linia dla każdego atomu składającego się z pięciu liczb, pierwsza to liczba atomów, druga (?), A ostatnie trzy to współrzędne x, y i z centrum atomu. Dane wolumetryczneDane wolumetryczne są proste, jedna liczba zmiennoprzecinkowa dla każdego elementu wolumetrycznego. Oryginalny format Gaussa układa wartości w formacie pokazanym poniżej w przykładzie, większość parsujących programów może odczytywać dowolny format rozdzielony białymi spacjami. Tradycyjnie siatka jest ułożona z osią "x" jako zewnętrzną pętla i oś "z" jako wewnętrzną pętla, na przykład zapisana jako for (ix=0;ix<NX;ix++) { for (iy=0;iy<NY;iy++) { for (iz=0;iz<NZ;iz++) { printf("%g ",data[ix][iy][iz]); if (iz % 6 == 5) printf("\n"); } printf("\n"); } }Przykład W poniższym przykładzie dane wolumetryczne wynoszą 40 na 40 na 40 oczek, każdy woksel ma szerokość 0.283459 jednostek, a objętość jest wyrównana z osią współrzędnych. Są tutaj trzy atomy. CPMD CUBE FILE. OUTER LOOP: X, MIDDLE LOOP: Y, INNER LOOP: Z 3 0.000000 0.000000 0.000000 40 0.283459 0.000000 0.000000 40 0.000000 0.283459 0.000000 40 0.000000 0.000000 0.283459 8 0.000000 5.570575 5.669178 5.593517 1 0.000000 5.562867 5.669178 7.428055 1 0.000000 7.340606 5.669178 5.111259 -0.25568E-04 0.59213E-05 0.81068E-05 0.10868E-04 0.11313E-04 0.35999E-05 : : : : : : : : : : : : : : : : : : In this case there will be 40 x 40 x 40 floating point values : : : : : : : : : : : : : : : : : : |