Open: Мастер-класс: Моделирование реакции

From TheorChemGroup at ZIOC RAS

Введение

В данном мастер-классе/мануале я покажу вам как смоделировать реакцию от экспериментальных данных до нахождения механизма реакции.

Предложить механизм, значит локализовать все минимумы (в расчете не должно быть мнимых частот) и переходные состояния (ПС) (1 мнимая частота, соответствующая разрыву и образования связей в ходе реакции), а также найти все энергии активации (показать, что константы скорости соответствуют эксперименту) и свободные энергии Гиббса (показать, что процесс разрешен).

Даже если вы не будете читать дальше, скажу самое главное в моделирование реакций:

  • Внимательно изучите экспериментальные данные
  • Читайте мануал используемой программы
  • Иногда экспериментальные данные могут ошибочны, а экспериментаторы могут неправильно их интерпретировать
  • Иногда расчеты могут показывать неверные данные, а расчетчики могут неправильно их интерпретировать

Что понадобится

  • Доступ к боту/серверву
  • Chemcraft
  • Notepad++
  • Chemdraw
  • (Опционально) Python/Excel/Photoshop для построения энергетического профиля реакции

Основы моделирования

По нашему мнению любое моделирование состоит из следующих этапов (это все изложено в лекции, тут)

  1. Построение ментальной модели процесса:
    • Вы должны добыть и осознать всю доступную информацию про реакцию. Вообще все что могут вам сказать экспериментаторы. перечислю самые основные данные
      • Условия эксперимента (кто к чему доливали, в каком порядке, какие условия, ...), а так же всю информацию про оптимизацию условий (перебор р-лей, температур, ...)
      • Наблюдения в процессе реакции (изменения цвета, выделение газа, нагрев смеси, ...) и после нее (выход, конверсия, чистота, ...)
      • Данные ф/х методов анализа (ЯМР, ИК, рентген) и в какой момент они сняты (в процессе реакции, через час/два/день)
      • Известные химикам релевантные статьи по теме
      • Мнение химиков обо всем этом. При этом помните, что ваши коллеги это тоже люди и ученые, которые могут ошибаться. Относитесь критично к их анализу
    • Теперь начинается ваша работа. И начинается она с изучения литературы. Поищите сами статьи по теме проекта (и экспериментальные и расчётные)
    • После этого можно наконец проанализировать все данные и
      • Понять на какие вопросы будет отвечать ваш фрагмент статьи (Например, вы объясняете энантиомерный избыток или необычный продукт)
      • Предложить механизм процесса и какие эффекты его контролируют. Обязательно нарисовать механизмы в chemdraw. Да именно множественное число, сразу разрисуйте все ваши теории про протекание реакции.
  2. Перенос ментальной модели в расчет. Поздравляю вы предположили что происходит в колбе. Теперь надо понять как это посчитать. Напомню, что у нас есть 3 основных класса приближений. Будет кратко, подробнее есть в лекции. Еще раз скажу, что на многие вопросы можно найти ответы в статьях. С большой вероятностью подобные реакции кто-то уже моделировал. Но опять-таки, относитесь критично к написанному: если в статье приведено сравнение 3 методов для задачи и обосновано выбран один этому в целом можно верить, а если люди просто взяли B3LYP/6-31G, то подумайте дважды.
    • Химическая модель (какие атомы во вселенной учитываем и как).
    • Ансамбль (конф. поиск, молекулярная динамика, ...)
    • Уровень теории (как решаем уравнение Шредингера)
  3. Рисование структур в Chemcraft (или не дай бог где-то еще) и постановка расчетов
  4. Анализ результатов и либо написание статьи, либо возвращение к пункту 1.
    1. В ходе анализа вам неизбежно придется посчитать свободные энергии. Это можно сделать из свободных энергий, которые выдает ORCA, но мы считаем, что лучше воспользоваться программой Goodvibes, которую мы еще и модифицировали.

