Ensimag Projects

Here are links to some of the projects I have done during my three years at Grenoble INP – Ensimag. The first two years are in French, the third one is in English (international master program).

1st Year

Modelling and simulation of a guitar string and an eardrum in Scilab using finite differences

image_50244This project is from the course “Méthodes Numériques” (Numerical Methods) by Stefanie Hahmann. The goal is to use finite differences in 1D and 2D to simulate the movement of a guitar string and an eardrum to get a sound file as well as a visual representation.

The code and report can be downloaded here.

JPEG encoder and decoder in C

This was the first end-of-year team project. The subject we chose was to build a complete JPEG encoder and decoder in C. It was a very cool two-week project. Here is our source code.

2nd Year

Introduction to Lab Research – Viscosity solutions and associated numerical schemes

This project was done at LJK imag under the supervision of Emmanuel Maître. I chose to use GPUs and OpenCL to solve the Monge-Ampère equation for Optimal Transport, based on papers from Benamou et al. The entire project (code, report, slides) can be found on GitHub and on the Ensimag Wiki.

Network optimization using a bio-inspired algorithmdt0-01_d0_1partout_niter10000_alpha1_g0-5

This project, done under the supervision of Eric Fanchon, was about studying the behaviour of Physarum polycephalum, a slime mold that is able to find its way through labyrinths as well as build short and robust networks to feed itself.

The goal was to replicate its behaviour by modelling the evolution of its tubes over time using pressure values at intersections. The more a tube is used, the bigger it gets. Useless tubes get smaller and disappear. The result is the shortest path in the labyrinth.

You can find the subject, Python code and report here.

3rd Year

For my 3rd year at Grenoble INP – Ensimag, I chose to follow the MSIAM Master program at UGA. My partner for most of these projects was Tina Nikoukhah.

Flocking simulation using SFML, OpenMP and OpenCL

2016-12-05-205855_958x457_scrotThis project is part of the High-Performance Computing course. Bird-oids, or Boids, are flying in flocks and try to avoid the mouse pointer. The goal is to have as many boids as possible while maintaining an acceptable framerate. We used OpenMP to run this simulation across multiple processors, and OpenCL to run it on a GPU. You can download the code and the report here.

 BPM detection using Wavelets

This was a project for the Wavelets and Applications course. I chose to re-use a personal project of mine in which I detected the genre of a music piece using Fourier-based features. I added a Wavelet part to the project so that I could detect time-based rhythmic features and retrieve the tempo of the song, among other things. This is still based on the work of Tzanetakis et al. Here are my Scilab code and the slides I used for the oral examination.

Fast image segmentation using Level Sets

This is part of the Optimal Transport and Level Sets course. In this project, I implemented a level set algorithm from Yan Wang and Chuanjiang He and used it for image segmentation. Their method is very easy to implement, works great and is also very fast. It could even be used in real time applications. You can find my code, slides and a brief summary of the article here.


Simulation of the air-cooling of electric components

This project is part of the Scientific Computing course. We simulate the cooling of a PCB and two CPU’s using Finite Elements in the FreeFem++ software. We use the heat equation with advection for the heat and Navier-Stokes for the airflow. Here is the code, and the slides.

Reaction-Diffusion model for population simulation

This is part of the Mathematical Modelling for Life Sciences course. We chose to work on a 2D simulation of the evolution of a population using a Reaction-Diffusion model. We implemented our solution in MATLAB. Here is the code and the report.

Here is a video of the program in action.