59int main(
int argc,
char ** argv) {
63 char const * grid_name, * grid_filename, * vtk_filename;
67 double * clon, * clat, * lon, * lat;
68 int * gid, * cmk, * rnk;
71 grid_filename, grid_name,
72 &nv, &nc, &clon, &clat, &lon, &lat, &gid, &cmk, &rnk);
75 vtk_filename, grid_name,
76 nv, nc, clon, clat, lon, lat, gid, cmk, rnk);
108 char const * grid_filename,
char const * grid_name,
109 size_t * nv,
size_t * nc,
110 double ** clon,
double ** clat,
double ** lon,
double ** lat,
111 int ** gid,
int ** cmk,
int ** rnk) {
115 size_t grid_name_len = strlen(grid_name) + 1;
116 char nv_dim_name[3 + grid_name_len];
117 char nc_dim_name[3 + grid_name_len];
118 char cla_var_name[4 + grid_name_len];
119 char clo_var_name[4 + grid_name_len];
120 char lat_var_name[4 + grid_name_len];
121 char lon_var_name[4 + grid_name_len];
122 char gid_var_name[4 + grid_name_len];
123 char cmk_var_name[4 + grid_name_len];
124 char rnk_var_name[4 + grid_name_len];
126 snprintf(nv_dim_name, 3 + grid_name_len,
"nv_%s", grid_name);
127 snprintf(nc_dim_name, 3 + grid_name_len,
"nc_%s", grid_name);
128 snprintf(cla_var_name, 4 + grid_name_len,
"%s.cla", grid_name);
129 snprintf(clo_var_name, 4 + grid_name_len,
"%s.clo", grid_name);
130 snprintf(lat_var_name, 4 + grid_name_len,
"%s.lat", grid_name);
131 snprintf(lon_var_name, 4 + grid_name_len,
"%s.lon", grid_name);
132 snprintf(gid_var_name, 4 + grid_name_len,
"%s.gid", grid_name);
133 snprintf(cmk_var_name, 4 + grid_name_len,
"%s.cmk", grid_name);
134 snprintf(rnk_var_name, 4 + grid_name_len,
"%s.rnk", grid_name);
137 yac_file_exists(grid_filename),
"File %s does not exist.", grid_filename)
139 int ncid, dimid, var_id;
152 status = nc_inq_varid(ncid, lat_var_name, &var_id);
153 if (status == NC_NOERR) {
155 }
else if (status == NC_ENOTVAR) {
160 status = nc_inq_varid(ncid, lon_var_name, &var_id);
161 if (status == NC_NOERR) {
163 }
else if (status == NC_ENOTVAR) {
169 status = nc_inq_varid(ncid, gid_var_name, &var_id);
170 if (status == NC_NOERR) {
172 }
else if (status == NC_ENOTVAR) {
178 status = nc_inq_varid(ncid, cmk_var_name, &var_id);
179 if (status == NC_NOERR) {
181 }
else if (status == NC_ENOTVAR) {
212 char const * vtk_filename,
char const * grid_name,
213 size_t nv,
size_t nc,
214 double * clon,
double * clat,
double * lon,
double * lat,
215 int * gid,
int * cmk,
int * rnk) {
218 malloc((nv * nc + ((lon && lat)?nc:0)) *
sizeof(*points));
220 for (
size_t i = 0; i < nv * nc; ++i)
LLtoXYZ(clon[i], clat[i],
points[i]);
222 for (
size_t i = 0; i < nc; ++i)
225 unsigned * num_points_per_polygon =
226 malloc(nc *
sizeof(*num_points_per_polygon));
227 for (
size_t i = 0; i < nc; ++i) num_points_per_polygon[i] = (
unsigned)nv;
229 unsigned * polygon_data = malloc(nc * nv *
sizeof(*polygon_data));
230 for (
size_t i = 0; i < nv * nc; ++i) polygon_data[i] = (
unsigned)i;
235 file, polygon_data, num_points_per_polygon, nc);
242 free(num_points_per_polygon);
static void write_vtk_file(char const *vtk_filename, char const *grid_name, size_t nv, size_t nc, double *clon, double *clat, double *vlon, double *vlat, int *gid, int *cmk, int *rnk)
static void read_grid_file(char const *grid_filename, char const *grid_name, size_t *nv, size_t *nc, double **clon, double **clat, double **vlon, double **vlat, int **gid, int **cmk, int **rnk)