Paket QUIP
adalah kumpulan perangkat lunak untuk melakukan simulasi dinamika molekul. Ia mengimplementasikan berbagai potensi interatomik dan mekanika kuantum yang mengikat erat, dan juga mampu memanggil paket eksternal, dan berfungsi sebagai plugin untuk perangkat lunak lain seperti LAMMPS, CP2K dan juga kerangka python ASE. Berbagai kombinasi hibrida juga didukung dalam gaya QM/MM, dengan fokus khusus pada sistem material seperti logam dan semikonduktor.
Untuk lebih jelasnya, lihat dokumentasi online. Ada dokumentasi terpisah untuk SOAP dan GAP.
Dukungan jangka panjang dari paket ini dijamin oleh:
Bagian dari kode ini ditulis oleh: Albert Bartok-Partay, Livia Bartok-Partay, Federico Bianchini, Anke Butenuth, Marco Caccin, Silvia Cereda, Gabor Csanyi, Alessio Comisso, Tom Daff, ST John, Chiara Gattinoni, Gianpietro Moras, James Kermode , Letif Mones, Alan Nichol, David Packwood, Lars Pastewka, Giovanni Peralta, Ivan Solt, Oliver Strickson, Wojciech Szlachta, Csilla Varnai, Steven Winfield, Tamas K Stenczel, Adam Fekete.
Hak Cipta 2006-2021.
Sebagian besar versi yang tersedia untuk umum dirilis di bawah lisensi GNU General Public, versi 2, dengan beberapa bagian berada dalam domain publik. Kode GAP, yang disertakan sebagai submodul, didistribusikan di bawah lisensi sumber akademis non-komersial
Silakan kutip publikasi berikut jika Anda menggunakan 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
}
Jika Anda menggunakan antarmuka Python quippy
, harap kutip:
@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 "
}
Jika Anda menggunakan kode GAP harap kutip
@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 "
}
Potensi interatomik berikut ini saat ini dikodekan atau dihubungkan dalam QUIP:
Bentuk fungsional dan parameterisasi yang mengikat erat berikut ini diterapkan:
Paket eksternal berikut dapat dipanggil:
quippy
; disarankan versi terbaru) QUIP lahir karena kebutuhan untuk menyatukan berbagai macam model secara efisien, baik empiris maupun mekanika kuantum. Ini tidak akan kompetitif dalam hal kinerja dengan kode seperti LAMMPS dan Gromacs. Lingkungan Simulasi Atom juga melakukan hal ini, dan lebih banyak digunakan, namun QUIP memiliki sejumlah fitur unik:
quippy
Biner untuk QUIP dan ikatan Python quippy terkait yang menyediakan interopabilitas dengan Atomic Navigation Environment (ASE) tersedia dari indeks paket Python (PyPI) dengan nama paket quippy-ase
. Ini berarti Anda dapat menginstal rilis terbaru dengan:
pip install quippy-ase
Menginstal melalui pip
juga membuat program baris perintah quip
dan gap_fit
tersedia (menyediakan direktori tempat pip menginstal skrip ada di PATH
Anda).
Saat ini, wheel tersedia untuk arsitektur x86_64
dengan Python 3.6+ di macOS dan distribusi Linux berbasis glibc (misalnya Ubuntu, CentOS) dan untuk macOS arm64. Roda diperbarui secara berkala menggunakan GitHub Actions CI. Silakan buka masalah di sini jika Anda mengalami masalah saat menginstal dengan pip
.
Jika Anda memiliki akses ke Docker atau Singularity, Anda dapat mencoba salah satu image yang telah dikompilasi untuk memulai dan menjalankannya dengan cepat.
Untuk mengkompilasi QUIP persyaratan minimumnya adalah:
Kompiler Fortran yang berfungsi. QUIP diuji dengan gfortran
4.4 dan yang lebih baru, dan ifort
11.1.
Perpustakaan aljabar linier BLAS dan LAPACK. QUIP diuji dengan versi referensi libblas-dev
dan liblapack-dev
di Ubuntu 12.04, dan mkl
11.1 dengan ifort
.
MPI: Untuk menggunakan paralelisasi MPI dari gap_fit
, Anda memerlukan perpustakaan ScaLAPACK, misalnya libscalapack-openmpi
di Ubuntu, atau sebagai bagian dari MKL.
Kloning repositori QUIP dari GitHub. Opsi --recursive
membawa submodul secara otomatis (Jika Anda tidak melakukan ini, maka Anda perlu menjalankan git submodule update --init --recursive
dari direktori QUIP tingkat atas setelah kloning) ::
git clone --recursive https://github.com/libAtoms/QUIP.git
Salah satu submodulnya adalah kode GAP, yang dapat ditemukan di src/GAP
. Perhatikan bahwa GAP didistribusikan di bawah lisensi yang berbeda.
GAP adalah metode pembelajaran mesin yang menggunakan regresi proses Gaussian, dan memerlukan file data besar untuk dijalankan. Anda dapat menemukan potensi yang telah dipublikasikan serta data pelatihan di gudang data kami, lihat juga dokumen online.
Tentukan arsitektur Anda dengan melihat di direktori arch/
, dan tentukan variabel lingkungan QUIP_ARCH
, misalnya::
export QUIP_ARCH=linux_x86_64_gfortran
untuk gfortran standar di Linux. Di sinilah Anda dapat menyesuaikan kompiler mana yang digunakan, jika Anda tidak menyukai defaultnya. Anda mungkin perlu membuat file arch/Makefile.${QUIP_ARCH}
Anda sendiri berdasarkan file yang ada untuk sistem yang lebih eksotik.
MPI: Beberapa file arch sudah menyertakan penyesuaian untuk penggunaan MPI. Biasanya ada mpi
di namanya, misalnya linux_x86_64_gfortran_openmpi+openmp
.
Sesuaikan QUIP, atur perpustakaan matematika dan berikan opsi tautan ::
make config
Makefile.config akan membuat direktori build, build/${QUIP_ARCH}
, dan semua pembangunan terjadi di sana. Pertama ia akan menanyakan beberapa pertanyaan tentang di mana Anda menyimpan perpustakaan dan hal-hal lain, jika Anda tidak menggunakan sesuatu yang diminta, biarkan kosong. Jawabannya akan disimpan di Makefile.inc
di direktori build/${QUIP_ARCH}
, dan Anda dapat mengeditnya nanti (misalnya untuk mengubah opsi compiler, optimasi, atau debug).
Jika nanti Anda membuat perubahan signifikan pada konfigurasi seperti mengaktifkan atau menonaktifkan dukungan yang mengikat, Anda harus memaksakan pembangunan kembali secara penuh dengan melakukan make deepclean; make
.
MPI: Untuk menggunakan paralelisasi MPI gap_fit
, Anda harus menambahkan perpustakaan sistem Anda ke opsi penautan, misalnya -lscalapack
atau -lscalapack-openmpi
, aktifkan dukungan GAP, aktifkan dekomposisi QR, dan aktifkan ScaLAPACK.
Kompilasi semua program, modul dan perpustakaan ::
make
Dari direktori QUIP
tingkat atas. Semua program dibangun di build/${QUIP_ARCH}/
. Anda juga dapat menemukan file objek dan perpustakaan yang dikompilasi ( libquip.a
) di direktori itu. Program dapat dipanggil langsung dari direktori tersebut.
Target pembuatan berguna lainnya meliputi:
make install
: menyalin semua program terkompilasi yang dapat ditemukan ke QUIP_INSTALLDIR
, jika ditentukan dan merupakan direktori (diperlukan jalur lengkap), dan menyalin struktur yang dibundel ke QUIP_STRUCTS_DIR
jika ditentukan.
make libquip
: Kompilasi QUIP sebagai perpustakaan dan tautkan ke sana. Ini akan membuat semua perpustakaan yang berbeda dan menggabungkannya menjadi satu: build/${QUIP_ARCH}/libquip.a
, yang perlu Anda tautkan (serta LAPACK).
Titik awal yang baik adalah dengan menggunakan program quip
, yang dapat menghitung sifat-sifat konfigurasi atom menggunakan berbagai model. Misalnya::
quip atoms_filename=test.xyz init_args= ' IP LJ '
param_filename=share/Parameters/ip.parms.LJ.xml E
dengan asumsi Anda memiliki file bernama test.xyz
dengan data berikut di dalamnya yang mewakili atom Cu dalam kisi fcc kubik ::
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
Parameter Lennard-Jones dalam contoh di atas ditentukan dalam file ip.parms.LJ.xml
di bawah share/Parameters
(pastikan jalur ke file ini benar). Format konfigurasi atom diberikan dalam format Extended XYZ, dimana baris pertama adalah jumlah atom, baris kedua adalah rangkaian pasangan kunci=nilai, yang setidaknya harus berisi kunci Kisi yang memberikan kotak pembatas periodik dan kunci Properties yang menjelaskan baris yang tersisa. Nilai Properties merupakan rangkaian triplet yang dipisahkan oleh titik dua (:), yang memberikan nama, tipe dan jumlah kolom, dengan tipe yang diberikan I untuk bilangan bulat, R untuk real, S untuk string.
Sebagian besar argumen string dapat diganti dengan --help
dan program QUIP kemudian akan mencetak daftar kata kunci yang diperbolehkan dengan pesan bantuan singkat mengenai penggunaannya, jadi misalnya init_args=--help
akan memberikan daftar tipe model potensial (dan beberapa kombinasi) . Penguraiannya bersifat rekursif, jadi init_args="IP --help"
kemudian akan melanjutkan untuk membuat daftar jenis potensi interatomik (IP) yang tersedia.
Untuk mengkompilasi pembungkus Python ( quippy
), persyaratan minimumnya adalah sebagai berikut. f90wrap
akan diinstal secara otomatis pada proses build, namun Anda mungkin perlu memeriksa apakah direktori tempat pip
menginstal skrip yang dapat dieksekusi berada di jalur Anda (misalnya dengan mengatur PATH=~/.local/bin:$PATH
).
numpy>=1.5.0
)ase>=3.17.0
) Catatan: Jika Anda menggunakan lingkungan virtual Python (virtualenv) dan ingin menginstal quippy
ke dalamnya, pastikan lingkungan tersebut diaktifkan ( source <env_dir>/bin/activate
, dengan <env_dir>
adalah akar dari lingkungan virtual Anda) sebelumnya membangun quippy
(jika tidak, versi perpustakaan dapat menyebabkan konflik yang tidak terduga).
Untuk mengkompilasi pembungkus Python ( quippy
), jalankan::
make quippy
Quippy dapat digunakan dengan menambahkan direktori lib
di quippy/build/${QUIP_ARCH}
ke $PYTHONPATH
Anda, namun akan lebih mudah untuk menginstal ke distribusi Python tertentu::
make install-quippy
akan menginstal ke virtualenv saat ini atau mencoba menginstal seluruh sistem (biasanya gagal tanpa sudo
). Untuk menginstal hanya untuk pengguna saat ini (ke ~/.local
), jalankan perintah QUIPPY_INSTALL_OPTS=--user make install-quippy
, atau gunakan QUIPPY_INSTALL_OPTS=--prefix=<directory>
untuk menginstal ke direktori tertentu. QUIPPY_INSTALL_OPTS
juga dapat diatur dalam file build/${QUIP_ARCH}/Makefile.inc
.
Detail lebih lanjut tentang proses instalasi quippy dan pemecahan masalah untuk masalah umum build tersedia di dokumentasi online.
Untuk menjalankan pengujian unit dan regresi, yang bergantung pada quippy
:: bash make test
Untuk kembali ke keadaan dekat dengan klon baru, gunakan bash make distclean
Beberapa fungsi hanya tersedia jika Anda memeriksa modul lain dalam direktori QUIP/src/
, misalnya ThirdParty
(parameter DFTB, model air TTM3f).
Untuk menjalankan potensi QUIP melalui LAMMPS, make libquip
untuk memasukkan QUIP ke dalam bentuk perpustakaan, lalu ikuti petunjuk dalam dokumentasi LAMMPS. Anda memerlukan setidaknya versi 11 Agustus 2017 atau lebih baru.
cd src/GAP
git checkout < commit >
ATAU
git checkout main
Memperbarui versi di repositori QUIP
:
cd ../..
git add src/GAP
git commit -m "updating the version of GAP"
Kami tidak merekomendasikan kompiler dan python yang dikirimkan Apple, dan kami tidak menguji kompatibilitasnya. Gunakan MacPorts atau Homebrew untuk mendapatkan kompiler GNU, dan juga gunakan python dari sana atau Anaconda. Pada pengeditan ini, gcc-8.1 menghasilkan kesalahan kompiler internal, tetapi gcc-4.6 hingga gcc-7 baik-baik saja.
Roda dibuat berdasarkan permintaan dorong dan tarik ke public
menggunakan cibuildwheel dengan alur kerja ini.
Untuk membuat kandidat rilis membuat tag dengan akhiran seperti -rc1
pada percobaan pertama, tekan untuk memicu build:
git commit -m ' release v0.x.z-rc1 '
git tag v0.x.y-rc1
git push --tags
Jika semuanya berjalan lancar, file .whl
akan muncul sebagai aset dalam rilis GitHub baru. Proses instalasi sekarang dapat diuji secara lokal.
Setelah semuanya berfungsi dengan benar, buat rilis lengkap (yaitu buat tag bernama v0.xy
saja tanpa akhiran -rc1
). Hal ini akan memicu pengunggahan roda dan distribusi sumber ke PyPI.