Programming
About half of my time in work I spend programming either
- to add new functionality to my own or third-party codes
- to set up / run the calculations
- to analyse or visualise the data.
Though I often use C++ and Fortran when working with third-party codes, most of my own codes are written in plain C. It is simple, it is powerful and it is fast. The speed is more important in computer simulations then say, the graphic user interface (GUI). This makes the algorithm development and optimisation very important in my work.
Data Analysis
At the end of a simulation, computer would normally generate a huge number of "snapshots" of the system (called a trajectory or an ensemble). This can be Gigabites of columns of atomic coordinates, their velocities etc. Now the task is to extract from these data some useful information which will tell us, for example, at what rate the system transfers heat (and this is just a single number). Some of the analysis tools are quite standard and can be part of the package used to run the simulation or they may come as a part of a separate package like VMD. However, in 9 cases out of 10, some custom-made tools have to be developed to address a specific problem.
Presentation
A fair amount of time in any research is spent on preparing charts, graphs, videos for publications, presentations and progress reports. While experimentalists can take physical pictures using a camera or a microscope (or can even bring some samples to pass around the audience), computer scientists have to translate their numerical data into graphs, pictures and animations. I use
- gnuplot, xmgrace and Excel for plotting graphs and data analysis,
- povray, gimp, xv and xfig for making figures and
- VMD for making animations.
Here is an example of a figure which shows a lattice model of a polymer chain suspended in a solution where some nanoparticles are also present. The colourful graph next to it is the phase diagram of this system which identifies eight possible scenarios of what happens to the polymer chain depending on its interactions with the solvent and nanoparticles.

Web design
Apart from occasionally updating my own web site, I was responsible for maintaining the group web page during my PhD and then later here in Cambridge. My approach to web design is same as to programming - it has to be fast and functional. Therefore, no flash (acceptable only for making teaching aid animations), a minimum of javascript and plain HTML with lots of CSS.