dynasor is a tool for calculating total and partial dynamic structure factors as well as related correlation functions from molecular dynamics (MD) simulations. As main input the program expects a trajectory (typically) from a MD simulation, i.e., a file that contains as series of snapshots of particle coordinates and optionally velocities for consecutive, equally spaced slices in time.
The most time-consuming part of the processing consists of the calculation of the Fourier transformed densities. This part is implemented in C, and is significantly accelerated by parallelization using OpenMP or OpenACC. The time correlation calculation is performed explicitly in Python (using numpy arrays), and is parallelized with Python threads (which works rather well thanks to numpy releasing the Python GIL). More comments concerning the implementation can be found here.