Теперь давайте поговорим подробнее про пункты 3 и 4

Chemcraft

Большая часть популярных программ для квантовой химии использует формат координат xyz. То есть трехмерные координаты в виде:

Символ элемента (или порядковый номер) координата по x координата по y координата по z

C       -2.727421687      0.000000000     -5.280900664
H       -2.196987741     -0.951333822     -5.204710633
H       -2.010874002      0.821859802     -5.223394016
H       -3.443969372      0.083844265     -4.461308883
H       -3.257855632      0.045629756     -6.234189124

Сложность заключается в том, что есть по факту два формата xyz: обрезанный (в примере выше) и полный (ниже), в котором первая строка это число атомов, вторая комментарий (любой или пустая строка) и только затем координаты. Некоторые программы (orca, gaussian) требуют обрезанный формат, а другие полный (xtb, crest). Следите за этим

5
This is CH4 in full xyz
C       -2.727421687      0.000000000     -5.280900664
H       -2.196987741     -0.951333822     -5.204710633
H       -2.010874002      0.821859802     -5.223394016
H       -3.443969372      0.083844265     -4.461308883
H       -3.257855632      0.045629756     -6.234189124

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

Номера атомов в Chemcraft начинаются с "1", как в большинстве программ, но в ORCA нумерация идет с "0", поэтому, например, при постановке констрейнов (дальше рассказано про это) в инпут файле для ORCA, вычитайте единицу из номера атома в Chemcraft

Учить пользоваться Chemcraft через текст задача неблагодарная. Поэтому я ее выполнять не буду, но дам пару советов. Для себя: сделать запись экрана с рассказом про Chemcraft

Самое главное — чем аккуратнее вы нарисуете структуру, тем быстрее расчет закончится (да и вообще выше шанс, что найдет правильную геометрию).

В структуре должны быть правильные длины связей и углы между ними, большая часть связей должна находиться в заторможенной конформации (если это возможно). Следите за расстояниями между несвязанными атомами. Например, может "случайно" образоваться молекула H2 из близко расположенных атомов метильных групп или другие подобные недоразумения. Важно запомнить еще три вещи про рисование структур.

  • Химическая связь это модель, и в реальности она не существует, большая часть квантовохимических программ оперирует только длинами связей, если вы не указываете обратного и не задаёте порядок связи
  • Программа не способна изменять конфигурацию E/Z изомеров и находить оптимальные торсионные углы. Если в вы не можете опрделить их вручную, используйте конформацонный поиск (CREST, Maestro)
  • При открытии результата расчета в Chemcraft могут не отображаться некоторые связи из-за их большой длины (зачастую связи с металлом, и еще с эпоксидами у него проблемы), в таком случае посмотрите на длины связей и оцените их адекватность
    • При этом Chemcraft все еще очень умная программа и 95% связей он рисует правильно, этим можно воспользоваться: нарисуйте вашу структуры как считаете правильным, а затем во вкладке "edit" нажмите на опцию "Rebond". Chemcraft самостоятельно проставит везде связи и если вы увидите, что он поставил связь там, где вы их не ждете (пример про H2 выше) или не нарисует связь там, где ждете, то с очень большой вероятностью вы нарисовали структуру криво, подумайте и перерисуйте.

Чтобы нарисовать наиболее правдоподобную геометрию можно изучить структуры из РСА похожих соединений и статьи про них (просите у химиков либо в CCDC). Помните однако, что структура в кристалле не всегда соответствует структуре в растворе.

Для начала я всегда советую вам сохранять нарисованную структуры в формате xyz, пускай лежат.

Постановка расчетов

Структуры нарисованы, уровень теории выбран. Хорошо, пора ставить расчеты. Считать будем в ORCA 6.

