ABINIT(1-shot GW)

 ここではABINITを用いたGW計算での入力ファイルとその結果を掲載していく。
http://www.tddft.org/bmg/files/seminarios/127407.pdf
--------------------------------------------------------------------------------
Ubuntu 12.04 (precise) 64-bit
プロセッサ: Intel® Core™ i7-2700K CPU @ 3.50GHz × 8
メモリ: 15.7 GiB
Abinit 7.6.4
コンパイラ: gfortran
VESTA v.2.1.6
-----
PAW: http://www.abinit.org/downloads/PAW2/JTH-TABLE/index.html 
-----
theory: http://tddft.org/bmg/files/seminarios/127407.pdf 
Please, see from p.24
GW is nothing else but a "screened" version of Hartree-Fock.
GW approximation: Sigma(1,2) = i G(1,2) W(1,2)
RPA approximation: kai(1,2) = -i G(1,2) G(2,1)

http://www.psi-k.org/Psik-training/Bristol-September%202009/Matteo/Abinit_Bristol2009_v3/Bristol_ABINIT_v2%284%29.pdf 
-----
■ Fe2VAl

Test case: 1-shot GW calculation(SCF 4x4x4 k) vs PBE (SCF 8x8x8 k)
Please, change ngkpt  from 4 4 4 to ngkpt   8 8 8
(However, in ngkpt 8 8 8 case, tmbt_3.files occurs the error for MPI. remove gwpara  2 in tmbt_3.files, then run "abinit <tmbt_3.files"
tmbt_1.files: 247.4 s (4core), tmbt_3.files: 31165.6 s (1core), tmbt_4.files: 20799 s and 12.8 GB (4 core))

1. Generating the KSS file in parallel
□ Command
-----
export OMP_NUM_THREADS=1
mpirun -np 4 /usr/local/bin/abinit <tmbt_1.files
-----

□ tmbt_1.files
-----
tmbt_1.in
tmbt_1.out
tmbt_1i
tmbt_1o
tmbt_1t
Fe.GGA_PBE-JTH-paw.xml
V.GGA_PBE-JTH-paw.xml
Al.GGA_PBE-JTH-paw.xml
-----

□ (CPU time = 95.5 s, 1.5 GB)
tmbt_1.in
-----
# Crystalline alpha-quartz base data
ndtset 2

# DATASET 1 : GS calculation
tolvrs1     1d-8
nband1      28     # Adding 4 empty states to avoid problems in the SCF cycle.

# DATASET 2 : KSS generation
iscf2      -2      # NSCF
getden2    -1      # Read previous density
tolwfr2    1d-12   # Stopping criterion for the NSCF cycle.
kssform2    3      # Conjugate-gradient algorithm (recommended option for large systems)
nband2      160    # Number of (occ and empty) bands computed in the NSCF cycle.
nbdbuf2     10     # A larges buffer helps to reduce the number of NSCF steps.
nbandkss2   150    # Number of bands stored in the KSS file (only the converged states are written).

#################### COMMON PART #########################

# number of self-consistent field steps
nstep        200
#diemac       4.0

# energy cutoff [Ha]:
ecut         24
pawecutdg    24

#Definition of the k-point grid
occopt 3
tsmear 0.002

kptopt 1           # Option for the automatic generation of k points, taking
                   # into account the symmetry
ngkpt   4 4 4
nshiftk  1
shiftk  0.0 0.0 0.0   # The mesh contains the Gamma point
                      # so that we can evaluate the QP correction for this point.
istwfk  *1

# Definition of the atom types
#npsp   2
znucl    26 23 13  
ntypat   3  

# Definition of the atoms
natom    4  
typat    1 1 2 3  

acell    3*10.8945922199

xred     0.250000000000000   0.250000000000000   0.250000000000000
         0.750000000000000   0.750000000000000   0.750000000000000
         0.000000000000000   0.000000000000000   0.000000000000000
         0.500000000000000   0.500000000000000   0.500000000000000

rprim    0.000000000000000   0.500000000000000   0.500000000000000
         0.500000000000000   0.000000000000000   0.500000000000000
         0.500000000000000   0.500000000000000   0.000000000000000
-----

