Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
3a4fcc5
Re-add src/tracer/MOM_generic_tracer.F90
dougiesquire Jun 30, 2025
18ea1eb
Replicate FMS cap initialize_ocean_public_type changes in NUOPC cap
dougiesquire Jun 30, 2025
9f25934
Allow generic tracers in NUOPC cap
dougiesquire Jan 23, 2025
919744d
Accumulate fluxes%salt_flux_added and pass to new generic_tracer_upda…
dougiesquire Jan 23, 2025
db41305
Add CMake build for access3 models (#2 and #10)
anton-seaice May 6, 2025
f6ab4fd
Fix indexing i/j typo bug when HMIX_UV_SFC_PROP>0
claireyung Jun 27, 2025
f20b0e1
Add print statements to determine why ice shelf code thinks it's rest…
claireyung Jun 27, 2025
07b5984
Add more print statements in config_src/drivers/nuopc_cap/mom_cap.F90
claireyung Jul 2, 2025
a0f3649
Add dirs%input_filename = n in config_src/drivers/nuopc_cap/mom_cap.F90
claireyung Jul 2, 2025
6fcb1c2
Revert to previous bugfix commit as print statemnets no longer needed
claireyung Aug 27, 2025
667aded
Replace FATAL nuopc error when ocn_mesh and ocean mask do not match w…
claireyung Aug 27, 2025
1ddced2
Try to add ice shelf hmask in omask calculation in config_src/drivers…
claireyung Sep 4, 2025
e02e0fe
avoid repeating names
claireyung Sep 4, 2025
6ea701f
Try again with calling to correct mom_export routine, correct a comma…
claireyung Sep 4, 2025
e0bab91
HACKYYY make ice_shelf_CS ; public:
claireyung Sep 4, 2025
d3016f0
Get rid of due to syntax error
claireyung Sep 4, 2025
455ef1c
Correct order of CS and rc in mom_export
claireyung Sep 4, 2025
e4010d0
Add omask print statement
claireyung Sep 4, 2025
bfbd272
Revert to before mask changes to try again.
claireyung Sep 7, 2025
3df1b02
Revert "Try to add ice shelf hmask in omask calculation in config_src…
claireyung Sep 7, 2025
bd3640b
use ocean_state%fluxes%frac_shelf_h instead of calling ice shelf modu…
claireyung Sep 8, 2025
14a0313
MOM cap updates to make ice shelf work with nuopc - preliminarygit ad…
claireyung Sep 15, 2025
23ba3e3
Clean up to remove unneeded code
claireyung Sep 15, 2025
1424586
Hardcode ice shelf restart to be in 'RESTART/' in nuopc cap. Also rem…
claireyung Sep 17, 2025
b2e31ba
Replace iceshelf_CSp%ISS%hmask with fluxes%frac_shelf_h in omask defi…
claireyung Sep 17, 2025
47ce697
Support restarting from decomposed restart files when restart filenam…
minghangli-uni Aug 19, 2025
94540bc
Add FRAZIL_NOT_UNDER_ICESHELF parameter to turn off frazil scheme und…
claireyung Oct 10, 2025
0c71791
Add parameter ICE_SHELF_TIDEAMP_SCALING_FACTOR
claireyung Oct 10, 2025
95e4274
Initialise OS%flux_tmp in nuopc cap
angus-g Nov 13, 2025
f7cb564
Add option to override ice shelf melt mass and heat fluxes
claireyung Dec 10, 2025
ee6bf46
+*Fix 3-equation ice-ocean flux iteration (#972)
Hallberg-NOAA Oct 1, 2025
ef9ad05
Added frazil to ice shelf (#985)
alex-huth Dec 2, 2025
401ec5b
Fix for ice-shelf friction velocity bugs (#995)
alex-huth Dec 9, 2025
8c993a6
Revert "Fix for ice-shelf friction velocity bugs (#995)"
claireyung Dec 17, 2025
2569324
Revert "Added frazil to ice shelf (#985)"
claireyung Dec 17, 2025
851c39c
Fix for ice-shelf friction velocity bugs (#995)
alex-huth Dec 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
547 changes: 547 additions & 0 deletions CMakeLists.txt

Large diffs are not rendered by default.

337 changes: 337 additions & 0 deletions cmake/FindNetCDF.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,337 @@
# (C) Copyright 2011- ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation nor
# does it submit to any jurisdiction.

# Try to find NetCDF includes and library.
# Supports static and shared libaries and allows each component to be found in sepearte prefixes.
#
# This module defines
#
# - NetCDF_FOUND - System has NetCDF
# - NetCDF_INCLUDE_DIRS - the NetCDF include directories
# - NetCDF_VERSION - the version of NetCDF
# - NetCDF_CONFIG_EXECUTABLE - the netcdf-config executable if found
# - NetCDF_PARALLEL - Boolean True if NetCDF4 has parallel IO support via hdf5 and/or pnetcdf
# - NetCDF_HAS_PNETCDF - Boolean True if NetCDF4 has pnetcdf support
#
# Deprecated Defines
# - NetCDF_LIBRARIES - [Deprecated] Use NetCDF::NetCDF_<LANG> targets instead.
#
#
# Following components are available:
#
# - C - C interface to NetCDF (netcdf)
# - CXX - CXX4 interface to NetCDF (netcdf_c++4)
# - Fortran - Fortran interface to NetCDF (netcdff)
#
# For each component the following are defined:
#
# - NetCDF_<comp>_FOUND - whether the component is found
# - NetCDF_<comp>_LIBRARIES - the libraries for the component
# - NetCDF_<comp>_LIBRARY_SHARED - Boolean is true if libraries for component are shared
# - NetCDF_<comp>_INCLUDE_DIRS - the include directories for specified component
# - NetCDF::NetCDF_<comp> - target of component to be used with target_link_libraries()
#
# The following paths will be searched in order if set in CMake (first priority) or environment (second priority)
#
# - NetCDF_ROOT - root of NetCDF installation
# - NetCDF_PATH - root of NetCDF installation
#
# The search process begins with locating NetCDF Include headers. If these are in a non-standard location,
# set one of the following CMake or environment variables to point to the location:
#
# - NetCDF_INCLUDE_DIR or NetCDF_${comp}_INCLUDE_DIR
# - NetCDF_INCLUDE_DIRS or NetCDF_${comp}_INCLUDE_DIR
#
# Notes:
#
# - Use "NetCDF::NetCDF_<LANG>" targets only. NetCDF_LIBRARIES exists for backwards compatibility and should not be used.
# - These targets have all the knowledge of include directories and library search directories, and a single
# call to target_link_libraries will provide all these transitive properties to your target. Normally all that is
# needed to build and link against NetCDF is, e.g.:
# target_link_libraries(my_c_tgt PUBLIC NetCDF::NetCDF_C)
# - "NetCDF" is always the preferred naming for this package, its targets, variables, and environment variables
# - For compatibility, some variables are also set/checked using alternate names NetCDF4, NETCDF, or NETCDF4
# - Environments relying on these older environment variable names should move to using a "NetCDF_ROOT" environment variable
# - Preferred component capitalization follows the CMake LANGUAGES variables: i.e., C, Fortran, CXX
# - For compatibility, alternate capitalizations are supported but should not be used.
# - If no components are defined, all components will be searched
#

list( APPEND _possible_components C CXX Fortran )

## Include names for each component
set( NetCDF_C_INCLUDE_NAME netcdf.h )
set( NetCDF_CXX_INCLUDE_NAME netcdf )
set( NetCDF_Fortran_INCLUDE_NAME netcdf.mod )

## Library names for each component
set( NetCDF_C_LIBRARY_NAME netcdf )
set( NetCDF_CXX_LIBRARY_NAME netcdf_c++4 )
set( NetCDF_Fortran_LIBRARY_NAME netcdff )

## Enumerate search components
foreach( _comp ${_possible_components} )
string( TOUPPER "${_comp}" _COMP )
set( _arg_${_COMP} ${_comp} )
set( _name_${_COMP} ${_comp} )
endforeach()

set( _search_components C)
foreach( _comp ${${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS} )
string( TOUPPER "${_comp}" _COMP )
set( _arg_${_COMP} ${_comp} )
list( APPEND _search_components ${_name_${_COMP}} )
if( NOT _name_${_COMP} )
message(SEND_ERROR "Find${CMAKE_FIND_PACKAGE_NAME}: COMPONENT ${_comp} is not a valid component. Valid components: ${_possible_components}" )
endif()
endforeach()
list( REMOVE_DUPLICATES _search_components )

## Search hints for finding include directories and libraries
foreach( _comp IN ITEMS "_" "_C_" "_Fortran_" "_CXX_" )
foreach( _name IN ITEMS NetCDF4 NetCDF NETCDF4 NETCDF )
foreach( _var IN ITEMS ROOT PATH )
list(APPEND _search_hints ${${_name}${_comp}${_var}} $ENV{${_name}${_comp}${_var}} )
list(APPEND _include_search_hints
${${_name}${_comp}INCLUDE_DIR} $ENV{${_name}${_comp}INCLUDE_DIR}
${${_name}${_comp}INCLUDE_DIRS} $ENV{${_name}${_comp}INCLUDE_DIRS} )
endforeach()
endforeach()
endforeach()
#Old-school HPC module env variable names
foreach( _name IN ITEMS NetCDF4 NetCDF NETCDF4 NETCDF )
foreach( _comp IN ITEMS "_C" "_Fortran" "_CXX" )
list(APPEND _search_hints ${${_name}} $ENV{${_name}})
list(APPEND _search_hints ${${_name}${_comp}} $ENV{${_name}${_comp}})
endforeach()
endforeach()

## Find headers for each component
set(NetCDF_INCLUDE_DIRS)
set(_new_search_components)
foreach( _comp IN LISTS _search_components )
if(NOT ${PROJECT_NAME}_NetCDF_${_comp}_FOUND)
list(APPEND _new_search_components ${_comp})
endif()
find_file(NetCDF_${_comp}_INCLUDE_FILE
NAMES ${NetCDF_${_comp}_INCLUDE_NAME}
DOC "NetCDF ${_comp} include directory"
HINTS ${_include_search_hints} ${_search_hints}
PATH_SUFFIXES include include/netcdf
)
mark_as_advanced(NetCDF_${_comp}_INCLUDE_FILE)
message(DEBUG "NetCDF_${_comp}_INCLUDE_FILE: ${NetCDF_${_comp}_INCLUDE_FILE}")
if( NetCDF_${_comp}_INCLUDE_FILE )
get_filename_component(NetCDF_${_comp}_INCLUDE_FILE ${NetCDF_${_comp}_INCLUDE_FILE} ABSOLUTE)
get_filename_component(NetCDF_${_comp}_INCLUDE_DIR ${NetCDF_${_comp}_INCLUDE_FILE} DIRECTORY)
list(APPEND NetCDF_INCLUDE_DIRS ${NetCDF_${_comp}_INCLUDE_DIR})
endif()
endforeach()
if(NetCDF_INCLUDE_DIRS)
list(REMOVE_DUPLICATES NetCDF_INCLUDE_DIRS)
endif()
set(NetCDF_INCLUDE_DIRS "${NetCDF_INCLUDE_DIRS}" CACHE STRING "NetCDF Include directory paths" FORCE)

## Find n*-config executables for search components
foreach( _comp IN LISTS _search_components )
if( _comp MATCHES "^(C)$" )
set(_conf "c")
elseif( _comp MATCHES "^(Fortran)$" )
set(_conf "f")
elseif( _comp MATCHES "^(CXX)$" )
set(_conf "cxx4")
endif()
find_program( NetCDF_${_comp}_CONFIG_EXECUTABLE
NAMES n${_conf}-config
HINTS ${NetCDF_INCLUDE_DIRS} ${_include_search_hints} ${_search_hints}
PATH_SUFFIXES bin Bin ../bin ../../bin
DOC "NetCDF n${_conf}-config helper" )
message(DEBUG "NetCDF_${_comp}_CONFIG_EXECUTABLE: ${NetCDF_${_comp}_CONFIG_EXECUTABLE}")
endforeach()

set(_C_libs_flag --libs)
set(_Fortran_libs_flag --flibs)
set(_CXX_libs_flag --libs)
set(_C_includes_flag --includedir)
set(_Fortran_includes_flag --includedir)
set(_CXX_includes_flag --includedir)
function(netcdf_config exec flag output_var)
set(${output_var} False PARENT_SCOPE)
if( exec )
execute_process( COMMAND ${exec} ${flag} RESULT_VARIABLE _ret OUTPUT_VARIABLE _val)
if( _ret EQUAL 0 )
string( STRIP ${_val} _val )
set( ${output_var} ${_val} PARENT_SCOPE )
endif()
endif()
endfunction()

## Find libraries for each component
set( NetCDF_LIBRARIES )
foreach( _comp IN LISTS _search_components )
string( TOUPPER "${_comp}" _COMP )

find_library( NetCDF_${_comp}_LIBRARY
NAMES ${NetCDF_${_comp}_LIBRARY_NAME}
DOC "NetCDF ${_comp} library"
HINTS ${NetCDF_${_comp}_INCLUDE_DIRS} ${_search_hints}
PATH_SUFFIXES lib64 lib ../lib64 ../lib ../../lib64 ../../lib )
mark_as_advanced( NetCDF_${_comp}_LIBRARY )
get_filename_component(NetCDF_${_comp}_LIBRARY ${NetCDF_${_comp}_LIBRARY} ABSOLUTE)
set(NetCDF_${_comp}_LIBRARY ${NetCDF_${_comp}_LIBRARY} CACHE STRING "NetCDF ${_comp} library" FORCE)
message(DEBUG "NetCDF_${_comp}_LIBRARY: ${NetCDF_${_comp}_LIBRARY}")

if( NetCDF_${_comp}_LIBRARY )
if( NetCDF_${_comp}_LIBRARY MATCHES ".a$" )
set( NetCDF_${_comp}_LIBRARY_SHARED FALSE )
set( _library_type STATIC)
else()
list( APPEND NetCDF_LIBRARIES ${NetCDF_${_comp}_LIBRARY} )
set( NetCDF_${_comp}_LIBRARY_SHARED TRUE )
set( _library_type SHARED)
endif()
endif()

#Use nc-config to set per-component LIBRARIES variable if possible
netcdf_config( ${NetCDF_${_comp}_CONFIG_EXECUTABLE} ${_${_comp}_libs_flag} _val )
if( _val )
set( NetCDF_${_comp}_LIBRARIES ${_val} )
if(NOT NetCDF_${_comp}_LIBRARY_SHARED AND NOT NetCDF_${_comp}_FOUND) #Static targets should use nc_config to get a proper link line with all necessary static targets.
list( APPEND NetCDF_LIBRARIES ${NetCDF_${_comp}_LIBRARIES} )
endif()
else()
set( NetCDF_${_comp}_LIBRARIES ${NetCDF_${_comp}_LIBRARY} )
if(NOT NetCDF_${_comp}_LIBRARY_SHARED)
message(SEND_ERROR "Unable to properly find NetCDF. Found static libraries at: ${NetCDF_${_comp}_LIBRARY} but could not run nc-config: ${NetCDF_CONFIG_EXECUTABLE}")
endif()
endif()

#Use nc-config to set per-component INCLUDE_DIRS variable if possible
netcdf_config( ${NetCDF_${_comp}_CONFIG_EXECUTABLE} ${_${_comp}_includes_flag} _val )
if( _val )
string( REPLACE " " ";" _val ${_val} )
set( NetCDF_${_comp}_INCLUDE_DIRS ${_val} )
else()
set( NetCDF_${_comp}_INCLUDE_DIRS ${NetCDF_${_comp}_INCLUDE_DIR} )
endif()

if( NetCDF_${_comp}_LIBRARIES AND NetCDF_${_comp}_INCLUDE_DIRS )
set( ${CMAKE_FIND_PACKAGE_NAME}_${_arg_${_COMP}}_FOUND TRUE )
if (NOT TARGET NetCDF::NetCDF_${_comp})
add_library(NetCDF::NetCDF_${_comp} ${_library_type} IMPORTED)
set_target_properties(NetCDF::NetCDF_${_comp} PROPERTIES
IMPORTED_LOCATION ${NetCDF_${_comp}_LIBRARY}
INTERFACE_INCLUDE_DIRECTORIES "${NetCDF_${_comp}_INCLUDE_DIRS}"
INTERFACE_LINK_LIBRARIES ${NetCDF_${_comp}_LIBRARIES} )
endif()
endif()
endforeach()
if(NetCDF_LIBRARIES AND NetCDF_${_comp}_LIBRARY_SHARED)
list(REMOVE_DUPLICATES NetCDF_LIBRARIES)
endif()
set(NetCDF_LIBRARIES "${NetCDF_LIBRARIES}" CACHE STRING "NetCDF library targets" FORCE)

## Find version via netcdf-config if possible
if (NetCDF_INCLUDE_DIRS)
if( NetCDF_C_CONFIG_EXECUTABLE )
netcdf_config( ${NetCDF_C_CONFIG_EXECUTABLE} --version _vers )
if( _vers )
string(REGEX REPLACE ".* ((([0-9]+)\\.)+([0-9]+)).*" "\\1" NetCDF_VERSION "${_vers}" )
endif()
else()
foreach( _dir IN LISTS NetCDF_INCLUDE_DIRS)
if( EXISTS "${_dir}/netcdf_meta.h" )
file(STRINGS "${_dir}/netcdf_meta.h" _netcdf_version_lines
REGEX "#define[ \t]+NC_VERSION_(MAJOR|MINOR|PATCH|NOTE)")
string(REGEX REPLACE ".*NC_VERSION_MAJOR *\([0-9]*\).*" "\\1" _netcdf_version_major "${_netcdf_version_lines}")
string(REGEX REPLACE ".*NC_VERSION_MINOR *\([0-9]*\).*" "\\1" _netcdf_version_minor "${_netcdf_version_lines}")
string(REGEX REPLACE ".*NC_VERSION_PATCH *\([0-9]*\).*" "\\1" _netcdf_version_patch "${_netcdf_version_lines}")
string(REGEX REPLACE ".*NC_VERSION_NOTE *\"\([^\"]*\)\".*" "\\1" _netcdf_version_note "${_netcdf_version_lines}")
set(NetCDF_VERSION "${_netcdf_version_major}.${_netcdf_version_minor}.${_netcdf_version_patch}${_netcdf_version_note}")
unset(_netcdf_version_major)
unset(_netcdf_version_minor)
unset(_netcdf_version_patch)
unset(_netcdf_version_note)
unset(_netcdf_version_lines)
endif()
endforeach()
endif()
endif ()

## Detect additional package properties
netcdf_config(${NetCDF_C_CONFIG_EXECUTABLE} --has-parallel4 _val)
if( NOT _val MATCHES "^(yes|no)$" )
netcdf_config(${NetCDF_C_CONFIG_EXECUTABLE} --has-parallel _val)
endif()
if( _val MATCHES "^(yes)$" )
set(NetCDF_PARALLEL TRUE CACHE STRING "NetCDF has parallel IO capability via pnetcdf or hdf5." FORCE)
else()
set(NetCDF_PARALLEL FALSE CACHE STRING "NetCDF has no parallel IO capability." FORCE)
endif()

## Finalize find_package
include(FindPackageHandleStandardArgs)

if(NOT NetCDF_FOUND OR _new_search_components)
find_package_handle_standard_args( ${CMAKE_FIND_PACKAGE_NAME}
REQUIRED_VARS NetCDF_INCLUDE_DIRS NetCDF_LIBRARIES
VERSION_VAR NetCDF_VERSION
HANDLE_COMPONENTS )
endif()

foreach( _comp IN LISTS _search_components )
if( NetCDF_${_comp}_FOUND )
#Record found components to avoid duplication in NetCDF_LIBRARIES for static libraries
set(NetCDF_${_comp}_FOUND ${NetCDF_${_comp}_FOUND} CACHE BOOL "NetCDF ${_comp} Found" FORCE)
#Set a per-package, per-component found variable to communicate between multiple calls to find_package()
set(${PROJECT_NAME}_NetCDF_${_comp}_FOUND True)
endif()
endforeach()

if( ${CMAKE_FIND_PACKAGE_NAME}_FOUND AND NOT ${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY AND _new_search_components)
message( STATUS "Find${CMAKE_FIND_PACKAGE_NAME} defines targets:" )
message( STATUS " - NetCDF_VERSION [${NetCDF_VERSION}]")
message( STATUS " - NetCDF_PARALLEL [${NetCDF_PARALLEL}]")
foreach( _comp IN LISTS _new_search_components )
string( TOUPPER "${_comp}" _COMP )
message( STATUS " - NetCDF_${_comp}_CONFIG_EXECUTABLE [${NetCDF_${_comp}_CONFIG_EXECUTABLE}]")
if( ${CMAKE_FIND_PACKAGE_NAME}_${_arg_${_COMP}}_FOUND )
get_filename_component(_root ${NetCDF_${_comp}_INCLUDE_DIR}/.. ABSOLUTE)
if( NetCDF_${_comp}_LIBRARY_SHARED )
message( STATUS " - NetCDF::NetCDF_${_comp} [SHARED] [Root: ${_root}] Lib: ${NetCDF_${_comp}_LIBRARY} ")
else()
message( STATUS " - NetCDF::NetCDF_${_comp} [STATIC] [Root: ${_root}] Lib: ${NetCDF_${_comp}_LIBRARY} ")
endif()
endif()
endforeach()
endif()

foreach( _prefix NetCDF NetCDF4 NETCDF NETCDF4 ${CMAKE_FIND_PACKAGE_NAME} )
set( ${_prefix}_INCLUDE_DIRS ${NetCDF_INCLUDE_DIRS} )
set( ${_prefix}_LIBRARIES ${NetCDF_LIBRARIES})
set( ${_prefix}_VERSION ${NetCDF_VERSION} )
set( ${_prefix}_FOUND ${${CMAKE_FIND_PACKAGE_NAME}_FOUND} )
set( ${_prefix}_CONFIG_EXECUTABLE ${NetCDF_CONFIG_EXECUTABLE} )
set( ${_prefix}_PARALLEL ${NetCDF_PARALLEL} )

foreach( _comp ${_search_components} )
string( TOUPPER "${_comp}" _COMP )
set( _arg_comp ${_arg_${_COMP}} )
set( ${_prefix}_${_comp}_FOUND ${${CMAKE_FIND_PACKAGE_NAME}_${_arg_comp}_FOUND} )
set( ${_prefix}_${_COMP}_FOUND ${${CMAKE_FIND_PACKAGE_NAME}_${_arg_comp}_FOUND} )
set( ${_prefix}_${_arg_comp}_FOUND ${${CMAKE_FIND_PACKAGE_NAME}_${_arg_comp}_FOUND} )

set( ${_prefix}_${_comp}_LIBRARIES ${NetCDF_${_comp}_LIBRARIES} )
set( ${_prefix}_${_COMP}_LIBRARIES ${NetCDF_${_comp}_LIBRARIES} )
set( ${_prefix}_${_arg_comp}_LIBRARIES ${NetCDF_${_comp}_LIBRARIES} )

set( ${_prefix}_${_comp}_INCLUDE_DIRS ${NetCDF_${_comp}_INCLUDE_DIRS} )
set( ${_prefix}_${_COMP}_INCLUDE_DIRS ${NetCDF_${_comp}_INCLUDE_DIRS} )
set( ${_prefix}_${_arg_comp}_INCLUDE_DIRS ${NetCDF_${_comp}_INCLUDE_DIRS} )
endforeach()
endforeach()
10 changes: 10 additions & 0 deletions cmake/FortranLib.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Copyright ACCESS-NRI and contributors. See the top-level LICENSE file for details.

function(add_fortran_library LIB MOD_DIR)
add_library(${LIB} ${ARGN})

get_target_property(LIB_DIR ${LIB} BINARY_DIR)
set_target_properties(${LIB} PROPERTIES Fortran_MODULE_DIRECTORY ${LIB_DIR}/${MOD_DIR})

target_include_directories(${LIB} INTERFACE "$<BUILD_INTERFACE:${LIB_DIR}/${MOD_DIR}>")
endfunction(add_fortran_library)
31 changes: 31 additions & 0 deletions cmake/Mom6libConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Copyright ACCESS-NRI and contributors. See the top-level LICENSE file for details.

@PACKAGE_INIT@

if(NOT Mom6lib_FIND_QUIETLY)
message(STATUS "Found Mom6lib: ${PACKAGE_PREFIX_DIR}")
endif()

include(CMakeFindDependencyMacro)

# Request components
set(_required_components ${Mom6lib_FIND_COMPONENTS})

find_dependency(fms COMPONENTS R8 REQUIRED)
find_dependency(GFDLGTracers REQUIRED)
find_dependency(NetCDF REQUIRED Fortran)
if (NOT NetCDF_PARALLEL)
message(FATAL_ERROR "NetCDF does not have parallel I/O support!")
endif()

if(@OPENMP@)
find_package(OpenMP REQUIRED)
endif()

# Run the normal Targets.cmake
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
include("${CMAKE_CURRENT_LIST_DIR}/Mom6libTargets.cmake")
list(REMOVE_ITEM CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})

# Check the requested components are valid
check_required_components(_required_components)
3 changes: 2 additions & 1 deletion config_src/drivers/FMS_cap/ocean_model_MOM.F90
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,8 @@ subroutine ocean_model_init(Ocean_sfc, OS, Time_init, Time_in, wind_stagger, gas

!allocate(OS%sfc_state)
call allocate_surface_state(OS%sfc_state, OS%grid, use_temperature, do_integrals=.true., &
gas_fields_ocn=gas_fields_ocn, use_meltpot=use_melt_pot)
gas_fields_ocn=gas_fields_ocn, use_meltpot=use_melt_pot, &
use_iceshelves=OS%use_ice_shelf)

if (present(wind_stagger)) then
call surface_forcing_init(Time_in, OS%grid, OS%US, param_file, OS%diag, &
Expand Down
Loading
Loading