Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
[submodule "MOM6"]
path = MOM6-interface/MOM6
url = https://github.com/NOAA-EMC/MOM6
branch = dev/emc
branch = GFSV17
[submodule "CICE"]
path = CICE-interface/CICE
url = https://github.com/NOAA-EMC/CICE
Expand Down
54 changes: 43 additions & 11 deletions CDEPS-interface/ufs/cdeps_share/shr_is_restart_fh_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -122,49 +122,81 @@ end subroutine is_restart_fh
!!
!> @details Write a log file for a named component when a restart file is written
!!
!! @param[in] nextTime the ESMF time at the end of a ModelAdvance
!! @param[in] startTime the ESMF time at the Model Start
!! @param[in] complog the named component
!! @param[in] nextTime the ESMF time at the end of a ModelAdvance
!! @param[in] startTime the ESMF time at the Model Start
!! @param[in] complog the named component
!! @param[in] prefixtime optional, if true log filename has time prefix
!! @param[in] lastrestart optional, if present, write the time of the last restart
!! @param[in] lastoutput optional, if present, write the filename written at this FH
!! @param[out] rc return code
!!
!> @authorDenise.Worthen@noaa.gov
!> @date 04-14-2025
subroutine log_restart_fh(nextTime, startTime, complog, rc)
subroutine log_restart_fh(myTime, startTime, complog, prefixtime, lastrestart, lastoutput, rc)

use ESMF, only : ESMF_SUCCESS, ESMF_MAXSTR, ESMF_Time, ESMF_TimeInterval
use ESMF, only : ESMF_TimeGet, ESMF_TimeIntervalGet
use ESMF, only : operator(==), operator(-)

type(ESMF_Time), intent(in) :: nextTime, startTime
character(len=*), intent(in) :: complog
integer, intent(out) :: rc
type(ESMF_Time), intent(in) :: myTime, startTime
character(len=*), intent(in) :: complog
logical, intent(in), optional :: prefixtime
type(ESMF_Time), intent(in), optional :: lastrestart
character(len=*), intent(in), optional :: lastoutput
integer, intent(out) :: rc

! local variables
type(ESMF_TimeInterval) :: elapsedTime
real(ESMF_KIND_R8) :: fhour
character(ESMF_MAXSTR) :: filename
character(ESMF_MAXSTR) :: nexttimestring
character(ESMF_MAXSTR) :: timestring
integer :: fh_logunit
integer :: yr,mon,day,hour,minute,sec ! time units
logical :: lprefix
character(ESMF_MAXSTR) :: lastout
character(len=*), parameter :: subname='(log_restart_fh)'
!-----------------------------------------------------------------------

