@@ -1315,9 +1315,10 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc)
13151315
13161316 if (phase == ' advertise' ) then
13171317 call addfld_to(compatm, ' Faxx_evap' )
1318+ call addfld_to(compatm, ' Faox_evap' )
13181319 call addfld_from(complnd, ' Fall_evap' )
13191320 call addfld_from(compice, ' Faii_evap' )
1320- call addfld_aoflux( ' Faox_evap' )
1321+ call addfld_aoflux(' Faox_evap' )
13211322 else
13221323 if (fldchk(is_local% wrap% FBexp(compatm), ' Faxx_evap' , rc= rc)) then
13231324 if ( fldchk(is_local% wrap% FBImp(complnd,complnd), ' Fall_evap' , rc= rc)) then
@@ -1336,6 +1337,8 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc)
13361337 end if
13371338 call addmrg_to(compatm , ' Faxx_evap' , &
13381339 mrg_from= compmed, mrg_fld= ' Faox_evap' , mrg_type= ' merge' , mrg_fracname= ' ofrac' )
1340+ ! unmerged aoflux-only for correct hevap to ocean in cam_out
1341+ call addmrg_to(compatm, ' Faox_evap' , mrg_from= compmed, mrg_fld= ' Faox_evap' , mrg_type= ' copy' )
13391342 end if
13401343 end if
13411344 end if
@@ -1892,6 +1895,33 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc)
18921895 mrg_from= compatm, mrg_fld= ' Faxa_swdn' , mrg_type= ' copy' )
18931896 end if
18941897 end if
1898+ !- ---------------------------------------------------------------------
1899+ ! to ocn: downward material enthalpy flux from atm
1900+ ! ---------------------------------------------------------------------
1901+ if (phase == ' advertise' ) then
1902+ call addfld_from(compatm, ' Faxa_hmat' )
1903+ call addfld_to (compocn, ' Faxa_hmat' )
1904+ call addfld_to (compocn, ' Faxa_hmat_oa' ) ! handled in prep_ocn
1905+ call addfld_from(compatm, ' Faxa_hlat' )
1906+ call addfld_to (compocn, ' Faxa_hlat' )
1907+ call addfld_to (compatm, ' Faxx_hrof' ) ! enthalpy of runoff, computed in med_phases_prep_ocn
1908+ else
1909+ if (fldchk(is_local% wrap% FBImp(compatm, compatm), ' Faxa_hmat' , rc= rc) .and. &
1910+ fldchk(is_local% wrap% FBExp(compocn) , ' Faxa_hmat' , rc= rc)) then
1911+ call addmap_from(compatm, ' Faxa_hmat' , compocn, mapconsf, ' one' , atm2ocn_map)
1912+ call addmrg_to (compocn, ' Faxa_hmat' , mrg_from= compatm ,mrg_fld= ' Faxa_hmat' &
1913+ , mrg_type= ' copy_with_weights' , mrg_fracname= ' ofrac' )
1914+ end if
1915+ if (fldchk(is_local% wrap% FBImp(compatm, compatm), ' Faxa_hlat' , rc= rc) .and. &
1916+ fldchk(is_local% wrap% FBExp(compocn) , ' Faxa_hlat' , rc= rc)) then
1917+ call addmap_from(compatm, ' Faxa_hlat' , compocn, mapconsf, ' one' , atm2ocn_map)
1918+ call addmrg_to (compocn, ' Faxa_hlat' , mrg_from= compatm ,mrg_fld= ' Faxa_hlat' &
1919+ , mrg_type= ' copy_with_weights' , mrg_fracname= ' ofrac' )
1920+ end if
1921+ ! if (fldchk(is_local%wrap%FBExp(compatm),'Faxx_hrof', rc=rc)) &
1922+ ! call addmap_from(compocn, 'Faxx_hrof', compatm, mapconsf, 'one', atm2ocn_map)
1923+ end if
1924+
18951925 ! ---------------------------------------------------------------------
18961926 ! to ocn: net shortwave radiation from med
18971927 ! ---------------------------------------------------------------------
@@ -1932,15 +1962,15 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc)
19321962 end if
19331963
19341964 ! import sw from atm by bands
1935- if ( fldchk(is_local% wrap% FBImp(compatm,compatm), ' Faxa_swvdr' , rc= rc) .and. &
1965+ if (( fldchk(is_local% wrap% FBImp(compatm,compatm), ' Faxa_swvdr' , rc= rc) .and. &
19361966 fldchk(is_local% wrap% FBImp(compatm,compatm), ' Faxa_swvdf' , rc= rc) .and. &
19371967 fldchk(is_local% wrap% FBImp(compatm,compatm), ' Faxa_swndr' , rc= rc) .and. &
19381968 fldchk(is_local% wrap% FBImp(compatm,compatm), ' Faxa_swndr' , rc= rc) .and. &
1939- ( fldchk(is_local% wrap% FBExp(compocn), ' Foxx_swnet ' , rc= rc)) .or. &
1940- (fldchk(is_local% wrap% FBExp(compocn), ' Foxx_swnet_vdr' , rc= rc) .and. &
1941- fldchk(is_local% wrap% FBExp(compocn), ' Foxx_swnet_vdf' , rc= rc) .and. &
1942- fldchk(is_local% wrap% FBExp(compocn), ' Foxx_swnet_idr' , rc= rc) .and. &
1943- fldchk(is_local% wrap% FBExp(compocn), ' Foxx_swnet_idf' , rc= rc))) then
1969+ fldchk(is_local% wrap% FBExp(compocn) , ' Foxx_swnet ' , rc= rc)) .or. &
1970+ (fldchk(is_local% wrap% FBExp(compocn), ' Foxx_swnet_vdr' , rc= rc) .and. &
1971+ fldchk(is_local% wrap% FBExp(compocn), ' Foxx_swnet_vdf' , rc= rc) .and. &
1972+ fldchk(is_local% wrap% FBExp(compocn), ' Foxx_swnet_idr' , rc= rc) .and. &
1973+ fldchk(is_local% wrap% FBExp(compocn), ' Foxx_swnet_idf' , rc= rc))) then
19441974 call addmap_from(compatm, ' Faxa_swvdr' , compocn, mapconsf, ' one' , atm2ocn_map)
19451975 call addmap_from(compatm, ' Faxa_swvdf' , compocn, mapconsf, ' one' , atm2ocn_map)
19461976 call addmap_from(compatm, ' Faxa_swndr' , compocn, mapconsf, ' one' , atm2ocn_map)
0 commit comments