Quantum Espresso-4.1

Dari PaloDozen

Pengantar ringkas

Daftar isi

Quantum Espresso

From Quantum ESPRESSO website:

Quantum ESPRESSO is an integrated suite of computer codes for electronic-structure calculations and materials modeling at the nanoscale. It is based on density-functional theory, plane waves, and pseudopotentials (both norm-conserving and ultrasoft).

Installing Quantum ESPRESSO

The packages can be downloaded at Quantum ESPRESSO website or directly at this direct link. Extract the package

This software can be configured by running the configure scripts at the ESPRESSO directory

$ ./configure

It will detects the compiler, libraries needed, and some other stuffs. We can pass several arguments to the configure script, such as CC (for C compiler command), FC (for Fortran90 compiler command) if the configuration made by the configure scripts didn't match our needs. Type

$ ./configure --help

to see all the arguments supported by the configure script.

After a successful configuration then type

$ make all

This will results in binaries in the <ESPRESSO_DIR>/bin. This directory contains link for binaries we've just obtained from compiling the sources.

[efefer@dozen bin]$ ls -l 
total 0
lrwxrwxrwx 1 efefer efefer 15 Aug 14 14:18 average.x -> ../PP/average.x
lrwxrwxrwx 1 efefer efefer 22 Aug 14 14:21 band_plot.x -> ../pwtools/band_plot.x
lrwxrwxrwx 1 efefer efefer 21 Aug 14 14:22 bands_FS.x -> ../pwtools/bands_FS.x
lrwxrwxrwx 1 efefer efefer 13 Aug 14 14:18 bands.x -> ../PP/bands.x
lrwxrwxrwx 1 efefer efefer 13 Aug 14 14:23 cppp.x -> ../CPV/cppp.x
lrwxrwxrwx 1 efefer efefer 11 Aug 14 14:23 cp.x -> ../CPV/cp.x
lrwxrwxrwx 1 efefer efefer 10 Aug 14 14:21 d3.x -> ../D3/d3.x
lrwxrwxrwx 1 efefer efefer 14 Aug 14 14:18 dipole.x -> ../PP/dipole.x
lrwxrwxrwx 1 efefer efefer 17 Aug 14 14:21 dist.x -> ../pwtools/dist.x
lrwxrwxrwx 1 efefer efefer 11 Aug 14 14:18 dos.x -> ../PP/dos.x
lrwxrwxrwx 1 efefer efefer 14 Aug 14 14:17 dynmat.x -> ../PH/dynmat.x
lrwxrwxrwx 1 efefer efefer 15 Aug 14 14:19 epsilon.x -> ../PP/epsilon.x
lrwxrwxrwx 1 efefer efefer 15 Aug 14 14:21 ev.x -> ../pwtools/ev.x
lrwxrwxrwx 1 efefer efefer 17 Aug 14 14:21 fqha.x -> ../pwtools/fqha.x
lrwxrwxrwx 1 efefer efefer 21 Aug 14 14:19 initial_state.x -> ../PP/initial_state.x
lrwxrwxrwx 1 efefer efefer 18 Aug 14 14:10 iotk -> ../iotk/tools/iotk
lrwxrwxrwx 1 efefer efefer 30 Aug 14 14:10 iotk_print_kinds.x -> ../iotk/src/iotk_print_kinds.x
lrwxrwxrwx 1 efefer efefer 18 Aug 14 14:10 iotk.x -> ../iotk/src/iotk.x
lrwxrwxrwx 1 efefer efefer 20 Aug 14 14:21 kpoints.x -> ../pwtools/kpoints.x
lrwxrwxrwx 1 efefer efefer 21 Aug 14 14:22 kvecs_FS.x -> ../pwtools/kvecs_FS.x
lrwxrwxrwx 1 efefer efefer 15 Aug 14 14:24 ld1.x -> ../atomic/ld1.x
lrwxrwxrwx 1 efefer efefer 14 Aug 14 14:18 matdyn.x -> ../PH/matdyn.x
lrwxrwxrwx 1 efefer efefer 23 Aug 14 14:22 metadyn_pp.x -> ../pwtools/metadyn_pp.x
lrwxrwxrwx 1 efefer efefer 21 Aug 14 14:22 path_int.x -> ../pwtools/path_int.x
lrwxrwxrwx 1 efefer efefer 15 Aug 14 14:20 phcg.x -> ../Gamma/phcg.x
lrwxrwxrwx 1 efefer efefer 10 Aug 14 14:17 ph.x -> ../PH/ph.x
lrwxrwxrwx 1 efefer efefer 16 Aug 14 14:19 plan_avg.x -> ../PP/plan_avg.x
lrwxrwxrwx 1 efefer efefer 16 Aug 14 14:19 plotband.x -> ../PP/plotband.x
lrwxrwxrwx 1 efefer efefer 16 Aug 14 14:19 plotproj.x -> ../PP/plotproj.x
lrwxrwxrwx 1 efefer efefer 15 Aug 14 14:19 plotrho.x -> ../PP/plotrho.x
lrwxrwxrwx 1 efefer efefer 11 Aug 14 14:19 pmw.x -> ../PP/pmw.x
lrwxrwxrwx 1 efefer efefer 10 Aug 14 14:19 pp.x -> ../PP/pp.x
lrwxrwxrwx 1 efefer efefer 15 Aug 14 14:19 projwfc.x -> ../PP/projwfc.x
lrwxrwxrwx 1 efefer efefer 17 Aug 14 14:19 pw2casino.x -> ../PP/pw2casino.x
lrwxrwxrwx 1 efefer efefer 13 Aug 14 14:20 pw2gw.x -> ../PP/pw2gw.x
lrwxrwxrwx 1 efefer efefer 20 Aug 14 14:20 pw2wannier90.x -> ../PP/pw2wannier90.x
lrwxrwxrwx 1 efefer efefer 18 Aug 14 14:21 pwcond.x -> ../PWCOND/pwcond.x
lrwxrwxrwx 1 efefer efefer 17 Aug 14 14:20 pw_export.x -> ../PP/pw_export.x
lrwxrwxrwx 1 efefer efefer 20 Aug 14 14:22 pwi2xsf.x -> ../pwtools/pwi2xsf.x
lrwxrwxrwx 1 efefer efefer 10 Aug 14 14:16 pw.x -> ../PW/pw.x
lrwxrwxrwx 1 efefer efefer 11 Aug 14 14:18 q2r.x -> ../PH/q2r.x
lrwxrwxrwx 1 efefer efefer 15 Aug 14 14:19 sumpdos.x -> ../PP/sumpdos.x
lrwxrwxrwx 1 efefer efefer 12 Aug 14 14:21 vdw.x -> ../VdW/vdw.x
lrwxrwxrwx 1 efefer efefer 15 Aug 14 14:19 voronoy.x -> ../PP/voronoy.x
lrwxrwxrwx 1 efefer efefer 19 Aug 14 14:20 wannier_ham.x -> ../PP/wannier_ham.x
lrwxrwxrwx 1 efefer efefer 20 Aug 14 14:20 wannier_plot.x -> ../PP/wannier_plot.x
lrwxrwxrwx 1 efefer efefer 12 Aug 14 14:19 wfdd.x -> ../PP/wfdd.x

