netcdf classic (CDF-1) {
dimensions:
	dim_unlim = UNLIMITED ; // (1 currently)
	dim_char04 = 5 ;
	dim_char20 = 21 ;
	dim_char40 = 41 ;
	dim_char64 = 65 ;
	xyz = 3 ;
	dim_lev1b = 1461 ;
	dim_lev2a = 1460 ;
	dim_009 = 762 ;
// global attributes:
		:title = "ROPP Radio Occultation data" ;
		:institution = "NOAA_STAR_ ESSIC/CISESS/UMD" ;
		:Conventions = "CF-1.0" ;
		:format_version = "ROPP I/O V1.1" ;
		:processing_centre = "NOAA_STAR_ ESSIC/CISESS/UMD" ;
		:processing_software = "UNKNOWN" ;
		:processing_date = "2025-08-17 15:40:04.758" ;
		:pod_method = "UNKNOWN" ;
		:phase_method = "UNKNOWN" ;
		:bangle_method = "FSI inversion (StatOpt)" ;
		:refrac_method = "Abel transform (LIN)" ;
		:meteo_method = "UNKNOWN" ;
		:thin_method = "NONE (Thinning disabled) [v3.1]" ;
		:software_version = "UNKNOWN" ;
		:_FillValue = -99999000.0 ;
variables:
	char occ_id(dim_unlim, dim_char40) ;
		occ_id:long_name = "Occultation ID" ;
	char gns_id(dim_unlim, dim_char04) ;
		gns_id:long_name = "GNSS satellite ID" ;
	char leo_id(dim_unlim, dim_char04) ;
		leo_id:long_name = "LEO satellite ID" ;
	char stn_id(dim_unlim, dim_char04) ;
		stn_id:long_name = "Ground station ID" ;
	double occfreq1(dim_unlim) ;
		occfreq1:long_name = "Band L1 frequency" ;
		occfreq1:units = "Hz" ;
	double occfreq2(dim_unlim) ;
		occfreq2:long_name = "Band L2 frequency" ;
		occfreq2:units = "Hz" ;
	double start_time(dim_unlim) ;
		start_time:long_name = "Starting time for the occultation" ;
		start_time:units = "seconds since 2000-01-01 00:00:00" ;
	int year(dim_unlim) ;
		year:long_name = "Year" ;
		year:units = "years" ;
		year:valid_range = 1995, 2099 ;
	int month(dim_unlim) ;
		month:long_name = "Month" ;
		month:units = "months" ;
		month:valid_range = 1, 12 ;
	int day(dim_unlim) ;
		day:long_name = "Day" ;
		day:units = "days" ;
		day:valid_range = 1, 31 ;
	int hour(dim_unlim) ;
		hour:long_name = "Hour" ;
		hour:units = "hours" ;
		hour:valid_range = 0, 23 ;
	int minute(dim_unlim) ;
		minute:long_name = "Minute" ;
		minute:units = "minutes" ;
		minute:valid_range = 0, 59 ;
	int second(dim_unlim) ;
		second:long_name = "Second" ;
		second:units = "seconds" ;
		second:valid_range = 0, 59 ;
	int msec(dim_unlim) ;
		msec:long_name = "Millisecond" ;
		msec:units = "milliseconds" ;
		msec:valid_range = 0, 999 ;
	int pcd(dim_unlim) ;
		pcd:long_name = "Product Confidence Data" ;
		pcd:units = "bits" ;
		pcd:valid_range = 0, 32767 ;
	float overall_qual(dim_unlim) ;
		overall_qual:long_name = "Overall quality" ;
		overall_qual:units = "percent" ;
		overall_qual:valid_range = 0.0, 100.0 ;
	double time(dim_unlim) ;
		time:long_name = "Reference time for the occultation" ;
		time:units = "seconds since 2000-01-01 00:00:00" ;
	float time_offset(dim_unlim) ;
		time_offset:long_name = "Time offset for georeferencing (since start of occ.)" ;
		time_offset:units = "seconds" ;
		time_offset:valid_range = -10.0, 239.999 ;
	float lat(dim_unlim) ;
		lat:long_name = "Reference latitude for the occultation" ;
		lat:units = "degrees_north" ;
		lat:valid_range = -90.0, 90.0 ;
	float lon(dim_unlim) ;
		lon:long_name = "Reference longitude for the occultation" ;
		lon:units = "degrees_east" ;
		lon:valid_range = -180.0, 180.0 ;
	float undulation(dim_unlim) ;
		undulation:long_name = "Geoid undulation for the reference coordinate" ;
		undulation:units = "metres" ;
		undulation:valid_range = -150.0, 150.0 ;
	double roc(dim_unlim) ;
		roc:long_name = "Radius of curvature for the reference coordinate" ;
		roc:units = "metres" ;
		roc:valid_range = 6200000.0, 6600000.0 ;
	float r_coc(dim_unlim, xyz) ;
		r_coc:long_name = "Centre of curvature for the reference coordinate" ;
		r_coc:units = "metres" ;
		r_coc:valid_range = -50000.0, 50000.0 ;
		r_coc:reference_frame = "ECF" ;
	float r_alt(dim_unlim) ;
		r_alt:long_name = "LEO satellite altitude" ;
		r_alt:units = "metres" ;
		r_alt:valid_range = -10000000.0, 10000000.0 ;
	float viewang(dim_unlim) ;
		viewang:long_name = "GNSS->LEO line of sight view angle" ;
		viewang:units = "degrees_T" ;
		viewang:valid_range = 0.0, 180.0 ;
	float azimuth(dim_unlim) ;
		azimuth:long_name = "GNSS->LEO line of sight angle (from True North) for the reference coordinate" ;
		azimuth:units = "degrees_T" ;
		azimuth:valid_range = 0.0, 360.0 ;
	float r_leo_ref(dim_unlim, xyz) ;
		r_leo_ref:long_name = "LEO position for the reference coordinate" ;
		r_leo_ref:units = "metres" ;
		r_leo_ref:valid_range = -10000000.0, 10000000.0 ;
		r_leo_ref:reference_frame = "ECF" ;
	float v_leo_ref(dim_unlim, xyz) ;
		v_leo_ref:long_name = "LEO velocity for the reference coordinate" ;
		v_leo_ref:units = "metres / seconds" ;
		v_leo_ref:valid_range = -10000.0, 10000.0 ;
		v_leo_ref:reference_frame = "ECI" ;
	float r_gns_ref(dim_unlim, xyz) ;
		r_gns_ref:long_name = "GNS position for the reference coordinate" ;
		r_gns_ref:units = "metres" ;
		r_gns_ref:valid_range = -43000000.0, 43000000.0 ;
		r_gns_ref:reference_frame = "ECF" ;
	float v_gns_ref(dim_unlim, xyz) ;
		v_gns_ref:long_name = "GNS velocity for the reference coordinate" ;
		v_gns_ref:units = "metres / seconds" ;
		v_gns_ref:valid_range = -10000.0, 10000.0 ;
		v_gns_ref:reference_frame = "ECI" ;
	double snr1avg(dim_unlim) ;
		snr1avg:long_name = "L1 average SNR from 60 to 80 km" ;
		snr1avg:units = "volt / volt" ;
		snr1avg:valid_range = 0.0, 100000.0 ;
	double snr2avg(dim_unlim) ;
		snr2avg:long_name = "L2 average SNR from 60 to 80 km" ;
		snr2avg:units = "volt / volt" ;
		snr2avg:valid_range = 0.0, 100000.0 ;
	int irs(dim_unlim) ;
		irs:long_name = "rising (-1) or setting (+1) occultation" ;
		irs:units = "1" ;
		irs:valid_range = -1, 1 ;
	double smean(dim_unlim) ;
		smean:long_name = "mean bangle difference between obs and background from 60 to 80 km" ;
		smean:units = "rad" ;
		smean:valid_range = -0.01, 0.01 ;
	double stdv(dim_unlim) ;
		stdv:long_name = "std bangle difference between obs and background from 60 to 80 km" ;
		stdv:units = "rad" ;
		stdv:valid_range = 0.0, 0.01 ;
	double reldevmax(dim_unlim) ;
		reldevmax:long_name = "Maximum relative difference between bending angle and climate model between 25 and 40 km" ;
		reldevmax:units = "%" ;
		reldevmax:valid_range = 0.0, 1.0 ;
	double reldevstd(dim_unlim) ;
		reldevstd:long_name = "Standard deviation of the relative difference between bending angle and climate model between 25 and 40 km" ;
		reldevstd:units = "%" ;
		reldevstd:valid_range = 0.0, 0.3 ;
	double reldevmax1(dim_unlim) ;
		reldevmax1:long_name = "Maximum relative difference between bending angle and climate model between 17 and 25 km" ;
		reldevmax1:units = "%" ;
		reldevmax1:valid_range = 0.0, 1.0 ;
	double reldevstd1(dim_unlim) ;
		reldevstd1:long_name = "Standard deviation of the relative difference between bending angle and climate model between 17 and 25 km" ;
		reldevstd1:units = "%" ;
		reldevstd1:valid_range = 0.0, 0.6 ;
	double difmaxref(dim_unlim) ;
		difmaxref:long_name = "Maximum relative difference between refractivity and climate model between 10 and 60 km" ;
		difmaxref:units = "%" ;
		difmaxref:valid_range = 0.0, 1.0 ;
	double maxdifphase(dim_unlim) ;
		maxdifphase:long_name = "Maximum absolute difference of L1 and L2 excess phase finite differences between 20 and 40 km" ;
		maxdifphase:units = "m/smple" ;
		maxdifphase:valid_range = 0.0, 0.3 ;
	int finalQA(dim_unlim) ;
		finalQA:long_name = "final quality flag based on the above indictors: 0 for good, 1 for bad" ;
		finalQA:units = "1" ;
		finalQA:valid_range = 0, 1 ;
	float lat_tp(dim_unlim, dim_lev1b) ;
		lat_tp:long_name = "Latitudes for tangent points" ;
		lat_tp:units = "degrees_north" ;
		lat_tp:valid_range = -90.0, 90.0 ;
	float lon_tp(dim_unlim, dim_lev1b) ;
		lon_tp:long_name = "Longitudes for tangent points" ;
		lon_tp:units = "degrees_east" ;
		lon_tp:valid_range = -180.0, 180.0 ;
	float azimuth_tp(dim_unlim, dim_lev1b) ;
		azimuth_tp:long_name = "GNSS->LEO line of sight angles (from True North) for tangent points" ;
		azimuth_tp:units = "degrees" ;
		azimuth_tp:valid_range = 0.0, 360.0 ;
	double impact_L1(dim_unlim, dim_lev1b) ;
		impact_L1:long_name = "Impact parameter (L1)" ;
		impact_L1:units = "metres" ;
		impact_L1:valid_range = 6200000.0, 6600000.0 ;
	double impact_L2(dim_unlim, dim_lev1b) ;
		impact_L2:long_name = "Impact parameter (L2)" ;
		impact_L2:units = "metres" ;
		impact_L2:valid_range = 6200000.0, 6600000.0 ;
	double impact(dim_unlim, dim_lev1b) ;
		impact:long_name = "Impact parameter (generic)" ;
		impact:units = "metres" ;
		impact:valid_range = 6200000.0, 6600000.0 ;
	double impact_opt(dim_unlim, dim_lev1b) ;
		impact_opt:long_name = "Impact parameter (optimised)" ;
		impact_opt:units = "metres" ;
		impact_opt:valid_range = 6200000.0, 6600000.0 ;
	double bangle_L1(dim_unlim, dim_lev1b) ;
		bangle_L1:long_name = "Bending angle (L1)" ;
		bangle_L1:units = "radians" ;
		bangle_L1:valid_range = -0.001, 0.1 ;
	double bangle_L2(dim_unlim, dim_lev1b) ;
		bangle_L2:long_name = "Bending angle (L2)" ;
		bangle_L2:units = "radians" ;
		bangle_L2:valid_range = -0.001, 0.1 ;
	double bangle(dim_unlim, dim_lev1b) ;
		bangle:long_name = "Bending angle (generic)" ;
		bangle:units = "radians" ;
		bangle:valid_range = -0.001, 0.1 ;
	double bangle_opt(dim_unlim, dim_lev1b) ;
		bangle_opt:long_name = "Bending angle (optimised)" ;
		bangle_opt:units = "radians" ;
		bangle_opt:valid_range = -0.001, 0.1 ;
	double bangle_L1_sigma(dim_unlim, dim_lev1b) ;
		bangle_L1_sigma:long_name = "Estimated error (1-sigma) for bending angles (L1)" ;
		bangle_L1_sigma:units = "radians" ;
		bangle_L1_sigma:valid_range = 0.0, 0.01 ;
	double bangle_L2_sigma(dim_unlim, dim_lev1b) ;
		bangle_L2_sigma:long_name = "Estimated error (1-sigma) for bending angles (L2)" ;
		bangle_L2_sigma:units = "radians" ;
		bangle_L2_sigma:valid_range = 0.0, 0.01 ;
	double bangle_sigma(dim_unlim, dim_lev1b) ;
		bangle_sigma:long_name = "Estimated error (1-sigma) for bending angles (generic)" ;
		bangle_sigma:units = "radians" ;
		bangle_sigma:valid_range = 0.0, 0.01 ;
	double bangle_opt_sigma(dim_unlim, dim_lev1b) ;
		bangle_opt_sigma:long_name = "Estimated error (1-sigma) for bending angles (optimised)" ;
		bangle_opt_sigma:units = "radians" ;
		bangle_opt_sigma:valid_range = 0.0, 0.01 ;
	float bangle_L1_qual(dim_unlim, dim_lev1b) ;
		bangle_L1_qual:long_name = "Bending angle quality value (L1)" ;
		bangle_L1_qual:units = "percent" ;
		bangle_L1_qual:valid_range = 0.0, 100.0 ;
	float bangle_L2_qual(dim_unlim, dim_lev1b) ;
		bangle_L2_qual:long_name = "Bending angle quality value (L2)" ;
		bangle_L2_qual:units = "percent" ;
		bangle_L2_qual:valid_range = 0.0, 100.0 ;
	float bangle_qual(dim_unlim, dim_lev1b) ;
		bangle_qual:long_name = "Bending angle quality value (generic)" ;
		bangle_qual:units = "percent" ;
		bangle_qual:valid_range = 0.0, 100.0 ;
	float bangle_opt_qual(dim_unlim, dim_lev1b) ;
		bangle_opt_qual:long_name = "Bending angle quality value (optimised)" ;
		bangle_opt_qual:units = "percent" ;
		bangle_opt_qual:valid_range = 0.0, 100.0 ;
	float alt_refrac(dim_unlim, dim_lev2a) ;
		alt_refrac:long_name = "Geometric height above geoid for refractivity" ;
		alt_refrac:units = "metres" ;
		alt_refrac:valid_range = -1000.0, 150000.0 ;
	float geop_refrac(dim_unlim, dim_lev2a) ;
		geop_refrac:long_name = "Geopotential height above geoid for refractivity" ;
		geop_refrac:units = "geopotential metres" ;
		geop_refrac:valid_range = -1000.0, 150000.0 ;
	double refrac(dim_unlim, dim_lev2a) ;
		refrac:long_name = "Refractivity" ;
		refrac:units = "N-units" ;
		refrac:valid_range = 0.0, 500.0 ;
	double refrac_sigma(dim_unlim, dim_lev2a) ;
		refrac_sigma:long_name = "Estimated error (1-sigma) for refractivity" ;
		refrac_sigma:units = "N-units" ;
		refrac_sigma:valid_range = 0.0, 50.0 ;
	float refrac_qual(dim_unlim, dim_lev2a) ;
		refrac_qual:long_name = "Quality value for refractivity" ;
		refrac_qual:units = "percent" ;
		refrac_qual:valid_range = 0.0, 100.0 ;
	double dry_temp(dim_unlim, dim_lev2a) ;
		dry_temp:long_name = "Dry temperature" ;
		dry_temp:units = "kelvin" ;
		dry_temp:valid_range = 150.0, 350.0 ;
	double dry_temp_sigma(dim_unlim, dim_lev2a) ;
		dry_temp_sigma:long_name = "Estimated error (1-sigma) for dry temperature" ;
		dry_temp_sigma:units = "kelvin" ;
		dry_temp_sigma:valid_range = 0.0, 50.0 ;
	float dry_temp_qual(dim_unlim, dim_lev2a) ;
		dry_temp_qual:long_name = "Quality value for dry temperature" ;
		dry_temp_qual:units = "percent" ;
		dry_temp_qual:valid_range = 0.0, 100.0 ;
	float L2_badness_score(dim_unlim) ;
		L2_badness_score:long_name = "L2 correction badness score" ;
		L2_badness_score:units = "1" ;
		L2_badness_score:valid_range = 0.0, 1000.0 ;
	float SO_badness_score(dim_unlim) ;
		SO_badness_score:long_name = "Statistical optimisation badness score" ;
		SO_badness_score:units = "1" ;
		SO_badness_score:valid_range = 0.0, 1000.0 ;
	float Badness_score(dim_unlim) ;
		Badness_score:long_name = "L2 + SO badness score" ;
		Badness_score:units = "1" ;
		Badness_score:valid_range = 0.0, 1000.0 ;
	float IC_ion_bangle(dim_unlim, dim_009) ;
		IC_ion_bangle:long_name = "Ionospheric bending angle" ;
		IC_ion_bangle:units = "radians" ;
		IC_ion_bangle:valid_range = -0.001, 0.1 ;
	float IC_cov_bangle_ion(dim_unlim, dim_009) ;
		IC_cov_bangle_ion:long_name = "Ionospheric bending angle error covariance" ;
		IC_cov_bangle_ion:units = "radians" ;
		IC_cov_bangle_ion:valid_range = -0.001, 0.1 ;
	float IC_cov_bangle_neut(dim_unlim, dim_009) ;
		IC_cov_bangle_neut:long_name = "LC bending angle error covariance" ;
		IC_cov_bangle_neut:units = "radians" ;
		IC_cov_bangle_neut:valid_range = -0.001, 0.1 ;
	float LC_weight(dim_unlim, dim_009) ;
		LC_weight:long_name = "SO-weight of observed LC bending angle" ;
		LC_weight:units = "1" ;
		LC_weight:valid_range = 0.0, 1.0 ;
	float LC_model_bangle(dim_unlim, dim_009) ;
		LC_model_bangle:long_name = "SO background model bending angle" ;
		LC_model_bangle:units = "radians" ;
		LC_model_bangle:valid_range = -0.001, 0.1 ;
}