# SP4E - Homework 3 ---- ## General Info This file provides a brief documentation and information related to the third Homework of the course "Scientific Programming for Engineers", fall 2019. This homework is done by **O. Ashtari** and **A. Sieber**. Last update: 12.11.2019 ---- ## Project Description One goal of this project is to learn and practice how to link an external library, here FFTW, to a C++ code. We use fast Fourier transforms to solve heat equation using a pseudo-spectral method. For this aim, as the second objective of the project, we extend the existing code originally written for simulating dynamics of interacting particles. Many functionalities we need have been already implemented and tested in the available code, meaning that we can trust on it as the starting point of development. ---- ## Executable Files After cloning this repository on your computer, you should build the program in a desired directory based on the `CMakeLists.txt` file in the root. To do so, inside the destination directory, you can build the executable file(s) using commands below: ``` $ cmake -DCMAKE_PREFIX_PATH= -DCMAKE_LIBRARY_PATH= -DUSE_FFT= $ make ``` where the command `cmake` is basically followed by the address of the directory where the `CMakeLists.txt` is located (denoted by ``.) Available options are as follows: * `-DCMAKE_PREFIX_PATH` specifies the path where you want the program look for headers (.h files) in. `` in the command above will be replaced by the address. * `-DCMAKE_LIBRARY_PATH` specifies the path where you want the program look for libraries (.a files) in. `` in the command above will be replaced by the address. * `-DUSE_FFT` determines whether the program should look for `FFTW` library/header in the specified directories or not. `` can either be `ON` or `OFF`. The executable file `particles` will be built in `/src`. Moreover, three tests `test_fft`, `test_heat` and `test_kepler` are built. The minimum requirement for CMake is the version 3.1. ## Running a simulation: from generating initial condition to post-processing ## An overview of extending the available code ## Concluding discussion