Для начала пара умных мыслей
  1. В начале своей карьеры моделиста (первые полгода точно) проверяйте инпут-файл перед запуском расчета. Перечитывайте строку запуска (то ли вы просите от программы), проверяйте координаты. Если расчет сразу встанет в очередь и сразу упадет (это хороший случай) тако проверкой вы сэкономите немного времени и сможете поставить больше расчето в месяц. А теперь представьте если на сервере очередь и вы ошиблись в инпуте так, что расчет не упадет, но посчитает фигню. Вы будете ждать пока расчет пройдет очередь и пока досчитается (может дня 3 в сумме), чтобы просто увидеть ошибку, которую могли исправить за 10 секунд. Понимаю, что осознание этого приходит не сразу, но задумайтесь)
  2. Поставить расчет это не "выстрелил и забыл". Не надо дожидаться окончания расчета, чтобы увидеть что там получилось, проверяйте расчеты хотя бы раз в день. Откройте лог и проверьте, что расчет идет как вы ожидаете. Например, ничего не оторвалось в ходе оптимизации, ПС не свелось случайно в минимум, расчет не ушел в осцилляцию (энергия и структура почти не меняются и скачут около минимума) и так далее. Логика такая же как в прошлом пункте. Только вот даже абсолютно правильный расчет может выдать бред спустя 3 дня, потому что, например, расчет был поставлен по неправильной ментальной модели. Если в расчете пошло что-то не по плану (оторвался кусок молекулы) и вы понимаете, что такого точно быть не может, отменяйте расчет, делайте выводы и ставьте другой
  3. Ставьте сразу все релевантные расчеты. Если вы знаете, что надо поставить 120 расчётов (2 пути механизма х 6 состояний х 10 конформеров), никакого смысла растягивать их нет - лучше сразу поставить все. Конечно, я понимаю, что есть фактор усталости. Можно поставить все 120 расчетов не за раз, а в течении дня, но нет никакого смысла поставить в один день 20 расчетов, дождаться их окончания, поставить еще 20 и так далее. Да, может быть ситуация, что первые 20 ответят на все ваши вопросы. Например, вам нужно как-то понизить энергию ПС и у вас есть много идей: координировать растворитель, попробовать другой конформер, учесть основание, попробовать другую координацию лиганда и это все для каждого из 4 стереоизмеров. Может быть достаточно будет поставить только расчет с координацией растворителя и он сработает. Но по теории вероятности и по опыту намного чаще будет ситуация, что вам все равно придется поставить все запланированные расчеты, и вы просто так растяните проект (а в худшем случае не успеете к дедлайну)
  4. Ради Бога если вы считаете не через бота, а сами на сервере, не удаляйте расчеты, пожалуйста. Даже если там ошибка, даже если бред. Вы можете считать их бесполезными, но ваш научник сможет из них понять, что не так с механизмом, например.
  5. Относительные энергии можно считать только из абсолютных полученных на одном уровне теории, с одним методом, базисом, поправкой, ... Иначе подход компенсации ошибок не будет работать и вы получите полный бред. Это относится и к одинаковому запуску Goodvibes для всех составляющий реакции
  6. Вы обязаны знать значение каждого кейворда в инпут файле. Что он значит и почему он находится в этом инпуте.
  7. Связанный с прошлым пункт: для начала старайтесь составить инпут файл с минимальным числом кейвордов. И только если что-то не работает, и вы понимаете какие ключевые слова и почему надо вписать, вписывайте их. Лучше по-одному, чтобы оценить вклад каждого.
  8. Если у вас есть много конформеров стартовой молекулы (СМ) и переходного состояния (ПС), то для определения энергии активации реакции достаточно просто посчитать разницу между минимальными по энергии конформерами СМ и ПС. Работает это, правда, только если эти конформации легко переходят друг в друга, но чаще всего это условие выполняется.

С общими советами покончено давайте обсудим как собственно ставить расчет и составить инпут файл

