R9482/Homework3534987d4fac0master
README.md
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=<include> -DCMAKE_LIBRARY_PATH=<library> -DUSE_FFT=<status> <CMakeLists> $ make
where the command cmake is basically followed by the address of the directory where the CMakeLists.txt is located (denoted by <CMakeLists>.) Available options are as follows:
- -DCMAKE_PREFIX_PATH specifies the path where you want the program look for headers (.h files) in. <include> 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. <library> 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. <status> can either be ON or OFF.
The executable file particles will be built in <build_directory>/src. Moreover, three tests test_fft, test_heat and test_kepler are built. The minimum requirement for CMake is the version 3.1.