◆ 2. Computing the screening in parallel using the Adler-Wiser expression
※ これは例として記述しています。 ◆ 3. へ進んでください。
□ Command
-----
ln -s tmbt_1o_DS2_KSS tmbt_2i_KSS
ln -s tmbt_1o_DS2_WFK tmbt_2i_WFK
-----

□ Command
-----
export OMP_NUM_THREADS=1
mpirun -np 4 /usr/local/bin/abinit <tmbt_2.files
-----

□ tmbt_2.files
-----
tmbt_2.in
tmbt_2.out
tmbt_2i
tmbt_2o
tmbt_2t
Fe.GGA_PBE-JTH-paw.xml
V.GGA_PBE-JTH-paw.xml
Al.GGA_PBE-JTH-paw.xml
-----

□ tmbt_2.in
-----
# Crystalline alpha-quartz base data
# DATASET 1 : Screening calculation
#
optdriver   3   # Screening run
#gwcalctyp   2   # metal case
irdkss      1   # To read the KSS file
symchi      1   # Use symmetries to speedup the BZ integration
gwpara      2   # Parallelization over bands
awtr        1   # Take advantage of time-reversal. Mandatory when gwpara=2 is used.
ecutwfn     24  # Cutoff for the wavefunctions.
ecuteps     10  # Cutoff for the polarizability. 8 -> 10
nband       50  # Number of bands in the RPA expression (24 occupied bands)
inclvkb     2   # Correct treatment of the optical limit.

#################### COMMON PART #########################

# number of self-consistent field steps
nstep        200

# energy cutoff [Ha]:
ecut         24
pawecutdg    24

#Definition of the k-point grid
occopt 3
tsmear 0.002

kptopt 1           # Option for the automatic generation of k points, taking
                   # into account the symmetry
ngkpt   4 4 4
nshiftk  1
shiftk  0.0 0.0 0.0   # The mesh contains the Gamma point
                      # so that we can evaluate the QP correction for this point.
istwfk  *1

# Definition of the atom types
#npsp   2
znucl    26 23 13  
ntypat   3  

# Definition of the atoms
natom    4  
typat    1 1 2 3  

acell    3*10.8945922199

xred     0.250000000000000   0.250000000000000   0.250000000000000
         0.750000000000000   0.750000000000000   0.750000000000000
         0.000000000000000   0.000000000000000   0.000000000000000
         0.500000000000000   0.500000000000000   0.500000000000000

rprim    0.000000000000000   0.500000000000000   0.500000000000000
         0.500000000000000   0.000000000000000   0.500000000000000
         0.500000000000000   0.500000000000000   0.000000000000000
-----

◆ 3. Computing the screening in parallel using the Hilbert transform method
□ Command
-----
ln -s tmbt_1o_DS2_KSS tmbt_3i_KSS
ln -s tmbt_1o_DS2_WFK tmbt_3i_WFK
-----

□ Command
-----
export OMP_NUM_THREADS=1
mpirun -np 4 /usr/local/bin/abinit <tmbt_3.files
-----

□ tmbt_3.files
-----
tmbt_3.in
tmbt_3.out
tmbt_3i
tmbt_3o
tmbt_3t
Fe.GGA_PBE-JTH-paw.xml
V.GGA_PBE-JTH-paw.xml
Al.GGA_PBE-JTH-paw.xml
-----

□ tmbt_3.in ( 462.9 s, 4.0 GB)
-----
# Crystalline alpha-quartz base data
# DATASET 1 : Screening calculation
#
optdriver   3    # Screening run
irdkss      1    # To read the KSS file.
symchi      1    # Use symmetries to speedup the BZ integration
ecutwfn     24   # Cutoff for the wavefunctions.
ecuteps     10   # Cutoff for the polarizability. 8 -> 10
nband       50   # Number of bands in the spectral function (24 occupied bands).
inclvkb     2    # Correct treatment of the optical limit.

gwcalctyp   2    # Contour-deformation technique. # metal case
spmeth      1    # Enable the spectral method.
nomegasf  100    # Number of points for the spectral function.
gwpara      2    # Parallelization over bands
awtr        1    # Take advantage of time-reversal. Mandatory when gwpara=2 is used.
freqremax 100 eV # Frequency mesh for the polarizability
nfreqre    40
nfreqim     0

#################### COMMON PART #########################

# number of self-consistent field steps
nstep        200

# energy cutoff [Ha]:
ecut         24
pawecutdg    24