Основы
  1. Вы общаетесь с программой по средствам инпут файлов. Для разных программ они выглядят по-разному. Чаще всего можно встретить два основных подхода к инпут файлам
    1. Один инпут файл (ORCA, Gaussian). В нем будет написано и что вы хотите от программы и координаты атомов
    2. Два файла (XTB, CREST). Отдельно координаты и отдельно параметры запуска
  2. Все данные в инпут файле можно разбить на 3 категории:
    1. Координаты (тут понятно)
    2. Уровень теории (выбранные вами приближение по типу методами, базиса, учета растворителя, точность сведения, ...). Он должен быть одинаковый для всех расчетов в рамках одного проекта
    3. Цель расчета (что мы хотим от программы: посчитать энергию, сделать оптимизацию, посчитать частоты, ...)
    4. Технические особенности запуска программы (максимальное число шагов оптимизации, сколько памяти выделить)

Давайте рассмотрим эти три категории на примере инпут файла ORCA. Не будем вдаваться в подробности ключевых слов, это пока не важно

%pal nprocs 24 end — на скольких потоках считать. Итоговая энергия от этого очевидно не зависит, так что категория 4
! M062X def2-svp CPCM(dioxane) — метод, базис, учет растворителя, все это конечно уровень теории, влияющий на итоговую энергию и изменяющий решение уравнения Шредингера, категория 2
! TightOpt — Просим посчитать программу сделать оптимизацию, дополнительная операция, проводимая на определённом уровне теории, сама не является уровнем теории, категория 3. Но это еще и уровень теории так как определяет критерий сходимости, поэтому  2 тоже
! Freq — Просим посчитать программу частоты, дополнительная операция, проводимая на определённом уровне теории, сама не является уровнем теории, категория 3
! TightSCF —  Этот keyword определяет то, насколько точно мы сводим SCF. От него энергия будет зависеть это уровень теории. Категория 2
%MaxCore 3000 — снова легко, просто определяет объем выделенной памяти, категория 4

*xyz 0 1 — формат координат, заряд и мультиплетность. Информация о координатах, как и сами координаты ниже это, конечно, категория 1
C       -2.727421687      0.000000000     -5.280900664
H       -2.196987741     -0.951333822     -5.204710633
H       -2.010874002      0.821859802     -5.223394016
H       -3.443969372      0.083844265     -4.461308883
H       -3.257855632      0.045629756     -6.234189124
*
Примеры расчетов
Single point

Надеюсь с эти разобрались, давайте перейдем к составлению простейших инпут файлов. Самый простой расчет это расчет энергии в точки.

! M062X def2-svp CPCM(dioxane) TightSCF

*xyz +1 1
N       -0.542701254      0.000000000     -2.434083724
H       -0.542701254      0.937180000     -2.036660724
H        0.268919746     -0.468590000     -2.036660724
H       -1.354322254     -0.468590000     -2.036660724
H       -0.542701254      0.000000424     -3.434083724
*

Как видите мы просто задали уровень теории, координаты и параметр точности, все. Мы не дали ORCA никаких команд, и в такой случае она считает энергию в точке.

Кстати смотрите, я поставил заряд +1, так как мы считаем NH4+

Optimization + Frequencies

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

! M062X def2-svp CPCM(dioxane) TightSCF Freq TightOpt
Transition State search + Frequencies

Поиск переходных состояний это отдельное искусство, описанное в отдельном мануале, который сейчас на ремонте. Тут будет краткая информация. Для поиска переходного состояния нужен отдельный keyword — OptTS. Расчет частот (Freq) все еще обязателен. Также стоит посчитать Гессиан (предшественник частот) перед началом оптимизации (Calc_Hess true). Это можно сделать с помощью отдельных ключевых слов в отдельном блок %geom.

В ORCA большинство дополнительных функций вызывается из блоков. Каждый блок начинается с %название и заканчивается end. Часто ключевые слова внутри блока также должны заканчиваться end, сверяйтесь с мануалом.

TightOpt остается и теперь несет роль исключительно задания критириев точностию

