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 <math.h> 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