#Definition of the k-point grid
occopt 3
tsmear 0.002

kptopt 1           # Option for the automatic generation of k points, taking
                   # into account the symmetry
ngkpt   4 4 4
nshiftk  1
shiftk  0.0 0.0 0.0   # The mesh contains the Gamma point
                      # so that we can evaluate the QP correction for this point.
istwfk  *1

# Definition of the atom types
#npsp   2
znucl    26 23 13  
ntypat   3  

# Definition of the atoms
natom    4  
typat    1 1 2 3  

acell    3*10.8945922199

xred     0.250000000000000   0.250000000000000   0.250000000000000
         0.750000000000000   0.750000000000000   0.750000000000000
         0.000000000000000   0.000000000000000   0.000000000000000
         0.500000000000000   0.500000000000000   0.500000000000000

rprim    0.000000000000000   0.500000000000000   0.500000000000000
         0.500000000000000   0.000000000000000   0.500000000000000
         0.500000000000000   0.500000000000000   0.000000000000000
-----

◆ 4. Computing the one-shot GW corrections in parallel
□ Command
-----
ln -s tmbt_1o_DS2_KSS tmbt_4i_KSS
ln -s tmbt_3o_SCR tmbt_4i_SCR
ln -s tmbt_1o_DS2_WFK tmbt_4i_WFK
-----

□ Command
-----
export OMP_NUM_THREADS=1
mpirun -np 4 /usr/local/bin/abinit <tmbt_4.files
-----

□ tmbt_4.files
-----
tmbt_4.in
tmbt_4.out
tmbt_4i
tmbt_4o
tmbt_4t
Fe.GGA_PBE-JTH-paw.xml
V.GGA_PBE-JTH-paw.xml
Al.GGA_PBE-JTH-paw.xml
-----

□ tmbt_4.in ( 1399.3 s, 4.3 GB)
-----
# Crystalline alpha-quartz base data
# DATASET 1 : Sigma calculation
#
optdriver   4            # Sigma run.
irdkss      1  
irdscr      1
#gwcalctyp   0 ppmodel 1  # G0W0 calculation without the plasmon-pole approximation.
gwcalctyp  2            # Uncomment this line to use the contour-deformation technique but remember to change the SCR file!
gwpara      2            # Parallelization over bands.
symsigma    1            # To enable the symmetrization of the self-energy matrix elements.
ecutwfn    24            # Cutoff for the wavefunctions. 24
ecuteps    10            # Cutoff in the correlation part. 8 -> 10
ecutsigx   20            # Cutoff in the exchange part.
nband       50           # Number of bands for the correlation part.
icutcoul    3            # old deprecated value of icutcoul, only used for legacy


# List of k-points for GW corrections.
nkptgw    8
kptgw  
   0.00000000E+00  0.00000000E+00  0.00000000E+00 # kpt in tmbt_1.out, Gamma point
   2.50000000E-01  0.00000000E+00  0.00000000E+00 # kpt in tmbt_1.out, LD point
   5.00000000E-01  0.00000000E+00  0.00000000E+00 # kpt in tmbt_1.out, L point
   2.50000000E-01  2.50000000E-01  0.00000000E+00 # kpt in tmbt_1.out, DT point
   5.00000000E-01  2.50000000E-01  0.00000000E+00 # kpt in tmbt_1.out, C point
  -2.50000000E-01  2.50000000E-01  0.00000000E+00 # kpt in tmbt_1.out, SM
   5.00000000E-01  5.00000000E-01  0.00000000E+00 # kpt in tmbt_1.out, X
  -2.50000000E-01  5.00000000E-01  2.50000000E-01 # kpt in tmbt_1.out, W point

bdgw    
13  30
13  30
13  30
13  30
13  30
13  30
13  30
13  30

#################### COMMON PART #########################

# number of self-consistent field steps
nstep        200

# energy cutoff [Ha]:
ecut         24
pawecutdg    24

#Definition of the k-point grid
#occopt 1           # Semiconductor
occopt 3
tsmear 0.002

kptopt 1           # Option for the automatic generation of k points, taking
                   # into account the symmetry
ngkpt   4 4 4
nshiftk  1
shiftk  0.0 0.0 0.0   # The mesh contains the Gamma point
                      # so that we can evaluate the QP correction for this point.
istwfk  *1

