OPENATOM for GW calculations

Similar documents
Practical calculations with the GW approximation and Bethe-Salpeter equation in BerkeleyGW

GWL tutorial. Paolo Umari, Università degli Studi di Padova, Italy Democritos, Trieste

GWL Manual. September 30, 2013

DFT calculation of pressure induced phase transition in silicon

Self Consistent Cycle

Problem Set 2: First-Principles Energy Methods

COMPUTATIONAL TOOL. Fig. 4.1 Opening screen of w2web

PWSCF First examples

ab initio Electronic Structure Calculations

MODULE 2: QUANTUM MECHANICS. Practice: Quantum ESPRESSO

The Abinit project. Coding is based on modern software engineering principles

Module 2: Quantum Espresso Walkthrough

Quantum ESPRESSO. PWSCF: first steps

Introduction to Hartree-Fock calculations in Spartan

1 Construction of norm-conserving semi-local pseudopotentials for Si

Practical Guide to Density Functional Theory (DFT)

The Plane-Wave Pseudopotential Method

CRYSTAL in parallel: replicated and distributed (MPP) data. Why parallel?

IFM Chemistry Computational Chemistry 2010, 7.5 hp LAB2. Computer laboratory exercise 1 (LAB2): Quantum chemical calculations

DMDW: A set of tools to calculate Debye-Waller factors and other related quantities using dynamical matrices.

ECEN 651: Microprogrammed Control of Digital Systems Department of Electrical and Computer Engineering Texas A&M University

Phonon Transport in Nanostructures

AIMMS Function Reference - GMPLinearization Procedures and Functions

1. Hydrogen atom in a box

ELSI: A Unified Software Interface for Kohn-Sham Electronic Structure Solvers

Massive Parallelization of First Principles Molecular Dynamics Code

Quantum ESPRESSO. Input and Output description

BCMB/CHEM 8190 Lab Exercise Using Maple for NMR Data Processing and Pulse Sequence Design March 2012

Computational Physics, Spring Homework Assignment # 10

Avogadro with YAeHMOP Manual

Theoretical Material Science: Electronic structure theory at the computer Exercise 14: Brillouin zone integration

Example: H 2 O (the car file)

Ab Initio Calculations for Large Dielectric Matrices of Confined Systems Serdar Ö güt Department of Physics, University of Illinois at Chicago, 845 We

Supporting Information for Interfacial Effects on. the Band Edges of Functionalized Si Surfaces in. Liquid Water

User Guide for Hermir version 0.9: Toolbox for Synthesis of Multivariate Stationary Gaussian and non-gaussian Series

Dept of Mechanical Engineering MIT Nanoengineering group

The Linearized Augmented Planewave (LAPW) Method

nanohub.org learning module: Prelab lecture on bonding and band structure in Si

1 Classical Propositional Logic [20 points]

Computational Material Science Part II-1: introduction. Horng-Tay Jeng ( 鄭弘泰 ) Institute of Physics, Academia Sinica

Tutorial on DFPT and TD-DFPT: calculations of phonons and absorption spectra

Molecular and Electronic Dynamics Using the OpenAtom Software

Introduction to Parallelism in CASTEP

ALMA: All-scale predictive design of heat management material structures

Table of Contents. Table of Contents Bi2Se3 topological insulator. Build the Bi2Se3 crystal. Bi2Se3 bulk band structure

Table of Contents. Table of Contents Spin-orbit splitting of semiconductor band structures

Hands-on : Model Potential Molecular Dynamics

Pseudopotentials for hybrid density functionals and SCAN

Abinit electron phonon interaction calculations for geniuses

Due: since the calculation takes longer than before, we ll make it due on 02/05/2016, Friday

Fundamentals and applications of Density Functional Theory Astrid Marthinsen PhD candidate, Department of Materials Science and Engineering

Large Scale Electronic Structure Calculations

Performance optimization of WEST and Qbox on Intel Knights Landing

Pseudopotentials and Basis Sets. How to generate and test them

Atomic orbitals of finite range as basis sets. Javier Junquera

Technical Note Calculations of Orbital Overlap Range Function EDR( r ; d) and Overlap Distance D(r )using Multiwfn

ESLW_Drivers July 2017

PHI: Open quantum dynamics of multi-molecule systems

