Skip to content

Commit e09ade8

Browse files
Replace cice5 with cice6 in ufs-s2s-model (#160)
* Replaces CICE5 with CICE6: Issue #159 * Adds required CICE6 items to nems.configure. Removes non-cmeps nems.configure files. Updates default_vars and edit_inputs to allow CICE6 resolution and processor count to be specified at run time. Updates ice_in_template for CICE6 * Updates to esmf8.1.0bs27 to allow ICE and WAV on separate PEs (Issue #172) * Adds cpl_mode (Issue #138) and use_coldstart as new configurable variables (Issues #86, #53). * Fixes coldstart run sequence by calling the restart write phase before the accum avg phase (Issue #167)
1 parent d7b7081 commit e09ade8

File tree

107 files changed

+16943
-24437
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+16943
-24437
lines changed

.gitignore

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Prerequisites
2+
*.d
3+
4+
# Compiled Object files
5+
*.slo
6+
*.lo
7+
*.o
8+
*.obj
9+
10+
# Precompiled Headers
11+
*.gch
12+
*.pch
13+
14+
# Compiled Dynamic libraries
15+
*.so
16+
*.dylib
17+
*.dll
18+
19+
# Fortran module files
20+
*.mod
21+
*.smod
22+
23+
# Compiled Static libraries
24+
*.lai
25+
*.la
26+
*.a
27+
*.lib
28+
29+
# Executables
30+
*.exe
31+
*.out
32+
*.app
33+
34+
# system files
35+
*.swp
36+
*~
37+
.DS_Store
38+
39+
# python files
40+
# Byte-compiled / optimized / DLL files
41+
__pycache__/
42+
*.py[cod]
43+
*$py.class
44+
45+
# C extensions
46+
*.so
47+
48+
# repo-specific ignorables
49+
coupled*.mk
50+
51+
# CMake files and directories
52+
build*/
53+
install*/
54+
CMakeLists.txt.user
55+
CMakeCache.txt
56+
CMakeFiles
57+
CMakeScripts
58+
cmake_install.cmake
59+
install_manifest.txt
60+
compile_commands.json
61+
CTestTestfile.cmake
62+
_deps

.gitmodules

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@
66
path = NEMS
77
url = https://github.com/NOAA-EMC/NEMS.git
88
branch = develop
9-
[submodule "CICE_SRC"]
10-
path = CICE_SRC
11-
url = https://github.com/NOAA-EMC/CICE5.git
12-
branch = develop
139
[submodule "FMS"]
1410
path = FMS
1511
url = https://github.com/NOAA-GFDL/FMS
@@ -18,10 +14,6 @@
1814
path = stochastic_physics
1915
url = https://github.com/noaa-psd/stochastic_physics
2016
branch = master
21-
[submodule "MOM6"]
22-
path = MOM6
23-
url = https://github.com/NOAA-EMC/MOM6-interface
24-
branch = develop
2517
[submodule "CMEPS"]
2618
path = CMEPS
2719
url = https://github.com/NOAA-EMC/CMEPS.git
@@ -30,3 +22,15 @@
3022
path = WW3
3123
url = https://github.com/NOAA-EMC/WW3.git
3224
branch = develop
25+
[submodule "CICE6"]
26+
path = CICE-interface/CICE
27+
url = https://github.com/NOAA-EMC/CICE.git
28+
branch = emc/develop
29+
[submodule "MOM6-interface/mkmf"]
30+
path = MOM6-interface/mkmf
31+
url = https://github.com/NOAA-EMC/mkmf
32+
branch = develop
33+
[submodule "MOM6-interface/MOM6"]
34+
path = MOM6-interface/MOM6
35+
url = https://github.com/NOAA-EMC/MOM6
36+
branch = dev/emc

CICE

Lines changed: 0 additions & 1 deletion
This file was deleted.

CICE-interface/CICE

Submodule CICE added at 285985c

CICE-interface/CMakeLists.txt

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
include(GNUInstallDirs)
2+
3+
include("cice_files.cmake")
4+
5+
# Configuration Options
6+
set(CICE_DRIVER "NUOPC" CACHE STRING "CICE OPTIONS: Choose CICE6 Driver." FORCE)
7+
set_property(CACHE CICE_DRIVER PROPERTY STRINGS "STANDALONE" "NUOPC" "DIRECT" "MCT")
8+
9+
set(NUOPC_TARGET "CMEPS" CACHE STRING "CICE OPTIONS: Choose NUOPC implementation." FORCE)
10+
set_property(CACHE NUOPC_TARGET PROPERTY STRINGS "CMEPS" "DMI")
11+
12+
message(STATUS "CICE: CICE_DRIVER = ${CICE_DRIVER}")
13+
message(STATUS "CICE: NUOPC_TARGET = ${NUOPC_TARGET}")
14+
15+
# Choose files based on Serial or MPI build
16+
if(MPI_Fortran_FOUND)
17+
message(STATUS "CICE: Build with MPI")
18+
list(APPEND comm_list ${cice_mpi_comm_files})
19+
else()
20+
message(STATUS "CICE: Build without MPI")
21+
list(APPEND comm_list ${cice_serial_comm_files})
22+
endif()
23+
24+
# Collect IO files for appropriate IO
25+
if(USE_NetCDF AND NetCDF_Fortran_FOUND)
26+
message(STATUS "CICE: Build with NetCDF IO")
27+
list(APPEND io_list ${cice_netcdf_io_files})
28+
elseif(USE_PIO AND PIO_Fortran_FOUND)
29+
message(STATUS "CICE: Build with Parallel IO")
30+
list(APPEND io_list ${cice_pio2_io_files})
31+
else()
32+
message(STATUS "CICE: Build with Binary IO")
33+
list(APPEND io_list ${cice_binary_io_files})
34+
endif()
35+
36+
# Collect driver files
37+
# There are multiple drivers in the drivers area
38+
if(CICE_DRIVER STREQUAL "NUOPC")
39+
if(NUOPC_TARGET STREQUAL "CMEPS")
40+
list(APPEND driver_list ${cice_nuopc_cmeps_driver_files})
41+
elseif(NUOPC_TARGET STREQUAL "DMI")
42+
list(APPEND driver_list ${cice_nuopc_dmi_driver_files})
43+
endif()
44+
elseif(CICE_DRIVER STREQUAL "DIRECT")
45+
list(APPEND driver_list ${cice_direct_driver_files})
46+
elseif(CICE_DRIVER STREQUAL "MCT")
47+
list(APPEND driver_list ${cice_mct_driver_files})
48+
else()
49+
list(APPEND driver_list ${cice_standalone_driver_files})
50+
endif()
51+
52+
# Merge all the lists together for the library
53+
list(APPEND lib_src_files
54+
${cice_shared_files}
55+
${icepack_files}
56+
${comm_list}
57+
${io_list}
58+
${driver_list}
59+
)
60+
61+
set(libName "nuopccice")
62+
set(moduleDir "${CMAKE_CURRENT_BINARY_DIR}/include/${libName}")
63+
64+
add_library(${libName} STATIC ${lib_src_files})
65+
add_library(${libName}::${libName} ALIAS ${libName})
66+
67+
set_target_properties(${libName} PROPERTIES Fortran_MODULE_DIRECTORY
68+
${moduleDir})
69+
70+
target_compile_definitions(${libName} PRIVATE -DESMF_VERSION_MAJOR=${ESMF_VERSION_MAJOR})
71+
target_include_directories(${libName} PRIVATE ${ESMF_MOD})
72+
73+
if(NetCDF_Fortran_FOUND)
74+
target_link_libraries(${libName} PUBLIC NetCDF::NetCDF_Fortran)
75+
endif()
76+
77+
if(PIO_Fortran_FOUND)
78+
target_link_libraries(${libName} PUBLIC PIO::PIO_Fortran)
79+
endif()
80+
81+
target_include_directories(${libName} INTERFACE
82+
$<BUILD_INTERFACE:${moduleDir}>
83+
$<INSTALL_INTERFACE:include/${libName}>)
84+
85+
if(OpenMP_Fortran_FOUND)
86+
target_link_libraries(${libName} PUBLIC OpenMP::OpenMP_Fortran)
87+
endif()
88+
89+
# Install compiled Fortran modules
90+
install(DIRECTORY ${moduleDir} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
91+
92+
# Install library
93+
install(
94+
TARGETS ${libName}
95+
LIBRARY DESTINATION lib
96+
ARCHIVE DESTINATION lib
97+
COMPONENT Library)

CICE-interface/cice_files.cmake

Lines changed: 185 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
list(APPEND cice_shared_files
2+
#Shared List:
3+
CICE/cicecore/shared/ice_arrays_column.F90
4+
CICE/cicecore/shared/ice_calendar.F90
5+
CICE/cicecore/shared/ice_constants.F90
6+
CICE/cicecore/shared/ice_distribution.F90
7+
CICE/cicecore/shared/ice_domain_size.F90
8+
CICE/cicecore/shared/ice_fileunits.F90
9+
CICE/cicecore/shared/ice_init_column.F90
10+
CICE/cicecore/shared/ice_kinds_mod.F90
11+
CICE/cicecore/shared/ice_restart_column.F90
12+
CICE/cicecore/shared/ice_restart_shared.F90
13+
CICE/cicecore/shared/ice_spacecurve.F90
14+
15+
#Analysis List:
16+
CICE/cicecore/cicedynB/analysis/ice_diagnostics.F90
17+
CICE/cicecore/cicedynB/analysis/ice_diagnostics_bgc.F90
18+
CICE/cicecore/cicedynB/analysis/ice_history.F90
19+
CICE/cicecore/cicedynB/analysis/ice_history_bgc.F90
20+
CICE/cicecore/cicedynB/analysis/ice_history_drag.F90
21+
CICE/cicecore/cicedynB/analysis/ice_history_fsd.F90
22+
CICE/cicecore/cicedynB/analysis/ice_history_mechred.F90
23+
CICE/cicecore/cicedynB/analysis/ice_history_pond.F90
24+
CICE/cicecore/cicedynB/analysis/ice_history_shared.F90
25+
26+
#Dynamics List:
27+
CICE/cicecore/cicedynB/dynamics/ice_dyn_eap.F90
28+
CICE/cicecore/cicedynB/dynamics/ice_dyn_evp.F90
29+
CICE/cicecore/cicedynB/dynamics/ice_dyn_evp_1d.F90
30+
CICE/cicecore/cicedynB/dynamics/ice_dyn_shared.F90
31+
CICE/cicecore/cicedynB/dynamics/ice_transport_driver.F90
32+
CICE/cicecore/cicedynB/dynamics/ice_transport_remap.F90
33+
34+
#General List:
35+
CICE/cicecore/cicedynB/general/ice_flux.F90
36+
CICE/cicecore/cicedynB/general/ice_flux_bgc.F90
37+
CICE/cicecore/cicedynB/general/ice_forcing.F90
38+
CICE/cicecore/cicedynB/general/ice_forcing_bgc.F90
39+
CICE/cicecore/cicedynB/general/ice_init.F90
40+
CICE/cicecore/cicedynB/general/ice_state.F90
41+
CICE/cicecore/cicedynB/general/ice_step_mod.F90
42+
43+
#Infrastructure List
44+
CICE/cicecore/cicedynB/infrastructure/ice_blocks.F90
45+
CICE/cicecore/cicedynB/infrastructure/ice_domain.F90
46+
CICE/cicecore/cicedynB/infrastructure/ice_grid.F90
47+
CICE/cicecore/cicedynB/infrastructure/ice_read_write.F90
48+
CICE/cicecore/cicedynB/infrastructure/ice_restart_driver.F90
49+
CICE/cicecore/cicedynB/infrastructure/ice_restoring.F90
50+
)
51+
52+
53+
#Icepack List:
54+
list(APPEND icepack_files
55+
CICE/icepack/columnphysics/icepack_aerosol.F90
56+
CICE/icepack/columnphysics/icepack_age.F90
57+
CICE/icepack/columnphysics/icepack_algae.F90
58+
CICE/icepack/columnphysics/icepack_atmo.F90
59+
CICE/icepack/columnphysics/icepack_brine.F90
60+
CICE/icepack/columnphysics/icepack_firstyear.F90
61+
CICE/icepack/columnphysics/icepack_flux.F90
62+
CICE/icepack/columnphysics/icepack_fsd.F90
63+
CICE/icepack/columnphysics/icepack_intfc.F90
64+
CICE/icepack/columnphysics/icepack_isotope.F90
65+
CICE/icepack/columnphysics/icepack_itd.F90
66+
CICE/icepack/columnphysics/icepack_kinds.F90
67+
CICE/icepack/columnphysics/icepack_mechred.F90
68+
CICE/icepack/columnphysics/icepack_meltpond_cesm.F90
69+
CICE/icepack/columnphysics/icepack_meltpond_lvl.F90
70+
CICE/icepack/columnphysics/icepack_meltpond_topo.F90
71+
CICE/icepack/columnphysics/icepack_mushy_physics.F90
72+
CICE/icepack/columnphysics/icepack_ocean.F90
73+
CICE/icepack/columnphysics/icepack_orbital.F90
74+
CICE/icepack/columnphysics/icepack_parameters.F90
75+
CICE/icepack/columnphysics/icepack_shortwave.F90
76+
CICE/icepack/columnphysics/icepack_therm_0layer.F90
77+
CICE/icepack/columnphysics/icepack_therm_bl99.F90
78+
CICE/icepack/columnphysics/icepack_therm_itd.F90
79+
CICE/icepack/columnphysics/icepack_therm_mushy.F90
80+
CICE/icepack/columnphysics/icepack_therm_shared.F90
81+
CICE/icepack/columnphysics/icepack_therm_vertical.F90
82+
CICE/icepack/columnphysics/icepack_tracers.F90
83+
CICE/icepack/columnphysics/icepack_warnings.F90
84+
CICE/icepack/columnphysics/icepack_wavefracspec.F90
85+
CICE/icepack/columnphysics/icepack_zbgc.F90
86+
CICE/icepack/columnphysics/icepack_zbgc_shared.F90
87+
CICE/icepack/columnphysics/icepack_zsalinity.F90
88+
)
89+
90+
list(APPEND cice_shared_files_c
91+
CICE/cicecore/cicedynB/infrastructure/ice_shr_reprosum86.c
92+
)
93+
94+
#-- Using MPI
95+
list(APPEND cice_mpi_comm_files
96+
CICE/cicecore/cicedynB/infrastructure/comm/mpi/ice_boundary.F90
97+
CICE/cicecore/cicedynB/infrastructure/comm/mpi/ice_broadcast.F90
98+
CICE/cicecore/cicedynB/infrastructure/comm/mpi/ice_communicate.F90
99+
CICE/cicecore/cicedynB/infrastructure/comm/mpi/ice_exit.F90
100+
CICE/cicecore/cicedynB/infrastructure/comm/mpi/ice_gather_scatter.F90
101+
CICE/cicecore/cicedynB/infrastructure/comm/mpi/ice_global_reductions.F90
102+
CICE/cicecore/cicedynB/infrastructure/comm/mpi/ice_reprosum.F90
103+
CICE/cicecore/cicedynB/infrastructure/comm/mpi/ice_timers.F90
104+
)
105+
106+
#-- Using Serial
107+
list(APPEND cice_serial_comm_files
108+
CICE/cicecore/cicedynB/infrastructure/comm/serial/ice_boundary.F90
109+
CICE/cicecore/cicedynB/infrastructure/comm/serial/ice_broadcast.F90
110+
CICE/cicecore/cicedynB/infrastructure/comm/serial/ice_communicate.F90
111+
CICE/cicecore/cicedynB/infrastructure/comm/serial/ice_exit.F90
112+
CICE/cicecore/cicedynB/infrastructure/comm/serial/ice_gather_scatter.F90
113+
CICE/cicecore/cicedynB/infrastructure/comm/serial/ice_global_reductions.F90
114+
CICE/cicecore/cicedynB/infrastructure/comm/serial/ice_reprosum.F90
115+
CICE/cicecore/cicedynB/infrastructure/comm/serial/ice_timers.F90
116+
)
117+
118+
#-- Using binary IO
119+
list(APPEND cice_binary_io_files
120+
CICE/cicecore/cicedynB/infrastructure/io/io_binary/ice_history_write.F90
121+
CICE/cicecore/cicedynB/infrastructure/io/io_binary/ice_restart.F90
122+
)
123+
124+
#-- Using NetCDF IO
125+
list(APPEND cice_netcdf_io_files
126+
CICE/cicecore/cicedynB/infrastructure/io/io_netcdf/ice_history_write.F90
127+
CICE/cicecore/cicedynB/infrastructure/io/io_netcdf/ice_restart.F90
128+
)
129+
130+
#PIO2 I/O List:
131+
list(APPEND cice_pio2_io_files
132+
CICE/cicecore/cicedynB/infrastructure/io/io_pio2/ice_history_write.F90
133+
CICE/cicecore/cicedynB/infrastructure/io/io_pio2/ice_pio.F90
134+
CICE/cicecore/cicedynB/infrastructure/io/io_pio2/ice_restart.F90
135+
)
136+
137+
#-- Using standalone driver
138+
list(APPEND cice_standalone_driver_files
139+
CICE/cicecore/drivers/standalone/cice/CICE.F90
140+
CICE/cicecore/drivers/standalone/cice/CICE_FinalMod.F90
141+
CICE/cicecore/drivers/standalone/cice/CICE_InitMod.F90
142+
CICE/cicecore/drivers/standalone/cice/CICE_RunMod.F90
143+
)
144+
145+
#-- Using NUOPC CMEPS driver
146+
list(APPEND cice_nuopc_cmeps_driver_files
147+
CICE/cicecore/drivers/nuopc/cmeps/CICE_FinalMod.F90
148+
CICE/cicecore/drivers/nuopc/cmeps/CICE_InitMod.F90
149+
CICE/cicecore/drivers/nuopc/cmeps/CICE_RunMod.F90
150+
CICE/cicecore/drivers/nuopc/cmeps/cice_wrapper_mod.F90
151+
CICE/cicecore/drivers/nuopc/cmeps/ice_comp_nuopc.F90
152+
CICE/cicecore/drivers/nuopc/cmeps/ice_import_export.F90
153+
CICE/cicecore/drivers/nuopc/cmeps/ice_prescribed_mod.F90
154+
CICE/cicecore/drivers/nuopc/cmeps/ice_scam.F90
155+
CICE/cicecore/drivers/nuopc/cmeps/ice_shr_methods.F90
156+
)
157+
158+
#-- Using NUOPC DMI driver
159+
list(APPEND cice_nuopc_dmi_driver_files
160+
CICE/cicecore/drivers/nuopc/dmi/CICE.F90
161+
CICE/cicecore/drivers/nuopc/dmi/CICE_FinalMod.F90
162+
CICE/cicecore/drivers/nuopc/dmi/CICE_InitMod.F90
163+
CICE/cicecore/drivers/nuopc/dmi/CICE_RunMod.F90
164+
)
165+
166+
#-- Using direct driver
167+
list(APPEND cice_direct_driver_files
168+
CICE/cicecore/drivers/direct/hadgem3/CICE.F90
169+
CICE/cicecore/drivers/direct/hadgem3/CICE_FinalMod.F90
170+
CICE/cicecore/drivers/direct/hadgem3/CICE_InitMod.F90
171+
CICE/cicecore/drivers/direct/hadgem3/CICE_RunMod.F90
172+
)
173+
174+
#-- Using MCT driver
175+
list(APPEND cice_mct_driver_files
176+
CICE/cicecore/drivers/mct/cesm1/CICE_FinalMod.F90
177+
CICE/cicecore/drivers/mct/cesm1/CICE_InitMod.F90
178+
CICE/cicecore/drivers/mct/cesm1/CICE_RunMod.F90
179+
CICE/cicecore/drivers/mct/cesm1/ice_comp_esmf.F90
180+
CICE/cicecore/drivers/mct/cesm1/ice_comp_mct.F90
181+
CICE/cicecore/drivers/mct/cesm1/ice_cpl_indices.F90
182+
CICE/cicecore/drivers/mct/cesm1/ice_import_export.F90
183+
CICE/cicecore/drivers/mct/cesm1/ice_prescribed_mod.F90
184+
CICE/cicecore/drivers/mct/cesm1/ice_scam.F90
185+
)

CICE_CAP

Lines changed: 0 additions & 1 deletion
This file was deleted.

CICE_SRC

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)