CHOLLA: self-gravity implementation
Starting from the December-15 commit ( last commit from Evan )
-
Created makefile for shamrock
-
Added new initial conditions and test file for a 3D spherical overdensity
-
Added SELF_GRAVITY switch to makefile
-
Added self_gravity_functions.h and self_gravity_functions.cpp files
- Added a gravity class ( Grav3D ) for computing the gravitational potential from a general density field.
- The Grav3D class is initialized in the the Grid3D class, in this way grav3D will be an instance inside grid3D
- The Grav3D class has fields for general density, and potential
-
The Grav3D class has functions for writing to the output HDF5 file
-
Added makefile for titan and xstream
-
Added files mpi_pfft.h and mpi_pfft.cpp for the data and partial functions related to the potential calculation
-
Added function to grid3D to copy density from conservatives to density_h field in grav3d object
- IMPORTANT: Changed the way the 3D grid of mpi_processes is made:
- In line 401 of file mpi_rutines.cpp transposed the nested loop, now the the x-axis is filed in the first index
- This was done to match the way PFFT assigns coordinates to processes.
-
So far I haven’t seen a change in the hydro calculations.
- Potential boundaries:
- In line 887 of file mpi_rutines.cpp (Allocate_MPI_Buffers_BLOCK ) I increased the size of mpi_bufers
- Added functions to Grid3D in mpi_boundaries.cpp to load and read the potential to mpi_buffers
- Loaded buffers from for each side and each direction in Load_and_Send_MPI_Comm_Buffers_BLOCK, file: mpi_bounderies.cpp
-
Read potential boundaries in Unload_MPI_Comm_Buffers_BLOCK, file: mpi_bounderies.cpp
- Loading potential to GPU:
- Added function to Grav3D to copy potential from CPU to GPU
- Changed function CTU_Algorithm_3D to receive pointer to potential array (NULL pointer will be passed when SELF_GRAVITY in inactive )
- Changed function Update_Conserved_Variables_3D to receive pointer to potential array (NULL pointer will be passed when SELF_GRAVITY in inactive )
- Changed function CTU_Algorithm_3D to use new Update_Conserved_Variables_3D function
- Changed function VL_Algorith_3D to receive pointer to potential array (NULL pointer will be passed when SELF_GRAVITY in inactive )
- Changed function VL_Algorithm_3D to use new Update_Conserved_Variables_3D function
** Overlapping hydro and potential calculation **
- breaking set_boundaries function to send hydro boundaries and potential boundaries separately
- Added parameter which_bound to function: Set_Boundary_Conditions
- Added parameter which_bound to function: Set_Boundaries_MPI
- Added parameter which_bound to function: Set_Boundaries_MPI_BLOCK
- Added parameter which_bound to function: Load_and_Send_MPI_Comm_Buffers
- Should I modify ** Step 2 - Set non-MPI x-boundaries ** ?
- Added parameter which_bound to function: Wait_and_Unload_MPI_Comm_Buffers_BLOCK
- Added parameter which_bound to function: Unload_MPI_Comm_Buffers
- Added parameter which_bound to function: Unload_MPI_Comm_Buffers_BLOCK
- Using which_bound I separated the boundery transfers for conserved variables and potential
- In main I made an OMP parallel that separates the hydro update and the potential calculation.