From 585dcad1fb81dacc49b28a3685ea1aa782b6500f Mon Sep 17 00:00:00 2001 From: "Bin.Li" Date: Thu, 23 Jan 2025 16:17:38 +0000 Subject: [PATCH] Update mom_cap.F90 and mom_cap_methods.F90 to use case_name. --- config_src/drivers/nuopc_cap/mom_cap.F90 | 6 +++--- config_src/drivers/nuopc_cap/mom_cap_methods.F90 | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/config_src/drivers/nuopc_cap/mom_cap.F90 b/config_src/drivers/nuopc_cap/mom_cap.F90 index c761fb3414..447fc66925 100644 --- a/config_src/drivers/nuopc_cap/mom_cap.F90 +++ b/config_src/drivers/nuopc_cap/mom_cap.F90 @@ -1758,8 +1758,10 @@ subroutine ModelAdvance(gcomp, rc) !--------------- ! Import data !--------------- + call NUOPC_CompAttributeGet(gcomp, name='case_name', value=casename, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return - call mom_import(ocean_public, ocean_grid, importState, ice_ocean_boundary, rc=rc) + call mom_import(ocean_public, ocean_grid, importState, ice_ocean_boundary, casename, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return !--------------- @@ -1831,8 +1833,6 @@ subroutine ModelAdvance(gcomp, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return if (cesm_coupled) then - call NUOPC_CompAttributeGet(gcomp, name='case_name', value=casename, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return call ESMF_GridCompGet(gcomp, vm=vm, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call ESMF_VMGet(vm, localPet=localPet, rc=rc) diff --git a/config_src/drivers/nuopc_cap/mom_cap_methods.F90 b/config_src/drivers/nuopc_cap/mom_cap_methods.F90 index 683217764c..b5f25c0265 100644 --- a/config_src/drivers/nuopc_cap/mom_cap_methods.F90 +++ b/config_src/drivers/nuopc_cap/mom_cap_methods.F90 @@ -72,9 +72,10 @@ end subroutine mom_set_geomtype !> This function has a few purposes: !! (1) it imports surface fluxes using data from the mediator; and !! (2) it can apply restoring in SST and SSS. -subroutine mom_import(ocean_public, ocean_grid, importState, ice_ocean_boundary, rc) +subroutine mom_import(ocean_public, ocean_grid, importState, ice_ocean_boundary, casename, rc) type(ocean_public_type) , intent(in) :: ocean_public !< Ocean surface state type(ocean_grid_type) , intent(in) :: ocean_grid !< Ocean model grid + character(ESMF_MAXSTR) , intent(in) :: casename !< Case name for the experiment type(ESMF_State) , intent(inout) :: importState !< incoming data from mediator type(ice_ocean_boundary_type) , intent(inout) :: ice_ocean_boundary !< Ocean boundary forcing integer , intent(inout) :: rc !< Return code @@ -352,7 +353,7 @@ subroutine mom_import(ocean_public, ocean_grid, importState, ice_ocean_boundary, ig = i + ocean_grid%isc - isc !rotate do ib = 1, nsc - if(abs(stkx(i,j,ib)-fillValue) <= 0.01) then + if( (trim(casename) == "ufs.hafs") .and. (abs(stkx(i,j,ib)-fillValue) <= 0.01) ) then ice_ocean_boundary%ustkb(i,j,ib) = 0.0 ice_ocean_boundary%vstkb(i,j,ib) = 0.0 else