Fisiere de cub Gaussiene

 

Scris de Paul Bourke
Decembrie 2003

 

Introducere

Fisierul cub descrie datele volumetrice, precum si pozitiile atomilor, provenind din pachetul software de tip Gaussian. Fisierul consta dintr-un antet care include informatia despre atom si dimensiune, precum si orientarea datelor volumetrice. Aceasta este urmata de datele volumetrice, un element scalar pe voxel. Toate aspectele fisierului sunt text (citibile de om), initial valorile numerice au fost de 5 laturi pentru numere intregi care au inceput fiecare linie de antet (dupa primul) si valori in virgula mobila au fost formatate 12,6, adica 12 caractere latime cu 6 zecimale.

Antet


Primele doua randuri ale antetului sunt comentarii, ele sunt, in general, ignorate prin parsarea pachetelor sau utilizate ca doua etichete implicite. A treia linie are numarul de atomi din fisier urmat de pozitia de origine a datelor volumetrice. Urmatoarele trei linii dau numarul de voxeli de-a lungul fiecarei axe (x, y, z) urmat de vectorul axei. Retineti acest lucru inseamna ca volumul nu trebuie aliniat la axa coordonatelor, intr-adevar inseamna ca poate fi fortat, desi majoritatea pachetelor volumetrice nu vor accepta acest lucru. Lungimea fiecarui vector este lungimea laturii voxelului, permitand astfel volumelor non-cubice. Daca semnul numarului de voxeli dintr-o dimensiune este pozitiv, atunci unitatile sunt Bohr, daca sunt negative atunci Angstroms. Ultima sectiune din antet este o linie pentru fiecare atom format din 5 numere, primul este numarul de atomi, al doilea (?), Ultimele trei sunt coordonatele x, y, z ale centrului atomic.

Date volumetrice

Datele volumetrice sunt simple, un numar de punct plutitor pentru fiecare element volumetric. Formatul original Gaussian a aranjat valorile In formatul prezentat mai jos In exemplu, majoritatea programelor de parsare pot citi orice format separat de spatiu alb. in mod tradițional, grila este aranjata cu axa x ca bucla exterioara si axa z ca bucla interioara, de exemplu, scrisa ca

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

 

Exemplu

In exemplul urmator, datele volumetrice sunt o grila de 40 x 40 x 40, fiecare voxel este de 0,2883459 unitati latime si volumul este aliniat cu axa de coordonate. Exista trei atomi.

CPMD CUBE FILE.
BUCLA EXTERIOARA: X, BUCLA MIJLOCIE: Y, BUCLA INTERIOARA: 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 acest caz, vor exista valori cu virgula mobila de 40 x 40 x 40
:             :             :           :            :            :
:             :             :           :            :            :
:             :             :           :            :            :