# Definition of the atom types
#npsp   2
znucl    26 23 13  
ntypat   3  

# Definition of the atoms
natom    4  
typat    1 1 2 3  

acell    3*10.8945922199

xred     0.250000000000000   0.250000000000000   0.250000000000000
         0.750000000000000   0.750000000000000   0.750000000000000
         0.000000000000000   0.000000000000000   0.000000000000000
         0.500000000000000   0.500000000000000   0.500000000000000

rprim    0.000000000000000   0.500000000000000   0.500000000000000
         0.500000000000000   0.000000000000000   0.500000000000000
         0.500000000000000   0.500000000000000   0.000000000000000
-----

# List of k-points for GW corrections.(BCC type)
nkptgw    6
kptgw  
   0.00000000E+00  0.00000000E+00  0.00000000E+00 # kpt in tmbt_1.out, Gamma point
  -2.50000000E-01  2.50000000E-01  2.50000000E-01 # kpt in tmbt_1.out, DELTA, DT point
   5.00000000E-01  5.00000000E-01  5.00000000E-01 # kpt in tmbt_1.out, H point
   5.00000000E-01  0.00000000E+00  0.00000000E+00 # kpt in tmbt_1.out, N point
   2.50000000E-01  0.00000000E+00  0.00000000E+00 # kpt in tmbt_1.out, SIGMA, SM point
#   1.25000000E-01  1.25000000E-01  1.25000000E-01 # kpt in tmbt_1.out, LAMBDA, LD point
   2.50000000E-01  2.50000000E-01  2.50000000E-01 # kpt in tmbt_1.out, P point

bdgw    
13  30 # valence and unoccupied state. e.g. last value is about nband1 in tmbe_1.out.
13  30 # valence and unoccupied state
13  30 # valence and unoccupied state
13  30 # valence and unoccupied state
13  30 # valence and unoccupied state
#13  30 # valence and unoccupied state
13  30 # valence and unoccupied state
-----

# List of k-points for GW corrections.(SC, P type)
nkptgw    5
kptgw  
   5.00000000E-01  5.00000000E-01  5.00000000E-01 # kpt in tmbt_1.out, R point
#   1.25000000E-01  1.25000000E-01  1.25000000E-01 # kpt in tmbt_1.out, LAMBDA, LD point
   0.00000000E+00  0.00000000E+00  0.00000000E+00 # kpt in tmbt_1.out, Gamma point
   2.50000000E-01  0.00000000E+00  0.00000000E+00 # kpt in tmbt_1.out, DELTA, DT point
   5.00000000E-01  0.00000000E+00  0.00000000E+00 # kpt in tmbt_1.out, X point
   5.00000000E-01  5.00000000E-01  0.00000000E+00 # kpt in tmbt_1.out, M point
#   1.25000000E-01  1.25000000E-01  0.00000000E+00 # kpt in tmbt_1.out, SIGMA SM point

bdgw    
9  30 # valence and unoccupied state. e.g. last value is about nband1 in tmbe_1.out.
#9  30 # valence and unoccupied state
9  30 # valence and unoccupied state
9  30 # valence and unoccupied state
9  30 # valence and unoccupied state
9  30 # valence and unoccupied state
#9  30 # valence and unoccupied state
-----
--------------------------------------------------------------------------------

□ gnuplot
-----
gnuplot
plot '/home/abinit/abinit-7.6.4/scripts/band_dispersion/f10' using 5:6 w p ps 0.2 pt 7  t "Fe2VAl PAW 1-shot GW"
set ylabel "Energy / eV"
set yrange[-10:6]
unset xtics
set xzeroaxis
replot
-----

Please, identify every k point on http://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-table?from=kv

--------------------------------------------------------------------------------
□ Appendix: Fortran 77
gfortran abinit_gwband2plot.f -o abinit_gwband2plot
cp tmbt_4.out f01
abinit_gwband2plot
※ Please, check the number of band for bdgw at every k point in tmbt_4.out.
※ 余分な行を除くなどして、全てのk点で、バンドを同じにしてください。
--------------------------------------------------------------------------------
c=======================================================================
c  abinit_gwband2plot.f
c    2014. 7.09  Version 1.00  written by ***
c=======================================================================
c  process
c --------------------------------------------------------------------
      IMPLICIT NONE

      integer*4 band_num_para
      parameter (band_num_para = 999)
      integer*4 kpoint_num_para
      parameter (kpoint_num_para = 999)
      integer*4 eigen_num_para
      parameter (eigen_num_para = 9999)
     
      character*130 READOR
      character*7 CSPIN
     
