mirror of https://gitlab.com/QEF/q-e.git
Example for Fermi Surface plot added to example 8
git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@2147 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
parent
9c8c3f0b1c
commit
81ea395f57
|
@ -1,6 +1,6 @@
|
|||
|
||||
This example shows how to use pw.x and dos.x to calculate the
|
||||
Density of States (DOS) of Ni .
|
||||
This example shows how to calculate the Density of States (DOS) and
|
||||
how to plot the Fermi Surface of Ni .
|
||||
|
||||
The calculation proceeds as follows (for the meaning of the cited input
|
||||
variables see the appropriate INPUT_* file)
|
||||
|
@ -25,3 +25,53 @@ variables see the appropriate INPUT_* file)
|
|||
'ni.pdos_tot', s and d component in files 'ni.pdos_atm#1(Ni)_wfc#1(s)'
|
||||
and 'ni.pdos_atm#1(Ni)_wfc#2(d)' respectively). (input=ni.pdos.in,
|
||||
output=ni.pdos.in)
|
||||
|
||||
5) Fermi Surface plot, courtesy of
|
||||
Eyvaz Isaev
|
||||
Theoretical Physics Department
|
||||
Moscow State Institute of Steel and Alloys
|
||||
(eyvaz_isaev@yahoo.com, e.isaev@misis.ru)
|
||||
First, one generates a grid of k-points (all of them, not only those
|
||||
in the Irreducible Brilloin Zone) using auxiliary code kvecs_FS.x
|
||||
Then, the non-scf calculation is performed
|
||||
Then, auxiliary code bands_FS.x collects the data and produces a
|
||||
file ni.fs.bxsf that can be read by XCrySDen (www.xcrysden.org) as:
|
||||
xcrysden --bxsf ni.fs.bxsf
|
||||
Additional info for customization of the script:
|
||||
#
|
||||
# A user has to edit so-called "user part" in order to define some required
|
||||
# parameters.
|
||||
#
|
||||
# Sysname - a nickname for your system
|
||||
# Calc_Type - The Fermi Surface calculations (FS) or band-structure
|
||||
# calculations (Band) which will be included later.
|
||||
# Presently band-structure calculations could be carried out
|
||||
# by means of plotband.x from PP (postprocessing) directory
|
||||
# or a little package distributed by E.Isaev (posted to pw_forum).
|
||||
# nabc - a number for dividing of each edge of a parallelepiped.
|
||||
# Be careful, the total number of generated k-points is
|
||||
# (na+1)*(nb+1)*(nc+1), i.e. including \Gamma-point.
|
||||
# n_start - starting band's number for the Fermi Surface calculations.
|
||||
# It is obvious, we have to deal with the bands crossing the
|
||||
# Fermi level.
|
||||
# n_last - last band's number for FS calculations
|
||||
#
|
||||
# That's all!!! Present values in the script (may be edited):
|
||||
Sysname='ni'
|
||||
Calc_Type='FS'
|
||||
nabc=' 16 16 16 '
|
||||
n_start=2
|
||||
n_last=5
|
||||
#
|
||||
#
|
||||
# Nota Bene : You can take more bands and then choose from a XCrySDen menu
|
||||
# only those bands which cross the Fermi level
|
||||
# Nota Bene : If you have mistaken choosing bands to be considered for the
|
||||
# FS construction, you do not need to restart all calculations.
|
||||
# Just edit "bands_FS" file and restart "bands_FS.x" manually.
|
||||
# It will read Bands.out and result Bands.bxsf which you can
|
||||
# rename as you like.
|
||||
#
|
||||
# Spin-polarized calculations are not allowed, but will be done soon.
|
||||
|
||||
|
|
@ -16,7 +16,7 @@ $ECHO "This example shows how to use pw.x to calculate the DOS of Ni."
|
|||
. ../environment_variables
|
||||
|
||||
# required executables and pseudopotentials
|
||||
BIN_LIST="pw.x dos.x projwfc.x"
|
||||
BIN_LIST="pw.x dos.x projwfc.x kvecs_FS.x bands_FS.x"
|
||||
PSEUDO_LIST="NiUS.RRKJ3.UPF"
|
||||
|
||||
$ECHO
|
||||
|
@ -66,10 +66,14 @@ $ECHO " done"
|
|||
PW_COMMAND="$PARA_PREFIX $BIN_DIR/pw.x $PARA_POSTFIX"
|
||||
DOS_COMMAND="$PARA_PREFIX $BIN_DIR/dos.x $PARA_POSTFIX"
|
||||
PROJWFC_COMMAND="$PARA_PREFIX $BIN_DIR/projwfc.x $PARA_POSTFIX"
|
||||
KVECS_COMMAND="$BIN_DIR/kvecs_FS.x "
|
||||
BANDS_COMMAND="$BIN_DIR/bands_FS.x "
|
||||
$ECHO
|
||||
$ECHO " running pw.x as: $PW_COMMAND"
|
||||
$ECHO " running dos.x as: $DOS_COMMAND"
|
||||
$ECHO " running projwfc.x as: $PROJWFC_COMMAND"
|
||||
$ECHO " running kvecs_FS.x as: $KVECS_COMMAND"
|
||||
$ECHO " running bands_FS.x as: $BANDS_COMMAND"
|
||||
$ECHO
|
||||
|
||||
# clean TMP_DIR
|
||||
|
@ -219,5 +223,110 @@ $ECHO " running PDOS calculation for Ni...\c"
|
|||
$PROJWFC_COMMAND < ni.pdos.in > ni.pdos.out
|
||||
$ECHO " done"
|
||||
|
||||
$ECHO " Fermi Surface plot ...\c"
|
||||
|
||||
# self-consistent calculation - spin-unpolarised this tie
|
||||
cat > ni.scf.in << EOF
|
||||
&control
|
||||
calculation='scf'
|
||||
restart_mode='from_scratch',
|
||||
prefix='ni',
|
||||
pseudo_dir = '$PSEUDO_DIR/',
|
||||
outdir='$TMP_DIR/'
|
||||
/
|
||||
&system
|
||||
ibrav=2, celldm(1) =6.48, nat=1, ntyp=1,
|
||||
ecutwfc = 24.0, ecutrho = 288.0,
|
||||
occupations='smearing', smearing='methfessel-paxton', degauss=0.02
|
||||
/
|
||||
&electrons
|
||||
conv_thr = 1.0e-8
|
||||
mixing_beta = 0.7
|
||||
/
|
||||
ATOMIC_SPECIES
|
||||
Ni 58.69 NiUS.RRKJ3.UPF
|
||||
ATOMIC_POSITIONS
|
||||
Ni 0.0 0.0 0.0
|
||||
K_POINTS {automatic}
|
||||
8 8 8 0 0 0
|
||||
EOF
|
||||
$ECHO " running the scf calculation (no spin) ... \c"
|
||||
$PW_COMMAND < ni.scf.in > ni.scf0.out
|
||||
$ECHO " done"
|
||||
|
||||
#
|
||||
# prepare input file ni.fs.in
|
||||
#
|
||||
Sysname='ni'
|
||||
Calc_Type='FS'
|
||||
nabc=' 12 12 12 '
|
||||
n_start=3
|
||||
n_last=6
|
||||
#
|
||||
E_Fermi=`grep Fermi ni.scf0.out | cut -c 26-36`
|
||||
a1=`grep 'b(1)' ni.scf.out | cut -c 24-54`
|
||||
a2=`grep 'b(2)' ni.scf.out | cut -c 24-54`
|
||||
a3=`grep 'b(3)' ni.scf.out | cut -c 24-54`
|
||||
|
||||
cat > kvecs_FS.in <<EOF
|
||||
$a1
|
||||
$a2
|
||||
$a3
|
||||
$nabc
|
||||
$Sysname
|
||||
EOF
|
||||
|
||||
$KVECS_COMMAND < kvecs_FS.in > kvecs_FS,out
|
||||
|
||||
cat > ni.fs.in << EOF
|
||||
&control
|
||||
calculation='nscf'
|
||||
prefix='ni',
|
||||
pseudo_dir = '$PSEUDO_DIR/',
|
||||
outdir='$TMP_DIR/'
|
||||
/
|
||||
&system
|
||||
ibrav=2, celldm(1) =6.48, nat=1, ntyp=1,
|
||||
ecutwfc = 24.0, ecutrho = 288.0, nbnd=8
|
||||
/
|
||||
&electrons
|
||||
conv_thr = 1.0e-8
|
||||
mixing_beta = 0.7
|
||||
/
|
||||
ATOMIC_SPECIES
|
||||
Ni 58.69 NiUS.RRKJ3.UPF
|
||||
ATOMIC_POSITIONS
|
||||
Ni 0.0 0.0 0.0
|
||||
K_POINTS
|
||||
EOF
|
||||
|
||||
cat kvecs_$Sysname >> ni.fs.in
|
||||
|
||||
# input file ni.fs.in ready
|
||||
$ECHO " running the Fermi Surface calculation ... \c"
|
||||
$PW_COMMAND < ni.fs.in > ni.fs.out
|
||||
$ECHO " done"
|
||||
|
||||
# prepare input data (input_FS, Bands.out) for bands_FS
|
||||
|
||||
mv ni.fs.out Bands.out
|
||||
|
||||
cat > input_FS <<EOF
|
||||
$n_start $n_last
|
||||
$E_Fermi
|
||||
$Sysname
|
||||
$Calc_Type
|
||||
$nabc
|
||||
$a1
|
||||
$a2
|
||||
$a3
|
||||
EOF
|
||||
|
||||
$BANDS_COMMAND > bands_fs.out
|
||||
mv Bands.bxsf ni.fs.bxsf
|
||||
|
||||
$ECHO " Fermi surface plot: use 'xcrysden --bxsf ni.fs.bxsf' to plot ...\c"
|
||||
$ECHO " done"
|
||||
|
||||
$ECHO
|
||||
$ECHO "$EXAMPLE_DIR: done"
|
||||
|
|
Loading…
Reference in New Issue