// This is a preliminary CDL file for data from the // Profiler Demonstration Network // Written by Mark Bradford of STORM, 12/18/89 // Last updated 4/10/90 by MB (changed surf_* to sfc_*) netcdf profiler { dimensions: station=unlimited; // There are a variable number of stations per time // slice; one time slice per file. high_level=36; // There are 36 high gates and low_level=36; // 36 low gates. string_len=11; // String length: 10 characters, one null. variables: // Station information: (These should remain relatively static) char id(station, string_len); // Five-character NWS name. char region(station, string_len); // Region identifier. // NOTE: This is not set by // the profiler hub, and can be // set to any desired value. float lat(station); // Station latitude, float lon(station); // longitude, and float elev(station); // elevation above MSL. float azim_n(station); // Azimuths of north, float azim_e(station); // east, and float azim_v(station); // vertical beams. float elev_n(station); // Angles of north, float elev_e(station); // east, and float elev_v(station); // vertical beams. // Some stations will have surface data: float sfc_p(station); // Pressure. float sfc_t(station); // Temperature. float sfc_td(station); // Dew point. float sfc_spd(station); // Wind speed. float sfc_dir(station); // Wind direction. float sfc_rain(station); // Rain accumulated since last // time slice. // Define time variables for this time slice: int year, month, day, hour, minute; // Use full year, e.g., 1989. // Define data variables for this time slice: // (Each variable has a form for the low mode and the high mode) // Low-level mode: float low_level(low_level); // Height above station. float low_u_wind(station,low_level); // U wind. float low_v_wind(station,low_level); // V wind. float low_w_wind(station,low_level); // W wind. float low_moment0_n(station,low_level); // 0th moment, N beam. float low_moment0_e(station,low_level); // 0th moment, E beam. float low_moment0_v(station,low_level); // 0th moment, vertical beam. // Note: 1st moment data omitted; it can be re-derived from winds. float low_moment2_n(station,low_level); // 2nd moment, N beam. float low_moment2_e(station,low_level); // 2nd moment, E beam. float low_moment2_v(station,low_level); // 2nd moment, vertical beam. byte low_qual_indicator(station,low_level); // Quality control. byte low_qual_summary(station,low_level); // Quality control. // High-level mode: float high_level(high_level); // Height above station. float high_u_wind(station,high_level); // U wind. float high_v_wind(station,high_level); // V wind. float high_w_wind(station,high_level); // W wind. float high_moment0_n(station,high_level); // 0th moment, N beam. float high_moment0_e(station,high_level); // 0th moment, E beam. float high_moment0_v(station,high_level); // 0th moment, vertical beam. // Note: 1st moment data omitted; it can be re-derived from winds. float high_moment2_n(station,high_level); // 2nd moment, N beam. float high_moment2_e(station,high_level); // 2nd moment, E beam. float high_moment2_v(station,high_level); // 2nd moment, vertical beam. byte high_qual_indicator(station,high_level); // Quality control. byte high_qual_summary(station,high_level); // Quality control. // Attributes of variables: id:name = "ID"; id:long_name = "Site ID"; region:name = "AREA"; region:long_name = "Regional ID"; lat:name = "LAT"; lat:long_name = "North Latitude"; lat:units = "degrees"; lat:valid_range = -90.0,90.0; lon:name = "LON"; lon:long_name = "East Longitude"; lon:units = "degrees"; lon:valid_range = -180.0,180.0; elev:name = "ELEV"; elev:long_name = "Elevation above MSL"; elev:units = "degrees"; elev:valid_range = 0.0, 90.0; azim_n:name = "AZIM_N"; azim_n:long_name = "Azimuth of north beam"; azim_n:units = "degrees"; azim_n:valid_range = 0.0, 360.; azim_e:name = "AZIM_E"; azim_e:long_name = "Azimuth of east beam"; azim_e:units = "degrees"; azim_e:valid_range = 0.0, 360.; azim_v:name = "AZIM_V"; azim_v:long_name = "Azimuth of vertical beam"; azim_v:units = "degrees"; azim_v:valid_range = 0.0, 360.; elev_n:name = "ELEV_N"; elev_n:long_name = "Elevation of north beam"; elev_n:units = "degrees"; elev_n:valid_range = 0.0, 90.0; elev_e:name = "ELEV_E"; elev_e:long_name = "Elevation of east beam"; elev_e:units = "degrees"; elev_e:valid_range = 0.0, 90.0; elev_v:name = "ELEV_V"; elev_v:long_name = "Elevation of vertical beam"; elev_v:units = "degrees"; elev_v:valid_range = 0.0, 90.0; sfc_p:name = "P"; sfc_p:long_name = "Surface pressure"; sfc_p:units = "hPa"; sfc_p:valid_range = 0.0, 1500.0; sfc_t:name = "T"; sfc_t:long_name = "Surface temperature"; sfc_t:units = "degC"; sfc_t:valid_range = -100.0, 100.0; sfc_td:name = "TD"; sfc_td:long_name = "Surface dew point"; sfc_td:units = "degC"; sfc_td:valid_range = -100.0, 100.0; sfc_spd:name = "SPD"; sfc_spd:long_name = "Surface wind speed"; sfc_spd:units = "m/s"; sfc_spd:valid_range = -150.0, 150.0; sfc_dir:name = "DIR"; sfc_dir:long_name = "Surface wind direction"; sfc_dir:units = "degrees"; sfc_dir:valid_range = 0.0, 360.0; sfc_rain:name = "RAIN"; sfc_rain:long_name = "Surface rain"; sfc_rain:units = "mm"; sfc_rain:valid_range = 0.0, 1000.0; // that's pretty generous! low_level:name = "LOW_H"; low_level:long_name = "Height above station for low mode"; low_level:units = "m"; low_level:valid_range = 0.0,9250.0; low_u_wind:name = "LOW_U"; low_u_wind:long_name = "U wind for low mode"; low_u_wind:units = "m/s"; low_v_wind:valid_range = -150.0, 150.0; low_v_wind:name = "LOW_V"; low_v_wind:long_name = "V wind for low mode"; low_v_wind:units = "m/s"; low_v_wind:valid_range = -150.0, 150.0; low_w_wind:name = "LOW_W"; low_w_wind:long_name = "W wind for low mode"; low_w_wind:units = "m/s"; low_w_wind:valid_range = -150.0, 150.0; low_moment0_n:name = "LOW_0_N"; low_moment0_n:long_name = "0th moment, low mode, north beam"; low_moment0_n:units = "dB"; low_moment0_e:name = "LOW_0_E"; low_moment0_e:long_name = "0th moment, low mode, east beam"; low_moment0_e:units = "dB"; low_moment0_v:name = "LOW_0_V"; low_moment0_v:long_name = "0th moment, low mode, vertical beam"; low_moment0_v:units = "dB"; low_moment2_n:name = "LOW_2_N"; low_moment2_n:long_name = "2nd moment, low mode, north beam"; low_moment2_n:units = "m2/s2"; low_moment2_e:name = "LOW_2_E"; low_moment2_e:long_name = "2nd moment, low mode, east beam"; low_moment2_e:units = "m2/s2"; low_moment2_v:name = "LOW_2_V"; low_moment2_v:long_name = "2nd moment, low mode, vertical beam"; low_moment2_v:units = "m2/s2"; low_qual_indicator:name = "LOW_QI"; low_qual_indicator:long_name = "Quality indicator, low mode"; low_qual_summary:name = "LOW_QS"; low_qual_summary:long_name = "Quality summary, low mode"; high_level:name = "HIGH_H"; high_level:long_name = "Height above station for high mode"; high_level:units = "m"; high_level:valid_range = 0.0,16250.0; high_u_wind:name = "HIGH_U"; high_u_wind:long_name = "U wind for high mode"; high_u_wind:units = "m/s"; high_v_wind:valid_range = -150.0, 150.0; high_v_wind:name = "HIGH_V"; high_v_wind:long_name = "V wind for high mode"; high_v_wind:units = "m/s"; high_v_wind:valid_range = -150.0, 150.0; high_w_wind:name = "HIGH_W"; high_w_wind:long_name = "W wind for high mode"; high_w_wind:units = "m/s"; high_w_wind:valid_range = -150.0, 150.0; high_moment0_n:name = "HIGH_0_N"; high_moment0_n:long_name = "0th moment, high mode, north beam"; high_moment0_n:units = "dB"; high_moment0_e:name = "HIGH_0_E"; high_moment0_e:long_name = "0th moment, high mode, east beam"; high_moment0_e:units = "dB"; high_moment0_v:name = "HIGH_0_V"; high_moment0_v:long_name = "0th moment, high mode, vertical beam"; high_moment0_v:units = "dB"; high_moment2_n:name = "HIGH_2_N"; high_moment2_n:long_name = "2nd moment, high mode, north beam"; high_moment2_n:units = "m2/s2"; high_moment2_e:name = "HIGH_2_E"; high_moment2_e:long_name = "2nd moment, high mode, east beam"; high_moment2_e:units = "m2/s2"; high_moment2_v:name = "HIGH_2_V"; high_moment2_v:long_name = "2nd moment, high mode, vertical beam"; high_moment2_v:units = "m2/s2"; high_qual_indicator:name = "HIGH_QI"; high_qual_indicator:long_name = "Quality indicator, high mode"; high_qual_summary:name = "HIGH_QS"; high_qual_summary:long_name = "Quality summary, high mode"; year:valid_min = 1985; // Prevent folks from entering 89, etc. month:valid_range = 1, 12; day:valid_range = 1,31; hour:valid_range = 0,23; minute:valid_range = 0,59; // Here are some radar parameters for the profilers (initialized below): // All parameters apply to every station, except low-mode transmitted power; // that might change from profiler to profiler and from time to time. float low_vgw; low_vgw:name = "LOW_VGW"; low_vgw:long_name = "Low mode vertical gate width"; low_vgw:units = "m"; float high_vgw; high_vgw:name = "HIGH_VGW"; high_vgw:long_name = "High mode vertical gate width"; high_vgw:units = "m"; float frequency; frequency:name = "FREQ"; frequency:long_name = "Frequency of radar"; frequency:units = "Hz"; float gain; gain:name = "GAIN"; gain:long_name = "Gain, decibels relative to isotropic"; gain:units = "dBi"; float equiv_noise; equiv_noise:name = "E_NOISE"; equiv_noise:long_name = "Equivalent noise temperature"; equiv_noise:units = "K"; float cosmic_noise; cosmic_noise:name = "C_NOISE"; cosmic_noise:long_name = "Cosmic background noise temperature"; cosmic_noise:units = "K"; float total_noise; total_noise:name = "TOTAL_NOISE"; total_noise:long_name = "Total noise temperature"; total_noise:units = "K"; float minus20_BW_low; minus20_BW_low:name = "BW_LOW"; minus20_BW_low:long_name = "-20 dB bandwidth, low mode"; minus20_BW_low:units = "kHz"; float minus20_BW_high; minus20_BW_high:name = "BW_HIGH"; minus20_BW_high:long_name = "-20 dB bandwidth, high mode"; minus20_BW_high:units = "kHz"; float ave_power_low(station); ave_power_low:name = "POWER_LOW"; ave_power_low:long_name = "Average transmitted power, low mode"; ave_power_low:units = "W"; float ave_power_high; ave_power_high:name = "POWER_HIGH"; ave_power_high:long_name = "Average transmitted power, high mode"; ave_power_high:units = "W"; // Global attributes: :missing_value = 1.0E38; :not_recorded = -1.0E38; // Now for some data statements to handle relatively static information: data: low_level = 500, 750, 1000, 1250, 1500, 1750, 2000, 2250, 2500, 2750, 3000, 3250, 3500, 3750, 4000, 4250, 4500, 4750, 5000, 5250, 5500, 5750, 6000, 6250, 6500, 6750, 7000, 7250, 7500, 7750, 8000, 8250, 8500, 8750, 9000, 9250; high_level = 7500, 7750, 8000, 8250, 8500, 8750, 9000, 9250, 9500, 9750,10000,10250,10500,10750,11000,11250,11500,11750, 12000,12250,12500,12750,13000,13250,13500,13750,14000, 14250,14500,14750,15000,15250,15500,15750,16000,16250; // Here are the radar parameters: low_vgw = 365.0; high_vgw = 1000.0; frequency = 404.37E6; gain = 32.0; equiv_noise = 150.0; cosmic_noise = 85.0; total_noise = 235.0; minus20_BW_low = 800.0; minus20_BW_high = 350.0; ave_power_high = 1500.0; // ave_power_low = variable, either 375.0 or 375.0/2.0; // The following lines would initialize the station-dependent arrays // for the profiler network; I don't have this information. // id = ... // lat = ... // lon = ... // elev = ... // azim_n = ... // azim_e = ... // azim_v = ... // elev_n = ... // elev_e = ... // elev_v = ... }