Jaap Kroes

contact info:

CV (pdf)


Everything on this page is licensed under GPLv3 (or newer if you prefer). You are free to use it, as long these parts remain open-source and GPL-licensed. The license can be found here.

Shell Scripts

  • histogram, generate a (weighted) histogrand of a given data-set.
  • dos, obtain the (weighted) density of states based on some data.
  • all2all, compute all to all distances and angles for atoms in an xyz file.
  • sumcube, modify cube files : sum or subtract file or extract part of the data.
  • epsrotate, rotate (and crop) an eps file over x degrees.
  • molwibols, create an eps file from an xyz-coordinate file. Requires several other programs (e.g. xbs, xdotool), which are summarized in the script.
  • xyz2bs, an awk script to convert xyz to bs file-format (needed for xbs and molwibols above). This is not general, you have to edit the script to add atom types, change bond lengths, etc.

  • create_crystal.py, a small python script to generate crystal structure files for SC, BCC, FCC, diamond, graphite and wurtzite.

  • xyzrotate.py, a small python script to rotate xyz coordinate files and their respective unit cells.

  • Somewhat larger programs

  • Polypy: Ring analysis of xyz-files
    This python program provides ring-analysis of structures read from xyz-files. This can useful, for example, to identify defects in crystal structures. While the original implementation was intended to analyse graphitic carbon structures, it can be used more generally. The program makes a graph based on the input file and consequently performing a search on the graph according using Franzblau statistics [1] to identify rings. Some example features include floodfill to find disconnected graphs and finding linear chains.
    graphene at 5000 K with LCBOPII

    Graphene sheet at 5000 K simulated with the empirical potential LCBOPII [2] analyzed with polypy

  • Minos: Compute basic network statistics
    scaling performance of minos neighbouring time
    This C++ code implements efficient neighbouring and file-IO to achieve linear-scaling neighbouring based on simple XYZ input of coordinates. The example shown here constructs the network between N elements at a fixed density (corresponding to roughly four neighbours per element).

  • pyneb, implementation of NEB using python
    This is a python implementation (see below for a C++ version) of the nudged elastic band (NEB) method. Its main purpose is to help understand the method. It comes with a script and example. The input potential (set of gaussians) and image positions can easily be changed. Visual output in the form of a movie of the trajectory (mencoder, gnuplot) and a plot of the final path (gnuplot). Chosen optimizer is steepest descent with step size update.
    result of the example included in pyneb.zip

    Example potential energy surface explored using NEB. The NEB method converges to a steepest descent path with equidistant images on both sides of the climbing image. The climbing image is chosen asymmetric for illustration purpose. Images are shown in red, the climbing image in blue, and contour lines are plotted at -0.5, 0, 0.5 and 1.0.

  • cppneb, implementation of NEB using C++
    This is a similar but improved version of the previous program rewritten in C++. It uses velocity verlet for integration / optimization. Supports PLUMED style HILLS files.
  • anagram A C++ code to generate anagrams. Both trie or hash-based approaches are implemented.
  • random-walk A C++ code to generate N dimensional random walks.
  • chaos Code to generate some chaotic maps.
  • genetic scheduler Make use of genetic algorithms to optimize work schedules.
  • Various

  • cpp-vs-python.tgz minimal test to compare speed of python and c++ by calculating e, typical results give 3.358 and 0.074 seconds for python and c++ respectively (i.e. python is slower by a factor 45 approximately).
  • cypyc.tgz another test to compare speed of python, cython (python linked with C) and C. A sum of gaussians is calculated, giving typically 2.26, 0.44 and 0.29 seconds for python, cython and C respectively.
  • XBS, is a basic imaging program for molecules. This is not my work, I only added display of bond angles.
  • Vim synax file for CPMD/QE/CP2K (save to ~/.vim/syntax/) and file type detection (~/.vim/ftdetect/)
  • This is a link to the cascading style sheet (CSS) I used for this website.
  • Links to other projects

  • NLopt is library of non-linear optimizers.
  • libxc is a library containing xc-functionals for DFT.
  • References

  • [1] "Computation of ring statistics for network models of solids", D.S. Franzblau, Phys. Rev. B 44-10 (1991)
  • [2] "Improved long-range reactive bond-order potential for carbon. I. Construction", J.H. Los, L.M. Ghiringhelli, E.J. Meijer, and A. Fasolino