The main goal of strong contraint 4DVar is to estimate optimal initial conditions by melding the first guess (background) state and available data for the selected assimilation time window using both the statistics of the background and observations. In the incremental algorithm, IS4DVAR, the estimated initial conditions is saved in NetCDF file INIname. This NetCDF file will have two time records at the end of the assimilation run. The first record is the new estimated initial conditions from data assimilation whereas the second record is the starting first guess. Noticed that in the driver is4dvar_ocean.h these records are, respectively, processed with index variables Lini=1 and Lbck=2. In the IS4DVAR algorithm both records are used extensively to update the background state with the estimated data assimilation increments.
I have been asked why I do store these two records in this order. Obviously, it makes more sense to store the background first (record 1) and the new estimated initial conditions on record 2 of the unlimited time-dimension. Well, it is not done in this way because this file will be used latter to initialize the nonlinear model in forecast mode. It is easier to start from record 1 than 2 without special manipulations of the standard input parameters. The default in ROMS is to read initial conditions from the first record of the NetCDF file, if not specified otherwise. This strategy is extremely important in sequential data assimilation. See previous post about the sequential IS4DVAR running script, submit_is4dvar.sh.