Priroda для самых маленьких

Материал из KNCWiki.

Перейти к: навигация, поиск

Содержание


Введение

Что такое Priroda

Priroda это программа для GGA DFT вычислений, написанная Дмитрием Лайковым; в последних ее версиях появились также гибридные DFT и MP2. Уникальной особенностью Priroda является также возможность релятивистских вычислений, и наличие базисов для всех элементов таблицы Менделеева. Related texts: Priroda Documentation and Priroda Tutorial.

Где ее взять

У автора, Дмитрия Лайкова.

Зачем она нужна

Она считает очень быстро, по сравнению с программами предыдущих поколений. В 10-50 раз быстрее. Это позволяет считать большие молекулы, которые невозможно взять другими методами и кодами. Практически, для рутинных квантовохимических задач -- GGA DFT оптимизаций геометрии и поисков переходных состояний, расчетов частот нормальных колебаний -- имеет смысл использовать только Priroda. Все остальное устарело.

Более того, Priroda очень надежный и хорошо протестированный код с широкой пользовательской базой. Это выгодно отличает его от большинства других академических кодов которым обычно нельзя доверять.

Имеется также возможность использовать Priroda совместно с программой Gaussian: Using Priroda as an External program for Gaussian

Различия в версиях

Priroda считает быстро за счет использования техники resolution-of-identity при рассчете интегралов, кулоновских и обменных-корреляционных. Для чего использует, в добавление к орбитальному базису, соответствующий ему, оптимизованный fitting-базис. Поскольку базис должен соответствовать fitting базису, просто так изменить его нельзя. Более того, особенности разных уровней теории требуют разных фиттинг базисов -- то есть, старые версии не должны использоваться с riMP2; чтобы сделать жизнь еще запутанней, базисы для модели точечных ядер не должны применяться в модели конечных ядер, которая модель в свою очередь изменилась от версии 3 к версиям 4 и выше.

С другой стороны, новые систематические базисы в версии 5 достаточны для всего, и изменять их обычно незачем.

Формат ввода

Формат ввода Priroda сделан в стиле GAMESS-US (но представляет больше свободы): данные и ключевые слова находятся в группах. Группа это что-то начинающееся с $имя_группы и заканчивающееся $end. Внутри группы обычно задаются значения для переменных как ключевое_слово=значение. Порядок групп внутри входного файла и ключевых слов внутри группы не имеет значения. Исключение составляют группы $molecule и $Energy. Регистр символов также не имеет значения (за исключением имен файлов, например в ключевом слове save=, поскольку регистр имен файлов имеет значение для ОС Linux).

Ключевые слова документированы в Priroda Documentation. Помимо них, там всегда много недокументированных возможностей, но пользоваться ими лучше с осторожностью, проконсультировавшись с автором. Умолченные значения ключевых слов обычено очень разумны для большинства случаев, так что изменять приходится лишь немногие из них.

Пример ввода: молекула аммиака, оптимизация, нерелятивистский расчет, координаты в виде Z-матрицы.

$control task=optimize theory=DFT basis=basis1.bas four=0 $end
$grid acc=1e-8 $end
$scf conv=1e-6 iterations=100 $end
$optimize tol=1e-5 steps=100 $end
$molecule
 z-matrix
 set=B11
   7
   1    1    1.02672223
   1    1    1.02672140    2    104.150240
   1    1    1.02671372    2    104.144601   -3    104.150290
 $end

Еще пример: скалярный релятивистский расчет частот для NpO2 2+. Геометрия в виде декартовых координат.

$control  task=hessian theory=DFT four=1 basis=basis4.bas
 print=charges+bonds save=/home/username/npo2.vec $end
$dft functional=PBE $end
$scf iterations=300 $end
$guess read=1 $end
$molecule charge=2 mult=2
  cartesian
  set=L2
   93     0.00000003  -0.00000001  -0.00000007
    8    -0.00000002   0.00000001   1.71247831
    8    -0.00000002   0.00000001  -1.71247823
$end

Формат вывода, информация для рестартов

Идея рестартовой информации опять же, похожа на ту что в GAMESS-US: результаты сохраняются в виде групп форматированного текста. Которые группы потом вырезаются пользователем и вставляются в файл ввода. Однако, в отличие от GAMESS-US они помещаются не в отдельный punch-файл, а прямо в файл вывода, и маркируется соответствующими символами в начале строки. Это сильно облегчае написание скриптов для обработки результатов -- то есть, вырезание групп и добавление их к файлу ввода, например. Пример фрагмента файла вывода, содержащего финальную, оптимизованную геометрию:

 [....skip....]
   9  -0.000000 100.000000   0.000000 
 Max. Displacement = 0.0000040
    
 OPTIMIZATION CONVERGED in 4 steps!
