Skip to content

Commit 9349e35

Browse files
mlee03mlee03
authored andcommitted
change lon/lat vertices to 1d
1 parent 65d0b4e commit 9349e35

File tree

3 files changed

+14
-30
lines changed

3 files changed

+14
-30
lines changed

tools/libfrencutils_acc/create_xgrid_acc.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,8 @@ int create_xgrid_2dx2d_order1_acc(const int nlon_input_cells, const int nlat_in
230230
output_cell_lon_min += rotate;
231231
output_cell_lon_max += rotate;
232232
for (int l=0; l<nvertices2; l++) {
233-
output_cell_lon_vertices[l] = output_grid_cells->lon_vertices[ij2][l] + rotate;
234-
output_cell_lat_vertices[l] = output_grid_cells->lat_vertices[ij2][l];
233+
output_cell_lon_vertices[l] = output_grid_cells->lon_vertices[ij2*MAX_V+l] + rotate;
234+
output_cell_lat_vertices[l] = output_grid_cells->lat_vertices[ij2*MAX_V+l];
235235
}
236236

237237
//output_cell_lon should in the same range as input_cell_lon after lon_fix,
@@ -391,8 +391,8 @@ int create_xgrid_2dx2d_order2_acc(const int nlon_input_cells, const int nlat_in
391391
output_cell_area = output_grid_cells->area[ij2];
392392

393393
for (int l=0; l<nvertices2; l++) {
394-
output_cell_lon_vertices[l] = output_grid_cells->lon_vertices[ij2][l] + rotate;
395-
output_cell_lat_vertices[l] = output_grid_cells->lat_vertices[ij2][l];
394+
output_cell_lon_vertices[l] = output_grid_cells->lon_vertices[ij2*MAX_V+l] + rotate;
395+
output_cell_lat_vertices[l] = output_grid_cells->lat_vertices[ij2*MAX_V+l];
396396
}
397397

398398
//output_cell_lon should in the same range as input_cell_lon after lon_fix,

tools/libfrencutils_acc/create_xgrid_utils_acc.c

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -660,20 +660,16 @@ void get_grid_cell_struct_acc( const int nlon, const int nlat, const Grid_config
660660
grid_cells->lon_cent = (double *)malloc(ncells*sizeof(double));
661661
grid_cells->area = (double *)malloc(ncells*sizeof(double));
662662
grid_cells->nvertices = (int *)malloc(ncells*sizeof(int));
663-
grid_cells->lon_vertices = (double **)malloc(ncells*sizeof(double));
664-
grid_cells->lat_vertices = (double **)malloc(ncells*sizeof(double));
665-
for(int icell=0 ; icell<ncells ; icell++) {
666-
grid_cells->lat_vertices[icell] = (double *)malloc(MAX_V*sizeof(double));
667-
grid_cells->lon_vertices[icell] = (double *)malloc(MAX_V*sizeof(double));
668-
}
663+
grid_cells->lon_vertices = (double *)malloc(MAX_V*ncells*sizeof(double));
664+
grid_cells->lat_vertices = (double *)malloc(MAX_V*ncells*sizeof(double));
669665

670666
#pragma acc enter data create(grid_cells[:1])
671667
#pragma acc enter data create(grid_cells->lon_min[:ncells], grid_cells->lon_max[:ncells], \
672668
grid_cells->lat_min[:ncells], grid_cells->lat_max[:ncells], \
673669
grid_cells->lon_cent[:ncells], grid_cells->nvertices[:ncells],\
674670
grid_cells->area[:ncells])
675-
#pragma acc enter data create(grid_cells->lon_vertices[:ncells][:MAX_V], \
676-
grid_cells->lat_vertices[:ncells][:MAX_V])
671+
#pragma acc enter data create(grid_cells->lon_vertices[:MAX_V*ncells], \
672+
grid_cells->lat_vertices[:MAX_V*ncells])
677673

678674
#pragma acc data present(grid_cells[:1], lon[:npts], lat[:npts])
679675
#pragma acc parallel loop independent
@@ -697,8 +693,8 @@ void get_grid_cell_struct_acc( const int nlon, const int nlat, const Grid_config
697693
grid_cells->area[icell] = poly_area_acc(lon_vertices, lat_vertices, nvertices);
698694

699695
for(int ivertex=0 ; ivertex<nvertices ; ivertex++) {
700-
grid_cells->lon_vertices[icell][ivertex] = lon_vertices[ivertex];
701-
grid_cells->lat_vertices[icell][ivertex] = lat_vertices[ivertex];
696+
grid_cells->lon_vertices[MAX_V*icell+ivertex] = lon_vertices[ivertex];
697+
grid_cells->lat_vertices[MAX_V*icell+ivertex] = lat_vertices[ivertex];
702698
}
703699
}
704700

@@ -707,14 +703,6 @@ void get_grid_cell_struct_acc( const int nlon, const int nlat, const Grid_config
707703
void free_grid_cell_struct_acc( const int ncells, Grid_cells_struct_config *grid_cells)
708704
{
709705

710-
for(int icell=0 ; icell<MAX_V ; icell++) {
711-
#pragma acc exit data delete( grid_cells->lon_vertices[icell])
712-
}
713-
714-
for(int icell=0 ; icell<MAX_V ; icell++) {
715-
#pragma acc exit data delete( grid_cells->lat_vertices[icell])
716-
}
717-
718706
#pragma acc exit data delete( grid_cells->lon_vertices, \
719707
grid_cells->lat_vertices, \
720708
grid_cells->lon_min, \
@@ -726,19 +714,15 @@ void free_grid_cell_struct_acc( const int ncells, Grid_cells_struct_config *grid
726714
grid_cells->area)
727715
#pragma acc exit data delete(grid_cells)
728716

729-
for(int icell=0 ; icell<MAX_V ; icell++) {
730-
free(grid_cells->lon_vertices[icell]);
731-
free(grid_cells->lat_vertices[icell]);
732-
}
733717
free(grid_cells->lon_min); grid_cells->lon_min = NULL;
734718
free(grid_cells->lon_max); grid_cells->lon_max = NULL;
735719
free(grid_cells->lon_cent); grid_cells->lon_cent = NULL;
736720
free(grid_cells->lat_min); grid_cells->lat_min = NULL;
737721
free(grid_cells->lat_max); grid_cells->lat_max = NULL;
738722
free(grid_cells->area); grid_cells->area = NULL;
739723
free(grid_cells->nvertices); grid_cells->nvertices=NULL;
740-
//grid_cells->lon_vertices = NULL;
741-
//grid_cells->lat_vertices = NULL;
724+
free(grid_cells->lon_vertices); grid_cells->lon_vertices = NULL;
725+
free(grid_cells->lat_vertices); grid_cells->lat_vertices = NULL;
742726
}
743727

744728

tools/libfrencutils_acc/globals_acc.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ typedef struct {
5757
double *lon_cent;
5858
double *area;
5959
int *nvertices;
60-
double **lon_vertices;
61-
double **lat_vertices;
60+
double *lon_vertices;
61+
double *lat_vertices;
6262
double *recomputed_area;
6363
double *centroid_lon;
6464
double *centroid_lat;

0 commit comments

Comments
 (0)