Custom Query (964 matches)
Results (880 - 882 of 964)
Ticket | Owner | Reporter | Resolution | Summary |
---|---|---|---|---|
#873 | Fixed | VERY IMPORTANT: Corrected usage of DIURNAL_SRFLUX in 4D-Var | ||
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. |
|||
#874 | Done | IMPORTANT: Usage of __FILE__ macro | ||
Description |
This update modifies the usage of C-preprocessing macro __FILE__, which expands to the name of the current input file being processed. It is an extensive and simple change to ROMS that facilitates the compiling with Cmake in the future. Now, we define the local variable MyFile as: character (len=*), parameter :: MyFile = & & __FILE__ So the current filename can expand beyond the 72 columns and compiled free-form compiler flags to avoid syntax errors. It cleans the code substantially. Usually, MyFile is used in statements like: IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN CALL wclock_on (ng, iNLM, 35, __LINE__, MyFile) CALL wclock_off (ng, iNLM, 35, __LINE__, MyFile) These changes are part of several sequential updates to facilitate ROMS interface with Joint Effort for Data Assimilation Integration (JEDI) project. |
|||
#875 | Done | IMPORTANT: Compiling ROMS with CMake | ||
Description |
Added the capability to compile ROMS with CMake and ecbuild. We are currently working on the interface to connect ROMS with the Joint Effort for Data Assimilation Integration (JEDI) project that is being developed by the Joint Center for Satellite Data Assimilation (JCSDA). The JEDI layer is model agnostic and includes OOPS (Object-Oriented Prediction System), UFO (Unified Forward Operator), IODA (Interface for Observation Data Access), and other packages for generic applications of data assimilation. We started working on the roms-jedi repository inside JCSDA GitHub project. To facilitate interactions with all the JEDI packages, we need to have an option to compile ROMS with CMake and ecbuild. CMake is not as friendly, advanced, and flexible as compiling ROMS with GNU make (gmake). It took David Robertson several weeks to develop a robust and generic strategy to compile and link the various algorithms available in ROMS. The Fortran dependencies were a nightmare because of all the C-preprocessing options in ROMS. What Is New:
Many thanks to David Robertson for his persistence and making CMake work in ROMS. |