Skip to main content

Pitfalls Checklist

The tables below organize input and post-processing errors that frequently occur in transport calculations, indexed by symptom. When a calculation looks wrong, check against these tables before reaching for a physical interpretation.

TranSIESTA / TBtrans

SymptomCausePrescriptionReference
T(E)T(E) unchanged even when TBT.kgrid_Monkhorst_Pack is changedThe block was placed in TBtrans.fdf — TBtrans automatically reduces the transport-direction k to 1Place the block at the very end of input.fdf07
Finite bias applied, but the result is identical to 0 VTS.Voltage was added only in input.fdf — among duplicate fdf keywords the definition read first prevails, so the 0 eV in TS.fdf remains in effectEdit both TS.Voltage in TS.fdf and TBT.Voltage in TBtrans.fdf, then verify with grep -i voltage *.fdf09
You have to calculate the 0 V and re-use the TSDE error right after a bias calculation startstrans.TSDE from the previous bias was not copiedCopy trans.TSDE (mandatory), trans.DM, and trans.XV from the immediately preceding bias09
Bias calculation crashes immediately with a header mismatchBias-dependent caches such as trans.TSGF* and trans.TSCC* were also copiedNever copy the caches — they are regenerated automatically09
trans.TBT.nc is several GB, TBtrans OOMHeavy output options such as TBT.T.Bulk, TBT.T.Eig, TBT.Current.OrbKeep the minimal option set — sisl post-processing is sufficient for eigenchannels07, 10
T(E)T(E) that should be ballistic decays exponentially with device lengthExcessive η\eta — artificial decay caused by over-spread sharp resonancesLower η\eta and check convergence, shrinking the energy grid delta along with itη broadening
Eigenchannel interpretation is ambiguousThe chosen energy, bands, PDOS, and channel symmetry were not examined togetherState the energy appropriate to the analysis goal and verify iτi=T\sum_i\tau_i=T10
A symmetric junction shows rectifying I–VAsymmetric window in the zero-bias integral (μL=0\mu_L=0, μR=V\mu_R=-V)Integrate with the symmetric window μL,R=±V/2\mu_{L,R}=\pm V/208

Common to SIESTA / VASP

SymptomCausePrescriptionReference
Energy differences between structures are at an irreproducible noise levelSCF.DM.Tolerance loosened (e.g., 1.0d-4)Keep the tutorial standard 1.0d-8 — it is the premise of energy comparison01
Pseudopotential file not found abort right after the startMismatch between the species in ChemicalSpeciesLabel and the .psml files — especially after transferring to another machineMake a habit of a 1:1 ls check of species ↔ pseudo files before submissionSetup
(VASP) XC contribution missing from the LOCPOT used for vacuum alignmentLVHAR=T overrides LVTOT=T — turning both on saves only Hartree+ionicUse only the one flag that matches the purpose: LVTOT for the total potential, LVHAR for Hartree only03
Several calculations submitted with a shell loop, but only the first case runsssh/mpirun inside the loop consumes the loop's stdinUse ssh -n or redirect < /dev/null12

Common principles

  • Confirming existence is not confirming operation — a flag being present in the input does not mean the feature is on. Grep the stdout echo to confirm it was actually applied.
  • Record the provenance of inputs — leaving even one line on which script generated them and with what physical intent (substitution site, vacuum, lattice reference) lets you immediately decide "input bug or physics?" when a result looks odd.
  • Inspect templates for outliers when copying — when reusing someone else's input, check the key five lines to see whether the convergence criteria, lattice, and output options match your own purpose.