FR : Projet Final pour l'UE Mise à Niveau en Informatique I
EN : Final project for Mise à Niveau en Informatique I course.
- Gustavo Magaña López
- Alexandre Abhay
This is a preview of the type of graphic output we expect to be able to produce (This is currently a preview of Conway's Game of Life, coded by Marco Heinen) :
This project leverages GSL (GNU Scientific Library) and SDL (Simple Directmedia Layer). These are used in order to get beter quality random numbers than those directly available in plain C, and create an interface to visualise the simulation's evolution, respectively.
In order to compile and run the C code present in this repository, you must install the dependencies beforehand (if you have not already installed them).
-
GSL
Under Ubuntu / Pop!_OS / any other Debian-based distribution :
-
Essential (to compile and run) :
sudo apt install gsl-bin libgsl0-dev
-
Optional (recommended) :
sudo apt install gsl-doc-info gsl-doc-pdf gsl-ref-html gsl-ref-psdoc
Under macOS (via Homebrew)
- Essential (to compile and run) :
brew install gsl
-
-
SDL
We have decided to use libsdl-1, as we already have an implementation using it.
Under Ubuntu / Pop!_OS / any other Debian-based distribution :
- Essential (to compile and run) :
sudo apt-get install libsdl-image1.2-dev sudo apt install libsdl1.2-dev
Under macOS (via Homebrew)
- Essential (to compile and run) :
brew install sdl
- Essential (to compile and run) :
The main project source is located at src
. The directory bin
stores the executable (it is needed as the recipe in the makefile expects it to exist.
.
├── bin
├── covid-simu
├── experiments
├── ideas
├── images
├── metrics
├── reference
│ ├── 09_singly_linked_list
│ │ ├── bin
│ │ └── src
│ ├── 13_binary_tree
│ │ ├── bin
│ │ │ └── removing_nodes_example
│ │ └── src
│ ├── 21_SDL_ppm_graphics
│ │ ├── bin
│ │ └── src
│ └── 26_Mersenne_Twister
│ ├── bin
│ └── src
├── src
└── stray
├── graphics
├── original
└── random
Explanation of the files found in src/
directory.
src
├── aux_math.c # Auxiliary math operations (float comparisons)
├── aux_math.h
├── constants.h # Miscellaneous simulation constants
├── datastructures.h # Person, Coordinate, and other custom datatypes
├── dev_random.c # Functions to initialise gsl's rng.
├── dev_random.h
├── display.c # Functions to display on console (legacy)
├── display.h
├── dynamics.c # Physical displacement rules and utility functions
├── dynamics.h
├── libraries.h # All of our headers and needed libraries.
├── main_program.c # MAIN PROGRAM
├── Makefile
├── mersenne_twister.c # High-quality pseudo random number generation
├── mersenne_twister.h
├── parsing.c # Get parameters from the command line
├── parsing.h
├── probabilities.c # Utility functions for random experiments
├── probabilities.h # Probabilities which are internal params
├── SDL_datastructure.h # datastructures needed for graphics
├── simulation.c # instantiation, iteration and epochs
├── simulation.h
├── singly_linked_list.c # Sinlgy linked list implementation
├── singly_linked_list.h
├── visualization.c # Functions used to render the simulation
└── visualization.h # via SDL
We would like to thank Ouriel Grynszpan and Stéphanie Chevalier for their instruction and support during this course.
We would also like to thank Marco Heinen for his explanations and example codes on the topics of pseudo-random number generators and data structures during his 2017 Numerical Methods Course at Universidad de Guanajuato, Mexico. This repository relies on some of the beforementioned codes to build the simulation.
We would also like to thank Mathis Delehouzée for his help finding the matrix indexation bug.