;;;--------------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PRO WRITE_HDF_OUT, input_data, outputfile ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; WRITE HDF OUTPUT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;- Open the output HDF file hdfid = hdf_sd_start(outfile, /create) ;- Write out the Pressure Level information plevs = [0.0050,0.0161,0.0384,0.0769,0.1370,0.2244, $ 0.3454,0.5064,0.7140,0.9753,1.2972,1.6872,2.1526, $ 2.7009,3.3398,4.0770,4.9204,5.8776,6.9567,8.1655, $ 9.5119,11.0038,12.6492,14.4559,16.4318,18.5847, $ 20.9224,23.4526,26.1829,29.1210,32.2744,35.6505, $ 39.2566,43.1001,47.1882,51.5278,56.1260,60.9895, $ 66.1253,71.5398,77.2396,83.2310,89.5204,96.1138, $ 103.0172,110.2366,117.7775,125.6456,133.8462, $ 142.3848,151.2664,160.4959,170.0784,180.0183, $ 190.3203,200.9887,212.0277,223.4415,235.2338, $ 247.4085,259.9691,272.9191,286.2617,300.0000, $ 314.1369,328.6753,343.6176,358.9665,374.7241, $ 390.8926,407.4738,424.4698,441.8819,459.7118, $ 477.9607,496.6298,515.7200,535.2322,555.1669, $ 575.5248,596.3062,617.5112,639.1398,661.1920, $ 683.6673,706.5654,729.8857,753.6275,777.7897, $ 802.3714,827.3713,852.7880,878.6201,904.8659, $ 931.5236,958.5911,986.0666,1013.9476,1042.2319, $ 1070.9170,1100.0000] varid = hdf_sd_create(hdfid, 'Pressure_Levels', size(plevs, /dimensions), /float) hdf_sd_adddata, varid, plevs hdf_sd_attrset, varid, 'units', 'hPa' dim_id=hdf_sd_dimgetid(varid,0) hdf_sd_dimset, dim_id, NAME='Pressure_Levels' hdf_sd_endaccess, varid ;- Write the latitude varid = hdf_sd_create(hdfid, 'Latitude', size(lat, /dimensions), /float) hdf_sd_adddata, varid, lat hdf_sd_attrset, varid, 'units', 'Degrees' dim_id=hdf_sd_dimgetid(varid,0) hdf_sd_dimset, dim_id, NAME='Cross_Track_X' dim_id=hdf_sd_dimgetid(varid,1) hdf_sd_dimset, dim_id, NAME='Along_Track_Y' hdf_sd_endaccess, varid ;- Write the longitude varid = hdf_sd_create(hdfid, 'Longitude', size(lon, /dimensions), /float) hdf_sd_adddata, varid, lon hdf_sd_attrset, varid, 'units', 'Degrees' dim_id=hdf_sd_dimgetid(varid,0) hdf_sd_dimset, dim_id, NAME='Cross_Track_X' dim_id=hdf_sd_dimgetid(varid,1) hdf_sd_dimset, dim_id, NAME='Along_Track_Y' hdf_sd_endaccess, varid ;- Write the Surface Skin Temperature varid = hdf_sd_create(hdfid, 'TSurfStd', size(sfct, /dimensions), /float) hdf_sd_adddata, varid, sfct hdf_sd_attrset, varid, 'units', 'Kelvin' dim_id=hdf_sd_dimgetid(varid,0) hdf_sd_dimset, dim_id, NAME='Cross_Track_X' dim_id=hdf_sd_dimgetid(varid,1) hdf_sd_dimset, dim_id, NAME='Along_Track_Y' hdf_sd_endaccess, varid ;- Write the 101 Vertical Retrievals of Temperature varid = hdf_sd_create(hdfid, 'TAirStd', size(tprof, /dimensions), /float) hdf_sd_adddata, varid, tprof dim_id=hdf_sd_dimgetid(varid,0) hdf_sd_attrset, varid, 'units', 'Kelvin' hdf_sd_dimset, dim_id, NAME='Pressure_Levels' dim_id=hdf_sd_dimgetid(varid,1) hdf_sd_dimset, dim_id, NAME='Cross_Track_X' dim_id=hdf_sd_dimgetid(varid,2) hdf_sd_dimset, dim_id, NAME='Along_Track_Y' hdf_sd_endaccess, varid ;- Write the Total Precipitable Water Vapor Array varid = hdf_sd_create(hdfid, 'totH2Ostd', size(tpw, /dimensions), /float) hdf_sd_adddata, varid, tpw hdf_sd_attrset, varid, 'units', 'cm' dim_id=hdf_sd_dimgetid(varid,0) hdf_sd_dimset, dim_id, NAME='Cross_Track_X' dim_id=hdf_sd_dimgetid(varid,1) hdf_sd_dimset, dim_id, NAME='Along_Track_Y' hdf_sd_endaccess, varid ;- Write the 101 Vertical Retrievals of Mixing Ratio varid = hdf_sd_create(hdfid, 'H2OMMRStd', size(wprof, /dimensions), /float) hdf_sd_adddata, varid, wprof hdf_sd_attrset, varid, 'units', 'g/kg' dim_id=hdf_sd_dimgetid(varid,0) hdf_sd_dimset, dim_id, NAME='Pressure_Levels' dim_id=hdf_sd_dimgetid(varid,1) hdf_sd_dimset, dim_id, NAME='Cross_Track_X' dim_id=hdf_sd_dimgetid(varid,2) hdf_sd_dimset, dim_id, NAME='Along_Track_Y' hdf_sd_endaccess, varid ;- Write the Total Ozone Array varid = hdf_sd_create(hdfid, 'totO3std', size(toto, /dimensions), /float) hdf_sd_adddata, varid, toto hdf_sd_attrset, varid, 'units', 'Dobson' dim_id=hdf_sd_dimgetid(varid,0) hdf_sd_dimset, dim_id, NAME='Cross_Track_X' dim_id=hdf_sd_dimgetid(varid,1) hdf_sd_dimset, dim_id, NAME='Along_Track_Y' hdf_sd_endaccess, varid ;- Write the 101 Vertical Retrievals of Ozone (ppmv) varid = hdf_sd_create(hdfid, 'O3VMRStd', size(ozone, /dimensions), /float) hdf_sd_adddata, varid, ozone hdf_sd_attrset, varid, 'units', 'ppmv' dim_id=hdf_sd_dimgetid(varid,0) hdf_sd_dimset, dim_id, NAME='Pressure_Levels' dim_id=hdf_sd_dimgetid(varid,1) hdf_sd_dimset, dim_id, NAME='Cross_Track_X' dim_id=hdf_sd_dimgetid(varid,2) hdf_sd_dimset, dim_id, NAME='Along_Track_Y' hdf_sd_endaccess, varid ;- Write the emissivity for the full AIRS spectrum varid = hdf_sd_create(hdfid, 'emisIRStd', size(emiss, /dimensions), /float) hdf_sd_adddata, varid, emiss hdf_sd_attrset, varid, 'units', 'None' dim_id=hdf_sd_dimgetid(varid,0) hdf_sd_dimset, dim_id, NAME='Surface_Emissivity_Wavelengths' dim_id=hdf_sd_dimgetid(varid,1) hdf_sd_dimset, dim_id, NAME='Cross_Track_X' dim_id=hdf_sd_dimgetid(varid,2) hdf_sd_dimset, dim_id, NAME='Along_Track_Y' hdf_sd_endaccess, varid ;- Write the Cloud Top Pressure Array varid = hdf_sd_create(hdfid, 'Cloud_Top_Pressure', size(ctp, /dimensions), /float) hdf_sd_adddata, varid, ctp hdf_sd_attrset, varid, 'units', 'mb' dim_id=hdf_sd_dimgetid(varid,0) hdf_sd_dimset, dim_id, NAME='Cross_Track_X' dim_id=hdf_sd_dimgetid(varid,1) hdf_sd_dimset, dim_id, NAME='Along_Track_Y' hdf_sd_endaccess, varid ;- Write the Quality Flag Array varid = hdf_sd_create(hdfid, 'Quality_Flag', size(qf, /dimensions), /float) hdf_sd_adddata, varid, qf hdf_sd_attrset, varid, 'units', 'none' dim_id=hdf_sd_dimgetid(varid,0) hdf_sd_dimset, dim_id, NAME='Cross_Track_X' dim_id=hdf_sd_dimgetid(varid,1) hdf_sd_dimset, dim_id, NAME='Along_Track_Y' hdf_sd_endaccess, varid ;- Write out the Quality Values and Meanings quality_flags = '0=Clear, 1=thin clouds (cot < 0.5), 2=medium clouds (0.5 < cot < 1), 3=thick clouds (1 < cot < 1.5), 4=opaque clouds (cot > 1.5), 5=bad cloudy retrieval results'' hdf_sd_attrset, hdfid, 'Quality Flag Values', quality_flags ;- Create the global attributes ;- Retrieval Levels ret_levels = '1:0.0050, 2:0.0161, 3:0.0384, 4:0.0769, 5:0.1370, 6:0.2244, 7:0.3454, 8:0.5064, 9:0.7140, 10:0.9753, 11:1.2972, 12:1.6872, 13:2.1526, 14:2.7009, 15:3.3398, 16:4.0770, 17:4.9204, 18:5.8776, 19:6.9567, 20:8.1655, 21:9.5119, 22:11.0038, 23:12.6492, 24:14.4559, 25:16.4318, 26:18.5847, 27:20.9224, 28:23.4526, 29:26.1829, 30:29.1210, 31:32.2744, 32:35.6505, 33:39.2566, 34:43.1001, 35:47.1882, 36:51.5278, 37:56.1260, 38:60.9895, 39:66.1253, 40:71.5398, 41:77.2396, 42:83.2310, 43:89.5204, 44:96.1138, 45:103.0172, 46:110.2366, 47:117.7775, 48:125.6456, 49:133.8462, 50:142.3848, 51:151.2664, 52:160.4959, 53:170.0784, 54:180.0183, 55:190.3203, 56:200.9887, 57:212.0277, 58:223.4415, 59:235.2338, 60:247.4085, 61:259.9691, 62:272.9191, 63:286.2617, 64:300.0000, 65:314.1369, 66:328.6753, 67:343.6176, 68:358.9665, 69:374.7241, 70:390.8926, 71:407.4738, 72:424.4698, 73:441.8819, 74:459.7118, 75:477.9607, 76:496.6298, 77:515.7200, 78:535.2322, 79:555.1669, 80:575.5248, 81:596.3062, 82:617.5112, 83:639.1398, 84:661.1920, 85:683.6673, 86:706.5654, 87:729.8857, 88:753.6275, 89:777.7897, 90:802.3714, 91:827.3713, 92:852.7880, 93:878.6201, 94:904.8659, 95:931.5236, 96:958.5911, 97:986.0666, 98:1013.9476, 99:1042.2319, 100:1070.9170, 101:1100.0000' hdf_sd_attrset, hdfid, 'Vertical Retrieval Levels', ret_levels ;- Close the output HDF file hdf_sd_end, hdfid END ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;------------------------------------------------------------