R9484/hw3-heat-fft5c87a815ab81master
hw3-heat-fft
README.md
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.