! M062X def2-svp CPCM(dioxane) TightSCF Freq TightOpt OptTS

%geom
Calc_Hess true # calculation of the exact Hessian before the first optimization step
end

*xyz +1 1
N       -0.542701254      0.000000000     -2.434083724
H       -0.542701254      0.937180000     -2.036660724
H        0.268919746     -0.468590000     -2.036660724
H       -1.354322254     -0.468590000     -2.036660724
H       -0.542701254      0.000000424     -3.434083724
* 
Более конкретные советы по расчетам
  1. Я советую использовать TightSCF и TightOpt всегда, когда вам нужны энергии и размер системы это позволяет (то есть практически всегда)
  2. ORCA часто может упасть так как ей не хватает оперативной памяти, причем она может даже нормально об этом не сказать. Внизу страницы вставил текст от Ильи Проломова, показывающий как решить эту проблему
Негативные исходы расчета
  1. Расчет упал и выдал техническую ошибку. Ошибок в расчете может быть великое множество и обсуждать их все я не хочу. Если вы не понимаете смысл ошибки, можете писать в чатик или в лс руководителю или мне. Частыми причинами ошибок могут стать: плохая начальная геометрия, неправильный заряд и мультиплетность, ошибка в инпуте, недостаток памяти (можно увеличить параметром %maxcore 3000, то есть выделить на каждое ядро по 3ГБ оперативной памяти). Исправив ошибку переставьте расчет
  2. Расчет свелся куда-то не туда или вообще не свелся. Тут опять-таки может быть множество проблем, поэтому дам лишь пару советов
    • Плохая начальная геометрия. Вы можете сделать следующее
      • Взять последнюю геометрию из расчета, если она похожа на ожидаемую и переставить расчет с ней
      • Сделать предоптимизацию
      • Перестроить структуру исходя из советов выше
    • Вы уже находитесь очень близко к минимуму или максимуму, и/или критическая точка не выражена. То есть расчет постоянно "перепрыгивает" правильную геометрию. В таком случае имеет смысл поварьировать параметр %maxstep, изменяя шаг расчета. Или обсудив с кем-то принять, что реакция безбарьерная, например, то есть без ПС
    • Часто при поиске ПС помогает пересчет матрицы Гесса через каждые несколько шагов, эту функцию можно включить параметром Recalc_Hess в разделе %geom
    • Того, что вы ищите, не существует. Программа может не найти минимум или ПС, потому что его не существует даже на бумаге. Как отличить этот исход от предыдущих? Короткий ответ - простого метода не существует. Для этого нужен опыт в теоретической химии и знания в синтетической. Кроме того обычно приходится перепробовать несколько из вышеописанных (и неописанных) методов сведения расчета, чтобы более-менее убедить себя, что искомой структуры нет. Самый "простой" способ выйти из этого положения - найти правильную структуру, согласующуюся со всеми данными или полностью опровергнуть модель, на которой построен поиск этого несуществующего соединения
    • Попробуйте воспользоваться другим методом поиска ПС или минимума. Во-первых, примените оптимизацию с констрейном, если не сделали этого. Если ищите ПС и у вас есть реагент и продукт можно сделать NEB (Nudged Elastic Band). Этот метод "соединяет" два минимума, пытаясь найти максимум на потенциальной кривой, тем самым получая ПС. Если у вас получилось какое-то ПС, но мнимая частота не совсем "понятная", то есть не очевидно, какие два минимума соединяет это ПС можно сделать IRC (Intrinsic Reaction Coordinate), которое как раз находит реагент и продукт, соединённые вашим ПС
  3. Даже если расчет прошел успешно, посмотрите глазами на полученное геометрию. Программа не способна оценивать адекватность геометрий с химической точки зрения, поэтому после расчета проверяйте не только успешность завершения расчета, но и получившуюся геометрию
Позитивный исход расчета

