mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-04-12 18:10:24 +08:00
cleaned up grid code
This commit is contained in:
parent
aa1af2f456
commit
6e2a3cb3e3
@ -343,6 +343,38 @@ decomp_4D(int my_rank, int mpi_size, int *dim_len, size_t *start, size_t *count)
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
decomp_grid(int my_rank, int mpi_size, int *dim_len, size_t *grid_xt_start, size_t *grid_xt_size,
|
||||
size_t *grid_yt_start, size_t *grid_yt_size, double **grid_xt, double **grid_yt)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Size of local (i.e. for this pe) grid_xt data. */
|
||||
*grid_xt_size = dim_len[0]/mpi_size;
|
||||
*grid_xt_start = my_rank * *grid_xt_size;
|
||||
if (my_rank == mpi_size - 1)
|
||||
*grid_xt_size = *grid_xt_size + dim_len[0] % mpi_size;
|
||||
|
||||
/* Size of local (i.e. for this pe) grid_yt data. */
|
||||
*grid_yt_size = dim_len[1]/mpi_size;
|
||||
*grid_yt_start = my_rank * *grid_yt_size;
|
||||
if (my_rank == mpi_size - 1)
|
||||
*grid_yt_size = *grid_yt_size + dim_len[1] % mpi_size;
|
||||
|
||||
/* Allocate storage for the grid_xy and grid_yt coordinate
|
||||
* variable data. */
|
||||
if (!(*grid_xt = malloc(*grid_xt_size * sizeof(double)))) ERR;
|
||||
if (!(*grid_yt = malloc(*grid_yt_size * sizeof(double)))) ERR;
|
||||
|
||||
/* Fill the grid_xt and grid_yt coordinate data arrays. */
|
||||
for (i = 0; i < *grid_xt_size; i++)
|
||||
(*grid_xt)[i] = my_rank * 100 + i;
|
||||
for (i = 0; i < *grid_yt_size; i++)
|
||||
(*grid_yt)[i] = my_rank * 100 + i;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
@ -377,7 +409,7 @@ main(int argc, char **argv)
|
||||
int deflate_level[NUM_DEFLATE_LEVELS] = {1};
|
||||
|
||||
int f;
|
||||
int i, j, k, dv, dl;
|
||||
int i, dv, dl;
|
||||
|
||||
/* Initialize MPI. */
|
||||
MPI_Init(&argc, &argv);
|
||||
@ -391,18 +423,8 @@ main(int argc, char **argv)
|
||||
if (decomp_latlon(my_rank, mpi_size, dim_len, latlon_start, latlon_count,
|
||||
&lat, &lon)) ERR;
|
||||
|
||||
/* Size of local (i.e. for this pe) grid_xt data. */
|
||||
grid_xt_size = dim_len[0]/mpi_size;
|
||||
grid_xt_start = my_rank * grid_xt_size;
|
||||
if (my_rank == mpi_size - 1)
|
||||
grid_xt_size = grid_xt_size + dim_len[0] % mpi_size;
|
||||
|
||||
/* Size of local (i.e. for this pe) grid_yt data. */
|
||||
grid_yt_size = dim_len[1]/mpi_size;
|
||||
grid_yt_start = my_rank * grid_yt_size;
|
||||
if (my_rank == mpi_size - 1)
|
||||
grid_yt_size = grid_yt_size + dim_len[1] % mpi_size;
|
||||
|
||||
if (decomp_grid(my_rank, mpi_size, dim_len, &grid_xt_start, &grid_xt_size, &grid_yt_start, &grid_yt_size, &grid_xt, &grid_yt)) ERR;
|
||||
|
||||
/* Size of local (i.e. for this pe) phalf data. */
|
||||
phalf_size = dim_len[3]/mpi_size;
|
||||
phalf_start = my_rank * phalf_size;
|
||||
@ -412,8 +434,6 @@ main(int argc, char **argv)
|
||||
/* Allocate space on this pe to hold the coordinate var data for this pe. */
|
||||
if (!(pfull = malloc(data_count[1] * sizeof(float)))) ERR;
|
||||
if (!(phalf = malloc(phalf_size * sizeof(float)))) ERR;
|
||||
if (!(grid_xt = malloc(grid_xt_size * sizeof(double)))) ERR;
|
||||
if (!(grid_yt = malloc(grid_yt_size * sizeof(double)))) ERR;
|
||||
|
||||
/* Allocate space to hold the data. */
|
||||
if (!(value_data = malloc(data_count[3] * data_count[2] * data_count[1] * sizeof(float)))) ERR;
|
||||
@ -423,10 +443,6 @@ main(int argc, char **argv)
|
||||
pfull[i] = my_rank * 100 + i;
|
||||
for (i = 0; i < phalf_size; i++)
|
||||
phalf[i] = my_rank * 100 + i;
|
||||
for (i = 0; i < grid_xt_size; i++)
|
||||
grid_xt[i] = my_rank * 100 + i;
|
||||
for (i = 0; i < grid_yt_size; i++)
|
||||
grid_yt[i] = my_rank * 100 + i;
|
||||
/* for (j = 0; j < latlon_count[1]; j++) */
|
||||
/* { */
|
||||
/* for(i = 0; i < latlon_count[0]; i++) */
|
||||
|
Loading…
x
Reference in New Issue
Block a user