From fb19a4478ed0682df7aa3b69e26b764212b6068c Mon Sep 17 00:00:00 2001 From: Nick Szapiro Date: Tue, 6 Aug 2024 12:58:14 -0500 Subject: [PATCH 1/4] For gfs and cfsr datm datamodes, use gefs --- datm/CMakeLists.txt | 2 - datm/atm_comp_nuopc.F90 | 44 ------ datm/datm_datamode_cfsr_mod.F90 | 256 -------------------------------- datm/datm_datamode_gfs_mod.F90 | 255 ------------------------------- 4 files changed, 557 deletions(-) delete mode 100644 datm/datm_datamode_cfsr_mod.F90 delete mode 100644 datm/datm_datamode_gfs_mod.F90 diff --git a/datm/CMakeLists.txt b/datm/CMakeLists.txt index 4899e062..90cc81fa 100644 --- a/datm/CMakeLists.txt +++ b/datm/CMakeLists.txt @@ -5,8 +5,6 @@ set(SRCFILES atm_comp_nuopc.F90 datm_datamode_core2_mod.F90 datm_datamode_jra_mod.F90 datm_datamode_gefs_mod.F90 - datm_datamode_cfsr_mod.F90 - datm_datamode_gfs_mod.F90 datm_datamode_gfs_hafs_mod.F90 datm_datamode_era5_mod.F90 datm_datamode_simple_mod.F90) diff --git a/datm/atm_comp_nuopc.F90 b/datm/atm_comp_nuopc.F90 index 7262e0fc..1670e570 100644 --- a/datm/atm_comp_nuopc.F90 +++ b/datm/atm_comp_nuopc.F90 @@ -76,18 +76,6 @@ module cdeps_datm_comp use datm_datamode_gefs_mod , only : datm_datamode_gefs_restart_write use datm_datamode_gefs_mod , only : datm_datamode_gefs_restart_read - use datm_datamode_cfsr_mod , only : datm_datamode_cfsr_advertise - use datm_datamode_cfsr_mod , only : datm_datamode_cfsr_init_pointers - use datm_datamode_cfsr_mod , only : datm_datamode_cfsr_advance - use datm_datamode_cfsr_mod , only : datm_datamode_cfsr_restart_write - use datm_datamode_cfsr_mod , only : datm_datamode_cfsr_restart_read - - use datm_datamode_gfs_mod , only : datm_datamode_gfs_advertise - use datm_datamode_gfs_mod , only : datm_datamode_gfs_init_pointers - use datm_datamode_gfs_mod , only : datm_datamode_gfs_advance - use datm_datamode_gfs_mod , only : datm_datamode_gfs_restart_write - use datm_datamode_gfs_mod , only : datm_datamode_gfs_restart_read - use datm_datamode_gfs_hafs_mod , only : datm_datamode_gfs_hafs_advertise use datm_datamode_gfs_hafs_mod , only : datm_datamode_gfs_hafs_init_pointers use datm_datamode_gfs_hafs_mod , only : datm_datamode_gfs_hafs_advance @@ -379,8 +367,6 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) trim(datamode) == 'CLMNCEP' .or. & trim(datamode) == 'CPLHIST' .or. & trim(datamode) == 'GEFS' .or. & - trim(datamode) == 'CFSR' .or. & - trim(datamode) == 'GFS' .or. & trim(datamode) == 'GFS_HAFS' .or. & trim(datamode) == 'ERA5' .or. & trim(datamode) == 'SIMPLE') then @@ -412,12 +398,6 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) case ('GEFS') call datm_datamode_gefs_advertise(exportState, fldsExport, flds_scalar_name, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - case ('CFSR') - call datm_datamode_cfsr_advertise(exportState, fldsExport, flds_scalar_name, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - case ('GFS') - call datm_datamode_gfs_advertise(exportState, fldsExport, flds_scalar_name, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return case ('GFS_HAFS') call datm_datamode_gfs_hafs_advertise(exportState, fldsExport, flds_scalar_name, rc) case ('SIMPLE') @@ -664,12 +644,6 @@ subroutine datm_comp_run(importState, exportState, target_ymd, target_tod, targe case('GEFS') call datm_datamode_gefs_init_pointers(exportState, sdat, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - case('CFSR') - call datm_datamode_cfsr_init_pointers(exportState, sdat, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - case('GFS') - call datm_datamode_gfs_init_pointers(exportState, sdat, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return case('GFS_HAFS') call datm_datamode_gfs_hafs_init_pointers(exportState, sdat, rc) case('SIMPLE') @@ -692,10 +666,6 @@ subroutine datm_comp_run(importState, exportState, target_ymd, target_tod, targe call datm_datamode_era5_restart_read(restfilm, inst_suffix, logunit, my_task, mpicom, sdat) case('GEFS') call datm_datamode_gefs_restart_read(restfilm, inst_suffix, logunit, my_task, mpicom, sdat) - case('CFSR') - call datm_datamode_cfsr_restart_read(restfilm, inst_suffix, logunit, my_task, mpicom, sdat) - case('GFS') - call datm_datamode_gfs_restart_read(restfilm, inst_suffix, logunit, my_task, mpicom, sdat) case('GFS_HAFS') call datm_datamode_gfs_hafs_restart_read(restfilm, inst_suffix, logunit, my_task, mpicom, sdat) case('SIMPLE') @@ -751,14 +721,6 @@ subroutine datm_comp_run(importState, exportState, target_ymd, target_tod, targe call datm_datamode_gefs_advance(exportstate, mainproc, logunit, mpicom, target_ymd, & target_tod, sdat%model_calendar, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - case('CFSR') - call datm_datamode_cfsr_advance(exportstate, mainproc, logunit, mpicom, target_ymd, & - target_tod, sdat%model_calendar, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - case('GFS') - call datm_datamode_gfs_advance(exportstate, mainproc, logunit, mpicom, target_ymd, & - target_tod, sdat%model_calendar, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return case('GFS_HAFS') call datm_datamode_gfs_hafs_advance(exportstate, mainproc, logunit, mpicom, target_ymd, & target_tod, sdat%model_calendar, rc) @@ -790,12 +752,6 @@ subroutine datm_comp_run(importState, exportState, target_ymd, target_tod, targe call datm_datamode_gefs_restart_write(case_name, inst_suffix, target_ymd, target_tod, & logunit, my_task, sdat) if (ChkErr(rc,__LINE__,u_FILE_u)) return - case('CFSR') - call datm_datamode_cfsr_restart_write(case_name, inst_suffix, target_ymd, target_tod, & - logunit, my_task, sdat) - case('GFS') - call datm_datamode_gfs_restart_write(case_name, inst_suffix, target_ymd, target_tod, & - logunit, my_task, sdat) case('GFS_HAFS') call datm_datamode_gfs_hafs_restart_write(case_name, inst_suffix, target_ymd, target_tod, & logunit, my_task, sdat) diff --git a/datm/datm_datamode_cfsr_mod.F90 b/datm/datm_datamode_cfsr_mod.F90 deleted file mode 100644 index 8ad8cd3d..00000000 --- a/datm/datm_datamode_cfsr_mod.F90 +++ /dev/null @@ -1,256 +0,0 @@ -module datm_datamode_cfsr_mod - - use ESMF , only : ESMF_State, ESMF_SUCCESS, ESMF_LogWrite, ESMF_LOGMSG_INFO - use NUOPC , only : NUOPC_Advertise - use shr_kind_mod , only : r8=>shr_kind_r8, i8=>shr_kind_i8, cl=>shr_kind_cl, cs=>shr_kind_cs - use shr_sys_mod , only : shr_sys_abort - use shr_precip_mod , only : shr_precip_partition_rain_snow_ramp - use shr_const_mod , only : shr_const_tkfrz, shr_const_rhofw, shr_const_rdair - use dshr_methods_mod , only : dshr_state_getfldptr, chkerr - use dshr_strdata_mod , only : shr_strdata_type, shr_strdata_get_stream_pointer - use dshr_mod , only : dshr_restart_read, dshr_restart_write - use dshr_strdata_mod , only : shr_strdata_type - use dshr_fldlist_mod , only : fldlist_type, dshr_fldlist_add - - implicit none - private ! except - - public :: datm_datamode_cfsr_advertise - public :: datm_datamode_cfsr_init_pointers - public :: datm_datamode_cfsr_advance - public :: datm_datamode_cfsr_restart_write - public :: datm_datamode_cfsr_restart_read - - ! export state data - real(r8), pointer :: Sa_z(:) => null() - real(r8), pointer :: Sa_u(:) => null() - real(r8), pointer :: Sa_v(:) => null() - real(r8), pointer :: Sa_tbot(:) => null() - real(r8), pointer :: Sa_shum(:) => null() - real(r8), pointer :: Sa_pbot(:) => null() - real(r8), pointer :: Sa_u10m(:) => null() - real(r8), pointer :: Sa_v10m(:) => null() - real(r8), pointer :: Sa_t2m(:) => null() - real(r8), pointer :: Sa_q2m(:) => null() - real(r8), pointer :: Sa_pslv(:) => null() - real(r8), pointer :: Faxa_lwdn(:) => null() - real(r8), pointer :: Faxa_rain(:) => null() - real(r8), pointer :: Faxa_snow(:) => null() - real(r8), pointer :: Faxa_swndr(:) => null() - real(r8), pointer :: Faxa_swndf(:) => null() - real(r8), pointer :: Faxa_swvdr(:) => null() - real(r8), pointer :: Faxa_swvdf(:) => null() - - ! stream data - real(r8), pointer :: strm_mask(:) => null() - - real(r8) :: tbotmax ! units detector - real(r8) :: maskmax ! units detector - - real(r8) , parameter :: tKFrz = SHR_CONST_TKFRZ - real(r8) , parameter :: rdair = SHR_CONST_RDAIR ! dry air gas constant ~ J/K/kg - real(r8) , parameter :: rhofw = SHR_CONST_RHOFW ! density of fresh water ~ kg/m^3 - - character(*), parameter :: nullstr = 'undefined' - character(*), parameter :: rpfile = 'rpointer.atm' - character(*), parameter :: u_FILE_u = & - __FILE__ - -!=============================================================================== -contains -!=============================================================================== - - subroutine datm_datamode_cfsr_advertise(exportState, fldsexport, & - flds_scalar_name, rc) - - ! input/output variables - type(esmf_State) , intent(inout) :: exportState - type(fldlist_type) , pointer :: fldsexport - character(len=*) , intent(in) :: flds_scalar_name - integer , intent(out) :: rc - - ! local variables - type(fldlist_type), pointer :: fldList - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - call dshr_fldList_add(fldsExport, trim(flds_scalar_name)) - call dshr_fldList_add(fldsExport, 'Sa_z' ) - call dshr_fldList_add(fldsExport, 'Sa_u' ) - call dshr_fldList_add(fldsExport, 'Sa_v' ) - call dshr_fldList_add(fldsExport, 'Sa_tbot' ) - call dshr_fldList_add(fldsExport, 'Sa_pbot' ) - call dshr_fldList_add(fldsExport, 'Sa_shum' ) - call dshr_fldList_add(fldsExport, 'Sa_u10m' ) - call dshr_fldList_add(fldsExport, 'Sa_v10m' ) - call dshr_fldList_add(fldsExport, 'Sa_t2m' ) - call dshr_fldList_add(fldsExport, 'Sa_q2m' ) - call dshr_fldList_add(fldsExport, 'Sa_pslv' ) - call dshr_fldList_add(fldsExport, 'Faxa_rain' ) - call dshr_fldList_add(fldsExport, 'Faxa_snow' ) - call dshr_fldList_add(fldsExport, 'Faxa_swndr' ) - call dshr_fldList_add(fldsExport, 'Faxa_swvdr' ) - call dshr_fldList_add(fldsExport, 'Faxa_swndf' ) - call dshr_fldList_add(fldsExport, 'Faxa_swvdf' ) - call dshr_fldList_add(fldsExport, 'Faxa_lwdn' ) - - fldlist => fldsExport ! the head of the linked list - do while (associated(fldlist)) - call NUOPC_Advertise(exportState, standardName=fldlist%stdname, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_LogWrite('(datm_comp_advertise): Fr_atm '//trim(fldList%stdname), ESMF_LOGMSG_INFO) - fldList => fldList%next - enddo - - end subroutine datm_datamode_cfsr_advertise - - !=============================================================================== - subroutine datm_datamode_cfsr_init_pointers(exportState, sdat, rc) - - ! input/output variables - type(ESMF_State) , intent(inout) :: exportState - type(shr_strdata_type) , intent(in) :: sdat - integer , intent(out) :: rc - - ! local variables - character(len=*), parameter :: subname='(datm_init_pointers): ' - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - ! initialize pointers for module level stream arrays - call shr_strdata_get_stream_pointer( sdat, 'Sa_mask' , strm_mask , rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - ! get export state pointers - call dshr_state_getfldptr(exportState, 'Sa_z' , fldptr1=Sa_z , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_u' , fldptr1=Sa_u , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_v' , fldptr1=Sa_v , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_tbot' , fldptr1=Sa_tbot , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_pbot' , fldptr1=Sa_pbot , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_shum' , fldptr1=Sa_shum , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_u10m' , fldptr1=Sa_u10m , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_v10m' , fldptr1=Sa_v10m , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_t2m' , fldptr1=Sa_t2m , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_q2m' , fldptr1=Sa_q2m , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_pslv' , fldptr1=Sa_pslv , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_rain' , fldptr1=Faxa_rain , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_snow' , fldptr1=Faxa_snow, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_swvdr' , fldptr1=Faxa_swvdr , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_swvdf' , fldptr1=Faxa_swvdf , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_swndr' , fldptr1=Faxa_swndr , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_swndf' , fldptr1=Faxa_swndf , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_lwdn' , fldptr1=Faxa_lwdn , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - end subroutine datm_datamode_cfsr_init_pointers - - !=============================================================================== - subroutine datm_datamode_cfsr_advance(exportstate, mainproc, logunit, mpicom, target_ymd, target_tod, model_calendar, rc) - use ESMF, only: ESMF_VMGetCurrent, ESMF_VMAllReduce, ESMF_REDUCE_MAX, ESMF_VM - - ! input/output variables - type(ESMF_State) , intent(inout) :: exportState - logical , intent(in) :: mainproc - integer , intent(in) :: logunit - integer , intent(in) :: mpicom - integer , intent(in) :: target_ymd - integer , intent(in) :: target_tod - character(len=*) , intent(in) :: model_calendar - integer , intent(out) :: rc - - ! local variables - logical :: first_time = .true. - integer :: n ! indices - integer :: lsize ! size of attr vect - real(r8) :: rtmp(2) - type(ESMF_VM) :: vm - character(len=*), parameter :: subname='(datm_datamode_cfsr_advance): ' - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - lsize = size(strm_mask) - - if (first_time) then - call ESMF_VMGetCurrent(vm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! determine tbotmax (see below for use) - rtmp(1) = maxval(Sa_tbot(:)) - call ESMF_VMAllReduce(vm, rtmp, rtmp(2:), 1, ESMF_REDUCE_MAX, rc=rc) - tbotmax = rtmp(2) - if (mainproc) write(logunit,*) trim(subname),' tbotmax = ',tbotmax - - ! determine maskmax (see below for use) - rtmp(1) = maxval(strm_mask(:)) - call ESMF_VMAllReduce(vm, rtmp, rtmp(2:), 1, ESMF_REDUCE_MAX, rc=rc) - maskmax = rtmp(2) - if (mainproc) write(logunit,*) trim(subname),' maskmax = ',maskmax - - ! reset first_time - first_time = .false. - end if - - do n = 1, lsize - !--- temperature --- - if (tbotmax < 50.0_r8) Sa_tbot(n) = Sa_tbot(n) + tkFrz - ! Limit very cold forcing to 180K - Sa_tbot(n) = max(180._r8, Sa_tbot(n)) - end do - - end subroutine datm_datamode_cfsr_advance - - !=============================================================================== - subroutine datm_datamode_cfsr_restart_write(case_name, inst_suffix, ymd, tod, & - logunit, my_task, sdat) - - ! input/output variables - character(len=*) , intent(in) :: case_name - character(len=*) , intent(in) :: inst_suffix - integer , intent(in) :: ymd ! model date - integer , intent(in) :: tod ! model sec into model date - integer , intent(in) :: logunit - integer , intent(in) :: my_task - type(shr_strdata_type) , intent(inout) :: sdat - !------------------------------------------------------------------------------- - - call dshr_restart_write(rpfile, case_name, 'datm', inst_suffix, ymd, tod, & - logunit, my_task, sdat) - - end subroutine datm_datamode_cfsr_restart_write - - !=============================================================================== - subroutine datm_datamode_cfsr_restart_read(rest_filem, inst_suffix, logunit, my_task, mpicom, sdat) - - ! input/output arguments - character(len=*) , intent(inout) :: rest_filem - character(len=*) , intent(in) :: inst_suffix - integer , intent(in) :: logunit - integer , intent(in) :: my_task - integer , intent(in) :: mpicom - type(shr_strdata_type) , intent(inout) :: sdat - !------------------------------------------------------------------------------- - - call dshr_restart_read(rest_filem, rpfile, inst_suffix, nullstr, logunit, my_task, mpicom, sdat) - - end subroutine datm_datamode_cfsr_restart_read - -end module datm_datamode_cfsr_mod diff --git a/datm/datm_datamode_gfs_mod.F90 b/datm/datm_datamode_gfs_mod.F90 deleted file mode 100644 index cc4b05fa..00000000 --- a/datm/datm_datamode_gfs_mod.F90 +++ /dev/null @@ -1,255 +0,0 @@ -module datm_datamode_gfs_mod - - use ESMF , only : ESMF_State, ESMF_SUCCESS, ESMF_LogWrite, ESMF_LOGMSG_INFO - use NUOPC , only : NUOPC_Advertise - use shr_kind_mod , only : r8=>shr_kind_r8, i8=>shr_kind_i8, cl=>shr_kind_cl, cs=>shr_kind_cs - use shr_sys_mod , only : shr_sys_abort - use shr_precip_mod , only : shr_precip_partition_rain_snow_ramp - use shr_const_mod , only : shr_const_tkfrz, shr_const_rhofw, shr_const_rdair - use dshr_methods_mod , only : dshr_state_getfldptr, chkerr - use dshr_strdata_mod , only : shr_strdata_type, shr_strdata_get_stream_pointer - use dshr_mod , only : dshr_restart_read, dshr_restart_write - use dshr_strdata_mod , only : shr_strdata_type - use dshr_fldlist_mod , only : fldlist_type, dshr_fldlist_add - - implicit none - private ! except - - public :: datm_datamode_gfs_advertise - public :: datm_datamode_gfs_init_pointers - public :: datm_datamode_gfs_advance - public :: datm_datamode_gfs_restart_write - public :: datm_datamode_gfs_restart_read - - ! export state data - real(r8), pointer :: Sa_z(:) => null() - real(r8), pointer :: Sa_u(:) => null() - real(r8), pointer :: Sa_v(:) => null() - real(r8), pointer :: Sa_tbot(:) => null() - real(r8), pointer :: Sa_shum(:) => null() - real(r8), pointer :: Sa_pbot(:) => null() - real(r8), pointer :: Sa_u10m(:) => null() - real(r8), pointer :: Sa_v10m(:) => null() - real(r8), pointer :: Sa_t2m(:) => null() - real(r8), pointer :: Sa_q2m(:) => null() - real(r8), pointer :: Sa_pslv(:) => null() - real(r8), pointer :: Faxa_lwdn(:) => null() - real(r8), pointer :: Faxa_rain(:) => null() - real(r8), pointer :: Faxa_snow(:) => null() - real(r8), pointer :: Faxa_swndr(:) => null() - real(r8), pointer :: Faxa_swndf(:) => null() - real(r8), pointer :: Faxa_swvdr(:) => null() - real(r8), pointer :: Faxa_swvdf(:) => null() - - ! stream data - real(r8), pointer :: strm_mask(:) => null() - - real(r8) :: tbotmax ! units detector - real(r8) :: maskmax ! units detector - - real(r8) , parameter :: tKFrz = SHR_CONST_TKFRZ - real(r8) , parameter :: rdair = SHR_CONST_RDAIR ! dry air gas constant ~ J/K/kg - real(r8) , parameter :: rhofw = SHR_CONST_RHOFW ! density of fresh water ~ kg/m^3 - - character(*), parameter :: nullstr = 'undefined' - character(*), parameter :: rpfile = 'rpointer.atm' - character(*), parameter :: u_FILE_u = & - __FILE__ - -!=============================================================================== -contains -!=============================================================================== - - subroutine datm_datamode_gfs_advertise(exportState, fldsexport, & - flds_scalar_name, rc) - - ! input/output variables - type(esmf_State) , intent(inout) :: exportState - type(fldlist_type) , pointer :: fldsexport - character(len=*) , intent(in) :: flds_scalar_name - integer , intent(out) :: rc - - ! local variables - type(fldlist_type), pointer :: fldList - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - call dshr_fldList_add(fldsExport, trim(flds_scalar_name)) - call dshr_fldList_add(fldsExport, 'Sa_z' ) - call dshr_fldList_add(fldsExport, 'Sa_u' ) - call dshr_fldList_add(fldsExport, 'Sa_v' ) - call dshr_fldList_add(fldsExport, 'Sa_tbot' ) - call dshr_fldList_add(fldsExport, 'Sa_pbot' ) - call dshr_fldList_add(fldsExport, 'Sa_shum' ) - call dshr_fldList_add(fldsExport, 'Sa_u10m' ) - call dshr_fldList_add(fldsExport, 'Sa_v10m' ) - call dshr_fldList_add(fldsExport, 'Sa_t2m' ) - call dshr_fldList_add(fldsExport, 'Sa_q2m' ) - call dshr_fldList_add(fldsExport, 'Sa_pslv' ) - call dshr_fldList_add(fldsExport, 'Faxa_rain' ) - call dshr_fldList_add(fldsExport, 'Faxa_snow' ) - call dshr_fldList_add(fldsExport, 'Faxa_swndr' ) - call dshr_fldList_add(fldsExport, 'Faxa_swvdr' ) - call dshr_fldList_add(fldsExport, 'Faxa_swndf' ) - call dshr_fldList_add(fldsExport, 'Faxa_swvdf' ) - call dshr_fldList_add(fldsExport, 'Faxa_lwdn' ) - - fldlist => fldsExport ! the head of the linked list - do while (associated(fldlist)) - call NUOPC_Advertise(exportState, standardName=fldlist%stdname, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_LogWrite('(datm_comp_advertise): Fr_atm '//trim(fldList%stdname), ESMF_LOGMSG_INFO) - fldList => fldList%next - enddo - - end subroutine datm_datamode_gfs_advertise - - !=============================================================================== - subroutine datm_datamode_gfs_init_pointers(exportState, sdat, rc) - - ! input/output variables - type(ESMF_State) , intent(inout) :: exportState - type(shr_strdata_type) , intent(in) :: sdat - integer , intent(out) :: rc - - ! local variables - character(len=*), parameter :: subname='(datm_init_pointers): ' - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - ! initialize pointers for module level stream arrays - call shr_strdata_get_stream_pointer( sdat, 'Sa_mask' , strm_mask , rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - ! get export state pointers - call dshr_state_getfldptr(exportState, 'Sa_z' , fldptr1=Sa_z , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_u' , fldptr1=Sa_u , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_v' , fldptr1=Sa_v , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_tbot' , fldptr1=Sa_tbot , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_pbot' , fldptr1=Sa_pbot , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_shum' , fldptr1=Sa_shum , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_u10m' , fldptr1=Sa_u10m , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_v10m' , fldptr1=Sa_v10m , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_t2m' , fldptr1=Sa_t2m , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_q2m' , fldptr1=Sa_q2m , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sa_pslv' , fldptr1=Sa_pslv , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_rain' , fldptr1=Faxa_rain , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_snow' , fldptr1=Faxa_snow, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_swvdr' , fldptr1=Faxa_swvdr , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_swvdf' , fldptr1=Faxa_swvdf , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_swndr' , fldptr1=Faxa_swndr , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_swndf' , fldptr1=Faxa_swndf , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxa_lwdn' , fldptr1=Faxa_lwdn , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - end subroutine datm_datamode_gfs_init_pointers - - !=============================================================================== - subroutine datm_datamode_gfs_advance(exportstate, mainproc, logunit, mpicom, target_ymd, target_tod, model_calendar, rc) - use ESMF, only: ESMF_VMGetCurrent, ESMF_VMAllReduce, ESMF_REDUCE_MAX, ESMF_VM - ! input/output variables - type(ESMF_State) , intent(inout) :: exportState - logical , intent(in) :: mainproc - integer , intent(in) :: logunit - integer , intent(in) :: mpicom - integer , intent(in) :: target_ymd - integer , intent(in) :: target_tod - character(len=*) , intent(in) :: model_calendar - integer , intent(out) :: rc - - ! local variables - logical :: first_time = .true. - integer :: n ! indices - integer :: lsize ! size of attr vect - real(r8) :: rtmp(2) - type(ESMF_VM) :: vm - character(len=*), parameter :: subname='(datm_datamode_gfs_advance): ' - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - lsize = size(strm_mask) - - if (first_time) then - call ESMF_VMGetCurrent(vm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! determine tbotmax (see below for use) - rtmp(1) = maxval(Sa_tbot(:)) - call ESMF_VMAllReduce(vm, rtmp, rtmp(2:), 1, ESMF_REDUCE_MAX, rc=rc) - tbotmax = rtmp(2) - if (mainproc) write(logunit,*) trim(subname),' tbotmax = ',tbotmax - - ! determine maskmax (see below for use) - rtmp(1) = maxval(strm_mask(:)) - call ESMF_VMAllReduce(vm, rtmp, rtmp(2:), 1, ESMF_REDUCE_MAX, rc=rc) - maskmax = rtmp(2) - if (mainproc) write(logunit,*) trim(subname),' maskmax = ',maskmax - - ! reset first_time - first_time = .false. - end if - - do n = 1, lsize - !--- temperature --- - if (tbotmax < 50.0_r8) Sa_tbot(n) = Sa_tbot(n) + tkFrz - ! Limit very cold forcing to 180K - Sa_tbot(n) = max(180._r8, Sa_tbot(n)) - end do - - end subroutine datm_datamode_gfs_advance - - !=============================================================================== - subroutine datm_datamode_gfs_restart_write(case_name, inst_suffix, ymd, tod, & - logunit, my_task, sdat) - - ! input/output variables - character(len=*) , intent(in) :: case_name - character(len=*) , intent(in) :: inst_suffix - integer , intent(in) :: ymd ! model date - integer , intent(in) :: tod ! model sec into model date - integer , intent(in) :: logunit - integer , intent(in) :: my_task - type(shr_strdata_type) , intent(inout) :: sdat - !------------------------------------------------------------------------------- - - call dshr_restart_write(rpfile, case_name, 'datm', inst_suffix, ymd, tod, & - logunit, my_task, sdat) - - end subroutine datm_datamode_gfs_restart_write - - !=============================================================================== - subroutine datm_datamode_gfs_restart_read(rest_filem, inst_suffix, logunit, my_task, mpicom, sdat) - - ! input/output arguments - character(len=*) , intent(inout) :: rest_filem - character(len=*) , intent(in) :: inst_suffix - integer , intent(in) :: logunit - integer , intent(in) :: my_task - integer , intent(in) :: mpicom - type(shr_strdata_type) , intent(inout) :: sdat - !------------------------------------------------------------------------------- - - call dshr_restart_read(rest_filem, rpfile, inst_suffix, nullstr, logunit, my_task, mpicom, sdat) - - end subroutine datm_datamode_gfs_restart_read - -end module datm_datamode_gfs_mod From 50579c230646872bf1d7e7b1a9bc3ec277257821 Mon Sep 17 00:00:00 2001 From: Nicholas Szapiro <149816583+NickSzapiro-NOAA@users.noreply.github.com> Date: Sun, 11 Aug 2024 12:34:06 -0400 Subject: [PATCH 2/4] Delete datm/datm_datamode_gfs_hafs_mod.F90 --- datm/datm_datamode_gfs_hafs_mod.F90 | 230 ---------------------------- 1 file changed, 230 deletions(-) delete mode 100644 datm/datm_datamode_gfs_hafs_mod.F90 diff --git a/datm/datm_datamode_gfs_hafs_mod.F90 b/datm/datm_datamode_gfs_hafs_mod.F90 deleted file mode 100644 index 9e680507..00000000 --- a/datm/datm_datamode_gfs_hafs_mod.F90 +++ /dev/null @@ -1,230 +0,0 @@ -module datm_datamode_gfs_hafs_mod - - use ESMF , only : ESMF_State, ESMF_SUCCESS, ESMF_LogWrite, ESMF_LOGMSG_INFO - use NUOPC , only : NUOPC_Advertise - use shr_kind_mod , only : r8=>shr_kind_r8, i8=>shr_kind_i8, cl=>shr_kind_cl, cs=>shr_kind_cs - use shr_sys_mod , only : shr_sys_abort - use shr_precip_mod , only : shr_precip_partition_rain_snow_ramp - use shr_const_mod , only : shr_const_tkfrz, shr_const_rhofw, shr_const_rdair - use dshr_methods_mod , only : dshr_state_getfldptr, chkerr - use dshr_strdata_mod , only : shr_strdata_type, shr_strdata_get_stream_pointer - use dshr_mod , only : dshr_restart_read, dshr_restart_write - use dshr_strdata_mod , only : shr_strdata_type - use dshr_fldlist_mod , only : fldlist_type, dshr_fldlist_add - - implicit none - private ! except - - public :: datm_datamode_gfs_hafs_advertise - public :: datm_datamode_gfs_hafs_init_pointers - public :: datm_datamode_gfs_hafs_advance - public :: datm_datamode_gfs_hafs_restart_write - public :: datm_datamode_gfs_hafs_restart_read - - ! export state data - real(r8), pointer :: Sd_pslv(:) => null() - real(r8), pointer :: Sd_u10m(:) => null() - real(r8), pointer :: Sd_v10m(:) => null() - real(r8), pointer :: Faxd_swvdr(:) => null() - real(r8), pointer :: Faxd_swvdf(:) => null() - real(r8), pointer :: Faxd_swndr(:) => null() - real(r8), pointer :: Faxd_swndf(:) => null() - real(r8), pointer :: Faxd_lwnet(:) => null() - real(r8), pointer :: Faxd_taux(:) => null() - real(r8), pointer :: Faxd_tauy(:) => null() - real(r8), pointer :: Faxd_sen(:) => null() - real(r8), pointer :: Faxd_lat(:) => null() - real(r8), pointer :: Faxd_rain(:) => null() - - ! stream data - real(r8), pointer :: strm_rain(:) => null() - - real(r8) :: rain_min ! rain value detector - - real(r8) , parameter :: tKFrz = SHR_CONST_TKFRZ - real(r8) , parameter :: rdair = SHR_CONST_RDAIR ! dry air gas constant ~ J/K/kg - real(r8) , parameter :: rhofw = SHR_CONST_RHOFW ! density of fresh water ~ kg/m^3 - - character(*), parameter :: nullstr = 'undefined' - character(*), parameter :: rpfile = 'rpointer.atm' - character(*), parameter :: u_FILE_u = & - __FILE__ - -!=============================================================================== -contains -!=============================================================================== - - subroutine datm_datamode_gfs_hafs_advertise(exportState, fldsexport, & - flds_scalar_name, rc) - - ! input/output variables - type(esmf_State) , intent(inout) :: exportState - type(fldlist_type) , pointer :: fldsexport - character(len=*) , intent(in) :: flds_scalar_name - integer , intent(out) :: rc - - ! local variables - type(fldlist_type), pointer :: fldList - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - call dshr_fldList_add(fldsExport, trim(flds_scalar_name)) - call dshr_fldList_add(fldsExport, 'Sd_pslv' ) - call dshr_fldList_add(fldsExport, 'Sd_u10m' ) - call dshr_fldList_add(fldsExport, 'Sd_v10m' ) - call dshr_fldList_add(fldsExport, 'Faxd_swvdr' ) - call dshr_fldList_add(fldsExport, 'Faxd_swvdf' ) - call dshr_fldList_add(fldsExport, 'Faxd_swndr' ) - call dshr_fldList_add(fldsExport, 'Faxd_swndf' ) - call dshr_fldList_add(fldsExport, 'Faxd_lwnet' ) - call dshr_fldList_add(fldsExport, 'Faxd_taux' ) - call dshr_fldList_add(fldsExport, 'Faxd_tauy' ) - call dshr_fldList_add(fldsExport, 'Faxd_sen' ) - call dshr_fldList_add(fldsExport, 'Faxd_lat' ) - call dshr_fldList_add(fldsExport, 'Faxd_rain' ) - - fldlist => fldsExport ! the head of the linked list - do while (associated(fldlist)) - call NUOPC_Advertise(exportState, standardName=fldlist%stdname, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call ESMF_LogWrite('(datm_comp_advertise): Fr_atm '//trim(fldList%stdname), ESMF_LOGMSG_INFO) - fldList => fldList%next - enddo - - end subroutine datm_datamode_gfs_hafs_advertise - - !=============================================================================== - subroutine datm_datamode_gfs_hafs_init_pointers(exportState, sdat, rc) - - ! input/output variables - type(ESMF_State) , intent(inout) :: exportState - type(shr_strdata_type) , intent(in) :: sdat - integer , intent(out) :: rc - - ! local variables - character(len=*), parameter :: subname='(datm_init_pointers): ' - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - ! initialize pointers for module level stream arrays - !call shr_strdata_get_stream_pointer( sdat, 'Sa_mask' , strm_mask , rc) - call shr_strdata_get_stream_pointer( sdat, 'Faxd_rain' , strm_rain , rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - ! get export state pointers - call dshr_state_getfldptr(exportState, 'Sd_pslv' , fldptr1=Sd_pslv , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sd_u10m' , fldptr1=Sd_u10m , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Sd_v10m' , fldptr1=Sd_v10m , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxd_swvdr' , fldptr1=Faxd_swvdr , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxd_swvdf' , fldptr1=Faxd_swvdf , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxd_swndr' , fldptr1=Faxd_swndr , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxd_swndf' , fldptr1=Faxd_swndf , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxd_lwnet' , fldptr1=Faxd_lwnet, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxd_taux' , fldptr1=Faxd_taux , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxd_tauy' , fldptr1=Faxd_tauy , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxd_sen' , fldptr1=Faxd_sen , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxd_lat' , fldptr1=Faxd_lat , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - call dshr_state_getfldptr(exportState, 'Faxd_rain' , fldptr1=Faxd_rain , rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - end subroutine datm_datamode_gfs_hafs_init_pointers - - !=============================================================================== - subroutine datm_datamode_gfs_hafs_advance(exportstate, mainproc, logunit, mpicom, target_ymd, target_tod, model_calendar, rc) - use ESMF, only: ESMF_VMGetCurrent, ESMF_VMAllReduce, ESMF_REDUCE_MIN, ESMF_VM - - ! input/output variables - type(ESMF_State) , intent(inout) :: exportState - logical , intent(in) :: mainproc - integer , intent(in) :: logunit - integer , intent(in) :: mpicom - integer , intent(in) :: target_ymd - integer , intent(in) :: target_tod - character(len=*) , intent(in) :: model_calendar - integer , intent(out) :: rc - - ! local variables - logical :: first_time = .true. - integer :: n ! indices - integer :: lsize ! size of attr vect - real(r8) :: rtmp(2) - type(ESMF_VM) :: vm - character(len=*), parameter :: subname='(datm_datamode_gfs_hafs_advance): ' - !------------------------------------------------------------------------------- - - rc = ESMF_SUCCESS - - lsize = size(strm_rain) - - if (first_time) then - call ESMF_VMGetCurrent(vm, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! determine minimum Faxd_rain (see below for use) - rtmp(1) = minval(strm_rain(:)) - call ESMF_VMAllReduce(vm, rtmp, rtmp(2:), 1, ESMF_REDUCE_MIN, rc=rc) - rain_min = rtmp(2) - if (mainproc) write(logunit,*) trim(subname),' rain_min = ',rain_min - - ! reset first_time - first_time = .false. - end if - - do n = 1, lsize - !--- Faxd_rain is positive --- - if (associated(Faxd_rain)) then - if (rain_min < 0.0_r8) Faxd_rain(n) = max(0.0_r8,Faxd_rain(n)) - end if - end do - - end subroutine datm_datamode_gfs_hafs_advance - - !=============================================================================== - subroutine datm_datamode_gfs_hafs_restart_write(case_name, inst_suffix, ymd, tod, & - logunit, my_task, sdat) - - ! input/output variables - character(len=*) , intent(in) :: case_name - character(len=*) , intent(in) :: inst_suffix - integer , intent(in) :: ymd ! model date - integer , intent(in) :: tod ! model sec into model date - integer , intent(in) :: logunit - integer , intent(in) :: my_task - type(shr_strdata_type) , intent(inout) :: sdat - !------------------------------------------------------------------------------- - - call dshr_restart_write(rpfile, case_name, 'datm', inst_suffix, ymd, tod, & - logunit, my_task, sdat) - - end subroutine datm_datamode_gfs_hafs_restart_write - - !=============================================================================== - subroutine datm_datamode_gfs_hafs_restart_read(rest_filem, inst_suffix, logunit, my_task, mpicom, sdat) - - ! input/output arguments - character(len=*) , intent(inout) :: rest_filem - character(len=*) , intent(in) :: inst_suffix - integer , intent(in) :: logunit - integer , intent(in) :: my_task - integer , intent(in) :: mpicom - type(shr_strdata_type) , intent(inout) :: sdat - !------------------------------------------------------------------------------- - - call dshr_restart_read(rest_filem, rpfile, inst_suffix, nullstr, logunit, my_task, mpicom, sdat) - - end subroutine datm_datamode_gfs_hafs_restart_read - -end module datm_datamode_gfs_hafs_mod From 7a9755b5dd4893d8c3f1591d42268a1cefb867a5 Mon Sep 17 00:00:00 2001 From: Nicholas Szapiro <149816583+NickSzapiro-NOAA@users.noreply.github.com> Date: Sun, 11 Aug 2024 12:35:59 -0400 Subject: [PATCH 3/4] Remove gfs_hafs datamode from atm_comp_nuopc.F90 --- datm/atm_comp_nuopc.F90 | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/datm/atm_comp_nuopc.F90 b/datm/atm_comp_nuopc.F90 index 1670e570..4fae638c 100644 --- a/datm/atm_comp_nuopc.F90 +++ b/datm/atm_comp_nuopc.F90 @@ -75,12 +75,6 @@ module cdeps_datm_comp use datm_datamode_gefs_mod , only : datm_datamode_gefs_advance use datm_datamode_gefs_mod , only : datm_datamode_gefs_restart_write use datm_datamode_gefs_mod , only : datm_datamode_gefs_restart_read - - use datm_datamode_gfs_hafs_mod , only : datm_datamode_gfs_hafs_advertise - use datm_datamode_gfs_hafs_mod , only : datm_datamode_gfs_hafs_init_pointers - use datm_datamode_gfs_hafs_mod , only : datm_datamode_gfs_hafs_advance - use datm_datamode_gfs_hafs_mod , only : datm_datamode_gfs_hafs_restart_write - use datm_datamode_gfs_hafs_mod , only : datm_datamode_gfs_hafs_restart_read use datm_datamode_simple_mod , only : datm_datamode_simple_advertise use datm_datamode_simple_mod , only : datm_datamode_simple_init_pointers @@ -367,7 +361,6 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) trim(datamode) == 'CLMNCEP' .or. & trim(datamode) == 'CPLHIST' .or. & trim(datamode) == 'GEFS' .or. & - trim(datamode) == 'GFS_HAFS' .or. & trim(datamode) == 'ERA5' .or. & trim(datamode) == 'SIMPLE') then else @@ -398,8 +391,6 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc) case ('GEFS') call datm_datamode_gefs_advertise(exportState, fldsExport, flds_scalar_name, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - case ('GFS_HAFS') - call datm_datamode_gfs_hafs_advertise(exportState, fldsExport, flds_scalar_name, rc) case ('SIMPLE') call datm_datamode_simple_advertise(exportState, fldsExport, flds_scalar_name, & nlfilename, my_task, vm, rc) @@ -644,8 +635,6 @@ subroutine datm_comp_run(importState, exportState, target_ymd, target_tod, targe case('GEFS') call datm_datamode_gefs_init_pointers(exportState, sdat, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - case('GFS_HAFS') - call datm_datamode_gfs_hafs_init_pointers(exportState, sdat, rc) case('SIMPLE') call datm_datamode_simple_init_pointers(exportState, sdat, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return @@ -666,8 +655,6 @@ subroutine datm_comp_run(importState, exportState, target_ymd, target_tod, targe call datm_datamode_era5_restart_read(restfilm, inst_suffix, logunit, my_task, mpicom, sdat) case('GEFS') call datm_datamode_gefs_restart_read(restfilm, inst_suffix, logunit, my_task, mpicom, sdat) - case('GFS_HAFS') - call datm_datamode_gfs_hafs_restart_read(restfilm, inst_suffix, logunit, my_task, mpicom, sdat) case('SIMPLE') call datm_datamode_simple_restart_read(restfilm, inst_suffix, logunit, my_task, mpicom, sdat) end select @@ -721,9 +708,6 @@ subroutine datm_comp_run(importState, exportState, target_ymd, target_tod, targe call datm_datamode_gefs_advance(exportstate, mainproc, logunit, mpicom, target_ymd, & target_tod, sdat%model_calendar, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - case('GFS_HAFS') - call datm_datamode_gfs_hafs_advance(exportstate, mainproc, logunit, mpicom, target_ymd, & - target_tod, sdat%model_calendar, rc) case('SIMPLE') call datm_datamode_simple_advance(target_ymd, target_tod, target_mon, & sdat%model_calendar, rc) @@ -752,10 +736,6 @@ subroutine datm_comp_run(importState, exportState, target_ymd, target_tod, targe call datm_datamode_gefs_restart_write(case_name, inst_suffix, target_ymd, target_tod, & logunit, my_task, sdat) if (ChkErr(rc,__LINE__,u_FILE_u)) return - case('GFS_HAFS') - call datm_datamode_gfs_hafs_restart_write(case_name, inst_suffix, target_ymd, target_tod, & - logunit, my_task, sdat) - if (ChkErr(rc,__LINE__,u_FILE_u)) return case('SIMPLE') call datm_datamode_simple_restart_write(case_name, inst_suffix, target_ymd, target_tod, & logunit, my_task, sdat) From 12d0556920c11b388012c7b01e4e3c9ee7ebd93a Mon Sep 17 00:00:00 2001 From: Nicholas Szapiro <149816583+NickSzapiro-NOAA@users.noreply.github.com> Date: Sun, 11 Aug 2024 12:38:10 -0400 Subject: [PATCH 4/4] Remove gfs_hafs from CMakeLists.txt --- datm/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/datm/CMakeLists.txt b/datm/CMakeLists.txt index 90cc81fa..b22ee6be 100644 --- a/datm/CMakeLists.txt +++ b/datm/CMakeLists.txt @@ -5,7 +5,6 @@ set(SRCFILES atm_comp_nuopc.F90 datm_datamode_core2_mod.F90 datm_datamode_jra_mod.F90 datm_datamode_gefs_mod.F90 - datm_datamode_gfs_hafs_mod.F90 datm_datamode_era5_mod.F90 datm_datamode_simple_mod.F90)