Technical Tips

TACC Lonestar 6 notes  

  • Our group directory on LS6 is
    Here you’ll find shared data and self-compiled codes.
  • On LS6 you will need the following before running ABINIT.

    #For dynamic libraries
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/work/04255/yow5110/group/src/netcdf-fortran-4.5.3/build/lib:/work/04255/yow5110/group/src/netcdf-c-4.8.1/build/lib:/work/04255/yow5110/group/src/local/lib

    #For finding binaries in the ABINIT suite
    export PATH=$PATH:/work/04255/yow5110/group/src/abinit-9.6.2/build/bin/

    #For most built-in tests and tutorials from Abinit
    export ABI_PSPDIR=/work/04255/yow5110/group/src/abinit-9.6.2/tests/Psps_for_tests
    #change this to your own directory for pseudopotentials when running your projects

    #To run abinit
    mpirun abinit [inputfile] >& log


  • Turn off symmetry when using EFIELD (VASP detects symmetry based only on geometry).
  • When using LDIPOL, the compensating planar dipole is always sitting at the cell boudary (not affected by DIPOL, at least for v5.2), so make sure slabs don’t cross boundaries.
  • Use LVHAR when plotting local potential for faster convergence towards vacuum level.
  • Isolated atoms. Use a very small smearing, e.g. 0.1 meV. To avoid slow convergence, use NUPDOWN to constrain the net spin. Always check ground state electron configuration with experiments, keeping in mind that LDA/GGA energies are more likely to be off quantitatively.
  • Use KPAR level parallelization when applicable.
  • LOPTICS only gives interband contributions. A Drude term needs to be put in later for metals.
  • Optical matrix elements can be obtained by uncommenting the line regarding ‘WAVEDERF’; a ‘WAVEDERF’ file will appear after a LOPTICS run. These are <i|r|j>, not <i|p|j>. Same for BerkeleyGW.
  • Phonon dispersions and quasi-harmonic treatments from Phonopy.
  • Phonon lifetimes and lattice thermal conductivities from Phono3py.
  • Ab-initio MD too slow? See if advanced rare event sampling methods work for you.
  • Implementation of non-collinear magnetism in VASP: Phys. Rev. B 62, 11556 (2000)
  • The spectral representation trick (LSPECTRAL) in VASP (and similar KK or Hilbert transform tricks in other codes): Phys. Rev. B 74, 035101 (2006)
  • How to calculate band structures with hybrid functionals, here.
  • Many other tips here

QE / Wannier90 / EPW


  • Very well written documentation and tutorial and version information.
  • Use version 7.4 onwards for calculating linear and nonlinear optical properties – two bugs related to symmetry were present in versions before that.
  • The input for nonlinear optical calculations supports scissor shifts to remedy band gap problems. Unlike linear optics, adding scissor shifts in nonlinear optics do not simply rigidly shift the spectrum.
  • Photon polarization is controlled by gw_qlwl, the “small” q vector that describes the q->0 limit of the head and wings of the dielectric matrix.
  • MBPT features:
    • Supports dense k-point interpolatino for BSE using “bs_interp_mode”, but only works for Haydock as of now (v8.10).
    • Extrapolar (active) and Effective Eneregy Technique (discontinued as of v8.0) to accelerate convergence with respect to band summation.
      • Bug associated with gwcomp reported here.
    • Allows split-q, split-k and split-bands calculaitons in plasmon-pole model, using nqptdm+qptdm and nkptgw+kptgw+bdgw. Mrgscr tool to collect.
    • Supports Coulomb interaction cutoff to accelerate convergence with respect to cell size, using “icutcoul” and “vcutgeo”. The the surface/2D case, “rcut” is automatically set to half the cell height Lz/2 (see m_vcoul/cutoff_surface).
    • Distributed empty bands and reduced memory demand using the “gwpara=2” parallelization level. More on MBPT parallellization techniques in this tutorial.
    • When generating hundreds/thousands of empty bands, the highest computed ones might be degenerate (with not computed ones) and difficult to converge, as one might expericence with other codes. To work around this problem, nbdbuf excludes a portion of the empty bands from the convergence criteria. From this tutorial: “As a rule of thumb use 10% of nband or even more in complicated systems. This can really make a huge difference at the level of the wall time.”
  • prtvol >= 3 to monitor nscf progress (for kptopt == 1)
  • use max_ncpus to estimate memory usage and scaling before doing GW routines (a forum post here).


  • BerkeleyGW workshop materials for 2013, 2014, and 2018
  • Optical matrix elements are obtained from wavefunctions and thus have arbitrary phases. Special care is needed when calculating cross terms, e.g. epsilon_xy.
  • ch_converge.dat to check the convergence of Coulomb-hole term of the electron self-energy with respect to emtpy bands.
  • MBPT features:
    • BSE routines with dense k-point interpolation and non-uniform sampling schemes.
    • Static remainder and SAPO to ease convergences with respect to band summation.
    • Allows split-q and split-k calculaitons in plasmon-pole model. wfnmerge.x and epsmat_merge tool to collect.
    • Supports Coulomb interaction cutoff to accelerate convergence with respect to cell size, using “cell_****_truncation”
    • The QE/BerkeleyGW interface pw2bgw.x allows control over whether semicore states are included in the charge density in the HL-GPP model, through “rhog_nvmin”.


  • Quick and easy visualization, also with advanced rendering options. Depth of field can be controlled after rendering script is generated, e.g. for Tachyon under “Camera” specify “projection perspective_dof” and “aperture [number]”
  • VMD color palette


Mac / Keynote notes

  • Pasting following the present local format: Shift + Option + Cmd + V
  • Hate right-click-move-to-front? Just cut and paste.
  • Hand-drawn curves curving weirdly? Right-click on editable point and make Bezier point.
  • Cropping with irregular shape: Draw irregular shape over image – select both – Format>Image>Mask with selection

Talon 3 cluster notes

ROAR cluster notes

  • Exclusive nodes. “qsub -n” guarantees exclusive nodes. The scheduler finds the minimum number of nodes that grants you exclusivity, e.g. gives you 2 exclusive nodes if you request 20 cores (without specifying topology) on and 16-core-per-node system.
  • $PBS_NODEFILE to check all running nodes. See also other $PBS_xxx variables and the “pbsnodes” command.
  • Email notification. #PBS -m [options]. Used with #PBS -M [email adress]
  • Memory monitoring using a script, without ‘top’. Find process # in ‘ps’, then look in /proc/#/status. Vsize and Vrss are the requested and active memory.
  • Specify a node: #PBS -l nodes=[node name], e.g. node name = lionxg93
  • After a job starts, you are allowed to ssh to that compute node, e.g. to check memory use.
  • Want to save an interactive job session? Use the “screen” utility to allow attachment/detachment for an interactive session. See gnu page or here for details.
  • For different mpi flavors, use libmkl_blacs_[flavor]_lp64.a, where flavor can be intelmpi, openmpi …
  • Module load mkl and find all libraries under $MKLROOT.
  • Make sure the MKL version is compatible with the compiler version.