! ! Constants used in BANDPAK retrieval algorithm. ! const: TRUE = 1; const: FALSE = 0; const: mcf = 17; const: mem = 26; const: mgs = 5; const: mgg = 20; const: mg1 = 1; const: mgs2 = mgs * mgs; const: mps = 50; const: mms = 300; const: mbb = 500; const: mt = 2; 1; const: mdet = 1; const: ml = 900; const: mr = 900; const: it1 = ml * ml + ml; const: it2 = ml * ml; const: npt = 3 + ml*(23 + 15*ml); const: ntt = 4 + 9*it1 + it2; const: nst = 4 + ml + 26*it1 + 4*it2; !const: nwk = mt + 13*ml + 7*ml*mt + mgs*(9 + 2*mgs + 5*mt + 12*ml + 2*mgs*ml); const: mxchannels = 27; const: mchn = 1; const: mbands = 17; const: mdaysab=366; const: maltsab=96; ! ! Datasets of type CHAR ! char: dateloc :40; char: nam :8,mgg; char: atmos :8; char: outfile :80; !char: infile :80; Filename for input radiance data char: inatmos :80; Filename of input atmopheric data char: outbase :80 ; Name of output file char:sigfile :80; char: waccm_dir: 80; Directory containing waccm data char: filene :80,mgs,mdet,mbands ; char: fileno :80,mg1,mdet,mbands; overlap table filenames char: saberO_NH_file:96='/users/gats/cluster/sofie/Level2/Trunk/Configured/Data/SABER_O_NH_polar_clim_smooth.txt'; char: saberO_SH_file:96='/users/gats/cluster/sofie/Level2/Trunk/Configured/Data/SABER_O_SH_polar_clim_smooth.txt'; int: point65 = FALSE; ! Set to true if Level 1 has pointing correction above 65 km. int: forward_flag = FALSE; int: net : mbands; ! number of emissivity tables per band int: not : mbands ; ! number of overlap tables per band int: idg_b : mgs,mbands ; int: irad_b : mgs,mbands ; int: icor_b : mgs,mbands ; ! ! datasets of type string const: tlen=96; string: eventlist: tlen; string: signal_file: tlen ; string: xmlfile:tlen ; !contains infomation for database string: fovdatafile: tlen ; string: l1_ver: tlen ; !the version of the Level 1 data in the database string: l2_ver: tlen ; !string: waccm_dir : tlen ; string: control_file :tlen; ! the control file for the current channel string: controlfiles: tlen, mxchannels; ! A listing of the S3 control file for the !different channels in the order to be processed ! ! Datasets of type INT ! int: aero_refband ={9} ; !CHannel ID of the aerosol channel to extrapolate into other channels. int: use_waccm = TRUE; ! Use the WACCM CO2 model as in SABER. int: use_msis = TRUE; !Use MSIS data for O, O2 and N2 int: use_saber = TRUE; !Use SABER data for O int: O_x2 = FALSE; !If TRUE then multiply O by 2 to Test impact int: istart_event, iend_event, ievent_no; !Starting event number ending event number and loop index int: no_data; int: skipit; int: numchan_sav; int: jchan, numchannel; !Number of retrievals and a loop index int: pmcflag = FALSE; !IF PMC's were found in this event retrieval. int: fovflag=FALSE; !convolve FOV function with the Atmosphere and SOlar disk int: poorman=TRUE; !Perform poorman deconvolution if fovflag is FALSE int: ioffset = FALSE; int: iorbit; !orbit number int: dump_ncep_to_db = FALSE; !Dump NCEP data to database int: abel_ret_flag = FALSE; !Flag that indicates abel channel int: tran_opt = 1 ; ! 1 is bandpak, 0 is Linepak int: ipt_retrieval = FALSE; int: ifov_loop = 1; int: first_call = TRUE; int: iray; int: num_iterations; int: isl, iel; int: lfilt = 53; int: lhvy = 54; int: converged; int: num_fov_loops = 1; int: i_abel; int: i_abel2; int: ichn; int: llll; ! A dummy true false variable returned from f_dse int: oneleave = FALSE ; int: ileave = {1}; int: nleave = {1}; int: iplat = {0}; int: nrays=1 ; Number of rays matched per retrieved level int: ihydro = FALSE ; ! Set if you need to do hydrostatics before retrieval int: hydro_flag; int: cycle = 1; int: lsaberO = {30} ; Unit # for input SABER o data int: latmos = {33} ; Unit # for input atmosphere file int: iunit = {34} ; int: lcon = {35} ; Unit # for control file int: linput = {37} ; Unit # for input radiance file int: loutput = {38} ; Unit # for output file int: maxit = {99} ; Maximum number of iterations int: bottom_up = FALSE; int: isc = {1}; int: irfn = TRUE ; ! use refraction int: iscale_relax = FALSE; ! ! Datasets of type REAL ! real: zmin; !Lowest altitude that was retrieved real: zmax; !highest altitude that was retrieved real: zoffsun= {0.0} ; !Apparent altitude where FOV is within 2 Arc minutes of bottom edge of Sun real: xlat,xlong; !Tangent point latitude and longitude(E) (degrees) real: zreg = {30.0} ; Altitude of the reference P(T) used for hydrostatics. real: re_dum, xlat_dum; !Values read from climatology file Not used real: re; !Earth radius (km) real: albedo = 0.0; !surface albedo real: tearth = 0.0; !temperature of Earth's surface real: saberO_NH:maltsab,mdaysab; real: saberO_SH:maltsab,mdaysab; real: saberO_alt:maltsab; int: naltsab; int: ndaysab; ! Bandpak arrays ! int: ndet=1; number of detectors (leave at 1) int: nch; !Number of blockers. int: iblk : mt; !array of blocker filter ids int: ietl : mt ={mt*0}; !secondary id (for CLAES this is etalon position id) int: itab :ml = {ml*1} ; Table subset for each ray real: tout :ntt; real: pout :npt; !real: tbl :ntb,mdet,mt; real: sout :nst,mgs; real: rut :ml,mgs,mt; real: rlt :ml,mgs,mt; real: bsr :ml,mgs,1; dreal: esr :ml,mgs,1; dreal: rmr :ml,mgs,1; dreal: emr :ml,mgs,1; dreal: rsr :ml,mgs,1; ! The working profile for the current interleave and channel ! int: idiff_ext = FALSE; int: extrap_flag = TRUE; !Extrapolate from reference aerosol into this qmix array real: wave = {2000.0}; !wavenumber to use for refraction calculations. int: ng; ! number of gases in QMIX int: idg : mgs; ! The Ids of these gases; int: nl; int: nsr = {1}; Starting ray number int: ner ; Ending ray number int: nreg ; The element index of zt,pt,tt that is the refrence point used in hydrostatics. real: za :ml; real: zt :ml; real: pt :ml; real: tt :ml; real: gt :2,ml; real: qmix :ml,mgs; real: qg :2,ml,mgs; real: NO_den :ml; real: NO_evar :ml; int: nchn; !The number of channels that will be simulated. int: ichando :mchn ; !The IDs for the channels that will be simulated. dreal: meas_signals: ml, mchn; ! The measured signals for these channels dreal: sim_signals: ml, mchn; !The simulated signals for these channels real: aner :mchn, mdet ; ! Noise Equivalence Transmission per channel and detector real: vary :ml,mdet,mchn; ! measurement variance aner^2 per detector and channel real: meas_ref_angle: ml; real: sim_ref_angle: ml; real: merged_ref_angle: ml; real: bendfit: ml; real: scale_ht: ml; real: refractivity: ml; real: density: ml; real: p_init; real: t_init; real: z_abel; Altitude of top most point that uses measured refraction in Abel retrieval... real: z_abelout; Altitude of point that uses 50/50 mix of measured/modeled refraction in Abel retrieval... real: window_top=0.3; Top of the bending angle merge window (arcseconds) real: window_bottom=3.0; Bottom of the bending angle merge window (arcseconds) !The following are still used with the current working profile though they are retrieval specific. ! whats important to note is the arrays that are dimensioned by mgs do necessarily contain !the gas IDs listed in the idg array. For these arrays each of the mgs dimensions is for a particular ! retrieved product. int: ngdo; !Number of retrieval products (e.g., H2O VMR, Temperature, CO2) int: igdo :mgs; !The IDs of the retrieved products to retrieve. Ids for VMRs must match one ! listed in the idg array.. Temperature is indicated by a value < 0 ( e.g., -1) ! Another important point is that if temperature is listed along with 1 or more gases/extinctions ! temperature must be the last ID in this array. int: db_id: mgs ; !Database ids for retrieved products int: db_id_err: mgs; !Database ids for precision of retrieved products int: db_id_NO = 114; !Database id for NO_den int: db_id_NO_err = 214; !Database id for NO_den precision real: zstart :mgs,mchn; !This array indicates the highest altitude to consider a specific channel used for ! a specific retrieval parameter. real: zend :mgs,mchn; !same as above except it is the lowest altitude int: ievent :ml,mgs,mchn; ! A logical that tells the retrieval when to use certain channels for certain gases. real: top_dz: mgs; !Tells how many km below the top retrieved point to begin to merge in climatology (used only !to put retrievals into the zr,pr,tr, q arrays). real: bot_dz: mgs; !Tells how many km above the last retrieved point to begin to merge in climatology (again used ! only to put retrievals in the climatology zr,pr,tr, q arrays). int: iscale_top: mgs = {mgs* FALSE} ; int: iscale_bottom: mgs = {mgs* FALSE}; real: evar :ml,mgs; !Solution variance for each retrieved product. real: tst :mgs = {mgs* 1.0} ; Convergence Criteria for retrieved product (factor times solution std. dev.) ! Meshed profile where individual interleaves are stuck together These are the profiles that are ! written out (contains no climatology above or below) int: nl_hires; real: z_hires :ml; !A hi res grid for every product real: qmix_hires :ml,mgs; real: t_hires :ml; real: p_hires :ml; int: iptie_hires ; ! index of _hires arrays that is the refrence pt for hydrostatics. real: evar_hires : ml, mgs; !The meshed solution variance for the retrieval of each product. real: band02_extinc: ml; real: band08_extinc: ml; real: band09_extinc : ml; real: band10_extinc: ml; real: pmc_zmax; real: pmc_ztop; real: pmc_zbot; int: nl_hi; ! number of levels in za_hi the spacing from level 1 real: za_hi: ml; dreal: meas_signals_hi: ml, mchn; dreal: sim_signals_hi: ml, mchn; dreal: ref_indx: ml; ! The mgs dimension is related to the product that was retrieved not the gas ID real: ztop :mgs; ! Highest altitude to write out to database for each product real: zbot: mgs; ! Lowest altitiude to write out to database for each product real: stdz :mgs = {mgs*0.0} ; standard deviation for gaussian smooth real: zmx :mgs = {mgs*0.0} ; alttiude cutoff (km) for smooth function ! Apriori profile !int: napr; real: zapr :ml; real: tapr :ml; real: papr :ml; real: qapr :ml, mgs; real: qgapr :2,ml, mgs; real: gr_apr :2, ml ; real: vapr :ml,ml,mgs; !A priori variance for VMRs and extinctions real: vaprt :ml,ml; !A priori variance for temperature real: tfrac = {100.0} ; !A priori variance in temperature is (tapr* tfrac)^2 real: qfrac :mgs = {mgs*1000000000.0}; !A priori variance for the vmrs is (qapr*qfrac)^2 !initial Z,P,T profile used as the starting point Gases are the same as in igs (below) int : ntm; real: ztm :mr; real: ttm :mr; real: ptm :mr; real: qm :mr,mgg; real: qgm :2,mr,mgg; real: grm :2,mr; real: zoff = 0.0; !this is an offset (km) that is applied Each ZTM ! this is mix lib. Retrievals are merged into this profile and used in subsequent channels int: ngg; !Number of gases in the igs and q arrays int: igs : mgg; !Gas ids of the gases in q int: nr; real: zr :mr; real: pr :mr; real: gr :2,mr; real: tr :mr; real: q :mr,mgg; real: qgg :2,mr,mgg; real: z_sig_hi = 130.0; ! Altitude of highest signals real: rse_mean = 1.496e8; The mean Earth Sun distance (km) real: rse = 1.496e8; The Earth Sun distance for the current event (km) ! Datasets of type DOUBLE !These go with the working set ! dreal: exolock; !FOV position on the sun when exo-atmospheric (radians) dreal: simexo: mt; dreal: fov_offsets: mt = {mt* 0.0}; !The FOV offsets relative to band 3 for the current bands (radians) dreal: tran : ml, mt; dreal: conv_tran:ml, mt; dreal: lock : ml; dreal: appang : ml; dreal: trueang: ml; dreal: refracang: ml; ! FOV Offsets relative to Band 3 (arcmin) dreal: InputOffsets: 2,mbands; !Non Linearity Coeffients (Marks Values) dreal: NonLinCoeff: mbands; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! From Tom THe Non-LTE stuff !CONST: tm_mgg = 40; Maximum number of gases in input atmosphere !CONST: tm_mr = 301; Maximum number of levels in input atmosphere CONST: tm_ml = 130; 112; !92; ! 75; Maximum number of layers to model CONST: tm_mdet = 1; Maximum number of detectors CONST: tm_mgs = 5; Maximum number of gases to model CONST: tm_mgb = 18;! 33; Maximum number of gases to model CONST: tm_mg1 = 1; Maximum number of molecular overlap tables CONST: tm_mgt = tm_mgs+tm_mg1; Total number of tables CONST: tm_mt = 1; 2; Maximum number of blockers const: tm_mcf = 18; Maximum number of emissivity coefficients const: tm_mem = 25; Maximum number of overlap coefficients const: tm_mbb = 1100; Maximum number of Planck values in tables const: tm_mps = 52; Maximum number of pressures in tables const: tm_mms = 360; Maximum number of mass-paths const: tm_mcftv = 21; Maximum number of emissivity coefficients Tv mod const: tm_mpstv = 60; Maximum number of pressures in tables const: tm_mmstv = 300; Maximum number of mass-paths CONST: tm_mgb_mt = tm_mt*tm_mgb; CONST: tm_mgbm2 = tm_mgb - 2; !CONST: tm_nst = nst * mgs *mt / (tm_mgb*tm_mt) - 1; CONST: tm_it1 = tm_ml*tm_ml+tm_ml; Maximum number of path segments CONST: tm_it2 = tm_ml*tm_ml; Maximum number of segment edges !CONST: tm_npt = 3+12*tm_it1+5*tm_it2+11*tm_ml; Maximum pout size CONST: tm_npt = 3+ tm_ml*(23+15*tm_ml); CONST: tm_ntt = 4+9*tm_it1+tm_it2; Maximum tout size !CONST: tm_nst = 4+tm_ml+25*tm_it1+4*tm_it2; Maximum sout size CONST: tm_nst = 4+tm_ml+26*tm_it1+4*tm_it2; const: tm_msspc = 49936 ; Maximum size of spectral solar irradiance array CONST: tm_co2_states = 42; Number of CO2 states CONST: tm_mg3 = 6; Number of CO2 transition in G3-state manifold const: tm_ntb = 28+13*tm_mgb+17*tm_mg1+2*(tm_mps+tm_mbb)+tm_mgb*(7+3*tm_mps+tm_mms+2*tm_mcf*tm_mps*tm_mms+tm_mbb)+tm_mg1*(9+7*tm_mps+2*tm_mcf*tm_mps*tm_mem*tm_mem); Maximum tbl size const: tm_ntbtv = 28+13*tm_co2_states+2*(tm_mpstv+tm_mbb)+tm_co2_states*(7+3*tm_mpstv+tm_mmstv+2*tm_mcftv*tm_mpstv*tm_mmstv+tm_mbb); Maximum tbltv size const: tm_ntv = 2*tm_ml+tm_ml*(14+tm_ml+2*tm_mg3)+tm_mgs*(tm_ml+3*tm_ml)+tm_co2_states*(5+4*tm_ml)+tm_ml*tm_co2_states*(36+6*tm_ml); Co2 15-um Tv model work space array size const: tm_ntvmds= 24+tm_ml+3*tm_ml+tm_co2_states*(11+10*tm_ml+10*tm_ml)+tm_ntv+tm_npt+tm_msspc+tm_ntt+tm_ntbtv+tm_nst*tm_co2_states+tm_mg3*(4+2*tm_ml+2*tm_ml); Work space array size for all Tv models !; Definition of the variables used by MEGA !; !; !; Datasets of type CHAR !; CHAR: tm_atmos: 8; Atmosphere descriptor !CHAR: tm_atmfile: 80; CHAR: tm_atmpath: 64; !CHAR: tm_nam : 8,tm_mgg; Names of gases in input atmosphere CHAR: tm_name : 8,tm_mgs; Names of gases to be modeled char: tm_nametv : 8,tm_co2_states; Names of gases to be modeled (tv mod) char: tm_namenlte : 8,tm_mgb; Names of gases to be modeled (tv mod) CHAR: tm_control: 80; CHAR: tm_control_ch1:80 = {"./control/con_co2nlte.dat"}; CHAR: tm_control_ch2:80 = {"./control/con_co2vmr.dat"}; CHAR: tm_controltv: 80 = {"./control/con_co2tvib.dat"}; char: tm_cmfile: 80; Tabulated Curtis matrix file char: tm_shfile: 80; Tabulated solar absorption file CHAR: tm_vsedfile: 80 = {"./databases/vsed_96.coef"}; CHAR: tm_sspcfile: 80 = {"./databases/Solar_spectrum.dat"}; !CHAR: tm_outfile: 80; Filename of output data !CHAR: tm_outfile2: 80; Filename of output data CHAR: tm_filene: 98,tm_mgb,tm_mt; Filenames of single gas emissivity data CHAR: tm_fileno: 98,tm_mg1,tm_mt; Filenames of overlap emissivity data CHAR: tm_filenetv: 98,tm_co2_states; Filenames of single gas emissivity data CHAR: tm_filenotv: 98,tm_mg1; Filenames of overlap emissivity data CHAR: tm_vibstat : 4; CHAR: tm_vibtran : 80,tm_mgb,tm_mt; CHAR: tm_vibsts : 8,2,tm_mgb,tm_mt; char: tm_vibtrantv : 80,tm_co2_states; Tv model vibrational transitions char: tm_vstscm : 8,2,tm_co2_states; Model Upper/Lower vibrational states char: tm_vstscm_g3 : 8,2,tm_mg3; Model Upper/Lower vibrational states !; !; Datasets of type REAL !; !REAL: tm_anoise: tm_mt = {tm_mt*2.5e-5};Standard deviation of measurement random noise REAL: tm_zstr = 140.0; Upper altitude for Tvib model REAL: tm_zend = 40.0; Lower altitude for Tvib model REAL: tm_zinctv = 2.0; Altitude increment for Tvib model !REAL: tm_za :tm_ml; Requested model layer lower edges !REAL: tm_zr :tm_mr; Altitudes in input atmosphere !REAL: tm_pr :tm_mr; Pressures in input atmosphere !REAL: tm_tr :tm_mr; Temperatures in input atmosphere !REAL: tm_tgr :2,tm_mr; Temperature gradients in input atmosphere !REAL: tm_q :tm_mr,tm_mgg; Mixing ratios in input atmosphere !REAL: tm_qgg :2,tm_mr,tm_mgg; Mixing ratio gradients in input atmosphere REAL: tm_zt0 :tm_ml; Altitudes of layer lower edges actually modeled REAL: tm_pt0 :tm_ml; Pressures at zt REAL: tm_tt0 :tm_ml; Temperatures at zt REAL: tm_gr0 :2,tm_ml; Temperature gradients at zt REAL: tm_qmix :tm_ml,tm_mgs; Mixing ratio at zt for each gas modeled REAL: tm_qg :2,tm_ml,tm_mgs; Mixing ratio gradients at zt REAL: tm_qmixb :tm_ml,tm_mgb; Mixing ratio at zt for each gas modeled REAL: tm_qgb :2,tm_ml,tm_mgb; Mixing ratio gradients at zt real: tm_rlt :tm_ml,tm_mgb,tm_mt ;Lower state population ratios on model grid real: tm_rut :tm_ml,tm_mgb,tm_mt ;Upper state population ratios on model grid real: tm_rlttv :tm_ml,tm_co2_states ;Lower state population ratios on model grid real: tm_ruttv :tm_ml,tm_co2_states ;Upper state population ratios on model grid REAL: tm_tvt :tm_ml,tm_mgb,2,tm_mt; !DREAL: tm_emr :tm_ml,tm_mgb,tm_mt; Total ray emissivity !DREAL: tm_rmr :tm_ml,tm_mgb,tm_mt; Total ray radiance !DREAL: tm_esr :tm_ml,tm_mgb,tm_mt; Single gas total ray emissivity !DREAL: tm_rsr :tm_ml,tm_mgb,tm_mt; Single gas total ray radiance !REAL: tm_bsr :tm_ml,tm_mgb,tm_mt; Planck value representative of total ray REAL: tm_fact :tm_mgs = {tm_mgs*1.0} ; Mixing ratio multiplier !REAL: tm_temp = 0.0; Isothermal temperature (if non-zero) !REAL: tm_tearth ; Earth surface temperature !REAL: tm_re ; Earth radius !REAL: tm_xlat ; Latitude of model !REAL: tm_wave = 1000.0; Wave number to use for refraction calculations REAL: tm_sza ; Solar zenith angle real: tm_sza_secapprx = 85.0; Use secant approximation if sza<= sza_secapprx REAL: tm_tbl : tm_ntb,tm_mdet,mt; tm_mt;Emissivity table data array !REAL: tm_pout : tm_npt; Work space array for PATH !REAL: tm_tout : tm_ntt,tm_mt; Work space array for MEGA !REAL: tm_sout : tm_nst,tm_mgb,tm_mt; Work space array for MEGA real: tm_wrktvmds: tm_ntvmds; REAL: zt_sav: tm_ml; !; !; Datasets of type INTEGER !; ! ! SABER Channel IDs ! !INT: tm_ihydro = FALSE; INT: tm_ichid_ch1 = 13; CO2 4.3um Narrow (Kinetic Temperature) INT: tm_ichid_ch2 = 7 ; CO2 2.7um vmr INT: tm_indx = 1 ; Use for single channel retrievals INT: tm_indx2= 2 ; Use for second channel in TK/CO2 retrieval !INT: nch = 2; Number of channels to model INT: tm_nch = 1; Number of channels to model INT: tm_ndet = 1; Number of detectors to seperately model INT: tm_iquit; Logical parameter int: tm_nittv_ngt = 2; Number of iteration for CO2 15um Model (Nighttime) int: tm_nittv_day = 9; Number of iteration for CO2 4.3 system (Daytime) int: tm_nittv_com = 2; Number of iteration for CO2 15um (daytime) int: tm_iday ; Logical if true daytime, false night int: tm_idtv = {11}; Blocker filter id int: tm_iblk : tm_mt = {13};,7}; Blocker filter id int: tm_ietl : tm_mt = {0};,0}; Secondary filter id int: tm_irad : tm_mgb,tm_mt = {tm_mgb_mt*3}; IRAD options int: tm_icor : tm_mgb,tm_mt = {3,1,tm_mgbm2*2};,3,2,tm_mgbm2*2}; co2+o3_ch1 INT: tm_net :tm_mt; Number of single gas emissivity databases INT: tm_not :tm_mt; Number of overlap emissivity databases int: tm_nettv ; Number of single gas emissivity tables/channel int: tm_nottv = 0; Number of overlap tables/channel INT: tm_forward_eoi = 0; EOI initialization for forward.pct INT: tm_dbgin = FALSE; Debug switch INT: tm_ibin = FALSE; Switch to use binary or ascii tables INT: tm_igrad = 0; Gradient switch: 0=0.0 gradients,1=use gradients !INT: tm_idg : tm_mgs; Gas identifiers for gases to be modeled INT: tm_idgb : tm_mgb,tm_mt; Gas identifiers for gases to be modeled INT: tm_idgn : tm_mgb,tm_mt; INT: tm_nlmx : tm_mgb,tm_mt; !INT: tm_igg :tm_mgg; Gas identifiers for gases in input atmosphere INT: tm_itab : tm_ml ={tm_ml*1};Indices to select tbl data for each path !INT: tm_isc = 1; Unique simulation identifier INT: tm_iwr = 0; Write switch: 0=short output, 1=long output INT: tm_irfn = 1; Refraction switch: 1=refraction, 0=no refraction INT: tm_ioptt= 1; Radiance units switch: 1=watts/m2/st, 2=ergs/sec/cm2/st, 3: watts/cm2/st INT: tm_ioptb = 1; Band total(1) or band average(2) INT: tm_nl ; Number of layers to model !INT: tm_nr ; Number of levels in input atmosphere !INT: tm_ngg ; Number of gases in input atmosphere !INT: tm_ngas ; Number of gases to be modeled INT: tm_ngb : tm_mt ; Number of transitions to be modeled INT: tm_iplat = 0; Platform altitude index INT: tm_ndx1 = -1; Beginning segment for path integrations INT: tm_ndx2 = 1; Ending segment for path integrations !INT: tm_iaer = 1; Aerosol model selection; 1=low, 2=mod,3=high INT: tm_jel; last ray to be modeled INT: tm_inlte = FALSE; 1= NLTE mode, 0=LTE mode !INT: tm_latmos = 8; Input atmosphere file unit number !INT: tm_loutput = 4; Output data file unit number !INT: tm_loutput2 = 9; Output data file unit number INT: tm_lvsed = 23; Input VSED database unit number INT: tm_lsspc = 7 ; Solar spectrum data LUN INT: tm_ltv = 25; INT: tm_lshr = 20; CO2 Solar heating data LUN INT: tm_lmcm = 22; Unit number for tabulated curtis matrices INT: tm_lcon = 5; Control file unit number INT: tm_iunit = 3; Unit number used for reading table data INT: tm_setup_nltetk_eoi = 0; INT: tm_nlteco2init_eoi = 0; INT: nl_sav;