Example: NEGF with bias¶
This example shows how to use the NEGF key when including a bias potential between the electrodes. It starts of with the usual tight-binding run, followed by an SGF one. The alignment run is omitted. Finally, there is a loop over bias potentials. Here the scale feature of the FuzzyPotential is used. The current is appended to a text file, which one could plot eg. with gnuplot.
Setting up a NEGF calculation is quite hard without the GUI.
"$ADFBIN/band" <<eor
TITLE tight-binding
KSpace
Quality VeryGood
End
SoftConfinement
Quality Basic
End
UNITS
length Angstrom
angle Degree
END
ATOMS
Li.1 0.0 0.0 0.0
Li.2 2.876 0.0 0.0
Li.3 5.752 0.0 0.0
END
Lattice
8.628 0.0 0.0
End
BasisDefaults
BasisType DZ
Core Large
End
StoreHamiltonian2
end input
eor
$ADFBIN/sgf << eor
TITLE Test for NEGF inputs
SAVE SIGMA
SURFACEGF
SCMCode
KT 0.001
ContourQuality normal
END
eor
mv RUNKF TB.runkf
mv SigmaSCM Sigma.runkf
REPORT=Li-CuAg.report
touch $REPORT
for bias in -0.01 0.01
do
"$ADFBIN/band" <<eor
TITLE bias=$bias
SoftConfinement
Quality Basic
End
UNITS
length Angstrom
END
ATOMS
Li.1L -15.818 0.0 0.0
Li.2L -12.942 0.0 0.0
Li.3L -10.066 0.0 0.0
Li.1C -7.19 0.0 0.0
Li.2C -4.314 0.0 0.0
Cu.C -0.7 -1.0 0
Ag.C 0.7 1.0 0
Li.3C 4.314 0.0 0.0
Li.4C 7.19 0.0 0.0
Li.1R 10.066 0.0 0.0
Li.2R 12.942 0.0 0.0
Li.3R 15.818 0.0 0.0
END
BasisDefaults
BasisType DZ
Core Large
End
NEGF
LeadFile TB.runkf
SGFFile Sigma.runkf
EMin -0.1837465475
EMax 0.1837465475
NE 200
ApplyShift2 False
BiasPotential $bias
End
FuzzyPotential
scale $bias
1 0.5
2 0.5
3 0.5
4 0.5
5 0.5
6 0.2
7 -0.2
8 -0.5
9 -0.5
10 -0.5
11 -0.5
12 -0.5
end
end input
eor
current=`$ADFBIN/adfreport RUNKF 'NEGF%current'`
echo "NEGFREPORT: Bias=$bias, Current=$current" >> $REPORT
rm RUNKF
fname=`ls Transmission_*.plt`
echo "start of transmission (bias=$bias)"
cat $fname
echo "end of transmission"
rm Transmission_*.plt
done
echo "Start of report"
cat $REPORT
echo "End of report"