— Tips back

Schedulers on ICS-ACI

  • 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.
  • Check all running nodes? Environmental variable $PBS_NODEFILE. Other $PBS_xxx variables can also be useful. Check the “pbsnodes” command for all node specifications.
  • Email notification. #PBS -m [option]  where option can be any combination of the letters a(bort) b(egin) and e(nd). Use 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.


  • Manually turn off symmetry when using EFIELD (VASP detects symmetry based only on geometry).
  • When using LDIPOL, the compensating planar dipole added by vasp 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. Don’t forget to 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.
  • Paper behind the implementation of non-collinear magnetism in VASP: D. Hobbs, G. Kresse, and J. Hafner, Phys. Rev. B 62, 11556 (2000)
  • Paper behind the the spectral representation trick (LSPECTRAL) in VASP (and similar KK or Hilbert transform tricks in other codes): M. Shishkin and G. Kresse, Phys. Rev. B 74, 035101 (2006)
  • How to calculate band structures with hybrid functionals, documented here.
  • Many other tips here



  • 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.
  • Very well written documentation and tutorial and version information.
  • 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 is a handy output to check the convergence of Coulomb-hole term of the electron self-energy with respect to emtpy bands. The same convergence can be accelerated by the static remainder method.
  • MBPT features:
    • Best developed implementation for BSE routines with dense k-point interpolation
    • 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”.

Compilation on ICS-ACI

  • For different mpi flavors, use libmkl_blacs_[flavor]_lp64.a, where flavor can be intelmpi, openmpi …
  • On aci, use mkl libraries for LAPACK and SCALAPACK. Module load mkl and find all libraries under $MKLROOT.
  • Make sure the MKL version is compatible with the compiler version.


  • Quick and easy visualization, with built-in 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      https://www.ks.uiuc.edu/Research/vmd/plugins/palettetool/


Some ‘goto’ papers




Mac / Keynote things

  • 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