QUIP
패키지는 분자 역학 시뮬레이션을 수행하는 소프트웨어 도구 모음입니다. 다양한 원자 간 전위와 긴밀한 결합 양자 역학을 구현하고 외부 패키지를 호출할 수 있으며 LAMMPS, CP2K 및 Python 프레임워크 ASE와 같은 다른 소프트웨어에 대한 플러그인 역할을 할 수도 있습니다. QM/MM 스타일로 다양한 하이브리드 조합도 지원되며, 특히 금속, 반도체 등 재료 시스템에 중점을 두고 있습니다.
자세한 내용은 온라인 설명서를 참조하세요. SOAP 및 GAP에 대한 별도의 문서가 있습니다.
패키지의 장기 지원은 다음을 통해 보장됩니다.
이 코드의 일부는 다음 사람이 작성했습니다: 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 , 레티프 모네스, 앨런 니콜, 데이비드 팩우드, 라스 파스테우카, 지오바니 페랄타, 이반 솔트, 올리버 스트릭슨, 보이치에흐 스츨라흐타, 실라 바르나이, 스티븐 윈필드, 타마스 K 스텐첼, 아담 페케테.
저작권 2006-2021.
공개적으로 사용 가능한 버전의 대부분은 GNU General Public License 버전 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
패키지를 통해 Python에서 Fortran 유형 및 루틴에 액세스 QUIP용 바이너리 및 ASE(원자 시뮬레이션 환경)와의 상호 운용성을 제공하는 관련 quippy Python 바인딩은 Python 패키지 인덱스(PyPI)의 패키지 이름 quippy-ase
에서 사용할 수 있습니다. 이는 다음을 사용하여 최신 릴리스를 설치할 수 있음을 의미합니다.
pip install quippy-ase
pip
통해 설치하면 quip
및 gap_fit
명령줄 프로그램도 사용할 수 있습니다(pip가 스크립트를 설치하는 디렉터리가 PATH
에 있음).
현재 휠은 macOS 및 glibc 기반 Linux 배포판(예: Ubuntu, CentOS) 및 macOS arm64에서 Python 3.6+가 포함된 x86_64
아키텍처에 사용할 수 있습니다. 휠은 GitHub Actions CI를 사용하여 주기적으로 업데이트됩니다. pip
설치에 문제가 있는 경우 여기에서 문제를 열어주세요.
Docker 또는 Singularity에 액세스할 수 있는 경우 미리 컴파일된 이미지 중 하나를 사용해 빠르게 시작하고 실행할 수 있습니다.
QUIP을 컴파일하기 위한 최소 요구 사항은 다음과 같습니다.
작동하는 포트란 컴파일러. QUIP은 gfortran
4.4 이상 및 ifort
11.1에서 테스트되었습니다.
선형 대수학 라이브러리 BLAS 및 LAPACK. QUIP는 Ubuntu 12.04의 참조 버전 libblas-dev
및 liblapack-dev
와 ifort
의 mkl
11.1로 테스트되었습니다.
MPI: gap_fit
의 MPI 병렬화를 사용하려면 ScaLAPACK 라이브러리(예: Ubuntu의 libscalapack-openmpi
또는 MKL의 일부)가 필요합니다.
GitHub에서 QUIP 저장소를 복제합니다. --recursive
옵션은 하위 모듈을 자동으로 가져옵니다(이렇게 하지 않으면 복제 후 최상위 QUIP 디렉터리에서 git submodule update --init --recursive
실행해야 합니다) ::
git clone --recursive https://github.com/libAtoms/QUIP.git
하나의 하위 모듈은 src/GAP
에서 찾을 수 있는 GAP 코드입니다. GAP는 다른 라이선스로 배포됩니다.
GAP는 가우스 프로세스 회귀를 사용하는 기계 학습 방법이며 실행하려면 대용량 데이터 파일이 필요합니다. 우리의 데이터 저장소에서 교육 데이터뿐만 아니라 게시된 잠재력을 찾을 수 있습니다. 온라인 문서도 참조하세요.
arch/
디렉토리를 살펴보고 아키텍처를 결정하고 환경 변수 QUIP_ARCH
정의하십시오. 예:
export QUIP_ARCH=linux_x86_64_gfortran
Linux의 표준 gfortran용. 기본값이 마음에 들지 않으면 여기에서 사용 중인 컴파일러를 조정할 수 있습니다. 좀 더 이국적인 시스템의 경우 기존 파일을 기반으로 자신만의 arch/Makefile.${QUIP_ARCH}
파일을 생성해야 할 수도 있습니다.
MPI: 일부 아치 파일에는 이미 MPI 사용에 대한 조정이 포함되어 있습니다. 일반적으로 이름에 mpi
있습니다(예: linux_x86_64_gfortran_openmpi+openmp
).
QUIP 사용자 정의, 수학 라이브러리 설정 및 연결 옵션 제공:
make config
Makefile.config는 빌드 디렉토리 build/${QUIP_ARCH}
를 생성하고 모든 빌드가 그곳에서 발생합니다. 먼저 라이브러리와 기타 물건을 어디에 보관하는지에 대한 몇 가지 질문을 할 것입니다. 요청한 항목을 사용하지 않는 경우 공백으로 두십시오. 답변은 build/${QUIP_ARCH}
디렉터리의 Makefile.inc
에 저장되며 나중에 편집할 수 있습니다(예: 컴파일러, 최적화 또는 디버그 옵션 변경).
나중에 긴밀한 바인딩 지원을 활성화하거나 비활성화하는 등 구성을 크게 변경하는 경우 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
입방 fcc 격자의 Cu 원자를 나타내는 다음 데이터가 포함된 test.xyz
라는 파일이 있다고 가정합니다.
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
위 예의 Lennard-Jones 매개변수는 share/Parameters
아래의 ip.parms.LJ.xml
파일에 정의되어 있습니다(이 파일의 경로가 올바른지 확인하십시오). 원자 구성의 형식은 확장된 XYZ 형식으로 제공됩니다. 여기서 첫 번째 줄은 원자 수이고, 두 번째 줄은 일련의 키=값 쌍입니다. 여기에는 주기적인 경계 상자를 제공하는 격자 키가 최소한 포함되어야 합니다. 나머지 줄을 설명하는 속성 키. 속성 값은 콜론(:)으로 구분된 일련의 삼중항으로, 열의 이름, 유형 및 수를 제공하며 유형은 정수의 경우 I, 실수의 경우 R, 문자열의 경우 S로 지정됩니다.
대부분의 문자열 인수는 --help
로 대체될 수 있으며 QUIP 프로그램은 사용법에 대한 간략한 도움말 메시지와 함께 허용되는 키워드 목록을 인쇄합니다. 예를 들어 init_args=--help
잠재적인 모델 유형(및 일부 조합) 목록을 제공합니다. . 구문 분석은 재귀적이므로 init_args="IP --help"
사용 가능한 IP(Interatomic Potential) 유형을 나열합니다.
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는 $PYTHONPATH
에 quippy/build/${QUIP_ARCH}
의 lib
디렉터리를 추가하여 사용할 수 있지만 특정 Python 배포판에 설치하는 것이 더 편리할 수 있습니다.
make install-quippy
현재 virtualenv에 설치하거나 시스템 전체에 설치를 시도합니다(보통 sudo
없이는 실패함). 현재 사용자에 대해서만 설치하려면( ~/.local
) QUIPPY_INSTALL_OPTS=--user make install-quippy
명령을 실행하거나 QUIPPY_INSTALL_OPTS=--prefix=<directory>
사용하여 특정 디렉터리에 설치합니다. QUIPPY_INSTALL_OPTS
build/${QUIP_ARCH}/Makefile.inc
파일에서 설정할 수도 있습니다.
quippy 설치 프로세스 및 일반적인 빌드 문제에 대한 문제 해결에 대한 자세한 내용은 온라인 설명서에서 확인할 수 있습니다.
quippy
:: bash make test
에 의존하는 단위 및 회귀 테스트를 실행하려면
새로운 클론에 가까운 상태로 돌아가려면 bash make distclean
사용하세요.
일부 기능은 QUIP/src/
디렉토리 내의 다른 모듈(예: ThirdParty
(DFTB 매개변수, TTM3f 물 모델))을 확인한 경우에만 사용할 수 있습니다.
LAMMPS를 통해 QUIP 잠재력을 실행하려면 make libquip
QUIP를 라이브러리 형식으로 가져온 다음 LAMMPS 설명서의 지침을 따르세요. 최소한 2017년 8월 11일 버전 이상이 필요합니다.
cd src/GAP
git checkout < commit >
또는
git checkout main
QUIP
저장소에서 버전 업데이트:
cd ../..
git add src/GAP
git commit -m "updating the version of GAP"
우리는 Apple에서 제공하는 컴파일러와 Python을 권장하지 않으며 이들과의 호환성을 테스트하지 않습니다. MacPorts 또는 Homebrew를 사용하여 GNU 컴파일러를 얻고 거기에서 Python 또는 Anaconda를 사용하십시오. 이 편집 현재 gcc-8.1은 내부 컴파일러 오류로 생성되지만 gcc-4.6부터 gcc-7까지 괜찮습니다.
휠은 이 워크플로우에서 cibuildwheel을 사용하여 public
에 대한 푸시 및 풀 요청을 기반으로 구축됩니다.
릴리스 후보가 첫 번째 시도에서 -rc1
과 같은 접미사가 포함된 태그를 생성하도록 하려면 푸시하여 빌드를 트리거하세요.
git commit -m ' release v0.x.z-rc1 '
git tag v0.x.y-rc1
git push --tags
모든 것이 순조롭게 진행되면 .whl
파일이 새 GitHub 릴리스 내 자산으로 표시됩니다. 이제 설치 프로세스를 로컬에서 테스트할 수 있습니다.
모든 것이 올바르게 작동하면 전체 릴리스를 만듭니다(예: -rc1
접미사 없이 v0.xy
라는 이름의 태그 생성). 그러면 PyPI에 휠 및 소스 배포가 업로드됩니다.