Gaussian 16
-
Официальный сайт: http://gaussian.com
-
Официальная документация:
-
Цитаты из Википедии:
-
Gaussian (читается как гауссиан) - программный пакет для расчета структуры и свойств молекулярных систем в газофазном и конденсированном состоянии, включающая большое разнообразие методов вычислительной химии, квантовой химии, молекулярного моделирования.
-
Стандартные возможности:
-
Методы молекулярной механики: AMBER, UFF, DREIDING
-
Полуэмпирические методы: AM1, PM3, PM6, CNDO, INDO, MINDO/3, MNDO, ZINDO
-
Неэмпирические методы: RHF/UHF, MP2 (MPn), CC, CASSCF, CI, GVB, BD, OVGF
-
DFT и TD с использованием большего количества простых и гибридных локальных и градиентно-корректированных функционалов
-
Гибридные методы: ONIOM
-
Неэмпирическая молекулярная динамика: ADMP, BOMD
-
Расчетные методы точных значений термохимических величин и энергий: Gaussian-1, Gaussian-2, Gaussian-3, CBS, W1
-
-
Использование
-
В соответствии с лицензионным соглашением доступ к Gaussian ограничен и предоставляется только конкретным сотрудникам и учащимся НГУ по индивидуальному запросу.
-
Имеющаяся версия Gaussian позволяет распараллеливать вычисления только в пределах одного физического сервера. Для распараллеливания на несколько серверов требуется дополнительное ПО 'Linda 9.x', которое не приобреталось.
-
Установлены две версии Gaussian 16, скомпилированные для процессоров, поддерживающих разные наборы дополнительных инструкций:
-
В директории /opt/shared/gaussian/avx2 находится версия для узлов с более современными процессорами, поддерживающими инструкции AVX2. Она должна использоваться на серверах HPE поколений Gen9 и Gen10.
-
В директории /opt/shared/gaussian/sse4_2 находится версия для узлов c более старыми процессорами, поддерживающими только инструкции SSE4.2. Она должна использоваться на серверах HP поколения G7.
-
-
Перед использованием Gaussian необходимо правильно настроить переменные окружения. Рекомендуется делать это непосредственно в скриптах для qsub:
-
Переменная окружения g16root должна указывать на директорию с Gaussian:
export g16root="/opt/shared/gaussian/avx2"
или
export g16root="/opt/shared/gaussian/sse4_2"
-
Переменная окружения GAUSS_SCRDIR должна указывать на директорию для временных файлов. Рекомендуется использовать рабочие области для временных файлов, в качестве уникального имени при этом предлагается использовать номер задачи:
export GAUSS_SCRDIR=$(ws_allocate $(echo $PBS_JOBID|awk -F\. {'print $1'}) 30) -
Для настройки остальных переменных окружения выполнить:
. $g16root/g16/bsd/g16.profile
-
-
Для визуализации выходных файлов Gaussian можно использовать следующие программы:
-
Gabedit (http://gabedit.sourceforge.net/)
-
Avogadro (https://avogadro.cc/)
-
Chemcraft (https://www.chemcraftprog.com/ru/index.html)
-
Пример
-
Создать входной файл test.gjf следующего содержания (осторожно, пустые строки имеют значение):
%nprocshared=4 %mem=256mb # b3lyp/TZVP Opt Freq Triplet Dioxygen geometry optimization 0 3 O O 1 R R 1.220
-
Создать скрипт submit.sh. Запрашиваемые в нём ресурсы должны соответствовать указанным во входном файле: значения ncpus и nprocshared должны совпадать, запрашиваемое количество mem должно быть примерно на 60 МБ больше, чем во входном файле:
#!/bin/bash #PBS -l walltime=0:1:0 #PBS -l select=1:ncpus=4:mem=320M #PBS -j oe cd $PBS_O_WORKDIR uname -n if [ "$(cat /proc/cpuinfo|grep -c avx2)" != 0 ] ; then export g16root="/opt/shared/gaussian/avx2" elif [ "$(cat /proc/cpuinfo|grep -c sse4_2)" != 0 ] ; then export g16root="/opt/shared/gaussian/sse4_2" else echo 'ERROR: unsupported CPU' exit 100 fi echo "g16root = $g16root" . $g16root/g16/bsd/g16.profile JOB=$(echo $PBS_JOBID|awk -F\. {'print $1'}) echo "JOB = $JOB" export GAUSS_SCRDIR=$(ws_allocate $JOB 30) if [ "x$GAUSS_SCRDIR" == "x" ] || [ ! -d $GAUSS_SCRDIR ] ; then echo "ERROR: no workspace $GAUSS_SCRDIR" exit 101 fi echo "GAUSS_SCRDIR = $GAUSS_SCRDIR" $g16root/g16/g16 < $PBS_O_WORKDIR/test.gjf >> $PBS_O_WORKDIR/test.$JOB.out ws_release $JOB
-
Поставить задачу в очередь:
qsub submit.sh
-
Дождаться завершения задачи. В результате её работы должны появиться 3 файла:
-
submit.sh.oXXXX - лог работы задачи PBS (где XXXX - номер задачи)
-
test.XXXX.out - лог работы Gaussian (пример в заархивированном виде)
-
fort.7 - выходной файл Gaussian
-
Скрипт qgauss
-
Пользователями ИВЦ НГУ был разработан скрипт qgauss, позволяющий автоматизировать создание задачи на основе входного файла Gaussian и обеспечивающий соответствие запрашиваемых для задачи ресурсов указанным во входном файле.
-
Скрипт публикуется 'как есть', ИВЦ НГУ не занимается его улучшением или поддержкой.
-
Скрипт написан на языке Perl, при необходимости вы можете доработать его самостоятельно. Для лучшего понимания предлагается создать скрипт для qsub без постановки в очередь (с помощью параметра '-d', см. ниже) и изучить его.
-
Для получения краткой справки о возможных параметрах командной строки нужно выполнить скрипт qgauss с параметром '-h':
hpcuser@clu:~/examples/gaussian> ./qgauss -h
Usage: qgauss -h qgauss [-cder] [-q queue] [-w #] filename1.inp ... Options: -h -- show this help -c -- release workdir after running -d -- dry run - do not queue job file -e -- edit job file before queueing -r -- reuse common scratch directory (dangerous) -q queue_name - send job to specific queue -w hours -- set job walltime (defaults to 14 days)
-
По умолчанию:
-
В качестве имени задачи (#PBS -N …) используется имя входного файла Gaussian без расширения.
-
Для задачи запрашивается время работы, равное 14 дням. Данное значение можно переопределить с помощью конфигурационного файла '.qgaussrc', описанного ниже. Также для каждой конкретной задачи время работы можно указать с помощью параметра командной строки '-w', к которому добавляется значение walltime в часах (например, '-w 1').
-
Задача размещается в очереди по умолчанию. Используемую очередь можно переопределить с помощью параметра командной строки '-q'.
-
Созданный скрипт для qsub сразу ставится в очередь. Это можно отключить с помощью параметра командной строки '-d'.
-
В качестве имени рабочей области, используемой как GAUSS_SCRDIR, используется комбинация из имени и номера задачи (например, 'test_2266954'). Это гарантирует, что каждая задача будет использовать собственную директорию для временных файлов. Но иногда может быть удобно, чтобы рабочая область имела заранее предсказуемое имя. В таком случае можно с помощью параметра '-r' указать, что имя рабочей области должно совпадать с именем задачи (без добавления номера задачи). Данная возможность может привести к некорректной работе в случае одновремнного выполнения двух задач с одинаковыми именами, поэтому должна использоваться с осторожностью.
-
Рабочая область после завершения задачи не удаляется. Для автоматического удаления нужно добавить парамер '-c'.
-
-
Для настройки некоторых персональных предпочтений можно использовать файл .qgaussrc, который должен находиться в корне домашней директории пользователя. Файл должен состоять из строк вида 'параметр=значение'. Возможны следующие параметры:
-
mail - адрес электронной почты для отправки уведомлений PBS. Соответствующее значение будет подставлено в строку '#PBS -M …' сгенерированного скрипта. Используется в случае, когда пользователь хочет получать уведомления от PBS на адрес, отличный от указанного при регистрации.
-
mailopt - типы уведомлений, которые пользователь будет получать. Значение будет подставлено в строку '#PBS -m …'.
-
walltime - значение по умолчанию для времени выполнения задачи в часах.
-
scratchttl - значение по умолчанию для времени жизни создаваемых рабочих областей для временных файлов в днях.
-
-
Пример файла .qgaussrc:
mailopt=n walltime=24 scratchttl=3
ИВЦ НГУ благодарит сотрудников НГУ Дмитрия Евгеньевича Горбунова и Виталия Георгиевича Киселева за помощь в составлении данной инструкции.