c spin
      integer*4 spin
c spin
      integer*4 nband_const
c do loop
      integer*4 i, j, m, n, p, q
c number of kpoint
      integer*4 nband(band_num_para)
c number of kpoint
      integer*4 num_kpoint
c number of kpoint
      integer*4 now_kpoint(kpoint_num_para)
c number of eigen
      integer*4 num_eigen
c read_eigen_line
      integer*4 read_eigen_line
     
c EF_eV
      real*8 EF_eV
c kpoint, h, k, l
      real*8 h(kpoint_num_para), k(kpoint_num_para), l(kpoint_num_para)
c temp_delta_kpoint
      real*8 temp_delta_kpoint
c deltal_kpoint_length = sqrt( temp_delta_kpoint)
      real*8 delta_kpoint_length(kpoint_num_para)
c total_kpoint_length
      real*8 total_kpoint_length(kpoint_num_para)
     
c up and down spin
c eigenvalue(eigenvalue, kpoint, spin)
      real*8 eigenvalue(eigen_num_para, kpoint_num_para, 2)
c eigenvalue_ef = eigenvalue - EF
      real*8 eigenvalue_sub_ef(eigen_num_para, kpoint_num_para, 2)
     
c read line start number
      integer*4 num_eigen_line
      integer*4 num_kpoint_line

c f01 : read *.out data
      open( 1, file = 'f01' )
     
c read k point data
      rewind(01)
      num_kpoint = 0
      nband_const = -8
      i = 0
      do
        read( 1,'( a130 )' ) READOR
c        write(6,*) READOR(1:32)
        if( READOR(1:5) .eq. ' k = ' ) then
          num_kpoint = num_kpoint + 1
          i = i + 1
        end if
        if( i .eq. 1 ) then
          nband_const = nband_const + 1
        end if
        if( READOR(1:21) .eq. ' === QP Band Gaps ===' ) then
          goto 5100
        end if
      end do
 5100 continue
      write(6,*) "nkptgw:", num_kpoint, ", bdgw", nband_const
 
c go to start line
      rewind(01)
      i = 0
      do
        i = i + 1
        read( 1,'( a130 )' ) READOR
c        write(6,*) READOR(1:32)
        if( READOR(1:25) .eq. ' Perturbative Calculation' ) then
          num_eigen_line = i - 1
          goto 6100
        end if
      end do
 6100 continue

c ----
      delta_kpoint_length(1) = 0.0
      total_kpoint_length(1) = 0.0
      read( 1,'(a)' )
      do j = 1, num_kpoint
        read( 1,'( 5x, 3f8.3 )' ) h(j), k(j), l(j)
        read( 1,'(a)' )
        do i = 1, nband_const
          read( 1,'( 70x, f8.3 )' ) eigenvalue(i, j, 1)
        end do
        if( j .ge. 2 ) then
          temp_delta_kpoint =
     & (h(j) - h(j-1))**2 + (k(j) - k(j-1))**2 + (l(j) -l(j-1))**2
          delta_kpoint_length(j) = sqrt(temp_delta_kpoint)
          total_kpoint_length(j) = total_kpoint_length(j-1) +
     & delta_kpoint_length(j)
        end if
        read( 1,'(/////)' )
      end do
      read( 1,'( 45x, e16.6 )' ) EF_eV
      write(6,*) "New Fermi energy :", EF_eV
      write(6, *) 'read OK'
     
      close(01)
     
c write output data
     
c f05 : gwband2igor up spin output
      open(10, file = 'f10' )
      do i = 1, nband_const
        write( 10, '( i6 )' ) i
        do j = 1, num_kpoint
          write( 10, '( 6(1x,f8.4) )' ) h(j),k(j),l(j),
     & delta_kpoint_length(j), total_kpoint_length(j),
     & eigenvalue(i, j, 1) - EF_eV
        end do
      end do
      close(10)
     
      stop
      end
--------------------------------------------------------------------------------
QRコード
携帯用QRコード
アクセス数
ページビュー数
[無料でホームページを作成] [通報・削除依頼]