Gaussian Cube filer

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

Skrevet av  Paul Bourke
Desember 2003

Introduksjon

Kuben fil beskriver volumetriske data samt atomposisjoner, det stammer fra den Gaussiske programvarepakken. Filen består av en topptekst som inneholder atomet informasjon og størrelse, samt orientering av de volumetriske data. Dette etterfølges av de volumetriske data, en skalar per volumelement element. Alle aspekter av filen er tekst (lesbare), opprinnelig tallverdiene var 5 bred for heltall som startet hver overskrift linje (etter det første) og flytepunktverdiene ble formatert 12,6, det vil si 12 tegn bred med 6 desimaler.

Overskrift

De to første linjene i overskriften er kommentarer, de er generelt ignorert av analyse pakker eller brukes som to standardetikettene.

Den tredje linje har antallet atomer som inngår i filen, fulgt av posisjonen til opprinnelsen av de volumetriske data.

De neste tre linjer gir antallet voksler langs hver akse (x, y, z), etterfulgt av aksen vektoren. Merk dette betyr volumet behøver ikke å være på linje med koordinere aksen, ja det betyr også at det kan bli skåret selv om de fleste volumetriske pakkene ikke vil støtte det. Lengden av hver vektor er lengden av den side av volumelementet og dermed tillater ikke-kubiske volum. Hvis fortegnet til antallet voksler i en dimensjon er positiv så enhetene er Bohr, hvis negative deretter Ångstrøm.

Den siste seksjonen i hodet er en linje for hvert atom som består av 5 tall, den første er den atomtallet, andre (?), De siste tre er de x, y, z koordinatene for sentrum atom.

Volumetriske data

Den volumetriske data er grei, en flytetall for hvert volumelement. Den opprinnelige Gaussiske formatet anordnet verdiene i det format som er vist nedenfor i eksemplet, kan de fleste analyseprogram leser eller hvite områder adskilt format. Tradisjonelt risten er innrettet med x-aksen som den ytre sløyfe, og z-aksen som den indre sløyfe, 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 ved 40 ved 40 gitter, hver voksel er 0.283459 heter bred og volumet er innrettet med koordinatakse. Det 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
      :             :             :           :            :            :
      :             :             :           :            :            :
      :             :             :           :            :            :
        I dette tilfellet vil det være 40 x 40 x 40 flytende punktverdier
      :             :             :           :            :            :
      :             :             :           :            :            :
      :             :             :           :            :            :