# Homework 3 - Heat Equation with FFT ### Important notes: * The option USE_FFTW in CMake must be ON in order to use the FFT part of the code! * Remember to add the googletest directory! * We have made a python script called `fft_generate_test_values.py` that will generate test-values for `computeFrequency`. ### Comment about the particle code organization: We now have a different type of "particle" in addition to Planet and PingPongBall. We call this type of particle a **MaterialPoint** (it derives from the Particle.hh class, just like Planet and PingPongBall) The MaterialPoint has two properties; **temperature** and **heat rate**, which are both obtainable through their respective get-functions. The **MaterialPointsFactory** derives from the general ParticlesFactoryInterface whcih hold the list/vector of particles (in this case MaterialPoints) and the simulation interface. The createSimulation function in MaterialPointsFactory calls **ComputeTemperature** which solves the heat equation on a square (NB!) grid of particles. The **Matrix** class (or struct to be precise) is a general C++ class for storing square matrices. The **FFT** class (or struct to be precise) contains our implemented wrapping interfaces to Forward DFT, Inverse DFT and for computing FFT frequencies. ### Comment on boundary conditions on temperature: The FFT assumes periodic boundary conditions. If you want Dirichlet boundary conditions (say, zero temperature on the boundaries), you can extend the domain (matrix) from L to 2L and add zeros on the new elements. That is, the domain of interest is now surrounded by zero temperature.