Кубічні Файли Гаусса

Автор: Пол Бурк
Translated by Anna Matesh

Введення

Файл куб описує об’ємні дані, а також атомні позиції, які беруть свій початок з гауссова пакета програмного забезпечення. Файл складається з заголовка, який включає в себе інформацію атома і розміру, а також орієнтацію об’ємних даних. Далі йде об’ємними даних, один скаляр на воксель елемента. Всі аспекти файлу є текстовими (для зручності людини), спочатку чисельні значення були 5 в ширину для цілих чисел, які почали кожен рядок заголовка (після першого) і значення з плаваючою точкою були відформатовані 12.6, тобто 12 символів шириною 6 знаків після коми.

Заголовок

Перші два рядки заголовка, є коментарями, вони, як правило, ігноруються при розборі пакетів або використовуватися в якості двох міток за замовчуванням.

Третій рядок містить число атомів, включених в файл з наступним положенням про походження об’ємних даних.

Наступні три рядки дають число вокселей уздовж кожної осі (х, у, г), за яким слід вектор осі. Зверніть увагу, це означає, що обсяг не повинен бути поєднана з віссю координат, насправді це також означає, що він може бути стриженої хоча більшість об’ємних пакетів не буде підтримувати це. Довжина кожного вектора є довжина сторони воксель, таким чином, завдяки чому по кубічні обсяги. Якщо знак числа вокселей в вимірі є позитивним, то одиниці є Бор, якщо негативна, то ангстрем.

Останній розділ в заголовку один рядок для кожного атома, що складається з 5 чисел, перший номер атома, другий (?), Останні три є х, у, г координати атома центру.

Об’ємні дані

Об’ємна даних проста, один номер з плаваючою точкою для кожного об’ємного елемента. Оригінальний формат Gaussian розташував значення в форматі, показаному нижче в прикладі, більшість програм синтаксичного аналізу може прочитати будь-який порожній простір розділених формат. Традиційно сітка розташована з віссю х в якості зовнішнього контуру і віссю г, як у внутрішньому циклі, наприклад, записати у вигляді

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