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
ИВЦ НГУ благодарит сотрудников НГУ Дмитрия Евгеньевича Горбунова и Виталия Георгиевича Киселева за помощь в составлении данной инструкции.