SP4EHW/HW3d182b7dd8344master
README.md
Particle Code
How the partilces are organised in the various objects:
- Particle class has three daughters: Planet, PingPong, and MaterialPoint
- For the MaterialPoint class, a new factory named MaterialPointFactory is added to create the simulation
- ComputeTemperature is the daughter of the Compute class where the temperatures of MaterialPoints are computed
Following is the commands to compile the source codes:
cmake .
make
Run the python code by the following command to create the input
python ./homework3/src/MaterialGeneartion.py size radius
size: determines the matrix size, the number of particles would be size*size
radius: determines the radius of a cirlce that generates heat
Example:
python ./homework3/src/MaterialGeneartion.py 512 0.1
To run the code:
./homework3/build/particles nsteps dump_freq input.csv particle_type timestep [Boundary_temperature]
nsteps: number of steps
dump_freq: frequency of file writing
input.csv: input file name
particle_type: type of particle (Ex.: material_point)
timestep: time step
Boundary_temperature: The boundary temperature for the material_point, this parameter is optional, if it is determined then the temperature of the boundary will be set to this value, otherwise there is no boundary condition
Example:
./homework3/build/particles 20000 200 input.csv material_point 0.000001 0
Implementation of the boundary condition:
The temperature of the boundary can be specified by the command that runs the code (7th argument of the command as explained above). This parameter is optional and if it is not determined, then there is no boundary condition during the computation. To apply the boundary condition, a private variable named "boundary" is defined in the "MaterialPointFactory" with a function that sets this boundary. If the code recieve the boundary, "MaterialPointFactory" pass this boundary to the "ComputeTemperature" class. Also, a variable named "boundary" is defined in the "compute_temperature" class. This variable can be initialized by the constructor of this class. If this variable initializes, then the boundary condition will be applied in the "compute" function of this class.
Tests:
to test the FFT use the following command:
./homework3/build/test_fft
This command tests the fourier transform and the inverse fourier transform.
to test the compute temperature use the following command:
./homework3/build/test_computetemperature
This command tests the solution of initial uniform temperature (point 2 of excercise 4), initial two different temperature, and a test with heat source at two lines (point 3 of excercise 4)
Launcing a simualtion for 512 partilces:
generating the input file:
python ./homework3/src/MaterialGeneartion.py 512 0.1
Launching the code:
./homework3/build/particles 20000 200 input.csv material_point 0.000001 0
Loading the *.csv files in the dumps folder in the paraview.