Skip to content

Commit 75f1fc5

Browse files
authored
Add CDEPS to UFS-weather-model for Data component needs (ufs-community#524)
* point to Jun fv3atm personal fork * add CDEPS submodule * add building instructions * fix issues that came from building * builds CDEPS targets * missed w3nco dep * cleanup use of FoX and remove redundant library links in components * Add 3 files generated by genf90.pl to the CDEPS-interface/ufs directory. (#1) * remove dependency on genf90.pl for CDEPS/share * remove FoX (#2) remove FoX dependency building and use ESMF Config instead. Co-authored-by: Jun Wang <junwang-noaa@users.noreply.github.com> Co-authored-by: BinLi-NOAA <bin.li@noaa.gov> Co-authored-by: Brian Curtis <brian.curtis@noaa.gov>
1 parent 65f5341 commit 75f1fc5

19 files changed

+12677
-1698
lines changed

.gitmodules

+4
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,7 @@
3838
path = DATM
3939
url = https://github.com/NOAA-EMC/NEMSdatm
4040
branch = develop
41+
[submodule "CDEPS"]
42+
path = CDEPS-interface/CDEPS
43+
url = https://github.com/NOAA-EMC/CDEPS
44+
branch = emc/develop

CDEPS-interface/CDEPS

Submodule CDEPS added at 69a3a61

CDEPS-interface/CMakeLists.txt

+137
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# CDEPS compiler flags
2+
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
3+
set(CMAKE_Fortran_FLAGS "-g -fbacktrace -ffree-line-length-none")
4+
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
5+
set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -fcheck=bounds -ffpe-trap=invalid,zero,overflow,underflow" )
6+
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
7+
set(CMAKE_Fortran_FLAGS "-g -traceback")
8+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -O -assume realloc_lhs")
9+
set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -fp-model precise")
10+
set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -check -check noarg_temp_created -check nopointer -fpe0 -ftrapuv")
11+
else()
12+
message(WARNING "Fortran compiler with ID ${CMAKE_Fortran_COMPILER_ID} will be used with CMake default options")
13+
endif()
14+
15+
# Too many files to list, so include them via this file
16+
include("cdeps_files.cmake")
17+
18+
# CDEPS/share
19+
add_library(share STATIC ${cdeps_share_files} ${ufs_cdeps_share_files})
20+
add_library(cdeps::share ALIAS share)
21+
set_target_properties(share PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
22+
target_include_directories(share PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/ufs/cdeps_share)
23+
target_include_directories(share PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
24+
$<INSTALL_INTERFACE:mod>)
25+
target_link_libraries(share PUBLIC esmf)
26+
list(APPEND LIB_TARGETS share)
27+
28+
# CDEPS/streams
29+
add_library(streams STATIC ${cdeps_streams_files})
30+
add_library(cdeps::streams ALIAS streams)
31+
add_dependencies(streams cdeps::share)
32+
set_target_properties(streams PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
33+
target_include_directories(streams PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
34+
$<INSTALL_INTERFACE:mod>)
35+
target_compile_definitions(streams PUBLIC "DISABLE_FoX")
36+
target_link_libraries(streams PUBLIC cdeps::share)
37+
target_link_libraries(streams PUBLIC esmf PIO::PIO_Fortran)
38+
list(APPEND LIB_TARGETS streams)
39+
40+
# CDEPS/dshr
41+
add_library(dshr STATIC ${cdeps_dshr_files})
42+
add_library(cdeps::dshr ALIAS dshr)
43+
add_dependencies(dshr cdeps::share cdeps::streams)
44+
set_target_properties(dshr PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
45+
target_include_directories(dshr PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
46+
$<INSTALL_INTERFACE:mod>)
47+
target_link_libraries(dshr PUBLIC cdeps::share cdeps::streams)
48+
target_link_libraries(dshr PUBLIC esmf PIO::PIO_Fortran)
49+
list(APPEND LIB_TARGETS dshr)
50+
51+
# CDEPS/datm
52+
add_library(datm STATIC ${cdeps_datm_files})
53+
add_library(cdeps::datm ALIAS datm)
54+
add_dependencies(datm cdeps::share cdeps::streams cdeps::dshr)
55+
set_target_properties(datm PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
56+
target_include_directories(datm PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
57+
$<INSTALL_INTERFACE:mod>)
58+
target_link_libraries(datm PUBLIC cdeps::dshr cdeps::share cdeps::streams)
59+
target_link_libraries(datm PUBLIC esmf PIO::PIO_Fortran)
60+
list(APPEND LIB_TARGETS datm)
61+
62+
# CDEPS/dice
63+
add_library(dice STATIC ${cdeps_dice_files})
64+
add_library(cdeps::dice ALIAS dice)
65+
add_dependencies(dice cdeps::share cdeps::streams cdeps::dshr)
66+
set_target_properties(dice PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
67+
target_include_directories(dice PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
68+
$<INSTALL_INTERFACE:mod>)
69+
target_link_libraries(dice PUBLIC cdeps::dshr cdeps::share cdeps::streams)
70+
target_link_libraries(dice PUBLIC esmf)
71+
list(APPEND LIB_TARGETS dice)
72+
73+
# CDEPS/dlnd
74+
add_library(dlnd STATIC ${cdeps_dlnd_files})
75+
add_library(cdeps::dlnd ALIAS dlnd)
76+
add_dependencies(dlnd cdeps::share cdeps::streams cdeps::dshr)
77+
set_target_properties(dlnd PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
78+
target_include_directories(dlnd PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
79+
$<INSTALL_INTERFACE:mod>)
80+
target_link_libraries(dlnd PUBLIC cdeps::dshr cdeps::share cdeps::streams)
81+
target_link_libraries(dlnd PUBLIC esmf)
82+
list(APPEND LIB_TARGETS dlnd)
83+
84+
# CDEPS/docn
85+
add_library(docn STATIC ${cdeps_docn_files})
86+
add_library(cdeps::docn ALIAS docn)
87+
add_dependencies(docn cdeps::share cdeps::streams cdeps::dshr)
88+
set_target_properties(docn PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
89+
target_include_directories(docn PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
90+
$<INSTALL_INTERFACE:mod>)
91+
target_link_libraries(docn PUBLIC cdeps::dshr cdeps::share cdeps::streams)
92+
target_link_libraries(docn PUBLIC esmf)
93+
list(APPEND LIB_TARGETS docn)
94+
95+
# CDEPS/drof
96+
add_library(drof STATIC ${cdeps_drof_files})
97+
add_library(cdeps::drof ALIAS drof)
98+
add_dependencies(drof cdeps::share cdeps::streams cdeps::dshr)
99+
set_target_properties(drof PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
100+
target_include_directories(drof PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
101+
$<INSTALL_INTERFACE:mod>)
102+
target_link_libraries(drof PUBLIC cdeps::dshr cdeps::share cdeps::streams)
103+
target_link_libraries(drof PUBLIC esmf)
104+
list(APPEND LIB_TARGETS drof)
105+
106+
# CDEPS/dwav
107+
add_library(dwav STATIC ${cdeps_dwav_files})
108+
add_library(cdeps::dwav ALIAS dwav)
109+
add_dependencies(dwav cdeps::share cdeps::streams cdeps::dshr)
110+
set_target_properties(dwav PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
111+
target_include_directories(dwav PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
112+
$<INSTALL_INTERFACE:mod>)
113+
target_link_libraries(dwav PUBLIC cdeps::dshr cdeps::share cdeps::streams)
114+
target_link_libraries(dwav PUBLIC esmf)
115+
list(APPEND LIB_TARGETS dwav)
116+
117+
###############################################################################
118+
### Install
119+
###############################################################################
120+
121+
install(
122+
TARGETS ${LIB_TARGETS}
123+
EXPORT CDEPSExports
124+
LIBRARY DESTINATION lib
125+
ARCHIVE DESTINATION lib
126+
COMPONENT Library)
127+
128+
export(EXPORT CDEPSExports
129+
NAMESPACE cdeps::
130+
FILE cdeps-targets.cmake)
131+
132+
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod DESTINATION ${CMAKE_INSTALL_PREFIX}/CDEPS)
133+
134+
install(EXPORT CDEPSExports
135+
NAMESPACE cdeps::
136+
FILE cdeps-targets.cmake
137+
DESTINATION lib/cmake)

CDEPS-interface/cdeps_files.cmake

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# CDEPS generates these with genf90.pl acting on templates .in in CDEPS/share
2+
# For the UFS, they are pre-generated and committed to the UFS repository
3+
list(APPEND ufs_cdeps_share_files
4+
ufs/cdeps_share/shr_assert_mod.F90
5+
ufs/cdeps_share/shr_frz_mod.F90
6+
ufs/cdeps_share/shr_infnan_mod.F90
7+
)
8+
9+
list(APPEND cdeps_share_files
10+
CDEPS/share/glc_elevclass_mod.F90
11+
CDEPS/share/shr_abort_mod.F90
12+
CDEPS/share/shr_assert.h
13+
CDEPS/share/shr_cal_mod.F90
14+
CDEPS/share/shr_const_mod.F90
15+
CDEPS/share/shr_kind_mod.F90
16+
CDEPS/share/shr_log_mod.F90
17+
CDEPS/share/shr_mpi_mod.F90
18+
CDEPS/share/shr_orb_mod.F90
19+
CDEPS/share/shr_precip_mod.F90
20+
CDEPS/share/shr_strconvert_mod.F90
21+
CDEPS/share/shr_string_mod.F90
22+
CDEPS/share/shr_sys_mod.F90
23+
CDEPS/share/shr_timer_mod.F90
24+
)
25+
26+
list(APPEND cdeps_streams_files
27+
CDEPS/streams/dshr_methods_mod.F90
28+
CDEPS/streams/dshr_strdata_mod.F90
29+
CDEPS/streams/dshr_stream_mod.F90
30+
CDEPS/streams/dshr_tinterp_mod.F90
31+
)
32+
33+
list(APPEND cdeps_dshr_files
34+
CDEPS/dshr/dshr_dfield_mod.F90
35+
CDEPS/dshr/dshr_fldlist_mod.F90
36+
CDEPS/dshr/dshr_mod.F90
37+
)
38+
39+
list(APPEND cdeps_datm_files
40+
CDEPS/datm/atm_comp_nuopc.F90
41+
CDEPS/datm/datm_datamode_cfsr_mod.F90
42+
CDEPS/datm/datm_datamode_clmncep_mod.F90
43+
CDEPS/datm/datm_datamode_core2_mod.F90
44+
CDEPS/datm/datm_datamode_cplhist_mod.F90
45+
CDEPS/datm/datm_datamode_era5_mod.F90
46+
CDEPS/datm/datm_datamode_gefs_mod.F90
47+
CDEPS/datm/datm_datamode_jra_mod.F90
48+
)
49+
50+
list(APPEND cdeps_dice_files
51+
CDEPS/dice/dice_datamode_ssmi_mod.F90
52+
CDEPS/dice/dice_flux_atmice_mod.F90
53+
CDEPS/dice/ice_comp_nuopc.F90
54+
)
55+
56+
list(APPEND cdeps_dlnd_files
57+
CDEPS/dlnd/lnd_comp_nuopc.F90
58+
)
59+
60+
list(APPEND cdeps_docn_files
61+
CDEPS/docn/docn_datamode_aquaplanet_mod.F90
62+
CDEPS/docn/docn_datamode_copyall_mod.F90
63+
CDEPS/docn/docn_datamode_iaf_mod.F90
64+
CDEPS/docn/docn_datamode_som_mod.F90
65+
CDEPS/docn/ocn_comp_nuopc.F90
66+
)
67+
68+
list(APPEND cdeps_drof_files
69+
CDEPS/drof/rof_comp_nuopc.F90
70+
)
71+
72+
list(APPEND cdeps_dwav_files
73+
CDEPS/dwav/wav_comp_nuopc.F90
74+
)
+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#define TYPETEXT 100
2+
#define TYPEREAL 101
3+
#define TYPEDOUBLE 102
4+
#define TYPEINT 103
5+
#define TYPELONG 104
6+
#define TYPELOGICAL 105

0 commit comments

Comments
 (0)