Custom Query (964 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (880 - 882 of 964)

Ticket Owner Reporter Resolution Summary
#873 arango 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 arango 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 arango 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:

  • Now, there is a CMakeLists.txt in every ROMS source code sub-directory. The top-level CMakeLists.txt in the root directory (same place where GNU makefile is located) contains all the CMake definitions. Also, the Compilers sub-directory includes several .cmake extension configurations files.
  • Two additional build scripts cbuild_roms.csh and cbuild_roms.sh were added to ROMS/Bin.
  • A Perl script FixDependInfo.pl was added to ROMS/Bin to remove .F files the compiler dependency information when using CMake. The dependency generator is easily confused by CPP if-directives. Only the preprocesed .f90 files are used to determine the dependencies.
  • WARNING: this version of CMake uses ecbuild developed at ECMWF, which consists of a set of macros as well as a wrapper around CMake. It can be downloaded from GitHub. For tutorial and usage check its documentation.

Many thanks to David Robertson for his persistence and making CMake work in ROMS.

Batch Modify
Note: See TracBatchModify for help on using batch modify.
Note: See TracQuery for help on using queries.