int RGX_Find_Task_Grid_Ngbrs(
MPI_Comm Comm,
int Ndim,
int Ngbrs[]
)
/*
In Fortran :
Ngbrs(1,1) = Ngbr_left, Ngbrs(2,1) = Ngbr_right
Ngbrs(1,2) = Ngbr_top , Ngbrs(2,2) = Ngbr_bottom
Ngbrs(1,3) = Ngbr_in , Ngbrs(2,3) = Ngbr_out
In C:
Ngbrs[ 0 ] = Ngbr_left, Ngbrs[ 1 ] = Ngbr_right
Ngbrs[ 2 ] = Ngbr_top , Ngbrs[ 3 ] = Ngbr_bottom
Ngbrs[ 4 ] = Ngbr_in , Ngbrs[ 5 ] = Ngbr_out
*/
const int MD_type = MPI_DOUBLE_PRECISION;
double *Task_xGrid; // Data of Local Task Grid
int Ndim; // Dimensionality of the
// // grid
MPI_Comm RGX_Comm; // Communicator of all
// // sub-grids
int N_task; // No. of process/tasks
// // in Communicator
int *Glb_Grid_sz; // Global grid sizes :
// // Glb_Grid_sz(Ndim)
int *task_Ngbrs; // the tid of the nearest
// // neighbor task :
// // task_Ngbrs(2, Ndim)
int *task_Grid_endpts; // local sub-grid's end
// // points :
// // task_Grid_endpts(Ndim, 2)
int *N_task_1dims; // No of task
// // per dimension :
// // N_task_1dims(Ndim)
int *stride_width; // width of the stride of
// // ghost point :
// // stride_width(Ndim)
MPI_Datatype *task_bndry_strides; // local task/grid's
// // boundary strides :
// // task_bndry_strides(Ndim)
Memory for each of these pointer variables can be allocated
dynammically/statically, but it has to be continuous.
Location:../src/librgx/RGX_Find_Task_Grid_Ngbrs.c