/* Name- defineDimensionsAndVariables.c Language- C Type- MAIN Version- 1.0 Date- 2/28/2026 Programmer- Mike Pettey (STC) Function- This program extracts data from MIRS granules and collocates the data to selected collocations times and locations. */ #include #include #include #include #include #include #include "mirs_collocator.h" int writeTextAttribute(int nc_id, int var_id, char *attribute_name, char *attribute); void defineDimensionsAndVariables(int nc_id, int num_collocations) { int retval, out_var_id; int num_coll_dim_id; int channel_id, p_layer_id, p_level_id, qc_dim_id; int nprovs_level_id, nprovs_layer_id; int scalar_dimids[1]; int channel_dimids[2], p_layer_dimids[2], p_level_dimids[2], qc_dimids[2]; int nprovs_level_dimids[2], nprovs_layer_dimids[2]; int i4fill; short i2fill; float f4fill; i2fill = -32768; i4fill = -32768; f4fill = -32768.0; // Define the dimension for the number of collocations retval = nc_def_dim(nc_id, "Num_Collocations", num_collocations, &num_coll_dim_id); scalar_dimids[0] = num_coll_dim_id; // Define the other dimensions retval = nc_def_dim(nc_id, "Channel", 22, &channel_id); channel_dimids[0] = num_coll_dim_id; channel_dimids[1] = channel_id; retval = nc_def_dim(nc_id, "P_Layer", 100, &p_layer_id); p_layer_dimids[0] = num_coll_dim_id; p_layer_dimids[1] = p_layer_id; retval = nc_def_dim(nc_id, "P_Level", 101, &p_level_id); p_level_dimids[0] = num_coll_dim_id; p_level_dimids[1] = p_level_id; retval = nc_def_dim(nc_id, "Qc_dim", 4, &qc_dim_id); qc_dimids[0] = num_coll_dim_id; qc_dimids[1] = qc_dim_id; retval = nc_def_dim(nc_id, "NPROVS_Levels", 100, &nprovs_level_id); nprovs_level_dimids[0] = num_coll_dim_id; nprovs_level_dimids[1] = nprovs_level_id; retval = nc_def_dim(nc_id, "NPROVS_Layers", 30, &nprovs_layer_id); nprovs_layer_dimids[0] = num_coll_dim_id; nprovs_layer_dimids[1] = nprovs_layer_id; // Define the date variable retval = nc_def_var(nc_id, "date", NC_INT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "format", "YYYYMMDD"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i4fill); // Define the time variable retval = nc_def_var(nc_id, "time", NC_INT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "format", "HHMMSS"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i4fill); // Define the latitude variable retval = nc_def_var(nc_id, "latitude", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "unit", "deg"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Define the longitude variable retval = nc_def_var(nc_id, "longitude", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "unit", "deg"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Define the granule name variables retval = nc_def_var(nc_id, "collocated_snd_granule_name", NC_STRING, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "string_length", "101"); retval = nc_def_var(nc_id, "collocated_img_granule_name", NC_STRING, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "string_length", "101"); retval = nc_def_var(nc_id, "collocated_sfr_granule_name", NC_STRING, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "string_length", "101"); // Define the footprint index, scan line and field of view retval = nc_def_var(nc_id, "collocated_footprint_index", NC_INT, 1, scalar_dimids, &out_var_id); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i4fill); retval = nc_def_var(nc_id, "collocated_scanline", NC_INT, 1, scalar_dimids, &out_var_id); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i4fill); retval = nc_def_var(nc_id, "collocated_field_of_view", NC_INT, 1, scalar_dimids, &out_var_id); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i4fill); // Define the version and release numbers retval = nc_def_var(nc_id, "program_version", NC_INT, 1, scalar_dimids, &out_var_id); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i4fill); retval = nc_def_var(nc_id, "program_release", NC_INT, 1, scalar_dimids, &out_var_id); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i4fill); // Define the variables // SND retval = nc_def_var(nc_id, "ChiSqr", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "unit", ""); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Convergence rate: <3-good,>10-bad"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Frequency retval = nc_def_var(nc_id, "Freq", NC_FLOAT, 2, channel_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Central frequency"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "GHz"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Local zenith angle retval = nc_def_var(nc_id, "LZ_angle", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Local zenith angle"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "deg"); retval = writeTextAttribute(nc_id, out_var_id, "valid range", "-70, 70"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Orbital mode retval = nc_def_var(nc_id, "Orb_mode", NC_SHORT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Orbital Mode"); retval = writeTextAttribute(nc_id, out_var_id, "unit", " "); retval = writeTextAttribute(nc_id, out_var_id, "valid range", "0, 2"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i2fill); short node[] = {0, 1, 2}; retval = nc_put_att_short(nc_id, out_var_id, "flag_values", NC_SHORT, 3, node); retval = writeTextAttribute(nc_id, out_var_id, "flag_meanings", "ascending descending transitioning_zenith_angle"); // Cloud liquid water profile retval = nc_def_var(nc_id, "PClw", NC_FLOAT, 2, p_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Cloud liquid water profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = writeTextAttribute(nc_id, out_var_id, "valid range", "0.0, 1.0"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Graupel mass profile retval = nc_def_var(nc_id, "PGraupel", NC_FLOAT, 2, p_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Graupel mass profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = writeTextAttribute(nc_id, out_var_id, "valid range", "0.0, 1.0"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Ice mass profile retval = nc_def_var(nc_id, "PIce", NC_FLOAT, 2, p_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Ice mass profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = writeTextAttribute(nc_id, out_var_id, "valid range", "0.0, 1.0"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Rain mass profile retval = nc_def_var(nc_id, "PRain", NC_FLOAT, 2, p_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Rain mass profile in mm"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = writeTextAttribute(nc_id, out_var_id, "valid range", "0.0, 1.0"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Snow mass profile retval = nc_def_var(nc_id, "PSnow", NC_FLOAT, 2, p_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Snow mass profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = writeTextAttribute(nc_id, out_var_id, "valid range", "0.0, 1.0"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Temperature profile retval = nc_def_var(nc_id, "PTemp", NC_FLOAT, 2, p_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Temperature profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "K"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Water vapor profile retval = nc_def_var(nc_id, "PVapor", NC_FLOAT, 2, p_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Water vapor profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "g/kg"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Pressure layer profile retval = nc_def_var(nc_id, "Player", NC_FLOAT, 2, p_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Pressure for each layer"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mb"); retval = writeTextAttribute(nc_id, out_var_id, "valid range", "0.0, 1100.0"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Pressure level profile retval = nc_def_var(nc_id, "Plevel", NC_FLOAT, 2, p_level_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Pressure for each level"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mb"); retval = writeTextAttribute(nc_id, out_var_id, "valid range", "0.0, 1100.0"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // QC retval = nc_def_var(nc_id, "Qc", NC_INT, 2, qc_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Quality Flag"); retval = writeTextAttribute(nc_id, out_var_id, "unit", " "); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i4fill); short qc[] = {0, 1, 2}; retval = nc_put_att_short(nc_id, out_var_id, "flag_values", NC_SHORT, 3, qc); retval = writeTextAttribute(nc_id, out_var_id, "flag_meanings", "good usable_with_problem bad"); // Relative azimuth angle retval = nc_def_var(nc_id, "RAzi_angle", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Relative azimuth angle"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "deg"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Solar zenith angle retval = nc_def_var(nc_id, "SZ_angle", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Solar zenith angle"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "deg"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Surface type retval = nc_def_var(nc_id, "Sfc_type", NC_SHORT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Type of Surface"); retval = writeTextAttribute(nc_id, out_var_id, "unit", " "); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i2fill); short surface[] = {0, 1, 2, 3}; retval = nc_put_att_short(nc_id, out_var_id, "flag_values", NC_SHORT, 4, surface); retval = writeTextAttribute(nc_id, out_var_id, "flag_meanings", "ocean sea_ice land snow"); // Surface pressure retval = nc_def_var(nc_id, "SurfP", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Surface pressure"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mb"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // IMG // Brightness temperature retval = nc_def_var(nc_id, "BT", NC_FLOAT, 2, channel_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Channel Temperature"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "K"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Cloud liquid water retval = nc_def_var(nc_id, "CLW", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Cloud liquid water"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Channel selection retval = nc_def_var(nc_id, "ChanSel", NC_SHORT, 2, channel_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Channel selection used in retrieval"); retval = writeTextAttribute(nc_id, out_var_id, "unit", " "); retval = writeTextAttribute(nc_id, out_var_id, "valid_range", "0, 1"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i2fill); // Cloud base pressure retval = nc_def_var(nc_id, "CldBase", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Cloud base pressure"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mb"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Cloud thickness retval = nc_def_var(nc_id, "CldThick", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Cloud thickness"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mb"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Cloud top pressure retval = nc_def_var(nc_id, "CldTop", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Cloud top pressure"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mb"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Emissivity retval = nc_def_var(nc_id, "Emis", NC_FLOAT, 2, channel_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Channel emissivity"); retval = writeTextAttribute(nc_id, out_var_id, "unit", " "); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Graupel water path retval = nc_def_var(nc_id, "GWP", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Graupel water path"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Ice water path retval = nc_def_var(nc_id, "IWP", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Ice water path"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Liquid water path retval = nc_def_var(nc_id, "LWP", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Liquid water path"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Precip type retval = nc_def_var(nc_id, "PrecipType", NC_SHORT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Precipitation type (frozen/liquid)"); retval = writeTextAttribute(nc_id, out_var_id, "unit", " "); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i2fill); // Probability of falling snow retval = nc_def_var(nc_id, "Prob_SF", NC_SHORT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Probability of falling snow"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "pct"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i2fill); // Rain flag retval = nc_def_var(nc_id, "RFlag", NC_SHORT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Rain flag"); retval = writeTextAttribute(nc_id, out_var_id, "unit", " "); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i2fill); // Rain rate retval = nc_def_var(nc_id, "RR", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Rain rate"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm/hr"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Rain water path retval = nc_def_var(nc_id, "RWP", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Rain water path"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Snowfall rate //retval = nc_def_var(nc_id, "RR", NC_FLOAT, 1, scalar_dimids, &out_var_id); //retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Snow fall rate"); //retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm/hr"); //retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Sea ice concentration retval = nc_def_var(nc_id, "SIce", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Sea ice concentration"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "pct"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // First year sea ice retval = nc_def_var(nc_id, "SIce_FY", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "First year sea ice concentration"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "pct"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Multi year sea ice retval = nc_def_var(nc_id, "SIce_MY", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Multi-year sea ice concentrataion"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "pct"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Snow water equivalent retval = nc_def_var(nc_id, "SWE", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Snow water equivalent"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "cm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Snow water path retval = nc_def_var(nc_id, "SWP", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Snow water path"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Snow cover retval = nc_def_var(nc_id, "Snow", NC_SHORT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Snow cover"); retval = writeTextAttribute(nc_id, out_var_id, "unit", " "); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i2fill); // Snow grain size retval = nc_def_var(nc_id, "SnowGS", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Snow grain size"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Surface moisture retval = nc_def_var(nc_id, "SurfM", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Surface moisture"); retval = writeTextAttribute(nc_id, out_var_id, "unit", " "); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Total precipitable water retval = nc_def_var(nc_id, "TPW", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Total precipitable water"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Skin temperature retval = nc_def_var(nc_id, "TSkin", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Skin temperature"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "K"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Wind direction retval = nc_def_var(nc_id, "WindDir", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Wind direction"); retval = writeTextAttribute(nc_id, out_var_id, "unit", " "); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Wind speed retval = nc_def_var(nc_id, "WindSp", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Wind speed"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "m/sec"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // U direction wind speed retval = nc_def_var(nc_id, "WindU", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "U-direction wind speed"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "m/s"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // V direction wind speed retval = nc_def_var(nc_id, "WindV", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "V-direction wind speed"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "m/s"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Un-corrected channel temperature retval = nc_def_var(nc_id, "YM", NC_FLOAT, 2, channel_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Un-corrected channel temperature"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "K"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // SFR // Snow detection retval = nc_def_var(nc_id, "SD", NC_SHORT, 2, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Snow detection: 0=no_snow, 1=snow"); retval = writeTextAttribute(nc_id, out_var_id, "unit", " "); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &i2fill); short snow[] = {0, 1}; retval = nc_put_att_short(nc_id, out_var_id, "flag_values", NC_SHORT, 2, snow); retval = writeTextAttribute(nc_id, out_var_id, "flag_meanings", "no_snow snow"); // Snowfall rate retval = nc_def_var(nc_id, "SFR", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "Snow fall rate"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm/hr"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // Collocation variables retval = nc_def_var(nc_id, "collocation_dist_diff", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "unit", "km"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); retval = nc_def_var(nc_id, "collocation_time_diff", NC_FLOAT, 1, scalar_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "unit", "hr"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS profiles // NPROVS pressure level profile retval = nc_def_var(nc_id, "NPROVS_level_pressure", NC_FLOAT, 2, nprovs_level_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS interpolated pressure for each level"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mb"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS pressure layer profile retval = nc_def_var(nc_id, "NPROVS_layer_pressure", NC_FLOAT, 2, nprovs_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS averaged pressure for each layer"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mb"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS level cloud liquid water profile retval = nc_def_var(nc_id, "NPROVS_level_cloud_liquid_water", NC_FLOAT, 2, nprovs_level_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS interpolated level cloud liquid water profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS level graupel mass profile retval = nc_def_var(nc_id, "NPROVS_level_graupel_mass", NC_FLOAT, 2, nprovs_level_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS interpolated level graupel mass profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS level ice mass profile retval = nc_def_var(nc_id, "NPROVS_level_ice_mass", NC_FLOAT, 2, nprovs_level_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS interpolated level ice mass profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS level rain mass profile retval = nc_def_var(nc_id, "NPROVS_level_rain_mass", NC_FLOAT, 2, nprovs_level_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS interpolated level rain mass profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS level snow mass profile retval = nc_def_var(nc_id, "NPROVS_level_snow_mass", NC_FLOAT, 2, nprovs_level_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS interpolated level snow mass profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS level temperature profile retval = nc_def_var(nc_id, "NPROVS_level_temperature", NC_FLOAT, 2, nprovs_level_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS interpolated level temperature profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "K"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS level water vapor profile retval = nc_def_var(nc_id, "NPROVS_level_water_vapor", NC_FLOAT, 2, nprovs_level_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS interpolated level water vapor profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "g/kg"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS layer cloud liquid water profile retval = nc_def_var(nc_id, "NPROVS_layer_cloud_liquid_water", NC_FLOAT, 2, nprovs_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS averaged layer cloud liquid water profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS layer graupel mass profile retval = nc_def_var(nc_id, "NPROVS_layer_graupel_mass", NC_FLOAT, 2, nprovs_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS averaged layer graupel mass profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS layer ice mass profile retval = nc_def_var(nc_id, "NPROVS_layer_ice_mass", NC_FLOAT, 2, nprovs_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS averaged layer ice mass profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS layer rain mass profile retval = nc_def_var(nc_id, "NPROVS_layer_rain_mass", NC_FLOAT, 2, nprovs_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS averaged layer rain mass profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS layer snow mass profile retval = nc_def_var(nc_id, "NPROVS_layer_snow_mass", NC_FLOAT, 2, nprovs_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS averaged layer snow mass profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "mm"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS layer temperature profile retval = nc_def_var(nc_id, "NPROVS_layer_temperature", NC_FLOAT, 2, nprovs_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS averaged layer temperature profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "K"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); // NPROVS layer water vapor profile retval = nc_def_var(nc_id, "NPROVS_layer_water_vapor", NC_FLOAT, 2, nprovs_layer_dimids, &out_var_id); retval = writeTextAttribute(nc_id, out_var_id, "long_name", "NPROVS averaged layer water vapor profile"); retval = writeTextAttribute(nc_id, out_var_id, "unit", "g/kg"); retval = nc_def_var_fill(nc_id, out_var_id, NC_FILL, &f4fill); } // end of file