MODULE ocean_control_mod ! !svn $Id: obs_sen_is4dvar.h 937 2019-01-28 06:13:04Z arango $ !=================================================== Andrew M. Moore === ! Copyright (c) 2002-2019 The ROMS/TOMS Group Hernan G. Arango ! ! Licensed under a MIT/X style license ! ! See License_ROMS.txt ! !======================================================================= ! ! ! ROMS/TOMS I4D-VAR Observation Sensitivity Analysis Driver: ! ! ! ! This driver evaluates the impact of each observation in the ! ! 4D-Var analysis increment by measuring their sensitivity over ! ! a specified circulation functional index, J, similar to the ! ! adjoint sensitivity driver. This is equivalent to taking the ! ! adjoint of the 4D-Var algorithm. ! ! ! ! Algorithm Outline: ! ! ! ! ! ! |----------------------------|-----------------------------| ! ! t=t0 t=t1 t=t2 ! ! Assimilation window Forecast period ! ! ! ! |----------------------------------------------------------> NLM ! ! ! ! <----------------------------------------------------------| ADM ! ! ! ! |----------------------------> TLM ! ! ! ! (1) We begin by running an IS4DVAR Lanczos calculation using k ! ! inner-loops and 1 outer-loop for the period t=t0 to t1. We ! ! will denote by xb(0) the background initial condition, and ! ! the observations vector by y. The resulting Lanczos vectors ! ! that we save in the adjoint NetCDF file will be denoted by ! ! q_i, where i=1,2,...,k. ! ! ! ! (2) Next we run the NLM for the combined assimilation+forecast ! ! period t=t0 to t2, where t2>t1. This represents the final ! ! sweep of the NLM for the period t=t0 to t1 after exiting the ! ! inner-loop in the IS4DVAR plus the forecast period t=t1 to t2. ! ! The initial condition for the NLM at t=t0 is xb(0) and not ! ! the new estimated initial conditions. We save the basic state ! ! trajectory, xb(t), of this NLM run for use in the adjoint ! ! sensitivity calculation next, and for use in the TLM run ! ! later in step (7). ! ! ! ! Depending on time for which the sensitivity functional J(t) ! ! is defined, this will dictate t2. For example, if J(t) is a ! ! functional defined during the forecast interval t1t1 for this run of the NLM. However, if J(t) is defined ! ! during the assimilation interval t0