Расчет завершился успешно, геометрия выглядит, как мы ожидаем, в минимуме нет мнимых частот, в переходном ― одна мнимая частота, отвечающая реакции. В таком случае можно смотреть на энергии (Final Gibbs free energy), найти энергии активации и оценить константы скорости реакции, чтобы сделать вывод о возможности протекания реакции через исследуемый механизм. Напомню, что при комнатной температуре энергия активации не должна превышать 25-30 ккал/моль, чтобы реакция прошла за 24 часа.

Есть четыре возможных варианта, при которых энергия активации на одной из стадий получается больше 30 ккал/моль.

  • Слишком высокая энергия максимума (ПС). Основная причина - не минимальная по энергии конформация
  • Слишком низкая энергия минимума. Вы спросите, может ли такое быть? Да, может. Структура, которую вы нашли как минимальную может не существовать в реальности.
  • Неправильно рассчитаны энергии. То есть подвело одно из приближений. Может базис слишком маленький или нужен явный учет растворителя.
  • Вы посчитали все правильно, но модель реакции нерелевантная и не может описать поведение системы в этих условиях. Банально, неправильный механизм.

Задача

Изучаемая реакция

Реакция взята отсюда [pdf], все данные в статье есть, поэтому если захотите найти подсказки, всегда сможете это сделать. В самом мастер-классе я постараюсь свести подсказки к минимуму и даже в конце не приведу правильный механизм, посмотрите его в статье

Есть два соединения, содержащих хиназолинононовый и цимантренильный фрагменты (4 и 3). В ацетонитриле происходит отщепление одного CO-лиганда и реакция получающегося шестнадцатиэлектронного комплекса с молекулой растворителя. В бензоле соединение 4 реагируют в соответствии с нашими ожиданиями, в результате чего образуется хелат 6, со связью Mn-O. В то же время реакция с соединением 3 не приводит к продукту 5, а вместо этого получается смесь 4 и 6. Это подтверждается спектрами ИК, ЯМР и УФ. Насколько нам известно, этот фотохимический перенос цимантренильной группы от кислорода к азоту является первым примером, найденным в литературе, где цимантрен сохраняет все три карбонила при фотовозбуждении. Надо понять, почему это так происходит, то есть предложить механизм реакции из 3 в 4.

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

  1. Процесс термической природы с миграцией CH2 от азота к кислороду
  2. Реакция с сохранением всех трех CO-лигандов и участием марганца в реакции
  3. Реакция, начинающаяся с удаления одного CO-лиганда с перегруппировкой и возвращением CO

Порядок действий

Вам нужно нарисовать в Chemdraw предполагаемый механизм, по одной (или нескольким) моделям. Он должен начинаться с 3 и заканчиваться 4. Постарайтесь применить свои знания химии и посмотреть в статьях вероятные структуры интермедиатов. Я прикрепляю файл со своими механизмами.

Далее рисуем структуры в Chemcraft

Теперь надо выбрать приближения

  • Метод решения уравнения Шредингера (не забыть про полуэмпирическую поправку)
  • Базис
  • Метод учета сольватации
  • Метод расчета энергии (свободная/электронная)

Если это сделано, можно создать инпут-файл. Прикрепляю пример, который получился у меня, с ним можно сверить ваш. Оптимизация в минимум, Поиск переходного состояния, Оптимизация с констрейном (не забывайте делать ее перед поиском ПС, а также помните, что в ORCA нумерация атомов начинается с нуля)

Поздравляю, инпут-файл готов, можете отправлять его боту и ждать ответа

Если все проблемы решены, все частицы в механизме локализованы, а энергии сходятся с экспериментом, можно делать вывод о протекании реакции и нарисовать ее энергетический профиль, то есть отобразить все стадии на картинке и подписать энергии. Прикрепляю ниже пример профиля своего коллеги, мой можно найти в статье, но тогда вы узнаете ответы!

Профиль реакции

