Projects

Molecular Dynamics

Maxwell Boltzmann distribution generated numerically from the molecular dynamics simulation.
Phase diagram for argon produced using computer experiments at different temperatures and pressures. The dotted lines indicate the actual phase boundaries from physical experiments.

I am passionate about using computers to model the world around us. Simulating the properties of gases sparked my interest so I took it on as a personal project. After reading the literature about molecular dynamics, I decided to start (relatively!) simple and model a monoatomic gas such as argon.


I wrote a program in python which worked as follows:

  • Atoms were randomly positioned in 3D space with random velocities
  • The force on each atom was calculated using a truncated Lennard Jones potential
  • The position of each atom was then updated using the velocity verlet algorithm
  • The pyhsical dimensions were scaled by a thermostat (temperature control) and/or barostat (pressure control) to maintain equilibrium
  • This process (2 to 4) was iterated through for several thousand timesteps
  • The positions and velocities at each point were then using to calculate ensemble properties

I used the time-averaged data generated from each simulation to explore the macroscopic properties of argon. Plotting the particle velocities yielded a Maxwell-Boltzmann distribution (above) which indicated the simulation was working as expected.


Furthermore, I used metrics such as the mean-squared-displacement to calculate the phase of the ensemble given the positions as a function of time. This allowed me to produce a temperature-pressure phase diagram (above right) which predicted the melting and boiling point of Argon to within 15% error.

Computational Fluid Dynamics

Plots showing the computed velocity profile of laminar flow through a square cross-section.
Streamlines flowing around a 2D rectangular obstacle.

In addition to modelling gases, I have enjoyed modelling fluids computationally as well. As part of an extended fluids project I undertook at school, I wanted to teach myself fluid dynamics and explore the vast field of Computational Fluid Dynamics.


I learnt how to solve the Navier Stokes equations numerically (and analytically in some cases) for simple laminar flow through a 2D pipe. I then extended the solver to 3D and compared the calculated velocities to the analytical solution (above).


Once I had analysed these simple cases, I felt prepared to move onto more complex flows. I modelled the flow around a rectangular object in an infinite 2D plane, assuming there is no turbulence (see left). By analysing the velocities at the boundaries I could calculate the total force on the obstacle using the steady flow momentum equation. Varying the angle of attack of the 'wing' enabled me to produce a simplistic graph of lift-to-drag ratio and calculate the optimum angle of attack.

Cascade Sustainability app

Screenshot of the website homepage for Cascade Sustainability App.

Cascade is a Cambridge University society which aims to create a data-driven sustainability app. The goal is to help individuals control their climate impact and use that momentum to make change among communities, governments and industries.


I lead the coding team which currently has about 20 members and I am also part of the product management team. I am responsible for:

  • Ensuring the ideas and designs from other teams are coded into software that can be downloaded and used
  • Helping out members of my team in their respective roles and maintaining code quality
  • Integrating new members into the team and getting them up to speed
  • Directing the overall project vision

As of writing, we have created a website with landing pages for users to get more information about the project and sign up to be a beta tester.

HappyrHealth prototype webapp

Screenshot of the login page for the HappyrHealth prototype.

HappyrHealth is a startup that is building an app to help track and manage migraines for children. I have worked with them since June 2020 to create a web-based prototype for their app.


I have been responsible for discussing the technical side of the project with the founders and for coding the webapp. The features I have implemented are:

  • User login and signup
  • Mood diary for children to fill in
  • Migraine entry for parents and children
  • PDF report generator for healthcare professionals to view
  • Integrated admin interface

Initial testing has received promising feedback and the prototype has been important in directing the project roadmap.

Cambridge University Eco Racing (CUER)

Screenshot of the data dashboard for the CUER Helia car.
CUER Helia car at the Cambridge University engineering department.

Since joining the university, I have been an active member of the Cambridge University Eco Racing Society. As part of the electrical team, I am implementing a telemetry system to monitor the internal state of the car. I enjoy the challenge of integrating with the different electrical interfaces and I currently have a system with the following components:

  • Mbed microcontroller reads data and encodes the data from the CAN bus in the car
  • An XBee then transmits the data wirelessly to another XBee plugged into a laptop
  • The laptop reads the data and displays it in a live data dashboard (pictured above)

Unfortunately we have not been able to access the car recently due to Coronavirus so the system can only be tested on simulated data.

Full Blue Racing (FBR)

Screenshot of the internal management system for the Full Blue Racing society.

Full Blue Racing is a society that builds a petrol racing car to compete in the annual Formula Student competition. I joined the society this year but unforunately we haven't been able to work on the car due to the current circumstances.


Nevertheless, I have been worked remotely to create an internal management system (see above) for the society (which has in excess of 50 members). Currently the features include:

  • Robust user login which integrates with the university authentication
  • Receipt submission system for members to add and edit receipts for the society
  • Admin interface to view, filter and export the receipts