Opened 5 years ago
Closed 5 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.