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"