Выделение памяти ORCA

Если ORCA завершается с общим сообщением: "ORCA finished by error termination in [ORCA module]" без какого-либо другого полезного сообщения выше, причина зависит от того, какой модуль ORCA был запущен. Если запущенный модуль был модулем, интенсивно использующим память, например: orca_mp2 , orca_scfhess , orca_mdci , orca_mrci и т. д., возможно, для задания либо не хватило оперативной памяти или места на диске, либо возникла проблема с доступом к памяти или диску. Речь также может идти о проведении расчета небольшой системы со слишком большим количеством ядер (выполнение расчета системы с 60 ядрами и всего лишь несколькими атомами не имеет смысла и приводит к непредсказуемым результатам). Также о на хватке памяти сигнализирует сообщение "Not enough memory".

На примере Курчатовского кластера разберем выделение памяти для расчета:

Для начала в ORCA память выделяется не на задачу, а на поток. То есть сколько памяти займет ваш расчет будет зависеть не только от команды выделения памяти (%maxcore), но и от количества выделенных потоков (%pal nprocs). На одну ноду HPC4 выделяет 128 Гб ОЗУ. Скрипт ProPetrovich автоматический установит 24 или 28 потоков (самому их устанавливать не надо). Однако вам не следует запрашивать более 75 % доступной физической памяти (поскольку ORCA иногда будет использовать больше, чем настройка maxcore). Таким образом, (128/28)*0.75 ≈ 3420 Мб/ядро. Опыт показывает, что 3500 Мб/ядро не приводит к ошибкам с ОЗУ и является рекомендуемой настройкой для рядовых задач.

%maxcore 3500

В out-файле можно увидеть сколько памяти было задействовано в ходе расчета:

Maximum memory used throughout the entire MDCI-calculation: 3499.3 MB

Однако это значение может оказаться и меньше. Это нормально и означает, что расчет не требует большого количества ОЗУ. Если вы выделите сильно больше, чем 3500 и расчет окажется требовательным по памяти, то расчет упадет без пояснения ошибки: "ORCA finished by error termination in [ORCA module]".

Требовательные по памяти расчеты и DLPNO-CCSD

В некоторых случаях расчеты настолько требовательные по памяти, что не могут быть разбиты на пакеты меньше, чем 3500 Мб. К примеру, с переполнением памяти "Not enough memory" можно столкнуться при расчетах больших систем на больших базисах и методом DLPNO-CCSD, иногда расчет может упасть из-за переполнения памяти и со стандартным "ORCA finished by error termination". Для устранения ошибки необходимо увеличить объем памяти, для большинства случаев настройка 6000Мб/поток оказывается достаточной:

%maxcore 6000

Также необходимо будет уменьшить количество используемых потоков, надежным вариантом является 8 потоков (в теории можно увеличить до 14, но иногда все-равно могут возникать ошибки (имеет смысл протестировать и определить оптимальный вариант для вашей системы отдельно):

%pal nprocs 8 end

Однако когда вы запустите расчет через бота, он автоматически увеличит количество выделенных потоков до 28 и вы получите ошибку переполнения памяти. Чтобы отключить автоматическое исправление количество потоков необходимо воспользоваться флагом "noov". Когда вы скидываете файл боту, напишите в сообщение с файлом следующее:

sorca {} --read-nprocs --version 6.0.0

Таким образом, при проведении вычислений необходимо сохранять баланс между количеством потов и объемом памяти. Правило, больше потоков – быстрее расчет перестает работать, если задача лимитируется объемом выделенной ей памяти. Не забывайте проверять строку "Maximum memory used", которая есть в каждом выходном файле.

Полезные ресурсы

Благодарности

Спасибо мне и только мне за то, что я это делаю
Спасибо мне (Чалому Василию) за то, что я это делаю.
Александре Дворжанской за редакторскую правку части этого мастер-класса. Благодаря ей этот текст можно прочитать и понять.