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.
Как ей пользоваться, алгоритм
Пусть нам нужно выполнить минимизацию энергии для какой-либо молекулы.
- Приготовить координаты ее в формате XYZ. Правильный формат XYZ -- это тот который читается MOLDEN.
- Сделать файл с группой $molecule из файла XYZ, при помощи скрипта xyz2pri.
- Дописать в этот файл необходимые группы с ключевыми словами. Можно приготовить их заранее в файле, скажем, header.txt и каждый раз склеивать его командой cat с переадресацией вывода. Сначала обычно делается task=optimize.
- Проверить и установить в нем правильные charge= и multiplicity=. Установить set= при необходимости.
- Запустить задачу в очередь командой pbspriroda6
- Получив выводной файл, искать в нем строку OPTIMIZATION CONVERGED.
- Если OPTIMIZATION CONVERGED не найдена то извлечь из файла вывода последнюю геометрию командой lastgeo и дозаписать ее во входной файл; удалить из входного файла старую группу $molecule. Вернуться к шагу 4!
- Если OPTIMIZATION CONVERGED найдена то извлечь из файла вывода последнюю геометрию командой lastMOL и дозаписать ее во входной файл; удалить из входного файла старую группу $molecule.
- Изменить во входном файле task=optimize на task=hessian
- Запустить задачу в очередь командой pbspriroda6
- Получив выводной файл, искать в нем строку Normal Mode.
- Ниже нее по тексту находятся частоты нормальных колебаний. Проверить, что все они положительны.
- Если нет, то то извлечь из файла вывода последнюю группу $Energy командой lasteng и дозаписать ее во входной файл. Изменить task=hessian обратно на на task=optimize и вернуться к шагу 5!
- Если да, то -- Ура! Получился минимум. Можно искать в этом файле строку ZPVE и рядом с ней будут нужные значения электронной энергии, энтропии, поправок энтальпии и свободной энергии. Можно конвертировать последнюю геометрию в формат XYZ для просмотра в MOLDEN, командой pri2xyz. Писать статьи, защищать диссертации, получать гранты и премии.
Цитирование
При использовании результатов полученных с использованием Priroda, следует ссылаться на следующие вещи:
- 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.;
- Laikov D.N. PhD dissertation, Moscow State University, 2000 (Д.Н.Лайков. Развитие экономного подхода к расчету молекул методом функционала плотности, его применение к решению сложных химических задач. Диссертация на соискание ст. к.ф.-м.н., МГУ, 2000).;
- 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.;
- Лайков Д.Н., Устынюк Ю.А.. Система квантово-химических программ “ПРИРОДА-04″. Новые возможности исследования молекулярных систем с применением параллельных вычислений. // Известия академии наук, Серия химическая, 2005, №3, 804-810.;
- 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.;
- 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 взяты с сайта Уфимского Квантово-Химического Общества

