Гаши коцка Датотеки

Напишано од Paul Bourke
декември 2003 година

Вовед
датотека на коцка опишува волуметриски податоци, како и атом позиции, тоа потекнува од Gaussian софтверски пакет. На датотека се состои од глава која вклучува информации на атомот и големина, како и ориентацијата на волуметриски податоци. Ова е проследено со волуметриски податоци, скаларен на воксел елемент. Сите аспекти на датотека се текст (читливо), првично нумеричките вредности беа 5 широк за цели броеви, која започна секое заглавие (по првиот) и подвижна запирка вредности се форматирани 12,6, односно 12 карактери широк со 6 децимални места.

заглавие
Првите две линии на насловот се коментари, тие обично се игнорирани од страна на парсирање пакети или се користи како две етикети стандардните.

Третата линија и бројот на атоми вклучени во датотеката проследено со позицијата на потеклото на волуметриски податоци.

Во следните три линии наведете го бројот на voxels по секоја оска (x, y, z) проследено со вектор на оската. Имајте на ум, тоа значи обемот не треба да бидат во согласност со оската координираат, секако дека е, исто така, значи дека може да се sheared иако повеќето волуметриски пакети нема да го поддржи тоа. Должината на секој вектор е должината на страната на воксел со што се овозможува не кубни тома. Ако знакот на бројот на voxels во една димензија е позитивна, единици се Бор, ако се негативни, тогаш ангстреми.

Во последниот дел во заглавјето е една линија за секој атом се состои од 5 броеви, првиот е бројот на атомот, втората (?), Во последните три се на x, y, z координатите на центарот на атомот.

волуметриски податоци
Волуметриски податоци е јасна, една подвижна точка број за секое волуметриски елемент. Оригиналниот Gaussian формат договорил вредности во формат што е прикажано на пример, повеќето програми парсирање да прочитате било бело одвоени формат. Традиционално на мрежата е договорено со x оска, како што надворешниот циклус и z-оската како внатрешниот циклус, на пример, напишан како

  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");
      }
   }

пример
Во следниот пример волуметриски податоци е 40 до 40 од 40 мрежа, секој воксел е широк 0,283459 единици и обем е во согласност со оската координираат. Постојат три атоми.

 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
      :             :             :           :            :            :
      :             :             :           :            :            :
      :             :             :           :            :            :