Opened 4 years ago

Last modified 4 years ago

#875 closed upgrade

IMPORTANT: Compiling ROMS with CMake — at Initial Version

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

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.

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

Change History (0)

Note: See TracTickets for help on using tickets.