GW quasiparticle energies

Open-Source Pseudopotential Interface/Unification Module (OPIUM): The Basic Ins and Outs of Operation

QuantumWise. QuantumWise is now part of Synopsys

Administrivia. Course Objectives. Overview. Lecture Notes Week markem/cs333/ 2. Staff. 3. Prerequisites. 4. Grading. 1. Theory and application

Time-dependent density functional perturbation theory

Exchange Correlation Functional Investigation of RT-TDDFT on a Sodium Chloride. Dimer. Philip Straughn

Cyclops Tensor Framework

Translation Symmetry, Space Groups, Bloch functions, Fermi energy

MRCI calculations in MOLPRO

Electrons in periodic potential

Introduction to first-principles modelling and CASTEP

Chapter: 22. Visualization: Making INPUT File and Processing of Output Results

Band Structure Calculations; Electronic and Optical Properties

How to generate a pseudopotential with non-linear core corrections

Lectures about Python, useful both for beginners and experts, can be found at (

Chapter 3. The (L)APW+lo Method. 3.1 Choosing A Basis Set

NiS - An unusual self-doped, nearly compensated antiferromagnetic metal [Supplemental Material]

QUANTUM CHEMISTRY PROJECT 3: PARTS B AND C

New Abinit driver for the calculation of electron-phonon interactions

Materials that you may find helpful when working through this exercise

Homework 2 Computational Chemistry (CBE 60553)

How to run SIESTA. Introduction to input & output files

Computer Architecture

Predicting the Structure of Solids by DFT

Understanding hydrogen storage in metal organic frameworks from first principles

CGWAS 2013: Simulating Stellar Collapse

Quantum Modeling of Solids: Basic Properties

Three Most Important Topics (MIT) Today

The Projector Augmented Wave method

SOMIM: An open-source program code for the numerical Search for Optimal Measurements by an Iterative Method

Package robustrao. August 14, 2017

Defects in materials. Manish Jain. July 8, Department of Physics Indian Institute of Science Bangalore 1/46

SeCQC: An open-source program code for the numerical. Search for the classical Capacity of Quantum Channels

HECToR CSE technical meeting, Oxford Parallel Algorithms for the Materials Modelling code CRYSTAL

Preface Introduction to the electron liquid

Image Compression Using Singular Value Decomposition

Electronic properties of CdSe nanocrystals in the absence and presence of a dielectric medium

10: Testing Testing. Basic procedure to validate calculations

MAT 343 Laboratory 6 The SVD decomposition and Image Compression

Solid State Theory: Band Structure Methods

The GW Approximation. Manish Jain 1. July 8, Department of Physics Indian Institute of Science Bangalore 1/36

Double Inverted Pendulum (DBIP)

Transcription:

OPENATOM for GW calculations by OPENATOM developers 1 Introduction The GW method is one of the most accurate ab initio methods for the prediction of electronic band structures. Despite its power, the GW method is not routinely applied to large scale materials physics or chemistry problems due to its unfavorable computational scaling: standard implementations scale as O(N 4 ) where N is the number of electrons in the system. To develop GW software that can tackle heavy computational load and large memory requirement, we have developed and implemented algorithms that work in real space for the canonical plane-wave pseudopotential approach to electronic structure calculations. This documentation will explain how to run the OpenAtom GW software with step-by-step instructions and pointers to examples. If you have further questions, comments, issues, or bugs to report, please contact the OpenAtom developer team. 2 Download & Compilation OpenAtom is hosted using git and can be downloaded using the following command: 1 git clone https://charm.cs.illinois.edu/gerrit/openatom.git --depth=1 You will also need to download charm++ using the following command: git clone https://charm.cs.illinois.edu/gerrit/charm.git At this moment, compiling the GW part is independent from the main ground-state OpenAtom compilation (this may change in the near future). To create the GW executable, go to the src_gw_bse subdirectory and follow the instruction in the README file. Once you compile successfully, two executables (charmrun and gw_bse) will appear in build subdirectory. 1 If you want the entire history, do not use depth option 1

3 Examples This document will use a 2-atom unit cell bulk Si system to explain how to run GW calculations. We strongly recommend users to download examples before proceeding to next sections. Example files with full data sets for small 2-atom unit cells of Si and GaAs are available via the OpenAtom git repository: git clone https://charm.cs.illinois.edu/gerrit/datasets/gwbse/si2 git clone https://charm.cs.illinois.edu/gerrit/datasets/gwbse/gaas2 The Si2 and GaAs2 examples include all input files for DFT calculations (Quantum Espresso files) and OpenAtom GW. The OpenAtom GW output files resulting from running the software can also be found in the output subdirectory to permit for checking. 4 DFT Calculations 4.1 Generating ψ nk and E nk For the current release, we rely on the Quantum Espresso (QE) software 2 to generate ground state wavefunctions and energies. In the example directory (Si2/QuantumEspresso), input files for scf and bands calculations with QE are included. Once bands calculation is done, use our converter (pw2openatom.x) to generate states that OpenAtom can read. The converter is located in external_conversion subdirectory. Follow the instruction in the README there to set up the converter. To prevent the Coulomb operator from diverging at zero wave vector when computing the dielectric response, you must also separately generate wavefunctions and energies for occupied states with shifted k grids. A small shift is recommended (e.g., (0, 0, 0.001) in our example in lattice units). OpenAtom GW is designed for large systems which do not require dense k grid. Hence, no symmetries are considered in OpenAtom GW. If you wish to run a small system with many k points, we recommend to using another other GW software which has symmetry reduction built-in such as BerkeleyGW 3. For educational purposes, we describe in more detail an example of 2-atom Si with 8 k points 2 P. Giannozzi et al., QUANTUM ESPRESSO: a modular and open-source software project for quantum simulations of materials, Journal of Physics: Condensed Matter, vol. 21, no. 39, p. 395502, 2009. http://www.quantum-espresso.org/ 3 Deslippe, xsamsonidze, Strubbe, Jain, Cohen and Louie, Computer Physics Communications 183, 1269-1289, (2012). DOI 10.1016/j.cpc.2011.12.006. http://berkeleygw.org/ 2

here and 52 bands. The key steps for preparing the GW calculation are: 1. Run the QE scf calculation (e.g., pw.x < in.scf) 2. Run the QE bands calculations with the desired number of empty states (e.g., pw.x < in.bands) for the original (unshifted) k grid. 3. Create the STATES directory. Use makedir.sh. For this example, we run the command./makedir.sh 8 1 on the command line 4. Run the converter (pw2openatom.x < in.pw2openatom) with shift_flag=.false. 5. Run bands calculations with shifted k grid (e.g. pw.x < in.bandsq). Only occupied states are needed. 6. Run converter again with shift_flag=.true. A description of the input options for pw2openatom.x is available at the end of the README file. 4.2 Vxc In this first release, we have not implemented a converter that calculates V xc matrix elements. For V xc matrix elements, we encourage users to run the Quantum Espresso pw2bgw.x program with the vxc_flag set to be on. In our next release, we will provide our own converter which calculates V xc matrix elements. Here are the steps to follow in order to compute the V xc elements using Quantum Espresso: 1. Go to the PP/src directory in the Quantum Espresso package. 2. Run make pw2bgw.x 3. Run pw2bgw.x in your working directory with these input options in its input file: vxc_flag =.true. vxc_diag_nmin = n1 vxc_diag_nmax = n2 where n1 and n2 are the smallest and largest band indices for which you want the Vxc matrix elements. If off diagonal elements are desired, use the vxc_offdiag_nmin and vxc_offdiag_nmax keywords instead. 3

5 OpenAtom GW Input Files User must create 4 input files to run OpenAtom GW. 1. klist.dat : specifying k lists and their weight as well as shifting vector 2. lattice.dat : specifying lattice vectors 3. band_list.dat : specifying which Σ elements the user wants to calculate 4. simulation keywords file (config file in Si2 or GaAs examples) : the simulation keywords file controls all the options used in GW calculations. This file can have any name. 5.1 klist.dat This file tells the code how many k points are used and what they actually are. The format of this file follows below: nk kx 1 ky 1 kz 1 w k 1... k nk x k nk y k nk z s x s y s z nk 1 nk 2 nk 3 w k nk nk - number of k points k x k y k z - k point coordinates (crystal, i.e. lattice, coordinates) w k - weight s x s y s z - shift vector (crysta/lattice coordinates) nk 1 nk 2 nk 3 - positive integers specifying density of k grid along each reciprocal lattice vector Example of klist.dat with 8 k points: 8 0.000000000 0.000000000 0.000000000 0.125 0.000000000 0.000000000 0.500000000 0.125 0.000000000 0.500000000 0.000000000 0.125 0.000000000 0.500000000 0.500000000 0.125 0.500000000 0.000000000 0.000000000 0.125 0.500000000 0.000000000 0.500000000 0.125 4

0.500000000 0.500000000 0.000000000 0.125 0.500000000 0.500000000 0.500000000 0.125 0.0 0.0 0.001 2 2 2 5.2 lattice.dat This file tells the shape of the simulation cell and reciprocal lattice vector. The format of this file follows below: l a a1 x a1 y a1 z a2 x a2 y a2 z a3 x a3 y a3 z b1 x b1 y b1 z b2 x b2 y b2 z b3 x b3 y b3 z l a - lattice parameter (Bohr radius [atomic] units) a1, a2, a3 : lattice vector (units of l a ) b1, b2, b3 : reciprocal lattice vector (Cartesian coordinates in units 2π/l a ) Example of lattice.dat: 10.2612 0.000000000 0.500000000 0.500000000 0.500000000 0.000000000 0.500000000 0.500000000 0.500000000 0.000000000-1.000000 1.000000 1.000000 1.000000-1.000000 1.000000 1.000000 1.000000-1.000000 5.3 band list.dat This file sets which matrix element to calculate for Σ, ψ n1 Σ ψ n2. The format of this file is: n lm 5

l 1 m 1 l 2 m 2... l nlm m nlm n lm : How many lm pair that a user wants to calculate l : band index of ψ l m : band index of ψ m Example of band_list.dat file: 2 4 4 5 5 5.4 simulation keywords file (configuration file) Simulation keywords file sets relevant variables used for GW runs. The example of simulation keywords file is below. Full list of keywords and arguments are explained in the next section. ~gen_gw[ \num_tot_state{52} Total number of the states \num_occ_state{4} Number of the occupied states \num_unocc_state{48} Number of the unoccupied states \num_kpoint{8} Number of k-point - should be consistent with klist.dat \num_spin{1} Number of spin \statefile_binary_opt{off} ] ~GW_epsilon[ \EcutFFT{12} FFT size \Ecuteps{10} Epsilon cutoff ] ~GW_sigma[ ] ~GW_parallel[ \rows_per_chare{10} 6

\cols_per_chare{10} \pipeline_stages{1} ] 6 Running OpenAtomGW To run OpenAtom GW, copy charmrun and gw_bse in the build subdirectory to the dataset subdirectory (Si2) and run with this command:./charmrun +p1./gw_bse config You can change the number of processors by changing p1 to px where X is the number of processors. The output using 1 processor run is available in output sdirectory. 7 Simulation Keyword Dictionary The simulation keyword file contains 5 subsections (we call them meta-keywords): ~gen_gw[ ] ~GW_epsilon[ ] ~GW_sigma[ ] ~GW_file[ ] ~GW_parallel[] Each meta-keyword requires keywords and key-arguments. If multiple options are available, boldface indicates a default value. 7

gen GW [7 keywords] 1. \num tot state{1} : Total number of states including occupied and unoccupied (also known as the number of bands in other software approaches). In direct reference to the next two options, note that num tot state = num occ state + num unocc state 2. \num occ state{1} : Number of occupied states (i.e., number of valence bands) 3. \num unocc state{1} : Number of unoccupied states (i.e., number of conduction bands) 4. \num kpoint{1} : Number of k points. 5. \num qpt all{on,off} : If on, calculate epsilon matrix for all q points which differences between the k vectors. If off, it will look for \qpt{} keywords to see which q points to calculate. 6. \qpt{0,2,3} : If \num qpt all{off}, user asked to select which q points of epsilon matrix are calculated. No default value for this keyword. Zero-based indexing is used. 7. \statefile binary opt{off,on,off gzip,on gzip} : How the wavefunction coefficients are stored in STATES files. If you have converted the wavefunctions from Quantum Espresso, the option should be off. off : plain ASCII text format on : binary off gzip : plane ASCII but compressed by gzip on gzip : binary and compressed by gzip planned for the near future \num spin : number of spin \coulb trunc opt : Coulomb truncation options. 8

GW epsilon [4 keywords] 1. \EcutFFT{1} : Wavefunctions are fast-fourier transformed (FFTed) from reciprocal to real space for computation of the polarizability. This energy cutoff (in Ryd) determines the spatial resolution used and thus the size of the FFT grid. This is a physical convergence parameter. 2. \Ecuteps{1} : Energy cutoff for epsilon matrix (in Ryd). Determines the size of the epsilon matrix. This number has to be less than or equal to EcutFFT. 3. \tol iter mtxinv{0.001} : We invert ɛ matrix using an iterative matrix inversion method. 4 The code compares all of the matrix elements between N th and N + 1 th iteration, and if the largest difference is below this tolerance, matrix inversion routine terminates. 4. \max iter{100}: Maximum number of iteration for the matrix inversion. If maximum number of iteration used, it does not perform iteration even if the tolerance is not achieved. 4 Adi Ben-Israel. An iterative method for computing the generalized inverse of an arbitrary matrix. Math. Comp., 19:452 455, 1965. 9

GW sigma [0 keyword] planned for the near future \screened coulomb cutoff{1} : Energy cutoff for screened coulomb interaction (in Ryd). \PP num mode{1} : number of Plasmon-Pole modes to be summed over 10

GW io [18 keywords] Following options can be used to read and write P Matrix, Epsilon and Epsilon Inverse matrices to file. Each row of a matrix is read from or written to a file with suffix row${row index}. 1. \p matrix read{on,off} : If on, read in P matrix from file. 2. \p matrix read prefix{pmatrixin} : Specify the directory with P matrix files if p matrix read is on. 3. \p matrix write{on,off} : If on, write P matrix to file. 4. \p matrix write prefix{pmatrixout} : Specify the directory for P matrix files if p matrix write is on. 5. \p matrix verify{on,off} : If on, compare and verify P matrix with data in file. 6. \p matrix verify prefix{pmatrixin} : Specify the directory for P matrix verification files if p matrix verify is on. 7. \epsilon read{on,off} : If on, read in Epsilon matrix from file. 8. \epsilon read prefix{epsin} : Specify the directory with Epsilon matrix files if epsilon matrix read is on. 9. \epsilon write{on,off} : If on, write Epsilon matrix to file. 10. \epsilon write prefix{epsout} : Specify the directory for Epsilon matrix files if epsilon matrix write is on. 11. \epsilon verify{on,off} : If on, compare and verify Epsilon matrix with data in file. 11

12. \epsilon verify prefix{epsin} : Specify the directory for Epsilon matrix verification files if epsilon matrix verify is on. 13. \epsilon inv read{on,off} : If on, read in Epsilon inverse matrix from file. 14. \epsilon inv read prefix{epsinvin} : Specify the directory with Epsilon inverse matrix files if epsilon inv matrix read is on. 15. \epsilon inv write{on,off} : If on, write Epsilon inverse matrix to file. 16. \epsilon inv write prefix{epsinvout} : Specify the directory for Epsilon inverse matrix files if epsilon inv matrix write is on. 17. \epsilon inv verify{on,off} : If on, compare and verify Epsilon inverse matrix with data in file. 18. \epsilon inv verify prefix{epsinvin} : Specify the directory for Epsilon inverse matrix verification files if epsilon inv matrix verify is on. 12

GW parallel [4 keywords] 1. \pipeline stages{1} : Number of unoccupied states to concurrently send during P matrix computation. Increasing the number of stages should yield better CPU utilization, however each additional stage requires memory equal to the size of all occupied states. After a certain number of stages the benefit diminishes as the CPU gets saturated. 2. \rows per chare{1} : Parameter controlling the decomposition of the P matrix. Each chare holds a tile of the matrix with this many rows. Larger tiles reduces some scheduling overhead but allows for less overlap of communication and computation. May also effect cache utilization. Creating enough tiles to have 4-16 per core is a good starting point. 3. \cols per chare{1} : See \rows per chare. 4. \transpose stages{1} : when transposing the P matrix, how many slices to cut the P matrix into in order to do the transposition in pieces to avoid memory overflow. 13