Skip to content

Commit

Permalink
Add optional data atmoshpere component (NOAA-EMC#225)
Browse files Browse the repository at this point in the history
* add DATM submodule
* point to aerorahul fork of DATM
* update CMakeList.txt to build data atmosphere.  Add compile test only since there are currently no regression tests for data atmosphere
* update README.md
* missed rsync from develop
* Update README.md
* update DATM submodule pointer and point to NOAA-EMC/NEMSdatm
* create MOM6 solo executable for use in SOCA science
* add compilation tests for s2s and datm for hera.gnu
* commit wcoss_cray RT log, hera.intel RT log
* rsync S2S baselines for intel only on hera and orion
* add orion.intel RT log
* add hera.gnu RT log
* add wcoss_dell_p3 RT log
  • Loading branch information
aerorahul authored Oct 22, 2020
1 parent 58e5a8c commit a2e58be
Show file tree
Hide file tree
Showing 14 changed files with 364 additions and 295 deletions.
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,7 @@
path = CICE-interface/CICE
url = https://github.com/NOAA-EMC/CICE
branch = emc/develop
[submodule "DATM"]
path = DATM
url = https://github.com/NOAA-EMC/NEMSdatm
branch = develop
43 changes: 35 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ set(QUAD_PRECISION ON CACHE BOOL "Enable QUAD_PRECISION (for certain grid metr
set(REPRO OFF CACHE BOOL "Enable REPRO mode")
set(WW3 OFF CACHE BOOL "Enable WW3")
set(S2S OFF CACHE BOOL "Enable S2S")
set(DATM OFF CACHE BOOL "Enable Data Atmosphere")

###############################################################################
### Set CMAKE_BUILD_TYPE for DEBUG mode
Expand Down Expand Up @@ -65,6 +66,7 @@ message("QUAD_PRECISION ... ${QUAD_PRECISION}")
message("REPRO ............ ${REPRO}")
message("WW3 .............. ${WW3}")
message("S2S .............. ${S2S}")
message("DATM ............. ${DATM}")
message("")

get_filename_component (C_COMPILER_NAME ${CMAKE_C_COMPILER} NAME)
Expand Down Expand Up @@ -118,6 +120,10 @@ endif()
###############################################################################
### Checks
###############################################################################
if(DATM AND NOT S2S)
message(FATAL_ERROR "DATM=ON and S2S=OFF are incompatible, ABORT!")
endif()

if(S2S AND 32BIT)
message(FATAL_ERROR "S2S=ON and 32BIT=ON are incompatible, ABORT!")
endif()
Expand Down Expand Up @@ -161,12 +167,18 @@ target_include_directories(fms INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINAR
###############################################################################
### stochastic_physics
###############################################################################
add_subdirectory(stochastic_physics)
if(NOT DATM)
add_subdirectory(stochastic_physics)
endif()

###############################################################################
### FV3
### FV3 or Data Atmosphere
###############################################################################
add_subdirectory(FV3)
if(DATM)
add_subdirectory(DATM)
else()
add_subdirectory(FV3)
endif()

###############################################################################
### WW3
Expand Down Expand Up @@ -237,9 +249,16 @@ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/NEMS/src/ESMFConvenienceMacros.h
add_library(ufs ${_nems_srcs})

list(APPEND _ufs_defs_private ESMF_VERSION_MAJOR=${ESMF_VERSION_MAJOR}
FRONT_FMS
FRONT_FV3=fv3gfs_cap_mod)
add_dependencies(ufs fms fv3atm)
FRONT_FMS)
add_dependencies(ufs fms)

if(DATM)
list(APPEND _ufs_defs_private FRONT_DATM=datm)
add_dependencies(ufs datatm)
else()
list(APPEND _ufs_defs_private FRONT_FV3=fv3gfs_cap_mod)
add_dependencies(ufs fv3atm)
endif()

set_target_properties(ufs PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
target_include_directories(ufs PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/NEMS/src)
Expand All @@ -254,8 +273,13 @@ endif()
target_include_directories(ufs INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
$<INSTALL_INTERFACE:mod>)

target_link_libraries(ufs PUBLIC esmf
fv3atm)
target_link_libraries(ufs PUBLIC esmf)

if(DATM)
target_link_libraries(ufs PUBLIC datatm)
else()
target_link_libraries(ufs PUBLIC fv3atm)
endif()

if(S2S)
list(APPEND _ufs_defs_private FRONT_MOM6=mom_cap_mod
Expand Down Expand Up @@ -289,6 +313,9 @@ endif()

target_compile_definitions(ufs_model PRIVATE "${_ufs_model_defs_private}")

if(DATM)
target_link_libraries(ufs_model PRIVATE ufs w3nco::w3nco_d)
endif()
target_link_libraries(ufs_model PRIVATE ufs
esmf
NetCDF::NetCDF_Fortran
Expand Down
1 change: 1 addition & 0 deletions DATM
Submodule DATM added at 84e9a1
39 changes: 23 additions & 16 deletions MOM6-interface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,28 +64,31 @@ target_link_libraries(mom6 PUBLIC fms
# target_link_libraries(mom6 PRIVATE OpenMP::OpenMP_Fortran)
#endif()

### Create standalone MOM6 executable [bug in our fork prevents this compilation]
#add_executable(mom6solo ${mom6_solo_src_files})
#add_dependencies(mom6solo mom6_obj)
#set_target_properties(mom6solo PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod_solo)
#target_include_directories(mom6solo PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
#target_include_directories(mom6solo PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod_solo>)
#target_include_directories(mom6solo PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MOM6/config_src/dynamic>
# $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MOM6/src/framework>)
#target_link_libraries(mom6solo PRIVATE mom6_obj
# fms
# NetCDF::NetCDF_Fortran)
# OpenMP is disabled in MOM6
#if(OpenMP_Fortran_FOUND)
# target_link_libraries(mom6solo PRIVATE OpenMP::OpenMP_Fortran)
#endif()
### Create standalone MOM6 executable
if(MOM6SOLO)
message("Building MOM6 standalone executable")
add_executable(mom6solo ${mom6_solo_src_files})
add_dependencies(mom6solo mom6_obj)
set_target_properties(mom6solo PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod_solo)
target_include_directories(mom6solo PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
target_include_directories(mom6solo PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod_solo>)
target_include_directories(mom6solo PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MOM6/config_src/dynamic>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MOM6/src/framework>)
target_link_libraries(mom6solo PRIVATE mom6_obj
fms
NetCDF::NetCDF_Fortran)
# OpenMP is disabled in MOM6
#if(OpenMP_Fortran_FOUND)
# target_link_libraries(mom6solo PRIVATE OpenMP::OpenMP_Fortran)
#endif()
endif()

###############################################################################
### Install
###############################################################################

install(
TARGETS mom6 #mom6solo
TARGETS mom6
EXPORT mom6-config
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
Expand All @@ -96,3 +99,7 @@ install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod DESTINATION ${CMAKE_INSTALL_PR

install(EXPORT mom6-config
DESTINATION lib/cmake)

if(MOM6SOLO)
install(TARGETS mom6solo RUNTIME DESTINATION bin)
endif()
18 changes: 13 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

# ufs-weather-model

This is the UFS weather model code.
This is the UFS weather model source code.

# Where to find information

Start at the [ufs-weather-model wiki](https://github.com/ufs-community/ufs-weather-model/wiki) which has quick start instructions.
Start at the [wiki](https://github.com/ufs-community/ufs-weather-model/wiki) which has quick start instructions.

[User's reference guide](http://ufs-weather-model.readthedocs.io/) is hosted on read the docs.

Expand All @@ -19,15 +19,23 @@ The top level directory structure groups source code and input files as follow:
| ```LICENSE.md``` | A copy of the GNU Lesser General Public License, Version 3. |
| ```README.md``` | This file with basic pointers to more information. |
| ```FMS/``` | Contains Flexible Modeling System source code. |
| ```NEMS/``` | Contains NOAA Environmental Modeling System source code and nems compset runi scripts. |
| ```NEMS/``` | Contains NOAA Environmental Modeling System source code and nems compset run scripts. |
| ```CMEPS-interface/``` | Contains CMEPS mediator |
| ```FV3/``` | Contains FV3 atmosphere model component including FV3 dynamical core, dynamics to physics driver, physics and IO. |
| ```DATM/``` | Contains Data Atmosphere model component |
| ```WW3/``` | Contains community wave modeling framework WW3. |
| ```MOM6-interface/``` | Contains MOM6 ocean model component |
| ```CICE-interface/``` | Contains CICE sea-ice model component including CICE6 and Icepack |
| ```stochastic physics/``` | Contains the stochastic physics source code. |
| ```stochastic_physics/``` | Contains the stochastic physics source code. |
| ```cmake/``` | Contains compile option files on various platforms. |
| ```modulefiles/``` | Contains module files on various platforms.|
| ```modulefiles/``` | Contains module files on various platforms. |
| ```tests/``` | Regression and unit testing framework scripts. |
| ```build.sh``` | Script to build the model executable. (also used by `tests/`) |

E.g. use of `build.sh` to build the coupled model with `FV3_GFS_v15p2` as the CCPP suite.
```
$> CMAKE_FLAGS="-DS2S=ON" CCPP_SUITES="FV3_GFS_v15p2" ./build.sh
```

# Disclaimer

Expand Down
30 changes: 15 additions & 15 deletions tests/RegressionTests_hera.gnu.log
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
Tue Oct 20 02:27:45 UTC 2020
Thu Oct 22 11:11:52 EDT 2020
Start Regression test


baseline dir = /scratch1/NCEPDEV/nems/emc.nemspara/RT/NEMSfv3gfs/develop-20201019/GNU/fv3_gfdlmp_ccpp
working dir = /scratch1/NCEPDEV/stmp2/Dusan.Jovic/FV3_RT/rt_21673/fv3_ccpp_gfdlmp_prod
working dir = /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/FV3_RT/rt_181841/fv3_ccpp_gfdlmp_prod
Checking test 001 fv3_ccpp_gfdlmp results ....
Comparing atmos_4xdaily.tile1.nc .........OK
Comparing atmos_4xdaily.tile2.nc .........OK
Expand Down Expand Up @@ -51,7 +51,7 @@ Test 001 fv3_ccpp_gfdlmp PASS


baseline dir = /scratch1/NCEPDEV/nems/emc.nemspara/RT/NEMSfv3gfs/develop-20201019/GNU/fv3_gfs_v15p2_ccpp
working dir = /scratch1/NCEPDEV/stmp2/Dusan.Jovic/FV3_RT/rt_21673/fv3_ccpp_gfs_v15p2_prod
working dir = /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/FV3_RT/rt_181841/fv3_ccpp_gfs_v15p2_prod
Checking test 002 fv3_ccpp_gfs_v15p2 results ....
Comparing atmos_4xdaily.tile1.nc .........OK
Comparing atmos_4xdaily.tile2.nc .........OK
Expand Down Expand Up @@ -119,7 +119,7 @@ Test 002 fv3_ccpp_gfs_v15p2 PASS


baseline dir = /scratch1/NCEPDEV/nems/emc.nemspara/RT/NEMSfv3gfs/develop-20201019/GNU/fv3_gfs_v16beta_ccpp
working dir = /scratch1/NCEPDEV/stmp2/Dusan.Jovic/FV3_RT/rt_21673/fv3_ccpp_gfs_v16beta_prod
working dir = /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/FV3_RT/rt_181841/fv3_ccpp_gfs_v16beta_prod
Checking test 003 fv3_ccpp_gfs_v16beta results ....
Comparing atmos_4xdaily.tile1.nc .........OK
Comparing atmos_4xdaily.tile2.nc .........OK
Expand Down Expand Up @@ -187,7 +187,7 @@ Test 003 fv3_ccpp_gfs_v16beta PASS


baseline dir = /scratch1/NCEPDEV/nems/emc.nemspara/RT/NEMSfv3gfs/develop-20201019/GNU/fv3_gfs_v16beta_flake_ccpp
working dir = /scratch1/NCEPDEV/stmp2/Dusan.Jovic/FV3_RT/rt_21673/fv3_ccpp_gfs_v16beta_flake_prod
working dir = /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/FV3_RT/rt_181841/fv3_ccpp_gfs_v16beta_flake_prod
Checking test 004 fv3_ccpp_gfs_v16beta_flake results ....
Comparing atmos_4xdaily.tile1.nc .........OK
Comparing atmos_4xdaily.tile2.nc .........OK
Expand Down Expand Up @@ -255,7 +255,7 @@ Test 004 fv3_ccpp_gfs_v16beta_flake PASS


baseline dir = /scratch1/NCEPDEV/nems/emc.nemspara/RT/NEMSfv3gfs/develop-20201019/GNU/fv3_gsd_ccpp
working dir = /scratch1/NCEPDEV/stmp2/Dusan.Jovic/FV3_RT/rt_21673/fv3_ccpp_gsd_prod
working dir = /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/FV3_RT/rt_181841/fv3_ccpp_gsd_prod
Checking test 005 fv3_ccpp_gsd results ....
Comparing atmos_4xdaily.tile1.nc .........OK
Comparing atmos_4xdaily.tile2.nc .........OK
Expand Down Expand Up @@ -347,7 +347,7 @@ Test 005 fv3_ccpp_gsd PASS


baseline dir = /scratch1/NCEPDEV/nems/emc.nemspara/RT/NEMSfv3gfs/develop-20201019/GNU/fv3_thompson_ccpp
working dir = /scratch1/NCEPDEV/stmp2/Dusan.Jovic/FV3_RT/rt_21673/fv3_ccpp_thompson_prod
working dir = /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/FV3_RT/rt_181841/fv3_ccpp_thompson_prod
Checking test 006 fv3_ccpp_thompson results ....
Comparing atmos_4xdaily.tile1.nc .........OK
Comparing atmos_4xdaily.tile2.nc .........OK
Expand Down Expand Up @@ -415,7 +415,7 @@ Test 006 fv3_ccpp_thompson PASS


baseline dir = /scratch1/NCEPDEV/nems/emc.nemspara/RT/NEMSfv3gfs/develop-20201019/GNU/fv3_thompson_no_aero_ccpp
working dir = /scratch1/NCEPDEV/stmp2/Dusan.Jovic/FV3_RT/rt_21673/fv3_ccpp_thompson_no_aero_prod
working dir = /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/FV3_RT/rt_181841/fv3_ccpp_thompson_no_aero_prod
Checking test 007 fv3_ccpp_thompson_no_aero results ....
Comparing atmos_4xdaily.tile1.nc .........OK
Comparing atmos_4xdaily.tile2.nc .........OK
Expand Down Expand Up @@ -483,7 +483,7 @@ Test 007 fv3_ccpp_thompson_no_aero PASS


baseline dir = /scratch1/NCEPDEV/nems/emc.nemspara/RT/NEMSfv3gfs/develop-20201019/GNU/fv3_rrfs_v1beta_ccpp
working dir = /scratch1/NCEPDEV/stmp2/Dusan.Jovic/FV3_RT/rt_21673/fv3_ccpp_rrfs_v1beta_prod
working dir = /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/FV3_RT/rt_181841/fv3_ccpp_rrfs_v1beta_prod
Checking test 008 fv3_ccpp_rrfs_v1beta results ....
Comparing atmos_4xdaily.tile1.nc .........OK
Comparing atmos_4xdaily.tile2.nc .........OK
Expand Down Expand Up @@ -575,13 +575,13 @@ Test 008 fv3_ccpp_rrfs_v1beta PASS


baseline dir = /scratch1/NCEPDEV/nems/emc.nemspara/RT/NEMSfv3gfs/develop-20201019/GNU/fv3_control_ccpp
working dir = /scratch1/NCEPDEV/stmp2/Dusan.Jovic/FV3_RT/rt_21673/fv3_ccpp_control_debug_prod
working dir = /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/FV3_RT/rt_181841/fv3_ccpp_control_debug_prod
Checking test 009 fv3_ccpp_control_debug results ....
Test 009 fv3_ccpp_control_debug PASS


baseline dir = /scratch1/NCEPDEV/nems/emc.nemspara/RT/NEMSfv3gfs/develop-20201019/GNU/fv3_gfs_v15p2_debug_ccpp
working dir = /scratch1/NCEPDEV/stmp2/Dusan.Jovic/FV3_RT/rt_21673/fv3_ccpp_gfs_v15p2_debug_prod
working dir = /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/FV3_RT/rt_181841/fv3_ccpp_gfs_v15p2_debug_prod
Checking test 010 fv3_ccpp_gfs_v15p2_debug results ....
Comparing atmos_4xdaily.tile1.nc .........OK
Comparing atmos_4xdaily.tile2.nc .........OK
Expand Down Expand Up @@ -649,7 +649,7 @@ Test 010 fv3_ccpp_gfs_v15p2_debug PASS


baseline dir = /scratch1/NCEPDEV/nems/emc.nemspara/RT/NEMSfv3gfs/develop-20201019/GNU/fv3_gfs_v16beta_debug_ccpp
working dir = /scratch1/NCEPDEV/stmp2/Dusan.Jovic/FV3_RT/rt_21673/fv3_ccpp_gfs_v16beta_debug_prod
working dir = /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/FV3_RT/rt_181841/fv3_ccpp_gfs_v16beta_debug_prod
Checking test 011 fv3_ccpp_gfs_v16beta_debug results ....
Comparing atmos_4xdaily.tile1.nc .........OK
Comparing atmos_4xdaily.tile2.nc .........OK
Expand Down Expand Up @@ -717,7 +717,7 @@ Test 011 fv3_ccpp_gfs_v16beta_debug PASS


baseline dir = /scratch1/NCEPDEV/nems/emc.nemspara/RT/NEMSfv3gfs/develop-20201019/GNU/fv3_multigases_ccpp
working dir = /scratch1/NCEPDEV/stmp2/Dusan.Jovic/FV3_RT/rt_21673/fv3_ccpp_multigases_prod
working dir = /scratch1/NCEPDEV/stmp2/Rahul.Mahajan/FV3_RT/rt_181841/fv3_ccpp_multigases_prod
Checking test 012 fv3_ccpp_multigases results ....
Comparing atmos_4xdaily.tile1.nc .........OK
Comparing atmos_4xdaily.tile2.nc .........OK
Expand Down Expand Up @@ -791,5 +791,5 @@ Test 012 fv3_ccpp_multigases PASS


REGRESSION TEST WAS SUCCESSFUL
Tue Oct 20 03:01:57 UTC 2020
Elapsed time: 00h:34m:14s. Have a nice day!
Thu Oct 22 11:34:54 EDT 2020
Elapsed time: 00h:23m:06s. Have a nice day!
Loading

0 comments on commit a2e58be

Please sign in to comment.