Opened 4 years ago

Closed 4 years ago

#873 closed bug (Fixed)

VERY IMPORTANT: Corrected usage of DIURNAL_SRFLUX in 4D-Var

Reported by: arango Owned by:
Priority: major Milestone: Release ROMS/TOMS 3.9
Component: Adjoint Version: 3.9
Keywords: Cc:

Description

Corrected a bug in the 4D-Var algorithms when DIURNAL_SRFLUX, FORWARD_FLUXES, and PRIOR_BULK_FLUXES are activated.

Recall that the DIURNAL_SRFLUX option is used to modulate the diurnal cycle to input daily-averaged shortwave radiation flux data. In the adjoint-based algorithms, the FORWARD_FLUXES option is used to process surface fluxes for the tangent linear, representers, and adjoint models from the nonlinear model background trajectory stored in the quicksave (QCK) NetCDF file. See src:ticket:869 for more information. The PRIOR_BULK_FLUXES option is used to impose the initial background trajectory (prior) surface forcing fields stored in QCK in subsequent outer-loops (Nouter>1) and the analysis phase, as also explained in src:ticket:869.

The routines set_data.F, tl_set_data.F, rp_set_data.F, and ad_set_data.F were corrected to avoid modulating the shortwave radiation diurnal cycle when the above options are activated.

In tl_set_data.F, rp_set_data.F, and ad_set_data.F we now have:

#   if defined DIURNAL_SRFLUX && !defined FORWARD_FLUXES
!
!  Modulate the averaged shortwave radiation flux by the local diurnal
!  cycle.
!
      CALL ana_srflux (ng, tile, iTLM)
#   endif

while in set_data.F we get:

#   ifdef DIURNAL_SRFLUX
!
!  Modulate the averaged shortwave radiation flux by the local diurnal
!  cycle.
!
      IF (Lprocess) THEN
        CALL ana_srflux (ng, tile, iNLM)
      END IF
#   endif

These changes are necessary to avoid increasing the shortwave radiation values in other 4D-Var outer-loops and the analysis step.

Many thanks to Julia Levin and Gordon Zhang for bringing this problem to our attention.

Change History (1)

comment:1 by arango, 4 years ago

Resolution: Fixed
Status: newclosed
Note: See TracTickets for help on using tickets.