diff --git a/cime_config/namelist_definition_drv_flds.xml b/cime_config/namelist_definition_drv_flds.xml index cef475978..beceb238c 100644 --- a/cime_config/namelist_definition_drv_flds.xml +++ b/cime_config/namelist_definition_drv_flds.xml @@ -145,4 +145,20 @@ + + + + + + char + ozone_coupling + ozone_coupling_nl + + Frequency of surface ozone field passed from CAM to surface components. + Surface ozone is passed every coupling interval, but this namelist flag + indicates whether the timestep-level values are interpolated from a + coarser temporal resolution. + + + diff --git a/mediator/esmFldsExchange_cesm_mod.F90 b/mediator/esmFldsExchange_cesm_mod.F90 index cd3f4726f..92893793c 100644 --- a/mediator/esmFldsExchange_cesm_mod.F90 +++ b/mediator/esmFldsExchange_cesm_mod.F90 @@ -27,7 +27,7 @@ module esmFldsExchange_cesm_mod public :: esmFldsExchange_cesm - ! currently required mapping files + ! currently required mapping files character(len=CX) :: glc2ice_rmap ='unset' character(len=CX) :: glc2ocn_liq_rmap ='unset' character(len=CX) :: glc2ocn_ice_rmap ='unset' @@ -375,6 +375,19 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) end if end if ! --------------------------------------------------------------------- + ! to lnd: o3 at the lowest model level from atm + ! --------------------------------------------------------------------- + if (phase == 'advertise') then + call addfld(fldListFr(compatm)%flds, 'Sa_o3') + call addfld(fldListTo(complnd)%flds, 'Sa_o3') + else + if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_o3', rc=rc) .and. & + fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_o3', rc=rc)) then + call addmap(fldListFr(compatm)%flds, 'Sa_o3', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%flds, 'Sa_o3', mrg_from=compatm, mrg_fld='Sa_o3', mrg_type='copy') + end if + end if + ! --------------------------------------------------------------------- ! to lnd: temperature at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then @@ -1838,7 +1851,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! --------------------------------------------------------------------- ! Note that this is a field output by the atm/ocn flux computation ! If the aoflux grid is ogrid - then nothing needs to be done to send to the ocean - ! All other mappings are set in med_phases_aoflux_mod.F90 + ! All other mappings are set in med_phases_aoflux_mod.F90 if (phase == 'advertise') then call addfld(fldListMed_aoflux%flds , 'So_duu10n') call addfld(fldListTo(compocn)%flds, 'So_duu10n') diff --git a/mediator/fd_cesm.yaml b/mediator/fd_cesm.yaml index 1a4889bc0..85e2101c6 100644 --- a/mediator/fd_cesm.yaml +++ b/mediator/fd_cesm.yaml @@ -318,6 +318,10 @@ canonical_units: 1e-6 mol/mol description: atmosphere export - prognostic CO2 at the lowest model level # + - standard_name: Sa_o3 + canonical_units: mol/mol + description: atmosphere export - O3 in the lowest model layer (prognosed or prescribed) + # - standard_name: Sa_topo alias: inst_surface_height canonical_units: m