Kostenlose First-Principles-Berechnung mit Google Colaboratory

"Einführung in die kostenlose Berechnung der ersten Prinzipien für Experimentatoren physikalischer Eigenschaften" für diejenigen, die in letzter Zeit nicht mit der neuen Corona experimentieren können https://cometscome.github.io/DFT/build/ Ich habe einen Artikel geschrieben, dabei aber herausgefunden, wie man First-Principles-Berechnungen nur mit Google Colab durchführt. Deshalb möchte ich ihn auch hier teilen.

Dinge notwendig

--Browser --Google Benutzerkonto

Zu verwendende Software

--Quantum Espresso: Berechnungssoftware nach den ersten Prinzipien --Atomic Simulation Environment (ASE): Python-Bibliothek für atomare und molekulare Simulationen https://qiita.com/cometscome_phys/items/4af134de6d959a7718b9

Installieren Sie Quantum Espresso

Um Quantum Espresso mit Google Colab verwenden zu können, muss ich Qunatum Espresso aus dem Quellcode kompilieren. Ich habe jedoch festgestellt, dass dies auf folgende Weise möglich ist. Der Punkt ist, FFTW3 installiert zu haben.

!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

Ich lade die Quelle herunter, installiere FFTW3 und bereite das Kompilieren vor. Nächster,

!make pw

Sie können pw.x ausführen, den Kerncode von Quantum Espresso. Der Rest ist ein Nachbearbeitungswerkzeug, pp:

make pp

Lassen Sie uns auch installieren.

Jetzt OSS mit Google-Labor erstellen Wie Sie in sehen können, verschwinden die hier kompilierten Binärdateien nach 12 Stunden. Damit

from google.colab import drive
drive.mount('/content/drive')

Führen Sie diese Option aus, um die Binärdatei auf Ihrem Google Drive zu speichern. Wenn Sie es das nächste Mal verwenden, entpacken Sie es und verwenden Sie es.

%cd /content/
!zip -r /content/drive/'My Drive'/q-e.zip q-e 

Speichern Sie q-e.zip als.

Stellen Sie Umgebungsvariablen so ein, dass Sie Quantum Espresso ausführen können. Mit anderen Worten

import os
os.environ['PATH'] = "/content/q-e/bin:"+os.environ['PATH']

Wird besorgt.

ASE-Installation

ASE ist einfach zu installieren

!pip install ase

Geben Sie mit ein.

Berechnungstest nach den ersten Prinzipien

Lassen Sie uns nun tatsächlich die Berechnung der ersten Prinzipien durchführen.

Strukturoptimierung von NaCl

Erstellen und verschieben Sie das NaCl-Verzeichnis.

%cd /content
!mkdir NaCl
%cd NaCl

Laden Sie dann das Pseudopotential herunter.

!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

Es ging in das NaCl-Verzeichnis.

Nächster,

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))

Sie können die Struktur von NaCl durch Ausführen optimieren. In diesem Code wird der Ort des Pseudopotentials durch `` `pseudo_dir``` angegeben. Diesmal ist es das Verzeichnis, in dem Sie sich gerade befinden.

Cu-Banddiagramm

Als nächstes berechnen wir das Cu-Bandendiagramm.

Erstellen Sie ein Cu-Verzeichnis.

%cd /content
!mkdir Cu
%cd Cu

Laden Sie das Pseudopotential herunter.

!wget https://www.quantum-espresso.org/upf_files/Cu.pz-d-rrkjus.UPF

Führen Sie eine selbstkonsistente Berechnung durch, um die Elektronendichte zu bestimmen. Sobald die Elektronendichte bestimmt ist, kann durch Berechnen an jedem k-Punkt ein Banddiagramm gezeichnet werden.

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)

Führen Sie dann die Berechnungen für das Banddiagramm durch.

input_data.update({'calculation':'bands',
                              'restart_mode':'restart',
                               'verbosity':'high'})
calc.set(kpts={'path':'GXWLGK', 'npoints':100},
          input_data=input_data)
calc.calculate(atoms)

Hier ist der interessante Punkt von ASE, dass Sie leicht ein Banddiagramm zeichnen können, indem Sie den Punkt Ihrer Lieblings-Brill-Unzone in den Pfad von kpts setzen.

Berechnen Sie abschließend das Banddiagramm.

import matplotlib.pyplot as plt

bs = calc.band_structure()
bs.reference = fermi_level
bs.plot(emax=40,emin=5)
Cu.png

Sie können jetzt First-Principles-Berechnungen nur mit Ihrem Browser durchführen.

Berechnung fortsetzen

Wenn Sie die Berechnung an einem anderen Tag neu starten möchten, können Sie dies wie folgt tun.

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

Danach können Sie ein Verzeichnis erstellen und Pseudopotential darauf herunterladen.

!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

Recommended Posts

Kostenlose First-Principles-Berechnung mit Google Colaboratory
100 Sprachverarbeitung klopfen 2020 "für Google Colaboratory"
Google-Labor
[Anfänger] Leicht verständliches Python-Web-Scraping mit Google Colaboratory
Übliche Verarbeitungshinweise bei Verwendung von Google Colaboratory
Verwendung des Jupyter-Kernels von Java mit Google Colaboratory
Kostenlose Python-Ausführungsumgebung Google Colaboratory Memo
■ Kaggle-Übung für Anfänger - Hausverkaufspreis (ich habe versucht, PyCaret zu verwenden) - von Google Colaboratory
Code-Änderungsort bei kostenloser Verwendung von Plotly
Analysieren mit Google Colaboratory mithilfe der Kaggle-API
Lassen Sie uns mit Google Colaboratory ganz einfach ein mathematisches GIF erstellen
Zusammenfassung der Einrichtung von Google Colaboratory
Zugriff auf Google Spreadsheets Verwenden von Python mit Himbeer-Pi (für sich selbst)
■ Kaggle-Übung für Anfänger - Einführung von Python - von Google Colaboratory
[Python] Die größten Schwächen und Nachteile von Google Colaboratory [Für Anfänger]
Versuchen Sie, eine lineare Regression mit Pytorch mit Google Colaboratory zu implementieren