32 char const * test_data_file_name =
"test_read_woa_data.nc";
38 char * woa_field_name =
"s_an";
45 if (field_info.nbrTimeSteps !=
TIME)
46 PUT_ERR(
"ERROR in meta data (nbrTimeSteps)");
47 if (field_info.nbrLevels !=
DEPTH)
48 PUT_ERR(
"ERROR in meta data (nbrLevels)");
49 if (field_info.nbrLatPoints !=
LAT)
50 PUT_ERR(
"ERROR in meta data (nbrLatPoints)");
51 if (field_info.nbrLonPoints !=
LON)
52 PUT_ERR(
"ERROR in meta data (nbrLonPoints)");
56 for (
int time = 0; time <
TIME; ++time) {
57 for (
int depth = 0; depth <
DEPTH; ++depth) {
60 woa_file, global_salinity, field_info, time+1, depth+1);
63 for (
int i = 0; i <
LON *
LAT; ++i)
64 if (fabs(global_salinity[i] - (
double)(time * 100 + depth)) > 1e-6)
74 unlink(test_data_file_name);
86 int dim_lon_id, dim_lat_id, dim_depth_id, dim_time_id, dim_nv_id;
100 ncid,
"s_an", NC_FLOAT, 4,
101 (
int[]){dim_time_id,dim_depth_id,dim_lat_id,dim_lon_id},
109 for (
int time = 0; time <
TIME; ++time)
110 for (
int depth = 0; depth <
DEPTH; ++depth)
111 for (
int lat = 0; lat <
LAT; ++lat)
112 for (
int lon = 0; lon <
LON; ++lon)
113 dummy_data[time][depth][lat][lon] = (
float)(time * 100 + depth);
114 YAC_HANDLE_ERROR(nc_put_var_float(ncid, var_s_an_id, &dummy_data[0][0][0][0]));
void yac_nc_create(const char *path, int cmode, int *ncidp)
void yac_read_woa_timestep_level(int fileId, double *cell_data, struct yac_fieldMetadata fieldInfo, int timeStep, int level)
void yac_close_woa_output(int ncid)
int yac_open_woa_output(char const *input_file)
void yac_read_woa_dimensions(int fileId, char const *fieldName, struct yac_fieldMetadata *fieldInfo)
double * yac_get_woa_memory(struct yac_fieldMetadata fieldInfo)
void yac_free_woa_memory(double *data)
general routines for reading WOA output NetCDF files
static void write_test_data_file(char const *file_name)
#define YAC_HANDLE_ERROR(exp)