Calcul des premiers principes gratuitement à l'aide de Google Colaboratory

"Introduction au calcul gratuit des premiers principes pour les expérimentateurs de propriétés physiques" pour ceux qui ne peuvent pas expérimenter avec la nouvelle Corona récemment https://cometscome.github.io/DFT/build/ J'ai écrit un article, mais au cours du processus, j'ai découvert comment faire des calculs sur les premiers principes uniquement avec Google Colab, alors j'aimerais également le partager ici.

Les choses nécessaires

--Navigateur --Compte google

Logiciel à utiliser

--Quantum Espresso: logiciel de calcul des premiers principes --Atomic Simulation Environment (ASE): bibliothèque Python pour les simulations atomiques et moléculaires https://qiita.com/cometscome_phys/items/4af134de6d959a7718b9

Installez Quantum Espresso

Pour utiliser Quantum Espresso avec Google Colab, je dois compiler Qunatum Espresso à partir de la source, mais j'ai trouvé que c'était possible de la manière suivante. Le but est d'avoir FFTW3 installé.

!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

Je télécharge la source, installe FFTW3 et prépare la compilation. prochain,

!make pw

Vous pouvez exécuter pw.x, le code de base de Quantum Espresso. Le reste est un outil de post-processus, pp:

make pp

Installons également.

Maintenant, Build OSS with Google colaboratory Comme vous pouvez le voir, les binaires compilés ici disparaîtront après 12 heures. Alors

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

Exécutez pour enregistrer le binaire sur votre Google Drive. La prochaine fois que vous l'utiliserez, décompressez-le et utilisez-le.

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

Enregistrez q-e.zip sous.

Définissez des variables d'environnement pour pouvoir exécuter Quantum Espresso. En d'autres termes

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

ça ira.

Installation ASE

ASE est facile à installer

!pip install ase

Entrez avec.

Test de calcul des premiers principes

Maintenant, faisons le calcul des premiers principes.

Optimisation structurelle de NaCl

Créez et déplacez le répertoire NaCl.

%cd /content
!mkdir NaCl
%cd NaCl

Ensuite, téléchargez le pseudo-potentiel.

!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

Il est entré dans le répertoire NaCl.

prochain,

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

Vous pouvez optimiser la structure de NaCl en exécutant. Dans ce code, l'emplacement du pseudo potentiel est spécifié par `` pseudo_dir```. Cette fois, c'est le répertoire dans lequel vous vous trouvez.

Diagramme de bande Cu

Ensuite, calculons le diagramme de bande Cu.

Créez un répertoire Cu.

%cd /content
!mkdir Cu
%cd Cu

Téléchargez le pseudo-potentiel.

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

Effectuer un calcul auto-cohérent pour déterminer la densité électronique. Une fois la densité électronique déterminée, un diagramme de bande peut être dessiné en calculant à chaque point 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)

Ensuite, faites les calculs pour le diagramme de bande.

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

Ici, le point intéressant d'ASE est que vous pouvez facilement dessiner un diagramme de bande en mettant le point de votre Brill Unzone préféré dans le chemin des kpts.

Enfin, calculez le diagramme des bandes.

import matplotlib.pyplot as plt

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

Vous pouvez désormais effectuer des calculs basés sur les principes de base uniquement avec votre navigateur.

Reprendre le calcul

Si vous souhaitez redémarrer le calcul un autre jour, vous pouvez le faire comme suit.

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

Après cela, vous pouvez créer un répertoire et y télécharger un pseudo-potentiel.

!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

Calcul des premiers principes gratuitement à l'aide de Google Colaboratory
100 langues de traitement frappent 2020 "pour Google Colaboratory"
Collaboratoire Google
[Débutant] Scrapage Web Python facile à comprendre à l'aide de Google Colaboratory
Notes de traitement habituelles lors de l'utilisation de Google Colaboratory
Utilisation du noyau Jupyter de Java avec Google Colaboratory
Environnement d'exécution Python gratuit Google Colaboratory Memo
■ Kaggle Practice for Beginners -House Sale Price (j'ai essayé d'utiliser PyCaret) -par Google Colaboratory
Emplacement de modification du code lors de l'utilisation de plotly gratuitement
Comment analyser avec Google Colaboratory à l'aide de l'API Kaggle
Créons facilement un gif mathématique en utilisant Google Colaboratory
Résumé de la configuration de Google Colaboratory
Accédez aux feuilles de calcul Google en utilisant python avec raspberry pi (pour vous-même)
■ Kaggle Practice pour les débutants - Introduction de Python - par Google Colaboratory
[Python] Les principales faiblesses et inconvénients de Google Colaboratory [Pour les débutants]
Essayez d'implémenter la régression linéaire à l'aide de Pytorch avec Google Colaboratory