Difference between revisions of "Bulk material: h-BN"

From The Yambo Project
Jump to navigation Jump to search
 
(29 intermediate revisions by 4 users not shown)
Line 1: Line 1:
In this tutorial you will learn how to generate the Yambo SAVE folder for bulk hBN starting from a PWscf calculation.
[[Category:Modules]]
[[Category:Tutorials]]
In this module you will learn how to generate the Yambo ''SAVE'' folder for bulk hBN starting from a [https://www.quantum-espresso.org/ QuantumEspresso] calculation.<br>
Notice that beyond QuantumEspresso other DFT codes can be used to generate wave-functions for Yambo: [https://www.abinit.org/ Abinit] and [https://www.pwmat.com/ PWMat].
 
== Prerequisites ==
== Prerequisites ==
'''You will need''':
'''You will need''':
* PWSCF input files and pseudopotentials for hBN bulk (Download here)
* PWSCF input files and pseudopotentials for hBN bulk  
* <code>pw.x</code> executable, version 5.0 or later
* <code>pw.x</code> executable, version 5.0 or later
* <code>p2y</code> executable
* <code>p2y</code> and <code>yambo</code> executables
* Follow the instructions in the [[Tutorials#Files|File page]] and download and unpack the hBN.tar.gz.
 
 
== System characteristics ==
== System characteristics ==
[[File:HBN-bulk-3x3-annotated.png|thumb|Atomic structure of bulk hBN]]
[[File:HBN-bulk-3x3-annotated.png|thumb|Atomic structure of bulk hBN]]
Line 13: Line 18:
* Four atoms per cell, B and N (16 electrons)
* Four atoms per cell, B and N (16 electrons)
* Lattice constants: ''a'' = 4.716 [a.u.], ''c/a'' = 2.582
* Lattice constants: ''a'' = 4.716 [a.u.], ''c/a'' = 2.582
* Plane wave cutoff 40 Ry (1500 RL vectors in wavefunctions)
* Plane wave cutoff 40 Ry (~1500 RL vectors in wavefunctions)
* SCF run: shifted ''6x6x2'' grid with 8 bands  
* SCF run: shifted ''6x6x2'' grid (12 k-points) with 8 bands  
* Non-SCF run: gamma-centred ''6x6x2'' grid with 100 bands
* Non-SCF run: gamma-centred ''6x6x2'' (14 k-points) grid with 100 bands
 


== DFT calculations ==
== DFT calculations ==
Unpack the tarfile. It uses the same file structure as other yambo tutorials:
$ tar -xcvf hBN-bulk.tar
  $ cd YAMBO_TUTORIALS/hBN/PWSCF
  $ cd YAMBO_TUTORIALS/hBN/PWSCF
  $ ls
  $ ls
Line 26: Line 30:


First run the SCF calculation to generate the ground-state charge density, occupations, Fermi level, and so on:
First run the SCF calculation to generate the ground-state charge density, occupations, Fermi level, and so on:
  pw.x < hBN_scf.in > hBN_scf.out
  $ pw.x < hBN_scf.in > hBN_scf.out
The output reports 12 k-points. The valence band maximum is at 5.06eV.
Inspection of the output shows that the valence band maximum lies at 5.06eV.


Next run a non-SCF calculation to generate a set of Kohn-Sham eigenvalues and eigenvectors for both occupied and unoccupied states (100 bands):  
Next run a non-SCF calculation to generate a set of Kohn-Sham eigenvalues and eigenvectors for both occupied and unoccupied states (100 bands):  
  pw.x < hBN_nscf.in > hBN_nscf.out
  $ pw.x < hBN_nscf.in > hBN_nscf.out                 ''(serial run, ~1 min) OR''
$ mpirun -np 2 pw.x < hBN_nscf.in > hBN_nscf.out      ''(parallel run, 40s)''
Here we use a ''6x6x2'' grid giving 14 k-points, but denser grids should be used for checking convergence of Yambo runs.
Here we use a ''6x6x2'' grid giving 14 k-points, but denser grids should be used for checking convergence of Yambo runs.


Line 36: Line 41:
  wf_collect=.true.
  wf_collect=.true.
  force_symmorphic=.true.
  force_symmorphic=.true.
which are needed for generating the Yambo databases. Full explanations of these variables are given on the [http://www.quantum-espresso.org/wp-content/uploads/Doc/INPUT_PW.html quantum-ESPRESSO input variables page].  
diago_thr_init=5.0e-6,
diago_full_acc=.true.
which are needed for generating the Yambo databases accurately. Full explanations of these variables are given on the
[https://www.quantum-espresso.org/Doc/INPUT_PW.html quantum-ESPRESSO input variables page].


After these two runs, you should have a <code>hBN.save</code> directory:
After these two runs, you should have a ''hBN.save'' directory:
  $ ls hBN.save
  $ ls hBN.save
  data-file.xml charge-density.dat gvectors.dat B.pz-vbc.UPF N.pz-vbc.UPF
  data-file.xml charge-density.dat gvectors.dat B.pz-vbc.UPF N.pz-vbc.UPF
Line 44: Line 52:


== Conversion to Yambo format ==
== Conversion to Yambo format ==
The PWscf <code>bBN.save</code> output is converted to the Yambo format using the <code>p2y</code> executable (pwscf to yambo), found in the yambo <code>bin</code> directory.
The PWscf ''bBN.save'' output is converted to the Yambo format using the <code>p2y</code> executable (pwscf to yambo), found in the yambo ''bin'' directory.
Enter <code>hBN.save</code> and launch <code>p2y</code>:
Enter ''hBN.save'' and launch <code>p2y</code>:


  $ cd hBN.save
  $ cd hBN.save
Line 60: Line 68:
  <--->  == P2Y completed ==
  <--->  == P2Y completed ==


This output repeats some information about the system and generates a <code>SAVE</code> directory:
This output repeats some information about the system and generates a ''SAVE'' directory:
  $ ls SAVE
  $ ls SAVE
  ns.db1  ns.wf  ns.kb_pp_pwscf
  ns.db1  ns.wf  ns.kb_pp_pwscf
  ns.wf_fragments_1_1 ...
  ns.wf_fragments_1_1 ...
  ns.kb_pp_pwscf_fragment_1 ...
  ns.kb_pp_pwscf_fragment_1 ...
These files, with an ''n'' prefix, indicate that they are in netCDF format, and thus not human readable. However, they are perfectly transferable across different architectures.
These files, with an ''n'' prefix, indicate that they are in netCDF format, and thus not human readable. However, they are perfectly transferable across different architectures. You can check that the databases contain the information you expect by launching Yambo using the <code>-D</code> option:


You are now ready to run Yambo. Check that the databases contain the information you expect:
  $ yambo -D
  $ yambo -D
  [RD./SAVE//ns.db1]------------------------------------------
  [RD./SAVE//ns.db1]------------------------------------------
Line 82: Line 89:
  - S/N 006626 -------------------------- v.04.01.02 r.00000 -
  - S/N 006626 -------------------------- v.04.01.02 r.00000 -


In practice we suggest to move the <code>SAVE</code> into a new clean folder.  
In practice we suggest to move the ''SAVE'' folder into a new clean folder.  
In this tutorial however, we ask instead that you continue using a <code>SAVE</code> we prepared previously:
 
In this tutorial however, we ask instead that you continue using a ''SAVE'' folder that we prepared previously:
  $ cd ../../YAMBO
  $ cd ../../YAMBO
  $ ls
  $ ls
  SAVE
  SAVE


== Links ==
==Summary==
* [[2D_material:_h-BN_sheet|Generate databases for 2D hBN]]
From this tutorial you've learned:
* [[Tutorials|Back to tutorials menu]]
* How to run a DFT calculation with PWscf in preparation for Yambo
* Convert the DFT output into the Yambo format
* How to check the contents of the netCDF databases
 
<br>
{| style="width:100%" border="1"
|style="width:15%; text-align:left"|Prev: [[First_steps:_a_walk_through_from_DFT_to_optical_properties|First steps]]
|style="width:70%; text-align:center"|Now: [[Tutorials|Tutorials Home]] --> [[First_steps:_a_walk_through_from_DFT_to_optical_properties|First steps]] --> [[Bulk_material:_h-BN|bulk hBN]]
|style="width:15%; text-align:right"|Next: [[Initialization|Initialization]]
|-
|}

Latest revision as of 15:06, 16 June 2023

In this module you will learn how to generate the Yambo SAVE folder for bulk hBN starting from a QuantumEspresso calculation.
Notice that beyond QuantumEspresso other DFT codes can be used to generate wave-functions for Yambo: Abinit and PWMat.

Prerequisites

You will need:

  • PWSCF input files and pseudopotentials for hBN bulk
  • pw.x executable, version 5.0 or later
  • p2y and yambo executables
  • Follow the instructions in the File page and download and unpack the hBN.tar.gz.


System characteristics

Atomic structure of bulk hBN

Hexagonal boron nitride - hBN:

  • HCP lattice, ABAB stacking
  • Four atoms per cell, B and N (16 electrons)
  • Lattice constants: a = 4.716 [a.u.], c/a = 2.582
  • Plane wave cutoff 40 Ry (~1500 RL vectors in wavefunctions)
  • SCF run: shifted 6x6x2 grid (12 k-points) with 8 bands
  • Non-SCF run: gamma-centred 6x6x2 (14 k-points) grid with 100 bands


DFT calculations

$ cd YAMBO_TUTORIALS/hBN/PWSCF
$ ls
Inputs		Pseudos		PostProcessing		References
hBN_scf.in	hBN_nscf.in     hBN_scf_plot_bands.in  hBN_nscf_plot_bands.in 

First run the SCF calculation to generate the ground-state charge density, occupations, Fermi level, and so on:

$ pw.x < hBN_scf.in > hBN_scf.out

Inspection of the output shows that the valence band maximum lies at 5.06eV.

Next run a non-SCF calculation to generate a set of Kohn-Sham eigenvalues and eigenvectors for both occupied and unoccupied states (100 bands):

$ pw.x < hBN_nscf.in > hBN_nscf.out                  (serial run, ~1 min) OR
$ mpirun -np 2 pw.x < hBN_nscf.in > hBN_nscf.out       (parallel run, 40s)

Here we use a 6x6x2 grid giving 14 k-points, but denser grids should be used for checking convergence of Yambo runs.

Note the presence of the following flags in the input file:

wf_collect=.true.
force_symmorphic=.true.
diago_thr_init=5.0e-6,
diago_full_acc=.true.

which are needed for generating the Yambo databases accurately. Full explanations of these variables are given on the quantum-ESPRESSO input variables page.

After these two runs, you should have a hBN.save directory:

$ ls hBN.save
data-file.xml charge-density.dat gvectors.dat B.pz-vbc.UPF N.pz-vbc.UPF
K00001	K00002 .... 	K00035	K00036

Conversion to Yambo format

The PWscf bBN.save output is converted to the Yambo format using the p2y executable (pwscf to yambo), found in the yambo bin directory. Enter hBN.save and launch p2y:

$ cd hBN.save
$ p2y
...
<---> DBs path set to .
<---> Index file set to data-file.xml
<---> Header/K-points/Energies... done
...
<---> == DB1 (Gvecs and more) ...
<---> ... Database done
<---> == DB2 (wavefunctions)  ... done ==
<---> == DB3 (PseudoPotential) ... done ==
<--->  == P2Y completed ==

This output repeats some information about the system and generates a SAVE directory:

$ ls SAVE
ns.db1  ns.wf  ns.kb_pp_pwscf
ns.wf_fragments_1_1 ...
ns.kb_pp_pwscf_fragment_1 ...

These files, with an n prefix, indicate that they are in netCDF format, and thus not human readable. However, they are perfectly transferable across different architectures. You can check that the databases contain the information you expect by launching Yambo using the -D option:

$ yambo -D
[RD./SAVE//ns.db1]------------------------------------------
Bands                           : 100
K-points                        : 14
G-vectors             [RL space]:  8029
Components       [wavefunctions]: 1016
...
[RD./SAVE//ns.wf]-------------------------------------------
Fragmentation                    :yes
...
[RD./SAVE//ns.kb_pp_pwscf]----------------------------------
Fragmentation                    :yes
- S/N 006626 -------------------------- v.04.01.02 r.00000 -

In practice we suggest to move the SAVE folder into a new clean folder.

In this tutorial however, we ask instead that you continue using a SAVE folder that we prepared previously:

$ cd ../../YAMBO
$ ls
SAVE

Summary

From this tutorial you've learned:

  • How to run a DFT calculation with PWscf in preparation for Yambo
  • Convert the DFT output into the Yambo format
  • How to check the contents of the netCDF databases


Prev: First steps Now: Tutorials Home --> First steps --> bulk hBN Next: Initialization