MSl12 Software Change Log 1.0 February-June 1998 - Initial development 1.1 20 July 1998 src mods - getrayleigh.f, fixed typo in rayleigh file name for OCTS. - earthsundist.f, updated with more accurrate formulation. - getwcap.f, reduced whitecap radiance by 75%. - diffuse_transmittance.f, add oceanic model selection. - fourier_a_b_c.f, new routine, reads fourier version of aerosol tables. - getaermod.f, added switch for reading fourier model coefs. - wangaer.f, added switch for reading fourier model coefs. - l12_parms.h, added definitions for aerosol model table selection. data files - seawifs/data/aerosol - added fourier tables and new oceanic aerosol models. - seawifs/data/transmittance - added oceanic aerosol models. - mos /data/transmittance - added oceanic aerosol models. - octs /data/transmittance - added oceanic aerosol models. 1.2 22 July 1998 src mods - linear_a_b_c.f, fixed isun bug, changed wavelength variable name to eliminate confusion with sensor_cmn. - fourier_a_b_c.f, fixed isun bug, changed wavelength variable name to eliminate confusion with sensor_cmn. - getaermod.f, eliminated ctlaerosol common block ... unneccessary. - diffuse_transmittance.f, eliminated old aerosol models. - rho_a_sub_quad.f, removed extraneous save statement. 1.7 11 March 1999 src mods - support for multiple, user-specifiable output files. 2.0 10 February 2000 highlights - new aerosol option, input taua with fixed aerosol model. - new land products: rhos_*, evi, new ndvi. - new chl and pigment products, chl_oc4, pig_oc4, etc. - fixed LAC straylight calculation to avoid error at scene edge. new src code - get_smoke.c, computes Vermote smoke index. - land_refl.c, computes surface reflectance. - calc_aero_refl.f, computes aerosol reflectance from input taua and fixed model. src mods - Makefile, added get_smoke.o, land_refl.o, calc_aero_refl.o. - MSl12.c, added informational print statement. - alloc_l2.c, added allocation for rhos (surface reflectance). - atmocor2.f, changed chl test to look for chl=-1 instead of chl=0 as indicator of chl algorithm failure. Also modified foq call to pass actual number of visible bands, for POLDER support. - atmocor_init.f, load new input option, tauaInput, into sensor common. - convl12.c, added switch to run land processing (compute surface reflectance). - get_chl.c, added several new chl and pigment algorithms, changed functions to return -1 on error, 0 as minimum. - get_foq.f, modified to use only the active visible bands (for POLDER), and to process through geometries that exceed table boundaries. - get_l2prod_index.c, added support for evi, smoke, assorted pigment and chl products, surface reflectance. Eliminated CZCS_pigment. - get_ndvi.c, changed to use precomputed surface reflectances. Added evi. - getaerosol.f, added support for user-specified taua and fixed model. - input_struc.h, added input parameter taua. - l12_parms.h, added defines for CHL_MAX=64 and CHL_BAD=-1. - l12_proto.h, added prototypes for get_evi(), get_smoke(), land_refl(). Changed prototype for atmocor_init(). - l2_hdf_generic.c, added function calls for the new output products. Fixed sds scaling test for minimum value. Deleted some dead code. - l2_struc.h, added surface reflectance, rhos, to structure. - l2prod.h, added catalog entries for various new output products, deleted CZCS_pigment. - loadl1.c, pass tauaInput to atmocor_init(). - msl12_input.c, added support for taua input parameter. libswfl1a library mods - lac_st.c, added division by sum of weights. 2.0 15 February 2000 src mods - l1a_seawifs.c, fix for non-MSl12 programs. Check that input struct is initialized before trying to use it. - atmocor2.f, add pressure to input args. Correct local taur and adjust diffuse transmittances for pressure. - convl12.c, pass pressure to atmocor2(). - l12_proto.h, change prototype for atmocor2(). - land_refl.c, add pressure correction for Tau_r. 2.0 24 February 2000 MSl12 mods - msl12_input.c, moved usage message from MSl12.c, to enhance maintainability. Also updated the usage message to include all the latest options, and changed the taua input option to tau_a (for SeaDAS compatibility). - MSl12.c, moved usage message to msl12_input.c. - getglint_rad.f, fix for glint over-correction. MSl1bgen mods - MSl1bgen.c, extended l2_flags to 32-bit. - l1_hdf_generic_write.c, added additional meta-data and Vgroups to MSl1bgen output for SeaDAS compatibility. Extended l2_flags to 32-bit. - l1_hdf_generic_write.h, extended l2_flags to 32-bit in prototype. 2.0 29 February 2000 MSl12 mods - l2_hdf_generic.c, removed include for palette.h, added support for windangle, zwind, mwind, cloud_albedo. - l2_prod.h, added windangle, zwind, mwind, cloud_albedo. - get_l2prod_index.c, added windangle, zwind, mwind, cloud_albedo. - convl12.c, copy pointers for new products to l2rec. - alloc_l1.c, added storage for wd, cloud_albedo. - l1_struc.h, added pointer for wd, cloud_albedo. - l2_struc.h, added pointer for wd, zw, mw, cloud_albedo. - setanc.c, compute and store wind direction, l1rec->wd[i]. - setflags.c, save cloud_albedo in l1rec->cloud_albedo[i]. - get_chl.c, added chl_oc4v3. Changed oc4 option to v3. - earthsundist.f, moved to libswfnav(). MSl1bgen mods - MSl1bgen.c, fixed handling of line subsampling. - l12_seawifs.c,fixed handling of line subsampling. - l12_proto.h, changed proto for l1b_seawifs(). - l1_hdf_generic_write.c, added csol_z metadata output. 2.0 16 March 2000 MSl12 mods - msl12_input.c, updated to default aer_opt=-3, outband_opt=2 for seawifs. Also glint_opt=1 for all. Added rflag option for DAAC replacement flag control. Changed to recognize glint_thresh for glint. - input_struc.h, Added rflag. - l2_hdf_generic.c, Added rflag. - l1_octs_hdf.c, increased MAXPIX to handle fwd tilt scan width. - convl21.c, add correction for fsol on qnlw reconstruction. - l2prod.h, added support for fsol and t_o2 output. - get_l2prod_indx.c, added support for fsol and t_o2 output. - l2_hdf_generic.c, added support for fsol and t_o2 output. - MSl12.c, added "Processing Completed" message. - MSl1bgen.c, added "Processing Completed" message. - l1_mos_hdf.c, changed to read scan coeffs from external file. - getrayleigh.f, added new table read function for seawifs, to include windspeed. - atmocor1.f, pass windspeed to getrayleigh(). Data mods - add relgain file to data/mos/cal. - add seawifs_pol_ray_B.dat to data/seawifs/rayleigh. This effectively replaces the eight files sea*pol.dat. 2.0 27 March 2000 src mods - get_l2prod_index.c, add support for tau_nnn, fixed rank problem for fsol. Also changed default chl and pig to OC4. - l2_hdf_generic.c, fixed rank dimension problem for fsol product. Added global attribute for fsol. - l1_hdf_generic_read.c, modified to read standard seawifs-like L1B in addition to OCTS L1B form OCl1bgen. - MSl12.c, enhanced to include std seawifs meta-data when processing L1B. - hdf_utils.c, added SetF64GA() function. - get_chl.c, switch default chl algorithm to chl_oc4. - getformat.c, added informational messages. - loadl1.c, added some comments. - Makefile, *.mk, added utilities for new l1_hdf_generic_read(). 2.0 31 March 2000 src mods - getrayleigh.f, updated to higher resolution wind tables. - getaerosol.f, require La(7)/La(8) > 0.1 before attempting to compute aerosols. - get_chl.c, updated OC4 algorithm to v4 coefs. data mods - seawifs/rayleigh/seawifs_pol_ray_B.dat, updated with higher wind resolution. 2.0 5 April 2000 src mods - msl12_input.c, set default solzmax to 75. Added diagnostic messages. - get_chl.c, added minimum cut-off on band ratio for OC4 algorithm. - getformat.c, added diagnostic messages. - l1_io.c, reset l1rec sensor ID on each read (required for generic L1B). - MSl12.c, moved setting of l1rec nbands and bindx to readl1(). - cpl1rec.c, copy bindx field (for POLDER). data mods 2.0 19 April 2000 src mods - l2_flags.h, define new flag to indicate cloud-free ocean. - convl12.c, set flag to indicate cloud-free ocean, copy mask pointer and set mask array on atmospheric correction failure. - get_k490.c, set explicit max/min and failure conditions. - l2_struc.h, added pointer to L1 mask array. 2.0 25 April 2000 src mods - input_struc.h, extended replacement flag storage length. - convl12.c, fixed bug in tricho flag handling of bathymetry condition. - setanc.c, added informational messages. - l1a_seawifs.c, added informational messages re: seawifs cal table. - msl12_input.c, added informational messages re: seawifs cal table. 2.0 26 April 2000 src mods - convl1.c, don't skip flag tests after ATMWARN. - atmocor2.f, don't include band 1 in ATMFAIL test for negative Lt-Lr. - setflags.c, moved dark pixel test outside land/glint/absaer test. 2.0 28 April 2000 src mods - convl1.c, set ATMWARN on NEGLW if band is greater than 2. This will make ATMWARN more useful in L3 binning to mask bad K490. - setflags.c, don't compute glint for land pixel. libai mods - residue.f, updated to improve behavior of aerosol index over high chl. data mods - $MSL12_DATA/seawifs/aerosol/abs_aerosol_seawifs.dat updated. 2.0.1 11 September 2000 src mods - l12_parms.h, updated version number. - get_angstrom.f, corrected mis-ordering of C70 and C90 models. libai mods - residue.f, - aero_indx.f, - *.f, assorted changes for linux compatibility 2.0.2 5 October 2000 Fix for scan-modulation correction when processing subscenes. src mods - l12_parms.h, updated version number. - l1a_seawifs.c, bug fix to correct the handling of scan modulation corrections for pre-extracted SeaWiFS L1A subscene files. - l12_seawifs.c, corrected tilt_flags meta-data when subsetting. libswfl1a mods - calibrate_l1a.c, pass nsamp, nsta, ninc to get_cal. - call1a_proto.h, new calibrate_l1a proto. libswfcal mods - get_cal.c, pass npix, nsta, ninc to setup_scanmod. - get_cal_misc.c, generalize scan modulation table to use npix, nsta, ninc rather than data-type (GAC, LAC) for sub-setting, sub-sampling cases. - getcal_proto.h, new get_cal proto. 2.1 21 June 2000 Major changes to support land processing, including introduction of the digital_elevation_map. New wind-dependent Rayleigh tables for POLDER, MOS, OCTS. src mods - alloc_l1.c, added storage for terrain height, t_o2, t_sol, t_sen, rhos. - alloc_l2.c, removed storage for t_o2, t_sol, t_sen, rhos. These are now pointers to the l1 record. - atmocor1.f, moved computation of O2 transmittance from atmocor2() to atmocor1() so it can be used in surface reflectance computations without running through full atm. correction. Also added simple calc. of Rayleigh diffuse transmittance for same purpose. - atmocor1_land.c, new function to process to rhos over land, including new Rayleigh function for land. Called by loadl1(). Replaces land_refl.c. - atmocor2.f, call nlw_outband() for all sensors. Moved coputation of O2 transmittance from here to atmocor1(), consistent with land. - convl12.c, transfer terrain height. Only do land processing over land. Eliminate call to land_refl() (done in loadl1()). - dem_s.fin, new DEM file structure include. - filter.c, dilation filter now sets dilated flag. Also added masking of the queue ROI when a dilation flag is detected. Flags are now specified by standard L2_flag numbers. All smoothing filters were changed to set the mask bit (rather than zeroing the data) when the ROI is less then half filled. Added test filter for epsilon smoothing (incomplete). - filter.h, removed old flag definitions and names. - get_dem_height.f, new function to read and apply terrain elevation data, adjust lon/lat and view angles accordingly, return height for pressure correction. - get_l2prod_index.c, added support for rhot and height products. Changed scaling on rhos. Added units of "dimensionless" for all products that had no units specified. - getl1rec.c, don't need to reset masking after filtering. Removed filter control parameter, which is now included in input control structure. - getrayleigh.f, call wind-dependent Rayleigh tables for MOS, OCTS, and POLDER. - get_rhos.c, new function to compute surface reflectance. - get_toa_refl.c, new source to compute TOA reflectance, rhot. - input_struc.h, added elevation filename field. (** actually added on 4/25). Added filter control structure. - l12_parms.h, updated version number. - l12_proto.h, added get_toa_refl() prototype. Fixed getrayleigh proto for windspeed (not called by C, so no problem). Fixed get_es proto for readability. Added getheight() proto. Eliminated land_refl() proto. Added atmocor1_land(). Removed fctl from getl1rec() proto. Changed atmocor1 proto. - l1_io.c, removed setting of defunct field, l1rec->input. - l1_mos_hdf.c, fixed bug in last-scan interpolation for lon/lat. - l1_struc.h, added fields height, rhos, t_o2, t_sol, and t_sen. The associated transmittance fields in the l2 rec become pointers to the l1 rec. - l1q_struc.h, added include statement. - l2_hdf_generic.c, added support for rhot and height products. - l2_struc.h, added terrain height field. (** actually added on 4/19). - l2prod.h, added rhot and height product identifiers. - loadl1.c, compute land/bath flags. Separate land and ocean streams. Call atmocor1_land() instead of caling land_refl() in convl12(). Call get_dem_height() to adjust lon/lat for terrain elevation. Added call to get_rhos(), and passing of transmittances to atmocor1(). - msl12_input.c, added elev file specification option. (** actually added on 4/25). Changed outband_opt default to 2 for OCTS, POLDER. Added initialization of filter control filed and reading of filter file. Added echo of filters used in input meta-data. - nlw_outband.f, replaces nlw_outband_seawifs.f. Includes OCTS and POLDER corrections. - rho_a_sub_quad.f, apply out-of-band wv correction to seawifs only. - setanc.c, read terrain height and adjust pressure, if over land and land processing is requested. (*Moved dem reading to loadl1()). - setflags.c, moved land/bath flags up to loadl1(), so we can use to decide if we need to read terrain height in setanc(). - MSl12.c, removed filter init and reading, now done in msl12_input(). - MSl1brsgen.c, set pointer to input struc in l1file. - MSl1brsgen.mk, added atmocor1_land.c, filter.c. - Makefile, added get_toa_refl.c, atmocor1_land.c. inc mods - swfinc/nav_cnst.fin, new Fortan include for get_dem_height.f. data mods - common/digital_elevation_map.hdf, new terrain height map. - mos/rayleigh/mos_pol_ray_B.dat, new wind-dependent Rayleigh table. - octs/rayleigh/octs/pol_ray_B.dat, new wind-dependent Rayleigh table. - polder/rayleigh/polder_pol_ray_B.dat, new wind-dependent Rayleigh table. - polder/polder_table.dat, new polder calibration. 2.2 30 June 2000 New calcite, cloud optical thickness, and remote sensing reflectance products. New ice mask i/o for PAR masking. src mods - l12_parms.h, version change. - l2prod.h, added calcite, tauc, Rrs. - l12_proto.h, new calcite, cocolith, tauc, rrs protos. - l2_hdf_generic.c, added call to get_calcite(), get_tauc(), get_rrs(). - get_l2prod_index.c, added resolution of calcite, tauc, Rrs options. - get_calcite.c, new wrapper for calcite.f. - coccolith.f, new coccolithofore backscatter algorithm from H. Gordon. - atmocor2.f, slight change to improve retrieval of Lw(765) when Siegel 6-8 algorithm is used. - ice_mask.c, new ice mask function. - msl12_input.c, added input control for ice mask file. Set new atmospheric correction switch. - input_struc.h, added icefile to input structure. Added atmocor switch. - loadl1.c, init and call ice_mask(). - l1_struc.h, add pointer for ice mask. - alloc_l1.c, make space for ice mask. - convl12.c, transfer ice mask to l2_flags. Enable atmocor toggle. - l2_flags.h, add ICE identifier. - get_par.c, don't compute par over land or ice. - get_tauc.c, new function to compute cloud optical thickness, seawifs GAC only, 865 only. - get_rrs.c, new function to compute remote sensing reflectance per band. - MSl12.c, added some informational messages. library mods - libcloud.a, new library of routines for cloud optical thickness. data mods - common/ice_mask.hdf, new sea ice climatology file. - seawifs/cloud/*, new data files for seawifs cloud optical thickness. 2.3 13 July 2000 Set navigation failure flag. Mask glint in cloud optical thickness product. src mods - l12_parms.h, version change. Added new OUTPUT_QNLW format for calibration mode processing. - convl21.c, added option to output quasi-nLw. - convl12.c, set NAVFAIL flag. - filehandle.h, Added new OUTPUT_QNLW format for calibration mode processing. - l2_flags.h, added NAVFAIL flag. - get_calcite.c, set masked values to 0.0 instead of -0.01. Disable glint correction. - get_tauc.c, mask glint. - l12_seawifs.c, fixed problem with seawifs meta data when input parameter for start line is set to negative value. libai mods - aero_indx.f, disabled solar zenith angle switch at 40-deg on ppo2. 2.4 21 July 2000 Added capability to specify aerosol optical thickness per band and from that derive aerosol model, reflectance per pixel. New tricho product and supporting SST climatology i/o. Fixed minor error in angstrom calculation. Fixed DEM file handling. src mods - l12_parms.h, version change. New USERTAUAS aerosol option identifier. - rhoa_from_taua.f, new routine to compute aerosol reflectance based on user input aerosol optical thicknesses per band. - input_struc.h, added taua_per_band input parameter, sstfile parameter. - msl12_input.c, added taua_per_band input parameter, sstfile parameter. - sensor_cmn.fin, added storage for taua_per_band. - atmocor_init.f, store taua_per_band in common. - loadl1.c, pass taua_per_band to atmocor_init(), set SST per pixel. Fixed error in terrain-height trigger. Fixed error status returns. - l12_proto.h, extend proto for atmocor_init(). - getaerosol.f, added rhoa_from_taua option. - get_angstrom.c, fixed error in which the order of the C70 and C90 models were swapped. - get_dem_height.f, updated to improve negative height calculation. - sst.c, new functions sst_init() and get_sst() to load sea surface temperature from climatology. - l1_struc.h, added sst pointer. - l2_struc.h, added sst pointer. - alloc_l1.c, added space for sst. - convl12.c, transfer sst pointer from l1 to l2rec. - l2_prod.h, added sst identifier. - get_l2prod_index.c, added support for sst. Changed epsilon to return as float (no impact to eps_78). - l2_hdf_generic.c, added support for sst - MSl12.c, informational messages enhanced. - get_tricho.c, limit calculation to low wind and warm water. - l12_proto.h, added sst protos. - ice_mask.c, fixed month indexing. Improved error checking. data mods - common/sst_climatology.hdf, new sea surface temperature climatology file. - seawifs/aerosol/seawifs_aerosol.dat, new aerosol table which consolidates the content of the seawifs_aerosol_*.dat files, including angstrom coeffs. 2.5 22 August 2000 Support for 1997 Garver-Siegel bio-optical products. Updates for PAR, aerosol index. src mods - l12_parms.h, version change. - smi_climatology.c, new general reader for SMI-like climatological files. - smi_climatology.h, new header for smi_climatology.c. - alloc_2d.c, new 2-D array allocation utility. - alloc_2d.h, new header for alloc_2d.c. - get_par.c, modified to use climatology for aerosol properties, and pass bandpass-dependent constants to calc_par(). - calc_par.f, modified to use angstrom(510) rather than angstrom(670). Also modified to accept parameters for wavelength, F0, kO3, and Tau_r. - loadl1.c, switched sst reader to use generic smi_climatology() function. - msl12_input.c, handle new input filenames for aerosol climatologies. - input_struc.h, new input filenames for aerosol climatologies. - sst.c, replaced with smi_climatology.c. - get_rrs.c, fixed error with day-of-year correction. - l2prod.h, added gs97 products. - get_l2prod_index.c, added gs97 products. - l2_hdf_generic.c, added gs97 products. - l1_struc.h, added tracking of current scan number. - l2_struc.h, added tracking of current scan number. - l1_io.c, set current scan number in readl1(). - convl12.c, transfer current scan number to l2rec. - cpl1rec.c, transfer current scan number to duplicate l1rec. - l12_proto.h, added proto for get_gs97(). - amoeba.c, new model optimization function. - amoeba.h, new header for amoeba(). - gs97.c, new Garver-Seigel 1997 model and calling function, get_gs97(). - nlw_outband.f, fixed bug in which POLDER was calling OCTS function. - get_par.c, convert to Einsteins/Day/m^2. - get_l2prod_index.c, change units meta-data for par. - calc_par.f, fixed error in day-of-year indexing.2.5 22 August 2000 libai mods - residue.f, add screen for river sediment. - aero_indx.f, eliminate shallow-water mask. data mods - common/sst_climatology.hdf, modified to use standardized SDS names. - common/alpha510_climatology.hdf, new angstrom climatology. - common/taua865_climatology.hdf, new aerosol optical thickness climatology. 2.6 13 September 2000 Fix non-seawifs out-of-band corrections. Mask glint in PAR. src mods - l12_parms.h, version change. - get_par.c, mask glint. - get_dem_height.f, fix to improve scan-edge interpolation. - calc_aero_refl.f, ignore out-of-band option when not seawifs. - getaermod.f, ignore out-of-band option when not seawifs. - rhoa_from_taua.f, ignore out-of-band option when not seawifs. - msl12_input.c, improved usage message. 2.6.1 28 September 2000 Linux compatibility. src mods - *.f,*.c, *.h, *.fin, various changes for linux compatibility. 2.7 16 October 2000 Refinements to land processing. src mods - l12_parms.h, version number change. - loadl1.c, don't compute surface reflectance over unprocessed pixels. Init pre-computed atmospheric quantities when not processing pixels. - setflags.c, rough improvement to cloud flag over land, use threshold on surface reflectance at 412. Threshold defined as albedo/10. - l1a_seawifs.c, bug fix to correct the handling of scan modulation corrections for pre-extracted SeaWiFS L1A subscene files. - l12_seawifs.c, corrected tilt_flags meta-data when subsetting. - setanc.c, changed correction of pressure for altitude from 100mb per 1000 meters to exponential. - levmarq.f, new Levenburg-Marquardt optimization routine. - amoeba.c, efficiency enhancements. - amoeba.h, efficiency enhancements. - gs97.c, added new function for Levenburg-Marquardt fitting. - water_vapor.c, new function to compute water_vapor transmittance for SeaWiFS. Only used in first estimate of surface reflectance. - l1_struc.h, added t_h2o field, water vapor transmittance. - l2_struc.h, added t_h2o field. - alloc_l1.c, allocate space for t_h2o. - convl12.c, transfer t_h2o. - atmocor1.f, pass water-vapor concentration, compute t_h2o. - atmocor1_land.c, compute t_h2o, set t_o2 to 1.0 everywhere. - loadl1.c, pass t_h2o, wv to atmocor1(). - l12_proto.h, modified atmocor1() proto. New water_vapor() proto. - get_rhos.c, don't correct for spherical albedo over oceans. Do correct for water vapor using pre-computed transmittance. - l2prod.h, added t_h2o product. - get_l2prod_index, added t_h2o product. - l2_hdf_generic.c, added t_h2o product. libswfl1a mods - calibrate_l1a.c, pass nsamp, nsta, ninc to get_cal. - call1a_proto.h, new calibrate_l1a proto. libswfcal mods - get_cal.c, pass npix, nsta, ninc to setup_scanmod. - get_cal_misc.c, generalize scan modulation table to use npix, nsta, ninc rather than data-type (GAC, LAC) for sub-setting, sub-sampling cases. - getcal_proto.h, new get_cal proto. 2.7.1 31 October 2000 Support for OCTS L1A GAC. Fix for stray light. src mods - gs97.c, switch to Levenberg-Marquardt optimizer. - filehandle.h, new OCTSL1A identifier. - getformat.c, identify files of type "OCTS Level-1A GAC Data" - l1_io.c, added OCTSL1A support. - l1_octs_hdf.c, generalized to read OCTS L1A GAC as well as L1B LAC. libswfl1a mods ** changes some L1B radiances ** - lac_st.c, fix for rare mis-flagging of stray light. - gac_st.c, fix for rare mis-flagging of stray light. liboctscal (new library) - l1a_occal.f, new OCTS L1A system calibration routine. - occal.f, old OCTS L0 system calibration routine. - ocloadcal.f, old OCTS calibration coefficients. 2.7.2 New capability to read and process OSMI data. src mods - l12_parms.h, version number change. - MSl1bgen.c, enable writing of generic L1B files with less than 8 bands. - diffuse_transmittance.f, add support for OSMI tables. - filehandle.h, add identifier for OSMI level-1a. - getformat.c, recognize OSMI L1A and L1B. - getrayleigh.f, add support for OSMI tables. - get_chl.c, added oc4v4 variant for OCTS. - l1_generic.c, add OSMI output option. - l1_hdf_generic_read.c, fix to handle generic L1B files with less than 8 bands. - l1_hdf_generic_write.c, fix meta-data for OSMI ascending orbit. - l1_io.c, add OSMI i/o support. - l1_octs_hdf.c, extend max lines for OCTS GAC, improve sample table usage. - l1a_osmi.c, new OSMI input routine. - l1a_seawifs.c, clean-up. - msl12_input.c, recognize OSMI as valid sensor. - msl1b_input.c, recognize OSMI as valid sensor. - rdsensor_wl.c, locate OSMI tables. - rdsensortab.c, locate OSMI tables. - setanc.c, fixed typo in informational message. - setflags.c, set OCTS saturation flag whenever Lt <= 0. - MSl1bgen.mk, link with l1a_osmi.o and libosmical.a, include osmiinc. - MSl1bingen.mk, link with l1a_osmi.o and libosmical.a, include osmiinc. - MSl1brsgen.mk, link with l1a_osmi.o and libosmical.a, include osmiinc. - MSl1info.mk, link with l1a_osmi.o and libosmical.a, include osmiinc. - MSll2snpx.mk, link with l1a_osmi.o and libosmical.a, include osmiinc. - hdf2pgm.mk, link with l1a_osmi.o and libosmical.a, include osmiinc. - Makefile, link with l1a_osmi.o and libosmical.a, include osmiinc. libosmical (new library) - calday.c - calibrate_l1a_osmi.c - ctogd.c - ctotc.c - eanom.c - earth.h - get_cal_misc_osmi.c - get_cal_osmi.c - gmha.c - julian.c - locate.c - obliq.c - sunpos.c - tconv.c - time-utils.c osmiinc (new include dir) - InstStatData.h - cal_l1a_osmi.h - call1a_proto_osmi.h - earth.h - get_cal_osmi.h - getcal_proto_osmi.h - l1a.h - l1a_proto.h - lunsol.h - orbit.h liboctscal - l1a_occal, improve handling of GAC sampling table. 2.7.3 The f/Q tables were updated with new coefficients from Andre Morel. Support was added for new exponential calibration table format. These changes only get compiled if EXPCALTBL is defined. src mods - l12_parms.h, version number change. - get_foq.f, update to read new f/Q tables from Morel. - l1a_seawifs.c, support for new cal table format. - l12_seawifs.c, support for new cal table format. - l1_hdf_generic_write.c, support for new cal table format. - l2_hdf_generic.c, support for new cal table format. - get_chl.c, set OCTS and POLDER default chl to oc4v4_octs. - l1_octs_hdf.c, fix for solz > 90 cases. - msl12_input.c, default values stated in usage message. libswfl1a - calibrate_l1a.c, support for new cal table format. libswfcal - get_cal.c, support for new cal table format. - get_cal_misc.c, support for new cal table format. includes - swfinc/cal_l1a.h, added for new caltable support. - swfinc/get_cal.h, added definitions for new caltable. - swfinc/getcal_proto.h, added prototypes for new caltable. - swfinc/l1a.h, removed old code. - swfinc/l1a_proto.h, removed old code. data - foq/fq.dat, updated f/Q table. - foq/q0.dat, updated Q0 table. 2.8 29 March 2001 Improvements to handling of inverse (calibration) mode. New capability to read a per-pixel aerosol model specification file. Updates for PAR. Fixes for OCTS, DEM file handling. src mods - l12_parms.h, version number change. Add FORWARD, INVERSE defines. Give alternate version number when building eval version. - input_struc.h, add mode, aerfile fields. - msl12_input.c, set mode field (FORWARD or INVERSE processing). Handle aerfile input option. Moved default locations for climatology and mask files to data/common directory. - MSl12.c, use mode setting from input structure. Allocate and read aerfile if supplied. - convl12.c, pass mode to atmocor2(). Accept aerec and call atmocor_set() if aerec is active. - atmocor2.f, don't exit on dark pixel when in INVERSE calibration mode - l12_proto.h, add mod parameter to atmocor2(). Add aerec to convl12(). Add new atmocor_set() function, aer i/o and allocation functions. - calc_par.f, PAR algorithm changes from R. Frouin. - get_par.c, added water-vapor in call to calc_par(). - sensor_cmn.fin, add model pair and ratio to common block. - atmocor_init.f, initialize model pair and ratio in common block. - get_aerosol.f, new function to compute aerosol from fixed model pair and ratio. - rhoa_from_taua.c, need to compute angstrom for every pixel now, to support aerfile option. - aer_struc.h, new data structure to hold one record of aerosol correction information. - alloc_aer.c, allocates one aer_struc record. - aer_io.c, functions to open, read, and close aerfile. - atmocor_set.f, function to set aerosol control paramters in common block. - l1_generic.c, fixed memory allocation bug when reading hdf and writing L1B. - l1_octs_hdf.c, increased maximum lines for array allocation. - get_dem_height.f, fixes for dateline and large sensor zenith conditions. data files - mos/rayleigh/mos_pol_ray_B.dat, corrected band 6 from 650 to 685 nm. - landmask.dat, moved to "common" subdirectory - watermask.dat, moved to "common" subdirectory - S19461993_COADS_GEOS1.MET_general, moved to "common" subdirectory - S19461993_COADS_GEOS1.MET_noon, moved to "common" subdirectory - S19891991_TOMS.OZONE, moved to "common" subdirectory 2.8.1 1 May 2001 Compilation of exponential cal table support, as well as other "evaluation" algorithm changes, are now controlled by defining EVAL=1 in the compiler commandline. Set EVAL=0 for standard versions. The old SWCALTBLFMT variable has been superceded. src mods - l12_parms.h, version number change. - MSl12.c, informational message change. - atmocor_init.f, fix taua_per_band for less than 8 bands. - atmocor_set.f, fix taua_per_band for less than 8 bands. - l1a_osmi.c, clean-up. - rhoa_from_taua.c, fix for sensors with less than 8 bands. - atmocor2.f, added vanishing Siegel EVAL code. - l1a_seawifs.c, look for EVAL=1 to compile exponential cal table support. - l2_hdf_generic.c,look for EVAL=1 to compile exponential cal table support. - l1_hdf_generic_write.c,look for EVAL=1 to compile exp cal table support. - l12_seawifs.c, look for EVAL=1 to compile exponential cal table support. - get_dem_height.f, added test to fail if DEM file not found. libswfl1a - calibrate_l1a.c, look for EVAL=1 to compile exponential cal table support. libswfcal - get_cal.c, look for EVAL=1 to compile exponential cal table support. - get_cal_misc.c, look for EVAL=1 to compile exponential cal table support. libosmical - calibrate_l1a_osmi.c, separate electronic gain from calibration table gain. inc/swfinc - get_cal.h, look for EVAL=1 to compile exponential cal table support. - getcal_proto.h, look for EVAL=1 to compile exponential cal table support. inc/osmiinc - cal_l1a_osmi.h, added definition for number of quadrants. 2.8.2 5 July 2001 Update to available filtering algorithms. Updates for OCTS, land, PAR processing. src mods - l12_parms.h, version number change. - filter.h, added new epsilon targeted smoothing. - filter.c, added new epsilon targeted smoothing. Changed Lt-Lr median filter to just modify Lt, leaving Lr alone. - calc_par.f, raise solar zenith limit to 90-deg (it will still be limited by the run-time solz limit). - l2_hdf_generic, added orbit_nod_lon for OCTS. - MSl1brsgen.c, added various meta-data and changed lon/lat scaling. - filehandle.h, added storage for orbit_nod_lon. - l1_octs_hdf.c, read orbit_nod_lon. - l1_mos_hdf.c, fix bilinear interpolation. - get_ndvi.c, added update to EVI algorithm from Jacques Descloitres. liboctscal - l1a_occal.f, use gain from following scan (it appears to be 1-frame late). 2.8.3 July 11 2001 Add additional OCTS meta-data on DAAC request. src mods - l12_parms.h, version number change. - MSl12.c, copy additional meta-data from filehandle. - MSl1brsgen.c, write additional meta-data. - filehandle.h, add storage for additional meta-data. - filehandle_init.c. initialize new mate-data fields. - l1_octs_hdf.c, read additioanl meta-data into filehandle. - l2_hdf_generic.c, write additional meta-data from filehandle. 2.8.4 16 July 2001 Add flagging for filter failure conditions. src mods - l12_parms.h, version number change. - l2_flags.h, added FILTER flag. - l1_struc.h, added filter flag. - alloc_l1.c, add space for filter flag. - filter.h, set FILTER flag when pixels are failed for insufficient window fill. - convl12.c, copy filter flag in l2_flags array. - l1_mask.c, set filter flag as mask. 2.8.5 30 July 2001 Fix some meta-data problems for OCTS, improve flagging for OCTS, and add some new filtering capabilities, including the diamond kernel and the interquartile mean. src mods - l12_parms.h, version number change. - setflags.c, don't set HILT for missing OCTS bands. - l2_hdf_generic.c, bogus node start/end for OCTS. - l1_octs_hdf.c, fixed month index in time format conversion. - filter.h, changed prototypes for filter functions. - filter.c, added alternative (diamond) kernel capability. - MSl1brsgen.c, fix eastern, western, etc. meta data. - filehandle.h, clean-up. - filehandle_init.c, clean-up. - get_k490.c, updated coefficients for 490/565 band pair from S. Bailey. - get_dem_height.f, bug fix for linux. - get_chl.c, updated OCTS OC4 coeffs, then reverted back. liboctscal - occal.c, apply calibration to saturated counts, rather than returning zero. - l1a_occal.c, apply calibration to saturated counts, rather than returning zero. 2.8.5 4 October 2001 src mods - MSl1brsgen.c, fix for scene center coordinates. Rewrite to compute most meta-data rather than reading from input L1 hdf file, as OCTS L1A defines start, center, and end coordinates differently. 2.8.6 18 September 2001 Correct OSMI viewing/solar geometry. src mods - l12_parms.h, version number change. - l1a_osmi.c, interpolate s/c position as function of scan position. - intpos.f, new function to interpolate position and velocity vectors. - msl12_input.c, default OSMI caltable location to $OSMI_CAL_PATH - msl1b_input.c, default OSMI caltable location to $OSMI_CAL_PATH 2.8.6 04 October 2001 Fix OCTS browse metadata. src mods - MSl12.c, limit eline input option to nscan - MSl1brsgen.c, fix for scene center coordinates. Rewrite to compute most meta-data rather than reading from input L1 hdf file, as OCTS L1A defines start, center, and end coordinates differently. - filehandle.h, eliminate scene start, center, end time fields. - filehandle_init.c, eliminated scene start, center, end time fields. - l1_octs_hdf.c, don't read scene boundary times. - l1a_seawifs.c, enable out-of-sequence reading and get orbit-node meta-data for MSl1brsgen. - msl12_input.c, set default for proc_land to 0 (off). 2.8.7 29 Nov 2001 Fix OCTS scan times. Install several changes into the evaluation version in anticipation of SeaWiFS reprocessing. src mods - l12_parms.h, version number change. - getaerosol.f, if NIR goes negative, return success but set aerosols to a small value. - atmocor2.f, don't automatically fail on negative conditions. Update to vanishing Siegel parameters. - get_tlw_nir.f, new absorption coefficients for bio-optical model. - l1_struc.h, dropped aerSelect field (defunct). - filter.c, modified to allow user specification of minimum fill. - filter.h, prototype mods for passing of minfill. - msl12_input.c, recording of filter minfill values in parameter meta-data. - get_f0.c, new function to return F0 at a specific wavelength (no band averaging). - get_chl.c, eval code to use nominal F0 when nLw is out-of-band corrected. - gs97.c, eval code to use nominal F0 when nLw is out-of-band corrected. - get_rrs.c, eval code to use nominal F0 when nLw is out-of-band corrected. - l1_octs_hdf.c, adjust msec, year, and day to handle day roll-over like seawifs. - l1a_seawifs.c, cal_mod needs to be declared static for Linux. - MSl1brsgen.c, clean-up. - Makefile.*, add get_f0.o module to MSl12. data mods: - common/f0_table.dat, new Neckel and Labs solar irradiance on 1-nm interval. - octs/octs_filter.dat, add new minimum fill field. - seawifs/seawifs_filter.dat, eval filter file for eps smoothing, no min fill. - seawifs/cal/SEAWIFS_SENSOR_CAL.TBL-200102, latest eval cal table for seawifs. - osmi/*, update to latest calibration and tables. 2.8.8 4 January 2002 src mods - l12_parms.h, version number change. - get_l2prod_index.c, meta-data and product name change for gs97 products to gsm01, Garver-Siegel-Maritorena 2001. Algorithm was already gsm01. ** need to update smigen for this ** - get_tlw_nir.f, new bbp function from S. Bailey. - input_struc.h, added rhoamin parameter. - msl12_input.c, set rhoamin parameter. - sensor_cmn.fin, added space for rhoamin. - atmocor_init.c, pass rhoamin to sensor_cmn - l12_proto.h, new arg to atmocor_init() - loadl1.c, pass rhoamin to atmocor_init() - getaerosol.f, use rhoamin from common. - convl12.c, changed isTurbid algorithm for EVAL version. - filter.c, changed epsmean filter to epsiqmean - filter.h, added epsiqmean() prototype. 2.8.9 9 January 2002 src mods - l12_parms.h, version number change. Added band width parameter for nLw out-of-band correction. - get_f0.c, allow specification of band width. - l12_proto.h, modified get_f0() proto. - convl12.c, add band width parameter to get_f0() call. - get_chl.c, add band width parameter to get_f0() call. - atmocor2.f, add band width parameter to get_f0() call. - get_rrs.c, add band width parameter to get_f0() call. - gs97.c, add band width parameter to get_f0() call. - setflags.c, fixed transmittance usage for cloud albedo comp. - nlw_outband.f, new seawifs correction coefficients. - filter.c, minor fix. 2.9.0 26 January 2002 src mods - l12_parms.h, version number change. - nlw_outband.f, new seawifs correction coefficients (as before, but this time they're in the right place). - get_foq.f, modified to read and apply the latest f/Q tables. - foq.fin, new f/Q include file. - input_struc.h, added input fields to allow user over-ride of ancillary met and ozone fields with a fixed value. - msl12_input.c, code to init and set met and ozone over-ride parameters. Also added additional parameters to the parameter meta-data list. - loadl1.c, over-ride met and ozone fields from input struct. - convl12.c, raise EVAL turbid threshold on Rrs670 to 0.0012. - l1a_seawifs.c, limit HILT test to NIR bands. - getaerosol.f, set models to zero on failure (effectively re-initialize between NIR iterations). ** This changes eps_78 field in current standard processing, but only where ATMFAIL was already set ** data mods - data/foq/fq.dat, new f/Q table - data/foq/rgoth.dat, new gothic R table - data/foq/q0.dat, new Q0 table (not required) - data/foq/f.dat, new f table (not required) 2.9.1 29 January 2002 src mods - l12_parms.h, version number change. - get_tlw_nir.f, split code into Siegel and Arnone variants. - atmocor2.f, include Arnone NIR option. - atmocor_init.f, recognize Arnone option. - msl12_input.c, change default rhoamin to 0.0001, satzen to 60. - MSl12.c, informational messages for Arnone NIR correction. libswfl1a - gac_st.c, EVAL version modified to correct and not flag two additional pixels. inc/swfinc - cf.h, include STLT correction factors for additional along-track pixels. 2.9.2 4 February 2002 src mods - l12_parms.h, version number change. - get_foq.f, fixed errors in Rgoth, f/Q interpolation. Switched CHL interpolation to log-linear. - atmocor2.f, modified NIR iteration control for EVAL. Stop when chl change is less than 2%. Add damping between iterations. Reset chl and Rrs670 on ANY iteration where chl retieval fails. - msl12_input.c, changed default aer_iter_max to 50. - l1a_seawifs.c, changed sl_pixl default for GAC to 4 - setflags.c, if cloud albedo threshold is negative, use rhos(865) test. - MSl12.c, fix handling of spixl when processing single-pixel files. 2.9.3 20 February 2002 src mods - l12_parms.h, version number change. - msl12_input.c, usage message changes. libai mods - residue.f, new thresholds from C. Hsu. (this will change standard version l2_flags as well) 2.9.4 13 March 2002 src mods - l12_parms.h, version number change. New AeroPlus aerosol identifiers - aeroplus.f, new function implementing AeroPlus algorithm of J. O'Reilly. - getaerosol.f, call aeroplus() if requested. - MSl12.c, informational message added for AeroPlus. - get_tlw_nir.f, added adg670 computation to Arnone algorithm. - atmocor2.f, compute and pass Rrs555 to get_tlw_nir_arnone(). - l2prod.h, new logchl products. - get_l2prod_index.c, new logchl products. - l2_hdf_generic.c, new logchl products. - get_chl.c, new logchl products. - gs97.c, support logchl for GSM01 model results. - l12_proto.h, added chl2log() proto. - rho_a_sub_quad.f, removed those annoying parabola messages - atmocor_init.f, recognize new aerosol options data mods - common/watermask.dat, new etopo2 bathymetry 2.9.5 21 March 2002 src mods - l12_parms.h, version number change. New AeroPlus aerosol identifiers - get_tlw_nir.f, update to adg670 and ap670 terms in Arnone. - get_rhown_nir.f, new function to compute NIR reflectance rather than radiance (EVAL only). - atmocor2.f, compute tLw_NIR from rhown_NIR (EVAL only). Use actual transmittance terms from last iteration. - filehandle.h, new recalibration mode TARGET_ZERO - convl21.c, new recalibration mode TARGET_ZERO - MSl12.c, don't open recal target file if TARGET_ZERO - msl12_input.c, don't require target file to enable recal mode. Change aer_iter_max default from 50 to 10. Set aerosol option to USERTAUAS if tau_a_per_band is specified. 3.0 3 June 2002 EVAL version becomes standard version. Old code removed. src mods - l12_parms.h, version number change. - atmocor2.f, convl12.c, get_chl.c, get_rhown_nir.f, get_rrs.c, getaerosol.f, gs97.c, l12_seawifs.c, l1_hdf_generic_write.c, l1a_seawifs.c, l2_hdf_generic.c, msl12_input.c, nlw_outband.f, setflags.c, remove non-eval code and #ifdef EVAL wrappers. - setflags.c, msl12_input.c, remove old cloud algorithm. - atmocor2.f, msl12_input.c, get_rhown_nir.f, MSl12.c, l12_parms.h, getaerosol.f, atmocor_init.f, remove Siegel NIR code and option. - get_tlw_nir.f, defunct code module removed. - get_l2prod_index.c, change chlorophyll and IOP products to floats. - l12_parms.h, change chl range from 0.01-64 to 0.0-100, for use in setting CHLWARN flag. - rho_a_sub_quad.f, added kludge for aerosol model selection problem when T99 and C50 cross. - l2_struc.h, atmocor2.f, l12_proto.h, convl12.c, alloc_l2.c, convl21.c, add Fresnel transmittance correction to nLw normalization. - msl12_input.c, maskstlight=1 is now default. Filtering for SeaWiFS is off by default. - get_l2prod_index.c, l2prod.h, l2_hdf_generic.c, add t_f (Fresnel transmittance) as output product. - get_chl.c, added spectral test to failure conditions for OC4. - atmocor2.f, back-out Fresnel correction if using Morel f/Q. libswfcal - get_cal.c, get_cal_misc.c, remove non-eval code and #ifdef EVAL wrappers. libswfl1a - calibrate_l1a.c, gac_st.c, remove non-eval code and #ifdef EVAL wrappers. swfinc - cf.h, get_cal.h, getcal_proto.h, remove non-eval code and #ifdef EVAL wrappers. 3.0.1 3 August 2002 Fixes for solaris compatibility. New depth algorithm. src - l12_parms.h, version number change. - msl12_input.c, initialize filehandle structure. Fix calfile init for extraneaous open on l1 file. - atmocor1_land.c, replace cosf, sqrtf, logf, expf with generalized variants. - get_rhos.c, replace cosf, sqrtf, logf, expf with generalized variants. - MSl1brsgen.c, fixed -p option. - get_depth.c, new depth algorithm from R. Stumph. Depth is now float. - get_l2prod_index.c, depth is now float. - l12_proto.h, depth returns float. - l2_hdf_generic.c, depth returns float. 3.1 26 June 2003 MODIS support (phase 1). Miscellaneous clean-up and generalization. src - MSl12.c, attach geolocation filename pointer to file handle. Changed name of usage function, to avoid conflicts. - MSl1bgen.c, attach geolocation filename pointer to file handle. Also, call msl12_input() rather than msl1b_input(), to consolidate input parameter initialization. - MSl1bingen.c, accept geolocation file as additional input. - MSl1brsgen.c, accept geolocation file as additional input. - MSl1info.c, accept geolocation file as additional input. - MSll2snpx.c, accept geolocation file as additional input. Also, the -f command option was removed, as the current code can not distinguish commandline options from negative lon/lat positional parameters. - alloc_l1.c, allocate space for polarization fields and pixnum. Eliminate allocation for Es. - atmocor1.f, added support for modis polarization correction. - atmocor2.f, disable fresnel correction for modis and call modis- specific glint correction, to match standard modis code. Clean-up fresnel code. Remove Es parameter and calculation, only done on request. - atmocor_init.f, added polOpt polarization option. - calc_aero_refl.f, call sensor-specifc (ff) water-vapor correction. - convl12.c, copy new l1_struc fields to l2_struc. Pass polcor to atmocor2(). Use precomputed F0 in isTurbid(). - cpl1rec.c, support new Fo fields and detnum, mside. - diffuse_transmittance.f, locate MODIST and MODISA files. - ff.f, added MODIS-specific out-of-band water-vapor corrections. - filehandle.h, added modis L1B file ID. geofile field. - filehandle_init.c, support geofile. - funct_eps.f, don't interpolate for MODIS, since models now MODIS-specific. - get_angstrom.c, added values for MODIS wavelengths (splined from SeaWiFS). - getaermod.f, call sensor-specifc (ff) water-vapor correction. - getaerosol.f, moved data statement so compiler stops complaining. - get_chl.c, added OC3M modis chlorophyll and MOS OC4 variant. Change to make use of precomputed solar irradiances. - get_depth.c, use precomputed F0 for normalization. - get_l2prod_index.c, added new OC3M chlorophyll and pigment products, polarizion products polcor and Lr_q, Lr_u, tsm_clark, poc_clark. - get_poc.c, new functions for particular organic carbon. - get_rhos.c, added missing comment end. - get_rrs.c, use precomputed F0 for normalization. - get_tsm.c, new functions for total suspended matter. - getdtran.f, add error message. - getformat.c, added support for MODIS/Terra and MODIS/Aqua HDF-EOS format. - getglint_rad.f, added routine to mimick standard modis glint correction (though the implementation is questionable). - getrayleigh.f, added new rayleigh_iqu routine, only used for modis, to include full Rayleigh stokes vector. - getwcap.f, added modis-specific coefficients and scaling. No windspeed limit for modis. These changes were required to match standard modis code, but differences need review. - gs97.c, use precomputed F0 for normalization. - hdf_utils.c, moved some general HDF routines from l1_octs_hdf.c. - hdf_utils.h, moved some general HDF routines from l1_octs_hdf.c. - input_struc.h, added geofile and pol_opt (poalrization option). - l12_parms.h, version number change. Added new sensors MODIST and MODISA. - l12_proto.h, add rdsensorinfo(), remove rdsensortab(), rdsensor_wl(). Added parameters to atmocor1, atmocor2, atmocor_init to support modis. - l12_seawifs.c, fixed bug in l1b meta-data transfer. - l1_hdf_generic_read.c, standarized to use rdsensorinfo(). - l1_hdf_generic_write.c, standarized to use rdsensorinfo(). - l1_io.c, call new MODIS i/o routines. Generalized determination of nbands, bindx (band indexing) using rdsensorinfo(). - l1_modis_hdf.c, new MODIS input routines. - l1_modis_hdf.h, new MODIS input routines. - l1_mos_hdf.c, removed header settings (handled in getFormat, l1_io). - l1_octs_hdf.c, moved hdf utilities to hdf_utils.c. - l1_octs_hdf.h, moved hdf utilities to hdf_utils.h. - l1_struc.h, added detector number (detnum), mirror side (mside), pixel number (pixnum), polarization frame rotation angle (alpha), Rayleigh Q and U components (Lr_q, Lr_u), and mean and nominal solar irradiances (Fobar, Fonom) as fields in the L1 record. - l1subpix.c, include the new pixnum field when pixel sub-setting and sub-sampling. - l1a_seawifs.c, change navwarn, navfail setting scheme (see also version 3.0.2). - l2_hdf_generic.c, use of rdsensorinfo() in place of rdsensortab() to standardize the reading of the sensor information table. Support for new products in l2prod.h. - l2_struc.h, added detector number, mirror side as fields in the L2 structure. Also added pointers to new L1 fields for pixel number, alpha, Lr_q, Lr_u, Fobar, and Fonom. Removed Es field. - l2prod.h, added OC3M chlorophyll, and a MOS variant of OC4. Also added Q and U Rayleigh components and polcor, the polarization correction as a product. Also D. Clark's TSM and POC. - load_aer.f, read MODIS-specific aerosol tables. - loadl1.c, use of rdsensorinfo() in place of rdsensortab() to standardize the reading of the sensor information table. Do terrain height correction to geolocation whenever land processing is enabled, regardless of pixel type (land or water). This should improve navigation for high-altitude lakes. - msl12_input.c, add modis support, including geo-location and radcor file inputs, and polOpt polarization option. Also standardize code for obtaining default vicarious gains and offsets. Added ofile (no number) so the same routine can be used by MSl1bgen. Added l2prod (no number) so ofile, l2prod will now work for MSl12. - msl1b_input.c, defunct. - rdsensorinfo.c, generalized routine to replace rdsensortab, rdsensor_wl. - rdsensortab.c, defunct. - rdsensor_wl.c, defunct. - rho_a_sub_quad.f, added calls to MODIS and SeaWiFS-specific water-vapor correction. Removed large block of long-dead code associated with test and re-use of previous model pair. - rhoa_from_taua.f, added calls to MODIS and SeaWiFS-specific water-vapor correction. - sensor_cmn.fin, added polOpt polarization option parameter. - setanc.c, do terrain height correction to pressure whenever land processing is enabled, regardless of pixel type (land, water). This should allow processing over high-altitude lakes. - setflags.c, for modis only, increae windspeed 48% before calling getglint() (cox & munk). This is to match modis standard code, but we will likely remove it later. data - new data/modist directory and associated files. - new data/modisa directory and associated files. - data/seawifs/seawifs_table.dat, added Nband, Bindx info. - data/octs/octs_tabe.dat, added Nband, Bindx info. - data/polder/polder_table.dat, added Nband, Bindx info. - data/mos/mos_table.dat, added Nband, Bindx info. - data/osmi/osmi_table.dat, added Nband, Bindx info. 3.2 03 July 2003 Bug fix for seg fault on very small SeaWiFS L1A files, other clean-up to reduce benign memory access errors. Updates for MODIS nLw out-of-band and NIR water-leaving radiance calculations. Also, for the EVAL version of MSl12, replaced Cox & Munk with Ebuchi & Kizu glint distribution, and changed cloud flag algorithm to subtract glint. src - l12_parms.h, version number change. - atmocor2.f, call rhown NIR correction wrapper. - get_rhown_nir.f, added version for MODIS bands and sensor selection wrapper. - getglint.f, for EVAL version, replace Cox & Munk probablility distribution with Ebuchi & Kizu. - l1a_seawifs.c, don't pass dark_rest to calibrate_l1a(), as it doesn't use it. Also, compute HILT test with mean dark restore (slight impact to standard SeaWIFS processing). Free dark_rest as soon as dark_mean is computed. - msl12_input.c, new defaults outband_opt=2, aer_opt=-3 for MODIS. - nlw_outband.f, added MODIS function, cleaned-up useless options. - setflags.c, for EVAL version, subtract glint from cloud reflectance. libswfl1a - calibrate_l1a.c, removed dark_rest argument. - inc/swfinc/call1a_proto.h, removed dark_rest argument from calibrate_l1a(). libanc - getanc.c, init some variables relating to TOMS ozone test, as they get tested for non-TOMS data. 3.2.1 18 July 2003 Bug in application of radcor. Wrong mirror-side RVS correction applied to pixels 1327-1354. src - l12_parms.h, new version. - l1_modis_hdf.c, fix to RVS correction on scan edge. 3.3 13 August 2003 Add MODIS SST support. Also add f/Q in calibration mode. src - l12_parms.h, new version, NBANDSIR, new SST and BT flag values. - l1_modis_hdf.c, read 11, 12um SST bands, apply radcor. - l1_struc.h, added Bt field. - alloc_l1.c, allocate Bt field. - atmocor2.f, set frensel tranmittance to 1.0 when applying f/Q. - convl12.c, call sst function, if requested. - convl21.c, apply f/Q correction, if requested, and pass in input struct. - input_struc.h, added proc_sst control. - l12_proto.h, new sst funcs, and changed convl21 proto. - l2_flags.h, new SSTWARN and SSTFAIL flags. - l2_struc.h, new Bt and sst fields. - loadl1.c, always load sst climatology. - MSl12.c, pass input struc to convl21(). - msl12_input.c, new proc_sst input. - sst.c, functions for MODIS 11um SST (Aqua/Terra) and brightness temperature. data - modist/bt_modist.hdf, terra radiance to brightness temperature table. - modist/cal/radcor_modist_2003224.hdf, terra combined radcor - modist/cal/radcor_modist_nocor.hdf, non-correcting radcor for terra - modisa/bt_modisa.hdf, aqua radiance to brightness temperature table. - modisa/cal/radcor_modisa_2003224.hdf, aqua combined radcor - modisa/cal/radcor_modisa_nocor.hdf, non-correcting radcor for aqua 3.3.1 14 August 2003 Bug fix for calibration mode. src - l12_parms.h, new version. - l1_generic.c, check for NULL file pointer before closing l1 file. - convl21.c, missing parens. 3.4 16 October 2003 Rework of calibration modes for MSL12. Now write HDF file for vicarious L1B, including the l2_flags SDS. Had to rewrite MSl1bgen in the process. Generalized f/Q and Fresnel options and products. Eliminated flat binary output option for L2. Added new MScaltarget, MScalmerge, and MScalibrate programs, and modified some of the i/o functions to support the new utilities. src - l12_parms.h, new version. New aerosol selection ID FIXMODPAIR. - MSl12.c, now writes vicarious L1B in HDF format. Many changes to handle new parameter specifiers: ofmt eliminated, mode added to indicate FORWARD or INVERSE modes. - MSl1brsgen.c, revamped to use standardized i/o function calls. - MSl1bingen.c, init input struct and link to l1file. - MSl1info.c, init input struct and link to l1file. - MSll2snpx.c, init input struct and link to l1file. - alloc_l1.c, added allocation for flags array. - alloc_l2.c, removed flags allocation (moved to l1rec). Consolidated t_f and foq allocation to brdf field. - atmocor2.f, replace t_f and foq variables with brdf, moved fresnel code to get_brdf.f, no fresnel applied if full f/Q is requested. Eliminated t_f from argument list. - atmocor_init.f, replaced foqOn with brdf_opt. - convl21.c, replace t_f and foq variables with brdf, revamped to use new processing mode parameter from filehandle to determine how to invert. - convl12.c, improved l2_flags handling: set l2rec flag pointer to l1rec flag array, call new setflagbits() function (pre-atmocor2 flags set in loadl1), moved isTricho(), isCoccolith(), isTurbid() functions to setflags.c. Moved easternmost(), westernmost() to l1_io.c (multiple instances were consolidated). Changed call to atmocor2(). - getdtran.f, comment-out error message for theta out-of-range - filehandle.h, new format extended L1 HDF, new mode indicators FORWARD, INVERSE_*, CALFIT. - getformat.c, initialize eosmeta to avoid warnings. - input_struc.h, added additional parameters to support MScaltarget. Removed ofmt field (and option to output flat binary L2 files). Extended mode option to indicate FORWARD or various types of INVERSE processing for MSl12. Replaced foq_opt with generalized brdf_opt. Replaced field target_nlw_file with tgtfile, and eliminated field new_l1b_file (now stored in ofile[0]. - l12_proto.h, various function prototypes updated. - l1_generic.c, make sure pointer is not NULL before closing (flat binary L1). - l1_hdf_generic_read.c, added reading of mside and detnum SDSes. - l1_modis_hdf.c, cleaned-up radcor input to only read the one epoch of interest. - l1_struc.h, added flags field. - l2_struc.h, replace t_f and foq with brdf field. - msl12_input.c, changes to support MScaltarget and new mode and brdf options (see input_struc.h). Consolidated usage messages here. - loadl1.c,a dded call to the flag-bit setting function (moved from convl12()). - l1_io.c, added support for l1_hdf_generic_write(). Also added call to the flag-bit setting function in readl1(). Moved easternmost(), westernmost() here. - l1_hdf_generic_write.c, revamped to standard style of other i/o routines, add writing of detnum and mside. - l1_hdf_generic_read.c, read detnum and mside. - l2prod.h, removed t_f and foq products and added brdf product. - get_l2prod_index.c, removed t_f and foq products and added brdf product. - l2_hdf_generic.c, removed t_f and foq products and added brdf product. - sensor_cmn.fin, changed foqOn to brdf_opt. - setflags.c, new setflagbits() routine to consolidate the l2_flag setting. Moved l1_mask() and several L2 flagging functions to this source file for ease of maintenance. - MScaltarget.c, new calibration target generation code - readL2scan.c, new code to support MScaltarget - readL2scan.h, new code to support MScaltarget - setupflags.c, new code to support MScaltarget - get_brdf.f, new code consolidation of brdf functions - MScalibrate.c, new calibration fitting facility. - mscal_func.c, new code to support MScalibrate - get_foq.f, defunct (moved functions to get_brdf.f) - l1_hdf_generic_write.h, defunct (moved into l12_proto.h) - l1_mask.c, defunct (function moved into setflags.c) - l1_mask.h, defunct (function moved into l12_proto.c) - l1a_seawifs.c, save mirror side in l1rec. Use mean dark restore rather than dark restore per scan for testing HILT. - l2_generic.c, defunct (eliminated non-hdf output options for MSl12) - l2_io.c, defunct (eliminated non-hdf output options for MSl12) - l2_small_generic.c, defunct (eliminated non-hdf output options for MSl12) - l2_small_generic.h, defunct (eliminated non-hdf output options for MSl12) - msl1b_input.c, defunct (replaced with msl12_input()) libcalfit - new set of functions to support MScalibrate inc/msinc - new include dir to support MScalibrate 3.5 4 November 2003 Update to fix very old bug in SeaWiFS calibration library, which sometimes mis-selected segments in a segmented calibration table (not an issue for repro #4). Also, the sst product was separated from the input sst reference product, and the latter is now available as sstref. SST processing was enabled by default for the MODIS sensors. Installed sensor-specific defaults for cloud threshold. Eliminated EVAL code for subtracting glint before testing clouds (now MODIS default behavior, not used for other sensors until it can be tested). For MODIS processing, transition to seawifs-like glint correction, add glint polarization correction, use new polarization tables for aqua (aqua_1a). Transition of MODIS Aqua from Neckel and Labs to Thuillier solar irradiance. Updated earth-sun distance function (was 1998-specific) for all but SeaWiFS (until approved for SeaWiFS). src - l12_parms.h, new version, new definitions for MScalmerge, MScaltarget. - l12_proto.h, modified atmocor1() arg list. - l2_struc.h, added sstref field to l2 structure. - l1_struc.h, added sstref field to l1 structure. - l2prod.h, added sstref product specifier. - sst.c, user sstref for first guess sst in NLSST algorithm. - msl12_input.c, enabled sst procesing by default for MODIS sensors. Set proper default for MODIS cloud threshold. Incorporated additional changes to support MScalmerge. Changed default for MODIS polarization to Rayleigh+glint (pol_opt=3). - alloc_l1.c, allocate space for sst reference field. - alloc_l2.c, clean-up. - l2_hdf_generic.c, support for sstref product output. - get_l2prod_index.c, support for sstref product output. - get_tricho.c, use sstref rather than sst field. - convl12.c, copy sstref pointer. Remove continue statement on ATMFAIL. This was causing some pixels to skip sst processing, leaving the reference value in the sst field, and skipping SST flagging. Cleaned-up some dead code. - setflags.c, always subtract glint before cloud test for MODIS (removed EVAL test). Don't modify the windspeed for MODIS. - getglint.f, use Cox and Munk, unless glint_opt>=2 (removed EVAL test) - atmocor2.f, handle glint_opt (glintON) equal to 2 or 3 (Ebuchi and Kizu). Apply seawifs glint correction to MODIS. Use Thuilier for nominal F0 for all MODIS. - input_struc.h, expanded ifile list and parms and files meta strings to handle larger input file number, to support MScalmerge. - filehandle.h, new mode to identify L1XCAL (MScalmerge) files. - MScalibrate.c, development update. - mscal_func.c, development update. - mscal_struc.c, development update. - mscal_struc.h, development update. - getformat.c, add recognition for match-up file format. - loadl1.c, sst reference (climatology) loaded into sstref fields of l1rec. Use new e-s distance function for EVAL or non-SEAWIFS cases. Use Thuilier for nominal F0 for all MODIS. - l1_modis_hdf.c, use new e-s distance function. - l1_polder.c, use new e-s distance function. - getwcap.f, apply seawifs white-cap correction to MODIS - get_f0.c, split into two function, get_f0_neckel and get_f0_thullier. - atmocor1.f, moved glint calculation here from setflags(), needed for polcor(). - setflags.c, glint coef and radiance calc moved elsewhere. Glint subtraction for cloud mask test now applied to all sensors in EVAL code, modis-only in standard code (until it can be evaluated for seawifs). The glint subtraction for the cloud test now includes the direct Rayleigh transmittance. - getglint.f, added new glint coefficient function including polarization. - l1subpix.c, added alpha, Bt, and Ltir subpixelization support for polarization and thermal. - MScalmerge.c, new error codes, ability to read and append to match-up files. - getrayleigh.f, switch to new aqua_1a polarization file for MODIS/Aqua. - parse_file_name.c, don't overwrite a string. - MScaltarget.c, new error code. No pixel averaging. Better handling of polar cases. - readL2scan.c, defunct. Now linking to libl2. - readL2scan.h, defunct. Included from swfinc. libswfcal - get_cal_misc.c, fixed cal segment selection. libswfnav - esdist.f, new earth-sun distance correction, valid for all years. libl2 - readL2scan.c, updates to support MScaltarget. inc/swfinc - readL2scan.h, updates to support MScaltarget. data - common/f0_table.dat, defunct - common/f0_table_neckel.dat, renamed f0_table.dat - common/f0_table_thuillier.dat, new solar irradiance from Thuillier 2003. - modisa/modisa_table.dat, new Thuillier band-averaged F0 using new aqua RRS. - modisa/rayleigh/modis_pol_corr_aqua_1a.hdf, new polarization table - modisa/rayleigh/new_modis_pol_corr5a.hdf, defunct 3.5.1 18 November 2003 Fix bug in SST masking. - l12_parms.h, version number. - convl12.c, skip SST processing for any L1 masking condition. - l1_modis_hdf.c, set HILT flag if 11 or 12um channels saturated or invalid. 3.5.2 11 December 2003 Fix bug in meta-data for files less than 3 scanlines in length. Fix bigger bug in cloud test for modis. - l12_parms.h, version number. - l1_hdf_generic.c, changed some elseifs to ifs. - setflags.c, bad indexing of solar irradiance on glint subtraction. - convl12.c, fix for inverse calibration with nLw=0. 3.5.3 2 March 2004 Support L2 processing of XCAL format. Add output for full polarization radiances (controlled by pol_opt). Allow redirection of polarization tables via environment variables MODSA_POL_PATH, MODIST_POL_PATH. Add additional output products detnum, pixnum, mside, and polarization frame rotation angle alpha. - l12_parms.h, version number. - l1_io.c, support new XCAL input functions. - l2prod.h, changed Lr_q and Lr_u to L_q and L_u. Added detnum, mside, pixnum, and alpha products. - get_l2prod_index.c, changed Lr_q and Lr_u to L_q and L_u. Added mside, detnum, pixnum, alpha. - l1_struc.h, changed Lr_q and Lr_u to L_q and L_u. - alloc_l1.c, changed Lr_q and Lr_u to L_q and L_u. - loadl1.c, changed Lr_q and Lr_u to L_q and L_u. - l2_struc.h, changed Lr_q and Lr_u to L_q and L_u. - convl12.c, changed Lr_q and Lr_u to L_q and L_u. Copy mside, detnum to L2 record. Initialize start and end node meta-data to prevent seg faults when all navigation is bad. - l2_hdf_generic.c, changed Lr_q and Lr_u to L_q and L_u. Added detnum, mside, pixnum, and alpha products. - atmocor1.f, changed Lr_q and Lr_u to L_q and L_u. - getrayleigh.f, control MODIS polarization tables via env vars. - convl12.c, copy mside, detnum to L2 record. - l1_xcal_hdf.c, new XCAL input routine. - l1_xcal_hdf.h, new XCAL input routine header. - MSl2validate.c, new program to generate cross-sensor validation. - msl2val_hdf.c, new program to generate cross-sensor validation. - msl2val_struc.h, new program to generate cross-sensor validation. 3.5.4.eval 10 March 2004 EVAL support for new cal table format. src - l1a_seawifs.c, l12_seawifs.c, l1_hdf_generic_write.c, l2_hdf_generic.c libswfl1a - calibrate_l1a.c libswfcal - get_cal.c - get_cal_misc.c inc/swfinc - get_cal.h, getcal_proto.h 4.0 5 April 2004 Change how defaults are specified and loaded by MSl12 and various MS utilities. Upgrade new seawifs caltable support from EVAL to standard (remove piecewise exponential support). Support for IMAPP L1B. Fixes for OSMI and POLDER calibration mode. Fix for MOS under Fedora. BRDF option 4 is now f/Q + Fresnel. src - l12_parms.h, version number, FOQFRESN. - atmocor1.f, pass polarization file name to modis_polcor (no more environment vars). - atmocor2.f, add brdf option for f/Q with Fresnel. - filehandle.h, add sensorDir[] array of sensor-specific data directories. - get_brdf.f, add brdf option for f/Q with Fresnel. - get_dem_height.f, accept dem filename as input (no more hard-coded filename). - getformat.c, add recognition of IMAPP direct broadcast L1B. - getrayleigh.f, moved polcor() function to polcor.f, add EVAL pressure correction. - input_struc.h, added polfile element, renamed elevfile to demfile. - l12_proto.h, msl12_input() protos, get_dem_height(). - l1a_osmi.c, mask OSMI edges as HILT rather than NAVFAIL (it screws the meta), remove CAL_PATH environment variable usage - l1a_seawifs.c, load pixnum array in l1rec, remove CAL_PATH environment variable usage, upgraded new cal-table format support from EVAL to standard. - l12_seawifs.c, upgraded new cal-table format support from EVAL to standard. - l1_hdf_generic_write.c, fix indexing for less than 8 bands, upgraded new cal-table format support from EVAL to standard. - l1_hdf_generic_read.c, fix indexing for less than 8 bands. - l1_io.c, init pixnum field of l1rec. - l1_modis_hdf.c, remove CAL_PATH environment variable usage, clean-up. - l1_mos_hdf.c, make a large array in bilinear() static, to fix Fedora problem. - l2_hdf_generic.c,upgraded new cal-table format support from EVAL to standard. - loadl1.c, upgrade new E-S distance to standard processing, pass demfile and polfile. - Makefile, no more MSl1bingen. - MSl12.c, status messages. - msl12_input.c, extensive mods to load defaults from external files. - MSl12.mk, add polcor.c. - MSl1brsgen.c, call new msl12_input_defaults() to set input defaults. - MSl1brsgen.mk, add polcor.c. - MSl1info.c, call new msl12_input_defaults() to set input defaults. - MSll2snpx.c, call new msl12_input_defaults() to set input defaults. - polcor.f, new source file to consolidate polarization corrections. - rdsensorinfo.c, changed name of sensor info file, don't read gains, offsets. - setflags.c, reinstate EVAL version of glint-subtracted cloud test. libswfl1a - calibrate_l1a.c, upgraded new cal-table format support from EVAL to standard. libswfcal - get_cal.c, upgraded new cal-table format support from EVAL to standard. - get_cal_misc.c, upgraded new cal-table format support from EVAL to standard. inc/swfinc - get_cal.h, upgraded new cal-table format support from EVAL to standard. - getcal_proto.h, upgraded new cal-table format support from EVAL to standard. data * the following are new data files - seawifs/msl12_defaults.par - seawifs/msl12_sensor_info.dat - octs/msl12_defaults.par - octs/msl12_sensor_info.dat - osmi/msl12_defaults.par - osmi/msl12_sensor_info.dat - mos/msl12_defaults.par - mos/msl12_sensor_info.dat - polder/msl12_defaults.par - polder/msl12_sensor_info.dat - modisa/msl12_defaults.par - modisa/msl12_sensor_info.dat - modist/msl12_defaults.par - modist/msl12_sensor_info.dat * the following files were renamed - seawifs/cal/SEAWIFS_SENSOR_CAL.TBL-200501 to SEAWIFS_SENSOR_CAL.TBL-200404 - seawifs/seawifs_filter.dat to seawifs/msl12_filter.dat - octs/octs_filter.dat to octs/msl12_filter.dat * the following files were moved - modisa/rayleigh/*polsen* to modisa/cal - modisa/rayleigh/*pol_cor* to modisa/cal - modist/rayleigh/*polsen* to modist/cal - modist/rayleigh/*pol_cor* to modist/cal defunct data * the following files are no longer used - seawifs/seawifs_def_l2prod.dat - seawifs/seawifs_table.dat - octs/octs_def_l2prod.dat - octs/octs_table.dat - osmi/osmi_def_l2prod.dat - osmi/osmi_table.dat - mos/mos_def_l2prod.dat - mos/mos_table.dat - polder/polder_def_l2prod.dat - polder/polder_table.dat - modisa/modisa_def_l2prod.dat - modisa/modisa_table.dat - modist/modist_def_l2prod.dat - modist/modist_table.dat - seawifs/cal/SEAWIFS_SENSOR_CAL.TBL-200206 - seawifs/cal/SEAWIFS_SENSOR_CAL.TBL-200401 * the following environment variables are no longer used - MODISA_POL_PATH - MODIST_POL_PATH - MODISA_CAL_PATH - MODIST_CAL_PATH - CAL_HDF_PATH - OSMI_CAL_PATH 4.0.1 4 May 2004 Add brightness temperature products and change sst product scaling. src - l12_parms.h, version number. - l2prod.h, add BT_11, BT_12. - get_l2prod_index.c, add BT_11, BT_12, and change sst from byte to int16. - l2_hdf_generic.c, add BT_11, BT_12. 4.0.1.eval 4 May 2004 New EVAL pressure correction for Rayleigh. src - getrayleigh.f, added alternate pressure correction (Wang, 2004) to EVAL variant. - setflags.c, commented-out the alternate cloud test in EVAL variant. 4.0.2 10 May 2004 Add ability to use Reynolds OISST binary files as input to NLSST algorithm. src - l12_parms.h, version number. - sst.c, new functions to determine sst reference file type, get_sstref(), and to read and interpolate Reynolds oisst files, get_oisst(). - loadl1.c, change interface for loading sstref field in l2rec. - l12_proto.h, added get_sstref() proto. - get_l2prod_index.c, change sstref scaling from byte to int16. data - common/sst_climatology.hdf, updated to fill mixed land/water pixels with neighboring water pixels. - modisa/msl12_defaults.par, updated brdf_opt, polfile, gain, albedo to reflect reprocessing. 4.0.3 19 July 2004 Add Carder semi-analytic chlorophyll model. Update 3-band calcite algorithm. src - l12_parms.h, version number. - carder.c, Carder model and routines to interface with MSl12, function to read and interp. NDT. - l2prod.h, add support for Carder model products. - get_l2prod_index.c, add support for Carder model products. - l2_hdf_generic.c, add support for Carder model products. Update calcite call. - water_spectra.c, new routines for interpolating oceanic optical properties (e.g., aw of Pope & Fry) to specific wavelengths (courtesy of NRL). - spectral.h, include file for water_spectra.c. - table.h, include file for water_spectra.c. - l1_io.c, initialize sst. - l12_proto.h, carder function prototypes added, calcite function updated. - l2struc.h, added Rrs field. - alloc_l2.c, added Rrs field. - get_rrs.c, expanded to do full scanline processing as an option. - convl12.c, always compute Rrs. - calcite.c, add MODIS support, upgrade C-wrapper to become full algorithm (replaces get_calcite.c, coccolith.f). - get_dem_height.f, replace type statements with print statements (suggestion of Paul M.). - l1subpix.c, replace memcpy with safer memmove (suggestion of Paul M.) - get_calcite.c, defunct. - coccolith.f, defunct. libswfnav - *.f, replace type statements with print statements. libai - inter.f, remove unneeded readonly for linux (suggestion of Paul M.) data - common/carder.par, Carder model coefficients. - common/ndt.hdf, global map of nitrogen depletion temperatures. 4.0.4 26 July 2004 Add calculation for degree-of-polarization (dpol) and high-polarization flags (HIPOL) based on threshold of dpol. Cleaned-up product suite to eliminate many unneeded, non-standard products including log and pigment variants of chlorophyll algorithms, and the poorly documented neural-net chlorophyll algorithm. Renamed the gs97 code to gsm01 to better reflect the current algorithm state. Updated 3-band calcite code. src - l12_parms.h, version number. - l2prod.h, remove old logchl prods, chl_nn, and pigment products Add dpol. Change gs97 to gsm01. Remove cloud optical thickness, tauc. - get_l2prod_index.c, remove old logchl prods, chl_nn, and pigment products. Add dpol. Remove alternate name gs97 for gsm01. Remove tauc. - l2_hdf_generic.c, remove old logchl prods, chl_nn, and pigment products. Add dpol. Remove tauc. - get_chl.c, remove old logchl prods, chl_nn, and pigment products. - calcite.c, update for out-of-band effects. - gs97.c, defunct. - gsm01.c, renamed from gs97.c. dropped logchl. - atmocor1.f, add dpol computation and return. - loadl1.c, return dpol from atmocor1. - l12_proto.h, add dpol to atmocor1() args. - l1_struc.h, add dpol field. - l2_struc.h, add dpol field. - alloc_l1.c, add dpol allocation. - convl12.c, copy dpol pointer to l2 record. - l2_flags.h, add HIPOL flag. - setflags.c, set HIPOL flag. Only call aeroindex for SeaWiFS (don't trust it). - input_struct.h, add hipol threshold for setting HIPOL flag. - msl12_input.c, add hipol threshold for setting HIPOL flag. - cpl1rec.c, copy input pointer. - filter.h, moved prototypes to l12_proto.h and removed include of l1q_struc.h to fix a conflict which prevented the input structure from being included in l1_struc. libcloud - no longer required, sice tauc product was removed. 5.0.0 13 October 2004 This is a major rewrite of the aerosol correction code, to improve flexibility and allow for a variable number of sensor bands. Much of the old code has been rewritten in C. Many old source files are no longer in use, and many new source files have been added. New data formats for Rayleigh and aerosol tables have also been introduced. Aerosol models are now stored in individual HDF files. Many band-related quantities have been moved to the relevant external msl12_sensor_info.dat file. src The following source files are defunct - aeroplus.f - atmocor2.f - atmocor_set.f - calc_aero_refl.f - diffuse_transmittance.f - ff.f - fourier_a_b_c.f - franzaer.f - funct_eps.f - getaer.f - getaermod.f - getaerosol.f - get_brdf.f - getdtran.f - getglint_rad.f - get_pigment_nn.f - getwcap.f - gordon_tau_a.f - levmarq.f - linear_a_b_c.f - load_aer.f - load_ss11.f - lspline.f - nlw_outband.f - rhoa_from_taua.f - rho_a_sub_quad.f - spl1d.f - wangaer.f - wtaer.f - ylgint.f The following source files have been added: - aerosol.c, all functions relating to aerosol model selection and use. - airmass.c, airmass computations, including spherical variants. - atmocor2.c, replaces fortan version of Lt to nLw function. - brdf.c, all function relating to selection and use of ocean BRDF algorithm. - fluorescence.c, fluorescence line height and fluorescence efficiency. - glint.c, glint radiance function (replaces getglint_rad.f). - ipar_arp.c, instantaneous PAR and ARP algorithms. - lspline.c, linear interpolation and spline functions. - nlw_outband.c, out-of-band nLw corrections (replaces nlw_outband.f). - water.c, reads and interpolates water absorption and backscatter tables. - whitecaps.c, whitecap radiances (replaces getwcap.f). - windex.c, finds nearest wavelength table index for input wavelength. The following source files have been changed: - amoeba.c, add control for max iterations. - atmocor1.f, generalized band indexing, elimination of support for band- dependent view angles, new whitecaps() function. - atmocor_init.f, reduced parameter set in fortran common. - calcite.c, major rewrite, including addition of 2-Band algorithm. - carder.c, add bbp product, set CHLFAIL and CHLWARN flags as appropriate. - convl12.c, new atmocor2 interface (C function), eliminate atmocor_set(). - convl21.c, generalized band indexing, new BRDF interface. - cpl1rec.c, new iwave, fwave copied (see l1_struc.h). - filter.c, generalized band indexing, clean-up. - get_chl.c, set CHLFAIL and CHLWARN flags as appropriate. - get_es.c, clean-up. - getglint.f, conflict with PI define. - get_l2prod_index.c, new products (see l2prod.h), generalized band indexing. - getozone.f, added but disabled spherical airmass for ozone. - get_par.c, generalized band indexing. - get_poc.c, set CHLFAIL and CHLWARN flags as appropriate. - getrayleigh.f, use standardized HDF Rayleigh tables for all sensors, which includes use of Q and U components. Generalized band indexing. Elimination of support for band-dependent view angles. - get_rhown_nir.f, pass sensorID to avoid need for common block. - get_tsm.c, added MODISA, MODIST algorithm. Set CHLFAIL and CHLWARN flags as appropriate. - gsm01.c, major rework with switch to amoeba optimization, generalization for non-SeaWiFS band, and expansion of output parameter suite to include IOPs at all sensor wavelengths. Set CHLFAIL and CHLWARN flags as appropriate. - input_struc.h, new fields include list of aerosol models to use and number of models, aermodels and naermodels, and model pair and ratio for new fixed model-pair option, aermodmin, aermodmax, and aermodrat. Former taua input field has been converted to per band input, and former tau_a_per_band has been eliminated. New evalmask input for algorithm tests. - l12_parms.h, removed alternate or defunt aerosol option identifiers. Added new BRDF option identifiers and EVAL option identifiers. Also defined PI. - l12_proto.h, many new prototypes added, old prototypes deleted. - l12_seawifs.c, generalized band count. - l1a_osmi.c, generalized band indexing. - l1a_seawifs.c, generalized band indexing. - l1_hdf_generic_write.c, clean-up. - l1_modis_hdf.c, generalized band indexing. Radcor application disabled. Also added functions for vicarious RVS/destriping corrections, but disabled. - l1_mos_hdf.c, generalized band indexing. - l1_octs_hdf.c, generalized band indexing. - l1_polder.c, clean-up. - l1_struc.h, replaced wavelength array field wl with int and float variants iwave and fwave. - l2_hdf_generic.c, added new products for calcite, flh, ipar, arp, cfe, and gsm01. Generalized band indexing. - l2prod.h, added new products for calcite, flh, ipar, arp, cfe, and gsm01. - l2_struc.h, replaced wavelength array field wl with int and float variants iwave and fwave, and added number of scans fields nscan. - loadl1.c, reduced parameters to atmocor_init. Generalized band indexing. - MSl12.c, informational changes, new aerosol selection identifiers. - msl12_input.c, added eval, tau_a_per_band now called taua (old taua parameter dropped), generalized band indexing, added support for aermodels list of aerosol models to use. - polcor.f, generalized band indexing. - rdsensorinfo.c, added support for out-of-band coefs, water a and bb. - sensor_cmn.fin, removed many defunct variables from common. - setflags.c, disabled aerosol index flag, generalized band indexing. - sst.c, moved path to brightness temperature tables to cal subdir. - time_utils.c, added zulu2unix() function. - time_utils.h, added zulu2unix() function. The following utility-program source files have also changed: - MScalmerge.c - mscal_struc.c - mscal_struc.h - MScaltarget.c - MSl1info.c libs The following libraries are no-longer used by MSl12 - libai, aerosol index - libcloud, cloud optical thickness data The following data files are now defunct: - data/foq/* - data/*/transmittance - data/*/rayleigh/*pol_ray_B.dat - data/seawifs/aerosol/coef_quad*.dat - data/seawifs/aerosol/seawifs_aerosol*.dat (except seawifs_aerosol_par.dat). - data/seawifs/aerosol/abs_aerosol_seawifs.dat - data/modisa/aerosol/modis_aerosol*.dat - data/modist/aerosol/modis_aerosol*.dat - data/modisa/rayleigh/*iqu3.hdf - data/modist/rayleigh/*iqu3.hdf - data/modisa/bt_modisa.hdf (moved to cal subdir) - data/modist/bt_modisa.hdf (moved to cal subdir) The following files are new: - data/*/aerosol/*.hdf - data/*/rayleigh/*iqu.hdf - data/modisa/cal/bt_modisa.hdf - data/modist/cal/bt_modisa.hdf - data/common/morel_fq.dat - data/common/water_spectra.dat The following files have changed: - data/*/msl12_defaults.par - data/*/msl12_sensor_info.dat 5.0.1 20 October 2004 src - l12_parms.h, version number change. - aerosol.c, change in form of transmittance pressure correction (no impact to standard processing). - msl12_input.c, usage message updated, require nband gains, offsets, tauas. - MSl2validate.c, generalized product list. - msl2val_hdf.c, generalized product list. - msl2val_struc.h, generalized product list. - read9km_mask.c, modified to handle other L3 resolutions. 5.0.2 25 October 2004 src - l12_parms.h, version number change. - gsm01.c, limit bands used in optimization to those below 600nm. - convl21.c, generalize selection of visible wavelengths. - atmocor2.c, generalize selection of visible wavelengths. - input_struct.h, added metafile field for optional output meta-data file. - msl12_input.c, init and populate metafile field. - l2_hdf_generic.c, open and write to metafile. 5.0.3 2 November 2004 src - l12_parms.h, version number change. - gsm01.c, set CHLFAIL when optimized chl < 0.0. - ipar_arp.c, change integration of ipar an arp to use hc/lambda. - getrayleigh.f, clean-up. - filter.c, die if filter file not found. - msl12_input.c, usage message update. 5.0.4 15 December 2004 Fixes for OSX and Solaris ports. Fixes for various discrepancies and non-standard code reported by Paul Martinolich (beta tester). Update for windspeed-dependence in Fresnel BRDF correction. New straylight filter. src - l12_parms.h, version number change. - aerosol.c, changed scope of compalphaT for OSX port. Fixes for alternate aerosol selection scheme (models indexed from 0). - getrayleigh.f, use iand for bitwise test (more standard). - l1_mos_hdf.c, remove redundant memcpy of image to Lt. - l1_osmi_hdf.h, fixed prototype names. - msl12_input.c, fixed numTauas count in taua input. - MSl1brsgen.c, support for MODIS 6,5,3 rgb. - calc_par.f, replace jint, jmod with int, mod intrnsic functions. - l1_generic.c, replace memalign with malloc. - parse_file_name.c, informational. - l1_modis_hdf.c, add support for rescaled land bands and L1A extracts. - MSscanpixlimits.c, fix for L2 file identification support. - filehandle.h, add L2 file identification support. - getformat.c, add L2 file identification support. - MSl1brsgen.c, - brdf.c, remove return value on void function foqint. - atmocor1.f, break long line for solaris. - get_dem_height.f, break long line for solaris. - glint.c, no functions defined within functions for solaris. - water.c, changed return to exit on error. - get_dem_height.f, solaris did not like FILENAME_MAX - convl12.c, remove confusing OUTPUT_NLW option. - alloc_target.c, force initialization of record to 0. - alloc_aer.c, force initialization of record to 0. - rdsensorinfo.c, incorrect usage of memset (presumably ineffective?). - MSl12.c, corrected reporting for aer_opt selection. - brdf.c, add windspeed dependence to fresnel_sol(). - atmocor2.c, passpass windspeed to brdf function. - convl21.c, pass windspeed to brdf function. - filter.c, add stlight filter function. - filter.h, add stlight filter. - l12_proto.h, at windspeed to ocbrdf(). - polcor.f, alternate computation of polcor correction. - l1_octs_hdf.c, rename defines to reduce warning messages. - l1_hdf_generic_write.c, rename defines to reduce warning messages. 5.0.5 20 December 2004 Handle new rescaled L1B MODIS. Minor fixes. src - l12_parms.h, version number change. - l1_modis_hdf.c, handle new flags UNRESCALED_HIGH_SI and RESCALED_L1B_SI. - brdf.c, fix for fresnel_sol() implementation. - getglint.f, set lower limit on windspeed to prevent divide by zero. 5.0.6 4 January 2005 PAR bug fix. src - l12_parms.h, version number change. - get_par.c, bug fix (broke on v5.0.0). 5.0.7 11 January 2005 Work-around for extract problem. src - l12_parms.h, version number change. - l1_modis_hdf.c, work-around for processing extracts with incorrect meta and/or sentinel values. 5.0.8 24 January 2005 Rudimentary CZCS support. src - l12_parms.h, version number change. Add CZCS sensor identifier. - l1_czcs_hdf.c, new CZCS i/o routines. - l1_czcs_hdf.h, include for above. - MSl1info.c, add CZCS as new sensor and orbit = ASCENDING. Fix csolz. - getformat.c, add CZCS branch and recognition - filehandle.h, add codes for czcs - l1_io.c, add calls to openl1_czcs, readl1_czcs, closel1_czcs - msl12_input.c, changed usage message. - MSscanpixlimits.c, changed usage message. - MSl1brsgen.c, changed usage message. - MSl2validate.c, changed usage message. libczcs - new czcs cal/nav support library. data - czcs, new czcs sensor data directory 5.1 4 February 2005 Upgrade evaluation changes to standard, in preparation for MODIS/Aqua reprocessing. src - l12_parms.h, version number change. - getrayleigh.f, new pressure correction is only pressure correction. - atmocor2.c, removed old transmittance pressure correction. - aerosols.c, new transmittance pressure correction now standard. - polcor.f, new 1/(1-f) correction form now standard. - setflags.c, always subtract glint before cloud test, all sensors. - l1_modis_hdf.c, fixed handling of 65521 flag for non-rescaled L1A case. 5.1.1 2 March 2005 Fix for Solaris, and work-around for bad MODIS geo times. src - l12_parms.h, version number change. - l1_modis_hdf.c, replace atan2f wit atan2 in polarization alpha comp, to fix error in Solaris. Use last good geolocation frame time when -1.0 is encountered. 5.1.2 1 April 2005 Add QAA iop algorithm, Kd_lee spectral diffuse attenuation, and base iop switching option. Also add basic L2 processing support for czcs. Fixed some divide-by-zero errors. Fix error in reporting NIR nLw model values. - l12_parms.h, version number change. Add IOP selection identifiers, QAA opts. - alloc_l2.c, add space for a and bb IOP fields. - carder.c, add iops_carder() function. - convl12.c, call get_iops() to load a and bb fields. - get_l2prod_index.c, add QAA model products, and a and bb products. - gsm01.c, separate run_gsm01() from get_gsm01() functions to support new iops_gsm01() function. Fixed model to l2rec band indexing for case of sensors with less than 9 bands. - input_struc.h, add iop_opt, qaa_opt, and qaa_s param fields. - l12_proto.h, new funcs invbindx(), get_iops(), get_qaa(), iops_qaa(), ipos_gsm01(), iops_carder(). - l2_hdf_generic.c, new QAA prods and a and bb prods. - l2prod.h, new QAA prods and a and bb prods, Kd_lee. - l2_struc.h, add a and bb IOP fields. - msl12_input.c, handle new iop_opt, qaa_opt, and qaa_s params. - windex.c, add inverse band indexing function. - get_qaa.c, MSl12 interface to QAA algorithm. - qaa.c, Quasi-Analytical Algorithm (QAA). - get_Kd.c, new consolidated source for Kd algorithms, including spectral Kd algorithm of Z.P.Lee. - l1_czcs_hdf.c, updates from WR. - nr_spline.c, comments. - getrayleigh.f, CZCS selection. - aerosol.c, change rhoa_to_rhoas to double precision, to fix DBZ error. - getrayleigh.f, change pressure correction to double precision, to fix DBZ error. - atmocor2.c, fix indexing error when saving NIR nLw model values. - MSl12.mk, add qaa.c, get_qaa.c, get_Kd_lee.c. defunct src - get_k490.c, absorbed into new get_Kd.c data - czcs/rayleigh, new rayleigh tables (approximated) 5.1.3 6 April 2005 Add alternate brdf_opt (Morel Q) for Ken Voss test. Also, added iter_gsm01 product (number of iterations fitting GSM01), and fixed error in flags_carder product. For Kd_lee, if no iop model was selected, default to use QAA. src - l12_parms.h, version number change. New QMOREL brdf_opt identifier. Define default IOP model, IOPDEFAULT, as IOPQAA. - brdf.c, added switch in foq_morel() to use observed solz in numerator and denominator, effectively cancelling f and yielding a Q correction. - carder.c, changed form of get_flags_carder() to fix segfault error. - gsm01.c, added get_iter_gsm01() function. Also changed to return results even for max iteration case and chl < 0 case (CHLFAIL set). - l12_proto.h, changed form of get_flags_carder(), added get_iter_gsm01(). - get_l2prod_index.c, added iter_gsm01 product. - l2prod.h, added iter_gsm01 product. - msl12_input.c, expanded usage for brdf_opt. - l1_modis_hdf.c, improved error message. - l2_hdf_generic.c, added iter_gsm01 product, and changed call to get_flags_carder(). - get_Kd.c, use default IOP model when IOPNONE is selected and Kd_lee is requested as output product. 5.2.0 20 May 2005 Finish transition of SeaWiFS to Thuillier (forgot Fonom). SeaWiFS chl will change slightly. OBPG Kd now default K_490. Add new aerosol options for CZCS. Initial implementation of 4um sst, and some checks to avoid processing of visible bands for night data. Fix indexing error in NDVI and EVI functions. Add a new direct-access wavelength indexing scheme to simplify algorithm to band mapping. NIR rhown fix to use proper sensor variants.. src - l12_parms.h, version change, NBANDSIR increased to 4 for sst4 support, added MS6 and MS6NIR aerosol options for CZCS, SOLZNIGHT solarzenith threshold for recognizing nighttime data, eval switch for reverting to Neckel&Labs Fonom. - loadl1.c, default to Thuillier nominal-band F0 (eval=1 for N&L). Initialize new direct access wavelength index. Check nav before calling get_dem_height(). - get_f0.c, fix initialization problem. - get_Kd.c, generalized and updated the OBPG Kd algorithm. - get_chl.c, generalized band selection, added CZCS variant of OC3. - l12_parms.h, new MS6 and MS6NIR and SOLZNIGHT defined. - MSl12.c, add informational messages for MS6 and MS6NIR. Dropped OUTPUT_NLW option. Force pixel control point increment to one for small scenes. - atmocor2.c, add switches for MS6 and MS6NIR, change incrementation loops for NIR correction. to handle case of nir_l = nir_s. - aerosol.c, switched model_taua() to use longest sensor wavelength rather than longest table wavelength (should only change CZCS). Add czcsaer aerosol scheme (still developing). - nlw_outband.c, use 443/555 ratio for CZCS. - windex.c, added new windex_set, windex_get, bindex_get functions to simplify sensor to algorithm wavelength selection. - l12_proto.h, added prototypes for windex and sst4. - l1_modis_hdf.c, read 4um bands 22 and 23 for sst4. Skip night data for visible bands. - sst.c, add 4um sst functions. - l2prod.h, add sst4. - l2_hdf_generic.c, add sst4. - get_l2prod_index.c, add sst4. Add defaullt chlor_a for CZCS. Switch K_490 to use OBPG Kd. - setflags.c, avoid cloud, glint tests for night data. change upper limit on NEGLW check to 600nm (was 570) for MOS. - convl12.c, don't do OC processing for night data. - get_ndvi.c, fix band indexing error. - filehandle.h, clean-up. - get_rhown_nir.f, add CZCS variant (not working yet). Also, sensorID params were not defined, so SEAWIFS was always selected. Fix will change MODISA slightly. - MSl1brsgen.c, change scaling back to old format for non-MODIS sensors. - MSl1tcpcbox.c, new RGB mapper. - MSl1tcpcbox.mk, makefile for above. data - czcs/msl12_sensor_info.dat, updated values and dropped 750 band. - czcs/msl12_defaults.par, updated values and dropped 750 band. - modisa/cal/bt_modisa.hdf, expanded to include 3.9 and 4um channels. - modisa/cal/bt_modist.hdf, expanded to include 3.9 and 4um channels. 5.2.1 7 June 2005 Implement spectral optimization. src - l12_parms.h, version change, add MSSOA & MSSMA identifiers. - convl12.c, call run_soa if aer_opt is MSSOA. - MSl12.c, add informational messages for MSSOA and MSSMA. - l12_proto.h, added prototypes run_soa, atmcor_soa_ and related utilities. - l2prod.h, added chl_soa, bbp_soa, adg_soa, w0_soa, v_soa. Moved struct definition to new l2prod_struc.h and proto to l12_proto.h, so O.K. to include in fortran code. - l2_hdf_generic.c, add soa products. - get_l2prod_index.c, add soa products. - atmcor_soa.f, new module containing SOA models and optimization code. - soa_sma_utils.f, new utilities to store asnd retrieve optimization results. - soa.c, new wrapper to feed SOA routine. - l2prod_struc.h, new file, struc defintion moved from l2prod.h data - seawifs/aerosol/seawifs_hzc*.dat, new haze-C aerosol tables for SOA 5.2.2 Clean-up and generalization changes from Paul Martinolich. src - l12_parms.h, - aerosol.c, clean-up unused vars. - alloc_l1.c, add nbands, nbandsir to arg list. - atmocor1_land.c, clean-up unused vars. - atmocor2.c, code indentation. - brdf.c, code indentation. - calcite.c, code indentation. - carder.c, rename init_carder() to alloc_carder(). - getl1rec.c, pass nbands, nbandsir to alloc_l1(). - get_l2prod_index.c, ??? - get_qaa.c, pass nbands to alloc_qaa and change doubles to floats. - l12_proto.h, new alloc_l1() proto. - l1_polder.c, pass nbands, nbandsir to alloc_l1(). - MScalmerge, pass nbands, nbandsir to alloc_l1(). - MScaltarget, pass nbands, nbandsir to alloc_l1(). - MSl12.c, pass nbands, nbandsir to alloc_l1(). - MSl1bgen.c, pass nbands, nbandsir to alloc_l1(). - MSl1brsgen.c, pass nbands, nbandsir to alloc_l1(). - MSl1info.c, pass nbands, nbandsir to alloc_l1(). - MSl1tcpcbox.c, pass nbands, nbandsir to alloc_l1(). - MSscanpixlimits.c, pass nbands, nbandsir to alloc_l1(). 5.2.3 10 August 2005 Generalization changes from Paul Martinolich. Add new ATMFAIL condition for case of negative rhoa(nir). Fix potential for negative AOT (set rhoa to at least 1e-6 if near zero). Trap bad Angstrom. Remove view-angles-per-band support. Fix bug for ctl_pt_incr=0 (added in 5.2.0).. src - l12_parms.h, version number change. - MSl1brsgen.c, updates for CZCS & OCTS. - MScaltarget.c, pass nbands to allocation functions. - MSl12.c, pass nbands to allocation functions. - alloc_aer.c, add nbands argument to allocation functions. - alloc_l2.c, add nbands argument to allocation functions. - alloc_target.c, add nbands argument to allocation functions. - l12_proto.h, add nbands argument to allocation functions. Add proto for get_rhown_nir(). - carder.c, pass nbands for allocation of static arrays. - get_chl.c, pass nbands of band selection. Add OC3 variant for seawifs. - atmcor_soa.f, limit to 72 cols, fix discrepancy in common. - l2_flags.h, standardize some flag names (TURBIDW, HITAU). - setflags.c, standardize some flag names. - l1_czcs_hdf.c, add ringing mask. - aerosol.c, fail cases of very negative input aerosol reflectances. Trap bad angstrom products as CHLFAIL. - atmocor2.c, add ability to disable ramping of NIR correction, and do so for CZCS. Call new C version of NIR correction. - get_rhown_nir.c, new C version of NIR correction with update for CZCS. - l1_modis_hdf.c, remove tsolz, tsenz, tsola, tsena, remove radcor support.. - l1_xcal_hdf.c, remove tsolz, tsenz, tsola, tsena. - l1subpix.c, remove tsolz, tsenz, tsola, tsena. - convl12.c, , remove tsolz, tsenz, tsola, tsena. - l1_polder.c, remove tsolz, tsenz, tsola, tsena. - l1_octs_hdf.c, remove tsolz, tsenz, tsola, tsena. - l1_mos_hdf.c, remove tsolz, tsenz, tsola, tsena. - l1_hdf_generic_write.c, remove tsolz, tsenz, tsola, tsena, tdelphi, EXTENDED format. - l1_hdf_generic_read.c, remove tsolz, tsenz, tsola, tsena, delphi, EXTENDED format. - l1_generic.c, remove tsolz, tsenz, tsola, tsena. - l1a_seawifs.c, remove tsolz, tsenz, tsola, tsena. - l1a_osmi.c, remove tsolz, tsenz, tsola, tsena. - alloc_l1.c, remove tsolz, tsenz, tsola, tsena, tdelphi. - l1_struc.h, remove tsolz, tsenz, tsola, tsena, tdelphi. - l2_struc.h, remove tsolz, tsenz, tsola, tsena, tdelphi. - loadl1.c, remove tdelphi computation. - l1_io.c, remove EL1B & EL1HDF format support. - filehandle.h, remove EL1B & EL1HDF format identifiers. - MScalmerge.c, remove reference to EL1HDF. defunct src: - get_rhown_nir.f, replaced with get_rhown_nir.c data - czcs/aerosol/*, updated diffuse transmittance to use actual CZCS RSRs. 5.3.0 13 September 2005 Major update to SST algorithms in preparation for transition of official MODIS SST processing responsibility to OBPG. Also support for MODIS high resolution bands. src - l12_parms.h, version number change. Added DAYSCENE, NIGHTSCENE, MIXEDSCENE defines for granule daynight identification. Increase MAXPIX to 5500 for hires MODIS. - sst.c, reads new external, time-dependent algorithm coefficient files. Computes quality flags and quality levels. Moved brightness temp and sstref function to separate source files. - brightness.c, new module to compute brightness temperatures. Handles 4um table inversion in log space. - sstref.c, new module of functions to read reference SST product (oisst or pathfinder). - l2_struc.h, added daynight meta field. - l2_hdf_generic.c, write daynight meta. Support for sst flag and quality level products and 4um BT products. Change buffer space to dynamic allocation (eliminate MAXPIX dependency). Compute daynight meta. Don't include SOA calls if SeaDAS (for now). - l2prod.h, support for sst flag and quality level products and 4um BT products. - get_l2prod_index.c, support for sst flag and quality level products and 4um BT products. - convl21.c, eliminate goto on negative calibration target, no effect to processing. - convl12.c, process sst by line rather than by pixel. Compute daynight meta. Don't include SOA calls if SeaDAS (for now). - get_chl.c, added OC2 variant for hires MODIS bands. - l1_modis_hdf.c, always compute brightness temps (no proc_sst test). Set radiance to zero for all cases of flagged L1B, including saturation (to simplify detection of saturated bands in downstream processing). Change get_hdfeos_meta() to return rather than exit on error, so it might work for IMAPP L1B. - getl1rec.c, allow l1que to be visible to other source files. Set minimum queue size to NQMIN=3, to ensure that sufficient line buffering is available for the SST homogeneity tests. - l12_proto.h, add prototype for retrieving SST products and associated flags. - l1_struc.h, eliminate level-1 sstwarn, sstfail flags, sst field. - alloc_l1.c, eliminate level-1 sstwarn, sstfail flags, sst field. - setflags.c, eliminate level-1 sstwarn, sstfail flags. - carder.c, check that sst pointer was assigned. - l1_io.c, support for HMODISL1B files, don't init sst field of l1rec. - soa_sma_utils.f, error checking. - getformat.c, support for hires MODIS files. - b128_msk_get.c, support for larger scene size of hires MODIS. - filehandle.h, support for HMODISA & HMODIST sensors & HMODISL1B file type. - getrayleigh.f, support for HMODISA & HMODIST sensors. - l1_hmodis_hdf.c, new module to read hires MODIS files. - l1_hmodis_hdf.h, new module to read hires MODIS files. - MSl1brsgen.c, allow rgb image from hires MODIS bands. - setanc.c, eliminate MAXPIX dependencies. - atmocor2.c, fixed bug in fixed-aerosol model case (bug introduced in 5.2.3). - qaa.c, fixed indexing errors, use fixed aw and bbw for efficiency. - get_qaa.c, fixed indexing errors. - qaa.h, init function passes aw, bbw. data - hmodisa, new directory for HiRes MODIS/Aqua - hmodist, new directory for HiRes MODIS/Terra - modisa/cal/sst_modisa.dat, new sst algorithm coefficients - modisa/cal/sst4_modisa.dat, new sst4 algorithm coefficients - modisa/cal/bt_modisa.hdf, updated to log for 4um temperatures - modist/cal/sst_modist.dat, new sst algorithm coefficients - modist/cal/sst4_modist.dat, new sst4 algorithm coefficients - modist/cal/sst_mside_modist.dat, new sst mirror-side corrections - modist/cal/bt_modist.hdf, updated to log for 4um temperatures - octs/msl12_filter.dat, add straylight filter - */msl12_defaults.par, change from l2prod1 to l2prod, for consistency. 5.3.1 13 September 2005 Switch to RSMAS "collection 5" SST quality tests. Fix gsm01 to include above to below-water correction. src - l12_parms.h, version number change. - sst.c, collection 5 quality test changes. - gsm01.c, add translation from surface to subsurface. 5.3.2 27 October 2005 Changes to SST quality tests to remove relationships between short-wave and long-wave sst. Use Reynolds for day and night reference (not sst4 for night reference). Add RSMAS corrections for Terra radiometry (fixes striping in short-wave SST) and add filter for Terra to perform detector averaging. Also add capability to extend RGBN using aggregated MODIS land bands. For CZCS, add support for scene extact processing. Added ability to use aggregated bands to extend ocean bands, for standard L1B files. Added new combined calcite algorithm (2-band with switching to 3-band). Also added new set of stub functions for user defined products. src - l12_parms.h, version number change. - l1_modis_hdf.c, added (hardcoded) RSMAS corrections for Terra radiometry. Only destriping of thermal bands 22 and 23 is enabled. Added ability to extend RGBN bands using aggregated hires bands. - sst.c, changes to remove relationships between SST and SST4, and 11-12um and 4um BTs. - filter.c, add filter function to allow detector averaging/replacement. - filter.h, add filter function to allow detector averaging/replacement. - l1_czcs_hdf.c, mods to handle czcs scene extract files. - calcite.c, added combined calcite algorithm. Changed conversion from backscatter to calcite concentration. - myprod.c, new function to provide stubs for user-defined algorithms. - l2_hdf_generic.c, add support for calcite and myprod stubs. - l2prod.h, add support for calcite and myprod stubs. - get_l2prod_index.c, add support for calcite and myprod stubs. - l12_proto.h, add support for calcite and myprod stubs. - msl12_input.c, new coccolith coefficients (entered but not enabled). - MSl12.mk, added myprod.c. - MSl1info.c, fix for daynight flagging. - MSl1tcpcbox.c, remove relative referencing of includes. - convl12.c, fixed scene meta-data node calculation. data - modist/msl12_filter.dat, add filter specs to average detectors 4 and 8 of band 22 (NIR band 3). 5.3.3 21 November 2005 Changes to more fully support the HIRES MODIS processing. Major rewrite of polarization code to use a revised, band-specific table format, and to handle different numbers of detectors in each band/table. New tables were generated for standard MODIS as well. The band suite was also expanded to include the SWIR bands. Also reverted back to using the 4um SST as night reference for MODIS 11-12um SST and for quality tests. Added new absorbing aerosol flag. Added ability to read and apply MODIS cloud mask (PGE35), for evaluation only. src - l12_parms.h, new version number. Increase NBANDS to 12. Add eval identifiers for alternate cloud flagging (eval=2) and forcing polarization AOI to 60 from 60.5 (eval=1). - l12_proto.h, new polcor() proto. Add compute_alpha() proto. glint_rad(), modis_cloud_flag().. - l1_modis_hdf.c, store number of detectors per band (ndets) - l1_hmodis_hdf.c, store number of detectors per band (ndets). Read 2130nm band. - l1_struc.h, add number of detectors per band (ndets) and number of lines (nscans). - l2_struc.h, add number of detectors per band (ndets). - l1_io.c, transfer number of detectors per band (ndets) and nscans. - filehandle.h, add number of detectors per band (ndets). - filehandle_init.c, initialize ndets. - cpl1rec.c, transfer number of detectors per band (ndets) and nscans. - MSl12.c, transfer number of detectors per band (ndets) to l2rec. - get_f0.c, add function to read extended solar spectrum. - polcor.c, replaces code in atmocor1.f and old polcor.f to read new polarization table format and compute polarization corrections. - atmocor2.c, limit atmospheric corrections to longest NIR wavelength. Pass NIR indicies to glint_rad(). - glint.c, pass NIR indicies. - aerosol.c, remove wave and nwave parameters from aeroob. Remove assumption in get_angstrom() that the last band is the NIR band. - loadl1.c, standardized indexing variable names. Removed polcor & dpol from atmocor1 call and added call to new polcor() function. Use extended Thuillier spectra for hires MODIS (change all sensors someday). Remove option to call Neckel&Labs. - atmocor1.f, remove polarization computations (polcor,dpol) - atmocor1_land.c, clean-up. - get_l2prod_index.c, remove NBANDS dependency from nLw scaling. - sst.c, changes to reinstate relationships between SST and SST4, and 11-12um and 4um BTs. - setflags.c, added aerindex() and revised aborbing aerosol test. - msl12_input.c, change default threshold on absorbing aerosol test (absaer). - l2_hdf_generic.c, change processing time meta to GMT. - cloud_flag.c, new function to read and apply standard MODIS cloud flag. - MSl2validate.c, clean-up. - getformat.c, clean-up. - convl12.c, clean-up. - polcor.f, defunct. data - modisa/cal, add new polcor_modisa_*.hdf files and remove modisa_polsen_2004085.hdf. - hmodisa/cal, add new polcor_hmodisa_*.hdf files and remove modisa_polsen_2004085.hdf. - modist/cal, add new polcor_modist_*.hdf files and remove modist_polsen_2004175.hdf. - hmodist/cal, add new polcor_hmodist_*.hdf files and remove modist_polsen_2004175.hdf. - hmodisa/msl12_sensor_info.dat, include SWIR bands. - hmodist/msl12_sensor_info.dat, include SWIR bands. - modisa/msl12_defaults.par, new default polarization file, new absaer threshold. - modist/msl12_defaults.par, new default polarization file, new absaer threshold. - hmodisa/msl12_defaults.par, new default polarization file, new absaer threshold. - hmodist/msl12_defaults.par, new default polarization file, new absaer threshold. - czcs/l12_defaults.par, new absaer threshold. - seawifs/l12_defaults.par, new absaer threshold. - octs/l12_defaults.par, new absaer threshold. - mos/l12_defaults.par, new absaer threshold. - polder/l12_defaults.par, new absaer threshold. - czcs/l2bin_defaults.par, remove ABSAER masking. - seawifs/l2bin_defaults.par, remove ABSAER masking. - common/Thuillier_F0.dat, extended solar irradiance model. 5.3.3 6 Dec 2005 Bug fix for SST (J.Gales). Went directly into production. src - sst.c, fix case of data day less than 100 when reading coefficient files. 5.3.4 15 Dec 2005 Update for SST. Fixes for HIRES MODIS calibration. Other minor fixes. src - l12_parms.h, version change, - sst.c, reduce Reynolds difference from 6 to 5 for QL=3, SSTFAIL. - msl2val_hdf.c, at prototyping include. - getformat.c, add recognition of generic L1B formats from HMODISA and HMODIST. - l1_hmodis_hdf.c, fix frame number computation. - l1_io.c, initialize alpha and ndets (not set by generic i/o functions). - MSl12.c, for inverse processing, allow for target file to be pre-subsetted by scan. - polcor.c, prevent divide-by-zero. - MScalmerge.c, added fix to allow scan subsetted and non-subsetted L1B files to be merged, but wrapped fix in #if HCALFIX and disabled. 5.3.5 3 January 2006 Simplification of chlorophyll algorithms to use precomputed Rrs. Fix some unititialized vars in dem height. Change SST coefficient look-up to use the previous year when no new coefficients are provided. src - l12_parms.h, version change, - aerosol.c, fix for bad angstrom computation when fixed AOT option results in models out of range. - get_chl.c, pass Rrs where appropriate. - get_dem_height.f, add some vars to save command. - sst.c, change SST coefficient look-up to use the previous year when no new coefficients are provided. data - modist/cal/sst*, extend coefficient files into 2006. 5.3.6 11 January 2006 Add SSES error statistics for SST (source tables from RSMAS) to support GHRSST. New products bias_sst, bias_sst4, stdv_sst, stdv_sst4. Support new OCTS calibration table with temporal correction. src - l12_parms.h, version change, - sst.c, add functions to read RSMAS hypercube data from hdf tables and assign bias and standard deviation to each SST retrieval. Mask scan-edge pixels (<8 or >1345), and set to QL=3. Add test for 11-12um SST, in which the QL is set to 3 if the 4um BT difference is large relative to the reference 4um BT difference. - get_l2prod_index.c, add products bias_sst, bias_sst4, stdv_sst, stdv_sst4. - l2prod.h, add products bias_sst, bias_sst4, stdv_sst, stdv_sst4. - l2_hdf_generic.c, add products bias_sst, bias_sst4, stdv_sst, stdv_sst4. - l12_proto.h, prototypes for bias and stdv functions. - l1_octs_hdf.c, extensive changes to support new externalized calibration table, including temporal correction capabilities. lib - liboctscal, defunct (functionality incorporated into l1_octs_hdf.c). data - octs/msl12_defaults.par, new calibration. - octs/cal/octs_cal_nasda_v4.hdf, original NASDA calibration for OCTS, formatted to HDF. - octs/cal/octs_cal_notiltref_timedepnir.hdf, remove tilt reflectance correction, add NIR time dependence. - modisa/cal/sst_sses_modisa.hdf, error table for MODISA sst - modisa/cal/sst4_sses_modisa.hdf, error table for MODISA sst4 - modist/cal/sst_sses_modist.hdf, error table for MODIST sst - modist/cal/sst4_sses_modist.hdf, error table for MODIST sst4 5.3.7 3 February 2006 Changes for absorbing aerosol flag evaluation. Updates to SST QL flagging. CZCS nav update. Add ability to switch GSM01 model to Chesapeake model coefficients. src - l12_parms.h, version change. - input_struc.h, absaer_opt and gsm01_opt parameters, also additional changes for 5.4. - msl12_input.c, absaer_opt parameter and gsm01_opt parameters. - setflags.c, add functions to support use of climatologies for expected chl and nlw_412. - setupflags.c, include with MSl12, rename var null to nul. - sst.c, quality-level changes: allow sst to be 1-deg warmer than Reynolds for daytime before reaching QL=1. - l1_czcs_hdf.c, changes to utilize revised navigation. - l1_czcs_hdf.h, changes to utilize revised navigation. - MSl12.c, added informational message re along-track detectors. - gsm01.c, new gsm01_cb_model() coefficients, switched via gsm01_opt=1. data - common/S*_L3b_MC.hdf, binned monthly climatologies of nLw_412 and chlor_a from SeaWiFS. 5.4 14 February 2006 Significant changes to support 16-band HIRES MODIS concept. Generalization of various algorithm components, including new input parameters to select bands for aerosol selection process. src - l12_parms.h, version change, add eval mask for extended Thuillier. - l12_proto.h, changes to argument list of get_rhown_nir() and get_default_chl(). - input_struc.h, add aer_wave_short and aer_wave_long parameters to specify wavelengths to use for aerosol model selection. Add resolution parameter for switch control. - msl12_input.c, as above. - atmocor2.c, many changes to generalize handling of NIR corrections and specification of wavelengths used for model selection. - windex.c, adjust direct access band and wavelength indexing tables to allow for overlapping band passes (e.g., 551, 555). - l1_struc.h, add aw & bbw fields for band-averaged, sensor-specific coefficients. - l2_struc.h, add aw & bbw fields. - l2prod.h, added chl_oc3cb. - cpl1rec.c, replicate aw & bbw fields. - loadl1.c, load aw & bbw fields, allow use of extended Thuillier spectrum by non-HMODIS via eval=4. - get_rhown_nir.c, generalized to pass sensor wavelengths and band indices at which NIR water-leaving reflectance is desired. Use sensor-specific aw & bbw from l2rec. - l12_proto.h, new get_rhown_nir() prototype. - convl12.c, fix for scan-overlap when assessing orbit node. Transfer aw, bbw fields. - polcor.c, fix for computing detector number and AOI for varying resolutions. - aerosol.c, fixed epsilon interpolation for case of more bands than table contains. - nLw_outband.c, look for 551 rather than 555, since HMODIS has both. - get_chl.c, pass Rrs rather than nLw and Fo to get_default_chl.c. Added chl_oc3cb product. - brdf.c, change get_default_chl.c call. - soa.c, change get_default_chl.c call. - alloc_2d.c, added version for short int. - alloc_2d.h, added version for short int. - l1_hmodis_hdf.c, nearly complete rewrite to incorporate full 16-band suite and allow for switching resolutions. Geometry is now fully interpolated to the specified resolution. Lower-resolution radiances are also interpolated. Input file can be any one of the three MODIS L1B files (QKM, HKM, 1KM [LAC]). If 1KM or LAC, specifying resolution=1000 will switch from 9-band OC processing to 16-band processing. Access to resolutions of 250 and 500 require that the filenames follow a standard convention in that QKM, HKM, 1KM [or LAC] must appear once and only once in the filenames. - l1_modis_hdf.c, changed indexing variables to something meaningful. - filehandle.h, add resolution field. - filehandle_init.c, initialize resolution field. - MSl12.c, copy requested resolution to file handle. - getformat.c, check resolution when determining format. - getl1rec.c, when loading the queue, limit the record number to be no less than the start line, as specified by the user. - get_l2prod_index.c, added chl_oc3cb. - l2_hdf_generic.c, added chl_oc3cb. data - hmodisa/cal/polcor*, additional polarization tables. - hmodist/cal/polcor*, additional polarization tables. - hmodisa/rayleigh/*, additional rayleigh tables. - hmodisa/rayleigh/*, additional rayleigh tables. - hmodisa/msl12_sensor_info.dat, expand to 16 bands. - hmodist/msl12_sensor_info.dat, expand to 16 bands. - */msl12_defaults.par, modified defaults for all sensors: add aerosol selection wavelengths, expand hmodis gains, offsets to 16 bands. 5.4.1 14 March 2006 Corrections for 16-band HIRES MODIS and fixes for proper band indexing for some algorithms. Change emperical chlorophyll algorithms to allow user-specified coefficients. Eliminate octsc and ndpi algorithms. Fix corrupted files with DOS carriage returns. Update OCTS calibration algorithm and file. src - l12_parms.h, version change, add eval mask for new out-of-band coefficients (NEWOOB). - l1_hmodis_hdf.c, fixed intepolation of solar and sensor path geometry (they were swapped). Change data buffering to float for better interpolation. Support subframe destriping. Support extract processing. - carder.c, added specific band selection (was assuming band positions). - water.c, handle SWIR bands by using longest available wavelength from table. - gsm01.c, fixed mis-named adgstar in CB model argument (no effect). - l1_octs_hdf.c, updated calibration table and flagging. - get_chl.c, major changes: coefficients no longer specified in code, now specified in default parameter files. Old octsc and ndpi eliminated. Make OC3 the default for OSMI. - brdf.c, pass l2rec in calling sequence, so it can be passed to get_chl_default. - soa.c, change get_chl_default() calling args. - atmocor2.c, change get_chl_default() calling args, pass evalmask to nlw_outband(). - l12_proto.h, change get_chl_default() calling args, new nlw_outband() args. - msl12_input.c, support reading of chl algorithm coefficients. - l2prod.h, drop octsc and ndpi. - l2_hdf_generic.c, drop octsc and ndpi. - get_l2prod_index.c, drop octsc and ndpi, use OC3 as default for OSMI. - qaa.c, remove CRs. - qaa.h, remove CRs. - get_qaa.c, look for 551 rather than 555 (so 16 and 9-band versions give same result), remove CRs. - get_rhown_nir.c, remove CRs. - MSl1brsgen.c, change RGB selection for 16-band MODIS. - MScalmerge.c, remove quickfix for handling HIRES modis. - getformat.c, recognize CZCS L1B generic. - nlw_outband.c, install new coefficients for evaluation. - l1_io.c, set band indexing (previously not done until loadl1, but needed in l1_hmodis_hdf). - aerosol.c, modified MS6 & MS6NIR options (czcs) to select model based on Angstrom, when evalmask contains 16. - bin_climatology,c, new module to read rkm bin files as climatologies. - convl21, pass l2rec to ocbrdf. data - octs/cal/cal_octs_notiltref_timedep865.hdf, new OCTS cal table. - octs/msl12_defaults.par, new vicarious calibration. - */msl12_defaults.par, add chl algorithm coefficients specific to each sensor. - common/S*MC.hdf, updated climatologies, added angstrom_510 to 412, chlor_a. 5.4.2 19 April 2006 Continued development of HIRES MODIS; support for L1A extract processing. src - l12_parms.h, version change. - l1_hmodis_hdf.c, recognize when L1B was generated from L1A extract, set proper start pixel and line, reduce fields to extract region. Also "fix" singularity in senzor azimuth interpolation. Fix interpolation at scan edge and along-track boundaries. Allow LAC and 1KM variants in filename convention. Don't check for HILT on swir bands (1640 was setting dets 32-40 always. - l1_modis_hdf.c, removed support for old MODAPS "cookie-cutter" extracts. - MScalmerge.c, remove previous "HCALFIX" hacks and set resolution. - MScaltarget.c, set resolution. - MSl1bgen.c, set resolution. - MSl1tcpcbox.c, set band numbers of HIRES RGB image. 5.5 2 June 2006 Continued development of HIRES MODIS. Added SST capability. Added SWIR atmospheric correction and/or NIR Lw correction, with new inputs to control SWIR band selection.. Added new gaseous transmittance computation, user selectable, including support for no2, co2, and water-vapor, in addition to ozone. Changes inspired rewrite of much of the front-end of the atmospheric computions, (e.g, Rayleigh, ozone) from fortran to C. Eliminated need for band indexing, and removed it from external tables. src - l12_parms.h, version change, revised all aer_opt identifiers, add eval switch GASTRANS, add eval switch AEROOBFIX. and eval switch NLWPOLCAL. - aerosol.c, fixes to allow for the fact that the longest aerosol table wavelength is not neccessarily the long NIR wavelength, and to allow that aerosols be computed for all sensor wavelengths, including those that exceed the longest wavelength used for aerosol model selection. Also add support for CZCS model selection based on angstrom climatology. Added checks to ensure proper wavelength specification relative to aerosol option specification. Moved aersol-specific informational messages from main() to here. Moved the out-of-band water-vapor correction inside the log within rhoas_to_rhoa(), as it should be, and added a check for rhoas=0 before taking the log (these changes were wrapped in evalmask=AEROOBFIX as they will alter standard production slightly). - atmocor1.c, new C function to replace fortan version. call gaseous transmittance function rather than ozone-specific function. uses new rayleigh function. - atmocor2.c, add support for SWIR-based NIR Lw correction, all new aer_opt identifiers - atmocor_soa.f, stick old gordon_o2.f inside. - brightness.c, adjust detector numbers based on resolution. - carder.c, better fix for missing 510nm band. - convl12.c, switch MSSOA selector to AERSOA. - convl21.c, EVAL switch to fix polcor correction of tLw. - get_chl.c, fail chl if MBR exceeds 30 (czcs oc3 was blowing-up), put upper limit of 1000. - get_qaa.c, recognize HMODIS for appropriate 640 estimator. - get_tsm.c , call appropriate algorithm for HMODIS. - input_struc.h, add aer_swir wavelength fields. - l12_proto.h, passing resolution to radiancebt(). removed defunct fortran protos. - l1_hmodis_hdf.c, add loading and interpolation of thermal bands to support SST. - l1_modis_hdf.c, passing resolution to radiancebt(). - loadl1.c, call new C function for atmocor1(). - MSl12.c, moved aersol-specific messages to aerosol.c. - msl12_input.c, load aer_swir_short and aer_swir_long, simplify usage of aer_opt. - polcor.c, removed backward compatibiility for 60.0-deg AOI. - rayleigh.c, rewrite of getrayleigh.f, no change intended. - setflags.c, use SWIR band at 2130 for cloud screening, if it exists. Replace aerindex routine. - sst.c, recognize HMODIS variants, remove pixel-specific edge masking. - windex.c, fix for band differences longer than 1000nm. - whitecaps.c, switch to zero-based band indexing, as no called from C. - bin_climatology.c, function to read and interpolate 9km bin files. - gas_trans.c, new gaseous transmittance function. - MScalmerge.mk, add gas_trans.o, rayleigh.o, remove getozone.o, gordon_o2.o, getrayleigh.o - MSl12.mk, add gas_trans.o, rayleigh.o, remove getozone.o, gordon_o2.o, getrayleigh.o - MSl1brsgen.mk, add gas_trans.o, rayleigh.o, remove getozone.o, gordon_o2.o, getrayleigh.o - MSl1tcpcbox.mk, add gas_trans.o, rayleigh.o, remove getozone.o, gordon_o2.o, getrayleigh.o - atmocor1.f, defunct - atmocor_init.f, defunct - getozone.f, defunct - gordon_o2.f, defunct - getrayleigh.f, defunct - sensor_cmn.fin, defunct data - */msl12_defaults.par, add default gas_opt, add aer_swir_short and aer_swir_long for HMODIS. - */msl12_sensor_info.dat, add entries for co2, no2, and h2o sensitivities. 5.5.1 19 July 2006 Finalizing NO2 correction option, including loading of no2 fields from ancillary sources (stratospheric & tropospheric), options to output of those fields, and application for computing no2 transmittance. Adding new quality-level 4 for SST to indicate cases of true failure (SSTFAIL flag now set for QL=4). Added a mechanism to simplify switching of tables for evaluation purposes. Add evaluation rayleigh and aerosol tables developed by Zia Ahmad for modis and seawifs. Revised CZCS temporal calibration (code & table). Remove polfile from input structure; add eval switch to test alternate polfiles. The ozone transmittance product is now the gaseous transmittance product (t_oz_sol is now tg_sol, t_oz_sen is now tg_sen). src - l12_parms.h, version change, new eval switches for testing rayleigh, aerosol, and polarization tables. - l12_proto.h, add evalmask to calling args on rayleigh(). - l2prod.h, add no2_strat & no2_tropo products. - l2_hdf_generic.c, add no2 products. - get_l2prod_index.c, add no2 products. - l1_struc.h, add no2 fields. - l2_struc.h, add no2 fields. - alloc_l1.c, add space for no2 fields in l1rec. - msl12_input.c, add no2file, add usage for chlorophyll algorithm coeffs, remove polfile. - input_struc.h, add no2file, remove polfile. - setanc.c, call no2conc() to read no2 concentration from ancillary. - rdsensorinfo.c, read new no2 airmass function coefficients. - gas_trans.c, apply no2 algorithm from Z. Ahmad. - sst.c, set QL to 4 for unprocessed cases (land, saturation), and bias & stdv to -999, set SSTFAIL for QL=4 (was 2) and still set SSTWARN for QL=1. - sstref.c, fix potential indexing error. - aerosol.c, add eval switch for alternate "eval" path to aerosol tables. - rayleigh.c, add eval switch for alternate "eval" path to rayleigh tables. - atmocor1.c, pass evalmask input to rayleigh(). - water.c, change data type of firstCall. - convl12.c, transfer no2 field. - atmocor1_land.c, fix error in the band indexing for SeaWiFS water-vapor over land. - l1_czcs_hdf.c, new double exponential temporal calibration. - MSl1brsgen.c, fix indexing of start/end pixel & line (off by 1). - polcor.c, remove polfile input and just assume location based on sensor. - *.c, changed all references of t_oz_* to tg_*, including product names, e.g.: t_oz_sol_412 is now tg_sol_412. data - eval/seawifs/rayleigh/*, new rayleigh tables from Zia - eval/seawifs/aerosol/*, new aerosol tables from Zia, also moved the SOA models here so SeaDAS does not have to filter them out. - eval/modisa/rayleigh/*, new rayleigh tables from Zia - eval/modisa/aerosol/*, new aerosol tables from Zia - czcs/cal/cal_czcs.hdf, updated temporal calibration. 5.5.2 28 July 2006 Add evaluation support for new seawifs calibration table with revised temperature corrections. Update no2 transmittance. Improve scaling for browse and map RGB images. Add eval switches to fail MODIS pixels associated with a specific mirror side. src - l12_parms.h, version change, new eval switch for testing seawifs cal. new eval switches for MODIS mirror-side masking. - l1a_seawifs.c, support for new temperature corrections and associated cal table format. - gas_trans.c, revert to simple airmass function for no2. - rdsensorinfo.c, remove no2 airmass coefficients. - l1_modis_hdf.c, set all data for a given mside to navfail, if eval switch. - convl21.c, eval switch FIXPOLCAL was always on. - MSl1brsgen.c, land_min from 0.03 to 0.01. - MSl1tcpcbox.c, match brsgen scaling, disable cloud-specific scaling. libseawifs - get_cal.c, add get_cal_new(). - get_cal_misc.c, add read_parm_data_new(). - calibrate_l1a.c, add calibrate_l1a_new(). inc/swfinc - getcal_proto.h, add get_cal_new(), read_parm_data_new(). - call1a_proto.h, add calibrate_l1a_new(). - get_cal.h, add TFACTOR_FLDS_NEW. data - eval/seawifs/cal/SEAWIFS_SENSOR_CAL.TBL-200601, new cal table for testing. - *modis*/msl12_sensor_info.dat, remove no2 airmass coefficients. 5.5.3 21 August 2006 Reorganize atmospheric correction steps: move tLf outside of gaseous transmittance to simplify. New Morel spectral Kd product, revised CZCS calibration. Fix bug in aer_opt=-9. src - whitecaps.c, removed ozone transmittance adjustment from tLf. - atmocor1.c, no need to pass ozone optical thickness from gas trans to whitecaps(). - atmocor2.c, tLf now subtracted after Lt is corrected for ozone. - gas_trans.c, no need to pass ozone optical thickness out. - calcite.c, tLf now subtracted after Lt is corrected for ozone. - soa.c, tLf now subtracted after Lt is corrected for ozone. - setflags.c, in absaer(), tLf added before transmittance through gases. - filter.c, various filter funcs, tLf now subtracted after Lt is corrected for ozone. - polcor.c, don't subtract tLf from L_x. - convl21.c, tLf added before transmittance through gases. - l2_prod.h, add definition for Kd_morel. - get_l2prod_index.c, add definition for Kd_morel. - l2_hdf_generic, add support for Kd_morel. - get_Kd.c, add Kd_morel function. - l1_czcs_hdf.c, switch back to single exponential form for temporal calibration. - aerosol.c, fix to epsilon comp to allow multiple calls with different long-wave. - fluorescence.c, clean-up. data - common/Kd_morel.dat, coefficent table for Morel spectral Kd algorithm. - czcs/cal/cal_czcs_200608.hdf, revised czcs cal table (single exponential) - eval/seawifs/cal/SEAWIFS_SENSOR_CAL.TBL-200603, new table for eval. - common/palettes/default.pal, new 256-level default map/browse palette. 5.5.4 30 August 2006 Fix eval=NEWOOB error for 678 MODIS. Fix bug in MODIS cloud mask eval option. Change scale on nLw_645. src - l12_parms.h, version change. - nlw_outband.c, missing a1 coefficient for 678. - cloud_flags.c, error in string compare for file existance. - get_l2prod_index.c, nLw_645 scaling. 5.5.5 18 September 2006 src - l12_parms.h, version change. - l1_octs_hdf.c, new cal table format. data - octs/cal/cal_octs_notiltref_timedepnir_2seg.hdf, new table with two segment NIR calibration (pre/post heating). - octs/cal/cal_octs_notiltref_timedepnir.hdf, modified table with two segment NIR calibration, but both segments identical. 5.5.6 6 November 2006 Support new SeaWiFS cal table format for evaluation. Add MUMM NIR correction. src - l12_parms.h, version change. Add AERMUMM aerosol option. - aerosol.c, accept AERMUMM option. - atmocor2.c, call MUMM rhown(NIR) on request. - input_struc.h, add MUMM controls (alpha, gamma, epsilon). - l12_proto.h, new MUMM functions get_rho_mumm() and get_rhown_mumm(). - l2_hdf_generic.c, support new rhom MUMM reflectance product. - l2prod.h, add rhom product. - msl12_input.c, support MUMM controls. - mumm.c, new module with MUMM functions. - MSl12.mk, add mumm.c. libseawifs - l1a_calibrate.c, decouple fp and inst temps. data - eval/seawifs/cal/SEAWIFS_SENSOR_CAL.TBL-200701, 2 temperature epochs. 5.5.7 14 November 2006 Disable flagging of MODIS thermal bands for navfail or hilt. Fix MSl1info to handle fully navfailed granules. Add Morel's Kd(PAR) and photic depth products. Another SeaWIFS cal table for eval. src - l12_parms.h, version change. - MSl1info.c, improved NAVFAIL handling. - l1_modis_hdf.c, just set flagged thermal radiances to zero. - l1_hmodis_hdf.c, just set flagged thermal radiances to zero. - MSl1scanpixlimits.c, handle MODIS geolocation files. - filehandle.h, add MODIS geolocation file identifier. - get_format.c, identify MODIS geolocation file. - l2_hdf_generic.c, support Kd_PAR, Zeu, Zsd products. - l2prod.h, support Kd_PAR, Zeu, Zsd products. - get_Kd.c, add Kd_PAR. - get_l2prod_index.c, support Kd_PAR, Zeu, Zsd products. - photic_depth.c, algorithms for Zeu and Zsd. - MSl12.mk, add photic_depth.o. - l12_proto.h, add get_photic_depth(). data - eval/seawifs/cal/SEAWIFS_SENSOR_CAL.TBL-200702, 2 temperature epochs + gain drift. 5.5.8 29 November 2006 Change Kd_morel table to use MED coefficients for 490 (was using NOMAD). Add Kd_490_morel_nomad product to access NOMAD coefficients. Remove 2nd optical depth Kd_PAR_2_morel product, but add Zhl_morel product (depth of heated layer). Limit all Kd products to range 0.016-6.4. Add Morel turbidity index (tindx_morel) and use to set TURBIDW flag as eval=4096 option. Store Rrs in l2rec within atmocor2(). src - l12_parms.h, version change, eval option to switch to Morel for TURBIDW flag.. - l2_hdf_generic.c, add Zhl_morel, Kd_490_morel_nomad, Kd_490_morel_ok2, tindx_morel. - l2prod.h, add Zhl_morel, Kd_490_morel_nomad, Kd_490_morel_ok2, tindx_morel. - setflags.c, add Morel turbid-water index and option to set flag. - get_Kd.c, add Zhl_morel, Kd_490_morel_nomad, Kd_490_morel_ok2. Impose range limits. - get_l2prod_index.c, add Zhl_morel, Kd_490_morel_nomad, Kd_490_morel_ok2, tindx_morel. - l12_proto.h, add tindx_morel(). - convl12.c, eliminate call to get_rrs(). - atmocor2.c, store Rrs result in l2rec. - MSl12.mk, remove get_rrs.c. - get_rrs.c, defunct. data - eval/seawifs/cal/SEAWIFS_SENSOR_CAL.TBL-200703, 2 temperature epochs + gain drift (take 2). 5.5.9 17 January 2007 Adding support for Gordon's BRDF correction to diffuse transmittance. Adding alternate Levenberg Marquart fit option to GSM01. Fixing est/est meta-data error for CZCS. src - l12_parms.h, version change, BRDF option for adding Gordon. - dtran_brdf.f, new module direct from Gordon. - brdf.c, add dtran_brdf() function, remove bindx from all funcs while at it.. - convl21.c, add ip and remove bindx from ocbrdf argument list. - msl12_input.c, update usage for brdf_opt, add gsm01_fit. - atmocor2.c, add ip and remove bindx from ocbrdf argument list. - l12_proto.h, add ip and remove bindx from ocbrdf argument list. - setflags.c, minor tweak for MODIS cloudmask file option. - convl12.c, fix for CZCS easternmost, westernmost meta data. - input_struc.h, add gsm01_fit. - gsm01.c, add model functions for LM fitting. - MSl12.mk, add dtran_brdf.f, add linking to gsl library. data - eval/common/dtran_brdf/, new files for BRDF correction to diffuse transmittance. 5.6.0 16 February 2007 MUMM updates and fixes based on review by Ruddick et al. Also MSscanpixlimits updated. src - l12_parms.h, version change. - get_l2prod_index.c, fix bug in MUMM rhom (was returning rhos) - mumm.c, don't compute rhom if pixel is L1 masked. - atmocor1_land.c, initialize polcor to 1.0. - loadl1.c, initialize polcor to 1.0. - MSscanpixlimits.c, removed and added back case of geo and l1b supplied. Usage message updates. Version 6.01. data - */msl12_defaults.par, add defaults for mumm_alpha, mumm_gamma, mumm_epsilon. 5.6.1 26 February 2007 Adding ability to generate vicarious calibration gains and associated components as Level-2 products (with capability to produce vicarious Level-1 format retained). Add support for NO2 climatology file. Update Morel Kd algorithm. src - l12_parms.h, version change, gas_opt bit defines. - l12_proto.h, changes to convl21(), ocbrdf(), get_rhown_nir(), new vcal(). - input_struc.h, add vcal_nLw, vcal_Lw, vcal_chl, vcal_solz, vcal_opt. - msl12_input.c, add support for vcal params and init no2file to climatology. - vcal.c, new code to compute vicarious gains and auxiliarry data. - vcal_struc.h, structure to store auxilliary cal data for one scan. - alloc_vcal.c, allocate vicarious calibration auxilliary record. - convl21.c, pass output Lt array rather than pointer to l1rec, eliminate few references to l1rec (fsol), disable use of nominal band F0 (no effect of outband_opt). Use input chl to compute brdf, if supplied. - brdf.c, add chl argument. If valid chl is passed, use it to compute f/Q rather than iterating on Rrs and the default chl algorithm. - get_rhown_nir.c, pass aw and bbw rather than l2rec. - atmocor2.c, changes in arguments to ocbrdf() and get_rhown_nir(). - MSl12.c, change old convl21() call to pass pointer to Lt. - get_Kd.c, replace Kd_morel with new (490-specific) LOV+NOMAD algorithm. Disable old Kd_morel and Kd_morel_nomad. - gas_trans.c, moved gas_opt bit defines to l12_parms.h. - setanc.c, add no2 climatology support, only read no2file if gas_opt no2 bit set. - l2prod.h, remove morel_nomad, add vgain, vLt, vLw, vnLw, vtLw, vbsat, vbtgt - l2_hdf_generic.c, support for above. - get_l2prod_index.c, support for above. - MSscanpixlimits.c, subtract extract pixel offset when reporting pixel range from extracted MODIS GEO file. data - hmodisa/msl12_defaults.par, remove NO2 bit from default gas_opt. - hmodist/msl12_defaults.par, remove NO2 bit from default gas_opt. 5.6.2 8 March 2007 Calcite table and code updates from Balch & Bowler. Reduces calcite by 3-4x. Bug fixes for NO2 climatology and vcal_opt. Allow processing of ocean products over land if maskland is disabled. src - l12_parms.h, version change. New eval trigger for MODIS xcal corrections. - calcite.c, change PIC-specific backscatter. Set minimum for values the retrieve 0 or negative, and don't set CHLRANGE flag. - setanc.c, fix day argument to no2conc() and add _ to SDS names. - msl12_input.c, revised vcal_opt determination. - convl12.c, apply ocean algorithms over land if maskland=0. - dtran_brdf.f, updates from H. Gordon to improve efficiency of diffuse transmittance. - brdf.c, changed calling sequence for dtran_brdf(). - l12_proto.h, new get_xcal(). - polcor.c, apply alternate xcal polarization coefficients if requested. - loadl1.c, apply xcal RVS correction if requested. - xcal.c, new functions to read xcal coefficients. - MSl1tcpcbox.mk, add xcal.c to makefiles. - MScalmerge.mk, add xcal.c to makefiles. - MSl1brsgen.mk, add xcal.c to makefiles. - MSl12.mk, add xcal.c to makefiles. data - common/coccolith.dat, updated table from Balch. - eval/modist/cal/xcal_modist_rvs.txt, xcal-derived RVS adjustment. - eval/modist/cal/xcal_modist_m12.txt, xcal-derived polarization sensitivities. - eval/modist/cal/xcal_modist_m13.txt, xcal-derived polarization sensitivities. 5.6.3 29 March 2007 Fix MODIS times to include milliseconds. This will cause minor changes in standard products due to change in F0. It also fixes the granule start/end times in meta-data. Aerosol corrections were modified to support fixed table indexing for the case of more table bands than sensor bands (e.g., 9-band MODIS with 16-band tables). OCTS processing may have been effected by a bug in the reference time used for temporal gain corrections. src - l12_parms.h, version change. - l1_modis_hdf.c, fixed truncation error in msec field. - l1_hmodis_hdf.c, fixed truncation error in msec field. - aerosol.c, enable interp when more table bands than sensor bands. - convl21.c, don't try to compute chl for inversion when calibrating to zero reflectances. - l1_octs_hdf.c, refjsec was not declared static, this should have caused problems. In Works: New meta-data generation meta_struc.h scene_meta.c