call ESMF_LogWrite(trim(subname)//": called", ESMF_LOGMSG_INFO)
rc = ESMF_SUCCESS

elapsedTime = nextTime - startTime
lprefix = .false.
if (present(prefixtime)) then
lprefix = prefixtime
end if
lastout = ''
if (present(lastoutput)) then
lastout = trim(lastoutput)
end if

elapsedTime = myTime - startTime
call ESMF_TimeIntervalGet(elapsedTime, h_r8=fhour,rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return

call ESMF_TimeGet(nexttime, yy=yr, mm=mon, dd=day, h=hour, m=minute, s=sec, rc=rc)
call ESMF_TimeGet(myTime, yy=yr, mm=mon, dd=day, h=hour, m=minute, s=sec, rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return
write(nexttimestring,'(6i8)')yr,mon,day,hour,minute,sec
if (lprefix) then
write(filename,'(i4.4,2(i2.2),A,3(i2.2),A)') yr, mon, day,'.', hour, minute, sec,'.'//trim(complog)
else
write(filename,'(a,i4.4)')'log.'//trim(complog)//'.f',int(fhour)
end if
if (present(lastrestart)) then
call ESMF_TimeGet(lastrestart, yy=yr, mm=mon, dd=day, h=hour, m=minute, s=sec, rc=rc)
if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return
write(timestring,'(6i8)')yr,mon,day,hour,minute,sec
end if

write(filename,'(a,i4.4)')'log.'//trim(complog)//'.f',int(fhour)
open(newunit=fh_logunit,file=trim(filename))
write(fh_logunit,'(a)')'completed: '//trim(complog)
write(fh_logunit,'(a,f10.3)')'forecast hour:',fhour
write(fh_logunit,'(a)')'valid time: '//trim(nexttimestring)
if (len_trim(lastout) > 0) then
write(fh_logunit,'(a)')'last output: '//trim(lastout)
end if
if (present(lastrestart)) then
write(fh_logunit,'(a)')'last restart: '//trim(timestring)
end if
close(fh_logunit)

end subroutine log_restart_fh
Expand Down
14 changes: 12 additions & 2 deletions MOM6-interface/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
### MOM6 Fortran compiler flags
if(CMAKE_Fortran_COMPILER_ID MATCHES "GNU")
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g -fbacktrace")
list(APPEND CDEPS_SHARE_DEFS "CPRGNU")
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8 -fdefault-double-8")
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -Waliasing -fcray-pointer -fconvert=big-endian -ffree-line-length-none -fno-range-check -fbacktrace")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2")
Expand All @@ -16,6 +17,7 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$")
set(CMAKE_Fortran_FLAGS_RELEASE "-O2 -debug minimal -fp-model source")
endif()
set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -check all -check noarg_temp_created -check nopointer -fpe0 -ftrapuv -init=snan,arrays")
list(APPEND CDEPS_SHARE_DEFS "CPRINTEL")
set(CMAKE_Fortran_LINK_FLAGS "")
elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(IntelLLVM)$")
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -g -traceback")
Expand All @@ -28,6 +30,7 @@ elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(IntelLLVM)$")
endif()
set(CMAKE_Fortran_FLAGS_DEBUG "-O0 -check all -check noarg_temp_created -check nopointer -fpe0 -ftrapuv -init=snan,arrays")
set(CMAKE_Fortran_LINK_FLAGS "")
list(APPEND CDEPS_SHARE_DEFS "CPRINTEL")
else()
message(WARNING "Fortran compiler with ID ${CMAKE_Fortran_COMPILER_ID} will be used with CMake default options")
endif()
Expand All @@ -43,6 +46,9 @@ include("mom6_files.cmake")
add_library(mom6_obj OBJECT ${mom6_src_files})
set_target_properties(mom6_obj PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
target_include_directories(mom6_obj PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
target_compile_definitions(mom6_obj PRIVATE ${CDEPS_SHARE_DEFS} "DISABLE_FoX")
target_include_directories(mom6_obj PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/CDEPS-interface/mod>)
add_dependencies(mom6_obj cdeps)

if(REGIONAL_MOM6)
target_include_directories(mom6_obj PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MOM6/config_src/memory/dynamic_symmetric>
Expand All @@ -54,7 +60,8 @@ endif()
target_link_libraries(mom6_obj PRIVATE fms
ESMF::ESMF
stochastic_physics
NetCDF::NetCDF_Fortran)
NetCDF::NetCDF_Fortran
cdeps::cdeps)
# OpenMP is disabled in MOM6
#if(OpenMP_Fortran_FOUND)
# target_link_libraries(mom6_obj PRIVATE OpenMP::OpenMP_Fortran)
Expand All @@ -63,6 +70,8 @@ target_link_libraries(mom6_obj PRIVATE fms
add_library(mom6_nuopc_obj OBJECT ${mom6_nuopc_src_files})
set_target_properties(mom6_nuopc_obj PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/mod)
target_include_directories(mom6_nuopc_obj PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>)
target_include_directories(mom6_nuopc_obj PRIVATE $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/CDEPS-interface/mod>)
add_dependencies(mom6_nuopc_obj cdeps)
if(REGIONAL_MOM6)
target_include_directories(mom6_nuopc_obj PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MOM6/config_src/memory/dynamic_symmetric>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/MOM6/src/framework>)
Expand All @@ -89,7 +98,8 @@ target_include_directories(mom6 PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_
target_link_libraries(mom6 PUBLIC fms
stochastic_physics
ESMF::ESMF
NetCDF::NetCDF_Fortran)
NetCDF::NetCDF_Fortran
cdeps::cdeps)
# OpenMP is disabled in MOM6
#if(OpenMP_Fortran_FOUND)
# target_link_libraries(mom6 PRIVATE OpenMP::OpenMP_Fortran)
Expand Down
6 changes: 2 additions & 4 deletions MOM6-interface/mom6_files.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,8 @@ list(APPEND mom6_nuopc_src_files
MOM6/config_src/drivers/nuopc_cap/mom_cap_time.F90
MOM6/config_src/drivers/nuopc_cap/mom_ocean_model_nuopc.F90
MOM6/config_src/drivers/nuopc_cap/mom_surface_forcing_nuopc.F90
MOM6/config_src/drivers/nuopc_cap/mom_inline_mod.F90
MOM6/config_src/drivers/nuopc_cap/mom_cap_outputlog.F90
MOM6/config_src/drivers/unit_tests/test_MOM_file_parser.F90
MOM6/config_src/drivers/unit_tests/test_MOM_mixedlayer_restrat.F90
MOM6/config_src/drivers/unit_tests/test_MOM_string_functions.F90
Expand All @@ -347,10 +349,6 @@ list(APPEND mom6_nuopc_src_files
MOM6/config_src/drivers/timing_tests/time_reproducing_sum.F90
)

list(APPEND mom6_nuopc_src_files
${PROJECT_SOURCE_DIR}/CDEPS-interface/ufs/cdeps_share/shr_is_restart_fh_mod.F90
)

list(APPEND mom6_solo_src_files
MOM6/config_src/drivers/solo_driver/MESO_surface_forcing.F90
MOM6/config_src/drivers/solo_driver/MOM_driver.F90
Expand Down
2 changes: 1 addition & 1 deletion tests/default_vars.sh
Original file line number Diff line number Diff line change
Expand Up @@ -1647,7 +1647,7 @@ export_mom6() {
export DT_THERM_MOM6=3600
export MOM6_INPUT=MOM_input_100.IN
export MOM6_OUTPUT_DIR=./MOM6_OUTPUT
export MOM6_OUTPUT_FH=6
export MOM6_HISTFREQ_N=6
export MOM6_RESTART_DIR=./RESTART/
export MOM6_RESTART_SETTING=n
export MOM6_RIVER_RUNOFF=False
Expand Down
Loading
Loading