Gauss-kubusbestanden

Geschreven door Paul Bourke
december 2003

Invoering

Het kubusbestand beschrijft volumetrische gegevens en atoomposities, het is afkomstig van het Gaussiaanse softwarepakket. Het bestand bestaat uit een koptekst die de atoominformatie en de grootte alsmede de oriëntatie van de volumetrische gegevens bevat. Dit wordt gevolgd door de volumetrische gegevens, één scalair per voxel-element. Alle aspecten van het bestand zijn tekst (leesbaar door mensen), oorspronkelijk waren de numerieke waarden 5 breed voor gehele getallen die elke kopregel startten (na de eerste) en drijvende-kommawaarden 12,6 waren opgemaakt, dat wil zeggen 12 tekens breed met 6 decimalen.

hoofd

De eerste twee regels van de kop zijn opmerkingen; ze worden over het algemeen genegeerd door pakketten te ontleden of worden gebruikt als twee standaardlabels.

De derde regel heeft het aantal atomen in het bestand gevolgd door de positie van de oorsprong van de volumetrische gegevens.

De volgende drie regels geven het aantal voxels langs elke as (x, y, z), gevolgd door de asvector. Merk op dat dit betekent dat het volume niet hoeft te worden uitgelijnd met de coördinaatas, het betekent ook dat het kan worden afgebroken, hoewel de meeste volumetrische pakketten dat niet ondersteunen. De lengte van elke vector is de lengte van de zijde van de voxel, waardoor niet-kubieke volumes mogelijk zijn. Als het teken van het aantal voxels in een dimensie positief is, dan zijn de eenheden Bohr, indien negatief dan Angstroms.

De laatste sectie in de kop is één regel voor elk atoom bestaande uit 5 getallen, de eerste is het atoomnummer, de tweede (?), De laatste drie zijn de x, y, z-coördinaten van het atoomcentrum.

Volumetrische gegevens

De volumetrische gegevens zijn eenvoudig, één drijvende-kommawaarde voor elk volumetrisch element. Het oorspronkelijke Gauss-formaat rangschikte de waarden in de hieronder getoonde indeling, de meeste ontleedprogramma's kunnen elk met witruimtes gescheiden formaat lezen. Traditioneel is het raster gerangschikt met de x-as als de buitenste lus en de z-as als de binnenste lus, bijvoorbeeld geschreven als

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

In het volgende voorbeeld is de volumetrische gegevens een 40 bij 40 bij 40 raster, is elke voxel 0.283459 eenheden breed en is het volume uitgelijnd met de coördinaatas. Er zijn drie atomen.

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