Google Colaboratory를 사용하여 무료로 첫 번째 원리 계산
htps : // 코메 ts 코메. 기주 b. 이오/DFT/부이 ld/
라고 하는 기사를 쓰고 있습니다만, 그 과정에서 Google Colab만으로 제일 원리 계산을 하는 방법을 알 수 있었으므로, 이쪽에서도 공유하고 싶습니다.
필요한 것
사용하는 소프트웨어
htps : // 코 m / 코메 ts 코메 _ Phys / MS / 4 A f134 6d959 A 7718b9
Quantum Espresso 설치
Google Colab에서 Quantum Espresso를 사용하려면 소스에서 소스에서 Cunatum Espresso를 컴파일해야 하지만 다음과 같은 방법으로 가능하다는 것을 알았습니다.
요점은 FFTW3을 설치하는 것입니다.
!git clone https://github.com/QEF/q-e.git
!apt-get install -y libfftw3-3 libfftw3-dev libfftw3-doc
%cd q-e
!DFLAGS='-D__OPENMP -D__FFTW3 -D__MPI -D__SCALAPACK' FFT_LIBS='-lfftw3' ./configure --enable-openmp
소스를 다운로드하고 FFTW3을 설치하고 컴파일 준비를하고 있습니다.
둘째,
!make pw
에서 Quantum Espresso의 핵심 코드 인 pw.x를 실행할 수 있습니다.
나머지는 포스트 프로세스 도구, pp :
make pp
도 설치해 둡시다.
음, Google 협업으로 OSS 빌드
에서 볼 수 있듯이 여기에서 컴파일 된 바이너리는 12 시간 후에 사라집니다.
그러므로
from google.colab import drive
drive.mount('/content/drive')
을 실행하여 Google 드라이브에 바이너리를 저장합니다. 다음에 사용할 때는 이것을 해동하여 사용합니다.
%cd /content/
!zip -r /content/drive/'My Drive'/q-e.zip q-e
으로 q-e.zip을 저장합니다.
Quantum Espresso를 실행할 수 있도록 환경 변수를 설정합니다. 즉,
import os
os.environ['PATH'] = "/content/q-e/bin:"+os.environ['PATH']
합니다.
ASE 설치
ASE 설치는 간단하며,
!pip install ase
에 들어갑니다.
첫 번째 원리 계산 테스트
그럼, 실제로 제일 원리 계산을 해 봅시다.
NaCl의 구조 최적화
NaCl 디렉토리를 만들고 이동합니다.
%cd /content
!mkdir NaCl
%cd NaCl
그리고 의사 잠재력을 다운로드합니다.
!wget https://www.quantum-espresso.org/upf_files/Na.pbesol-spn-kjpaw_psl.1.0.0.UPF
!wget https://www.quantum-espresso.org/upf_files/Cl.pbesol-n-kjpaw_psl.1.0.0.UPF
이것은 NaCl 디렉토리에 들어갔다.
둘째,
from ase.build import bulk
from ase.calculators.espresso import Espresso
from ase.constraints import UnitCellFilter
from ase.optimize import LBFGS
import ase.io
pseudopotentials = {'Na': 'Na.pbesol-spn-kjpaw_psl.1.0.0.UPF',
'Cl': 'Cl.pbesol-n-kjpaw_psl.1.0.0.UPF'}
rocksalt = bulk('NaCl', crystalstructure='rocksalt', a=6.0)
calc = Espresso(pseudopotentials=pseudopotentials,pseudo_dir = './',
tstress=True, tprnfor=True, kpts=(3, 3, 3))
rocksalt.set_calculator(calc)
ucf = UnitCellFilter(rocksalt)
opt = LBFGS(ucf)
opt.run(fmax=0.005)
# cubic lattic constant
print((8*rocksalt.get_volume()/len(rocksalt))**(1.0/3.0))
를 실행하면 NaCl의 구조 최적화를 할 수 있습니다. 이 코드는 의사 포텐셜의 위치를
pseudo_dir
로 지정합니다. 이번에는 지금있는 디렉토리입니다.Cu 밴드 다이어그램
다음으로 Cu의 밴드 다이어그램을 계산해 보겠습니다.
Cu 디렉토리를 만듭니다.
%cd /content
!mkdir Cu
%cd Cu
의사 잠재력을 다운로드합니다.
!wget https://www.quantum-espresso.org/upf_files/Cu.pz-d-rrkjus.UPF
자기 무착착 계산을 하여 전자 밀도를 결정합니다. 전자 밀도가 결정되면 각 k점에서 계산을 하여 밴드 다이어그램을 그릴 수 있습니다.
from ase import Atoms
from ase.build import bulk
from ase.calculators.espresso import Espresso
atoms = bulk("Cu")
pseudopotentials = {'Cu':'Cu.pz-d-rrkjus.UPF'}
input_data = {
'system': {
'ecutwfc': 30,
'ecutrho': 240,
'nbnd' : 35,
'occupations' : 'smearing',
'smearing':'gauss',
'degauss' : 0.01},
'disk_io': 'low'} # automatically put into 'control'
calc = Espresso(pseudopotentials=pseudopotentials,kpts=(4, 4, 4),input_data=input_data,pseudo_dir = './')
atoms.set_calculator(calc)
atoms.get_potential_energy()
fermi_level = calc.get_fermi_level()
print(fermi_level)
그리고 밴드 다이어그램에 대한 계산을합니다.
input_data.update({'calculation':'bands',
'restart_mode':'restart',
'verbosity':'high'})
calc.set(kpts={'path':'GXWLGK', 'npoints':100},
input_data=input_data)
calc.calculate(atoms)
여기서 kpts의 path에 좋아하는 브릴루앙 존의 점을 넣는 것으로, 간단하게 밴드 다이어그램을 그릴 수 있는 것이 ASE의 재미있는 점입니다.
마지막으로 밴드 다이어그램을 계산합니다.
import matplotlib.pyplot as plt
bs = calc.band_structure()
bs.reference = fermi_level
bs.plot(emax=40,emin=5)
이제 브라우저에서만 첫 번째 원리 계산을 수행할 수 있습니다.
계산 재개
별도로 날에 계산을 재개하고 싶다면 다음과 같이 할 수 있다고 생각합니다.
from google.colab import drive
drive.mount('/content/drive')
!cp /content/drive/'My Drive'/q-e.zip ./
!unzip q-e.zip
import os
os.environ['PATH'] = "/content/q-e/bin:"+os.environ['PATH']
!pip install ase
그런 다음 디렉토리를 만들고 거기에 가짜 잠재력을 다운로드하면됩니다.
!mkdir NaCl
%cd NaCl
!wget https://www.quantum-espresso.org/upf_files/Na.pbe-spn-kjpaw_psl.1.0.0.UPF
!wget https://www.quantum-espresso.org/upf_files/Cl.pbe-n-rrkjus_psl.1.0.0.UPF
Reference
이 문제에 관하여(Google Colaboratory를 사용하여 무료로 첫 번째 원리 계산), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/cometscome_phys/items/a31ab8a4a4f7217a70ff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)