First Example

This example based on simplified ESPRESSO examples that can be downloaded at [1]. The pseudopotential can be obtained in the examples archives. Make a file with name si.scf.cg.inp. It is recommended that you make a special directory to run this example. The contents of the file:

 &control
    calculation = 'scf'
    restart_mode='from_scratch',
    prefix='silicon',
    tstress = .true.
    tprnfor = .true.
    pseudo_dir = '/home/efefer/testing_espresso/'
    outdir='/home/efefer/testing_espresso/tmp'
 /
 &system
    ibrav=  2, celldm(1) =10.20, nat=  2, ntyp= 1,
    ecutwfc =18.0,
 /
 &electrons
    diagonalization='cg'
    mixing_mode = 'plain'
    mixing_beta = 0.7
    conv_thr =  1.0d-8
 /
ATOMIC_SPECIES
 Si  28.086  Si.pz-vbc.UPF
ATOMIC_POSITIONS
 Si 0.00 0.00 0.00
 Si 0.25 0.25 0.25
K_POINTS
  10
   0.1250000  0.1250000  0.1250000   1.00
   0.1250000  0.1250000  0.3750000   3.00
   0.1250000  0.1250000  0.6250000   3.00
   0.1250000  0.1250000  0.8750000   3.00
   0.1250000  0.3750000  0.3750000   3.00
   0.1250000  0.3750000  0.6250000   6.00
   0.1250000  0.3750000  0.8750000   6.00
   0.1250000  0.6250000  0.6250000   3.00
   0.3750000  0.3750000  0.3750000   1.00
   0.3750000  0.3750000  0.6250000   3.00

This file can be modified according to your environment.

Running pw.x

We will run a self-consistent calculation to bulk silicon with conjugate gradient method. You can type this:

mpirun -np 16 --nolocal --hostfile cluster.hosts pw.x < si.scf.cg.in | tee si.scf.cg.out

at terminal or simply:

pw.x < si.scf.cg.inp | tee si.scf.cg.out

The output file

If the calculation run without errors we should get a this message at the terminal:

....
 Called by *cgdiagg:
     h_psi        :     0.10s CPU (     824 calls,   0.000 s avg)
     cdiaghg      :     0.03s CPU (      60 calls,   0.001 s avg)

     Called by h_psi:
     add_vuspsi   :     0.00s CPU (     824 calls,   0.000 s avg)

     General routines
     calbec       :     0.02s CPU (    1608 calls,   0.000 s avg)
     cft3s        :     0.09s CPU (    2395 calls,   0.000 s avg)
     davcio       :     0.00s CPU (     240 calls,   0.000 s avg)
 
     Parallel routines
     fft_scatter  :     0.05s CPU (    2395 calls,   0.000 s avg)

We can get the information about the convergence of the SCF cycle from the output file

[efefer@dozen results]$ grep -e 'total energy' -e estimate si.scf.cg.out 
     total energy              =     -15.84092282 Ry
     Harris-Foulkes estimate   =     -15.86197283 Ry
     estimated scf accuracy    <       0.06153381 Ry
     total energy              =     -15.84402284 Ry
     Harris-Foulkes estimate   =     -15.84433371 Ry
     estimated scf accuracy    <       0.00216338 Ry
     total energy              =     -15.84450634 Ry
     Harris-Foulkes estimate   =     -15.84454253 Ry
     estimated scf accuracy    <       0.00007555 Ry
     total energy              =     -15.84452598 Ry
     Harris-Foulkes estimate   =     -15.84452965 Ry
     estimated scf accuracy    <       0.00000816 Ry
     total energy              =     -15.84452722 Ry
     Harris-Foulkes estimate   =     -15.84452726 Ry
     estimated scf accuracy    <       0.00000007 Ry
!    total energy              =     -15.84452726 Ry
     Harris-Foulkes estimate   =     -15.84452726 Ry
     estimated scf accuracy    <          1.1E-09 Ry

Rujukan


Kontributor: Fadjar, Mursito