MOL>$molecule
MOL> charge=2 mult=2
MOL> cartesian
MOL> set=L2
MOL>  93     0.00000003  -0.00000001  -0.00000007
MOL>   8    -0.00000002   0.00000001   1.71247831
MOL>   8    -0.00000002   0.00000001  -1.71247823
MOL>$end
MOL> Energy = -28944.57077327 

 ============================================================
 [....skip....]

Еще пример, группа $Energy содержит энергию, градиент и, если был task=hessian, Гессиан:

[....skip....]
 time: Coulomb-type Gradient            :    57.9 ( 99.9%)
 time: Ex. - Corr.  Gradient            :     5.6 (100.0%)
 
eng>$Energy
eng> E=-2.894457077327e+04
eng> D= 0.00000000e+00  0.00000000e+00  0.00000000e+00
eng> G= 3.53877831e-09  1.65504544e-08 -3.64771621e-07
eng>   -1.31128901e-07 -6.73350427e-09 -2.19780956e-06
eng>    1.27590122e-07 -9.81695012e-09  2.56258122e-06
eng>$end

 G(max) = 0.00000256
 [....skip....]

Очевидно, что нужно вырезать из файла все строки начинающиеся на MOL> и eng>, и освободится от самих символов MOL> и eng>; после чего получатся группы, пригодные для файла ввода Priroda.

Как ей пользоваться, алгоритм

Пусть нам нужно выполнить минимизацию энергии для какой-либо молекулы.

  1. Приготовить координаты ее в формате XYZ. Правильный формат XYZ -- это тот который читается MOLDEN.
  2. Сделать файл с группой $molecule из файла XYZ, при помощи скрипта xyz2pri.
  3. Дописать в этот файл необходимые группы с ключевыми словами. Можно приготовить их заранее в файле, скажем, header.txt и каждый раз склеивать его командой cat с переадресацией вывода. Сначала обычно делается task=optimize.
  4. Проверить и установить в нем правильные charge= и multiplicity=. Установить set= при необходимости.
  5. Запустить задачу в очередь командой pbspriroda6
  6. Получив выводной файл, искать в нем строку OPTIMIZATION CONVERGED.
  7. Если OPTIMIZATION CONVERGED не найдена то извлечь из файла вывода последнюю геометрию командой lastgeo и дозаписать ее во входной файл; удалить из входного файла старую группу $molecule. Вернуться к шагу 4!
  8. Если OPTIMIZATION CONVERGED найдена то извлечь из файла вывода последнюю геометрию командой lastMOL и дозаписать ее во входной файл; удалить из входного файла старую группу $molecule.
  9. Изменить во входном файле task=optimize на task=hessian
  10. Запустить задачу в очередь командой pbspriroda6
  11. Получив выводной файл, искать в нем строку Normal Mode.
  12. Ниже нее по тексту находятся частоты нормальных колебаний. Проверить, что все они положительны.
  13. Если нет, то то извлечь из файла вывода последнюю группу $Energy командой lasteng и дозаписать ее во входной файл. Изменить task=hessian обратно на на task=optimize и вернуться к шагу 5!
  14. Если да, то -- Ура! Получился минимум. Можно искать в этом файле строку ZPVE и рядом с ней будут нужные значения электронной энергии, энтропии, поправок энтальпии и свободной энергии. Можно конвертировать последнюю геометрию в формат XYZ для просмотра в MOLDEN, командой pri2xyz. Писать статьи, защищать диссертации, получать гранты и премии.

Цитирование

При использовании результатов полученных с использованием Priroda, следует ссылаться на следующие вещи:

  1. Laikov D.N. Fast evaluation of density functional exchange-correlation terms using the expansion of the electron density in auxiliary basis sets. // Chem. Phys. Lett., 1997, 281, pp.151-156.;
  2. Laikov D.N. PhD dissertation, Moscow State University, 2000 (Д.Н.Лайков. Развитие экономного подхода к расчету молекул методом функционала плотности, его применение к решению сложных химических задач. Диссертация на соискание ст. к.ф.-м.н., МГУ, 2000).;
  3. Laikov D.N., Ustynyuk Yu.A., PRIRODA-04: a quantum-chemical program suite. New possible in the study of molecular systems with the application of parallel computing. // Russ. Chem. Bull., Int. Ed., 2005, V. 54, №3, pp.820-826.;
  4. Лайков Д.Н., Устынюк Ю.А.. Система квантово-химических программ “ПРИРОДА-04″. Новые возможности исследования молекулярных систем с применением параллельных вычислений. // Известия академии наук, Серия химическая, 2005, №3, 804-810.;
  5. Laikov, D.N. A new class of atomic basis functions for accurate electronic structure calculations of molecules // Chem. Phys. Lett. 2005, 416, pp.116-120.;
  6. Laikov, D. N. “An implementation of the scalar relativistic density functional theory for molecular calculations with Gaussian basis sets”; DFT2000 Conference, 2000, Menton, France.

Примечание: pdf-файлы для ссылок с 1 по 5 взяты с сайта Уфимского Квантово-Химического Общества

Личные инструменты
Заглавная страница