Gaussisk Cube filer

Original: http://paulbourke.net/dataformats/cube/

Indledning
Terningen fil beskriver volumetriske data samt atom positioner, det stammer fra den gaussiske softwarepakke. Filen består af en header, der indeholder de oplysninger atom og størrelse samt orientering af volumetriske data. Dette efterfølges af de volumetriske data, en skalar pr voxel element. Alle aspekter af filen er tekst (læsbar), oprindeligt de numeriske værdier var 5 brede til hele tal, der startede hver hovedlinje (efter den første) og flydende komma værdier blev formateret 12,6, dvs. 12 tegn bred med 6 decimaler.

Header
De første to linjer af headeren er kommentarer, de er generelt ignoreret af parsing pakker eller anvendes som to standard etiketter.

Den tredje linje har antallet af atomer, der indgår i filen efterfulgt af positionen af ​​oprindelsen af ​​de volumetriske data.

De næste tre linjer giver antallet af voxels langs hver akse (x, y, z), efterfulgt af aksen vektoren. Bemærk det betyder lydstyrken behøver ikke at være på linje med koordinat-akse, ja det betyder også det kan blive klippet selv om de fleste volumettric pakker ikke vil støtte det. Længden af ​​hver vektor er længden af ​​den side af voxel således at ikke voluminernes. Hvis tegnet antallet af voxels i en dimension er positiv, bliver enheden Bohr, hvis den er negativ derefter Ångstrøm.

Det sidste afsnit i headeren er en linje for hvert atom består af 5 tal, den første er atomnummer, anden (?), De sidste tre er x, y, z koordinater af atomet centrum.

Volumetriske data
Den volumetriske data er ligetil, en floating point nummer for hver volumetrisk element. Den oprindelige Gaussisk format arrangeret værdierne i det format, vist nedenfor i eksemplet, kan de fleste parsing programmer læser eller hvide rum adskilt format. Traditionelt gitteret er anbragt med x-aksen som den ydre sløjfe og z-aksen som den indre sløjfe, for eksempel skrevet som

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

Eksempel
I det følgende eksempel den volumetriske data er en 40 med 40 af 40 gitter, hvor hver voxel er 0.283459 enheder bred og volumen er på linie med koordinataksen. Der er tre atomer.

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

Comments are closed.