Пакет QUIP
представляет собой набор программных инструментов для проведения молекулярно-динамического моделирования. Он реализует различные межатомные потенциалы и квантовую механику жесткой связи, а также может вызывать внешние пакеты и служить плагинами для другого программного обеспечения, такого как LAMMPS, CP2K, а также платформы Python ASE. Также поддерживаются различные гибридные комбинации в стиле QM/MM с особым акцентом на системы материалов, такие как металлы и полупроводники.
Более подробную информацию смотрите в онлайн-документации. Для SOAP и GAP существует отдельная документация.
Долгосрочную поддержку пакета обеспечивают:
Части этого кода написали: Альберт Барток-Партай, Ливия Барток-Партай, Федерико Бьянкини, Анке Бутенут, Марко Каччин, Сильвия Середа, Габор Чаньи, Алессио Комиссо, Том Дафф, С.Т. Джон, Кьяра Гаттинони, Джанпьетро Морас, Джеймс Кермод. Летиф Монес, Алан Никол, Дэвид Паквуд, Ларс Пастевка, Джованни Перальта, Иван Солт, Оливер Стриксон, Войцех Шлахта, Чилла Варнаи, Стивен Уинфилд, Тамаш К. Стенцель, Адам Фекете.
Авторские права 2006-2021.
Большая часть общедоступной версии выпущена под лицензией GNU General Public, версия 2, а некоторые части находятся в свободном доступе. Код GAP, включенный в качестве подмодуля, распространяется по некоммерческой лицензии на академический исходный код.
Если вы используете QUIP, цитируйте следующую публикацию:
@ARTICLE { Csanyi2007-py ,
title = " Expressive Programming for Computational Physics in Fortran 95+ " ,
author = " Cs{'a}nyi, G{'a}bor and Winfield, Steven and Kermode, J R and De
Vita, A and Comisso, Alessio and Bernstein, Noam and Payne,
Michael C " ,
journal = " IoP Comput. Phys. Newsletter " ,
pages = " Spring 2007 " ,
year = 2007
}
Если вы используете интерфейс quippy
Python, укажите:
@ARTICLE { Kermode2020-wu ,
title = " f90wrap: an automated tool for constructing deep Python
interfaces to modern Fortran codes " ,
author = " Kermode, James R " ,
journal = " J. Phys. Condens. Matter " ,
month = mar,
year = 2020 ,
keywords = " Fortran; Interfacing; Interoperability; Python; Wrapping codes;
f2py " ,
language = " en " ,
issn = " 0953-8984, 1361-648X " ,
pmid = " 32209737 " ,
doi = " 10.1088/1361-648X/ab82d2 "
}
Если вы используете код GAP, укажите
@ARTICLE { Bartok2010-pw ,
title = " Gaussian approximation potentials: the accuracy of quantum
mechanics, without the electrons " ,
author = " Bart{'o}k, Albert P and Payne, Mike C and Kondor, Risi and
Cs{'a}nyi, G{'a}bor " ,
journal = " Phys. Rev. Lett. " ,
volume = 104 ,
number = 13 ,
pages = " 136403 " ,
month = apr,
year = 2010 ,
issn = " 0031-9007, 1079-7114 " ,
pmid = " 20481899 " ,
doi = " 10.1103/PhysRevLett.104.136403 "
}
Следующие межатомные потенциалы в настоящее время закодированы или связаны в QUIP:
Реализованы следующие функциональные формы и параметризации с жесткой привязкой:
Могут быть вызваны следующие внешние пакеты:
quippy
Python; рекомендуется последняя версия) QUIP родился из-за необходимости эффективно связать воедино множество различных моделей, как эмпирических, так и квантово-механических. Он не будет конкурировать по производительности с такими кодами, как LAMMPS и Gromacs. Среда атомарного моделирования также делает это и используется гораздо более широко, но QUIP имеет ряд уникальных функций:
quippy
Двоичный файл для QUIP и связанные с ним привязки Quippy Python, обеспечивающие взаимодействие со средой атомарного моделирования (ASE), доступны в индексе пакетов Python (PyPI) под именем пакета quippy-ase
. Это означает, что вы можете установить последнюю версию с помощью:
pip install quippy-ase
Установка через pip
также делает доступными программы командной строки quip
и gap_fit
(при условии, что каталог, в который pip устанавливает сценарии, находится в вашем PATH
).
В настоящее время колеса доступны для архитектур x86_64
с Python 3.6+ в macOS и дистрибутивах Linux на основе glibc (например, Ubuntu, CentOS), а также для macOS Arm64. Колеса периодически обновляются с помощью GitHub Actions CI. Пожалуйста, открывайте вопросы здесь, если у вас возникли проблемы с установкой с помощью pip
.
Если у вас есть доступ к Docker или Singularity, вы можете попробовать один из предварительно скомпилированных образов, чтобы быстро приступить к работе.
Для составления QUIP минимальные требования:
Рабочий компилятор Фортрана. QUIP протестирован с gfortran
4.4 и более поздних версий, а также ifort
11.1.
Библиотеки линейной алгебры BLAS и LAPACK. QUIP тестировался с эталонными версиями libblas-dev
и liblapack-dev
в Ubuntu 12.04 и mkl
11.1 с ifort
.
MPI: Чтобы использовать параллелизацию MPI в gap_fit
, вам понадобится библиотека ScaLAPACK, например libscalapack-openmpi
в Ubuntu, или как часть MKL.
Клонируйте репозиторий QUIP с GitHub. Опция --recursive
автоматически добавляет подмодули (если вы этого не сделаете, вам нужно будет запустить git submodule update --init --recursive
из каталога QUIP верхнего уровня после клонирования) ::
git clone --recursive https://github.com/libAtoms/QUIP.git
Один подмодуль — это код GAP, который можно найти в src/GAP
. Обратите внимание, что GAP распространяется под другой лицензией.
GAP — это метод машинного обучения, который использует регрессию гауссова процесса и для запуска требует больших файлов данных. Вы можете найти опубликованные потенциалы, а также данные обучения в нашем хранилище данных, а также просмотреть онлайн-документацию.
Определите свою архитектуру, просмотрев каталог arch/
, и определите переменную среды QUIP_ARCH
, например::
export QUIP_ARCH=linux_x86_64_gfortran
для стандартного gfortran в Linux. Здесь вы можете указать, какой компилятор будет использоваться, если вам не нравятся значения по умолчанию. Для более экзотических систем вам может потребоваться создать собственный файл arch/Makefile.${QUIP_ARCH}
на основе существующего файла.
MPI: некоторые файлы Arch уже содержат настройки для использования MPI. Обычно в их названии есть mpi
, например linux_x86_64_gfortran_openmpi+openmp
.
Настройте QUIP, установите математические библиотеки и предоставьте параметры связывания:
make config
Makefile.config создаст каталог сборки build/${QUIP_ARCH}
, и вся сборка будет происходить там. Сначала он задаст вам несколько вопросов о том, где вы храните библиотеки и другие вещи. Если вы не используете то, что он просит, просто оставьте это поле пустым. Ответы будут храниться в Makefile.inc
в каталоге build/${QUIP_ARCH}
, и вы сможете редактировать их позже (например, чтобы изменить параметры компилятора, оптимизации или отладки).
Если позже вы внесете существенные изменения в конфигурацию, например включите или отключите поддержку жесткой привязки, вам следует принудительно выполнить полную перестройку, выполнив команду make deepclean; make
.
MPI: Чтобы использовать параллелизацию gap_fit
с помощью MPI, вам необходимо добавить свою системную библиотеку к параметрам связывания, например -lscalapack
или -lscalapack-openmpi
, включить поддержку GAP, включить декомпозицию QR и включить ScaLAPACK.
Скомпилируйте все программы, модули и библиотеки::
make
Из каталога QUIP
верхнего уровня. Все программы построены в build/${QUIP_ARCH}/
. В этом каталоге вы также можете найти скомпилированные объектные файлы и библиотеки ( libquip.a
). Программы можно вызывать непосредственно из этого каталога.
Другие полезные цели make включают в себя:
make install
: копирует все скомпилированные программы, которые он может найти, в QUIP_INSTALLDIR
, если он определен и является каталогом (требуется полный путь), и копирует связанные структуры в QUIP_STRUCTS_DIR
если он определен.
make libquip
: скомпилировать QUIP как библиотеку и создать ссылку на нее. Это создаст все различные библиотеки и объединит их в одну: build/${QUIP_ARCH}/libquip.a
, с которой вам нужно связать (а также с LAPACK).
Хорошей отправной точкой является использование программы quip
, которая может рассчитывать свойства атомарной конфигурации, используя множество моделей. Например::
quip atoms_filename=test.xyz init_args= ' IP LJ '
param_filename=share/Parameters/ip.parms.LJ.xml E
предполагая, что у вас есть файл с именем test.xyz
со следующими данными, представляющими атомы Cu в кубической ГЦК-решетке:
4
Lattice="3.61 0 0 0 3.61 0 0 0 3.61" Properties=species:S:1:pos:R:3
Cu 0.000 0.000 0.000
Cu 0.000 1.805 1.805
Cu 1.805 0.000 1.805
Cu 1.805 1.805 0.000
Параметры Леннарда-Джонса в приведенном выше примере определены в файле ip.parms.LJ.xml
в разделе share/Parameters
(убедитесь, что путь к этому файлу правильный). Формат атомарной конфигурации задается в расширенном формате XYZ, в котором первая строка представляет собой количество атомов, вторая строка представляет собой серию пар ключ = значение, которые должны как минимум содержать ключ решетки, задающий периодическую ограничивающую рамку, и ключ «Свойства», описывающий остальные строки. Значением свойства является последовательность троек, разделенных двоеточием (:), которые задают имя, тип и количество столбцов, при этом тип задается I для целых чисел, R для действительных чисел, S для строк.
Большинство строковых аргументов можно заменить на --help
, и программы QUIP затем распечатают список допустимых ключевых слов с краткими справочными сообщениями об их использовании, например, init_args=--help
выдаст список потенциальных типов моделей (и некоторых комбинаций). . Анализ является рекурсивным, поэтому init_args="IP --help"
затем перейдет к перечислению доступных типов межатомных потенциалов (IP).
Для компиляции оболочек Python ( quippy
) минимальные требования следующие. f90wrap
будет установлен автоматически в процессе сборки, но вам может потребоваться проверить, что каталог, в который pip
устанавливает исполняемые сценарии, находится на вашем пути (например, установив PATH=~/.local/bin:$PATH
).
numpy>=1.5.0
)ase>=3.17.0
) Примечание. Если вы используете виртуальную среду Python (virtualenv) и хотите установить в нее quippy
, убедитесь, что среда активирована ( source <env_dir>/bin/activate
, где <env_dir>
— это корень вашей виртуальной среды), прежде чем сборка quippy
(в противном случае версии библиотеки могут вызвать неожиданные конфликты).
Чтобы скомпилировать обертки Python ( quippy
), запустите::
make quippy
Quippy можно использовать, добавив каталог lib
в quippy/build/${QUIP_ARCH}
в $PYTHONPATH
, однако может быть удобнее установить его в конкретный дистрибутив Python:
make install-quippy
либо установится в текущую виртуальную среду, либо попытается установить всю систему (обычно не удается без sudo
). Чтобы установить только для текущего пользователя (в ~/.local
), выполните команду QUIPPY_INSTALL_OPTS=--user make install-quippy
или используйте QUIPPY_INSTALL_OPTS=--prefix=<directory>
для установки в определенный каталог. QUIPPY_INSTALL_OPTS
также можно установить в файле build/${QUIP_ARCH}/Makefile.inc
.
Более подробную информацию о процессе быстрой установки и устранении распространенных проблем сборки можно найти в онлайн-документации.
Для запуска модульных и регрессионных тестов, которые зависят от quippy
:: bash make test
Чтобы вернуться в состояние, близкое к свежему клону, используйте bash make distclean
Некоторые функции доступны только в том случае, если вы извлекаете другие модули в каталогах QUIP/src/
, например ThirdParty
(параметры DFTB, модель воды TTM3f).
Чтобы запустить потенциалы QUIP через LAMMPS, make libquip
чтобы преобразовать QUIP в форму библиотеки, а затем следуйте инструкциям в документации LAMMPS. Вам нужна версия не ниже 11 августа 2017 года или новее.
cd src/GAP
git checkout < commit >
ИЛИ
git checkout main
Обновление версии в репозитории QUIP
:
cd ../..
git add src/GAP
git commit -m "updating the version of GAP"
Мы не рекомендуем компиляторы и Python, поставляемые Apple, и не проверяем совместимость с ними. Либо используйте MacPorts, либо Homebrew для получения компиляторов GNU, а также используйте оттуда Python или Anaconda. На момент этого редактирования gcc-8.1 выдает внутреннюю ошибку компилятора, но от gcc-4.6 до gcc-7 все в порядке.
Колеса создаются на основе public
запросов push и pull с использованием cibuildwheel в этом рабочем процессе.
Чтобы кандидат на выпуск создал тег с суффиксом, например -rc1
для первой попытки, нажмите для запуска сборки:
git commit -m ' release v0.x.z-rc1 '
git tag v0.x.y-rc1
git push --tags
Если все пойдет хорошо, файлы .whl
появятся в качестве ресурсов в новой версии GitHub. Теперь процесс установки можно протестировать локально.
Как только все заработает правильно, выпустите полную версию (т. е. создайте тег с именем v0.xy
без суффикса -rc1
). Это приведет к загрузке колес и распространению исходного кода в PyPI.