72
int cmpxy_gt(const void *s1, const void *s2)
75
xyinfo_t *xy1 = (xyinfo_t *) s1;
76
xyinfo_t *xy2 = (xyinfo_t *) s2;
78
if ( xy1->y > xy2->y || (!(fabs(xy1->y - xy2->y) > 0) && xy1->x < xy2->x) ) cmp = -1;
79
else if ( xy1->y < xy2->y || (!(fabs(xy1->y - xy2->y) > 0) && xy1->x > xy2->x) ) cmp = 1;
72
85
int genGrid(int nfiles, ens_file_t *ef, int **gridindex, int igrid)
74
87
static char *func = "genGrid";
88
int lsouthnorth = TRUE;
90
104
for ( fileID = 0; fileID < nfiles; fileID++ )
92
gridID = vlistGrid(ef[fileID].vlistID, igrid);
106
gridID = vlistGrid(ef[fileID].vlistID, igrid);
93
107
gridtype = gridInqType(gridID);
94
108
if ( !(gridtype == GRID_LONLAT || gridtype == GRID_GAUSSIAN ||
95
(gridtype == GRID_GENERIC && gridInqXsize(gridID) > 0 && gridInqYsize(gridID) > 0)) )
109
(gridtype == GRID_GENERIC && gridInqXsize(gridID) > 0 && gridInqYsize(gridID) > 0)) )
96
110
cdoAbort("Unsupported grid type: %s!", gridNamePtr(gridtype));
98
112
if ( xsize == 0 ) xsize = gridInqXsize(gridID);
110
124
xyinfo[fileID].x = xvals[fileID][0];
111
125
xyinfo[fileID].y = yvals[fileID][0];
112
126
xyinfo[fileID].id = fileID;
128
if ( fileID == 0 && ysize > 1 )
130
if ( yvals[fileID][0] > yvals[fileID][ysize-1] ) lsouthnorth = FALSE;
115
for ( fileID = 0; fileID < nfiles; fileID++ )
116
printf("1 %d %g %g \n", xyinfo[fileID].id, xyinfo[fileID].x, xyinfo[fileID].y);
135
for ( fileID = 0; fileID < nfiles; fileID++ )
136
printf("1 %d %g %g \n", xyinfo[fileID].id, xyinfo[fileID].x, xyinfo[fileID].y);
118
138
qsort(xyinfo, nfiles, sizeof(xyinfo_t), cmpx);
120
for ( fileID = 0; fileID < nfiles; fileID++ )
121
printf("2 %d %g %g \n", xyinfo[fileID].id, xyinfo[fileID].x, xyinfo[fileID].y);
123
qsort(xyinfo, nfiles, sizeof(xyinfo_t), cmpxy);
125
for ( fileID = 0; fileID < nfiles; fileID++ )
126
printf("3 %d %g %g \n", xyinfo[fileID].id, xyinfo[fileID].x, xyinfo[fileID].y);
141
for ( fileID = 0; fileID < nfiles; fileID++ )
142
printf("2 %d %g %g \n", xyinfo[fileID].id, xyinfo[fileID].x, xyinfo[fileID].y);
145
qsort(xyinfo, nfiles, sizeof(xyinfo_t), cmpxy_lt);
147
qsort(xyinfo, nfiles, sizeof(xyinfo_t), cmpxy_gt);
150
for ( fileID = 0; fileID < nfiles; fileID++ )
151
printf("3 %d %g %g \n", xyinfo[fileID].id, xyinfo[fileID].x, xyinfo[fileID].y);
129
154
for ( fileID = 1; fileID < nfiles; fileID++ )
259
284
/* check that the contents is always the same */
260
285
nvars = vlistNvars(ef[0].vlistID);
261
286
if ( nvars == 1 )
287
cmpfunc = CMP_NAME | CMP_GRIDSIZE | CMP_NLEVEL;
289
cmpfunc = CMP_NAME | CMP_GRIDSIZE | CMP_NLEVEL;
266
291
for ( fileID = 1; fileID < nfiles; fileID++ )
267
292
vlistCompare(ef[0].vlistID, ef[fileID].vlistID, cmpfunc);