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
| Symptom | Cause | Prescription | Reference |
|---|---|---|---|
unchanged even when TBT.kgrid_Monkhorst_Pack is changed | The block was placed in TBtrans.fdf — TBtrans automatically reduces the transport-direction k to 1 | Place the block at the very end of input.fdf | 07 |
| Finite bias applied, but the result is identical to 0 V | TS.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 effect | Edit both TS.Voltage in TS.fdf and TBT.Voltage in TBtrans.fdf, then verify with grep -i voltage *.fdf | 09 |
You have to calculate the 0 V and re-use the TSDE error right after a bias calculation starts | trans.TSDE from the previous bias was not copied | Copy trans.TSDE (mandatory), trans.DM, and trans.XV from the immediately preceding bias | 09 |
| Bias calculation crashes immediately with a header mismatch | Bias-dependent caches such as trans.TSGF* and trans.TSCC* were also copied | Never copy the caches — they are regenerated automatically | 09 |
trans.TBT.nc is several GB, TBtrans OOM | Heavy output options such as TBT.T.Bulk, TBT.T.Eig, TBT.Current.Orb | Keep the minimal option set — sisl post-processing is sufficient for eigenchannels | 07, 10 |
| that should be ballistic decays exponentially with device length | Excessive — artificial decay caused by over-spread sharp resonances | Lower and check convergence, shrinking the energy grid delta along with it | η broadening |
| Eigenchannel interpretation is ambiguous | The chosen energy, bands, PDOS, and channel symmetry were not examined together | State the energy appropriate to the analysis goal and verify | 10 |
| A symmetric junction shows rectifying I–V | Asymmetric window in the zero-bias integral (, ) | Integrate with the symmetric window | 08 |
Common to SIESTA / VASP
| Symptom | Cause | Prescription | Reference |
|---|---|---|---|
| Energy differences between structures are at an irreproducible noise level | SCF.DM.Tolerance loosened (e.g., 1.0d-4) | Keep the tutorial standard 1.0d-8 — it is the premise of energy comparison | 01 |
Pseudopotential file not found abort right after the start | Mismatch between the species in ChemicalSpeciesLabel and the .psml files — especially after transferring to another machine | Make a habit of a 1:1 ls check of species ↔ pseudo files before submission | Setup |
| (VASP) XC contribution missing from the LOCPOT used for vacuum alignment | LVHAR=T overrides LVTOT=T — turning both on saves only Hartree+ionic | Use only the one flag that matches the purpose: LVTOT for the total potential, LVHAR for Hartree only | 03 |
| Several calculations submitted with a shell loop, but only the first case runs | ssh/mpirun inside the loop consumes the loop's stdin | Use ssh -n or redirect < /dev/null | 12 |
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.