From ef76dd1297243014307b9dcd6845fa63a62e1383 Mon Sep 17 00:00:00 2001 From: James Edwards Date: Sat, 19 Nov 2022 08:37:42 -0700 Subject: [PATCH 01/21] make fldList a singly linked list --- mediator/esmFlds.F90 | 289 ++-- mediator/esmFldsExchange_cesm_mod.F90 | 1924 ++++++++++++------------- mediator/med.F90 | 4 +- mediator/med_merge_mod.F90 | 10 +- mediator/med_phases_prep_rof_mod.F90 | 2 +- 5 files changed, 1103 insertions(+), 1126 deletions(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index 36dda2519..422312021 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -39,6 +39,7 @@ module esmflds character(CS), allocatable :: merge_fields(:) character(CS), allocatable :: merge_types(:) character(CS), allocatable :: merge_fracnames(:) + type(med_fldList_entry_type), pointer :: next => null() end type med_fldList_entry_type ! The above would be the field name to merge from @@ -47,7 +48,7 @@ module esmflds ! merge_type(comptm) = 'copy' (could also have 'copy_with_weighting') type, public :: med_fldList_type - type (med_fldList_entry_type), pointer :: flds(:) => null() + type (med_fldList_entry_type) :: fields end type med_fldList_type interface med_fldList_GetFldInfo ; module procedure & @@ -94,33 +95,26 @@ subroutine med_fldList_AddFld(flds, stdname, shortname) ! 5) point flds => newflds ! ---------------------------------------------- - type(med_fldList_entry_type) , pointer :: flds(:) + type(med_fldList_entry_type) , target :: fields character(len=*) , intent(in) :: stdname character(len=*) , intent(in) , optional :: shortname ! local variables - integer :: n,oldsize,id logical :: found integer :: mapsize, mrgsize - type(med_fldList_entry_type), pointer :: newflds(:) + type(med_fldList_entry_type), pointer :: newfld character(len=*), parameter :: subname='(med_fldList_AddFld)' ! ---------------------------------------------- - if (associated(flds)) then - oldsize = size(flds) - found = .false. - do n= 1,oldsize - if (trim(stdname) == trim(flds(n)%stdname)) then - found = .true. - exit - end if - end do - else - oldsize = 0 - found = .false. - end if - id = oldsize + 1 - + newfld => fields + found = .false. + do while(newfld%next) + if (trim(stdname) == trim(newfld%stdname)) then + found = .true. + exit + end if + newfld => newfld%next + enddo ! create new entry if fldname is not in original list mapsize = ncomps @@ -129,77 +123,40 @@ subroutine med_fldList_AddFld(flds, stdname, shortname) if (.not. found) then ! 1) allocate newfld to be size (one element larger than input flds) - allocate(newflds(id)) - - ! 2) copy flds into first N-1 elements of newflds - do n = 1,oldsize - newflds(n)%stdname = flds(n)%stdname - newflds(n)%shortname = flds(n)%shortname - - allocate(newflds(n)%mapindex(mapsize)) - allocate(newflds(n)%mapnorm(mapsize)) - allocate(newflds(n)%mapfile(mapsize)) - allocate(newflds(n)%merge_fields(mrgsize)) - allocate(newflds(n)%merge_types(mrgsize)) - allocate(newflds(n)%merge_fracnames(mrgsize)) - - newflds(n)%mapindex(:) = flds(n)%mapindex(:) - newflds(n)%mapnorm(:) = flds(n)%mapnorm(:) - newflds(n)%mapfile(:) = flds(n)%mapfile(:) - newflds(n)%merge_fields(:) = flds(n)%merge_fields(:) - newflds(n)%merge_types(:) = flds(n)%merge_types(:) - newflds(n)%merge_fracnames(:) = flds(n)%merge_fracnames(:) - - deallocate(flds(n)%mapindex) - deallocate(flds(n)%mapnorm) - deallocate(flds(n)%mapfile) - deallocate(flds(n)%merge_fields) - deallocate(flds(n)%merge_types) - deallocate(flds(n)%merge_fracnames) - end do + allocate(newfld%next) + newfld => newfld%next - ! 3) deallocate / nullify flds - if (oldsize > 0) then - deallocate(flds) - nullify(flds) - end if - - ! 4) point flds => new_flds - flds => newflds - - ! 5) now update flds information for new entry - flds(id)%stdname = trim(stdname) + ! 2) now update flds information for new entry + newfld%stdname = trim(stdname) if (present(shortname)) then - flds(id)%shortname = trim(shortname) + newfld%shortname = trim(shortname) else - flds(id)%shortname = trim(stdname) + newfld%shortname = trim(stdname) end if - allocate(flds(id)%mapindex(mapsize)) - allocate(flds(id)%mapnorm(mapsize)) - allocate(flds(id)%mapfile(mapsize)) - allocate(flds(id)%merge_fields(mrgsize)) - allocate(flds(id)%merge_types(mrgsize)) - allocate(flds(id)%merge_fracnames(mrgsize)) - flds(id)%mapindex(:) = mapunset - flds(id)%mapnorm(:) = 'unset' - flds(id)%mapfile(:) = 'unset' - flds(id)%merge_fields(:) = 'unset' - flds(id)%merge_types(:) = 'unset' - flds(id)%merge_fracnames(:) = 'unset' + allocate(newfld%mapindex(mapsize)) + allocate(newfld%mapnorm(mapsize)) + allocate(newfld%mapfile(mapsize)) + allocate(newfld%merge_fields(mrgsize)) + allocate(newfld%merge_types(mrgsize)) + allocate(newfld%merge_fracnames(mrgsize)) + newfld%mapindex(:) = mapunset + newfld%mapnorm(:) = 'unset' + newfld%mapfile(:) = 'unset' + newfld%merge_fields(:) = 'unset' + newfld%merge_types(:) = 'unset' + newfld%merge_fracnames(:) = 'unset' end if end subroutine med_fldList_AddFld !================================================================================ - subroutine med_fldList_AddMrg(flds, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname) + subroutine med_fldList_AddMrg(flds, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname, rc) ! ---------------------------------------------- ! Determine mrg entry or entries in flds aray ! ---------------------------------------------- - use ESMF, only : ESMF_LogWrite, ESMF_END_ABORT, ESMF_LOGMSG_ERROR, ESMF_Finalize - ! input/output variables type(med_fldList_entry_type) , pointer :: flds(:) character(len=*) , intent(in) :: fldname @@ -207,92 +164,97 @@ subroutine med_fldList_AddMrg(flds, fldname, mrg_from, mrg_fld, mrg_type, mrg_fr character(len=*) , intent(in) :: mrg_fld character(len=*) , intent(in) :: mrg_type character(len=*) , intent(in), optional :: mrg_fracname + integer , intent(out), optional :: rc ! local variables - integer :: n, id + integer :: lrc + type(med_fldList_entry_type), pointer :: newfld character(len=*), parameter :: subname='(med_fldList_AddMrg)' ! ---------------------------------------------- + + newfld => med_fldList_GetFld(flds, fldname, lrc) + if (present(rc)) rc = lrc + if (chkerr(lrc,__LINE__,u_FILE_u)) return - id = 0 - do n= 1,size(flds) - if (trim(fldname) == trim(flds(n)%stdname)) then - id = n - exit - end if - end do - if (id == 0) then - do n = 1,size(flds) - write(6,*) trim(subname)//' input flds entry is ',trim(flds(n)%stdname) - end do - call ESMF_LogWrite(subname // 'ERROR: fldname '// trim(fldname) // ' not found in input flds', ESMF_LOGMSG_ERROR) - call ESMF_Finalize(endflag=ESMF_END_ABORT) - end if - - n = mrg_from - flds(id)%merge_fields(n) = mrg_fld - flds(id)%merge_types(n) = mrg_type + newfld%merge_fields(n) = mrg_fld + newfld%merge_types(n) = mrg_type if (present(mrg_fracname)) then - flds(id)%merge_fracnames(n) = mrg_fracname + newfld%merge_fracnames(n) = mrg_fracname end if end subroutine med_fldList_AddMrg + function med_fldList_GetFld(flds, fldname, rc) result(newfld) + use ESMF, only : ESMF_LogWrite, ESMF_END_ABORT, ESMF_LOGMSG_ERROR, ESMF_Finalize + + type(med_fldList_entry_type) , intent(in), target :: fields + character(len=*) , intent(in) :: fldname + + type(med_fldList_entry_type), pointer :: newfld + integer :: rc + + newfld => fields + rc = ESMF_FAILURE + do while(associated(newfld%next)) + if(trim(fldname) .eq. newfld%stdname) then + rc = ESMF_SUCCESS + exit + endif + newfld => newfld%next + enddo + if(rc /= ESMF_SUCCESS) then + newfld => fields + do while(associated(newfld%next)) + write(6,*) trim(subname)//' input flds entry is ',trim(newfld%stdname) + newfld => newfld%next + end do + call ESMF_LogWrite(subname // 'ERROR: fldname '// trim(fldname) // ' not found in input flds', ESMF_LOGMSG_INFO) + return + endif + + end function med_fldList_GetFld !================================================================================ - subroutine med_fldList_AddMap(flds, fldname, destcomp, maptype, mapnorm, mapfile) + subroutine med_fldList_AddMap(flds, fldname, destcomp, maptype, mapnorm, mapfile, rc) use ESMF, only : ESMF_LOGMSG_ERROR, ESMF_FAILURE, ESMF_LogWrite, ESMF_LOGMSG_INFO ! intput/output variables - type(med_fldList_entry_type) , intent(inout) :: flds(:) - character(len=*) , intent(in) :: fldname integer , intent(in) :: destcomp integer , intent(in) :: maptype character(len=*) , intent(in) :: mapnorm character(len=*), optional , intent(in) :: mapfile + integer , intent(out) :: rc ! local variables + type(med_fldList_entry_type), pointer :: newfld integer :: id, n - integer :: rc character(len=CX) :: lmapfile character(len=*),parameter :: subname='(med_fldList_AddMap)' ! ---------------------------------------------- lmapfile = 'unset' + rc = ESMF_FAILURE if (present(mapfile)) lmapfile = mapfile - id = 0 - do n = 1,size(flds) - if (trim(fldname) == trim(flds(n)%stdname)) then - id = n - exit - end if - end do - if (id == 0) then - do n = 1,size(flds) - write(6,*) trim(subname)//' input flds entry is ',trim(flds(n)%stdname) - end do - call ESMF_LogWrite(subname // 'ERROR: fldname '// trim(fldname) // ' not found in input flds', ESMF_LOGMSG_INFO) - rc = ESMF_FAILURE - return - end if - + newfld => med_fldList_GetFld(flds, fldname, rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return ! Note - default values are already set for the fld entries - so only non-default ! values need to be set below ! If mapindex is mapfcopy - create a redistribution route handle ! If mapfile is idmap - create a redistribution route nhandle ! If mapfile is unset then create the mapping route handle at run time - flds(id)%mapindex(destcomp) = maptype - flds(id)%mapnorm(destcomp) = trim(mapnorm) - flds(id)%mapfile(destcomp) = trim(lmapfile) + newfld%mapindex(destcomp) = maptype + newfld%mapnorm(destcomp) = trim(mapnorm) + newfld%mapfile(destcomp) = trim(lmapfile) ! overwrite values if appropriate - if (flds(id)%mapindex(destcomp) == mapfcopy) then - flds(id)%mapfile(destcomp) = 'unset' - flds(id)%mapnorm(destcomp) = 'unset' - else if (trim(flds(id)%mapfile(destcomp)) == 'idmap') then - flds(id)%mapindex(destcomp) = mapfcopy - flds(id)%mapnorm(destcomp) = 'unset' + if (newfld%mapindex(destcomp) == mapfcopy) then + newfld%mapfile(destcomp) = 'unset' + newfld%mapnorm(destcomp) = 'unset' + else if (trim(newfld%mapfile(destcomp)) == 'idmap') then + newfld%mapindex(destcomp) = mapfcopy + newfld%mapnorm(destcomp) = 'unset' end if end subroutine med_fldList_AddMap @@ -515,40 +477,53 @@ end subroutine med_fldList_Realize !================================================================================ - subroutine med_fldList_GetFldInfo_general(fldList, fldindex, stdname, shortname) + subroutine med_fldList_GetFldInfo(fldList, fldindex, stdname, shortname, merge_field, merge_type, merge_fracname) ! ---------------------------------------------- ! Get field info ! ---------------------------------------------- type(med_fldList_type) , intent(in) :: fldList integer , intent(in) :: fldindex - character(len=*) , intent(out) :: stdname - character(len=*) , intent(out) :: shortname + integer , optional, intent(in) :: compsrc + character(len=*) , optional, intent(out) :: stdname + character(len=*) , optional, intent(out) :: shortname + character(len=*) , optional, intent(out) :: merge_fields + character(len=*) , optional, intent(out) :: merge_type + character(len=*) , optional, intent(out) :: merge_fracname ! local variables + type(med_fldList_entry_type), pointer :: newfld + integer :: i + integer :: lcompsrc character(len=*), parameter :: subname='(med_fldList_GetFldInfo_general)' ! ---------------------------------------------- + i = 0 + lcompsrc = 1 + newfld => fldList%fields + do while(newfld) + i = i+1 + if (i==fldindex) exit + newfld => newfld%next + enddo + if(present(stdname)) then + stdname = fldList%fields%stdname + endif + if(present(shortname)) then + shortname = fldList%fields%shortname + endif + if(present(merge_fields)) then + if(present(compsrc)) lcompsrc = compsrc + merge_field = fldList%fields%merge_fields(compsrc) + endif + if(present(merge_type)) then + if(present(compsrc)) lcompsrc = compsrc + merge_type = fldList%fields%merge_types(compsrc) + endif + if(present(merge_fracname)) then + if(present(compsrc)) lcompsrc = compsrc + merge_fracname = fldList%fields%merge_fracnames(compsrc) + endif - stdname = fldList%flds(fldindex)%stdname - shortname = fldList%flds(fldindex)%shortname - - end subroutine med_fldList_GetFldInfo_general - - !================================================================================ - - subroutine med_fldList_GetFldInfo_stdname(fldList, fldindex_in, stdname_out) - ! ---------------------------------------------- - ! Get field info - ! ---------------------------------------------- - type(med_fldList_type) , intent(in) :: fldList - integer , intent(in) :: fldindex_in - character(len=*) , intent(out) :: stdname_out - - ! local variables - character(len=*), parameter :: subname='(med_fldList_GetFldInfo_stdname)' - ! ---------------------------------------------- - - stdname_out = fldList%flds(fldindex_in)%stdname - end subroutine med_fldList_GetFldInfo_stdname + end subroutine med_fldList_GetFldInfo !================================================================================ @@ -602,15 +577,17 @@ end subroutine med_fldList_GetFldInfo_merging integer function med_fldList_GetNumFlds(fldList) ! input/output variables - type(med_fldList_type), intent(in) :: fldList + type(med_fldList_type), intent(in), target :: fldList ! ---------------------------------------------- - - if (associated(fldList%flds)) then - med_fldList_GetNumFlds = size(fldList%flds) - else - med_fldList_GetNumFlds = 0 - end if - + type(med_fldList_entry_type), pointer :: newfld + + newfld => fldList + med_fldList_GetNumFlds = 0 + do while(newfld%next) + med_fldList_GetNumFlds = med_fldList_GetNumFlds + 1 + newfld => newfld%next + end do + end function med_fldList_GetNumFlds !================================================================================ diff --git a/mediator/esmFldsExchange_cesm_mod.F90 b/mediator/esmFldsExchange_cesm_mod.F90 index 48ac2a2ed..be820095a 100644 --- a/mediator/esmFldsExchange_cesm_mod.F90 +++ b/mediator/esmFldsExchange_cesm_mod.F90 @@ -238,8 +238,8 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) call NUOPC_CompAttributeGet(gcomp, name="ScalarFieldName", value=cvalue, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return do n = 1,ncomps - call addfld(fldListFr(n)%flds, trim(cvalue)) - call addfld(fldListTo(n)%flds, trim(cvalue)) + call addfld(fldListFr(n)%fields, trim(cvalue)) + call addfld(fldListTo(n)%fields, trim(cvalue)) end do end if @@ -251,11 +251,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to med: masks from components !---------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_lfrin') - call addfld(fldListFr(compocn)%flds, 'So_omask') - call addfld(fldListFr(compice)%flds, 'Si_imask') + call addfld(fldListFr(complnd)%fields, 'Sl_lfrin') + call addfld(fldListFr(compocn)%fields, 'So_omask') + call addfld(fldListFr(compice)%fields, 'Si_imask') do ns = 1,is_local%wrap%num_icesheets - call addfld(fldlistFr(compglc(ns))%flds, 'Sg_area') + call addfld(fldlistFr(compglc(ns))%fields, 'Sg_area') end do else call addmap(fldListFr(compocn)%flds, 'So_omask', compice, mapfcopy, 'unset', 'unset') @@ -265,35 +265,35 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to med: atm and ocn fields required for atm/ocn flux calculation' ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_u') - call addfld(fldListFr(compatm)%flds, 'Sa_v') - call addfld(fldListFr(compatm)%flds, 'Sa_z') - call addfld(fldListFr(compatm)%flds, 'Sa_tbot') - call addfld(fldListFr(compatm)%flds, 'Sa_pbot') - call addfld(fldListFr(compatm)%flds, 'Sa_shum') - call addfld(fldListFr(compatm)%flds, 'Sa_ptem') - call addfld(fldListFr(compatm)%flds, 'Sa_dens') + call addfld(fldListFr(compatm)%fields, 'Sa_u') + call addfld(fldListFr(compatm)%fields, 'Sa_v') + call addfld(fldListFr(compatm)%fields, 'Sa_z') + call addfld(fldListFr(compatm)%fields, 'Sa_tbot') + call addfld(fldListFr(compatm)%fields, 'Sa_pbot') + call addfld(fldListFr(compatm)%fields, 'Sa_shum') + call addfld(fldListFr(compatm)%fields, 'Sa_ptem') + call addfld(fldListFr(compatm)%fields, 'Sa_dens') if (flds_wiso) then - call addfld(fldListFr(compatm)%flds, 'Sa_shum_wiso') + call addfld(fldListFr(compatm)%fields, 'Sa_shum_wiso') end if else if (is_local%wrap%aoflux_grid == 'ogrid') then if (mapuv_with_cart3d) then - call addmap(fldListFr(compatm)%flds, 'Sa_u' , compocn, mappatch_uv3d, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Sa_v' , compocn, mappatch_uv3d, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_u' , compocn, mappatch_uv3d, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_v' , compocn, mappatch_uv3d, 'one', atm2ocn_map) else - call addmap(fldListFr(compatm)%flds, 'Sa_u' , compocn, mappatch, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Sa_v' , compocn, mappatch, 'one', atm2ocn_map) - end if - call addmap(fldListFr(compatm)%flds, 'Sa_z' , compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Sa_tbot', compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Sa_pbot', compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Sa_shum', compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Sa_ptem', compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Sa_dens', compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Sa_pslv', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_u' , compocn, mappatch, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_v' , compocn, mappatch, 'one', atm2ocn_map) + end if + call addmap(fldListFr(compatm)%fields, 'Sa_z' , compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_tbot', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_pbot', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_shum', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_ptem', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_dens', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_pslv', compocn, mapbilnr, 'one', atm2ocn_map) if (fldchk(is_local%wrap%FBImp(compatm,compatm), 'Sa_shum_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_shum_wiso', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_shum_wiso', compocn, mapbilnr, 'one', atm2ocn_map) end if end if end if @@ -302,16 +302,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to med: swnet fluxes used for budget calculation ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Fall_swnet') - call addfld(fldListFr(compice)%flds, 'Faii_swnet') - call addfld(fldListFr(compatm)%flds, 'Faxa_swnet') + call addfld(fldListFr(complnd)%fields, 'Fall_swnet') + call addfld(fldListFr(compice)%fields, 'Faii_swnet') + call addfld(fldListFr(compatm)%fields, 'Faxa_swnet') else if (fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swnet', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swnet', compice, mapconsf, 'one' , atm2ice_map) - call addmap(fldListFr(compatm)%flds, 'Faxa_swnet', compocn, mapconsf, 'one' , atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_swnet', compice, mapconsf, 'one' , atm2ice_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_swnet', compocn, mapconsf, 'one' , atm2ocn_map) end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_swnet', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Faii_swnet', compocn, mapfcopy, 'unset', 'unset') + call addmap(fldListFr(compice)%fields, 'Faii_swnet', compocn, mapfcopy, 'unset', 'unset') end if end if @@ -323,26 +323,26 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: height at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_z') - call addfld(fldListTo(complnd)%flds, 'Sa_z') + call addfld(fldListFr(compatm)%fields, 'Sa_z') + call addfld(fldListTo(complnd)%fields, 'Sa_z') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_z', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_z', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_z', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_z', mrg_from=compatm, mrg_fld='Sa_z', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_z', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sa_z', mrg_from=compatm, mrg_fld='Sa_z', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: surface height from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_topo') - call addfld(fldListTo(complnd)%flds, 'Sa_topo') + call addfld(fldListFr(compatm)%fields, 'Sa_topo') + call addfld(fldListTo(complnd)%fields, 'Sa_topo') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_topo', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_topo', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_topo', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_topo', mrg_from=compatm, mrg_fld='Sa_topo', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_topo', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sa_topo', mrg_from=compatm, mrg_fld='Sa_topo', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -350,99 +350,99 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: meridional wind at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_u') - call addfld(fldListTo(complnd)%flds, 'Sa_u') + call addfld(fldListFr(compatm)%fields, 'Sa_u') + call addfld(fldListTo(complnd)%fields, 'Sa_u') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_u', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_u', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_u', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_u', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_v') - call addfld(fldListTo(complnd)%flds, 'Sa_v') + call addfld(fldListFr(compatm)%fields, 'Sa_v') + call addfld(fldListTo(complnd)%fields, 'Sa_v') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_v', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_v', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_v', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_v', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: pressure at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_pbot') - call addfld(fldListTo(complnd)%flds, 'Sa_pbot') + call addfld(fldListFr(compatm)%fields, 'Sa_pbot') + call addfld(fldListTo(complnd)%fields, 'Sa_pbot') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_pbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_pbot', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_pbot', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_pbot', mrg_from=compatm, mrg_fld='Sa_pbot', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_pbot', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sa_pbot', mrg_from=compatm, mrg_fld='Sa_pbot', mrg_type='copy') 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') + call addfld(fldListFr(compatm)%fields, 'Sa_o3') + call addfld(fldListTo(complnd)%fields, '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') + call addmap(fldListFr(compatm)%fields, 'Sa_o3', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, '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 - call addfld(fldListFr(compatm)%flds, 'Sa_tbot') - call addfld(fldListTo(complnd)%flds, 'Sa_tbot') + call addfld(fldListFr(compatm)%fields, 'Sa_tbot') + call addfld(fldListTo(complnd)%fields, 'Sa_tbot') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_tbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_tbot', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_tbot', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_tbot', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: potential temperature at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_ptem') - call addfld(fldListTo(complnd)%flds, 'Sa_ptem') + call addfld(fldListFr(compatm)%fields, 'Sa_ptem') + call addfld(fldListTo(complnd)%fields, 'Sa_ptem') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_ptem', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_ptem', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_ptem', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_ptem', mrg_from=compatm, mrg_fld='Sa_ptem', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_ptem', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sa_ptem', mrg_from=compatm, mrg_fld='Sa_ptem', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: specific humidity at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_shum') - call addfld(fldListTo(complnd)%flds, 'Sa_shum') + call addfld(fldListFr(compatm)%fields, 'Sa_shum') + call addfld(fldListTo(complnd)%fields, 'Sa_shum') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_shum', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_shum', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_shum', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_shum', mrg_from=compatm, mrg_fld='Sa_shum', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_shum', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sa_shum', mrg_from=compatm, mrg_fld='Sa_shum', mrg_type='copy') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_shum_wiso') - call addfld(fldListTo(complnd)%flds, 'Sa_shum_wiso') + call addfld(fldListFr(compatm)%fields, 'Sa_shum_wiso') + call addfld(fldListTo(complnd)%fields, 'Sa_shum_wiso') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_shum_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_shum_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_shum_wiso', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_shum_wiso', mrg_from=compatm, mrg_fld='Sa_shum_wiso', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_shum_wiso', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sa_shum_wiso', mrg_from=compatm, mrg_fld='Sa_shum_wiso', mrg_type='copy') end if end if end if @@ -450,59 +450,59 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: convective and large scale precipitation rate water equivalent from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_rainc') - call addfld(fldListTo(complnd)%flds, 'Faxa_rainc') + call addfld(fldListFr(compatm)%fields, 'Faxa_rainc') + call addfld(fldListTo(complnd)%fields, 'Faxa_rainc') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_rainc', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_rainc', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_rainc', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_rainc', mrg_from=compatm, mrg_fld='Faxa_rainc', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_rainc', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_rainc', mrg_from=compatm, mrg_fld='Faxa_rainc', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_rainl') - call addfld(fldListTo(complnd)%flds, 'Faxa_rainl') + call addfld(fldListFr(compatm)%fields, 'Faxa_rainl') + call addfld(fldListTo(complnd)%fields, 'Faxa_rainl') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_rainl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_rainl', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_rainl', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_rainl', mrg_from=compatm, mrg_fld='Faxa_rainl', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_rainl', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_rainl', mrg_from=compatm, mrg_fld='Faxa_rainl', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: convective and large-scale (stable) snow rate from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_snowc') - call addfld(fldListTo(complnd)%flds, 'Faxa_snowc') + call addfld(fldListFr(compatm)%fields, 'Faxa_snowc') + call addfld(fldListTo(complnd)%fields, 'Faxa_snowc') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_snowc', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_snowc', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_snowc', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_snowc', mrg_from=compatm, mrg_fld='Faxa_snowc', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_snowc', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_snowc', mrg_from=compatm, mrg_fld='Faxa_snowc', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_snowl') - call addfld(fldListTo(complnd)%flds, 'Faxa_snowl') + call addfld(fldListFr(compatm)%fields, 'Faxa_snowl') + call addfld(fldListTo(complnd)%fields, 'Faxa_snowl') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_snowl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_snowl', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_snowl', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_snowl', mrg_from=compatm, mrg_fld='Faxa_snowl', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_snowl', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_snowl', mrg_from=compatm, mrg_fld='Faxa_snowl', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: downward longwave heat flux from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_lwdn') - call addfld(fldListTo(complnd)%flds, 'Faxa_lwdn') + call addfld(fldListFr(compatm)%fields, 'Faxa_lwdn') + call addfld(fldListTo(complnd)%fields, 'Faxa_lwdn') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_lwdn', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_lwdn', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_lwdn', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_lwdn', mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_lwdn', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_lwdn', mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -512,53 +512,53 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: downward Diffuse visible incident solar radiation from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swndr') - call addfld(fldListTo(complnd)%flds, 'Faxa_swndr') + call addfld(fldListFr(compatm)%fields, 'Faxa_swndr') + call addfld(fldListTo(complnd)%fields, 'Faxa_swndr') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_swndr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_swndr', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swndr', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_swndr', mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_swndr', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_swndr', mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swvdr') - call addfld(fldListTo(complnd)%flds, 'Faxa_swvdr') + call addfld(fldListFr(compatm)%fields, 'Faxa_swvdr') + call addfld(fldListTo(complnd)%fields, 'Faxa_swvdr') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_swvdr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_swvdr', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swvdr', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_swvdr', mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_swvdr', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_swvdr', mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swndf') - call addfld(fldListTo(complnd)%flds, 'Faxa_swndf') + call addfld(fldListFr(compatm)%fields, 'Faxa_swndf') + call addfld(fldListTo(complnd)%fields, 'Faxa_swndf') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_swndf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_swndf', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swndf', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_swndf', mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_swndf', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_swndf', mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swvdf') - call addfld(fldListTo(complnd)%flds, 'Faxa_swvdf') + call addfld(fldListFr(compatm)%fields, 'Faxa_swvdf') + call addfld(fldListTo(complnd)%fields, 'Faxa_swvdf') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_swvdf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_swvdf', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swvdf', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_swvdf', mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_swvdf', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_swvdf', mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_bcph') - call addfld(fldListTo(complnd)%flds, 'Faxa_bcph') + call addfld(fldListFr(compatm)%fields, 'Faxa_bcph') + call addfld(fldListTo(complnd)%fields, 'Faxa_bcph') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_bcph', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_bcph', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_bcph', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_bcph', mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_bcph', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_bcph', mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -572,13 +572,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! - hydrophylic organic carbon wet deposition flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_ocph') - call addfld(fldListTo(complnd)%flds, 'Faxa_ocph') + call addfld(fldListFr(compatm)%fields, 'Faxa_ocph') + call addfld(fldListTo(complnd)%fields, 'Faxa_ocph') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_ocph', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_ocph', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_ocph', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_ocph', mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_ocph', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_ocph', mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -586,36 +586,36 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: dust dry deposition flux (sizes 1-4) from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_dstwet') - call addfld(fldListTo(complnd)%flds, 'Faxa_dstwet') + call addfld(fldListFr(compatm)%fields, 'Faxa_dstwet') + call addfld(fldListTo(complnd)%fields, 'Faxa_dstwet') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_dstwet', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_dstwet', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_dstwet', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_dstwet', mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_dstwet', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_dstwet', mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_dstdry') - call addfld(fldListTo(complnd)%flds, 'Faxa_dstdry') + call addfld(fldListFr(compatm)%fields, 'Faxa_dstdry') + call addfld(fldListTo(complnd)%fields, 'Faxa_dstdry') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_dstdry', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_dstdry', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_dstdry', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_dstdry', mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_dstdry', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_dstdry', mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: nitrogen deposition fields from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_ndep') - call addfld(fldListTo(complnd)%flds, 'Faxa_ndep') + call addfld(fldListFr(compatm)%fields, 'Faxa_ndep') + call addfld(fldListTo(complnd)%fields, 'Faxa_ndep') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_ndep', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_ndep', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_ndep', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Faxa_ndep', mrg_from=compatm, mrg_fld='Faxa_ndep', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_ndep', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Faxa_ndep', mrg_from=compatm, mrg_fld='Faxa_ndep', mrg_type='copy') end if end if @@ -627,87 +627,87 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: tributary channel depth ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(comprof)%flds, 'Flrr_volr') - call addfld(fldListTo(complnd)%flds, 'Flrr_volr') + call addfld(fldListFr(comprof)%fields, 'Flrr_volr') + call addfld(fldListTo(complnd)%fields, 'Flrr_volr') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_volr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_volr', rc=rc)) then - call addmap(fldListFr(comprof)%flds, 'Flrr_volr', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Flrr_volr', mrg_from=comprof, mrg_fld='Flrr_volr', mrg_type='copy') + call addmap(fldListFr(comprof)%fields, 'Flrr_volr', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Flrr_volr', mrg_from=comprof, mrg_fld='Flrr_volr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(comprof)%flds, 'Flrr_volrmch') - call addfld(fldListTo(complnd)%flds, 'Flrr_volrmch') + call addfld(fldListFr(comprof)%fields, 'Flrr_volrmch') + call addfld(fldListTo(complnd)%fields, 'Flrr_volrmch') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_volrmch', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_volrmch', rc=rc)) then - call addmap(fldListFr(comprof)%flds, 'Flrr_volrmch', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Flrr_volrmch', mrg_from=comprof, mrg_fld='Flrr_volrmch', mrg_type='copy') + call addmap(fldListFr(comprof)%fields, 'Flrr_volrmch', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Flrr_volrmch', mrg_from=comprof, mrg_fld='Flrr_volrmch', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(comprof)%flds, 'Flrr_flood') - call addfld(fldListTo(complnd)%flds, 'Flrr_flood') + call addfld(fldListFr(comprof)%fields, 'Flrr_flood') + call addfld(fldListTo(complnd)%fields, 'Flrr_flood') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_flood', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_flood', rc=rc)) then - call addmap(fldListFr(comprof)%flds, 'Flrr_flood', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Flrr_flood', mrg_from=comprof, mrg_fld='Flrr_flood', mrg_type='copy') + call addmap(fldListFr(comprof)%fields, 'Flrr_flood', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Flrr_flood', mrg_from=comprof, mrg_fld='Flrr_flood', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(comprof)%flds, 'Sr_tdepth') - call addfld(fldListTo(complnd)%flds, 'Sr_tdepth') + call addfld(fldListFr(comprof)%fields, 'Sr_tdepth') + call addfld(fldListTo(complnd)%fields, 'Sr_tdepth') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Sr_tdepth', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Sr_tdepth', rc=rc)) then - call addmap(fldListFr(comprof)%flds, 'Sr_tdepth', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sr_tdepth', mrg_from=comprof, mrg_fld='Sr_tdepth', mrg_type='copy') + call addmap(fldListFr(comprof)%fields, 'Sr_tdepth', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sr_tdepth', mrg_from=comprof, mrg_fld='Sr_tdepth', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(comprof)%flds, 'Sr_tdepth_max') - call addfld(fldListTo(complnd)%flds, 'Sr_tdepth_max') + call addfld(fldListFr(comprof)%fields, 'Sr_tdepth_max') + call addfld(fldListTo(complnd)%fields, 'Sr_tdepth_max') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Sr_tdepth_max', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Sr_tdepth_max', rc=rc)) then - call addmap(fldListFr(comprof)%flds, 'Sr_tdepth_max', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sr_tdepth_max', mrg_from=comprof, mrg_fld='Sr_tdepth_max', mrg_type='copy') + call addmap(fldListFr(comprof)%fields, 'Sr_tdepth_max', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sr_tdepth_max', mrg_from=comprof, mrg_fld='Sr_tdepth_max', mrg_type='copy') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(comprof)%flds, 'Flrr_volr_wiso') - call addfld(fldListTo(complnd)%flds, 'Flrr_volr_wiso') + call addfld(fldListFr(comprof)%fields, 'Flrr_volr_wiso') + call addfld(fldListTo(complnd)%fields, 'Flrr_volr_wiso') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_volr_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_volr_wiso', rc=rc)) then - call addmap(fldListFr(comprof)%flds, 'Flrr_volr_wiso', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Flrr_volr_wiso', & + call addmap(fldListFr(comprof)%fields, 'Flrr_volr_wiso', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Flrr_volr_wiso', & mrg_from=comprof, mrg_fld='Flrr_volr_wiso', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(comprof)%flds, 'Flrr_volrmch_wiso') - call addfld(fldListTo(complnd)%flds, 'Flrr_volrmch_wiso') + call addfld(fldListFr(comprof)%fields, 'Flrr_volrmch_wiso') + call addfld(fldListTo(complnd)%fields, 'Flrr_volrmch_wiso') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_volrmch_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_volrmch_wiso', rc=rc)) then - call addmap(fldListFr(comprof)%flds, 'Flrr_volrmch_wiso', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Flrr_volrmch_wiso', & + call addmap(fldListFr(comprof)%fields, 'Flrr_volrmch_wiso', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Flrr_volrmch_wiso', & mrg_from=comprof, mrg_fld='Flrr_volrmch_wiso', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(comprof)%flds, 'Flrr_flood_wiso') - call addfld(fldListTo(complnd)%flds, 'Flrr_flood_wiso') + call addfld(fldListFr(comprof)%fields, 'Flrr_flood_wiso') + call addfld(fldListTo(complnd)%fields, 'Flrr_flood_wiso') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_flood_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_flood_wiso', rc=rc)) then - call addmap(fldListFr(comprof)%flds, 'Flrr_flood_wiso', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Flrr_flood_wiso', & + call addmap(fldListFr(comprof)%fields, 'Flrr_flood_wiso', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Flrr_flood_wiso', & mrg_from=comprof, mrg_fld='Flrr_flood_wiso', mrg_type='copy') end if end if @@ -725,24 +725,24 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (phase == 'advertise') then do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%flds, 'Sg_icemask') ! ice sheet grid coverage - call addfld(fldListFr(compglc(ns))%flds, 'Sg_icemask_coupled_fluxes') - call addfld(fldListFr(compglc(ns))%flds, 'Sg_ice_covered') ! fraction of glacier area - call addfld(fldListFr(compglc(ns))%flds, 'Sg_topo') ! surface height of glacer - call addfld(fldListFr(compglc(ns))%flds, 'Flgg_hflx') ! downward heat flux from glacier interior + call addfld(fldListFr(compglc(ns))%fields, 'Sg_icemask') ! ice sheet grid coverage + call addfld(fldListFr(compglc(ns))%fields, 'Sg_icemask_coupled_fluxes') + call addfld(fldListFr(compglc(ns))%fields, 'Sg_ice_covered') ! fraction of glacier area + call addfld(fldListFr(compglc(ns))%fields, 'Sg_topo') ! surface height of glacer + call addfld(fldListFr(compglc(ns))%fields, 'Flgg_hflx') ! downward heat flux from glacier interior end do - call addfld(fldListTo(complnd)%flds, 'Sg_icemask') - call addfld(fldListTo(complnd)%flds, 'Sg_icemask_coupled_fluxes') - call addfld(fldListTo(complnd)%flds, 'Sg_ice_covered_elev') - call addfld(fldListTo(complnd)%flds, 'Sg_topo_elev') - call addfld(fldListTo(complnd)%flds, 'Flgg_hflx_elev') + call addfld(fldListTo(complnd)%fields, 'Sg_icemask') + call addfld(fldListTo(complnd)%fields, 'Sg_icemask_coupled_fluxes') + call addfld(fldListTo(complnd)%fields, 'Sg_ice_covered_elev') + call addfld(fldListTo(complnd)%fields, 'Sg_topo_elev') + call addfld(fldListTo(complnd)%fields, 'Flgg_hflx_elev') else ! custom merge in med_phases_prep_lnd for Sg_icemask and Sg_icemask_coupled_fluxes ! custom map merge in med_phases_prep_lnd for Sg_ice_covered_elev, Sg_topo_elev and Flgg_hflx_elev if ( fldchk(is_local%wrap%FBExp(complnd), 'Sg_icemask', rc=rc)) then do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Sg_icemask', rc=rc)) then - call addmap(fldListFr(compglc(ns))%flds, 'Sg_icemask', & + call addmap(fldListFr(compglc(ns))%fields, 'Sg_icemask', & complnd, mapconsd, 'one', 'unset') end if end do @@ -750,7 +750,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if ( fldchk(is_local%wrap%FBExp(complnd), 'Sg_icemask_coupled_fluxes', rc=rc)) then do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Sg_icemask_coupled_fluxes', rc=rc)) then - call addmap(fldListFr(compglc(ns))%flds, 'Sg_icemask_coupled_fluxes', & + call addmap(fldListFr(compglc(ns))%fields, 'Sg_icemask_coupled_fluxes', & complnd, mapconsd, 'one', 'unset') end if end do @@ -766,9 +766,9 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !---------------------------------------------------------- if (phase == 'advertise') then ! the following are computed in med_phases_prep_atm - call addfld(fldListTo(compatm)%flds, 'Sl_lfrac') - call addfld(fldListTo(compatm)%flds, 'Si_ifrac') - call addfld(fldListTo(compatm)%flds, 'So_ofrac') + call addfld(fldListTo(compatm)%fields, 'Sl_lfrac') + call addfld(fldListTo(compatm)%fields, 'Si_ifrac') + call addfld(fldListTo(compatm)%fields, 'So_ofrac') end if ! --------------------------------------------------------------------- @@ -778,108 +778,108 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: merged diffuse albedo (near-infrared radiation) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_avsdr') - call addfld(fldListFr(compice)%flds, 'Si_avsdr') - call addfld(fldListMed_ocnalb%flds , 'So_avsdr') - call addfld(fldListTo(compatm)%flds, 'Sx_avsdr') + call addfld(fldListFr(complnd)%fields, 'Sl_avsdr') + call addfld(fldListFr(compice)%fields, 'Si_avsdr') + call addfld(fldListMed_ocnalb%fields , 'So_avsdr') + call addfld(fldListTo(compatm)%fields, 'Sx_avsdr') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_avsdr', rc=rc)) then ! Note that for aqua-plant there will be no import from complnd or compice - and the ! current logic below takes care of this. if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_avsdr', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Sl_avsdr', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_avsdr', & + call addmap(fldListFr(complnd)%fields, 'Sl_avsdr', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_avsdr', & mrg_from=complnd, mrg_fld='Sl_avsdr', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_avsdr', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Si_avsdr', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_avsdr', & + call addmap(fldListFr(compice)%fields, 'Si_avsdr', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_avsdr', & mrg_from=compice, mrg_fld='Si_avsdr', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_avsdr', rc=rc)) then - call addmap(fldListMed_ocnalb%flds , 'So_avsdr', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_avsdr', & + call addmap(fldListMed_ocnalb%fields , 'So_avsdr', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_avsdr', & mrg_from=compmed, mrg_fld='So_avsdr', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_avsdf') - call addfld(fldListFr(compice)%flds, 'Si_avsdf') - call addfld(fldListMed_ocnalb%flds , 'So_avsdf') - call addfld(fldListTo(compatm)%flds, 'Sx_avsdf') + call addfld(fldListFr(complnd)%fields, 'Sl_avsdf') + call addfld(fldListFr(compice)%fields, 'Si_avsdf') + call addfld(fldListMed_ocnalb%fields , 'So_avsdf') + call addfld(fldListTo(compatm)%fields, 'Sx_avsdf') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_avsdf', rc=rc)) then ! Note that for aqua-plant there will be no import from complnd or compice - and the ! current logic below takes care of this. if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_avsdf', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Sl_avsdf', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_avsdf', & + call addmap(fldListFr(complnd)%fields, 'Sl_avsdf', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_avsdf', & mrg_from=complnd, mrg_fld='Sl_avsdf', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_avsdf', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Si_avsdf', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_avsdf', & + call addmap(fldListFr(compice)%fields, 'Si_avsdf', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_avsdf', & mrg_from=compice, mrg_fld='Si_avsdf', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_avsdf', rc=rc)) then - call addmap(fldListMed_ocnalb%flds , 'So_avsdf', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_avsdf', & + call addmap(fldListMed_ocnalb%fields , 'So_avsdf', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_avsdf', & mrg_from=compmed, mrg_fld='So_avsdf', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_anidr') - call addfld(fldListFr(compice)%flds, 'Si_anidr') - call addfld(fldListMed_ocnalb%flds , 'So_anidr') - call addfld(fldListTo(compatm)%flds, 'Sx_anidr') + call addfld(fldListFr(complnd)%fields, 'Sl_anidr') + call addfld(fldListFr(compice)%fields, 'Si_anidr') + call addfld(fldListMed_ocnalb%fields , 'So_anidr') + call addfld(fldListTo(compatm)%fields, 'Sx_anidr') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_anidr', rc=rc)) then ! Note that for aqua-plant there will be no import from complnd or compice - and the ! current logic below takes care of this. if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_anidr', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Sl_anidr', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_anidr', & + call addmap(fldListFr(complnd)%fields, 'Sl_anidr', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_anidr', & mrg_from=complnd, mrg_fld='Sl_anidr', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_anidr', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Si_anidr', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_anidr', & + call addmap(fldListFr(compice)%fields, 'Si_anidr', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_anidr', & mrg_from=compice, mrg_fld='Si_anidr', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_anidr', rc=rc)) then - call addmap(fldListMed_ocnalb%flds , 'So_anidr', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_anidr', & + call addmap(fldListMed_ocnalb%fields , 'So_anidr', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_anidr', & mrg_from=compmed, mrg_fld='So_anidr', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_anidf') - call addfld(fldListFr(compice)%flds, 'Si_anidf') - call addfld(fldListMed_ocnalb%flds , 'So_anidf') - call addfld(fldListTo(compatm)%flds, 'Sx_anidf') + call addfld(fldListFr(complnd)%fields, 'Sl_anidf') + call addfld(fldListFr(compice)%fields, 'Si_anidf') + call addfld(fldListMed_ocnalb%fields , 'So_anidf') + call addfld(fldListTo(compatm)%fields, 'Sx_anidf') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_anidf', rc=rc)) then ! Note that for aqua-plant there will be no import from complnd or compice - and the ! current logic below takes care of this. if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_anidf', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Sl_anidf', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_anidf', & + call addmap(fldListFr(complnd)%fields, 'Sl_anidf', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_anidf', & mrg_from=complnd, mrg_fld='Sl_anidf', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_anidf', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Si_anidf', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_anidf', & + call addmap(fldListFr(compice)%fields, 'Si_anidf', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_anidf', & mrg_from=compice, mrg_fld='Si_anidf', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_anidf', rc=rc)) then - call addmap(fldListMed_ocnalb%flds , 'So_anidf', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_anidf', & + call addmap(fldListMed_ocnalb%fields , 'So_anidf', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_anidf', & mrg_from=compmed, mrg_fld='So_anidf', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -893,81 +893,81 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds , 'Sl_tref') - call addfld(fldListFr(compice)%flds , 'Si_tref') - call addfld(fldListMed_aoflux%flds , 'So_tref') - call addfld(fldListTo(compatm)%flds , 'Sx_tref') + call addfld(fldListFr(complnd)%fields , 'Sl_tref') + call addfld(fldListFr(compice)%fields , 'Si_tref') + call addfld(fldListMed_aoflux%fields , 'So_tref') + call addfld(fldListTo(compatm)%fields , 'Sx_tref') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_tref', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_tref', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Sl_tref', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_tref', & + call addmap(fldListFr(complnd)%fields , 'Sl_tref', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_tref', & mrg_from=complnd, mrg_fld='Sl_tref', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_tref', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Si_tref', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_tref', & + call addmap(fldListFr(compice)%fields , 'Si_tref', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_tref', & mrg_from=compice, mrg_fld='Si_tref', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_tref', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds , 'So_tref', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields , 'So_tref', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Sx_tref', & + call addmrg(fldListTo(compatm)%fields , 'Sx_tref', & mrg_from=compmed, mrg_fld='So_tref', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds , 'Sl_u10') - call addfld(fldListFr(compice)%flds , 'Si_u10') - call addfld(fldListMed_aoflux%flds , 'So_u10') - call addfld(fldListTo(compatm)%flds , 'Sx_u10') + call addfld(fldListFr(complnd)%fields , 'Sl_u10') + call addfld(fldListFr(compice)%fields , 'Si_u10') + call addfld(fldListMed_aoflux%fields , 'So_u10') + call addfld(fldListTo(compatm)%fields , 'Sx_u10') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_u10', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_u10', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Sl_u10', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_u10', & + call addmap(fldListFr(complnd)%fields , 'Sl_u10', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_u10', & mrg_from=complnd, mrg_fld='Sl_u10', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_u10', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Si_u10', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_u10', & + call addmap(fldListFr(compice)%fields , 'Si_u10', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_u10', & mrg_from=compice, mrg_fld='Si_u10', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_u10', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds, 'So_u10', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields, 'So_u10', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Sx_u10', & + call addmrg(fldListTo(compatm)%fields , 'Sx_u10', & mrg_from=compmed, mrg_fld='So_u10', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds , 'Sl_qref') - call addfld(fldListFr(compice)%flds , 'Si_qref') - call addfld(fldListMed_aoflux%flds , 'So_qref') - call addfld(fldListTo(compatm)%flds , 'Sx_qref') + call addfld(fldListFr(complnd)%fields , 'Sl_qref') + call addfld(fldListFr(compice)%fields , 'Si_qref') + call addfld(fldListMed_aoflux%fields , 'So_qref') + call addfld(fldListTo(compatm)%fields , 'Sx_qref') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_qref', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_qref', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Sl_qref', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_qref', & + call addmap(fldListFr(complnd)%fields , 'Sl_qref', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_qref', & mrg_from=complnd, mrg_fld='Sl_qref', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_qref', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Si_qref', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_qref', & + call addmap(fldListFr(compice)%fields , 'Si_qref', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_qref', & mrg_from=compice, mrg_fld='Si_qref', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_qref', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds, 'So_qref', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields, 'So_qref', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Sx_qref', & + call addmrg(fldListTo(compatm)%fields , 'Sx_qref', & mrg_from=compmed, mrg_fld='So_qref', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -975,27 +975,27 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds , 'Sl_qref_wiso') - call addfld(fldListFr(compice)%flds , 'Si_qref_wiso') - call addfld(fldListMed_aoflux%flds , 'So_qref_wiso') - call addfld(fldListTo(compatm)%flds , 'Sx_qref_wiso') + call addfld(fldListFr(complnd)%fields , 'Sl_qref_wiso') + call addfld(fldListFr(compice)%fields , 'Si_qref_wiso') + call addfld(fldListMed_aoflux%fields , 'So_qref_wiso') + call addfld(fldListTo(compatm)%fields , 'Sx_qref_wiso') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_qref_wiso', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_qref_wiso', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Sl_qref_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_qref_wiso', & + call addmap(fldListFr(complnd)%fields , 'Sl_qref_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_qref_wiso', & mrg_from=complnd, mrg_fld='Sl_qref_wiso', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_qref_wiso', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Si_qref_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_qref_wiso', & + call addmap(fldListFr(compice)%fields , 'Si_qref_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_qref_wiso', & mrg_from=compice, mrg_fld='Si_qref_wiso', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_qref_wiso', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds , 'So_qref_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) ! map ocn->atm + call addmap(fldListMed_aoflux%fields , 'So_qref_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) ! map ocn->atm end if - call addmrg(fldListTo(compatm)%flds , 'Sx_qref_wiso', & + call addmrg(fldListTo(compatm)%fields , 'Sx_qref_wiso', & mrg_from=compmed, mrg_fld='So_qref_wiso', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1009,81 +1009,81 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: merged reference specific water isoptope humidity at 2 meters ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds , 'Sl_tref') - call addfld(fldListFr(compice)%flds , 'Si_tref') - call addfld(fldListMed_aoflux%flds , 'So_tref') - call addfld(fldListTo(compatm)%flds , 'Sx_tref') + call addfld(fldListFr(complnd)%fields , 'Sl_tref') + call addfld(fldListFr(compice)%fields , 'Si_tref') + call addfld(fldListMed_aoflux%fields , 'So_tref') + call addfld(fldListTo(compatm)%fields , 'Sx_tref') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_tref', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_tref', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Sl_tref', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_tref', & + call addmap(fldListFr(complnd)%fields , 'Sl_tref', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_tref', & mrg_from=complnd, mrg_fld='Sl_tref', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_tref', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Si_tref', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_tref', & + call addmap(fldListFr(compice)%fields , 'Si_tref', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_tref', & mrg_from=compice, mrg_fld='Si_tref', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_tref', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds , 'So_tref', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields , 'So_tref', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Sx_tref', & + call addmrg(fldListTo(compatm)%fields , 'Sx_tref', & mrg_from=compmed, mrg_fld='So_tref', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds , 'Sl_u10') - call addfld(fldListFr(compice)%flds , 'Si_u10') - call addfld(fldListMed_aoflux%flds , 'So_u10') - call addfld(fldListTo(compatm)%flds , 'Sx_u10') + call addfld(fldListFr(complnd)%fields , 'Sl_u10') + call addfld(fldListFr(compice)%fields , 'Si_u10') + call addfld(fldListMed_aoflux%fields , 'So_u10') + call addfld(fldListTo(compatm)%fields , 'Sx_u10') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_u10', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_u10', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Sl_u10', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_u10', & + call addmap(fldListFr(complnd)%fields , 'Sl_u10', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_u10', & mrg_from=complnd, mrg_fld='Sl_u10', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_u10', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Si_u10', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_u10', & + call addmap(fldListFr(compice)%fields , 'Si_u10', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_u10', & mrg_from=compice, mrg_fld='Si_u10', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_u10', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds, 'So_u10', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields, 'So_u10', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Sx_u10', & + call addmrg(fldListTo(compatm)%fields , 'Sx_u10', & mrg_from=compmed, mrg_fld='So_u10', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds , 'Sl_qref') - call addfld(fldListFr(compice)%flds , 'Si_qref') - call addfld(fldListMed_aoflux%flds , 'So_qref') - call addfld(fldListTo(compatm)%flds , 'Sx_qref') + call addfld(fldListFr(complnd)%fields , 'Sl_qref') + call addfld(fldListFr(compice)%fields , 'Si_qref') + call addfld(fldListMed_aoflux%fields , 'So_qref') + call addfld(fldListTo(compatm)%fields , 'Sx_qref') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_qref', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_qref', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Sl_qref', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_qref', & + call addmap(fldListFr(complnd)%fields , 'Sl_qref', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_qref', & mrg_from=complnd, mrg_fld='Sl_qref', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_qref', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Si_qref', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_qref', & + call addmap(fldListFr(compice)%fields , 'Si_qref', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_qref', & mrg_from=compice, mrg_fld='Si_qref', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_qref', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds, 'So_qref', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields, 'So_qref', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Sx_qref', & + call addmrg(fldListTo(compatm)%fields , 'Sx_qref', & mrg_from=compmed, mrg_fld='So_qref', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1091,27 +1091,27 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds , 'Sl_qref_wiso') - call addfld(fldListFr(compice)%flds , 'Si_qref_wiso') - call addfld(fldListMed_aoflux%flds , 'So_qref_wiso') - call addfld(fldListTo(compatm)%flds , 'Sx_qref_wiso') + call addfld(fldListFr(complnd)%fields , 'Sl_qref_wiso') + call addfld(fldListFr(compice)%fields , 'Si_qref_wiso') + call addfld(fldListMed_aoflux%fields , 'So_qref_wiso') + call addfld(fldListTo(compatm)%fields , 'Sx_qref_wiso') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_qref_wiso', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_qref_wiso', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Sl_qref_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_qref_wiso', & + call addmap(fldListFr(complnd)%fields , 'Sl_qref_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_qref_wiso', & mrg_from=complnd, mrg_fld='Sl_qref_wiso', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_qref_wiso', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Si_qref_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Sx_qref_wiso', & + call addmap(fldListFr(compice)%fields , 'Si_qref_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Sx_qref_wiso', & mrg_from=compice, mrg_fld='Si_qref_wiso', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_qref_wiso', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds, 'So_qref_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields, 'So_qref_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Sx_qref_wiso', & + call addmrg(fldListTo(compatm)%fields , 'Sx_qref_wiso', & mrg_from=compmed, mrg_fld='So_qref_wiso', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1127,162 +1127,162 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: evaporation water flux from water isotopes ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListTo(compatm)%flds, 'Faxx_taux') - call addfld(fldListFr(complnd)%flds, 'Fall_taux') - call addfld(fldListFr(compice)%flds, 'Faii_taux') - call addfld(fldListMed_aoflux%flds , 'Faox_taux') + call addfld(fldListTo(compatm)%fields, 'Faxx_taux') + call addfld(fldListFr(complnd)%fields, 'Fall_taux') + call addfld(fldListFr(compice)%fields, 'Faii_taux') + call addfld(fldListMed_aoflux%fields , 'Faox_taux') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_taux', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_taux', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Fall_taux', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_taux', & + call addmap(fldListFr(complnd)%fields , 'Fall_taux', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_taux', & mrg_from=complnd, mrg_fld='Fall_taux', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_taux', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Faii_taux', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_taux', & + call addmap(fldListFr(compice)%fields , 'Faii_taux', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_taux', & mrg_from=compice, mrg_fld='Faii_taux', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_taux', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds , 'Faox_taux', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields , 'Faox_taux', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Faxx_taux', & + call addmrg(fldListTo(compatm)%fields , 'Faxx_taux', & mrg_from=compmed, mrg_fld='Faox_taux', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListTo(compatm)%flds, 'Faxx_tauy') - call addfld(fldListFr(complnd)%flds, 'Fall_tauy') - call addfld(fldListFr(compice)%flds, 'Faii_tauy') - call addfld(fldListMed_aoflux%flds , 'Faox_tauy') + call addfld(fldListTo(compatm)%fields, 'Faxx_tauy') + call addfld(fldListFr(complnd)%fields, 'Fall_tauy') + call addfld(fldListFr(compice)%fields, 'Faii_tauy') + call addfld(fldListMed_aoflux%fields , 'Faox_tauy') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_tauy', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_tauy', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Fall_tauy', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_tauy', & + call addmap(fldListFr(complnd)%fields , 'Fall_tauy', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_tauy', & mrg_from=complnd, mrg_fld='Fall_tauy', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_tauy', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Faii_tauy', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_tauy', & + call addmap(fldListFr(compice)%fields , 'Faii_tauy', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_tauy', & mrg_from=compice, mrg_fld='Faii_tauy', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_tauy', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds , 'Faox_tauy', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields , 'Faox_tauy', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Faxx_tauy', & + call addmrg(fldListTo(compatm)%fields , 'Faxx_tauy', & mrg_from=compmed, mrg_fld='Faox_tauy', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListTo(compatm)%flds, 'Faxx_lat') - call addfld(fldListFr(complnd)%flds, 'Fall_lat') - call addfld(fldListFr(compice)%flds, 'Faii_lat') - call addfld(fldListMed_aoflux%flds , 'Faox_lat') + call addfld(fldListTo(compatm)%fields, 'Faxx_lat') + call addfld(fldListFr(complnd)%fields, 'Fall_lat') + call addfld(fldListFr(compice)%fields, 'Faii_lat') + call addfld(fldListMed_aoflux%fields , 'Faox_lat') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_lat', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_lat', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Fall_lat', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_lat', & + call addmap(fldListFr(complnd)%fields , 'Fall_lat', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_lat', & mrg_from=complnd, mrg_fld='Fall_lat', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_lat', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Faii_lat', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_lat', & + call addmap(fldListFr(compice)%fields , 'Faii_lat', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_lat', & mrg_from=compice, mrg_fld='Faii_lat', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_lat', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds , 'Faox_lat', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields , 'Faox_lat', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Faxx_lat', & + call addmrg(fldListTo(compatm)%fields , 'Faxx_lat', & mrg_from=compmed, mrg_fld='Faox_lat', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListTo(compatm)%flds, 'Faxx_sen') - call addfld(fldListFr(complnd)%flds, 'Fall_sen') - call addfld(fldListFr(compice)%flds, 'Faii_sen') - call addfld(fldListMed_aoflux%flds , 'Faox_sen') + call addfld(fldListTo(compatm)%fields, 'Faxx_sen') + call addfld(fldListFr(complnd)%fields, 'Fall_sen') + call addfld(fldListFr(compice)%fields, 'Faii_sen') + call addfld(fldListMed_aoflux%fields , 'Faox_sen') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_sen', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_sen', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Fall_sen', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_sen', & + call addmap(fldListFr(complnd)%fields , 'Fall_sen', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_sen', & mrg_from=complnd, mrg_fld='Fall_sen', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_sen', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Faii_sen', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_sen', & + call addmap(fldListFr(compice)%fields , 'Faii_sen', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_sen', & mrg_from=compice, mrg_fld='Faii_sen', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_sen', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds , 'Faox_sen', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields , 'Faox_sen', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Faxx_sen', & + call addmrg(fldListTo(compatm)%fields , 'Faxx_sen', & mrg_from=compmed, mrg_fld='Faox_sen', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListTo(compatm)%flds, 'Faxx_evap') - call addfld(fldListFr(complnd)%flds, 'Fall_evap') - call addfld(fldListFr(compice)%flds, 'Faii_evap') - call addfld(fldListMed_aoflux%flds , 'Faox_evap') + call addfld(fldListTo(compatm)%fields, 'Faxx_evap') + call addfld(fldListFr(complnd)%fields, 'Fall_evap') + call addfld(fldListFr(compice)%fields, 'Faii_evap') + call addfld(fldListMed_aoflux%fields , 'Faox_evap') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_evap', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_evap', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Fall_evap', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_evap', & + call addmap(fldListFr(complnd)%fields , 'Fall_evap', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_evap', & mrg_from=complnd, mrg_fld='Fall_evap', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_evap', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Faii_evap', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_evap', & + call addmap(fldListFr(compice)%fields , 'Faii_evap', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_evap', & mrg_from=compice, mrg_fld='Faii_evap', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_evap', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds , 'Faox_evap', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields , 'Faox_evap', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Faxx_evap', & + call addmrg(fldListTo(compatm)%fields , 'Faxx_evap', & mrg_from=compmed, mrg_fld='Faox_evap', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListTo(compatm)%flds, 'Faxx_lwup') - call addfld(fldListFr(complnd)%flds, 'Fall_lwup') - call addfld(fldListFr(compice)%flds, 'Faii_lwup') - call addfld(fldListMed_aoflux%flds , 'Faox_lwup') + call addfld(fldListTo(compatm)%fields, 'Faxx_lwup') + call addfld(fldListFr(complnd)%fields, 'Fall_lwup') + call addfld(fldListFr(compice)%fields, 'Faii_lwup') + call addfld(fldListMed_aoflux%fields , 'Faox_lwup') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_lwup', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_lwup', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Fall_lwup', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_lwup', & + call addmap(fldListFr(complnd)%fields , 'Fall_lwup', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_lwup', & mrg_from=complnd, mrg_fld='Fall_lwup', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_lwup', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Faii_lwup', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_lwup', & + call addmap(fldListFr(compice)%fields , 'Faii_lwup', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_lwup', & mrg_from=compice, mrg_fld='Faii_lwup', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_lwup', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds, 'Faox_lwup', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields, 'Faox_lwup', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds, 'Faxx_lwup', & + call addmrg(fldListTo(compatm)%fields, 'Faxx_lwup', & mrg_from=compmed, mrg_fld='Faox_lwup', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1290,27 +1290,27 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListTo(compatm)%flds, 'Faxx_evap_wiso') - call addfld(fldListFr(complnd)%flds, 'Fall_evap_wiso') - call addfld(fldListFr(compice)%flds, 'Faii_evap_wiso') - call addfld(fldListMed_aoflux%flds , 'Faox_evap_wiso') + call addfld(fldListTo(compatm)%fields, 'Faxx_evap_wiso') + call addfld(fldListFr(complnd)%fields, 'Fall_evap_wiso') + call addfld(fldListFr(compice)%fields, 'Faii_evap_wiso') + call addfld(fldListMed_aoflux%fields , 'Faox_evap_wiso') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_evap_wiso', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_evap_wiso', rc=rc)) then - call addmap(fldListFr(complnd)%flds , 'Fall_evap_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_evap_wiso', & + call addmap(fldListFr(complnd)%fields , 'Fall_evap_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_evap_wiso', & mrg_from=complnd, mrg_fld='Fall_evap_wiso', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_evap_wiso', rc=rc)) then - call addmap(fldListFr(compice)%flds , 'Faii_evap_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds , 'Faxx_evap_wiso', & + call addmap(fldListFr(compice)%fields , 'Faii_evap_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields , 'Faxx_evap_wiso', & mrg_from=compice, mrg_fld='Faii_evap_wiso', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_evap_wiso', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds, 'Faox_evap_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields, 'Faox_evap_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'Faxx_evap_wiso', & + call addmrg(fldListTo(compatm)%fields , 'Faxx_evap_wiso', & mrg_from=compmed, mrg_fld='Faox_evap_wiso', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1321,31 +1321,31 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: merged surface temperature and unmerged temperatures from ice and ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_t') - call addfld(fldListFr(compice)%flds, 'Si_t') - call addfld(fldListFr(compocn)%flds, 'So_t') - call addfld(fldListTo(compatm)%flds, 'So_t') - call addfld(fldListTo(compatm)%flds, 'Sx_t') + call addfld(fldListFr(complnd)%fields, 'Sl_t') + call addfld(fldListFr(compice)%fields, 'Si_t') + call addfld(fldListFr(compocn)%fields, 'So_t') + call addfld(fldListTo(compatm)%fields, 'So_t') + call addfld(fldListTo(compatm)%fields, 'Sx_t') else if (fldchk(is_local%wrap%FBexp(compatm), 'Sx_t', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_t', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Sl_t', compatm, mapconsf , 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_t', & + call addmap(fldListFr(complnd)%fields, 'Sl_t', compatm, mapconsf , 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_t', & mrg_from=complnd, mrg_fld='Sl_t', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_t', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Si_t', compatm, mapconsf , 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_t', & + call addmap(fldListFr(compice)%fields, 'Si_t', compatm, mapconsf , 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_t', & mrg_from=compice, mrg_fld='Si_t', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_t', rc=rc)) then - call addmap(fldListFr(compocn)%flds, 'So_t', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sx_t', & + call addmap(fldListFr(compocn)%fields, 'So_t', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sx_t', & mrg_from=compocn, mrg_fld='So_t', mrg_type='merge', mrg_fracname='ofrac') end if end if if (fldchk(is_local%wrap%FBexp(compatm), 'So_t', rc=rc)) then - call addmrg(fldListTo(compatm)%flds, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') + call addmrg(fldListTo(compatm)%fields, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') end if end if @@ -1355,33 +1355,33 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: mean snow volume per unit area from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'Si_snowh') - call addfld(fldListTo(compatm)%flds, 'Si_snowh') + call addfld(fldListFr(compice)%fields, 'Si_snowh') + call addfld(fldListTo(compatm)%fields, 'Si_snowh') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Si_snowh', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Si_snowh', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Si_snowh', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Si_snowh', mrg_from=compice, mrg_fld='Si_snowh', mrg_type='copy') + call addmap(fldListFr(compice)%fields, 'Si_snowh', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Si_snowh', mrg_from=compice, mrg_fld='Si_snowh', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'Si_vice') - call addfld(fldListTo(compatm)%flds, 'Si_vice') + call addfld(fldListFr(compice)%fields, 'Si_vice') + call addfld(fldListTo(compatm)%fields, 'Si_vice') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Si_vice', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Si_vice', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Si_vice', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Si_vice', mrg_from=compice, mrg_fld='Si_vice', mrg_type='copy') + call addmap(fldListFr(compice)%fields, 'Si_vice', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Si_vice', mrg_from=compice, mrg_fld='Si_vice', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'Si_vsno') - call addfld(fldListTo(compatm)%flds, 'Si_vsno') + call addfld(fldListFr(compice)%fields, 'Si_vsno') + call addfld(fldListTo(compatm)%fields, 'Si_vsno') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Si_vsno', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Si_vsno', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Si_vsno', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Si_vsno', mrg_from=compice, mrg_fld='Si_vsno', mrg_type='copy') + call addmap(fldListFr(compice)%fields, 'Si_vsno', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Si_vsno', mrg_from=compice, mrg_fld='Si_vsno', mrg_type='copy') end if end if @@ -1391,39 +1391,39 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface fraction velocity from med aoflux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListMed_aoflux%flds , 'So_ssq') - call addfld(fldListTo(compatm)%flds , 'So_ssq') + call addfld(fldListMed_aoflux%fields , 'So_ssq') + call addfld(fldListTo(compatm)%fields , 'So_ssq') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'So_ssq', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'So_ssq', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds , 'So_ssq', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields , 'So_ssq', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'So_ssq', mrg_from=compmed, mrg_fld='So_ssq', mrg_type='copy') + call addmrg(fldListTo(compatm)%fields , 'So_ssq', mrg_from=compmed, mrg_fld='So_ssq', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListMed_aoflux%flds , 'So_re') - call addfld(fldListTo(compatm)%flds , 'So_re') + call addfld(fldListMed_aoflux%fields , 'So_re') + call addfld(fldListTo(compatm)%fields , 'So_re') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'So_re', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'So_re', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds , 'So_re', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields , 'So_re', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'So_re', mrg_from=compmed, mrg_fld='So_re', mrg_type='copy') + call addmrg(fldListTo(compatm)%fields , 'So_re', mrg_from=compmed, mrg_fld='So_re', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListMed_aoflux%flds , 'So_ustar') - call addfld(fldListTo(compatm)%flds , 'So_ustar') + call addfld(fldListMed_aoflux%fields , 'So_ustar') + call addfld(fldListTo(compatm)%fields , 'So_ustar') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'So_ustar', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'So_ustar', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds , 'So_ustar', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap(fldListMed_aoflux%fields , 'So_ustar', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%flds , 'So_ustar', mrg_from=compmed, mrg_fld='So_ustar', mrg_type='copy') + call addmrg(fldListTo(compatm)%fields , 'So_ustar', mrg_from=compmed, mrg_fld='So_ustar', mrg_type='copy') end if end if @@ -1433,59 +1433,59 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface snow water equivalent from land ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_fv') - call addfld(fldListTo(compatm)%flds, 'Sl_fv') + call addfld(fldListFr(complnd)%fields, 'Sl_fv') + call addfld(fldListTo(compatm)%fields, 'Sl_fv') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_fv', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_fv', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Sl_fv', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sl_fv', mrg_from=complnd, mrg_fld='Sl_fv', mrg_type='copy') + call addmap(fldListFr(complnd)%fields, 'Sl_fv', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sl_fv', mrg_from=complnd, mrg_fld='Sl_fv', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_ram1') - call addfld(fldListTo(compatm)%flds, 'Sl_ram1') + call addfld(fldListFr(complnd)%fields, 'Sl_ram1') + call addfld(fldListTo(compatm)%fields, 'Sl_ram1') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_ram1', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_ram1', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Sl_ram1', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sl_ram1', mrg_from=complnd, mrg_fld='Sl_ram1', mrg_type='copy') + call addmap(fldListFr(complnd)%fields, 'Sl_ram1', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sl_ram1', mrg_from=complnd, mrg_fld='Sl_ram1', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_snowh') - call addfld(fldListTo(compatm)%flds, 'Sl_snowh') + call addfld(fldListFr(complnd)%fields, 'Sl_snowh') + call addfld(fldListTo(compatm)%fields, 'Sl_snowh') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_snowh', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_snowh', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Sl_snowh', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sl_snowh', mrg_from=complnd, mrg_fld='Sl_snowh', mrg_type='copy') + call addmap(fldListFr(complnd)%fields, 'Sl_snowh', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sl_snowh', mrg_from=complnd, mrg_fld='Sl_snowh', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! CARMA fields (volumetric soil water) !----------------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_soilw') - call addfld(fldListTo(compatm)%flds, 'Sl_soilw') + call addfld(fldListFr(complnd)%fields, 'Sl_soilw') + call addfld(fldListTo(compatm)%fields, 'Sl_soilw') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_soilw', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_soilw', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Sl_soilw', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sl_soilw', mrg_from=complnd, mrg_fld='Sl_soilw', mrg_type='copy') + call addmap(fldListFr(complnd)%fields, 'Sl_soilw', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sl_soilw', mrg_from=complnd, mrg_fld='Sl_soilw', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to atm: dust fluxes from land (4 sizes) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Fall_flxdst') - call addfld(fldListTo(compatm)%flds, 'Fall_flxdst') + call addfld(fldListFr(complnd)%fields, 'Fall_flxdst') + call addfld(fldListTo(compatm)%fields, 'Fall_flxdst') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Fall_flxdst', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Fall_flxdst', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Fall_flxdst', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Fall_flxdst', & + call addmap(fldListFr(complnd)%fields, 'Fall_flxdst', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Fall_flxdst', & mrg_from=complnd, mrg_fld='Fall_flxdst', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -1493,13 +1493,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: MEGAN emissions fluxes from land !----------------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Fall_voc') - call addfld(fldListTo(compatm)%flds, 'Fall_voc') + call addfld(fldListFr(complnd)%fields, 'Fall_voc') + call addfld(fldListTo(compatm)%fields, 'Fall_voc') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Fall_voc', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Fall_voc', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Fall_voc', compatm, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(compatm)%flds, 'Fall_voc', & + call addmap(fldListFr(complnd)%fields, 'Fall_voc', compatm, mapconsf, 'one', atm2lnd_map) + call addmrg(fldListTo(compatm)%fields, 'Fall_voc', & mrg_from=complnd, mrg_fld='Fall_voc', mrg_type='merge', mrg_fracname='lfrac') end if end if @@ -1508,38 +1508,38 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !----------------------------------------------------------------------------- ! 'wild fire emission fluxes' if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Fall_fire') - call addfld(fldListTo(compatm)%flds, 'Fall_fire') + call addfld(fldListFr(complnd)%fields, 'Fall_fire') + call addfld(fldListTo(compatm)%fields, 'Fall_fire') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Fall_fire', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Fall_fire', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Fall_fire', compatm, mapconsf, 'one', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Fall_fire', & + call addmap(fldListFr(complnd)%fields, 'Fall_fire', compatm, mapconsf, 'one', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Fall_fire', & mrg_from=complnd, mrg_fld='Fall_fire', mrg_type='merge', mrg_fracname='lfrac') end if end if ! 'wild fire plume height' if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_fztop') - call addfld(fldListTo(compatm)%flds, 'Sl_fztop') + call addfld(fldListFr(complnd)%fields, 'Sl_fztop') + call addfld(fldListTo(compatm)%fields, 'Sl_fztop') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Sl_fztop', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Sl_fztop', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Sl_fztop', compatm, mapconsf, 'one', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sl_fztop', mrg_from=complnd, mrg_fld='Sl_fztop', mrg_type='copy') + call addmap(fldListFr(complnd)%fields, 'Sl_fztop', compatm, mapconsf, 'one', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sl_fztop', mrg_from=complnd, mrg_fld='Sl_fztop', mrg_type='copy') end if end if !----------------------------------------------------------------------------- ! to atm: dry deposition velocities from land !----------------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_ddvel') - call addfld(fldListTo(compatm)%flds, 'Sl_ddvel') + call addfld(fldListFr(complnd)%fields, 'Sl_ddvel') + call addfld(fldListTo(compatm)%fields, 'Sl_ddvel') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Sl_ddvel', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Sl_ddvel', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Sl_ddvel', compatm, mapconsf, 'one', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Sl_ddvel', mrg_from=complnd, mrg_fld='Sl_ddvel', mrg_type='copy') + call addmap(fldListFr(complnd)%fields, 'Sl_ddvel', compatm, mapconsf, 'one', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Sl_ddvel', mrg_from=complnd, mrg_fld='Sl_ddvel', mrg_type='copy') end if end if @@ -1551,11 +1551,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: fractional ice coverage wrt ocean from ice !---------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'Si_ifrac') - call addfld(fldListTo(compocn)%flds, 'Si_ifrac') + call addfld(fldListFr(compice)%fields, 'Si_ifrac') + call addfld(fldListTo(compocn)%fields, 'Si_ifrac') else - call addmap(fldListFr(compice)%flds, 'Si_ifrac', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') + call addmap(fldListFr(compice)%fields, 'Si_ifrac', compocn, mapfcopy, 'unset', 'unset') + call addmrg(fldListTo(compocn)%fields, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') end if ! --------------------------------------------------------------------- @@ -1566,57 +1566,57 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: downward diffuse visible incident solar radiation from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_lwdn') - call addfld(fldListTo(compocn)%flds, 'Faxa_lwdn') + call addfld(fldListFr(compatm)%fields, 'Faxa_lwdn') + call addfld(fldListTo(compocn)%fields, 'Faxa_lwdn') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_lwdn', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwdn', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_lwdn', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_lwdn', & + call addmap(fldListFr(compatm)%fields, 'Faxa_lwdn', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_lwdn', & mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swndr') - call addfld(fldListTo(compocn)%flds, 'Faxa_swndr') + call addfld(fldListFr(compatm)%fields, 'Faxa_swndr') + call addfld(fldListTo(compocn)%fields, 'Faxa_swndr') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swndr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swndr', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swndr', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_swndr', & + call addmap(fldListFr(compatm)%fields, 'Faxa_swndr', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_swndr', & mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swndf') - call addfld(fldListTo(compocn)%flds, 'Faxa_swndf') + call addfld(fldListFr(compatm)%fields, 'Faxa_swndf') + call addfld(fldListTo(compocn)%fields, 'Faxa_swndf') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swndf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swndf', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swndf', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_swndf', & + call addmap(fldListFr(compatm)%fields, 'Faxa_swndf', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_swndf', & mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swvdr') - call addfld(fldListTo(compocn)%flds, 'Faxa_swvdr') + call addfld(fldListFr(compatm)%fields, 'Faxa_swvdr') + call addfld(fldListTo(compocn)%fields, 'Faxa_swvdr') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swvdr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swvdr', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swvdr', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_swvdr', & + call addmap(fldListFr(compatm)%fields, 'Faxa_swvdr', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_swvdr', & mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swvdf') - call addfld(fldListTo(compocn)%flds, 'Faxa_swvdf') + call addfld(fldListFr(compatm)%fields, 'Faxa_swvdf') + call addfld(fldListTo(compocn)%fields, 'Faxa_swvdf') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swvdf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swvdf', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swvdf', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_swvdf', & + call addmap(fldListFr(compatm)%fields, 'Faxa_swvdf', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_swvdf', & mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -1625,12 +1625,12 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: surface upward longwave heat flux from mediator ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListMed_aoflux%flds , 'Faox_lwup') - call addfld(fldListTo(compocn)%flds , 'Foxx_lwup') + call addfld(fldListMed_aoflux%fields , 'Faox_lwup') + call addfld(fldListTo(compocn)%fields , 'Foxx_lwup') else if ( fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_lwup', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn), 'Foxx_lwup', rc=rc)) then - call addmrg(fldListTo(compocn)%flds, 'Foxx_lwup', & + call addmrg(fldListTo(compocn)%fields, 'Foxx_lwup', & mrg_from=compmed, mrg_fld='Faox_lwup', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1638,18 +1638,18 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: merged longwave net heat flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds , 'Faxa_lwdn') - call addfld(fldListMed_aoflux%flds , 'Faox_lwup' ) - call addfld(fldListTo(compocn)%flds , 'Foxx_lwnet') + call addfld(fldListFr(compatm)%fields , 'Faxa_lwdn') + call addfld(fldListMed_aoflux%fields , 'Faox_lwup' ) + call addfld(fldListTo(compocn)%fields , 'Foxx_lwnet') else ! (mom6) (send longwave net to ocn via auto merge) if ( fldchk(is_local%wrap%FBExp(compocn) , 'Foxx_lwnet', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'Faox_lwup' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwdn' , rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_lwdn', compocn, mapconsf, 'one' , atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Foxx_lwnet', & + call addmap(fldListFr(compatm)%fields, 'Faxa_lwdn', compocn, mapconsf, 'one' , atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Foxx_lwnet', & mrg_from=compmed, mrg_fld='Faox_lwup', mrg_type='merge', mrg_fracname='ofrac') - call addmrg(fldListTo(compocn)%flds, 'Foxx_lwnet', & + call addmrg(fldListTo(compocn)%fields, 'Foxx_lwnet', & mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1657,13 +1657,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: downward shortwave heat flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swdn') - call addfld(fldListTo(compocn)%flds, 'Faxa_swdn') + call addfld(fldListFr(compatm)%fields, 'Faxa_swdn') + call addfld(fldListTo(compocn)%fields, 'Faxa_swdn') else if (fldchk(is_local%wrap%FBImp(compatm, compatm), 'Faxa_swdn', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swdn', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swdn', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_swdn', & + call addmap(fldListFr(compatm)%fields, 'Faxa_swdn', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_swdn', & mrg_from=compatm, mrg_fld='Faxa_swdn', mrg_type='copy') end if end if @@ -1671,28 +1671,28 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: net shortwave radiation from med ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swvdr') - call addfld(fldListFr(compatm)%flds, 'Faxa_swndr') - call addfld(fldListFr(compatm)%flds, 'Faxa_swvdf') - call addfld(fldListFr(compatm)%flds, 'Faxa_swndf') + call addfld(fldListFr(compatm)%fields, 'Faxa_swvdr') + call addfld(fldListFr(compatm)%fields, 'Faxa_swndr') + call addfld(fldListFr(compatm)%fields, 'Faxa_swvdf') + call addfld(fldListFr(compatm)%fields, 'Faxa_swndf') - call addfld(fldListFr(compice)%flds, 'Fioi_swpen') - call addfld(fldListFr(compice)%flds, 'Fioi_swpen_vdr') - call addfld(fldListFr(compice)%flds, 'Fioi_swpen_vdf') - call addfld(fldListFr(compice)%flds, 'Fioi_swpen_idr') - call addfld(fldListFr(compice)%flds, 'Fioi_swpen_idf') + call addfld(fldListFr(compice)%fields, 'Fioi_swpen') + call addfld(fldListFr(compice)%fields, 'Fioi_swpen_vdr') + call addfld(fldListFr(compice)%fields, 'Fioi_swpen_vdf') + call addfld(fldListFr(compice)%fields, 'Fioi_swpen_idr') + call addfld(fldListFr(compice)%fields, 'Fioi_swpen_idf') - call addfld(fldListTo(compocn)%flds, 'Foxx_swnet') - call addfld(fldListTo(compocn)%flds, 'Foxx_swnet_vdr') - call addfld(fldListTo(compocn)%flds, 'Foxx_swnet_vdf') - call addfld(fldListTo(compocn)%flds, 'Foxx_swnet_idr') - call addfld(fldListTo(compocn)%flds, 'Foxx_swnet_idf') + call addfld(fldListTo(compocn)%fields, 'Foxx_swnet') + call addfld(fldListTo(compocn)%fields, 'Foxx_swnet_vdr') + call addfld(fldListTo(compocn)%fields, 'Foxx_swnet_vdf') + call addfld(fldListTo(compocn)%fields, 'Foxx_swnet_idr') + call addfld(fldListTo(compocn)%fields, 'Foxx_swnet_idf') else ! Net shortwave ocean (custom calculation in prep_phases_ocn_mod.F90) ! import swpen from ice without bands if (fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_swpen', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Fioi_swpen', compocn, mapfcopy, 'unset', 'unset') + call addmap(fldListFr(compice)%fields, 'Fioi_swpen', compocn, mapfcopy, 'unset', 'unset') end if ! import swpen from ice by bands @@ -1700,10 +1700,10 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_swpen_vdf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_swpen_idr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_swpen_idf', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Fioi_swpen_vdr', compocn, mapfcopy, 'unset', 'unset') - call addmap(fldListFr(compice)%flds, 'Fioi_swpen_vdf', compocn, mapfcopy, 'unset', 'unset') - call addmap(fldListFr(compice)%flds, 'Fioi_swpen_idr', compocn, mapfcopy, 'unset', 'unset') - call addmap(fldListFr(compice)%flds, 'Fioi_swpen_idf', compocn, mapfcopy, 'unset', 'unset') + call addmap(fldListFr(compice)%fields, 'Fioi_swpen_vdr', compocn, mapfcopy, 'unset', 'unset') + call addmap(fldListFr(compice)%fields, 'Fioi_swpen_vdf', compocn, mapfcopy, 'unset', 'unset') + call addmap(fldListFr(compice)%fields, 'Fioi_swpen_idr', compocn, mapfcopy, 'unset', 'unset') + call addmap(fldListFr(compice)%fields, 'Fioi_swpen_idf', compocn, mapfcopy, 'unset', 'unset') end if ! import sw from atm by bands @@ -1716,10 +1716,10 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) fldchk(is_local%wrap%FBExp(compocn), 'Foxx_swnet_vdf', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn), 'Foxx_swnet_idr', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn), 'Foxx_swnet_idf', rc=rc))) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swvdr', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Faxa_swvdf', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Faxa_swndr', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Faxa_swndf', compocn, mapconsf, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_swvdr', compocn, mapconsf, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_swvdf', compocn, mapconsf, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_swndr', compocn, mapconsf, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_swndf', compocn, mapconsf, 'one', atm2ocn_map) end if end if @@ -1729,27 +1729,27 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_i2o_per_cat) then if (phase == 'advertise') then ! 'fractional ice coverage wrt ocean for each thickness category ' - call addfld(fldListFr(compice)%flds, 'Si_ifrac_n') - call addfld(fldListTo(compocn)%flds, 'Si_ifrac_n') + call addfld(fldListFr(compice)%fields, 'Si_ifrac_n') + call addfld(fldListTo(compocn)%fields, 'Si_ifrac_n') ! net shortwave radiation penetrating into ocean for each thickness category - call addfld(fldListFr(compice)%flds, 'Fioi_swpen_ifrac_n') - call addfld(fldListTo(compocn)%flds, 'Fioi_swpen_ifrac_n') + call addfld(fldListFr(compice)%fields, 'Fioi_swpen_ifrac_n') + call addfld(fldListTo(compocn)%fields, 'Fioi_swpen_ifrac_n') ! 'fractional atmosphere coverage wrt ocean' (computed in med_phases_prep_ocn) - call addfld(fldListTo(compocn)%flds, 'Sf_afrac') + call addfld(fldListTo(compocn)%fields, 'Sf_afrac') ! 'fractional atmosphere coverage used in radiation computations wrt ocean' (computed in med_phases_prep_ocn) - call addfld(fldListTo(compocn)%flds, 'Sf_afracr') + call addfld(fldListTo(compocn)%fields, 'Sf_afracr') ! 'net shortwave radiation times atmosphere fraction' (computed in med_phases_prep_ocn) - call addfld(fldListTo(compocn)%flds, 'Foxx_swnet_afracr') + call addfld(fldListTo(compocn)%fields, 'Foxx_swnet_afracr') else - call addmap(fldListFr(compice)%flds, 'Si_ifrac_n', & + call addmap(fldListFr(compice)%fields, 'Si_ifrac_n', & compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Si_ifrac_n', & + call addmrg(fldListTo(compocn)%fields, 'Si_ifrac_n', & mrg_from=compice, mrg_fld='Si_ifrac_n', mrg_type='copy') - call addmap(fldListFr(compice)%flds, 'Fioi_swpen_ifrac_n', & + call addmap(fldListFr(compice)%fields, 'Fioi_swpen_ifrac_n', & compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Fioi_swpen_ifrac_n', & + call addmrg(fldListTo(compocn)%fields, 'Fioi_swpen_ifrac_n', & mrg_from=compice, mrg_fld='Fioi_swpen_ifrac_n', mrg_type='copy') ! Note that 'Sf_afrac, 'Sf_afracr' and 'Foxx_swnet_afracr' will have explicit merging in med_phases_prep_ocn end if @@ -1761,12 +1761,12 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_rainc') - call addfld(fldListFr(compatm)%flds, 'Faxa_rainl') - call addfld(fldListTo(compocn)%flds, 'Faxa_rain' ) - call addfld(fldListFr(compatm)%flds, 'Faxa_snowc') - call addfld(fldListFr(compatm)%flds, 'Faxa_snowl') - call addfld(fldListTo(compocn)%flds, 'Faxa_snow' ) + call addfld(fldListFr(compatm)%fields, 'Faxa_rainc') + call addfld(fldListFr(compatm)%fields, 'Faxa_rainl') + call addfld(fldListTo(compocn)%fields, 'Faxa_rain' ) + call addfld(fldListFr(compatm)%fields, 'Faxa_snowc') + call addfld(fldListFr(compatm)%fields, 'Faxa_snowl') + call addfld(fldListTo(compocn)%fields, 'Faxa_snow' ) else ! TODO: why are we not merging Faxa_rain and Faxa_snow if they are sent from atm wiht ofrac ! Note that the mediator atm/ocn flux calculation needs Faxa_rainc for the gustiness parameterization @@ -1774,47 +1774,47 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainc', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_rain' , rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_rainl', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Faxa_rainc', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_rain' , mrg_from=compatm, mrg_fld='Faxa_rainc:Faxa_rainl', & + call addmap(fldListFr(compatm)%fields, 'Faxa_rainl', compocn, mapconsf, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_rainc', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_rain' , mrg_from=compatm, mrg_fld='Faxa_rainc:Faxa_rainl', & mrg_type='sum_with_weights', mrg_fracname='ofrac') end if if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_snow' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowc', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_snowl', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Faxa_snowc', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_snow' , & + call addmap(fldListFr(compatm)%fields, 'Faxa_snowl', compocn, mapconsf, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_snowc', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_snow' , & mrg_from=compatm, mrg_fld='Faxa_snowc:Faxa_snowl', mrg_type='sum_with_weights', mrg_fracname='ofrac') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_rainc_wiso') - call addfld(fldListFr(compatm)%flds, 'Faxa_rainl_wiso') - call addfld(fldListTo(compocn)%flds, 'Faxa_rain_wiso' ) - call addfld(fldListFr(compatm)%flds, 'Faxa_snowc_wiso') - call addfld(fldListFr(compatm)%flds, 'Faxa_snowl_wiso') - call addfld(fldListFr(compatm)%flds, 'Faxa_snow_wiso' ) + call addfld(fldListFr(compatm)%fields, 'Faxa_rainc_wiso') + call addfld(fldListFr(compatm)%fields, 'Faxa_rainl_wiso') + call addfld(fldListTo(compocn)%fields, 'Faxa_rain_wiso' ) + call addfld(fldListFr(compatm)%fields, 'Faxa_snowc_wiso') + call addfld(fldListFr(compatm)%fields, 'Faxa_snowl_wiso') + call addfld(fldListFr(compatm)%fields, 'Faxa_snow_wiso' ) else ! Note that the mediator atm/ocn flux calculation needs Faxa_rainc for the gustiness parameterization ! which by default is not actually used if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainl_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainc_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_rain_wiso' , rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_rainl_wiso', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Faxa_rainc_wiso', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_rain_wiso' , & + call addmap(fldListFr(compatm)%fields, 'Faxa_rainl_wiso', compocn, mapconsf, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_rainc_wiso', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_rain_wiso' , & mrg_from=compatm, mrg_fld=trim('Faxa_rainc_wiso')//':'//trim('Faxa_rainl_wiso'), & mrg_type='sum_with_weights', mrg_fracname='ofrac') end if if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_snow_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowl_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowc_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_snowl_wiso', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Faxa_snowc_wiso', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_snow_wiso', & + call addmap(fldListFr(compatm)%fields, 'Faxa_snowl_wiso', compocn, mapconsf, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_snowc_wiso', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_snow_wiso', & mrg_from=compatm, mrg_fld=trim('Faxa_snowc_wiso')//':'//trim('Faxa_snowl_wiso'), & mrg_type='sum_with_weights', mrg_fracname='ofrac') end if @@ -1825,14 +1825,14 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: merged sensible heat flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds , 'Faxa_sen') - call addfld(fldListMed_aoflux%flds , 'Faox_sen') - call addfld(fldListFr(compice)%flds , 'Fioi_melth') - call addfld(fldListTo(compocn)%flds , 'Foxx_sen') + call addfld(fldListFr(compatm)%fields , 'Faxa_sen') + call addfld(fldListMed_aoflux%fields , 'Faox_sen') + call addfld(fldListFr(compice)%fields , 'Fioi_melth') + call addfld(fldListTo(compocn)%fields , 'Foxx_sen') else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_sen', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_sen', rc=rc)) then - call addmrg(fldListTo(compocn)%flds, 'Foxx_sen', & + call addmrg(fldListTo(compocn)%fields, 'Foxx_sen', & mrg_from=compmed, mrg_fld='Faox_sen', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1841,29 +1841,29 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: surface latent heat flux and evaporation water flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_lat' ) - call addfld(fldListMed_aoflux%flds , 'Faox_lat' ) - call addfld(fldListMed_aoflux%flds , 'Faox_evap') - call addfld(fldListTo(compocn)%flds, 'Foxx_lat' ) - call addfld(fldListTo(compocn)%flds, 'Foxx_evap') + call addfld(fldListFr(compatm)%fields, 'Faxa_lat' ) + call addfld(fldListMed_aoflux%fields , 'Faox_lat' ) + call addfld(fldListMed_aoflux%fields , 'Faox_evap') + call addfld(fldListTo(compocn)%fields, 'Foxx_lat' ) + call addfld(fldListTo(compocn)%fields, 'Foxx_evap') else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_lat', rc=rc)) then - call addmrg(fldListTo(compocn)%flds, 'Foxx_lat', & + call addmrg(fldListTo(compocn)%fields, 'Foxx_lat', & mrg_from=compmed, mrg_fld='Faox_lat', mrg_type='merge', mrg_fracname='ofrac') end if if ( fldchk(is_local%wrap%FBExp(compocn), 'Foxx_evap', rc=rc)) then - call addmrg(fldListTo(compocn)%flds, 'Foxx_evap', & + call addmrg(fldListTo(compocn)%fields, 'Foxx_evap', & mrg_from=compmed, mrg_fld='Faox_evap', mrg_type='merge', mrg_fracname='ofrac') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListMed_aoflux%flds , 'Faox_lat_wiso' ) - call addfld(fldListTo(compocn)%flds, 'Foxx_lat_wiso' ) + call addfld(fldListMed_aoflux%fields , 'Faox_lat_wiso' ) + call addfld(fldListTo(compocn)%fields, 'Foxx_lat_wiso' ) else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_lat_wiso', rc=rc)) then - call addmrg(fldListTo(compocn)%flds, 'Foxx_lat_wiso', & + call addmrg(fldListTo(compocn)%fields, 'Foxx_lat_wiso', & mrg_from=compmed, mrg_fld='Faox_lat_wiso', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1876,11 +1876,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! 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 if (phase == 'advertise') then - call addfld(fldListMed_aoflux%flds , 'So_duu10n') - call addfld(fldListTo(compocn)%flds, 'So_duu10n') + call addfld(fldListMed_aoflux%fields , 'So_duu10n') + call addfld(fldListTo(compocn)%fields, 'So_duu10n') else if (fldchk(is_local%wrap%FBExp(compocn), 'So_duu10n', rc=rc)) then - call addmrg(fldListTo(compocn)%flds, 'So_duu10n', mrg_from=compmed, mrg_fld='So_duu10n', mrg_type='copy') + call addmrg(fldListTo(compocn)%fields, 'So_duu10n', mrg_from=compmed, mrg_fld='So_duu10n', mrg_type='copy') end if end if @@ -1888,14 +1888,14 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: sea level pressure from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_pslv') - call addfld(fldListTo(compocn)%flds, 'Sa_pslv') + call addfld(fldListFr(compatm)%fields, 'Sa_pslv') + call addfld(fldListTo(compocn)%fields, 'Sa_pslv') else if ( fldchk(is_local%wrap%FBImp(compatm, compatm), 'Sa_pslv', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Sa_pslv', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_pslv', compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%flds, 'Sa_pslv', compice, mapbilnr, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Sa_pslv', & + call addmap(fldListFr(compatm)%fields, 'Sa_pslv', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_pslv', compice, mapbilnr, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Sa_pslv', & mrg_from=compatm, mrg_fld='Sa_pslv', mrg_type='copy') end if end if @@ -1914,46 +1914,46 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: nitrogen deposition fields (2) from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListTo(compocn)%flds, 'Faxa_bcph') - call addfld(fldListFr(compatm)%flds, 'Faxa_bcph') + call addfld(fldListTo(compocn)%fields, 'Faxa_bcph') + call addfld(fldListFr(compatm)%fields, 'Faxa_bcph') else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_bcph', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_bcph', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_bcph', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_bcph', & + call addmap(fldListFr(compatm)%fields, 'Faxa_bcph', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_bcph', & mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListTo(compocn)%flds, 'Faxa_ocph') - call addfld(fldListFr(compatm)%flds, 'Faxa_ocph') + call addfld(fldListTo(compocn)%fields, 'Faxa_ocph') + call addfld(fldListFr(compatm)%fields, 'Faxa_ocph') else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_ocph', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_ocph', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_ocph', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_ocph', & + call addmap(fldListFr(compatm)%fields, 'Faxa_ocph', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_ocph', & mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListTo(compocn)%flds, 'Faxa_dstwet') - call addfld(fldListFr(compatm)%flds, 'Faxa_dstwet') + call addfld(fldListTo(compocn)%fields, 'Faxa_dstwet') + call addfld(fldListFr(compatm)%fields, 'Faxa_dstwet') else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_dstwet', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_dstwet', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_dstwet', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_dstwet', & + call addmap(fldListFr(compatm)%fields, 'Faxa_dstwet', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_dstwet', & mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListTo(compocn)%flds, 'Faxa_dstdry') - call addfld(fldListFr(compatm)%flds, 'Faxa_dstdry') + call addfld(fldListTo(compocn)%fields, 'Faxa_dstdry') + call addfld(fldListFr(compatm)%fields, 'Faxa_dstdry') else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_dstdry', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_dstdry', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_dstdry', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%flds, 'Faxa_dstdry', & + call addmap(fldListFr(compatm)%fields, 'Faxa_dstdry', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg(fldListTo(compocn)%fields, 'Faxa_dstdry', & mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -1966,44 +1966,44 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! Note - do not need to add addmap or addmrg for the following since they ! will be computed directly in med_phases_prep_ocn if (phase == 'advertise') then - call addfld(fldListTo(compocn)%flds, 'Foxx_hrain') - call addfld(fldListTo(compocn)%flds, 'Foxx_hsnow') - call addfld(fldListTo(compocn)%flds, 'Foxx_hevap') - call addfld(fldListTo(compocn)%flds, 'Foxx_hcond') - call addfld(fldListTo(compocn)%flds, 'Foxx_hrofl') - call addfld(fldListTo(compocn)%flds, 'Foxx_hrofi') + call addfld(fldListTo(compocn)%fields, 'Foxx_hrain') + call addfld(fldListTo(compocn)%fields, 'Foxx_hsnow') + call addfld(fldListTo(compocn)%fields, 'Foxx_hevap') + call addfld(fldListTo(compocn)%fields, 'Foxx_hcond') + call addfld(fldListTo(compocn)%fields, 'Foxx_hrofl') + call addfld(fldListTo(compocn)%fields, 'Foxx_hrofi') end if ! --------------------------------------------------------------------- ! to ocn: merge zonal and meridional surface stress from ice and (atm or med) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListTo(compocn)%flds , 'Foxx_taux') - call addfld(fldListFr(compice)%flds , 'Fioi_taux') - call addfld(fldListMed_aoflux%flds , 'Faox_taux') + call addfld(fldListTo(compocn)%fields , 'Foxx_taux') + call addfld(fldListFr(compice)%fields , 'Fioi_taux') + call addfld(fldListMed_aoflux%fields , 'Faox_taux') else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_taux', rc=rc)) then if (fldchk(is_local%wrap%FBimp(compice,compice), 'Fioi_taux', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Fioi_taux', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Foxx_taux', & + call addmap(fldListFr(compice)%fields, 'Fioi_taux', compocn, mapfcopy, 'unset', 'unset') + call addmrg(fldListTo(compocn)%fields, 'Foxx_taux', & mrg_from=compice, mrg_fld='Fioi_taux', mrg_type='merge', mrg_fracname='ifrac') end if - call addmrg(fldListTo(compocn)%flds, 'Foxx_taux', & + call addmrg(fldListTo(compocn)%fields, 'Foxx_taux', & mrg_from=compmed, mrg_fld='Faox_taux', mrg_type='merge', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListTo(compocn)%flds , 'Foxx_tauy') - call addfld(fldListFr(compice)%flds , 'Fioi_tauy') - call addfld(fldListMed_aoflux%flds , 'Faox_tauy') + call addfld(fldListTo(compocn)%fields , 'Foxx_tauy') + call addfld(fldListFr(compice)%fields , 'Fioi_tauy') + call addfld(fldListMed_aoflux%fields , 'Faox_tauy') else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_tauy', rc=rc)) then if (fldchk(is_local%wrap%FBimp(compice,compice), 'Fioi_tauy', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Fioi_tauy', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Foxx_tauy', & + call addmap(fldListFr(compice)%fields, 'Fioi_tauy', compocn, mapfcopy, 'unset', 'unset') + call addmrg(fldListTo(compocn)%fields, 'Foxx_tauy', & mrg_from=compice, mrg_fld='Fioi_tauy', mrg_type='merge', mrg_fracname='ifrac') end if - call addmrg(fldListTo(compocn)%flds, 'Foxx_tauy', & + call addmrg(fldListTo(compocn)%fields, 'Foxx_tauy', & mrg_from=compmed, mrg_fld='Faox_tauy', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -2011,25 +2011,25 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: water flux due to melting ice from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds , 'Fioi_meltw') - call addfld(fldListTo(compocn)%flds , 'Fioi_meltw') + call addfld(fldListFr(compice)%fields , 'Fioi_meltw') + call addfld(fldListTo(compocn)%fields , 'Fioi_meltw') else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Fioi_meltw', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_meltw', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Fioi_meltw', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Fioi_meltw', & + call addmap(fldListFr(compice)%fields, 'Fioi_meltw', compocn, mapfcopy, 'unset', 'unset') + call addmrg(fldListTo(compocn)%fields, 'Fioi_meltw', & mrg_from=compice, mrg_fld='Fioi_meltw', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds , 'Fioi_meltw_wiso') - call addfld(fldListTo(compocn)%flds , 'Fioi_meltw_wiso') + call addfld(fldListFr(compice)%fields , 'Fioi_meltw_wiso') + call addfld(fldListTo(compocn)%fields , 'Fioi_meltw_wiso') else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Fioi_meltw_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_meltw_wiso', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Fioi_meltw_wiso', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Fioi_meltw_wiso', & + call addmap(fldListFr(compice)%fields, 'Fioi_meltw_wiso', compocn, mapfcopy, 'unset', 'unset') + call addmrg(fldListTo(compocn)%fields, 'Fioi_meltw_wiso', & mrg_from=compice, mrg_fld='Fioi_meltw_wiso', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2038,13 +2038,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: heat flux from melting ice from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'Fioi_melth') - call addfld(fldListTo(compocn)%flds, 'Fioi_melth') + call addfld(fldListFr(compice)%fields, 'Fioi_melth') + call addfld(fldListTo(compocn)%fields, 'Fioi_melth') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_melth', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_melth', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Fioi_melth', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Fioi_melth', & + call addmap(fldListFr(compice)%fields, 'Fioi_melth', compocn, mapfcopy, 'unset', 'unset') + call addmrg(fldListTo(compocn)%fields, 'Fioi_melth', & mrg_from=compice, mrg_fld='Fioi_melth', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2052,13 +2052,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: salt flux from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'Fioi_salt') - call addfld(fldListTo(compocn)%flds, 'Fioi_salt') + call addfld(fldListFr(compice)%fields, 'Fioi_salt') + call addfld(fldListTo(compocn)%fields, 'Fioi_salt') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_salt', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_salt', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Fioi_salt', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Fioi_salt', & + call addmap(fldListFr(compice)%fields, 'Fioi_salt', compocn, mapfcopy, 'unset', 'unset') + call addmrg(fldListTo(compocn)%fields, 'Fioi_salt', & mrg_from=compice, mrg_fld='Fioi_salt', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2066,13 +2066,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: hydrophylic black carbon deposition flux from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'Fioi_bcphi') - call addfld(fldListTo(compocn)%flds, 'Fioi_bcphi') + call addfld(fldListFr(compice)%fields, 'Fioi_bcphi') + call addfld(fldListTo(compocn)%fields, 'Fioi_bcphi') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_bcphi', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_bcphi', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Fioi_bcphi', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Fioi_bcphi', & + call addmap(fldListFr(compice)%fields, 'Fioi_bcphi', compocn, mapfcopy, 'unset', 'unset') + call addmrg(fldListTo(compocn)%fields, 'Fioi_bcphi', & mrg_from=compice, mrg_fld='Fioi_bcphi', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2080,13 +2080,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: hydrophobic black carbon deposition flux from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'Fioi_bcpho') - call addfld(fldListTo(compocn)%flds, 'Fioi_bcpho') + call addfld(fldListFr(compice)%fields, 'Fioi_bcpho') + call addfld(fldListTo(compocn)%fields, 'Fioi_bcpho') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_bcpho', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_bcpho', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Fioi_bcpho', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Fioi_bcpho', & + call addmap(fldListFr(compice)%fields, 'Fioi_bcpho', compocn, mapfcopy, 'unset', 'unset') + call addmrg(fldListTo(compocn)%fields, 'Fioi_bcpho', & mrg_from=compice, mrg_fld='Fioi_bcpho', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2094,13 +2094,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: dust flux from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'Fioi_flxdst') - call addfld(fldListTo(compocn)%flds, 'Fioi_flxdst') + call addfld(fldListFr(compice)%fields, 'Fioi_flxdst') + call addfld(fldListTo(compocn)%fields, 'Fioi_flxdst') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_flxdst', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_flxdst', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Fioi_flxdst', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Fioi_flxdst', & + call addmap(fldListFr(compice)%fields, 'Fioi_flxdst', compocn, mapfcopy, 'unset', 'unset') + call addmrg(fldListTo(compocn)%fields, 'Fioi_flxdst', & mrg_from=compice, mrg_fld='Fioi_flxdst', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2116,38 +2116,38 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! fldlistFr(comprof) in order to be mapped correctly but the ocean ! does not receive it so it is advertised but it will! not be connected do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%flds, 'Fogg_rofl') + call addfld(fldListFr(compglc(ns))%fields, 'Fogg_rofl') end do - call addfld(fldListFr(comprof)%flds, 'Forr_rofl') - call addfld(fldListTo(compocn)%flds, 'Foxx_rofl') - call addfld(fldListTo(compocn)%flds, 'Flrr_flood') + call addfld(fldListFr(comprof)%fields, 'Forr_rofl') + call addfld(fldListTo(compocn)%fields, 'Foxx_rofl') + call addfld(fldListTo(compocn)%fields, 'Flrr_flood') do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%flds, 'Fogg_rofi') + call addfld(fldListFr(compglc(ns))%fields, 'Fogg_rofi') end do - call addfld(fldListFr(comprof)%flds, 'Forr_rofi') - call addfld(fldListTo(compocn)%flds, 'Foxx_rofi') + call addfld(fldListFr(comprof)%fields, 'Forr_rofi') + call addfld(fldListTo(compocn)%fields, 'Foxx_rofi') else if ( fldchk(is_local%wrap%FBExp(compocn), 'Foxx_rofl' , rc=rc)) then ! liquid from river and possibly flood from river to ocean if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofl' , rc=rc)) then if (trim(rof2ocn_liq_rmap) == 'unset') then - call addmap(fldListFr(comprof)%flds, 'Forr_rofl', compocn, mapconsd, 'none', 'unset') + call addmap(fldListFr(comprof)%fields, 'Forr_rofl', compocn, mapconsd, 'none', 'unset') else - call addmap(fldListFr(comprof)%flds, 'Forr_rofl', compocn, map_rof2ocn_liq, 'none', rof2ocn_liq_rmap) + call addmap(fldListFr(comprof)%fields, 'Forr_rofl', compocn, map_rof2ocn_liq, 'none', rof2ocn_liq_rmap) end if if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_flood', rc=rc)) then - call addmap(fldListFr(comprof)%flds, 'Flrr_flood', compocn, mapconsd, 'one', rof2ocn_fmap) - call addmrg(fldListTo(compocn)%flds, 'Foxx_rofl', mrg_from=comprof, mrg_fld='Forr_rofl:Flrr_flood', mrg_type='sum') + call addmap(fldListFr(comprof)%fields, 'Flrr_flood', compocn, mapconsd, 'one', rof2ocn_fmap) + call addmrg(fldListTo(compocn)%fields, 'Foxx_rofl', mrg_from=comprof, mrg_fld='Forr_rofl:Flrr_flood', mrg_type='sum') else - call addmrg(fldListTo(compocn)%flds, 'Foxx_rofl', mrg_from=comprof, mrg_fld='Forr_rofl', mrg_type='sum') + call addmrg(fldListTo(compocn)%fields, 'Foxx_rofl', mrg_from=comprof, mrg_fld='Forr_rofl', mrg_type='sum') end if end if ! liquid from glc to ocean do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Fogg_rofl' , rc=rc)) then ! TODO: this custom map needs to be different for every ice sheet - how will this be handled? - call addmap(fldListFr(compglc(ns))%flds, 'Fogg_rofl', compocn, map_glc2ocn_liq, 'one' , glc2ocn_liq_rmap) - call addmrg(fldListTo(compocn)%flds, 'Foxx_rofl', mrg_from=compglc(ns), mrg_fld='Fogg_rofl', mrg_type='sum') + call addmap(fldListFr(compglc(ns))%fields, 'Fogg_rofl', compocn, map_glc2ocn_liq, 'one' , glc2ocn_liq_rmap) + call addmrg(fldListTo(compocn)%fields, 'Foxx_rofl', mrg_from=compglc(ns), mrg_fld='Fogg_rofl', mrg_type='sum') end if end do end if @@ -2155,18 +2155,18 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! ice from river to ocean if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofi' , rc=rc)) then if (trim(rof2ocn_ice_rmap) == 'unset') then - call addmap(fldListFr(comprof)%flds, 'Forr_rofi', compocn, mapconsd, 'none', 'unset') + call addmap(fldListFr(comprof)%fields, 'Forr_rofi', compocn, mapconsd, 'none', 'unset') else - call addmap(fldListFr(comprof)%flds, 'Forr_rofi', compocn, map_rof2ocn_ice, 'none', rof2ocn_ice_rmap) + call addmap(fldListFr(comprof)%fields, 'Forr_rofi', compocn, map_rof2ocn_ice, 'none', rof2ocn_ice_rmap) end if - call addmrg(fldListTo(compocn)%flds, 'Foxx_rofi', mrg_from=comprof, mrg_fld='Forr_rofi', mrg_type='sum') + call addmrg(fldListTo(compocn)%fields, 'Foxx_rofi', mrg_from=comprof, mrg_fld='Forr_rofi', mrg_type='sum') end if ! ice from glc to ocean do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Fogg_rofi' , rc=rc)) then ! TODO: this custom map needs to be different for every ice sheet - how will this be handled? - call addmap(fldListFr(compglc(ns))%flds, 'Fogg_rofi', compocn, map_glc2ocn_ice, 'one', glc2ocn_ice_rmap) - call addmrg(fldListTo(compocn)%flds, 'Foxx_rofi', mrg_from=compglc(ns), mrg_fld='Fogg_rofi', mrg_type='sum') + call addmap(fldListFr(compglc(ns))%fields, 'Fogg_rofi', compocn, map_glc2ocn_ice, 'one', glc2ocn_ice_rmap) + call addmrg(fldListTo(compocn)%fields, 'Foxx_rofi', mrg_from=compglc(ns), mrg_fld='Fogg_rofi', mrg_type='sum') end if end do end if @@ -2175,31 +2175,31 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%flds, 'Fogg_rofl_wiso') + call addfld(fldListFr(compglc(ns))%fields, 'Fogg_rofl_wiso') end do - call addfld(fldListFr(comprof)%flds, 'Forr_rofl_wiso') - call addfld(fldListTo(compocn)%flds, 'Foxx_rofl_wiso') - call addfld(fldListTo(compocn)%flds, 'Flrr_flood_wiso') + call addfld(fldListFr(comprof)%fields, 'Forr_rofl_wiso') + call addfld(fldListTo(compocn)%fields, 'Foxx_rofl_wiso') + call addfld(fldListTo(compocn)%fields, 'Flrr_flood_wiso') do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%flds, 'Fogg_rofi_wiso') + call addfld(fldListFr(compglc(ns))%fields, 'Fogg_rofi_wiso') end do - call addfld(fldListFr(comprof)%flds, 'Forr_rofi_wiso') - call addfld(fldListTo(compocn)%flds, 'Foxx_rofi_wiso') + call addfld(fldListFr(comprof)%fields, 'Forr_rofi_wiso') + call addfld(fldListTo(compocn)%fields, 'Foxx_rofi_wiso') else if ( fldchk(is_local%wrap%FBExp(compocn), 'Foxx_rofl_wiso' , rc=rc)) then ! liquid from river and possibly flood from river to ocean if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofl_wiso' , rc=rc)) then if (trim(rof2ocn_liq_rmap) == 'unset') then - call addmap(fldListFr(comprof)%flds, 'Forr_rofl_wiso', compocn, mapconsd, 'none', 'unset') + call addmap(fldListFr(comprof)%fields, 'Forr_rofl_wiso', compocn, mapconsd, 'none', 'unset') else - call addmap(fldListFr(comprof)%flds, 'Forr_rofl_wiso', compocn, map_rof2ocn_liq, 'none', rof2ocn_liq_rmap) + call addmap(fldListFr(comprof)%fields, 'Forr_rofl_wiso', compocn, map_rof2ocn_liq, 'none', rof2ocn_liq_rmap) end if if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_flood_wiso', rc=rc)) then - call addmap(fldListFr(comprof)%flds, 'Flrr_flood_wiso', compocn, mapconsd, 'one', rof2ocn_fmap) - call addmrg(fldListTo(compocn)%flds, 'Foxx_rofl_wiso', & + call addmap(fldListFr(comprof)%fields, 'Flrr_flood_wiso', compocn, mapconsd, 'one', rof2ocn_fmap) + call addmrg(fldListTo(compocn)%fields, 'Foxx_rofl_wiso', & mrg_from=comprof, mrg_fld='Forr_rofl:Flrr_flood', mrg_type='sum') else - call addmrg(fldListTo(compocn)%flds, 'Foxx_rofl_wiso', & + call addmrg(fldListTo(compocn)%fields, 'Foxx_rofl_wiso', & mrg_from=comprof, mrg_fld='Forr_rofl', mrg_type='sum') end if end if @@ -2207,8 +2207,8 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Fogg_rofl_wiso' , rc=rc)) then ! TODO: this custom map needs to be different for every ice sheet - how will this be handled? - call addmap(fldListFr(compglc(ns))%flds, 'Fogg_rofl_wiso', compocn, map_glc2ocn_liq, 'one' , glc2ocn_liq_rmap) - call addmrg(fldListTo(compocn)%flds, 'Foxx_rofl_wiso', & + call addmap(fldListFr(compglc(ns))%fields, 'Fogg_rofl_wiso', compocn, map_glc2ocn_liq, 'one' , glc2ocn_liq_rmap) + call addmrg(fldListTo(compocn)%fields, 'Foxx_rofl_wiso', & mrg_from=compglc(ns), mrg_fld='Fogg_rofl_wiso', mrg_type='sum') end if end do @@ -2217,18 +2217,18 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! ice from river to ocean if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofi_wiso' , rc=rc)) then if (trim(rof2ocn_ice_rmap) == 'unset') then - call addmap(fldListFr(comprof)%flds, 'Forr_rofi_wiso', compocn, mapconsd, 'none', 'unset') + call addmap(fldListFr(comprof)%fields, 'Forr_rofi_wiso', compocn, mapconsd, 'none', 'unset') else - call addmap(fldListFr(comprof)%flds, 'Forr_rofi_wiso', compocn, map_rof2ocn_ice, 'none', rof2ocn_ice_rmap) + call addmap(fldListFr(comprof)%fields, 'Forr_rofi_wiso', compocn, map_rof2ocn_ice, 'none', rof2ocn_ice_rmap) end if - call addmrg(fldListTo(compocn)%flds, 'Foxx_rofi_wiso', mrg_from=comprof, mrg_fld='Forr_rofi', mrg_type='sum') + call addmrg(fldListTo(compocn)%fields, 'Foxx_rofi_wiso', mrg_from=comprof, mrg_fld='Forr_rofi', mrg_type='sum') end if ! ice from glc to ocean do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Fogg_rofi_wiso' , rc=rc)) then ! TODO: this custom map needs to be different for every ice sheet - how will this be handled? - call addmap(fldListFr(compglc(ns))%flds, 'Fogg_rofi_wiso', compocn, map_glc2ocn_ice, 'one', glc2ocn_ice_rmap) - call addmrg(fldListTo(compocn)%flds, 'Foxx_rofi_wiso', & + call addmap(fldListFr(compglc(ns))%fields, 'Fogg_rofi_wiso', compocn, map_glc2ocn_ice, 'one', glc2ocn_ice_rmap) + call addmrg(fldListTo(compocn)%fields, 'Foxx_rofi_wiso', & mrg_from=compglc(ns), mrg_fld='Fogg_rofi_wiso', mrg_type='sum') end if end do @@ -2240,78 +2240,78 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: Langmuir multiplier from wave !----------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compwav)%flds, 'Sw_lamult') - call addfld(fldListTo(compocn)%flds, 'Sw_lamult') + call addfld(fldListFr(compwav)%fields, 'Sw_lamult') + call addfld(fldListTo(compocn)%fields, 'Sw_lamult') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_lamult', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_lamult', rc=rc)) then - call addmap(fldListFr(compwav)%flds, 'Sw_lamult', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrg(fldListTo(compocn)%flds, 'Sw_lamult', mrg_from=compwav, mrg_fld='Sw_lamult', mrg_type='copy') + call addmap(fldListFr(compwav)%fields, 'Sw_lamult', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrg(fldListTo(compocn)%fields, 'Sw_lamult', mrg_from=compwav, mrg_fld='Sw_lamult', mrg_type='copy') end if end if !----------------------------- ! to ocn: Stokes drift u component from wave !----------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compwav)%flds, 'Sw_ustokes') - call addfld(fldListTo(compocn)%flds, 'Sw_ustokes') + call addfld(fldListFr(compwav)%fields, 'Sw_ustokes') + call addfld(fldListTo(compocn)%fields, 'Sw_ustokes') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_ustokes', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_ustokes', rc=rc)) then - call addmap(fldListFr(compwav)%flds, 'Sw_ustokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrg(fldListTo(compocn)%flds, 'Sw_ustokes', mrg_from=compwav, mrg_fld='Sw_ustokes', mrg_type='copy') + call addmap(fldListFr(compwav)%fields, 'Sw_ustokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrg(fldListTo(compocn)%fields, 'Sw_ustokes', mrg_from=compwav, mrg_fld='Sw_ustokes', mrg_type='copy') end if end if !----------------------------- ! to ocn: Stokes drift v component from wave !----------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compwav)%flds, 'Sw_vstokes') - call addfld(fldListTo(compocn)%flds, 'Sw_vstokes') + call addfld(fldListFr(compwav)%fields, 'Sw_vstokes') + call addfld(fldListTo(compocn)%fields, 'Sw_vstokes') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_vstokes', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_vstokes', rc=rc)) then - call addmap(fldListFr(compwav)%flds, 'Sw_vstokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrg(fldListTo(compocn)%flds, 'Sw_vstokes', mrg_from=compwav, mrg_fld='Sw_vstokes', mrg_type='copy') + call addmap(fldListFr(compwav)%fields, 'Sw_vstokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrg(fldListTo(compocn)%fields, 'Sw_vstokes', mrg_from=compwav, mrg_fld='Sw_vstokes', mrg_type='copy') end if end if !----------------------------- ! to ocn: Stokes drift depth from wave !----------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compwav)%flds, 'Sw_hstokes') - call addfld(fldListTo(compocn)%flds, 'Sw_hstokes') + call addfld(fldListFr(compwav)%fields, 'Sw_hstokes') + call addfld(fldListTo(compocn)%fields, 'Sw_hstokes') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_hstokes', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_hstokes', rc=rc)) then - call addmap(fldListFr(compwav)%flds, 'Sw_hstokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrg(fldListTo(compocn)%flds, 'Sw_hstokes', mrg_from=compwav, mrg_fld='Sw_hstokes', mrg_type='copy') + call addmap(fldListFr(compwav)%fields, 'Sw_hstokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrg(fldListTo(compocn)%fields, 'Sw_hstokes', mrg_from=compwav, mrg_fld='Sw_hstokes', mrg_type='copy') end if end if !----------------------------- ! to ocn: Partitioned stokes drift components in x-direction !----------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compwav)%flds, 'Sw_pstokes_x') - call addfld(fldListTo(compocn)%flds, 'Sw_pstokes_x') + call addfld(fldListFr(compwav)%fields, 'Sw_pstokes_x') + call addfld(fldListTo(compocn)%fields, 'Sw_pstokes_x') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_pstokes_x', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_pstokes_x', rc=rc)) then - call addmap(fldListFr(compwav)%flds, 'Sw_pstokes_x', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrg(fldListTo(compocn)%flds, 'Sw_pstokes_x', mrg_from=compwav, mrg_fld='Sw_pstokes_x', mrg_type='copy') + call addmap(fldListFr(compwav)%fields, 'Sw_pstokes_x', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrg(fldListTo(compocn)%fields, 'Sw_pstokes_x', mrg_from=compwav, mrg_fld='Sw_pstokes_x', mrg_type='copy') end if end if !----------------------------- ! to ocn: Stokes drift depth from wave !----------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compwav)%flds, 'Sw_pstokes_y') - call addfld(fldListTo(compocn)%flds, 'Sw_pstokes_y') + call addfld(fldListFr(compwav)%fields, 'Sw_pstokes_y') + call addfld(fldListTo(compocn)%fields, 'Sw_pstokes_y') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_pstokes_y', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_pstokes_y', rc=rc)) then - call addmap(fldListFr(compwav)%flds, 'Sw_pstokes_y', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrg(fldListTo(compocn)%flds, 'Sw_pstokes_y', mrg_from=compwav, mrg_fld='Sw_pstokes_y', mrg_type='copy') + call addmap(fldListFr(compwav)%fields, 'Sw_pstokes_y', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrg(fldListTo(compocn)%fields, 'Sw_pstokes_y', mrg_from=compwav, mrg_fld='Sw_pstokes_y', mrg_type='copy') end if end if @@ -2323,13 +2323,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: downward longwave heat flux from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_lwdn') - call addfld(fldListTo(compice)%flds, 'Faxa_lwdn') + call addfld(fldListFr(compatm)%fields, 'Faxa_lwdn') + call addfld(fldListTo(compice)%fields, 'Faxa_lwdn') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_lwdn', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwdn', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_lwdn', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_lwdn', mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_lwdn', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_lwdn', mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2339,43 +2339,43 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: downward Diffuse visible incident solar radiation from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swndr') - call addfld(fldListTo(compice)%flds, 'Faxa_swndr') + call addfld(fldListFr(compatm)%fields, 'Faxa_swndr') + call addfld(fldListTo(compice)%fields, 'Faxa_swndr') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_swndr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swndr', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swndr', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_swndr', mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_swndr', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_swndr', mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swvdr') - call addfld(fldListTo(compice)%flds, 'Faxa_swvdr') + call addfld(fldListFr(compatm)%fields, 'Faxa_swvdr') + call addfld(fldListTo(compice)%fields, 'Faxa_swvdr') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_swvdr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swvdr', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swvdr', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_swvdr', mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_swvdr', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_swvdr', mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swndf') - call addfld(fldListTo(compice)%flds, 'Faxa_swndf') + call addfld(fldListFr(compatm)%fields, 'Faxa_swndf') + call addfld(fldListTo(compice)%fields, 'Faxa_swndf') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_swndf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swndf', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swndf', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_swndf', mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_swndf', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_swndf', mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_swvdf') - call addfld(fldListTo(compice)%flds, 'Faxa_swvdf') + call addfld(fldListFr(compatm)%fields, 'Faxa_swvdf') + call addfld(fldListTo(compice)%fields, 'Faxa_swvdf') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_swvdf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swvdf', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_swvdf', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_swvdf', mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_swvdf', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_swvdf', mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2384,13 +2384,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: hydrophylic black carbon wet deposition flux from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_bcph') - call addfld(fldListTo(compice)%flds, 'Faxa_bcph') + call addfld(fldListFr(compatm)%fields, 'Faxa_bcph') + call addfld(fldListTo(compice)%fields, 'Faxa_bcph') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_bcph', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_bcph', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_bcph', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_bcph', mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_bcph', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_bcph', mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2399,13 +2399,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: hydrophylic organic carbon wet deposition flux from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_ocph') - call addfld(fldListTo(compice)%flds, 'Faxa_ocph') + call addfld(fldListFr(compatm)%fields, 'Faxa_ocph') + call addfld(fldListTo(compice)%fields, 'Faxa_ocph') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_ocph', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_ocph', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_ocph', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_ocph', mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_ocph', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_ocph', mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2415,13 +2415,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: dust wet deposition flux (size 4) from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_dstwet') - call addfld(fldListTo(compice)%flds, 'Faxa_dstwet') + call addfld(fldListFr(compatm)%fields, 'Faxa_dstwet') + call addfld(fldListTo(compice)%fields, 'Faxa_dstwet') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_dstwet', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_dstwet', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_dstwet', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_dstwet', mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_dstwet', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_dstwet', mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2431,13 +2431,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: dust dry deposition flux (size 4) from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_dstdry') - call addfld(fldListTo(compice)%flds, 'Faxa_dstdry') + call addfld(fldListFr(compatm)%fields, 'Faxa_dstdry') + call addfld(fldListTo(compice)%fields, 'Faxa_dstdry') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_dstdry', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_dstdry', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_dstdry', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_dstdry', mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_dstdry', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_dstdry', mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2445,83 +2445,83 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: rain and snow rate from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_rainc') - call addfld(fldListFr(compatm)%flds, 'Faxa_rainl') - call addfld(fldListFr(compatm)%flds, 'Faxa_rain' ) - call addfld(fldListTo(compice)%flds, 'Faxa_rain' ) + call addfld(fldListFr(compatm)%fields, 'Faxa_rainc') + call addfld(fldListFr(compatm)%fields, 'Faxa_rainl') + call addfld(fldListFr(compatm)%fields, 'Faxa_rain' ) + call addfld(fldListTo(compice)%fields, 'Faxa_rain' ) else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_rain' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainc', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_rainc', compice, mapconsf, 'one', atm2ice_map) - call addmap(fldListFr(compatm)%flds, 'Faxa_rainl', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_rain' , mrg_from=compatm, mrg_fld='Faxa_rainc:Faxa_rainl', mrg_type='sum') + call addmap(fldListFr(compatm)%fields, 'Faxa_rainc', compice, mapconsf, 'one', atm2ice_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_rainl', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_rain' , mrg_from=compatm, mrg_fld='Faxa_rainc:Faxa_rainl', mrg_type='sum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_rain', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rain', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_rain', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_rain', mrg_from=compatm, mrg_fld='Faxa_rain', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_rain', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_rain', mrg_from=compatm, mrg_fld='Faxa_rain', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_snowc') - call addfld(fldListFr(compatm)%flds, 'Faxa_snowl') - call addfld(fldListFr(compatm)%flds, 'Faxa_snow' ) - call addfld(fldListTo(compice)%flds, 'Faxa_snow' ) + call addfld(fldListFr(compatm)%fields, 'Faxa_snowc') + call addfld(fldListFr(compatm)%fields, 'Faxa_snowl') + call addfld(fldListFr(compatm)%fields, 'Faxa_snow' ) + call addfld(fldListTo(compice)%fields, 'Faxa_snow' ) else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_snow' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowc', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_snowc', compice, mapconsf, 'one', atm2ice_map) - call addmap(fldListFr(compatm)%flds, 'Faxa_snowl', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_snow' , & + call addmap(fldListFr(compatm)%fields, 'Faxa_snowc', compice, mapconsf, 'one', atm2ice_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_snowl', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_snow' , & mrg_from=compatm, mrg_fld='Faxa_snowc:Faxa_snowl', mrg_type='sum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_snow', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snow', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_snow', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_snow', & + call addmap(fldListFr(compatm)%fields, 'Faxa_snow', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_snow', & mrg_from=compatm, mrg_fld='Faxa_snow', mrg_type='copy') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_rainc_wiso') - call addfld(fldListFr(compatm)%flds, 'Faxa_rainl_wiso') - call addfld(fldListFr(compatm)%flds, 'Faxa_rain_wiso' ) - call addfld(fldListTo(compice)%flds, 'Faxa_rain_wiso' ) + call addfld(fldListFr(compatm)%fields, 'Faxa_rainc_wiso') + call addfld(fldListFr(compatm)%fields, 'Faxa_rainl_wiso') + call addfld(fldListFr(compatm)%fields, 'Faxa_rain_wiso' ) + call addfld(fldListTo(compice)%fields, 'Faxa_rain_wiso' ) else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_rain_wiso' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainl_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainc_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_rainc_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmap(fldListFr(compatm)%flds, 'Faxa_rainl_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_rain_wiso' , & + call addmap(fldListFr(compatm)%fields, 'Faxa_rainc_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_rainl_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_rain_wiso' , & mrg_from=compatm, mrg_fld='Faxa_rainc_wiso:Faxa_rainl_wiso', mrg_type='sum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_rain_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rain_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_rain_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_rain_wiso', & + call addmap(fldListFr(compatm)%fields, 'Faxa_rain_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_rain_wiso', & mrg_from=compatm, mrg_fld='Faxa_rain_wiso', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Faxa_snowc_wiso') - call addfld(fldListFr(compatm)%flds, 'Faxa_snowl_wiso') - call addfld(fldListFr(compatm)%flds, 'Faxa_snow_wiso' ) - call addfld(fldListTo(compice)%flds, 'Faxa_snow_wiso' ) + call addfld(fldListFr(compatm)%fields, 'Faxa_snowc_wiso') + call addfld(fldListFr(compatm)%fields, 'Faxa_snowl_wiso') + call addfld(fldListFr(compatm)%fields, 'Faxa_snow_wiso' ) + call addfld(fldListTo(compice)%fields, 'Faxa_snow_wiso' ) else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_snow_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowl_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowc_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_snowc_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmap(fldListFr(compatm)%flds, 'Faxa_snowl_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_snow_wiso' , & + call addmap(fldListFr(compatm)%fields, 'Faxa_snowc_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmap(fldListFr(compatm)%fields, 'Faxa_snowl_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_snow_wiso' , & mrg_from=compatm, mrg_fld='Faxa_snowc_wiso:Faxa_snowl_wiso', mrg_type='sum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_snow_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snow_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_snow_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Faxa_snow_wiso', mrg_from=compatm, mrg_fld='Faxa_snow_wiso', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Faxa_snow_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Faxa_snow_wiso', mrg_from=compatm, mrg_fld='Faxa_snow_wiso', mrg_type='copy') end if end if end if @@ -2530,65 +2530,65 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: height at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_z') - call addfld(fldListTo(compice)%flds, 'Sa_z') + call addfld(fldListFr(compatm)%fields, 'Sa_z') + call addfld(fldListTo(compice)%fields, 'Sa_z') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_z', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_z', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_z', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Sa_z', mrg_from=compatm, mrg_fld='Sa_z', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_z', compice, mapbilnr, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Sa_z', mrg_from=compatm, mrg_fld='Sa_z', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: pressure at the lowest model level fromatm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_pbot') - call addfld(fldListTo(compice)%flds, 'Sa_pbot') + call addfld(fldListFr(compatm)%fields, 'Sa_pbot') + call addfld(fldListTo(compice)%fields, 'Sa_pbot') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_pbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_pbot', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_pbot', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Sa_pbot', mrg_from=compatm, mrg_fld='Sa_pbot', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_pbot', compice, mapbilnr, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Sa_pbot', mrg_from=compatm, mrg_fld='Sa_pbot', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: temperature at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_tbot') - call addfld(fldListTo(compice)%flds, 'Sa_tbot') + call addfld(fldListFr(compatm)%fields, 'Sa_tbot') + call addfld(fldListTo(compice)%fields, 'Sa_tbot') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_tbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_tbot', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_tbot', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_tbot', compice, mapbilnr, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: potential temperature at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_ptem') - call addfld(fldListTo(compice)%flds, 'Sa_ptem') + call addfld(fldListFr(compatm)%fields, 'Sa_ptem') + call addfld(fldListTo(compice)%fields, 'Sa_ptem') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_ptem', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_ptem', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_ptem', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Sa_ptem', mrg_from=compatm, mrg_fld='Sa_ptem', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_ptem', compice, mapbilnr, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Sa_ptem', mrg_from=compatm, mrg_fld='Sa_ptem', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: density at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_dens') - call addfld(fldListTo(compice)%flds, 'Sa_dens') + call addfld(fldListFr(compatm)%fields, 'Sa_dens') + call addfld(fldListTo(compice)%fields, 'Sa_dens') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_dens', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_dens', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_dens', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Sa_dens', mrg_from=compatm, mrg_fld='Sa_dens', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_dens', compice, mapbilnr, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Sa_dens', mrg_from=compatm, mrg_fld='Sa_dens', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2596,31 +2596,31 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: meridional wind at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_u') - call addfld(fldListTo(compice)%flds, 'Sa_u') + call addfld(fldListFr(compatm)%fields, 'Sa_u') + call addfld(fldListTo(compice)%fields, 'Sa_u') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_u', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_u', rc=rc)) then if (mapuv_with_cart3d) then - call addmap(fldListFr(compatm)%flds, 'Sa_u', compice, mappatch_uv3d, 'one', atm2ice_map) + call addmap(fldListFr(compatm)%fields, 'Sa_u', compice, mappatch_uv3d, 'one', atm2ice_map) else - call addmap(fldListFr(compatm)%flds, 'Sa_u', compice, mappatch, 'one', atm2ice_map) + call addmap(fldListFr(compatm)%fields, 'Sa_u', compice, mappatch, 'one', atm2ice_map) end if - call addmrg(fldListTo(compice)%flds, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') + call addmrg(fldListTo(compice)%fields, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_v') - call addfld(fldListTo(compice)%flds, 'Sa_v') + call addfld(fldListFr(compatm)%fields, 'Sa_v') + call addfld(fldListTo(compice)%fields, 'Sa_v') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_v', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_v', rc=rc)) then if (mapuv_with_cart3d) then - call addmap(fldListFr(compatm)%flds, 'Sa_v', compice, mappatch_uv3d, 'one', atm2ice_map) + call addmap(fldListFr(compatm)%fields, 'Sa_v', compice, mappatch_uv3d, 'one', atm2ice_map) else - call addmap(fldListFr(compatm)%flds, 'Sa_v', compice, mappatch, 'one', atm2ice_map) + call addmap(fldListFr(compatm)%fields, 'Sa_v', compice, mappatch, 'one', atm2ice_map) end if - call addmrg(fldListTo(compice)%flds, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') + call addmrg(fldListTo(compice)%fields, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2628,24 +2628,24 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: specific humidity for water isotopes at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_shum') - call addfld(fldListTo(compice)%flds, 'Sa_shum') + call addfld(fldListFr(compatm)%fields, 'Sa_shum') + call addfld(fldListTo(compice)%fields, 'Sa_shum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_shum', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_shum', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_shum', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Sa_shum', mrg_from=compatm, mrg_fld='Sa_shum', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_shum', compice, mapbilnr, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Sa_shum', mrg_from=compatm, mrg_fld='Sa_shum', mrg_type='copy') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_shum_wiso') - call addfld(fldListTo(compice)%flds, 'Sa_shum_wiso') + call addfld(fldListFr(compatm)%fields, 'Sa_shum_wiso') + call addfld(fldListTo(compice)%fields, 'Sa_shum_wiso') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_shum_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_shum_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_shum_wiso', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%flds, 'Sa_shum_wiso', mrg_from=compatm, mrg_fld='Sa_shum_wiso', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_shum_wiso', compice, mapbilnr, 'one', atm2ice_map) + call addmrg(fldListTo(compice)%fields, 'Sa_shum_wiso', mrg_from=compatm, mrg_fld='Sa_shum_wiso', mrg_type='copy') end if end if end if @@ -2654,26 +2654,26 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: sea surface temperature from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'So_t') - call addfld(fldListTo(compice)%flds, 'So_t') + call addfld(fldListFr(compocn)%fields, 'So_t') + call addfld(fldListTo(compice)%fields, 'So_t') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_t', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_t', rc=rc)) then - call addmap(fldListFr(compocn)%flds, 'So_t', compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%flds, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') + call addmap(fldListFr(compocn)%fields, 'So_t', compice, mapfcopy , 'unset', 'unset') + call addmrg(fldListTo(compice)%fields, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: sea surface salinity from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'So_s') - call addfld(fldListTo(compice)%flds, 'So_s') + call addfld(fldListFr(compocn)%fields, 'So_s') + call addfld(fldListTo(compice)%fields, 'So_s') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_s', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_s', rc=rc)) then - call addmap(fldListFr(compocn)%flds, 'So_s', compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%flds, 'So_s', mrg_from=compocn, mrg_fld='So_s', mrg_type='copy') + call addmap(fldListFr(compocn)%fields, 'So_s', compice, mapfcopy , 'unset', 'unset') + call addmrg(fldListTo(compice)%fields, 'So_s', mrg_from=compocn, mrg_fld='So_s', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2681,23 +2681,23 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: meridional sea water velocity from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'So_u') - call addfld(fldListTo(compice)%flds, 'So_u') + call addfld(fldListFr(compocn)%fields, 'So_u') + call addfld(fldListTo(compice)%fields, 'So_u') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_u', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_u', rc=rc)) then - call addmap(fldListFr(compocn)%flds, 'So_u', compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%flds, 'So_u', mrg_from=compocn, mrg_fld='So_u', mrg_type='copy') + call addmap(fldListFr(compocn)%fields, 'So_u', compice, mapfcopy , 'unset', 'unset') + call addmrg(fldListTo(compice)%fields, 'So_u', mrg_from=compocn, mrg_fld='So_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'So_v') - call addfld(fldListTo(compice)%flds, 'So_v') + call addfld(fldListFr(compocn)%fields, 'So_v') + call addfld(fldListTo(compice)%fields, 'So_v') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_v', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_v', rc=rc)) then - call addmap(fldListFr(compocn)%flds, 'So_v', compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%flds, 'So_v', mrg_from=compocn, mrg_fld='So_v', mrg_type='copy') + call addmap(fldListFr(compocn)%fields, 'So_v', compice, mapfcopy , 'unset', 'unset') + call addmrg(fldListTo(compice)%fields, 'So_v', mrg_from=compocn, mrg_fld='So_v', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2705,36 +2705,36 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: meridional sea surface slope from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'So_dhdx') - call addfld(fldListTo(compice)%flds, 'So_dhdx') + call addfld(fldListFr(compocn)%fields, 'So_dhdx') + call addfld(fldListTo(compice)%fields, 'So_dhdx') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_dhdx', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_dhdx', rc=rc)) then - call addmap(fldListFr(compocn)%flds, 'So_dhdx', compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%flds, 'So_dhdx', mrg_from=compocn, mrg_fld='So_dhdx', mrg_type='copy') + call addmap(fldListFr(compocn)%fields, 'So_dhdx', compice, mapfcopy , 'unset', 'unset') + call addmrg(fldListTo(compice)%fields, 'So_dhdx', mrg_from=compocn, mrg_fld='So_dhdx', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'So_dhdy') - call addfld(fldListTo(compice)%flds, 'So_dhdy') + call addfld(fldListFr(compocn)%fields, 'So_dhdy') + call addfld(fldListTo(compice)%fields, 'So_dhdy') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_dhdy', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_dhdy', rc=rc)) then - call addmap(fldListFr(compocn)%flds, 'So_dhdy', compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%flds, 'So_dhdy', mrg_from=compocn, mrg_fld='So_dhdy', mrg_type='copy') + call addmap(fldListFr(compocn)%fields, 'So_dhdy', compice, mapfcopy , 'unset', 'unset') + call addmrg(fldListTo(compice)%fields, 'So_dhdy', mrg_from=compocn, mrg_fld='So_dhdy', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: ocean melt and freeze potential from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'Fioo_q') - call addfld(fldListTo(compice)%flds, 'Fioo_q') + call addfld(fldListFr(compocn)%fields, 'Fioo_q') + call addfld(fldListTo(compice)%fields, 'Fioo_q') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'Fioo_q', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compice) , 'Fioo_q', rc=rc)) then - call addmap(fldListFr(compocn)%flds, 'Fioo_q', compice, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compice)%flds, 'Fioo_q', mrg_from=compocn, mrg_fld='Fioo_q', mrg_type='copy') + call addmap(fldListFr(compocn)%fields, 'Fioo_q', compice, mapfcopy, 'unset', 'unset') + call addmrg(fldListTo(compice)%fields, 'Fioo_q', mrg_from=compocn, mrg_fld='Fioo_q', mrg_type='copy') end if end if !----------------------------- @@ -2742,13 +2742,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !----------------------------- if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'So_roce_wiso') - call addfld(fldListTo(compice)%flds, 'So_roce_wiso') + call addfld(fldListFr(compocn)%fields, 'So_roce_wiso') + call addfld(fldListTo(compice)%fields, 'So_roce_wiso') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_roce_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compice) , 'So_roce_wiso', rc=rc)) then - call addmap(fldListFr(compocn)%flds, 'So_roce_wiso', compice, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compice)%flds, 'So_roce_wiso', mrg_from=compocn, mrg_fld='So_roce_wiso', mrg_type='copy') + call addmap(fldListFr(compocn)%fields, 'So_roce_wiso', compice, mapfcopy, 'unset', 'unset') + call addmrg(fldListTo(compice)%fields, 'So_roce_wiso', mrg_from=compocn, mrg_fld='So_roce_wiso', mrg_type='copy') end if end if end if @@ -2757,43 +2757,43 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: frozen runoff from rof and glc ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(comprof)%flds, 'Firr_rofi') ! water flux into sea ice due to runoff (frozen) + call addfld(fldListFr(comprof)%fields, 'Firr_rofi') ! water flux into sea ice due to runoff (frozen) do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%flds, 'Figg_rofi') ! glc frozen runoff_iceberg flux to ice + call addfld(fldListFr(compglc(ns))%fields, 'Figg_rofi') ! glc frozen runoff_iceberg flux to ice end do - call addfld(fldListTo(compice)%flds, 'Fixx_rofi') ! total frozen water flux into sea ice + call addfld(fldListTo(compice)%fields, 'Fixx_rofi') ! total frozen water flux into sea ice else if ( fldchk(is_local%wrap%FBExp(compice), 'Fixx_rofi', rc=rc)) then if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofi', rc=rc)) then - call addmap(fldListFr(comprof)%flds, 'Forr_rofi', compice, mapconsf, 'none', rof2ocn_ice_rmap) - call addmrg(fldListTo(compice)%flds, 'Fixx_rofi', mrg_from=comprof, mrg_fld='Firr_rofi', mrg_type='sum') + call addmap(fldListFr(comprof)%fields, 'Forr_rofi', compice, mapconsf, 'none', rof2ocn_ice_rmap) + call addmrg(fldListTo(compice)%fields, 'Fixx_rofi', mrg_from=comprof, mrg_fld='Firr_rofi', mrg_type='sum') end if do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Figg_rofi', rc=rc)) then - call addmap(fldListFr(compglc(ns))%flds, 'Figg_rofi', compice, mapconsf, 'one' , glc2ice_rmap) - call addmrg(fldListTo(compice)%flds, 'Fixx_rofi', mrg_from=compglc(ns), mrg_fld='Figg_rofi', mrg_type='sum') + call addmap(fldListFr(compglc(ns))%fields, 'Figg_rofi', compice, mapconsf, 'one' , glc2ice_rmap) + call addmrg(fldListTo(compice)%fields, 'Fixx_rofi', mrg_from=compglc(ns), mrg_fld='Figg_rofi', mrg_type='sum') end if end do end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(comprof)%flds, 'Firr_rofi_wiso') ! water flux into sea ice due to runoff (frozen) + call addfld(fldListFr(comprof)%fields, 'Firr_rofi_wiso') ! water flux into sea ice due to runoff (frozen) do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%flds, 'Figg_rofi_wiso') ! glc frozen runoff_iceberg flux to ice + call addfld(fldListFr(compglc(ns))%fields, 'Figg_rofi_wiso') ! glc frozen runoff_iceberg flux to ice end do - call addfld(fldListTo(compice)%flds, 'Fixx_rofi_wiso') ! total frozen water flux into sea ice + call addfld(fldListTo(compice)%fields, 'Fixx_rofi_wiso') ! total frozen water flux into sea ice else if ( fldchk(is_local%wrap%FBExp(compice), 'Fixx_rofi_wiso', rc=rc)) then if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofi_wiso', rc=rc)) then - call addmap(fldListFr(comprof)%flds, 'Forr_rofi_wiso', compice, mapconsf, 'none', rof2ocn_ice_rmap) - call addmrg(fldListTo(compice)%flds, 'Fixx_rofi_wiso', & + call addmap(fldListFr(comprof)%fields, 'Forr_rofi_wiso', compice, mapconsf, 'none', rof2ocn_ice_rmap) + call addmrg(fldListTo(compice)%fields, 'Fixx_rofi_wiso', & mrg_from=comprof, mrg_fld='Firr_rofi_wiso', mrg_type='sum') end if do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Figg_rofi_wiso', rc=rc)) then - call addmap(fldListFr(compglc(ns))%flds, 'Figg_rofi_wiso', compice, mapconsf, 'one' , glc2ice_rmap) - call addmrg(fldListTo(compice)%flds, 'Fixx_rofi_wiso', & + call addmap(fldListFr(compglc(ns))%fields, 'Figg_rofi_wiso', compice, mapconsf, 'one' , glc2ice_rmap) + call addmrg(fldListTo(compice)%fields, 'Fixx_rofi_wiso', & mrg_from=compglc(ns), mrg_fld='Figg_rofi_wiso', mrg_type='sum') end if end do @@ -2806,13 +2806,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! --------------------------------------------------------------------- if (wavice_coupling) then if (phase == 'advertise') then - call addfld(fldListFr(compwav)%flds, 'Sw_elevation_spectrum') - call addfld(fldListTo(compice)%flds, 'Sw_elevation_spectrum') + call addfld(fldListFr(compwav)%fields, 'Sw_elevation_spectrum') + call addfld(fldListTo(compice)%fields, 'Sw_elevation_spectrum') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Sw_elevation_spectrum', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav,compwav), 'Sw_elevation_spectrum', rc=rc)) then - call addmap(fldListFr(compwav)%flds, 'Sw_elevation_spectrum', compice, mapbilnr, 'one', 'unset') - call addmrg(fldListTo(compice)%flds, 'Sw_elevation_spectrum', & + call addmap(fldListFr(compwav)%fields, 'Sw_elevation_spectrum', compice, mapbilnr, 'one', 'unset') + call addmrg(fldListTo(compice)%fields, 'Sw_elevation_spectrum', & mrg_from=compwav, mrg_fld='Sw_elevation_spectrum', mrg_type='copy') end if end if @@ -2826,14 +2826,14 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: fractional ice coverage wrt ocean from ice !---------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'Si_ifrac') - call addfld(fldListTo(compwav)%flds, 'Si_ifrac') + call addfld(fldListFr(compice)%fields, 'Si_ifrac') + call addfld(fldListTo(compwav)%fields, 'Si_ifrac') else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Si_ifrac', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_ifrac', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmap(fldListFr(compice)%flds, 'Si_ifrac', compwav, mapbilnr, 'one', ice2wav_smap) - call addmrg(fldListTo(compwav)%flds, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') + call addmap(fldListFr(compice)%fields, 'Si_ifrac', compwav, mapbilnr, 'one', ice2wav_smap) + call addmrg(fldListTo(compwav)%fields, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') end if end if !---------------------------------------------------------- @@ -2841,13 +2841,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !---------------------------------------------------------- if (wavice_coupling) then if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'Si_thick') - call addfld(fldListTo(compwav)%flds, 'Si_thick') + call addfld(fldListFr(compice)%fields, 'Si_thick') + call addfld(fldListTo(compwav)%fields, 'Si_thick') else if (fldchk(is_local%wrap%FBexp(compwav) , 'Si_thick', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_thick', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Si_thick', compwav, mapbilnr, 'one', ice2wav_smap) - call addmrg(fldListTo(compwav)%flds, 'Si_thick', mrg_from=compice, mrg_fld='Si_thick', mrg_type='copy') + call addmap(fldListFr(compice)%fields, 'Si_thick', compwav, mapbilnr, 'one', ice2wav_smap) + call addmrg(fldListTo(compwav)%fields, 'Si_thick', mrg_from=compice, mrg_fld='Si_thick', mrg_type='copy') end if end if end if @@ -2856,13 +2856,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !---------------------------------------------------------- if (wavice_coupling) then if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'Si_floediam') - call addfld(fldListTo(compwav)%flds, 'Si_floediam') + call addfld(fldListFr(compice)%fields, 'Si_floediam') + call addfld(fldListTo(compwav)%fields, 'Si_floediam') else if (fldchk(is_local%wrap%FBexp(compwav) , 'Si_floediam', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_floediam', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Si_floediam', compwav, mapbilnr, 'one', ice2wav_smap) - call addmrg(fldListTo(compwav)%flds, 'Si_floediam', mrg_from=compice, mrg_fld='Si_floediam', mrg_type='copy') + call addmap(fldListFr(compice)%fields, 'Si_floediam', compwav, mapbilnr, 'one', ice2wav_smap) + call addmrg(fldListTo(compwav)%fields, 'Si_floediam', mrg_from=compice, mrg_fld='Si_floediam', mrg_type='copy') end if end if end if @@ -2870,39 +2870,39 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: ocean surface temperature from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'So_t') - call addfld(fldListTo(compwav)%flds, 'So_t') + call addfld(fldListFr(compocn)%fields, 'So_t') + call addfld(fldListTo(compwav)%fields, 'So_t') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_t', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compwav) , 'So_t', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmap(fldListFr(compocn)%flds, 'So_t', compwav, mapbilnr, 'one', ocn2wav_smap) - call addmrg(fldListTo(compwav)%flds, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') + call addmap(fldListFr(compocn)%fields, 'So_t', compwav, mapbilnr, 'one', ocn2wav_smap) + call addmrg(fldListTo(compwav)%fields, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to wav: ocean currents from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'So_u') - call addfld(fldListTo(compwav)%flds, 'So_u') + call addfld(fldListFr(compocn)%fields, 'So_u') + call addfld(fldListTo(compwav)%fields, 'So_u') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_u', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compwav) , 'So_u', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmap(fldListFr(compocn)%flds, 'So_u', compwav, mapbilnr, 'one', ocn2wav_smap) - call addmrg(fldListTo(compwav)%flds, 'So_u', mrg_from=compocn, mrg_fld='So_u', mrg_type='copy') + call addmap(fldListFr(compocn)%fields, 'So_u', compwav, mapbilnr, 'one', ocn2wav_smap) + call addmrg(fldListTo(compwav)%fields, 'So_u', mrg_from=compocn, mrg_fld='So_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'So_v') - call addfld(fldListTo(compwav)%flds, 'So_v') + call addfld(fldListFr(compocn)%fields, 'So_v') + call addfld(fldListTo(compwav)%fields, 'So_v') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_v', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compwav) , 'So_v', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmap(fldListFr(compocn)%flds, 'So_v', compwav, mapbilnr, 'one', ocn2wav_smap) - call addmrg(fldListTo(compwav)%flds, 'So_v', mrg_from=compocn, mrg_fld='So_v', mrg_type='copy') + call addmap(fldListFr(compocn)%fields, 'So_v', compwav, mapbilnr, 'one', ocn2wav_smap) + call addmrg(fldListTo(compwav)%fields, 'So_v', mrg_from=compocn, mrg_fld='So_v', mrg_type='copy') end if end if @@ -2910,14 +2910,14 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: ocean boundary layer depth from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'So_bldepth') - call addfld(fldListTo(compwav)%flds, 'So_bldepth') + call addfld(fldListFr(compocn)%fields, 'So_bldepth') + call addfld(fldListTo(compwav)%fields, 'So_bldepth') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_bldepth', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compwav) , 'So_bldepth', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmap(fldListFr(compocn)%flds, 'So_bldepth', compwav, mapbilnr, 'one', ocn2wav_smap) - call addmrg(fldListTo(compwav)%flds, 'So_bldepth', mrg_from=compocn, mrg_fld='So_bldepth', mrg_type='copy') + call addmap(fldListFr(compocn)%fields, 'So_bldepth', compwav, mapbilnr, 'one', ocn2wav_smap) + call addmrg(fldListTo(compwav)%fields, 'So_bldepth', mrg_from=compocn, mrg_fld='So_bldepth', mrg_type='copy') end if end if @@ -2925,23 +2925,23 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: zonal and meridional winds at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_u') - call addfld(fldListTo(compwav)%flds, 'Sa_u') + call addfld(fldListFr(compatm)%fields, 'Sa_u') + call addfld(fldListTo(compwav)%fields, 'Sa_u') else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Sa_u', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_u', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_u', compwav, mapbilnr, 'one', atm2wav_map) - call addmrg(fldListTo(compwav)%flds, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_u', compwav, mapbilnr, 'one', atm2wav_map) + call addmrg(fldListTo(compwav)%fields, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_v') - call addfld(fldListTo(compwav)%flds, 'Sa_v') + call addfld(fldListFr(compatm)%fields, 'Sa_v') + call addfld(fldListTo(compwav)%fields, 'Sa_v') else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Sa_v', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_v', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_v', compwav, mapbilnr, 'one', atm2wav_map) - call addmrg(fldListTo(compwav)%flds, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_v', compwav, mapbilnr, 'one', atm2wav_map) + call addmrg(fldListTo(compwav)%fields, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') end if end if @@ -2949,13 +2949,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: temperature at lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_tbot') - call addfld(fldListTo(compwav)%flds, 'Sa_tbot') + call addfld(fldListFr(compatm)%fields, 'Sa_tbot') + call addfld(fldListTo(compwav)%fields, 'Sa_tbot') else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Sa_tbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_tbot', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_tbot', compwav, mapbilnr, 'one', atm2wav_map) - call addmrg(fldListTo(compwav)%flds, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') + call addmap(fldListFr(compatm)%fields, 'Sa_tbot', compwav, mapbilnr, 'one', atm2wav_map) + call addmrg(fldListTo(compwav)%fields, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') end if end if @@ -2967,13 +2967,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: water flux from land (liquid surface) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Flrl_rofsur') - call addfld(fldListTo(comprof)%flds, 'Flrl_rofsur') + call addfld(fldListFr(complnd)%fields, 'Flrl_rofsur') + call addfld(fldListTo(comprof)%fields, 'Flrl_rofsur') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_rofsur', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_rofsur', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Flrl_rofsur', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrg(fldListTo(comprof)%flds, 'Flrl_rofsur', & + call addmap(fldListFr(complnd)%fields, 'Flrl_rofsur', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrg(fldListTo(comprof)%fields, 'Flrl_rofsur', & mrg_from=complnd, mrg_fld='Flrl_rofsur', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -2982,13 +2982,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: water flux from land (ice surface) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Flrl_rofi') - call addfld(fldListTo(comprof)%flds, 'Flrl_rofi') + call addfld(fldListFr(complnd)%fields, 'Flrl_rofi') + call addfld(fldListTo(comprof)%fields, 'Flrl_rofi') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_rofi', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_rofi', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Flrl_rofi', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrg(fldListTo(comprof)%flds, 'Flrl_rofi', & + call addmap(fldListFr(complnd)%fields, 'Flrl_rofi', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrg(fldListTo(comprof)%fields, 'Flrl_rofi', & mrg_from=complnd, mrg_fld='Flrl_rofi', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -2997,13 +2997,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: water flux from land (liquid glacier, wetland, and lake) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Flrl_rofgwl') - call addfld(fldListTo(comprof)%flds, 'Flrl_rofgwl') + call addfld(fldListFr(complnd)%fields, 'Flrl_rofgwl') + call addfld(fldListTo(comprof)%fields, 'Flrl_rofgwl') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_rofgwl', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_rofgwl', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Flrl_rofgwl', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrg(fldListTo(comprof)%flds, 'Flrl_rofgwl', & + call addmap(fldListFr(complnd)%fields, 'Flrl_rofgwl', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrg(fldListTo(comprof)%fields, 'Flrl_rofgwl', & mrg_from=complnd, mrg_fld='Flrl_rofgwl', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -3012,13 +3012,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: water flux from land (liquid subsurface) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Flrl_rofsub') - call addfld(fldListTo(comprof)%flds, 'Flrl_rofsub') + call addfld(fldListFr(complnd)%fields, 'Flrl_rofsub') + call addfld(fldListTo(comprof)%fields, 'Flrl_rofsub') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_rofsub', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_rofsub', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Flrl_rofsub', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrg(fldListTo(comprof)%flds, 'Flrl_rofsub', & + call addmap(fldListFr(complnd)%fields, 'Flrl_rofsub', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrg(fldListTo(comprof)%fields, 'Flrl_rofsub', & mrg_from=complnd, mrg_fld='Flrl_rofsub', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -3027,13 +3027,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: irrigation flux from land (withdrawal from rivers) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Flrl_irrig') - call addfld(fldListTo(comprof)%flds, 'Flrl_irrig') + call addfld(fldListFr(complnd)%fields, 'Flrl_irrig') + call addfld(fldListTo(comprof)%fields, 'Flrl_irrig') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_irrig', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_irrig', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Flrl_irrig', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrg(fldListTo(comprof)%flds, 'Flrl_irrig', & + call addmap(fldListFr(complnd)%fields, 'Flrl_irrig', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrg(fldListTo(comprof)%fields, 'Flrl_irrig', & mrg_from=complnd, mrg_fld='Flrl_irrig', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -3053,25 +3053,25 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! Note : Sl_topo is sent from lnd -> med, but is NOT sent to glc (only used for the remapping in the mediator) if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Sl_tsrf_elev') ! surface temperature of glacier (1->glc_nec+1) - call addfld(fldListFr(complnd)%flds, 'Sl_topo_elev') ! surface heights of glacier (1->glc_nec+1) - call addfld(fldListFr(complnd)%flds, 'Flgl_qice_elev') ! glacier ice flux (1->glc_nec+1) + call addfld(fldListFr(complnd)%fields, 'Sl_tsrf_elev') ! surface temperature of glacier (1->glc_nec+1) + call addfld(fldListFr(complnd)%fields, 'Sl_topo_elev') ! surface heights of glacier (1->glc_nec+1) + call addfld(fldListFr(complnd)%fields, 'Flgl_qice_elev') ! glacier ice flux (1->glc_nec+1) do ns = 1,is_local%wrap%num_icesheets - call addfld(fldListTo(compglc(ns))%flds, 'Sl_tsrf') - call addfld(fldListTo(compglc(ns))%flds, 'Flgl_qice') + call addfld(fldListTo(compglc(ns))%fields, 'Sl_tsrf') + call addfld(fldListTo(compglc(ns))%fields, 'Flgl_qice') end do else ! custom mapping, accumulation and merging will be done in prep_glc_mod.F90 do ns = 1,is_local%wrap%num_icesheets if ( fldchk(is_local%wrap%FBImp(complnd,complnd) , 'Flgl_qice_elev', rc=rc)) then - call addmap(FldListFr(complnd)%flds, 'Flgl_qice_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') + call addmap(FldListFr(complnd)%fields, 'Flgl_qice_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') end if if ( fldchk(is_local%wrap%FBImp(complnd,complnd) , 'Sl_tsrf_elev' , rc=rc)) then - call addmap(FldListFr(complnd)%flds, 'Sl_tsrf_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') + call addmap(FldListFr(complnd)%fields, 'Sl_tsrf_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') end if if ( fldchk(is_local%wrap%FBImp(complnd,complnd) , 'Sl_topo_elev' , rc=rc)) then ! This is needed just for mappingn to glc - but is not sent as a field - call addmap(FldListFr(complnd)%flds, 'Sl_topo_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') + call addmap(FldListFr(complnd)%fields, 'Sl_topo_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') end if end do end if @@ -3081,21 +3081,21 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !----------------------------- if (is_local%wrap%ocn2glc_coupling) then if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'So_t_depth') - call addfld(fldListFr(compocn)%flds, 'So_s_depth') + call addfld(fldListFr(compocn)%fields, 'So_t_depth') + call addfld(fldListFr(compocn)%fields, 'So_s_depth') do ns = 1,is_local%wrap%num_icesheets - call addfld(fldListTo(compglc(ns))%flds, 'So_t_depth') - call addfld(fldListTo(compglc(ns))%flds, 'So_s_depth') + call addfld(fldListTo(compglc(ns))%fields, 'So_t_depth') + call addfld(fldListTo(compglc(ns))%fields, 'So_s_depth') end do else ! custom mapping, accumulation and merging will be done in prep_glc_mod.F90 ! the following is used to create the route handle do ns = 1,is_local%wrap%num_icesheets if ( fldchk(is_local%wrap%FBImp(compocn,compocn) , 'So_t_depth', rc=rc)) then - call addmap(FldListFr(compocn)%flds, 'So_t_depth', compglc(ns), mapbilnr, 'none', 'unset') + call addmap(FldListFr(compocn)%fields, 'So_t_depth', compglc(ns), mapbilnr, 'none', 'unset') end if if ( fldchk(is_local%wrap%FBImp(compocn,compocn) , 'So_s_depth', rc=rc)) then - call addmap(FldListFr(compocn)%flds, 'So_s_depth', compglc(ns), mapbilnr, 'none', 'unset') + call addmap(FldListFr(compocn)%fields, 'So_s_depth', compglc(ns), mapbilnr, 'none', 'unset') end if end do end if @@ -3125,16 +3125,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd and ocn: prognostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_co2prog') - call addfld(fldListTo(complnd)%flds, 'Sa_co2prog') - call addfld(fldListTo(compocn)%flds, 'Sa_co2prog') + call addfld(fldListFr(compatm)%fields, 'Sa_co2prog') + call addfld(fldListTo(complnd)%fields, 'Sa_co2prog') + call addfld(fldListTo(compocn)%fields, 'Sa_co2prog') else - call addmap(fldListFr(compatm)%flds, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) - call addmap(fldListFr(compatm)%flds, 'Sa_co2prog', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) + call addmap(fldListFr(compatm)%fields, 'Sa_co2prog', compocn, mapbilnr, 'one', atm2ocn_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_co2prog', & + call addmrg(fldListTo(complnd)%fields, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') - call addmrg(fldListTo(compocn)%flds, 'Sa_co2prog', & + call addmrg(fldListTo(compocn)%fields, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') end if @@ -3142,16 +3142,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd and ocn: diagnostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_co2diag') - call addfld(fldListTo(complnd)%flds, 'Sa_co2diag') - call addfld(fldListTo(compocn)%flds, 'Sa_co2diag') + call addfld(fldListFr(compatm)%fields, 'Sa_co2diag') + call addfld(fldListTo(complnd)%fields, 'Sa_co2diag') + call addfld(fldListTo(compocn)%fields, 'Sa_co2diag') else - call addmap(fldListFr(compatm)%flds, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) - call addmap(fldListFr(compatm)%flds, 'Sa_co2diag', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) + call addmap(fldListFr(compatm)%fields, 'Sa_co2diag', compocn, mapbilnr, 'one', atm2ocn_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_co2diag', & + call addmrg(fldListTo(complnd)%fields, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') - call addmrg(fldListTo(compocn)%flds, 'Sa_co2diag', & + call addmrg(fldListTo(compocn)%fields, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') end if @@ -3161,11 +3161,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: prognostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_co2prog') - call addfld(fldListTo(complnd)%flds, 'Sa_co2prog') + call addfld(fldListFr(compatm)%fields, 'Sa_co2prog') + call addfld(fldListTo(complnd)%fields, 'Sa_co2prog') else - call addmap(fldListFr(compatm)%flds, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_co2prog', & + call addmap(fldListFr(compatm)%fields, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') end if @@ -3173,11 +3173,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: diagnostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_co2diag') - call addfld(fldListTo(complnd)%flds, 'Sa_co2diag') + call addfld(fldListFr(compatm)%fields, 'Sa_co2diag') + call addfld(fldListTo(complnd)%fields, 'Sa_co2diag') else - call addmap(fldListFr(compatm)%flds, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_co2diag', & + call addmap(fldListFr(compatm)%fields, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg(fldListTo(complnd)%fields, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') end if @@ -3185,11 +3185,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface flux of CO2 from land ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Fall_fco2_lnd') - call addfld(fldListTo(compatm)%flds, 'Fall_fco2_lnd') + call addfld(fldListFr(complnd)%fields, 'Fall_fco2_lnd') + call addfld(fldListTo(compatm)%fields, 'Fall_fco2_lnd') else - call addmap(fldListFr(complnd)%flds, 'Fall_fco2_lnd', compatm, mapconsf, 'one', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Fall_fco2_lnd', & + call addmap(fldListFr(complnd)%fields, 'Fall_fco2_lnd', compatm, mapconsf, 'one', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Fall_fco2_lnd', & mrg_from=complnd, mrg_fld='Fall_fco2_lnd', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if @@ -3199,16 +3199,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd and ocn: prognostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_co2prog') - call addfld(fldListTo(complnd)%flds, 'Sa_co2prog') - call addfld(fldListTo(compocn)%flds, 'Sa_co2prog') + call addfld(fldListFr(compatm)%fields, 'Sa_co2prog') + call addfld(fldListTo(complnd)%fields, 'Sa_co2prog') + call addfld(fldListTo(compocn)%fields, 'Sa_co2prog') else - call addmap(fldListFr(compatm)%flds, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) - call addmap(fldListFr(compatm)%flds, 'Sa_co2prog', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) + call addmap(fldListFr(compatm)%fields, 'Sa_co2prog', compocn, mapbilnr, 'one', atm2ocn_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_co2prog', & + call addmrg(fldListTo(complnd)%fields, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') - call addmrg(fldListTo(compocn)%flds, 'Sa_co2prog', & + call addmrg(fldListTo(compocn)%fields, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') end if @@ -3216,16 +3216,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd and ocn: diagnostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%flds, 'Sa_co2diag') - call addfld(fldListTo(complnd)%flds, 'Sa_co2diag') - call addfld(fldListTo(compocn)%flds, 'Sa_co2diag') + call addfld(fldListFr(compatm)%fields, 'Sa_co2diag') + call addfld(fldListTo(complnd)%fields, 'Sa_co2diag') + call addfld(fldListTo(compocn)%fields, 'Sa_co2diag') else - call addmap(fldListFr(compatm)%flds, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) - call addmap(fldListFr(compatm)%flds, 'Sa_co2diag', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap(fldListFr(compatm)%fields, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) + call addmap(fldListFr(compatm)%fields, 'Sa_co2diag', compocn, mapbilnr, 'one', atm2ocn_map) - call addmrg(fldListTo(complnd)%flds, 'Sa_co2diag', & + call addmrg(fldListTo(complnd)%fields, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') - call addmrg(fldListTo(compocn)%flds, 'Sa_co2diag', & + call addmrg(fldListTo(compocn)%fields, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') end if @@ -3233,11 +3233,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface flux of CO2 from land ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%flds, 'Fall_fco2_lnd') - call addfld(fldListTo(compatm)%flds, 'Fall_fco2_lnd') + call addfld(fldListFr(complnd)%fields, 'Fall_fco2_lnd') + call addfld(fldListTo(compatm)%fields, 'Fall_fco2_lnd') else - call addmap(fldListFr(complnd)%flds, 'Fall_fco2_lnd', compatm, mapconsf, 'one', lnd2atm_map) - call addmrg(fldListTo(compatm)%flds, 'Fall_fco2_lnd', & + call addmap(fldListFr(complnd)%fields, 'Fall_fco2_lnd', compatm, mapconsf, 'one', lnd2atm_map) + call addmrg(fldListTo(compatm)%fields, 'Fall_fco2_lnd', & mrg_from=complnd, mrg_fld='Fall_fco2_lnd', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if @@ -3245,10 +3245,10 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface flux of CO2 from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%flds, 'Faoo_fco2_ocn') - call addfld(fldListTo(compatm)%flds, 'Faoo_fco2_ocn') + call addfld(fldListFr(compocn)%fields, 'Faoo_fco2_ocn') + call addfld(fldListTo(compatm)%fields, 'Faoo_fco2_ocn') else - call addmap(fldListFr(compocn)%flds, 'Faoo_fco2_ocn', compatm, mapconsd, 'one', ocn2atm_map) + call addmap(fldListFr(compocn)%fields, 'Faoo_fco2_ocn', compatm, mapconsd, 'one', ocn2atm_map) ! custom merge in med_phases_prep_atm end if endif diff --git a/mediator/med.F90 b/mediator/med.F90 index ac92f2638..25b16aa0a 100644 --- a/mediator/med.F90 +++ b/mediator/med.F90 @@ -874,7 +874,7 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) if (mastertask) write(logunit,*) nflds = med_fldList_GetNumFlds(fldListFr(ncomp)) do n = 1,nflds - call med_fldList_GetFldInfo(fldListFr(ncomp), n, stdname, shortname) + call med_fldList_GetFldInfo(fldListFr(ncomp), n, stdname=stdname, shortname=shortname) if (mastertask) then write(logunit,'(a)') trim(subname)//':Fr_'//trim(compname(ncomp))//': '//trim(shortname) end if @@ -891,7 +891,7 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) end do nflds = med_fldList_GetNumFlds(fldListTo(ncomp)) do n = 1,nflds - call med_fldList_GetFldInfo(fldListTo(ncomp), n, stdname, shortname) + call med_fldList_GetFldInfo(fldListTo(ncomp), n, stdname=stdname, shortname=shortname) if (mastertask) then write(logunit,'(a)') trim(subname)//':To_'//trim(compname(ncomp))//': '//trim(shortname) end if diff --git a/mediator/med_merge_mod.F90 b/mediator/med_merge_mod.F90 index bd1aa4f80..223b1da25 100644 --- a/mediator/med_merge_mod.F90 +++ b/mediator/med_merge_mod.F90 @@ -101,7 +101,7 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f num_merge_fields = med_fldList_GetNumFlds(fldListTo) allocate(merge_field_names(num_merge_fields)) do nfld_in = 1,num_merge_fields - call med_fldList_GetFldInfo(fldListTo, nfld_in, merge_field_names(nfld_in)) + call med_fldList_GetFldInfo(fldListTo, nfld_in, stdname=merge_field_names(nfld_in)) end do ! Want to loop over all of the fields in FBout here - and find the corresponding index in fldListTo(compxxx) @@ -112,7 +112,7 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f zero_output = .true. ! Loop over the field in fldListTo - do nfld_in = 1,med_fldList_GetNumFlds(fldListTo) + do nfld_in = 1,num_merge_fields if (trim(merge_field_names(nfld_in)) == trim(fieldnamelist(nfld_out))) then @@ -130,7 +130,7 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f end if ! Determine the merge information for the import field - call med_fldList_GetFldInfo(fldListTo, nfld_in, compsrc, merge_fields, merge_type, merge_fracname) + call med_fldList_GetFldInfo(fldListTo, nfld_in, compsrc=compsrc, merge_fields=merge_fields, merge_type=merge_type, merge_fracname=merge_fracname) if (merge_type /= 'unset' .and. merge_field /= 'unset') then ! If merge_field is a colon delimited string then cycle through every field - otherwise by default nm @@ -266,7 +266,7 @@ subroutine med_merge_auto_single_fldbun(compsrc, FBOut, FBfrac, FBIn, fldListTo, num_merge_fields = med_fldList_GetNumFlds(fldListTo) allocate(merge_field_names(num_merge_fields)) do nfld_in = 1,num_merge_fields - call med_fldList_GetFldInfo(fldListTo, nfld_in, merge_field_names(nfld_in)) + call med_fldList_GetFldInfo(fldListTo, nfld_in, stdname=merge_field_names(nfld_in)) end do ! Loop over all fields in output field bundle FBOut @@ -282,7 +282,7 @@ subroutine med_merge_auto_single_fldbun(compsrc, FBOut, FBfrac, FBIn, fldListTo, ! If the merge field name from the source components is not set, then simply go to the next component ! Determine the merge information for the import field - call med_fldList_GetFldInfo(fldListTo, nfld_in, compsrc, merge_fields, merge_type, merge_fracname) + call med_fldList_GetFldInfo(fldListTo, nfld_in, compsrc=compsrc, merge_fields=merge_fields, merge_type=merge_type, merge_fracname=merge_fracname) if (merge_type /= 'unset' .and. merge_field /= 'unset') then diff --git a/mediator/med_phases_prep_rof_mod.F90 b/mediator/med_phases_prep_rof_mod.F90 index e64eea43b..011b9a2b0 100644 --- a/mediator/med_phases_prep_rof_mod.F90 +++ b/mediator/med_phases_prep_rof_mod.F90 @@ -109,7 +109,7 @@ subroutine med_phases_prep_rof_init(gcomp, rc) nflds = med_fldlist_getnumflds(fldlistTo(comprof)) allocate(fldnames_temp(nflds)) do n = 1,nflds - call med_fldList_GetFldInfo(fldListTo(comprof), n, fldnames_temp(n)) + call med_fldList_GetFldInfo(fldListTo(comprof), n, stdname=fldnames_temp(n)) end do do n = 1,nflds if (trim(fldnames_temp(n)) == trim(is_local%wrap%flds_scalar_name)) then From cc86157cc5d2bd754771fcf1ee0f4e9032b40663 Mon Sep 17 00:00:00 2001 From: James Edwards Date: Sat, 19 Nov 2022 14:32:30 -0700 Subject: [PATCH 02/21] one the way to fully functional linked list implementation --- mediator/esmFlds.F90 | 357 +++-- mediator/esmFldsExchange_cesm_mod.F90 | 1940 +++++++++++++------------ mediator/esmFldsExchange_hafs_mod.F90 | 58 +- mediator/esmFldsExchange_nems_mod.F90 | 259 ++-- mediator/med_map_mod.F90 | 26 +- mediator/med_phases_prep_ice_mod.F90 | 5 +- mediator/med_phases_prep_lnd_mod.F90 | 4 +- mediator/med_phases_prep_rof_mod.F90 | 13 +- mediator/med_phases_prep_wav_mod.F90 | 4 +- 9 files changed, 1396 insertions(+), 1270 deletions(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index 422312021..01c148b9a 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -1,9 +1,9 @@ module esmflds - + use ESMF, only : ESMF_SUCCESS, ESMF_FAILURE use med_kind_mod, only : CX=>SHR_KIND_CX, CS=>SHR_KIND_CS, CL=>SHR_KIND_CL, R8=>SHR_KIND_R8 use med_internalstate_mod, only : ncomps, compname, compocn, compatm use med_internalstate_mod, only : mapfcopy, mapnames, mapunset - + use med_utils_mod , only : chkerr => med_utils_ChkErr implicit none private @@ -12,16 +12,31 @@ module esmflds !----------------------------------------------- public :: med_fldList_init1 - public :: med_fldList_AddFld - public :: med_fldList_AddMap - public :: med_fldList_AddMrg + + public :: med_fldList_AddFldFrom + public :: med_fldList_AddMapFrom + public :: med_fldList_AddMrgFrom + public :: med_fldList_AddFldTo + public :: med_fldList_AddMapTo + public :: med_fldList_AddMrgTo + + public :: med_fldList_AddOcnalbFld + + public :: med_fldList_AddaofluxFld + public :: med_fldList_AddaofluxMap + + private :: med_fldList_AddFld + private :: med_fldList_AddMap + private :: med_fldList_AddMrg + public :: med_fldList_GetFldNames public :: med_fldList_GetNumFlds public :: med_fldList_GetFldInfo public :: med_fldList_Realize public :: med_fldList_Document_Mapping public :: med_fldList_Document_Merging - + public :: med_fldList_GetFldListFr + public :: med_fldList_GetFldListTo !----------------------------------------------- ! Types and instantiations that determine fields, mappings, mergings !----------------------------------------------- @@ -51,21 +66,14 @@ module esmflds type (med_fldList_entry_type) :: fields end type med_fldList_type - interface med_fldList_GetFldInfo ; module procedure & - med_fldList_GetFldInfo_general, & - med_fldList_GetFldInfo_stdname, & - med_fldList_GetFldInfo_merging, & - med_fldList_GetFldInfo_index - end interface - !----------------------------------------------- ! Instantiate derived types !----------------------------------------------- - type (med_fldList_type), allocatable, public :: fldListTo(:) ! advertise fields to components - type (med_fldList_type), allocatable, public :: fldListFr(:) ! advertise fields from components + type (med_fldList_type), allocatable, target :: fldListTo(:) ! advertise fields to components + type (med_fldList_type), allocatable, target :: fldListFr(:) ! advertise fields from components - type (med_fldList_type), public :: fldListMed_aoflux - type (med_fldList_type), public :: fldListMed_ocnalb + type (med_fldList_type), target :: fldListMed_aoflux + type (med_fldList_type), target :: fldListMed_ocnalb integer :: rc character(len=CL) :: infostr @@ -81,8 +89,57 @@ subroutine med_fldlist_init1() allocate(fldlistFr(ncomps)) end subroutine med_fldlist_init1 + function med_fldList_GetFldListFr(index) result(fldList) + integer, intent(in) :: index + type(med_fldList_type), pointer :: fldList + + fldList => fldListFr(index) + end function Med_FldList_GetFldListFr + + function med_fldList_GetFldListTo(index) result(fldList) + integer, intent(in) :: index + type(med_fldList_type), pointer :: fldList + + fldList => fldListTo(index) + end function Med_FldList_GetFldListTo + + !================================================================================ - subroutine med_fldList_AddFld(flds, stdname, shortname) + subroutine med_fldList_AddFldFrom(index, stdname, shortname) + integer, intent(in) :: index + character(len=*) , intent(in) :: stdname + character(len=*) , intent(in) , optional :: shortname + + call med_fldList_AddFld(FldListFr(index)%fields, stdname, shortname) + + end subroutine med_fldList_AddFldFrom + !================================================================================ + subroutine med_fldList_AddaofluxFld(stdname, shortname) + character(len=*) , intent(in) :: stdname + character(len=*) , intent(in) , optional :: shortname + + call med_fldList_AddFld(fldListMed_aoflux%fields, stdname, shortname) + + end subroutine med_fldList_AddaofluxFld + !================================================================================ + subroutine med_fldList_AddocnalbFld(stdname, shortname) + character(len=*) , intent(in) :: stdname + character(len=*) , intent(in) , optional :: shortname + + call med_fldList_AddFld(fldListMed_ocnalb%fields, stdname, shortname) + + end subroutine med_fldList_AddocnalbFld + !================================================================================ + subroutine med_fldList_AddFldTo(index, stdname, shortname) + integer, intent(in) :: index + character(len=*) , intent(in) :: stdname + character(len=*) , intent(in) , optional :: shortname + + call med_fldList_AddFld(FldListTo(index)%fields, stdname, shortname) + + end subroutine med_fldList_AddFldTo + + subroutine med_fldList_AddFld(fields, stdname, shortname) ! ---------------------------------------------- ! Add an entry to to the flds array ! Use pointers to create an extensible allocatable array. @@ -108,7 +165,7 @@ subroutine med_fldList_AddFld(flds, stdname, shortname) newfld => fields found = .false. - do while(newfld%next) + do while(associated(newfld%next)) if (trim(stdname) == trim(newfld%stdname)) then found = .true. exit @@ -150,15 +207,33 @@ subroutine med_fldList_AddFld(flds, stdname, shortname) end subroutine med_fldList_AddFld !================================================================================ + subroutine med_fldList_AddMrgFrom(index, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname, rc) - subroutine med_fldList_AddMrg(flds, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname, rc) + ! ---------------------------------------------- + ! Determine mrg entry or entries in flds aray + ! ---------------------------------------------- + + ! input/output variables + integer , intent(in) :: index + character(len=*) , intent(in) :: fldname + integer , intent(in) :: mrg_from + character(len=*) , intent(in) :: mrg_fld + character(len=*) , intent(in) :: mrg_type + character(len=*) , intent(in), optional :: mrg_fracname + integer , intent(out), optional :: rc + + call med_FldList_addMrg(fldListFr(index)%fields, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname) + + end subroutine med_fldList_AddMrgFrom + !================================================================================ + subroutine med_fldList_AddMrgTo(index, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname, rc) ! ---------------------------------------------- ! Determine mrg entry or entries in flds aray ! ---------------------------------------------- ! input/output variables - type(med_fldList_entry_type) , pointer :: flds(:) + integer , intent(in) :: index character(len=*) , intent(in) :: fldname integer , intent(in) :: mrg_from character(len=*) , intent(in) :: mrg_fld @@ -166,32 +241,49 @@ subroutine med_fldList_AddMrg(flds, fldname, mrg_from, mrg_fld, mrg_type, mrg_fr character(len=*) , intent(in), optional :: mrg_fracname integer , intent(out), optional :: rc + call med_FldList_addMrg(fldListTo(index)%fields, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname) + + end subroutine med_fldList_AddMrgTo + subroutine med_fldList_AddMrg(flds, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname) + + ! ---------------------------------------------- + ! Determine mrg entry or entries in flds aray + ! ---------------------------------------------- + + ! input/output variables + type(med_fldList_entry_type) , intent(in), target :: flds + character(len=*) , intent(in) :: fldname + integer , intent(in) :: mrg_from + character(len=*) , intent(in) :: mrg_fld + character(len=*) , intent(in) :: mrg_type + character(len=*) , intent(in), optional :: mrg_fracname + ! local variables - integer :: lrc + integer :: rc type(med_fldList_entry_type), pointer :: newfld character(len=*), parameter :: subname='(med_fldList_AddMrg)' ! ---------------------------------------------- - newfld => med_fldList_GetFld(flds, fldname, lrc) - if (present(rc)) rc = lrc - if (chkerr(lrc,__LINE__,u_FILE_u)) return + newfld => med_fldList_GetFld(flds, fldname, rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return - newfld%merge_fields(n) = mrg_fld - newfld%merge_types(n) = mrg_type + newfld%merge_fields(mrg_from) = mrg_fld + newfld%merge_types(mrg_from) = mrg_type if (present(mrg_fracname)) then - newfld%merge_fracnames(n) = mrg_fracname + newfld%merge_fracnames(mrg_from) = mrg_fracname end if end subroutine med_fldList_AddMrg - function med_fldList_GetFld(flds, fldname, rc) result(newfld) - use ESMF, only : ESMF_LogWrite, ESMF_END_ABORT, ESMF_LOGMSG_ERROR, ESMF_Finalize + function med_fldList_GetFld(fields, fldname, rc) result(newfld) + use ESMF, only : ESMF_LogWrite, ESMF_END_ABORT, ESMF_LOGMSG_ERROR, ESMF_Finalize, ESMF_LOGMSG_INFO type(med_fldList_entry_type) , intent(in), target :: fields character(len=*) , intent(in) :: fldname type(med_fldList_entry_type), pointer :: newfld integer :: rc + character(len=*), parameter :: subname='(med_fldList_GetFld)' newfld => fields rc = ESMF_FAILURE @@ -214,29 +306,63 @@ function med_fldList_GetFld(flds, fldname, rc) result(newfld) end function med_fldList_GetFld !================================================================================ + subroutine med_fldList_AddMapFrom(index, fldname, destcomp, maptype, mapnorm, mapfile) + integer, intent(in) :: index + character(len=*) , intent(in) :: fldname + integer , intent(in) :: destcomp + integer , intent(in) :: maptype + character(len=*) , intent(in) :: mapnorm + character(len=*), optional , intent(in) :: mapfile + + call med_fldList_AddMap(FldListFr(index)%fields, fldname, destcomp, maptype, mapnorm, mapfile) + + end subroutine med_fldList_AddMapFrom + !================================================================================ + subroutine med_fldList_AddMapTo(index, fldname, destcomp, maptype, mapnorm, mapfile) + integer, intent(in) :: index + character(len=*) , intent(in) :: fldname + integer , intent(in) :: destcomp + integer , intent(in) :: maptype + character(len=*) , intent(in) :: mapnorm + character(len=*), optional , intent(in) :: mapfile + + call med_fldList_AddMap(FldListTo(index)%fields, fldname, destcomp, maptype, mapnorm, mapfile) + + end subroutine med_fldList_AddMapTo + !================================================================================ + subroutine med_fldList_AddaofluxMap(fldname, destcomp, maptype, mapnorm, mapfile) + character(len=*) , intent(in) :: fldname + integer , intent(in) :: destcomp + integer , intent(in) :: maptype + character(len=*) , intent(in) :: mapnorm + character(len=*), optional , intent(in) :: mapfile + + call med_fldList_AddMap(fldlistmed_aoflux%fields, fldname, destcomp, maptype, mapnorm, mapfile) + + end subroutine med_fldList_AddaofluxMap - subroutine med_fldList_AddMap(flds, fldname, destcomp, maptype, mapnorm, mapfile, rc) + subroutine med_fldList_AddMap(fields, fldname, destcomp, maptype, mapnorm, mapfile) use ESMF, only : ESMF_LOGMSG_ERROR, ESMF_FAILURE, ESMF_LogWrite, ESMF_LOGMSG_INFO ! intput/output variables + type(med_fldList_entry_type) , intent(in), target :: fields + character(len=*) , intent(in) :: fldname integer , intent(in) :: destcomp integer , intent(in) :: maptype character(len=*) , intent(in) :: mapnorm character(len=*), optional , intent(in) :: mapfile - integer , intent(out) :: rc ! local variables type(med_fldList_entry_type), pointer :: newfld - integer :: id, n + integer :: id, n, rc character(len=CX) :: lmapfile character(len=*),parameter :: subname='(med_fldList_AddMap)' ! ---------------------------------------------- lmapfile = 'unset' - rc = ESMF_FAILURE if (present(mapfile)) lmapfile = mapfile - newfld => med_fldList_GetFld(flds, fldname, rc) + newfld => med_fldList_GetFld(fields, fldname, rc) if (chkerr(rc,__LINE__,u_FILE_u)) return ! Note - default values are already set for the fld entries - so only non-default ! values need to be set below @@ -275,7 +401,7 @@ subroutine med_fldList_Realize(state, fldList, flds_scalar_name, flds_scalar_num use ESMF , only : ESMF_RC_ARG_BAD, ESMF_LogSetError, operator(==) ! input/output variables type(ESMF_State) , intent(inout) :: state - type(med_fldlist_type), intent(in) :: fldList + type(med_fldlist_type) , intent(in), target :: fldList character(len=*) , intent(in) :: flds_scalar_name integer , intent(in) :: flds_scalar_num character(len=*) , intent(in) :: tag @@ -284,8 +410,9 @@ subroutine med_fldList_Realize(state, fldList, flds_scalar_name, flds_scalar_num type(ESMF_Mesh) , intent(in) , optional :: mesh ! local variables - integer :: n, nflds + type(med_fldList_entry_type), pointer :: newfld integer :: itemCount + integer :: n type(ESMF_Field) :: field character(CS) :: shortname character(CS) :: stdname @@ -353,7 +480,6 @@ subroutine med_fldList_Realize(state, fldList, flds_scalar_name, flds_scalar_num enddo #endif - nflds = size(fldList%flds) call ESMF_StateGet(state, stateIntent=stateIntent, rc=rc) if (stateIntent==ESMF_STATEINTENT_EXPORT) then transferActionAttr="ProducerTransferAction" @@ -368,8 +494,9 @@ subroutine med_fldList_Realize(state, fldList, flds_scalar_name, flds_scalar_num return ! bail out endif - do n = 1, nflds - shortname = fldList%flds(n)%shortname + newfld => fldList%fields + do while(associated(newfld%next)) + shortname = newfld%shortname ! call ESMF_LogWrite(subname//' fld = '//trim(shortname), ESMF_LOGMSG_INFO) if (NUOPC_IsConnected(state, fieldName=shortname)) then @@ -477,13 +604,16 @@ end subroutine med_fldList_Realize !================================================================================ - subroutine med_fldList_GetFldInfo(fldList, fldindex, stdname, shortname, merge_field, merge_type, merge_fracname) + subroutine med_fldList_GetFldInfo(fldList, fldindex, compsrc, stdname, shortname, mapindex, mapFile, mapnorm, merge_fields, merge_type, merge_fracname) ! ---------------------------------------------- ! Get field info ! ---------------------------------------------- - type(med_fldList_type) , intent(in) :: fldList - integer , intent(in) :: fldindex + type(med_fldList_type) , intent(in), target :: fldList + integer , intent(in) :: fldindex integer , optional, intent(in) :: compsrc + integer , optional, intent(out) :: mapindex + character(len=*) , optional, intent(out) :: mapfile + character(len=*) , optional, intent(out) :: mapnorm character(len=*) , optional, intent(out) :: stdname character(len=*) , optional, intent(out) :: shortname character(len=*) , optional, intent(out) :: merge_fields @@ -499,81 +629,47 @@ subroutine med_fldList_GetFldInfo(fldList, fldindex, stdname, shortname, merge_f i = 0 lcompsrc = 1 newfld => fldList%fields - do while(newfld) + do while(associated(newfld%next)) i = i+1 if (i==fldindex) exit newfld => newfld%next enddo if(present(stdname)) then - stdname = fldList%fields%stdname + stdname = newfld%stdname endif if(present(shortname)) then - shortname = fldList%fields%shortname + shortname = newfld%shortname + endif + + if(present(mapindex)) then + if(present(compsrc)) lcompsrc = compsrc + mapindex = newfld%mapindex(compsrc) + endif + if(present(mapfile)) then + if(present(compsrc)) lcompsrc = compsrc + mapfile = newfld%mapfile(compsrc) + endif + if(present(mapnorm)) then + if(present(compsrc)) lcompsrc = compsrc + mapnorm = newfld%mapnorm(compsrc) endif if(present(merge_fields)) then if(present(compsrc)) lcompsrc = compsrc - merge_field = fldList%fields%merge_fields(compsrc) + merge_fields = newfld%merge_fields(compsrc) endif if(present(merge_type)) then if(present(compsrc)) lcompsrc = compsrc - merge_type = fldList%fields%merge_types(compsrc) + merge_type = newfld%merge_types(compsrc) endif if(present(merge_fracname)) then if(present(compsrc)) lcompsrc = compsrc - merge_fracname = fldList%fields%merge_fracnames(compsrc) + merge_fracname = newfld%merge_fracnames(compsrc) endif end subroutine med_fldList_GetFldInfo !================================================================================ - subroutine med_fldList_GetFldInfo_index(fldList, stdname_in, fldindex_out) - ! ---------------------------------------------- - ! Get field info - ! ---------------------------------------------- - type(med_fldList_type) , intent(in) :: fldList - character(len=*) , intent(in) :: stdname_in - integer , intent(out) :: fldindex_out - - ! local variables - integer :: n - character(len=*), parameter :: subname='(med_fldList_GetFldInfo_index)' - ! ---------------------------------------------- - - fldindex_out = 0 - if (associated(fldList%flds)) then - do n = 1,size(fldList%flds) - if (trim(fldList%flds(n)%stdname) == stdname_in) fldindex_out = n - enddo - endif - - end subroutine med_fldList_GetFldInfo_index - - !================================================================================ - - subroutine med_fldList_GetFldInfo_merging(fldList, fldindex, compsrc, merge_field, merge_type, merge_fracname) - ! ---------------------------------------------- - ! Get field merge info - ! ---------------------------------------------- - type(med_fldList_type) , intent(in) :: fldList - integer , intent(in) :: fldindex - integer , intent(in) :: compsrc - character(len=*) , intent(out) :: merge_field - character(len=*) , intent(out) :: merge_type - character(len=*) , intent(out) :: merge_fracname - - ! local variables - character(len=*), parameter :: subname='(med_fldList_GetFldInfo_merging)' - ! ---------------------------------------------- - - merge_field = fldList%flds(fldindex)%merge_fields(compsrc) - merge_type = fldList%flds(fldindex)%merge_types(compsrc) - merge_fracname = fldList%flds(fldindex)%merge_fracnames(compsrc) - - end subroutine med_fldList_GetFldInfo_merging - - !================================================================================ - integer function med_fldList_GetNumFlds(fldList) ! input/output variables @@ -581,9 +677,9 @@ integer function med_fldList_GetNumFlds(fldList) ! ---------------------------------------------- type(med_fldList_entry_type), pointer :: newfld - newfld => fldList + newfld => fldList%fields med_fldList_GetNumFlds = 0 - do while(newfld%next) + do while(associated(newfld%next)) med_fldList_GetNumFlds = med_fldList_GetNumFlds + 1 newfld => newfld%next end do @@ -592,31 +688,35 @@ end function med_fldList_GetNumFlds !================================================================================ - subroutine med_fldList_GetFldNames(flds, fldnames, rc) + subroutine med_fldList_GetFldNames(fields, fldnames, rc) use ESMF, only : ESMF_LOGMSG_INFO, ESMF_FAILURE, ESMF_SUCCESS, ESMF_LogWrite ! input/output variables - type(med_fldList_entry_type) , pointer :: flds(:) - character(len=*) , pointer :: fldnames(:) + type(med_fldList_entry_type) , intent(in), target :: fields + character(len=*) , intent(out), pointer :: fldnames(:) integer, optional , intent(out) :: rc !local variables + type(med_fldList_entry_type), pointer :: newfld integer :: n ! ---------------------------------------------- rc = ESMF_SUCCESS - if (associated(flds) .and. associated(fldnames)) then - do n = 1,size(flds) - fldnames(n) = trim(flds(n)%shortname) - end do - else - call ESMF_LogWrite("med_fldList_GetFldNames: ERROR either flds or fldnames have not been allocate ", & + if (.not. associated(fldnames) .or. .not. allocated(fields%mapindex)) then + call ESMF_LogWrite("med_fldList_GetFldNames: ERROR either fields or fldnames have not been allocate ", & ESMF_LOGMSG_INFO) rc = ESMF_FAILURE return - end if + endif + n = 0 + newfld => fields + do while(associated(newfld%next)) + n = n+1 + fldnames(n) = trim(newfld%shortname) + newfld => newfld%next + enddo end subroutine med_fldList_GetFldNames @@ -643,6 +743,7 @@ subroutine med_fldList_Document_Mapping(logunit, med_coupling_active) character(len=CL) :: mrgstr character(len=CL) :: cvalue logical :: init_mrgstr + type(med_fldList_entry_type), pointer :: newfld character(len=*),parameter :: subname = '(med_fldList_Document_Mapping)' !----------------------------------------------------------- @@ -657,12 +758,13 @@ subroutine med_fldList_Document_Mapping(logunit, med_coupling_active) if (nsrc /= ndst .and. med_coupling_active(nsrc,ndst)) then ! Write all the mappings for fields from the src to the destination component write(logunit,*)' ' - do n = 1,size(fldListFr(nsrc)%flds) - mapindex = fldListFr(nsrc)%flds(n)%mapindex(ndst) + newfld => fldListFr(nsrc)%fields + do while(associated(newfld%next)) + mapindex = newfld%mapindex(ndst) if ( mapindex /= mapunset) then - fldname = trim(fldListFr(nsrc)%flds(n)%stdname) - mapnorm = trim(fldListFr(nsrc)%flds(n)%mapnorm(ndst)) - mapfile = trim(fldListFr(nsrc)%flds(n)%mapfile(ndst)) + fldname = trim(newfld%stdname) + mapnorm = trim(newfld%mapnorm(ndst)) + mapfile = trim(newfld%mapfile(ndst)) if (trim(mapnorm) == 'unset') then cvalue = ' mapping '//trim(compname(nsrc))//'->'//trim(compname(ndst)) //' '//trim(fldname) // & @@ -677,6 +779,7 @@ subroutine med_fldList_Document_Mapping(logunit, med_coupling_active) write(logunit,101) trim(cvalue) end if end if + newfld => newfld%next end do end if @@ -686,13 +789,14 @@ subroutine med_fldList_Document_Mapping(logunit, med_coupling_active) ! ocn-> atm mappings for atm/ocn fluxes computed in mediator on the ocn grid nsrc = compocn ndst = compatm - if (med_coupling_active(nsrc,ndst) .and. associated(fldListMed_aoflux%flds)) then - do n = 1,size(fldListMed_aoflux%flds) - mapindex = fldlistMed_aoflux%flds(n)%mapindex(ndst) + if (med_coupling_active(nsrc,ndst) .and. allocated(fldListMed_aoflux%fields%mapindex)) then + newfld => fldListMed_aoflux%fields + do while(associated(newfld%next)) + mapindex = newfld%mapindex(ndst) if ( mapindex /= mapunset) then - fldname = trim(fldlistMed_aoflux%flds(n)%stdname) - mapnorm = trim(fldlistMed_aoflux%flds(n)%mapnorm(ndst)) - mapfile = trim(fldlistMed_aoflux%flds(n)%mapfile(ndst)) + fldname = trim(newfld%stdname) + mapnorm = trim(newfld%mapnorm(ndst)) + mapfile = trim(newfld%mapfile(ndst)) if (trim(mapnorm) == 'unset') then cvalue = ' mapping '//trim(compname(nsrc))//'->'//trim(compname(ndst)) //' '//trim(fldname) // & @@ -707,6 +811,7 @@ subroutine med_fldList_Document_Mapping(logunit, med_coupling_active) write(logunit,101) trim(cvalue) end if end if + newfld => newfld%next end do end if @@ -740,6 +845,7 @@ subroutine med_fldList_Document_Merging(logunit, med_coupling_active) character(len=CS) :: string character(len=CL) :: mrgstr logical :: init_mrgstr + type(med_fldList_entry_type), pointer :: newfld character(len=*),parameter :: subname = '(med_fldList_Document_Mapping)' !----------------------------------------------------------- @@ -751,8 +857,9 @@ subroutine med_fldList_Document_Merging(logunit, med_coupling_active) prefix = '(merge_to_'//trim(dst_comp)//')' ! Loop over all flds in the destination component and determine merging data - do nf = 1,size(fldListTo(ndst)%flds) - dst_field = fldListTo(ndst)%flds(nf)%stdname + newfld => fldListTo(ndst)%fields + do while(associated(newfld%next)) + dst_field = newfld%stdname ! Loop over all possible source components for destination component field mrgstr = ' ' @@ -760,9 +867,9 @@ subroutine med_fldList_Document_Merging(logunit, med_coupling_active) if (nsrc /= ndst .and. med_coupling_active(nsrc,ndst)) then src_comp = compname(nsrc) - merge_field = fldListTo(ndst)%flds(nf)%merge_fields(nsrc) - merge_type = fldListTo(ndst)%flds(nf)%merge_types(nsrc) - merge_frac = fldListTo(ndst)%flds(nf)%merge_fracnames(nsrc) + merge_field = newfld%merge_fields(nsrc) + merge_type = newfld%merge_types(nsrc) + merge_frac = newfld%merge_fracnames(nsrc) if (merge_type == 'merge' .or. merge_type == 'sum_with_weights') then string = trim(merge_frac)//'*'//trim(merge_field)//'('//trim(src_comp)//')' @@ -788,7 +895,7 @@ subroutine med_fldList_Document_Merging(logunit, med_coupling_active) end if end if end if - + newfld => newfld%next end do ! end loop over nsrc if (mrgstr /= ' ') then write(logunit,'(a)') trim(mrgstr) diff --git a/mediator/esmFldsExchange_cesm_mod.F90 b/mediator/esmFldsExchange_cesm_mod.F90 index be820095a..652946ad0 100644 --- a/mediator/esmFldsExchange_cesm_mod.F90 +++ b/mediator/esmFldsExchange_cesm_mod.F90 @@ -78,10 +78,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) use med_internalstate_mod , only : mapfcopy, mapnstod, mapnstod_consd, mapnstod_consf use med_internalstate_mod , only : coupling_mode use med_internalstate_mod , only : map_glc2ocn_ice, map_glc2ocn_liq, map_rof2ocn_ice, map_rof2ocn_liq - use esmFlds , only : addfld => med_fldList_AddFld - use esmFlds , only : addmap => med_fldList_AddMap - use esmFlds , only : addmrg => med_fldList_AddMrg - use esmflds , only : fldListTo, fldListFr, fldListMed_aoflux, fldListMed_ocnalb + use esmFlds , only : addocnalbfld => med_fldList_AddocnalbFld + use esmFlds , only : addaofluxfld => med_fldList_AddaofluxFld + use esmFlds , only : addaofluxMap => med_fldList_AddaofluxMap + + use esmFlds , only : addfldTo => med_fldList_AddFldTo + use esmFlds , only : addfldFrom => med_fldList_AddFldFrom + use esmFlds , only : addmapTo => med_fldList_AddMapTo + use esmFlds , only : addmapFrom => med_fldList_AddMapFrom + use esmFlds , only : addmrgTo => med_fldList_AddMrgTo + use esmFlds , only : addmrgFrom => med_fldList_AddMrgFrom ! input/output parameters: type(ESMF_GridComp) :: gcomp @@ -238,8 +244,8 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) call NUOPC_CompAttributeGet(gcomp, name="ScalarFieldName", value=cvalue, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return do n = 1,ncomps - call addfld(fldListFr(n)%fields, trim(cvalue)) - call addfld(fldListTo(n)%fields, trim(cvalue)) + call addfldFrom(n, trim(cvalue)) + call addfldTo(n, trim(cvalue)) end do end if @@ -251,49 +257,49 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to med: masks from components !---------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_lfrin') - call addfld(fldListFr(compocn)%fields, 'So_omask') - call addfld(fldListFr(compice)%fields, 'Si_imask') + call addfldFrom(complnd, 'Sl_lfrin') + call addfldFrom(compocn, 'So_omask') + call addfldFrom(compice, 'Si_imask') do ns = 1,is_local%wrap%num_icesheets - call addfld(fldlistFr(compglc(ns))%fields, 'Sg_area') + call addfldFrom(compglc(ns), 'Sg_area') end do else - call addmap(fldListFr(compocn)%flds, 'So_omask', compice, mapfcopy, 'unset', 'unset') + call addmapFrom(compocn, 'So_omask', compice, mapfcopy, 'unset', 'unset') end if ! --------------------------------------------------------------------- ! to med: atm and ocn fields required for atm/ocn flux calculation' ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_u') - call addfld(fldListFr(compatm)%fields, 'Sa_v') - call addfld(fldListFr(compatm)%fields, 'Sa_z') - call addfld(fldListFr(compatm)%fields, 'Sa_tbot') - call addfld(fldListFr(compatm)%fields, 'Sa_pbot') - call addfld(fldListFr(compatm)%fields, 'Sa_shum') - call addfld(fldListFr(compatm)%fields, 'Sa_ptem') - call addfld(fldListFr(compatm)%fields, 'Sa_dens') + call addFldFrom(compatm, 'Sa_u') + call addFldFrom(compatm, 'Sa_v') + call addFldFrom(compatm, 'Sa_z') + call addFldFrom(compatm, 'Sa_tbot') + call addFldFrom(compatm, 'Sa_pbot') + call addFldFrom(compatm, 'Sa_shum') + call addFldFrom(compatm, 'Sa_ptem') + call addFldFrom(compatm, 'Sa_dens') if (flds_wiso) then - call addfld(fldListFr(compatm)%fields, 'Sa_shum_wiso') + call addFldFrom(compatm, 'Sa_shum_wiso') end if else if (is_local%wrap%aoflux_grid == 'ogrid') then if (mapuv_with_cart3d) then - call addmap(fldListFr(compatm)%fields, 'Sa_u' , compocn, mappatch_uv3d, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Sa_v' , compocn, mappatch_uv3d, 'one', atm2ocn_map) + call addmapFrom(compatm, 'Sa_u' , compocn, mappatch_uv3d, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_v' , compocn, mappatch_uv3d, 'one', atm2ocn_map) else - call addmap(fldListFr(compatm)%fields, 'Sa_u' , compocn, mappatch, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Sa_v' , compocn, mappatch, 'one', atm2ocn_map) - end if - call addmap(fldListFr(compatm)%fields, 'Sa_z' , compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Sa_tbot', compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Sa_pbot', compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Sa_shum', compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Sa_ptem', compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Sa_dens', compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Sa_pslv', compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_u' , compocn, mappatch, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_v' , compocn, mappatch, 'one', atm2ocn_map) + end if + call addMapFrom(compatm, 'Sa_z' , compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_tbot', compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_pbot', compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_shum', compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_ptem', compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_dens', compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_pslv', compocn, mapbilnr, 'one', atm2ocn_map) if (fldchk(is_local%wrap%FBImp(compatm,compatm), 'Sa_shum_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_shum_wiso', compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_shum_wiso', compocn, mapbilnr, 'one', atm2ocn_map) end if end if end if @@ -302,16 +308,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to med: swnet fluxes used for budget calculation ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Fall_swnet') - call addfld(fldListFr(compice)%fields, 'Faii_swnet') - call addfld(fldListFr(compatm)%fields, 'Faxa_swnet') + call addFldFrom(complnd, 'Fall_swnet') + call addfldFrom(compice, 'Faii_swnet') + call addFldFrom(compatm, 'Faxa_swnet') else if (fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swnet', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swnet', compice, mapconsf, 'one' , atm2ice_map) - call addmap(fldListFr(compatm)%fields, 'Faxa_swnet', compocn, mapconsf, 'one' , atm2ocn_map) + call addMapFrom(compatm, 'Faxa_swnet', compice, mapconsf, 'one' , atm2ice_map) + call addMapFrom(compatm, 'Faxa_swnet', compocn, mapconsf, 'one' , atm2ocn_map) end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_swnet', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Faii_swnet', compocn, mapfcopy, 'unset', 'unset') + call addMapFrom(compice, 'Faii_swnet', compocn, mapfcopy, 'unset', 'unset') end if end if @@ -323,26 +329,26 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: height at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_z') - call addfld(fldListTo(complnd)%fields, 'Sa_z') + call addFldFrom(compatm, 'Sa_z') + call addfldTo(complnd, 'Sa_z') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_z', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_z', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_z', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_z', mrg_from=compatm, mrg_fld='Sa_z', mrg_type='copy') + call addMapFrom(compatm, 'Sa_z', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Sa_z', mrg_from=compatm, mrg_fld='Sa_z', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: surface height from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_topo') - call addfld(fldListTo(complnd)%fields, 'Sa_topo') + call addFldFrom(compatm, 'Sa_topo') + call addfldTo(complnd, 'Sa_topo') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_topo', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_topo', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_topo', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_topo', mrg_from=compatm, mrg_fld='Sa_topo', mrg_type='copy') + call addMapFrom(compatm, 'Sa_topo', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Sa_topo', mrg_from=compatm, mrg_fld='Sa_topo', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -350,99 +356,99 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: meridional wind at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_u') - call addfld(fldListTo(complnd)%fields, 'Sa_u') + call addFldFrom(compatm, 'Sa_u') + call addfldTo(complnd, 'Sa_u') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_u', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_u', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_u', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') + call addMapFrom(compatm, 'Sa_u', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_v') - call addfld(fldListTo(complnd)%fields, 'Sa_v') + call addFldFrom(compatm, 'Sa_v') + call addfldTo(complnd, 'Sa_v') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_v', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_v', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_v', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') + call addMapFrom(compatm, 'Sa_v', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: pressure at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_pbot') - call addfld(fldListTo(complnd)%fields, 'Sa_pbot') + call addFldFrom(compatm, 'Sa_pbot') + call addfldTo(complnd, 'Sa_pbot') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_pbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_pbot', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_pbot', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_pbot', mrg_from=compatm, mrg_fld='Sa_pbot', mrg_type='copy') + call addMapFrom(compatm, 'Sa_pbot', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Sa_pbot', mrg_from=compatm, mrg_fld='Sa_pbot', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: o3 at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_o3') - call addfld(fldListTo(complnd)%fields, 'Sa_o3') + call addFldFrom(compatm, 'Sa_o3') + call addfldTo(complnd, '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)%fields, 'Sa_o3', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_o3', mrg_from=compatm, mrg_fld='Sa_o3', mrg_type='copy') + call addMapFrom(compatm, 'Sa_o3', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrgTo(complnd, '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 - call addfld(fldListFr(compatm)%fields, 'Sa_tbot') - call addfld(fldListTo(complnd)%fields, 'Sa_tbot') + call addFldFrom(compatm, 'Sa_tbot') + call addfldTo(complnd, 'Sa_tbot') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_tbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_tbot', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_tbot', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') + call addMapFrom(compatm, 'Sa_tbot', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: potential temperature at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_ptem') - call addfld(fldListTo(complnd)%fields, 'Sa_ptem') + call addFldFrom(compatm, 'Sa_ptem') + call addfldTo(complnd, 'Sa_ptem') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_ptem', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_ptem', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_ptem', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_ptem', mrg_from=compatm, mrg_fld='Sa_ptem', mrg_type='copy') + call addMapFrom(compatm, 'Sa_ptem', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Sa_ptem', mrg_from=compatm, mrg_fld='Sa_ptem', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: specific humidity at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_shum') - call addfld(fldListTo(complnd)%fields, 'Sa_shum') + call addFldFrom(compatm, 'Sa_shum') + call addfldTo(complnd, 'Sa_shum') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_shum', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_shum', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_shum', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_shum', mrg_from=compatm, mrg_fld='Sa_shum', mrg_type='copy') + call addMapFrom(compatm, 'Sa_shum', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Sa_shum', mrg_from=compatm, mrg_fld='Sa_shum', mrg_type='copy') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_shum_wiso') - call addfld(fldListTo(complnd)%fields, 'Sa_shum_wiso') + call addFldFrom(compatm, 'Sa_shum_wiso') + call addfldTo(complnd, 'Sa_shum_wiso') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_shum_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_shum_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_shum_wiso', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_shum_wiso', mrg_from=compatm, mrg_fld='Sa_shum_wiso', mrg_type='copy') + call addMapFrom(compatm, 'Sa_shum_wiso', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Sa_shum_wiso', mrg_from=compatm, mrg_fld='Sa_shum_wiso', mrg_type='copy') end if end if end if @@ -450,59 +456,59 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: convective and large scale precipitation rate water equivalent from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_rainc') - call addfld(fldListTo(complnd)%fields, 'Faxa_rainc') + call addFldFrom(compatm, 'Faxa_rainc') + call addfldTo(complnd, 'Faxa_rainc') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_rainc', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_rainc', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_rainc', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_rainc', mrg_from=compatm, mrg_fld='Faxa_rainc', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_rainc', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_rainc', mrg_from=compatm, mrg_fld='Faxa_rainc', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_rainl') - call addfld(fldListTo(complnd)%fields, 'Faxa_rainl') + call addFldFrom(compatm, 'Faxa_rainl') + call addfldTo(complnd, 'Faxa_rainl') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_rainl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_rainl', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_rainl', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_rainl', mrg_from=compatm, mrg_fld='Faxa_rainl', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_rainl', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_rainl', mrg_from=compatm, mrg_fld='Faxa_rainl', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: convective and large-scale (stable) snow rate from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_snowc') - call addfld(fldListTo(complnd)%fields, 'Faxa_snowc') + call addFldFrom(compatm, 'Faxa_snowc') + call addfldTo(complnd, 'Faxa_snowc') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_snowc', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_snowc', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_snowc', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_snowc', mrg_from=compatm, mrg_fld='Faxa_snowc', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_snowc', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_snowc', mrg_from=compatm, mrg_fld='Faxa_snowc', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_snowl') - call addfld(fldListTo(complnd)%fields, 'Faxa_snowl') + call addFldFrom(compatm, 'Faxa_snowl') + call addfldTo(complnd, 'Faxa_snowl') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_snowl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_snowl', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_snowl', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_snowl', mrg_from=compatm, mrg_fld='Faxa_snowl', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_snowl', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_snowl', mrg_from=compatm, mrg_fld='Faxa_snowl', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: downward longwave heat flux from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_lwdn') - call addfld(fldListTo(complnd)%fields, 'Faxa_lwdn') + call addFldFrom(compatm, 'Faxa_lwdn') + call addfldTo(complnd, 'Faxa_lwdn') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_lwdn', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_lwdn', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_lwdn', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_lwdn', mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_lwdn', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_lwdn', mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -512,53 +518,53 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: downward Diffuse visible incident solar radiation from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swndr') - call addfld(fldListTo(complnd)%fields, 'Faxa_swndr') + call addFldFrom(compatm, 'Faxa_swndr') + call addfldTo(complnd, 'Faxa_swndr') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_swndr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_swndr', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swndr', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_swndr', mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_swndr', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_swndr', mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swvdr') - call addfld(fldListTo(complnd)%fields, 'Faxa_swvdr') + call addFldFrom(compatm, 'Faxa_swvdr') + call addfldTo(complnd, 'Faxa_swvdr') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_swvdr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_swvdr', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swvdr', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_swvdr', mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_swvdr', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_swvdr', mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swndf') - call addfld(fldListTo(complnd)%fields, 'Faxa_swndf') + call addFldFrom(compatm, 'Faxa_swndf') + call addfldTo(complnd, 'Faxa_swndf') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_swndf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_swndf', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swndf', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_swndf', mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_swndf', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_swndf', mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swvdf') - call addfld(fldListTo(complnd)%fields, 'Faxa_swvdf') + call addFldFrom(compatm, 'Faxa_swvdf') + call addfldTo(complnd, 'Faxa_swvdf') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_swvdf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_swvdf', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swvdf', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_swvdf', mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_swvdf', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_swvdf', mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_bcph') - call addfld(fldListTo(complnd)%fields, 'Faxa_bcph') + call addFldFrom(compatm, 'Faxa_bcph') + call addfldTo(complnd, 'Faxa_bcph') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_bcph', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_bcph', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_bcph', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_bcph', mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_bcph', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_bcph', mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -572,13 +578,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! - hydrophylic organic carbon wet deposition flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_ocph') - call addfld(fldListTo(complnd)%fields, 'Faxa_ocph') + call addFldFrom(compatm, 'Faxa_ocph') + call addfldTo(complnd, 'Faxa_ocph') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_ocph', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_ocph', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_ocph', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_ocph', mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_ocph', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_ocph', mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -586,36 +592,36 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: dust dry deposition flux (sizes 1-4) from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_dstwet') - call addfld(fldListTo(complnd)%fields, 'Faxa_dstwet') + call addFldFrom(compatm, 'Faxa_dstwet') + call addfldTo(complnd, 'Faxa_dstwet') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_dstwet', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_dstwet', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_dstwet', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_dstwet', mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_dstwet', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_dstwet', mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_dstdry') - call addfld(fldListTo(complnd)%fields, 'Faxa_dstdry') + call addFldFrom(compatm, 'Faxa_dstdry') + call addfldTo(complnd, 'Faxa_dstdry') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_dstdry', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_dstdry', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_dstdry', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_dstdry', mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_dstdry', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_dstdry', mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: nitrogen deposition fields from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_ndep') - call addfld(fldListTo(complnd)%fields, 'Faxa_ndep') + call addFldFrom(compatm, 'Faxa_ndep') + call addfldTo(complnd, 'Faxa_ndep') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_ndep', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_ndep', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_ndep', complnd, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Faxa_ndep', mrg_from=compatm, mrg_fld='Faxa_ndep', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_ndep', complnd, mapconsf, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Faxa_ndep', mrg_from=compatm, mrg_fld='Faxa_ndep', mrg_type='copy') end if end if @@ -627,87 +633,87 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: tributary channel depth ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(comprof)%fields, 'Flrr_volr') - call addfld(fldListTo(complnd)%fields, 'Flrr_volr') + call addfldFrom(comprof, 'Flrr_volr') + call addfldTo(complnd, 'Flrr_volr') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_volr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_volr', rc=rc)) then - call addmap(fldListFr(comprof)%fields, 'Flrr_volr', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Flrr_volr', mrg_from=comprof, mrg_fld='Flrr_volr', mrg_type='copy') + call addmapFrom(comprof, 'Flrr_volr', complnd, mapconsf, 'one', rof2lnd_map) + call addmrgTo(complnd, 'Flrr_volr', mrg_from=comprof, mrg_fld='Flrr_volr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(comprof)%fields, 'Flrr_volrmch') - call addfld(fldListTo(complnd)%fields, 'Flrr_volrmch') + call addfldFrom(comprof, 'Flrr_volrmch') + call addfldTo(complnd, 'Flrr_volrmch') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_volrmch', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_volrmch', rc=rc)) then - call addmap(fldListFr(comprof)%fields, 'Flrr_volrmch', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Flrr_volrmch', mrg_from=comprof, mrg_fld='Flrr_volrmch', mrg_type='copy') + call addmapFrom(comprof, 'Flrr_volrmch', complnd, mapconsf, 'one', rof2lnd_map) + call addmrgTo(complnd, 'Flrr_volrmch', mrg_from=comprof, mrg_fld='Flrr_volrmch', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(comprof)%fields, 'Flrr_flood') - call addfld(fldListTo(complnd)%fields, 'Flrr_flood') + call addfldFrom(comprof, 'Flrr_flood') + call addfldTo(complnd, 'Flrr_flood') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_flood', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_flood', rc=rc)) then - call addmap(fldListFr(comprof)%fields, 'Flrr_flood', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Flrr_flood', mrg_from=comprof, mrg_fld='Flrr_flood', mrg_type='copy') + call addmapFrom(comprof, 'Flrr_flood', complnd, mapconsf, 'one', rof2lnd_map) + call addmrgTo(complnd, 'Flrr_flood', mrg_from=comprof, mrg_fld='Flrr_flood', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(comprof)%fields, 'Sr_tdepth') - call addfld(fldListTo(complnd)%fields, 'Sr_tdepth') + call addfldFrom(comprof, 'Sr_tdepth') + call addfldTo(complnd, 'Sr_tdepth') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Sr_tdepth', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Sr_tdepth', rc=rc)) then - call addmap(fldListFr(comprof)%fields, 'Sr_tdepth', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sr_tdepth', mrg_from=comprof, mrg_fld='Sr_tdepth', mrg_type='copy') + call addmapFrom(comprof, 'Sr_tdepth', complnd, mapconsf, 'one', rof2lnd_map) + call addmrgTo(complnd, 'Sr_tdepth', mrg_from=comprof, mrg_fld='Sr_tdepth', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(comprof)%fields, 'Sr_tdepth_max') - call addfld(fldListTo(complnd)%fields, 'Sr_tdepth_max') + call addfldFrom(comprof, 'Sr_tdepth_max') + call addfldTo(complnd, 'Sr_tdepth_max') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Sr_tdepth_max', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Sr_tdepth_max', rc=rc)) then - call addmap(fldListFr(comprof)%fields, 'Sr_tdepth_max', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sr_tdepth_max', mrg_from=comprof, mrg_fld='Sr_tdepth_max', mrg_type='copy') + call addmapFrom(comprof, 'Sr_tdepth_max', complnd, mapconsf, 'one', rof2lnd_map) + call addmrgTo(complnd, 'Sr_tdepth_max', mrg_from=comprof, mrg_fld='Sr_tdepth_max', mrg_type='copy') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(comprof)%fields, 'Flrr_volr_wiso') - call addfld(fldListTo(complnd)%fields, 'Flrr_volr_wiso') + call addfldFrom(comprof, 'Flrr_volr_wiso') + call addfldTo(complnd, 'Flrr_volr_wiso') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_volr_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_volr_wiso', rc=rc)) then - call addmap(fldListFr(comprof)%fields, 'Flrr_volr_wiso', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Flrr_volr_wiso', & + call addmapFrom(comprof, 'Flrr_volr_wiso', complnd, mapconsf, 'one', rof2lnd_map) + call addmrgTo(complnd, 'Flrr_volr_wiso', & mrg_from=comprof, mrg_fld='Flrr_volr_wiso', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(comprof)%fields, 'Flrr_volrmch_wiso') - call addfld(fldListTo(complnd)%fields, 'Flrr_volrmch_wiso') + call addfldFrom(comprof, 'Flrr_volrmch_wiso') + call addfldTo(complnd, 'Flrr_volrmch_wiso') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_volrmch_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_volrmch_wiso', rc=rc)) then - call addmap(fldListFr(comprof)%fields, 'Flrr_volrmch_wiso', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Flrr_volrmch_wiso', & + call addmapFrom(comprof, 'Flrr_volrmch_wiso', complnd, mapconsf, 'one', rof2lnd_map) + call addmrgTo(complnd, 'Flrr_volrmch_wiso', & mrg_from=comprof, mrg_fld='Flrr_volrmch_wiso', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(comprof)%fields, 'Flrr_flood_wiso') - call addfld(fldListTo(complnd)%fields, 'Flrr_flood_wiso') + call addfldFrom(comprof, 'Flrr_flood_wiso') + call addfldTo(complnd, 'Flrr_flood_wiso') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_flood_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_flood_wiso', rc=rc)) then - call addmap(fldListFr(comprof)%fields, 'Flrr_flood_wiso', complnd, mapconsf, 'one', rof2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Flrr_flood_wiso', & + call addmapFrom(comprof, 'Flrr_flood_wiso', complnd, mapconsf, 'one', rof2lnd_map) + call addmrgTo(complnd, 'Flrr_flood_wiso', & mrg_from=comprof, mrg_fld='Flrr_flood_wiso', mrg_type='copy') end if end if @@ -725,24 +731,24 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (phase == 'advertise') then do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%fields, 'Sg_icemask') ! ice sheet grid coverage - call addfld(fldListFr(compglc(ns))%fields, 'Sg_icemask_coupled_fluxes') - call addfld(fldListFr(compglc(ns))%fields, 'Sg_ice_covered') ! fraction of glacier area - call addfld(fldListFr(compglc(ns))%fields, 'Sg_topo') ! surface height of glacer - call addfld(fldListFr(compglc(ns))%fields, 'Flgg_hflx') ! downward heat flux from glacier interior + call addfldFrom(compglc(ns), 'Sg_icemask') ! ice sheet grid coverage + call addfldFrom(compglc(ns), 'Sg_icemask_coupled_fluxes') + call addfldFrom(compglc(ns), 'Sg_ice_covered') ! fraction of glacier area + call addfldFrom(compglc(ns), 'Sg_topo') ! surface height of glacer + call addfldFrom(compglc(ns), 'Flgg_hflx') ! downward heat flux from glacier interior end do - call addfld(fldListTo(complnd)%fields, 'Sg_icemask') - call addfld(fldListTo(complnd)%fields, 'Sg_icemask_coupled_fluxes') - call addfld(fldListTo(complnd)%fields, 'Sg_ice_covered_elev') - call addfld(fldListTo(complnd)%fields, 'Sg_topo_elev') - call addfld(fldListTo(complnd)%fields, 'Flgg_hflx_elev') + call addfldTo(complnd, 'Sg_icemask') + call addfldTo(complnd, 'Sg_icemask_coupled_fluxes') + call addfldTo(complnd, 'Sg_ice_covered_elev') + call addfldTo(complnd, 'Sg_topo_elev') + call addfldTo(complnd, 'Flgg_hflx_elev') else ! custom merge in med_phases_prep_lnd for Sg_icemask and Sg_icemask_coupled_fluxes ! custom map merge in med_phases_prep_lnd for Sg_ice_covered_elev, Sg_topo_elev and Flgg_hflx_elev if ( fldchk(is_local%wrap%FBExp(complnd), 'Sg_icemask', rc=rc)) then do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Sg_icemask', rc=rc)) then - call addmap(fldListFr(compglc(ns))%fields, 'Sg_icemask', & + call addmapFrom(compglc(ns), 'Sg_icemask', & complnd, mapconsd, 'one', 'unset') end if end do @@ -750,7 +756,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if ( fldchk(is_local%wrap%FBExp(complnd), 'Sg_icemask_coupled_fluxes', rc=rc)) then do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Sg_icemask_coupled_fluxes', rc=rc)) then - call addmap(fldListFr(compglc(ns))%fields, 'Sg_icemask_coupled_fluxes', & + call addmapFrom(compglc(ns), 'Sg_icemask_coupled_fluxes', & complnd, mapconsd, 'one', 'unset') end if end do @@ -766,9 +772,9 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !---------------------------------------------------------- if (phase == 'advertise') then ! the following are computed in med_phases_prep_atm - call addfld(fldListTo(compatm)%fields, 'Sl_lfrac') - call addfld(fldListTo(compatm)%fields, 'Si_ifrac') - call addfld(fldListTo(compatm)%fields, 'So_ofrac') + call addfldTo(compatm, 'Sl_lfrac') + call addfldTo(compatm, 'Si_ifrac') + call addfldTo(compatm, 'So_ofrac') end if ! --------------------------------------------------------------------- @@ -778,108 +784,108 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: merged diffuse albedo (near-infrared radiation) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_avsdr') - call addfld(fldListFr(compice)%fields, 'Si_avsdr') - call addfld(fldListMed_ocnalb%fields , 'So_avsdr') - call addfld(fldListTo(compatm)%fields, 'Sx_avsdr') + call addFldFrom(complnd, 'Sl_avsdr') + call addfldFrom(compice, 'Si_avsdr') + call addocnalbFld('So_avsdr') + call addfldTo(compatm, 'Sx_avsdr') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_avsdr', rc=rc)) then ! Note that for aqua-plant there will be no import from complnd or compice - and the ! current logic below takes care of this. if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_avsdr', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Sl_avsdr', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_avsdr', & + call addmapFrom(complnd, 'Sl_avsdr', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm, 'Sx_avsdr', & mrg_from=complnd, mrg_fld='Sl_avsdr', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_avsdr', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Si_avsdr', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_avsdr', & + call addMapFrom(compice, 'Si_avsdr', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm, 'Sx_avsdr', & mrg_from=compice, mrg_fld='Si_avsdr', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_avsdr', rc=rc)) then - call addmap(fldListMed_ocnalb%fields , 'So_avsdr', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_avsdr', & + call addocnalpmap( 'So_avsdr', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrgTo(compatm, 'Sx_avsdr', & mrg_from=compmed, mrg_fld='So_avsdr', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_avsdf') - call addfld(fldListFr(compice)%fields, 'Si_avsdf') - call addfld(fldListMed_ocnalb%fields , 'So_avsdf') - call addfld(fldListTo(compatm)%fields, 'Sx_avsdf') + call addFldFrom(complnd, 'Sl_avsdf') + call addfldFrom(compice, 'Si_avsdf') + call addocnalbFld( 'So_avsdf') + call addfldTo(compatm, 'Sx_avsdf') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_avsdf', rc=rc)) then ! Note that for aqua-plant there will be no import from complnd or compice - and the ! current logic below takes care of this. if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_avsdf', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Sl_avsdf', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_avsdf', & + call addmapFrom(complnd, 'Sl_avsdf', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm, 'Sx_avsdf', & mrg_from=complnd, mrg_fld='Sl_avsdf', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_avsdf', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Si_avsdf', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_avsdf', & + call addMapFrom(compice, 'Si_avsdf', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm, 'Sx_avsdf', & mrg_from=compice, mrg_fld='Si_avsdf', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_avsdf', rc=rc)) then - call addmap(fldListMed_ocnalb%fields , 'So_avsdf', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_avsdf', & + call addocnalpmap( 'So_avsdf', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrgTo(compatm, 'Sx_avsdf', & mrg_from=compmed, mrg_fld='So_avsdf', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_anidr') - call addfld(fldListFr(compice)%fields, 'Si_anidr') - call addfld(fldListMed_ocnalb%fields , 'So_anidr') - call addfld(fldListTo(compatm)%fields, 'Sx_anidr') + call addFldFrom(complnd, 'Sl_anidr') + call addfldFrom(compice, 'Si_anidr') + call addocnalbFld( 'So_anidr') + call addfldTo(compatm, 'Sx_anidr') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_anidr', rc=rc)) then ! Note that for aqua-plant there will be no import from complnd or compice - and the ! current logic below takes care of this. if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_anidr', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Sl_anidr', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_anidr', & + call addmapFrom(complnd, 'Sl_anidr', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm, 'Sx_anidr', & mrg_from=complnd, mrg_fld='Sl_anidr', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_anidr', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Si_anidr', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_anidr', & + call addMapFrom(compice, 'Si_anidr', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm, 'Sx_anidr', & mrg_from=compice, mrg_fld='Si_anidr', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_anidr', rc=rc)) then - call addmap(fldListMed_ocnalb%fields , 'So_anidr', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_anidr', & + call addocnalpmap( 'So_anidr', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrgTo(compatm, 'Sx_anidr', & mrg_from=compmed, mrg_fld='So_anidr', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_anidf') - call addfld(fldListFr(compice)%fields, 'Si_anidf') - call addfld(fldListMed_ocnalb%fields , 'So_anidf') - call addfld(fldListTo(compatm)%fields, 'Sx_anidf') + call addFldFrom(complnd, 'Sl_anidf') + call addfldFrom(compice, 'Si_anidf') + call addocnalbFld( 'So_anidf') + call addfldTo(compatm, 'Sx_anidf') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_anidf', rc=rc)) then ! Note that for aqua-plant there will be no import from complnd or compice - and the ! current logic below takes care of this. if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_anidf', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Sl_anidf', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_anidf', & + call addmapFrom(complnd, 'Sl_anidf', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm, 'Sx_anidf', & mrg_from=complnd, mrg_fld='Sl_anidf', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_anidf', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Si_anidf', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_anidf', & + call addMapFrom(compice, 'Si_anidf', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm, 'Sx_anidf', & mrg_from=compice, mrg_fld='Si_anidf', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_anidf', rc=rc)) then - call addmap(fldListMed_ocnalb%fields , 'So_anidf', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_anidf', & + call addocnalpmap( 'So_anidf', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrgTo(compatm, 'Sx_anidf', & mrg_from=compmed, mrg_fld='So_anidf', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -893,81 +899,81 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields , 'Sl_tref') - call addfld(fldListFr(compice)%fields , 'Si_tref') - call addfld(fldListMed_aoflux%fields , 'So_tref') - call addfld(fldListTo(compatm)%fields , 'Sx_tref') + call addFldFrom(complnd , 'Sl_tref') + call addfldFrom(compice , 'Si_tref') + call addaofluxFld('So_tref') + call addfldTo(compatm , 'Sx_tref') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_tref', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_tref', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Sl_tref', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_tref', & + call addmapFrom(complnd , 'Sl_tref', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Sx_tref', & mrg_from=complnd, mrg_fld='Sl_tref', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_tref', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Si_tref', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_tref', & + call addMapFrom(compice , 'Si_tref', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Sx_tref', & mrg_from=compice, mrg_fld='Si_tref', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_tref', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields , 'So_tref', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('So_tref', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Sx_tref', & + call addmrgTo(compatm , 'Sx_tref', & mrg_from=compmed, mrg_fld='So_tref', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields , 'Sl_u10') - call addfld(fldListFr(compice)%fields , 'Si_u10') - call addfld(fldListMed_aoflux%fields , 'So_u10') - call addfld(fldListTo(compatm)%fields , 'Sx_u10') + call addFldFrom(complnd , 'Sl_u10') + call addfldFrom(compice , 'Si_u10') + call addaofluxFld('So_u10') + call addfldTo(compatm , 'Sx_u10') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_u10', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_u10', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Sl_u10', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_u10', & + call addmapFrom(complnd , 'Sl_u10', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Sx_u10', & mrg_from=complnd, mrg_fld='Sl_u10', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_u10', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Si_u10', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_u10', & + call addMapFrom(compice , 'Si_u10', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Sx_u10', & mrg_from=compice, mrg_fld='Si_u10', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_u10', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields, 'So_u10', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('So_u10', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Sx_u10', & + call addmrgTo(compatm , 'Sx_u10', & mrg_from=compmed, mrg_fld='So_u10', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields , 'Sl_qref') - call addfld(fldListFr(compice)%fields , 'Si_qref') - call addfld(fldListMed_aoflux%fields , 'So_qref') - call addfld(fldListTo(compatm)%fields , 'Sx_qref') + call addFldFrom(complnd , 'Sl_qref') + call addfldFrom(compice , 'Si_qref') + call addaofluxFld('So_qref') + call addfldTo(compatm , 'Sx_qref') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_qref', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_qref', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Sl_qref', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_qref', & + call addmapFrom(complnd , 'Sl_qref', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Sx_qref', & mrg_from=complnd, mrg_fld='Sl_qref', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_qref', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Si_qref', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_qref', & + call addMapFrom(compice , 'Si_qref', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Sx_qref', & mrg_from=compice, mrg_fld='Si_qref', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_qref', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields, 'So_qref', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('So_qref', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Sx_qref', & + call addmrgTo(compatm , 'Sx_qref', & mrg_from=compmed, mrg_fld='So_qref', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -975,27 +981,27 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields , 'Sl_qref_wiso') - call addfld(fldListFr(compice)%fields , 'Si_qref_wiso') - call addfld(fldListMed_aoflux%fields , 'So_qref_wiso') - call addfld(fldListTo(compatm)%fields , 'Sx_qref_wiso') + call addFldFrom(complnd , 'Sl_qref_wiso') + call addfldFrom(compice , 'Si_qref_wiso') + call addaofluxFld('So_qref_wiso') + call addfldTo(compatm , 'Sx_qref_wiso') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_qref_wiso', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_qref_wiso', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Sl_qref_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_qref_wiso', & + call addmapFrom(complnd , 'Sl_qref_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Sx_qref_wiso', & mrg_from=complnd, mrg_fld='Sl_qref_wiso', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_qref_wiso', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Si_qref_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_qref_wiso', & + call addMapFrom(compice , 'Si_qref_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Sx_qref_wiso', & mrg_from=compice, mrg_fld='Si_qref_wiso', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_qref_wiso', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields , 'So_qref_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) ! map ocn->atm + call addaofluxmap( 'So_qref_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) ! map ocn->atm end if - call addmrg(fldListTo(compatm)%fields , 'Sx_qref_wiso', & + call addmrgTo(compatm , 'Sx_qref_wiso', & mrg_from=compmed, mrg_fld='So_qref_wiso', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1009,81 +1015,81 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: merged reference specific water isoptope humidity at 2 meters ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields , 'Sl_tref') - call addfld(fldListFr(compice)%fields , 'Si_tref') - call addfld(fldListMed_aoflux%fields , 'So_tref') - call addfld(fldListTo(compatm)%fields , 'Sx_tref') + call addFldFrom(complnd , 'Sl_tref') + call addfldFrom(compice , 'Si_tref') + call addaofluxFld('So_tref') + call addfldTo(compatm , 'Sx_tref') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_tref', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_tref', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Sl_tref', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_tref', & + call addmapFrom(complnd , 'Sl_tref', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Sx_tref', & mrg_from=complnd, mrg_fld='Sl_tref', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_tref', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Si_tref', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_tref', & + call addMapFrom(compice , 'Si_tref', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Sx_tref', & mrg_from=compice, mrg_fld='Si_tref', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_tref', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields , 'So_tref', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('So_tref', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Sx_tref', & + call addmrgTo(compatm , 'Sx_tref', & mrg_from=compmed, mrg_fld='So_tref', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields , 'Sl_u10') - call addfld(fldListFr(compice)%fields , 'Si_u10') - call addfld(fldListMed_aoflux%fields , 'So_u10') - call addfld(fldListTo(compatm)%fields , 'Sx_u10') + call addFldFrom(complnd , 'Sl_u10') + call addfldFrom(compice , 'Si_u10') + call addaofluxFld('So_u10') + call addfldTo(compatm , 'Sx_u10') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_u10', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_u10', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Sl_u10', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_u10', & + call addmapFrom(complnd , 'Sl_u10', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Sx_u10', & mrg_from=complnd, mrg_fld='Sl_u10', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_u10', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Si_u10', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_u10', & + call addMapFrom(compice , 'Si_u10', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Sx_u10', & mrg_from=compice, mrg_fld='Si_u10', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_u10', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields, 'So_u10', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('So_u10', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Sx_u10', & + call addmrgTo(compatm , 'Sx_u10', & mrg_from=compmed, mrg_fld='So_u10', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields , 'Sl_qref') - call addfld(fldListFr(compice)%fields , 'Si_qref') - call addfld(fldListMed_aoflux%fields , 'So_qref') - call addfld(fldListTo(compatm)%fields , 'Sx_qref') + call addFldFrom(complnd , 'Sl_qref') + call addfldFrom(compice , 'Si_qref') + call addaofluxFld('So_qref') + call addfldTo(compatm , 'Sx_qref') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_qref', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_qref', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Sl_qref', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_qref', & + call addmapFrom(complnd , 'Sl_qref', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Sx_qref', & mrg_from=complnd, mrg_fld='Sl_qref', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_qref', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Si_qref', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_qref', & + call addMapFrom(compice , 'Si_qref', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Sx_qref', & mrg_from=compice, mrg_fld='Si_qref', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_qref', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields, 'So_qref', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('So_qref', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Sx_qref', & + call addmrgTo(compatm , 'Sx_qref', & mrg_from=compmed, mrg_fld='So_qref', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1091,27 +1097,27 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields , 'Sl_qref_wiso') - call addfld(fldListFr(compice)%fields , 'Si_qref_wiso') - call addfld(fldListMed_aoflux%fields , 'So_qref_wiso') - call addfld(fldListTo(compatm)%fields , 'Sx_qref_wiso') + call addFldFrom(complnd , 'Sl_qref_wiso') + call addfldFrom(compice , 'Si_qref_wiso') + call addaofluxFld('So_qref_wiso') + call addfldTo(compatm , 'Sx_qref_wiso') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_qref_wiso', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_qref_wiso', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Sl_qref_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_qref_wiso', & + call addmapFrom(complnd , 'Sl_qref_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Sx_qref_wiso', & mrg_from=complnd, mrg_fld='Sl_qref_wiso', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_qref_wiso', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Si_qref_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Sx_qref_wiso', & + call addMapFrom(compice , 'Si_qref_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Sx_qref_wiso', & mrg_from=compice, mrg_fld='Si_qref_wiso', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_qref_wiso', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields, 'So_qref_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('So_qref_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Sx_qref_wiso', & + call addmrgTo(compatm , 'Sx_qref_wiso', & mrg_from=compmed, mrg_fld='So_qref_wiso', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1127,162 +1133,162 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: evaporation water flux from water isotopes ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListTo(compatm)%fields, 'Faxx_taux') - call addfld(fldListFr(complnd)%fields, 'Fall_taux') - call addfld(fldListFr(compice)%fields, 'Faii_taux') - call addfld(fldListMed_aoflux%fields , 'Faox_taux') + call addfldTo(compatm, 'Faxx_taux') + call addFldFrom(complnd, 'Fall_taux') + call addfldFrom(compice, 'Faii_taux') + call addaofluxFld( 'Faox_taux') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_taux', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_taux', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Fall_taux', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_taux', & + call addmapFrom(complnd , 'Fall_taux', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Faxx_taux', & mrg_from=complnd, mrg_fld='Fall_taux', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_taux', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Faii_taux', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_taux', & + call addMapFrom(compice , 'Faii_taux', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Faxx_taux', & mrg_from=compice, mrg_fld='Faii_taux', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_taux', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields , 'Faox_taux', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('Faox_taux', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Faxx_taux', & + call addmrgTo(compatm , 'Faxx_taux', & mrg_from=compmed, mrg_fld='Faox_taux', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListTo(compatm)%fields, 'Faxx_tauy') - call addfld(fldListFr(complnd)%fields, 'Fall_tauy') - call addfld(fldListFr(compice)%fields, 'Faii_tauy') - call addfld(fldListMed_aoflux%fields , 'Faox_tauy') + call addfldTo(compatm, 'Faxx_tauy') + call addFldFrom(complnd, 'Fall_tauy') + call addfldFrom(compice, 'Faii_tauy') + call addaoflusFld( 'Faox_tauy') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_tauy', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_tauy', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Fall_tauy', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_tauy', & + call addmapFrom(complnd , 'Fall_tauy', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Faxx_tauy', & mrg_from=complnd, mrg_fld='Fall_tauy', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_tauy', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Faii_tauy', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_tauy', & + call addMapFrom(compice , 'Faii_tauy', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Faxx_tauy', & mrg_from=compice, mrg_fld='Faii_tauy', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_tauy', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields , 'Faox_tauy', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('Faox_tauy', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Faxx_tauy', & + call addmrgTo(compatm , 'Faxx_tauy', & mrg_from=compmed, mrg_fld='Faox_tauy', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListTo(compatm)%fields, 'Faxx_lat') - call addfld(fldListFr(complnd)%fields, 'Fall_lat') - call addfld(fldListFr(compice)%fields, 'Faii_lat') - call addfld(fldListMed_aoflux%fields , 'Faox_lat') + call addfldTo(compatm, 'Faxx_lat') + call addFldFrom(complnd, 'Fall_lat') + call addfldFrom(compice, 'Faii_lat') + call addaoflusFld( 'Faox_lat') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_lat', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_lat', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Fall_lat', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_lat', & + call addmapFrom(complnd , 'Fall_lat', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Faxx_lat', & mrg_from=complnd, mrg_fld='Fall_lat', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_lat', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Faii_lat', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_lat', & + call addMapFrom(compice , 'Faii_lat', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Faxx_lat', & mrg_from=compice, mrg_fld='Faii_lat', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_lat', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields , 'Faox_lat', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('Faox_lat', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Faxx_lat', & + call addmrgTo(compatm , 'Faxx_lat', & mrg_from=compmed, mrg_fld='Faox_lat', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListTo(compatm)%fields, 'Faxx_sen') - call addfld(fldListFr(complnd)%fields, 'Fall_sen') - call addfld(fldListFr(compice)%fields, 'Faii_sen') - call addfld(fldListMed_aoflux%fields , 'Faox_sen') + call addfldTo(compatm, 'Faxx_sen') + call addFldFrom(complnd, 'Fall_sen') + call addfldFrom(compice, 'Faii_sen') + call addaoflusFld( 'Faox_sen') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_sen', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_sen', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Fall_sen', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_sen', & + call addmapFrom(complnd , 'Fall_sen', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Faxx_sen', & mrg_from=complnd, mrg_fld='Fall_sen', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_sen', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Faii_sen', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_sen', & + call addMapFrom(compice , 'Faii_sen', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Faxx_sen', & mrg_from=compice, mrg_fld='Faii_sen', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_sen', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields , 'Faox_sen', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('Faox_sen', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Faxx_sen', & + call addmrgTo(compatm , 'Faxx_sen', & mrg_from=compmed, mrg_fld='Faox_sen', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListTo(compatm)%fields, 'Faxx_evap') - call addfld(fldListFr(complnd)%fields, 'Fall_evap') - call addfld(fldListFr(compice)%fields, 'Faii_evap') - call addfld(fldListMed_aoflux%fields , 'Faox_evap') + call addfldTo(compatm, 'Faxx_evap') + call addFldFrom(complnd, 'Fall_evap') + call addfldFrom(compice, 'Faii_evap') + call addaoflusFld( 'Faox_evap') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_evap', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_evap', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Fall_evap', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_evap', & + call addmapFrom(complnd , 'Fall_evap', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Faxx_evap', & mrg_from=complnd, mrg_fld='Fall_evap', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_evap', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Faii_evap', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_evap', & + call addMapFrom(compice , 'Faii_evap', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Faxx_evap', & mrg_from=compice, mrg_fld='Faii_evap', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_evap', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields , 'Faox_evap', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('Faox_evap', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Faxx_evap', & + call addmrgTo(compatm , 'Faxx_evap', & mrg_from=compmed, mrg_fld='Faox_evap', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfld(fldListTo(compatm)%fields, 'Faxx_lwup') - call addfld(fldListFr(complnd)%fields, 'Fall_lwup') - call addfld(fldListFr(compice)%fields, 'Faii_lwup') - call addfld(fldListMed_aoflux%fields , 'Faox_lwup') + call addfldTo(compatm, 'Faxx_lwup') + call addFldFrom(complnd, 'Fall_lwup') + call addfldFrom(compice, 'Faii_lwup') + call addaoflusFld( 'Faox_lwup') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_lwup', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_lwup', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Fall_lwup', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_lwup', & + call addmapFrom(complnd , 'Fall_lwup', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Faxx_lwup', & mrg_from=complnd, mrg_fld='Fall_lwup', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_lwup', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Faii_lwup', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_lwup', & + call addMapFrom(compice , 'Faii_lwup', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Faxx_lwup', & mrg_from=compice, mrg_fld='Faii_lwup', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_lwup', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields, 'Faox_lwup', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('Faox_lwup', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields, 'Faxx_lwup', & + call addmrgTo(compatm, 'Faxx_lwup', & mrg_from=compmed, mrg_fld='Faox_lwup', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1290,27 +1296,27 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListTo(compatm)%fields, 'Faxx_evap_wiso') - call addfld(fldListFr(complnd)%fields, 'Fall_evap_wiso') - call addfld(fldListFr(compice)%fields, 'Faii_evap_wiso') - call addfld(fldListMed_aoflux%fields , 'Faox_evap_wiso') + call addfldTo(compatm, 'Faxx_evap_wiso') + call addFldFrom(complnd, 'Fall_evap_wiso') + call addfldFrom(compice, 'Faii_evap_wiso') + call addaoflusFld( 'Faox_evap_wiso') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_evap_wiso', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_evap_wiso', rc=rc)) then - call addmap(fldListFr(complnd)%fields , 'Fall_evap_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_evap_wiso', & + call addmapFrom(complnd , 'Fall_evap_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm , 'Faxx_evap_wiso', & mrg_from=complnd, mrg_fld='Fall_evap_wiso', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_evap_wiso', rc=rc)) then - call addmap(fldListFr(compice)%fields , 'Faii_evap_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields , 'Faxx_evap_wiso', & + call addMapFrom(compice , 'Faii_evap_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm , 'Faxx_evap_wiso', & mrg_from=compice, mrg_fld='Faii_evap_wiso', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_evap_wiso', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields, 'Faox_evap_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap('Faox_evap_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'Faxx_evap_wiso', & + call addmrgTo(compatm , 'Faxx_evap_wiso', & mrg_from=compmed, mrg_fld='Faox_evap_wiso', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1321,31 +1327,31 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: merged surface temperature and unmerged temperatures from ice and ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_t') - call addfld(fldListFr(compice)%fields, 'Si_t') - call addfld(fldListFr(compocn)%fields, 'So_t') - call addfld(fldListTo(compatm)%fields, 'So_t') - call addfld(fldListTo(compatm)%fields, 'Sx_t') + call addFldFrom(complnd, 'Sl_t') + call addfldFrom(compice, 'Si_t') + call addfldFrom(compocn, 'So_t') + call addfldTo(compatm, 'So_t') + call addfldTo(compatm, 'Sx_t') else if (fldchk(is_local%wrap%FBexp(compatm), 'Sx_t', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_t', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Sl_t', compatm, mapconsf , 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_t', & + call addmapFrom(complnd, 'Sl_t', compatm, mapconsf , 'lfrin', lnd2atm_map) + call addmrgTo(compatm, 'Sx_t', & mrg_from=complnd, mrg_fld='Sl_t', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_t', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Si_t', compatm, mapconsf , 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_t', & + call addMapFrom(compice, 'Si_t', compatm, mapconsf , 'ifrac', ice2atm_map) + call addmrgTo(compatm, 'Sx_t', & mrg_from=compice, mrg_fld='Si_t', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_t', rc=rc)) then - call addmap(fldListFr(compocn)%fields, 'So_t', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sx_t', & + call addmapFrom(compocn, 'So_t', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrgTo(compatm, 'Sx_t', & mrg_from=compocn, mrg_fld='So_t', mrg_type='merge', mrg_fracname='ofrac') end if end if if (fldchk(is_local%wrap%FBexp(compatm), 'So_t', rc=rc)) then - call addmrg(fldListTo(compatm)%fields, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') + call addmrgTo(compatm, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') end if end if @@ -1355,33 +1361,33 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: mean snow volume per unit area from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields, 'Si_snowh') - call addfld(fldListTo(compatm)%fields, 'Si_snowh') + call addfldFrom(compice, 'Si_snowh') + call addfldTo(compatm, 'Si_snowh') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Si_snowh', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Si_snowh', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Si_snowh', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Si_snowh', mrg_from=compice, mrg_fld='Si_snowh', mrg_type='copy') + call addMapFrom(compice, 'Si_snowh', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm, 'Si_snowh', mrg_from=compice, mrg_fld='Si_snowh', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields, 'Si_vice') - call addfld(fldListTo(compatm)%fields, 'Si_vice') + call addfldFrom(compice, 'Si_vice') + call addfldTo(compatm, 'Si_vice') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Si_vice', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Si_vice', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Si_vice', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Si_vice', mrg_from=compice, mrg_fld='Si_vice', mrg_type='copy') + call addMapFrom(compice, 'Si_vice', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm, 'Si_vice', mrg_from=compice, mrg_fld='Si_vice', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields, 'Si_vsno') - call addfld(fldListTo(compatm)%fields, 'Si_vsno') + call addfldFrom(compice, 'Si_vsno') + call addfldTo(compatm, 'Si_vsno') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Si_vsno', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Si_vsno', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Si_vsno', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Si_vsno', mrg_from=compice, mrg_fld='Si_vsno', mrg_type='copy') + call addMapFrom(compice, 'Si_vsno', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrgTo(compatm, 'Si_vsno', mrg_from=compice, mrg_fld='Si_vsno', mrg_type='copy') end if end if @@ -1391,39 +1397,39 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface fraction velocity from med aoflux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListMed_aoflux%fields , 'So_ssq') - call addfld(fldListTo(compatm)%fields , 'So_ssq') + call addaofluxFld('So_ssq') + call addfldTo(compatm , 'So_ssq') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'So_ssq', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'So_ssq', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields , 'So_ssq', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap( 'So_ssq', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'So_ssq', mrg_from=compmed, mrg_fld='So_ssq', mrg_type='copy') + call addmrgTo(compatm , 'So_ssq', mrg_from=compmed, mrg_fld='So_ssq', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListMed_aoflux%fields , 'So_re') - call addfld(fldListTo(compatm)%fields , 'So_re') + call addaofluxFld('So_re') + call addfldTo(compatm , 'So_re') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'So_re', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'So_re', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields , 'So_re', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap( 'So_re', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'So_re', mrg_from=compmed, mrg_fld='So_re', mrg_type='copy') + call addmrgTo(compatm , 'So_re', mrg_from=compmed, mrg_fld='So_re', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListMed_aoflux%fields , 'So_ustar') - call addfld(fldListTo(compatm)%fields , 'So_ustar') + call addaofluxFld('So_ustar') + call addfldTo(compatm , 'So_ustar') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'So_ustar', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'So_ustar', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%fields , 'So_ustar', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addaofluxmap( 'So_ustar', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrg(fldListTo(compatm)%fields , 'So_ustar', mrg_from=compmed, mrg_fld='So_ustar', mrg_type='copy') + call addmrgTo(compatm , 'So_ustar', mrg_from=compmed, mrg_fld='So_ustar', mrg_type='copy') end if end if @@ -1433,59 +1439,59 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface snow water equivalent from land ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_fv') - call addfld(fldListTo(compatm)%fields, 'Sl_fv') + call addFldFrom(complnd, 'Sl_fv') + call addfldTo(compatm, 'Sl_fv') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_fv', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_fv', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Sl_fv', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sl_fv', mrg_from=complnd, mrg_fld='Sl_fv', mrg_type='copy') + call addmapFrom(complnd, 'Sl_fv', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm, 'Sl_fv', mrg_from=complnd, mrg_fld='Sl_fv', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_ram1') - call addfld(fldListTo(compatm)%fields, 'Sl_ram1') + call addFldFrom(complnd, 'Sl_ram1') + call addfldTo(compatm, 'Sl_ram1') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_ram1', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_ram1', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Sl_ram1', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sl_ram1', mrg_from=complnd, mrg_fld='Sl_ram1', mrg_type='copy') + call addmapFrom(complnd, 'Sl_ram1', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm, 'Sl_ram1', mrg_from=complnd, mrg_fld='Sl_ram1', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_snowh') - call addfld(fldListTo(compatm)%fields, 'Sl_snowh') + call addFldFrom(complnd, 'Sl_snowh') + call addfldTo(compatm, 'Sl_snowh') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_snowh', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_snowh', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Sl_snowh', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sl_snowh', mrg_from=complnd, mrg_fld='Sl_snowh', mrg_type='copy') + call addmapFrom(complnd, 'Sl_snowh', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm, 'Sl_snowh', mrg_from=complnd, mrg_fld='Sl_snowh', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! CARMA fields (volumetric soil water) !----------------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_soilw') - call addfld(fldListTo(compatm)%fields, 'Sl_soilw') + call addFldFrom(complnd, 'Sl_soilw') + call addfldTo(compatm, 'Sl_soilw') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_soilw', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_soilw', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Sl_soilw', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sl_soilw', mrg_from=complnd, mrg_fld='Sl_soilw', mrg_type='copy') + call addmapFrom(complnd, 'Sl_soilw', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm, 'Sl_soilw', mrg_from=complnd, mrg_fld='Sl_soilw', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to atm: dust fluxes from land (4 sizes) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Fall_flxdst') - call addfld(fldListTo(compatm)%fields, 'Fall_flxdst') + call addFldFrom(complnd, 'Fall_flxdst') + call addfldTo(compatm, 'Fall_flxdst') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Fall_flxdst', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Fall_flxdst', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Fall_flxdst', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Fall_flxdst', & + call addmapFrom(complnd, 'Fall_flxdst', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrgTo(compatm, 'Fall_flxdst', & mrg_from=complnd, mrg_fld='Fall_flxdst', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -1493,13 +1499,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: MEGAN emissions fluxes from land !----------------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Fall_voc') - call addfld(fldListTo(compatm)%fields, 'Fall_voc') + call addFldFrom(complnd, 'Fall_voc') + call addfldTo(compatm, 'Fall_voc') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Fall_voc', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Fall_voc', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Fall_voc', compatm, mapconsf, 'one', atm2lnd_map) - call addmrg(fldListTo(compatm)%fields, 'Fall_voc', & + call addmapFrom(complnd, 'Fall_voc', compatm, mapconsf, 'one', atm2lnd_map) + call addmrgTo(compatm, 'Fall_voc', & mrg_from=complnd, mrg_fld='Fall_voc', mrg_type='merge', mrg_fracname='lfrac') end if end if @@ -1508,38 +1514,38 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !----------------------------------------------------------------------------- ! 'wild fire emission fluxes' if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Fall_fire') - call addfld(fldListTo(compatm)%fields, 'Fall_fire') + call addFldFrom(complnd, 'Fall_fire') + call addfldTo(compatm, 'Fall_fire') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Fall_fire', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Fall_fire', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Fall_fire', compatm, mapconsf, 'one', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Fall_fire', & + call addmapFrom(complnd, 'Fall_fire', compatm, mapconsf, 'one', lnd2atm_map) + call addmrgTo(compatm, 'Fall_fire', & mrg_from=complnd, mrg_fld='Fall_fire', mrg_type='merge', mrg_fracname='lfrac') end if end if ! 'wild fire plume height' if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_fztop') - call addfld(fldListTo(compatm)%fields, 'Sl_fztop') + call addFldFrom(complnd, 'Sl_fztop') + call addfldTo(compatm, 'Sl_fztop') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Sl_fztop', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Sl_fztop', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Sl_fztop', compatm, mapconsf, 'one', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sl_fztop', mrg_from=complnd, mrg_fld='Sl_fztop', mrg_type='copy') + call addmapFrom(complnd, 'Sl_fztop', compatm, mapconsf, 'one', lnd2atm_map) + call addmrgTo(compatm, 'Sl_fztop', mrg_from=complnd, mrg_fld='Sl_fztop', mrg_type='copy') end if end if !----------------------------------------------------------------------------- ! to atm: dry deposition velocities from land !----------------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_ddvel') - call addfld(fldListTo(compatm)%fields, 'Sl_ddvel') + call addFldFrom(complnd, 'Sl_ddvel') + call addfldTo(compatm, 'Sl_ddvel') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Sl_ddvel', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Sl_ddvel', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Sl_ddvel', compatm, mapconsf, 'one', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Sl_ddvel', mrg_from=complnd, mrg_fld='Sl_ddvel', mrg_type='copy') + call addmapFrom(complnd, 'Sl_ddvel', compatm, mapconsf, 'one', lnd2atm_map) + call addmrgTo(compatm, 'Sl_ddvel', mrg_from=complnd, mrg_fld='Sl_ddvel', mrg_type='copy') end if end if @@ -1551,11 +1557,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: fractional ice coverage wrt ocean from ice !---------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields, 'Si_ifrac') - call addfld(fldListTo(compocn)%fields, 'Si_ifrac') + call addfldFrom(compice, 'Si_ifrac') + call addFldTo(compocn, 'Si_ifrac') else - call addmap(fldListFr(compice)%fields, 'Si_ifrac', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%fields, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') + call addMapFrom(compice, 'Si_ifrac', compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') end if ! --------------------------------------------------------------------- @@ -1566,57 +1572,57 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: downward diffuse visible incident solar radiation from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_lwdn') - call addfld(fldListTo(compocn)%fields, 'Faxa_lwdn') + call addFldFrom(compatm, 'Faxa_lwdn') + call addFldTo(compocn, 'Faxa_lwdn') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_lwdn', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwdn', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_lwdn', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_lwdn', & + call addMapFrom(compatm, 'Faxa_lwdn', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_lwdn', & mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swndr') - call addfld(fldListTo(compocn)%fields, 'Faxa_swndr') + call addFldFrom(compatm, 'Faxa_swndr') + call addFldTo(compocn, 'Faxa_swndr') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swndr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swndr', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swndr', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_swndr', & + call addMapFrom(compatm, 'Faxa_swndr', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_swndr', & mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swndf') - call addfld(fldListTo(compocn)%fields, 'Faxa_swndf') + call addFldFrom(compatm, 'Faxa_swndf') + call addFldTo(compocn, 'Faxa_swndf') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swndf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swndf', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swndf', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_swndf', & + call addMapFrom(compatm, 'Faxa_swndf', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_swndf', & mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swvdr') - call addfld(fldListTo(compocn)%fields, 'Faxa_swvdr') + call addFldFrom(compatm, 'Faxa_swvdr') + call addFldTo(compocn, 'Faxa_swvdr') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swvdr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swvdr', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swvdr', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_swvdr', & + call addMapFrom(compatm, 'Faxa_swvdr', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_swvdr', & mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swvdf') - call addfld(fldListTo(compocn)%fields, 'Faxa_swvdf') + call addFldFrom(compatm, 'Faxa_swvdf') + call addFldTo(compocn, 'Faxa_swvdf') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swvdf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swvdf', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swvdf', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_swvdf', & + call addMapFrom(compatm, 'Faxa_swvdf', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_swvdf', & mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -1625,12 +1631,12 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: surface upward longwave heat flux from mediator ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListMed_aoflux%fields , 'Faox_lwup') - call addfld(fldListTo(compocn)%fields , 'Foxx_lwup') + call addaofluxFld('Faox_lwup') + call addFldTo(compocn , 'Foxx_lwup') else if ( fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_lwup', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn), 'Foxx_lwup', rc=rc)) then - call addmrg(fldListTo(compocn)%fields, 'Foxx_lwup', & + call addmrgTo(compocn, 'Foxx_lwup', & mrg_from=compmed, mrg_fld='Faox_lwup', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1638,18 +1644,18 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: merged longwave net heat flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields , 'Faxa_lwdn') - call addfld(fldListMed_aoflux%fields , 'Faox_lwup' ) - call addfld(fldListTo(compocn)%fields , 'Foxx_lwnet') + call addFldFrom(compatm , 'Faxa_lwdn') + call addaofluxFld('Faox_lwup' ) + call addFldTo(compocn , 'Foxx_lwnet') else ! (mom6) (send longwave net to ocn via auto merge) if ( fldchk(is_local%wrap%FBExp(compocn) , 'Foxx_lwnet', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'Faox_lwup' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwdn' , rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_lwdn', compocn, mapconsf, 'one' , atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Foxx_lwnet', & + call addMapFrom(compatm, 'Faxa_lwdn', compocn, mapconsf, 'one' , atm2ocn_map) + call addmrgTo(compocn, 'Foxx_lwnet', & mrg_from=compmed, mrg_fld='Faox_lwup', mrg_type='merge', mrg_fracname='ofrac') - call addmrg(fldListTo(compocn)%fields, 'Foxx_lwnet', & + call addmrgTo(compocn, 'Foxx_lwnet', & mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1657,13 +1663,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: downward shortwave heat flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swdn') - call addfld(fldListTo(compocn)%fields, 'Faxa_swdn') + call addFldFrom(compatm, 'Faxa_swdn') + call addFldTo(compocn, 'Faxa_swdn') else if (fldchk(is_local%wrap%FBImp(compatm, compatm), 'Faxa_swdn', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swdn', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swdn', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_swdn', & + call addMapFrom(compatm, 'Faxa_swdn', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_swdn', & mrg_from=compatm, mrg_fld='Faxa_swdn', mrg_type='copy') end if end if @@ -1671,28 +1677,28 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: net shortwave radiation from med ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swvdr') - call addfld(fldListFr(compatm)%fields, 'Faxa_swndr') - call addfld(fldListFr(compatm)%fields, 'Faxa_swvdf') - call addfld(fldListFr(compatm)%fields, 'Faxa_swndf') + call addFldFrom(compatm, 'Faxa_swvdr') + call addFldFrom(compatm, 'Faxa_swndr') + call addFldFrom(compatm, 'Faxa_swvdf') + call addFldFrom(compatm, 'Faxa_swndf') - call addfld(fldListFr(compice)%fields, 'Fioi_swpen') - call addfld(fldListFr(compice)%fields, 'Fioi_swpen_vdr') - call addfld(fldListFr(compice)%fields, 'Fioi_swpen_vdf') - call addfld(fldListFr(compice)%fields, 'Fioi_swpen_idr') - call addfld(fldListFr(compice)%fields, 'Fioi_swpen_idf') + call addfldFrom(compice, 'Fioi_swpen') + call addfldFrom(compice, 'Fioi_swpen_vdr') + call addfldFrom(compice, 'Fioi_swpen_vdf') + call addfldFrom(compice, 'Fioi_swpen_idr') + call addfldFrom(compice, 'Fioi_swpen_idf') - call addfld(fldListTo(compocn)%fields, 'Foxx_swnet') - call addfld(fldListTo(compocn)%fields, 'Foxx_swnet_vdr') - call addfld(fldListTo(compocn)%fields, 'Foxx_swnet_vdf') - call addfld(fldListTo(compocn)%fields, 'Foxx_swnet_idr') - call addfld(fldListTo(compocn)%fields, 'Foxx_swnet_idf') + call addFldTo(compocn, 'Foxx_swnet') + call addFldTo(compocn, 'Foxx_swnet_vdr') + call addFldTo(compocn, 'Foxx_swnet_vdf') + call addFldTo(compocn, 'Foxx_swnet_idr') + call addFldTo(compocn, 'Foxx_swnet_idf') else ! Net shortwave ocean (custom calculation in prep_phases_ocn_mod.F90) ! import swpen from ice without bands if (fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_swpen', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Fioi_swpen', compocn, mapfcopy, 'unset', 'unset') + call addMapFrom(compice, 'Fioi_swpen', compocn, mapfcopy, 'unset', 'unset') end if ! import swpen from ice by bands @@ -1700,10 +1706,10 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_swpen_vdf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_swpen_idr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_swpen_idf', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Fioi_swpen_vdr', compocn, mapfcopy, 'unset', 'unset') - call addmap(fldListFr(compice)%fields, 'Fioi_swpen_vdf', compocn, mapfcopy, 'unset', 'unset') - call addmap(fldListFr(compice)%fields, 'Fioi_swpen_idr', compocn, mapfcopy, 'unset', 'unset') - call addmap(fldListFr(compice)%fields, 'Fioi_swpen_idf', compocn, mapfcopy, 'unset', 'unset') + call addMapFrom(compice, 'Fioi_swpen_vdr', compocn, mapfcopy, 'unset', 'unset') + call addMapFrom(compice, 'Fioi_swpen_vdf', compocn, mapfcopy, 'unset', 'unset') + call addMapFrom(compice, 'Fioi_swpen_idr', compocn, mapfcopy, 'unset', 'unset') + call addMapFrom(compice, 'Fioi_swpen_idf', compocn, mapfcopy, 'unset', 'unset') end if ! import sw from atm by bands @@ -1716,10 +1722,10 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) fldchk(is_local%wrap%FBExp(compocn), 'Foxx_swnet_vdf', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn), 'Foxx_swnet_idr', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn), 'Foxx_swnet_idf', rc=rc))) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swvdr', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Faxa_swvdf', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Faxa_swndr', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Faxa_swndf', compocn, mapconsf, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Faxa_swvdr', compocn, mapconsf, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Faxa_swvdf', compocn, mapconsf, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Faxa_swndr', compocn, mapconsf, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Faxa_swndf', compocn, mapconsf, 'one', atm2ocn_map) end if end if @@ -1729,27 +1735,27 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_i2o_per_cat) then if (phase == 'advertise') then ! 'fractional ice coverage wrt ocean for each thickness category ' - call addfld(fldListFr(compice)%fields, 'Si_ifrac_n') - call addfld(fldListTo(compocn)%fields, 'Si_ifrac_n') + call addfldFrom(compice, 'Si_ifrac_n') + call addFldTo(compocn, 'Si_ifrac_n') ! net shortwave radiation penetrating into ocean for each thickness category - call addfld(fldListFr(compice)%fields, 'Fioi_swpen_ifrac_n') - call addfld(fldListTo(compocn)%fields, 'Fioi_swpen_ifrac_n') + call addfldFrom(compice, 'Fioi_swpen_ifrac_n') + call addFldTo(compocn, 'Fioi_swpen_ifrac_n') ! 'fractional atmosphere coverage wrt ocean' (computed in med_phases_prep_ocn) - call addfld(fldListTo(compocn)%fields, 'Sf_afrac') + call addFldTo(compocn, 'Sf_afrac') ! 'fractional atmosphere coverage used in radiation computations wrt ocean' (computed in med_phases_prep_ocn) - call addfld(fldListTo(compocn)%fields, 'Sf_afracr') + call addFldTo(compocn, 'Sf_afracr') ! 'net shortwave radiation times atmosphere fraction' (computed in med_phases_prep_ocn) - call addfld(fldListTo(compocn)%fields, 'Foxx_swnet_afracr') + call addFldTo(compocn, 'Foxx_swnet_afracr') else - call addmap(fldListFr(compice)%fields, 'Si_ifrac_n', & + call addMapFrom(compice, 'Si_ifrac_n', & compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%fields, 'Si_ifrac_n', & + call addmrgTo(compocn, 'Si_ifrac_n', & mrg_from=compice, mrg_fld='Si_ifrac_n', mrg_type='copy') - call addmap(fldListFr(compice)%fields, 'Fioi_swpen_ifrac_n', & + call addMapFrom(compice, 'Fioi_swpen_ifrac_n', & compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%fields, 'Fioi_swpen_ifrac_n', & + call addmrgTo(compocn, 'Fioi_swpen_ifrac_n', & mrg_from=compice, mrg_fld='Fioi_swpen_ifrac_n', mrg_type='copy') ! Note that 'Sf_afrac, 'Sf_afracr' and 'Foxx_swnet_afracr' will have explicit merging in med_phases_prep_ocn end if @@ -1761,12 +1767,12 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_rainc') - call addfld(fldListFr(compatm)%fields, 'Faxa_rainl') - call addfld(fldListTo(compocn)%fields, 'Faxa_rain' ) - call addfld(fldListFr(compatm)%fields, 'Faxa_snowc') - call addfld(fldListFr(compatm)%fields, 'Faxa_snowl') - call addfld(fldListTo(compocn)%fields, 'Faxa_snow' ) + call addFldFrom(compatm, 'Faxa_rainc') + call addFldFrom(compatm, 'Faxa_rainl') + call addFldTo(compocn, 'Faxa_rain' ) + call addFldFrom(compatm, 'Faxa_snowc') + call addFldFrom(compatm, 'Faxa_snowl') + call addFldTo(compocn, 'Faxa_snow' ) else ! TODO: why are we not merging Faxa_rain and Faxa_snow if they are sent from atm wiht ofrac ! Note that the mediator atm/ocn flux calculation needs Faxa_rainc for the gustiness parameterization @@ -1774,47 +1780,47 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainc', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_rain' , rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_rainl', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Faxa_rainc', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_rain' , mrg_from=compatm, mrg_fld='Faxa_rainc:Faxa_rainl', & + call addMapFrom(compatm, 'Faxa_rainl', compocn, mapconsf, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Faxa_rainc', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_rain' , mrg_from=compatm, mrg_fld='Faxa_rainc:Faxa_rainl', & mrg_type='sum_with_weights', mrg_fracname='ofrac') end if if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_snow' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowc', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_snowl', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Faxa_snowc', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_snow' , & + call addMapFrom(compatm, 'Faxa_snowl', compocn, mapconsf, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Faxa_snowc', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_snow' , & mrg_from=compatm, mrg_fld='Faxa_snowc:Faxa_snowl', mrg_type='sum_with_weights', mrg_fracname='ofrac') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_rainc_wiso') - call addfld(fldListFr(compatm)%fields, 'Faxa_rainl_wiso') - call addfld(fldListTo(compocn)%fields, 'Faxa_rain_wiso' ) - call addfld(fldListFr(compatm)%fields, 'Faxa_snowc_wiso') - call addfld(fldListFr(compatm)%fields, 'Faxa_snowl_wiso') - call addfld(fldListFr(compatm)%fields, 'Faxa_snow_wiso' ) + call addFldFrom(compatm, 'Faxa_rainc_wiso') + call addFldFrom(compatm, 'Faxa_rainl_wiso') + call addFldTo(compocn, 'Faxa_rain_wiso' ) + call addFldFrom(compatm, 'Faxa_snowc_wiso') + call addFldFrom(compatm, 'Faxa_snowl_wiso') + call addFldFrom(compatm, 'Faxa_snow_wiso' ) else ! Note that the mediator atm/ocn flux calculation needs Faxa_rainc for the gustiness parameterization ! which by default is not actually used if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainl_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainc_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_rain_wiso' , rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_rainl_wiso', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Faxa_rainc_wiso', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_rain_wiso' , & + call addMapFrom(compatm, 'Faxa_rainl_wiso', compocn, mapconsf, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Faxa_rainc_wiso', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_rain_wiso' , & mrg_from=compatm, mrg_fld=trim('Faxa_rainc_wiso')//':'//trim('Faxa_rainl_wiso'), & mrg_type='sum_with_weights', mrg_fracname='ofrac') end if if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_snow_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowl_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowc_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_snowl_wiso', compocn, mapconsf, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Faxa_snowc_wiso', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_snow_wiso', & + call addMapFrom(compatm, 'Faxa_snowl_wiso', compocn, mapconsf, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Faxa_snowc_wiso', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_snow_wiso', & mrg_from=compatm, mrg_fld=trim('Faxa_snowc_wiso')//':'//trim('Faxa_snowl_wiso'), & mrg_type='sum_with_weights', mrg_fracname='ofrac') end if @@ -1825,14 +1831,14 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: merged sensible heat flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields , 'Faxa_sen') - call addfld(fldListMed_aoflux%fields , 'Faox_sen') - call addfld(fldListFr(compice)%fields , 'Fioi_melth') - call addfld(fldListTo(compocn)%fields , 'Foxx_sen') + call addFldFrom(compatm , 'Faxa_sen') + call addaofluxFld('Faox_sen') + call addfldFrom(compice , 'Fioi_melth') + call addFldTo(compocn , 'Foxx_sen') else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_sen', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_sen', rc=rc)) then - call addmrg(fldListTo(compocn)%fields, 'Foxx_sen', & + call addmrgTo(compocn, 'Foxx_sen', & mrg_from=compmed, mrg_fld='Faox_sen', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1841,29 +1847,29 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: surface latent heat flux and evaporation water flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_lat' ) - call addfld(fldListMed_aoflux%fields , 'Faox_lat' ) - call addfld(fldListMed_aoflux%fields , 'Faox_evap') - call addfld(fldListTo(compocn)%fields, 'Foxx_lat' ) - call addfld(fldListTo(compocn)%fields, 'Foxx_evap') + call addFldFrom(compatm, 'Faxa_lat' ) + call addaoflusFld( 'Faox_lat' ) + call addaoflusFld( 'Faox_evap') + call addFldTo(compocn, 'Foxx_lat' ) + call addFldTo(compocn, 'Foxx_evap') else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_lat', rc=rc)) then - call addmrg(fldListTo(compocn)%fields, 'Foxx_lat', & + call addmrgTo(compocn, 'Foxx_lat', & mrg_from=compmed, mrg_fld='Faox_lat', mrg_type='merge', mrg_fracname='ofrac') end if if ( fldchk(is_local%wrap%FBExp(compocn), 'Foxx_evap', rc=rc)) then - call addmrg(fldListTo(compocn)%fields, 'Foxx_evap', & + call addmrgTo(compocn, 'Foxx_evap', & mrg_from=compmed, mrg_fld='Faox_evap', mrg_type='merge', mrg_fracname='ofrac') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListMed_aoflux%fields , 'Faox_lat_wiso' ) - call addfld(fldListTo(compocn)%fields, 'Foxx_lat_wiso' ) + call addaoflusFld( 'Faox_lat_wiso' ) + call addFldTo(compocn, 'Foxx_lat_wiso' ) else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_lat_wiso', rc=rc)) then - call addmrg(fldListTo(compocn)%fields, 'Foxx_lat_wiso', & + call addmrgTo(compocn, 'Foxx_lat_wiso', & mrg_from=compmed, mrg_fld='Faox_lat_wiso', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1876,11 +1882,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! 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 if (phase == 'advertise') then - call addfld(fldListMed_aoflux%fields , 'So_duu10n') - call addfld(fldListTo(compocn)%fields, 'So_duu10n') + call addaoflusFld( 'So_duu10n') + call addFldTo(compocn, 'So_duu10n') else if (fldchk(is_local%wrap%FBExp(compocn), 'So_duu10n', rc=rc)) then - call addmrg(fldListTo(compocn)%fields, 'So_duu10n', mrg_from=compmed, mrg_fld='So_duu10n', mrg_type='copy') + call addmrgTo(compocn, 'So_duu10n', mrg_from=compmed, mrg_fld='So_duu10n', mrg_type='copy') end if end if @@ -1888,14 +1894,14 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: sea level pressure from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_pslv') - call addfld(fldListTo(compocn)%fields, 'Sa_pslv') + call addFldFrom(compatm, 'Sa_pslv') + call addFldTo(compocn, 'Sa_pslv') else if ( fldchk(is_local%wrap%FBImp(compatm, compatm), 'Sa_pslv', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Sa_pslv', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_pslv', compocn, mapbilnr, 'one', atm2ocn_map) - call addmap(fldListFr(compatm)%fields, 'Sa_pslv', compice, mapbilnr, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Sa_pslv', & + call addMapFrom(compatm, 'Sa_pslv', compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_pslv', compice, mapbilnr, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Sa_pslv', & mrg_from=compatm, mrg_fld='Sa_pslv', mrg_type='copy') end if end if @@ -1914,46 +1920,46 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: nitrogen deposition fields (2) from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListTo(compocn)%fields, 'Faxa_bcph') - call addfld(fldListFr(compatm)%fields, 'Faxa_bcph') + call addFldTo(compocn, 'Faxa_bcph') + call addFldFrom(compatm, 'Faxa_bcph') else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_bcph', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_bcph', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_bcph', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_bcph', & + call addMapFrom(compatm, 'Faxa_bcph', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_bcph', & mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListTo(compocn)%fields, 'Faxa_ocph') - call addfld(fldListFr(compatm)%fields, 'Faxa_ocph') + call addFldTo(compocn, 'Faxa_ocph') + call addFldFrom(compatm, 'Faxa_ocph') else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_ocph', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_ocph', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_ocph', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_ocph', & + call addMapFrom(compatm, 'Faxa_ocph', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_ocph', & mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListTo(compocn)%fields, 'Faxa_dstwet') - call addfld(fldListFr(compatm)%fields, 'Faxa_dstwet') + call addFldTo(compocn, 'Faxa_dstwet') + call addFldFrom(compatm, 'Faxa_dstwet') else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_dstwet', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_dstwet', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_dstwet', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_dstwet', & + call addMapFrom(compatm, 'Faxa_dstwet', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_dstwet', & mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListTo(compocn)%fields, 'Faxa_dstdry') - call addfld(fldListFr(compatm)%fields, 'Faxa_dstdry') + call addFldTo(compocn, 'Faxa_dstdry') + call addFldFrom(compatm, 'Faxa_dstdry') else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_dstdry', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_dstdry', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_dstdry', compocn, mapconsf, 'one', atm2ocn_map) - call addmrg(fldListTo(compocn)%fields, 'Faxa_dstdry', & + call addMapFrom(compatm, 'Faxa_dstdry', compocn, mapconsf, 'one', atm2ocn_map) + call addmrgTo(compocn, 'Faxa_dstdry', & mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -1966,44 +1972,44 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! Note - do not need to add addmap or addmrg for the following since they ! will be computed directly in med_phases_prep_ocn if (phase == 'advertise') then - call addfld(fldListTo(compocn)%fields, 'Foxx_hrain') - call addfld(fldListTo(compocn)%fields, 'Foxx_hsnow') - call addfld(fldListTo(compocn)%fields, 'Foxx_hevap') - call addfld(fldListTo(compocn)%fields, 'Foxx_hcond') - call addfld(fldListTo(compocn)%fields, 'Foxx_hrofl') - call addfld(fldListTo(compocn)%fields, 'Foxx_hrofi') + call addFldTo(compocn, 'Foxx_hrain') + call addFldTo(compocn, 'Foxx_hsnow') + call addFldTo(compocn, 'Foxx_hevap') + call addFldTo(compocn, 'Foxx_hcond') + call addFldTo(compocn, 'Foxx_hrofl') + call addFldTo(compocn, 'Foxx_hrofi') end if ! --------------------------------------------------------------------- ! to ocn: merge zonal and meridional surface stress from ice and (atm or med) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListTo(compocn)%fields , 'Foxx_taux') - call addfld(fldListFr(compice)%fields , 'Fioi_taux') - call addfld(fldListMed_aoflux%fields , 'Faox_taux') + call addFldTo(compocn , 'Foxx_taux') + call addfldFrom(compice , 'Fioi_taux') + call addaofluxFld('Faox_taux') else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_taux', rc=rc)) then if (fldchk(is_local%wrap%FBimp(compice,compice), 'Fioi_taux', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Fioi_taux', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%fields, 'Foxx_taux', & + call addMapFrom(compice, 'Fioi_taux', compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, 'Foxx_taux', & mrg_from=compice, mrg_fld='Fioi_taux', mrg_type='merge', mrg_fracname='ifrac') end if - call addmrg(fldListTo(compocn)%fields, 'Foxx_taux', & + call addmrgTo(compocn, 'Foxx_taux', & mrg_from=compmed, mrg_fld='Faox_taux', mrg_type='merge', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addfld(fldListTo(compocn)%fields , 'Foxx_tauy') - call addfld(fldListFr(compice)%fields , 'Fioi_tauy') - call addfld(fldListMed_aoflux%fields , 'Faox_tauy') + call addFldTo(compocn , 'Foxx_tauy') + call addfldFrom(compice , 'Fioi_tauy') + call addaofluxFld('Faox_tauy') else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_tauy', rc=rc)) then if (fldchk(is_local%wrap%FBimp(compice,compice), 'Fioi_tauy', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Fioi_tauy', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%fields, 'Foxx_tauy', & + call addMapFrom(compice, 'Fioi_tauy', compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, 'Foxx_tauy', & mrg_from=compice, mrg_fld='Fioi_tauy', mrg_type='merge', mrg_fracname='ifrac') end if - call addmrg(fldListTo(compocn)%fields, 'Foxx_tauy', & + call addmrgTo(compocn, 'Foxx_tauy', & mrg_from=compmed, mrg_fld='Faox_tauy', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -2011,25 +2017,25 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: water flux due to melting ice from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields , 'Fioi_meltw') - call addfld(fldListTo(compocn)%fields , 'Fioi_meltw') + call addfldFrom(compice , 'Fioi_meltw') + call addFldTo(compocn , 'Fioi_meltw') else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Fioi_meltw', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_meltw', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Fioi_meltw', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%fields, 'Fioi_meltw', & + call addMapFrom(compice, 'Fioi_meltw', compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, 'Fioi_meltw', & mrg_from=compice, mrg_fld='Fioi_meltw', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields , 'Fioi_meltw_wiso') - call addfld(fldListTo(compocn)%fields , 'Fioi_meltw_wiso') + call addfldFrom(compice , 'Fioi_meltw_wiso') + call addFldTo(compocn , 'Fioi_meltw_wiso') else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Fioi_meltw_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_meltw_wiso', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Fioi_meltw_wiso', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%fields, 'Fioi_meltw_wiso', & + call addMapFrom(compice, 'Fioi_meltw_wiso', compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, 'Fioi_meltw_wiso', & mrg_from=compice, mrg_fld='Fioi_meltw_wiso', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2038,13 +2044,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: heat flux from melting ice from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields, 'Fioi_melth') - call addfld(fldListTo(compocn)%fields, 'Fioi_melth') + call addfldFrom(compice, 'Fioi_melth') + call addFldTo(compocn, 'Fioi_melth') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_melth', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_melth', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Fioi_melth', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%fields, 'Fioi_melth', & + call addMapFrom(compice, 'Fioi_melth', compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, 'Fioi_melth', & mrg_from=compice, mrg_fld='Fioi_melth', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2052,13 +2058,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: salt flux from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields, 'Fioi_salt') - call addfld(fldListTo(compocn)%fields, 'Fioi_salt') + call addfldFrom(compice, 'Fioi_salt') + call addFldTo(compocn, 'Fioi_salt') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_salt', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_salt', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Fioi_salt', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%fields, 'Fioi_salt', & + call addMapFrom(compice, 'Fioi_salt', compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, 'Fioi_salt', & mrg_from=compice, mrg_fld='Fioi_salt', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2066,13 +2072,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: hydrophylic black carbon deposition flux from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields, 'Fioi_bcphi') - call addfld(fldListTo(compocn)%fields, 'Fioi_bcphi') + call addfldFrom(compice, 'Fioi_bcphi') + call addFldTo(compocn, 'Fioi_bcphi') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_bcphi', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_bcphi', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Fioi_bcphi', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%fields, 'Fioi_bcphi', & + call addMapFrom(compice, 'Fioi_bcphi', compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, 'Fioi_bcphi', & mrg_from=compice, mrg_fld='Fioi_bcphi', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2080,13 +2086,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: hydrophobic black carbon deposition flux from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields, 'Fioi_bcpho') - call addfld(fldListTo(compocn)%fields, 'Fioi_bcpho') + call addfldFrom(compice, 'Fioi_bcpho') + call addFldTo(compocn, 'Fioi_bcpho') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_bcpho', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_bcpho', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Fioi_bcpho', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%fields, 'Fioi_bcpho', & + call addMapFrom(compice, 'Fioi_bcpho', compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, 'Fioi_bcpho', & mrg_from=compice, mrg_fld='Fioi_bcpho', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2094,13 +2100,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: dust flux from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields, 'Fioi_flxdst') - call addfld(fldListTo(compocn)%fields, 'Fioi_flxdst') + call addfldFrom(compice, 'Fioi_flxdst') + call addFldTo(compocn, 'Fioi_flxdst') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_flxdst', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_flxdst', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Fioi_flxdst', compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%fields, 'Fioi_flxdst', & + call addMapFrom(compice, 'Fioi_flxdst', compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, 'Fioi_flxdst', & mrg_from=compice, mrg_fld='Fioi_flxdst', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2116,38 +2122,38 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! fldlistFr(comprof) in order to be mapped correctly but the ocean ! does not receive it so it is advertised but it will! not be connected do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%fields, 'Fogg_rofl') + call addfldFrom(compglc(ns), 'Fogg_rofl') end do - call addfld(fldListFr(comprof)%fields, 'Forr_rofl') - call addfld(fldListTo(compocn)%fields, 'Foxx_rofl') - call addfld(fldListTo(compocn)%fields, 'Flrr_flood') + call addfldFrom(comprof, 'Forr_rofl') + call addFldTo(compocn, 'Foxx_rofl') + call addFldTo(compocn, 'Flrr_flood') do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%fields, 'Fogg_rofi') + call addfldFrom(compglc(ns), 'Fogg_rofi') end do - call addfld(fldListFr(comprof)%fields, 'Forr_rofi') - call addfld(fldListTo(compocn)%fields, 'Foxx_rofi') + call addfldFrom(comprof, 'Forr_rofi') + call addFldTo(compocn, 'Foxx_rofi') else if ( fldchk(is_local%wrap%FBExp(compocn), 'Foxx_rofl' , rc=rc)) then ! liquid from river and possibly flood from river to ocean if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofl' , rc=rc)) then if (trim(rof2ocn_liq_rmap) == 'unset') then - call addmap(fldListFr(comprof)%fields, 'Forr_rofl', compocn, mapconsd, 'none', 'unset') + call addmapFrom(comprof, 'Forr_rofl', compocn, mapconsd, 'none', 'unset') else - call addmap(fldListFr(comprof)%fields, 'Forr_rofl', compocn, map_rof2ocn_liq, 'none', rof2ocn_liq_rmap) + call addmapFrom(comprof, 'Forr_rofl', compocn, map_rof2ocn_liq, 'none', rof2ocn_liq_rmap) end if if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_flood', rc=rc)) then - call addmap(fldListFr(comprof)%fields, 'Flrr_flood', compocn, mapconsd, 'one', rof2ocn_fmap) - call addmrg(fldListTo(compocn)%fields, 'Foxx_rofl', mrg_from=comprof, mrg_fld='Forr_rofl:Flrr_flood', mrg_type='sum') + call addmapFrom(comprof, 'Flrr_flood', compocn, mapconsd, 'one', rof2ocn_fmap) + call addmrgTo(compocn, 'Foxx_rofl', mrg_from=comprof, mrg_fld='Forr_rofl:Flrr_flood', mrg_type='sum') else - call addmrg(fldListTo(compocn)%fields, 'Foxx_rofl', mrg_from=comprof, mrg_fld='Forr_rofl', mrg_type='sum') + call addmrgTo(compocn, 'Foxx_rofl', mrg_from=comprof, mrg_fld='Forr_rofl', mrg_type='sum') end if end if ! liquid from glc to ocean do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Fogg_rofl' , rc=rc)) then ! TODO: this custom map needs to be different for every ice sheet - how will this be handled? - call addmap(fldListFr(compglc(ns))%fields, 'Fogg_rofl', compocn, map_glc2ocn_liq, 'one' , glc2ocn_liq_rmap) - call addmrg(fldListTo(compocn)%fields, 'Foxx_rofl', mrg_from=compglc(ns), mrg_fld='Fogg_rofl', mrg_type='sum') + call addmapFrom(compglc(ns), 'Fogg_rofl', compocn, map_glc2ocn_liq, 'one' , glc2ocn_liq_rmap) + call addmrgTo(compocn, 'Foxx_rofl', mrg_from=compglc(ns), mrg_fld='Fogg_rofl', mrg_type='sum') end if end do end if @@ -2155,18 +2161,18 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! ice from river to ocean if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofi' , rc=rc)) then if (trim(rof2ocn_ice_rmap) == 'unset') then - call addmap(fldListFr(comprof)%fields, 'Forr_rofi', compocn, mapconsd, 'none', 'unset') + call addmapFrom(comprof, 'Forr_rofi', compocn, mapconsd, 'none', 'unset') else - call addmap(fldListFr(comprof)%fields, 'Forr_rofi', compocn, map_rof2ocn_ice, 'none', rof2ocn_ice_rmap) + call addmapFrom(comprof, 'Forr_rofi', compocn, map_rof2ocn_ice, 'none', rof2ocn_ice_rmap) end if - call addmrg(fldListTo(compocn)%fields, 'Foxx_rofi', mrg_from=comprof, mrg_fld='Forr_rofi', mrg_type='sum') + call addmrgTo(compocn, 'Foxx_rofi', mrg_from=comprof, mrg_fld='Forr_rofi', mrg_type='sum') end if ! ice from glc to ocean do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Fogg_rofi' , rc=rc)) then ! TODO: this custom map needs to be different for every ice sheet - how will this be handled? - call addmap(fldListFr(compglc(ns))%fields, 'Fogg_rofi', compocn, map_glc2ocn_ice, 'one', glc2ocn_ice_rmap) - call addmrg(fldListTo(compocn)%fields, 'Foxx_rofi', mrg_from=compglc(ns), mrg_fld='Fogg_rofi', mrg_type='sum') + call addmapFrom(compglc(ns), 'Fogg_rofi', compocn, map_glc2ocn_ice, 'one', glc2ocn_ice_rmap) + call addmrgTo(compocn, 'Foxx_rofi', mrg_from=compglc(ns), mrg_fld='Fogg_rofi', mrg_type='sum') end if end do end if @@ -2175,31 +2181,31 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%fields, 'Fogg_rofl_wiso') + call addfldFrom(compglc(ns), 'Fogg_rofl_wiso') end do - call addfld(fldListFr(comprof)%fields, 'Forr_rofl_wiso') - call addfld(fldListTo(compocn)%fields, 'Foxx_rofl_wiso') - call addfld(fldListTo(compocn)%fields, 'Flrr_flood_wiso') + call addfldFrom(comprof, 'Forr_rofl_wiso') + call addFldTo(compocn, 'Foxx_rofl_wiso') + call addFldTo(compocn, 'Flrr_flood_wiso') do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%fields, 'Fogg_rofi_wiso') + call addfldFrom(compglc(ns), 'Fogg_rofi_wiso') end do - call addfld(fldListFr(comprof)%fields, 'Forr_rofi_wiso') - call addfld(fldListTo(compocn)%fields, 'Foxx_rofi_wiso') + call addfldFrom(comprof, 'Forr_rofi_wiso') + call addFldTo(compocn, 'Foxx_rofi_wiso') else if ( fldchk(is_local%wrap%FBExp(compocn), 'Foxx_rofl_wiso' , rc=rc)) then ! liquid from river and possibly flood from river to ocean if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofl_wiso' , rc=rc)) then if (trim(rof2ocn_liq_rmap) == 'unset') then - call addmap(fldListFr(comprof)%fields, 'Forr_rofl_wiso', compocn, mapconsd, 'none', 'unset') + call addmapFrom(comprof, 'Forr_rofl_wiso', compocn, mapconsd, 'none', 'unset') else - call addmap(fldListFr(comprof)%fields, 'Forr_rofl_wiso', compocn, map_rof2ocn_liq, 'none', rof2ocn_liq_rmap) + call addmapFrom(comprof, 'Forr_rofl_wiso', compocn, map_rof2ocn_liq, 'none', rof2ocn_liq_rmap) end if if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_flood_wiso', rc=rc)) then - call addmap(fldListFr(comprof)%fields, 'Flrr_flood_wiso', compocn, mapconsd, 'one', rof2ocn_fmap) - call addmrg(fldListTo(compocn)%fields, 'Foxx_rofl_wiso', & + call addmapFrom(comprof, 'Flrr_flood_wiso', compocn, mapconsd, 'one', rof2ocn_fmap) + call addmrgTo(compocn, 'Foxx_rofl_wiso', & mrg_from=comprof, mrg_fld='Forr_rofl:Flrr_flood', mrg_type='sum') else - call addmrg(fldListTo(compocn)%fields, 'Foxx_rofl_wiso', & + call addmrgTo(compocn, 'Foxx_rofl_wiso', & mrg_from=comprof, mrg_fld='Forr_rofl', mrg_type='sum') end if end if @@ -2207,8 +2213,8 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Fogg_rofl_wiso' , rc=rc)) then ! TODO: this custom map needs to be different for every ice sheet - how will this be handled? - call addmap(fldListFr(compglc(ns))%fields, 'Fogg_rofl_wiso', compocn, map_glc2ocn_liq, 'one' , glc2ocn_liq_rmap) - call addmrg(fldListTo(compocn)%fields, 'Foxx_rofl_wiso', & + call addmapFrom(compglc(ns), 'Fogg_rofl_wiso', compocn, map_glc2ocn_liq, 'one' , glc2ocn_liq_rmap) + call addmrgTo(compocn, 'Foxx_rofl_wiso', & mrg_from=compglc(ns), mrg_fld='Fogg_rofl_wiso', mrg_type='sum') end if end do @@ -2217,18 +2223,18 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! ice from river to ocean if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofi_wiso' , rc=rc)) then if (trim(rof2ocn_ice_rmap) == 'unset') then - call addmap(fldListFr(comprof)%fields, 'Forr_rofi_wiso', compocn, mapconsd, 'none', 'unset') + call addmapFrom(comprof, 'Forr_rofi_wiso', compocn, mapconsd, 'none', 'unset') else - call addmap(fldListFr(comprof)%fields, 'Forr_rofi_wiso', compocn, map_rof2ocn_ice, 'none', rof2ocn_ice_rmap) + call addmapFrom(comprof, 'Forr_rofi_wiso', compocn, map_rof2ocn_ice, 'none', rof2ocn_ice_rmap) end if - call addmrg(fldListTo(compocn)%fields, 'Foxx_rofi_wiso', mrg_from=comprof, mrg_fld='Forr_rofi', mrg_type='sum') + call addmrgTo(compocn, 'Foxx_rofi_wiso', mrg_from=comprof, mrg_fld='Forr_rofi', mrg_type='sum') end if ! ice from glc to ocean do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Fogg_rofi_wiso' , rc=rc)) then ! TODO: this custom map needs to be different for every ice sheet - how will this be handled? - call addmap(fldListFr(compglc(ns))%fields, 'Fogg_rofi_wiso', compocn, map_glc2ocn_ice, 'one', glc2ocn_ice_rmap) - call addmrg(fldListTo(compocn)%fields, 'Foxx_rofi_wiso', & + call addmapFrom(compglc(ns), 'Fogg_rofi_wiso', compocn, map_glc2ocn_ice, 'one', glc2ocn_ice_rmap) + call addmrgTo(compocn, 'Foxx_rofi_wiso', & mrg_from=compglc(ns), mrg_fld='Fogg_rofi_wiso', mrg_type='sum') end if end do @@ -2240,78 +2246,78 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: Langmuir multiplier from wave !----------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compwav)%fields, 'Sw_lamult') - call addfld(fldListTo(compocn)%fields, 'Sw_lamult') + call addfldFrom(compwav, 'Sw_lamult') + call addFldTo(compocn, 'Sw_lamult') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_lamult', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_lamult', rc=rc)) then - call addmap(fldListFr(compwav)%fields, 'Sw_lamult', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrg(fldListTo(compocn)%fields, 'Sw_lamult', mrg_from=compwav, mrg_fld='Sw_lamult', mrg_type='copy') + call addmapFrom(compwav, 'Sw_lamult', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrgTo(compocn, 'Sw_lamult', mrg_from=compwav, mrg_fld='Sw_lamult', mrg_type='copy') end if end if !----------------------------- ! to ocn: Stokes drift u component from wave !----------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compwav)%fields, 'Sw_ustokes') - call addfld(fldListTo(compocn)%fields, 'Sw_ustokes') + call addfldFrom(compwav, 'Sw_ustokes') + call addFldTo(compocn, 'Sw_ustokes') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_ustokes', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_ustokes', rc=rc)) then - call addmap(fldListFr(compwav)%fields, 'Sw_ustokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrg(fldListTo(compocn)%fields, 'Sw_ustokes', mrg_from=compwav, mrg_fld='Sw_ustokes', mrg_type='copy') + call addmapFrom(compwav, 'Sw_ustokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrgTo(compocn, 'Sw_ustokes', mrg_from=compwav, mrg_fld='Sw_ustokes', mrg_type='copy') end if end if !----------------------------- ! to ocn: Stokes drift v component from wave !----------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compwav)%fields, 'Sw_vstokes') - call addfld(fldListTo(compocn)%fields, 'Sw_vstokes') + call addfldFrom(compwav, 'Sw_vstokes') + call addFldTo(compocn, 'Sw_vstokes') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_vstokes', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_vstokes', rc=rc)) then - call addmap(fldListFr(compwav)%fields, 'Sw_vstokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrg(fldListTo(compocn)%fields, 'Sw_vstokes', mrg_from=compwav, mrg_fld='Sw_vstokes', mrg_type='copy') + call addmapFrom(compwav, 'Sw_vstokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrgTo(compocn, 'Sw_vstokes', mrg_from=compwav, mrg_fld='Sw_vstokes', mrg_type='copy') end if end if !----------------------------- ! to ocn: Stokes drift depth from wave !----------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compwav)%fields, 'Sw_hstokes') - call addfld(fldListTo(compocn)%fields, 'Sw_hstokes') + call addfldFrom(compwav, 'Sw_hstokes') + call addFldTo(compocn, 'Sw_hstokes') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_hstokes', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_hstokes', rc=rc)) then - call addmap(fldListFr(compwav)%fields, 'Sw_hstokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrg(fldListTo(compocn)%fields, 'Sw_hstokes', mrg_from=compwav, mrg_fld='Sw_hstokes', mrg_type='copy') + call addmapFrom(compwav, 'Sw_hstokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrgTo(compocn, 'Sw_hstokes', mrg_from=compwav, mrg_fld='Sw_hstokes', mrg_type='copy') end if end if !----------------------------- ! to ocn: Partitioned stokes drift components in x-direction !----------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compwav)%fields, 'Sw_pstokes_x') - call addfld(fldListTo(compocn)%fields, 'Sw_pstokes_x') + call addfldFrom(compwav, 'Sw_pstokes_x') + call addFldTo(compocn, 'Sw_pstokes_x') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_pstokes_x', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_pstokes_x', rc=rc)) then - call addmap(fldListFr(compwav)%fields, 'Sw_pstokes_x', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrg(fldListTo(compocn)%fields, 'Sw_pstokes_x', mrg_from=compwav, mrg_fld='Sw_pstokes_x', mrg_type='copy') + call addmapFrom(compwav, 'Sw_pstokes_x', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrgTo(compocn, 'Sw_pstokes_x', mrg_from=compwav, mrg_fld='Sw_pstokes_x', mrg_type='copy') end if end if !----------------------------- ! to ocn: Stokes drift depth from wave !----------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compwav)%fields, 'Sw_pstokes_y') - call addfld(fldListTo(compocn)%fields, 'Sw_pstokes_y') + call addfldFrom(compwav, 'Sw_pstokes_y') + call addFldTo(compocn, 'Sw_pstokes_y') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_pstokes_y', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_pstokes_y', rc=rc)) then - call addmap(fldListFr(compwav)%fields, 'Sw_pstokes_y', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrg(fldListTo(compocn)%fields, 'Sw_pstokes_y', mrg_from=compwav, mrg_fld='Sw_pstokes_y', mrg_type='copy') + call addmapFrom(compwav, 'Sw_pstokes_y', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrgTo(compocn, 'Sw_pstokes_y', mrg_from=compwav, mrg_fld='Sw_pstokes_y', mrg_type='copy') end if end if @@ -2323,13 +2329,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: downward longwave heat flux from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_lwdn') - call addfld(fldListTo(compice)%fields, 'Faxa_lwdn') + call addFldFrom(compatm, 'Faxa_lwdn') + call addfldTo(compice, 'Faxa_lwdn') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_lwdn', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwdn', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_lwdn', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_lwdn', mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_lwdn', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_lwdn', mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2339,43 +2345,43 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: downward Diffuse visible incident solar radiation from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swndr') - call addfld(fldListTo(compice)%fields, 'Faxa_swndr') + call addFldFrom(compatm, 'Faxa_swndr') + call addfldTo(compice, 'Faxa_swndr') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_swndr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swndr', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swndr', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_swndr', mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_swndr', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_swndr', mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swvdr') - call addfld(fldListTo(compice)%fields, 'Faxa_swvdr') + call addFldFrom(compatm, 'Faxa_swvdr') + call addfldTo(compice, 'Faxa_swvdr') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_swvdr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swvdr', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swvdr', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_swvdr', mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_swvdr', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_swvdr', mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swndf') - call addfld(fldListTo(compice)%fields, 'Faxa_swndf') + call addFldFrom(compatm, 'Faxa_swndf') + call addfldTo(compice, 'Faxa_swndf') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_swndf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swndf', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swndf', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_swndf', mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_swndf', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_swndf', mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_swvdf') - call addfld(fldListTo(compice)%fields, 'Faxa_swvdf') + call addFldFrom(compatm, 'Faxa_swvdf') + call addfldTo(compice, 'Faxa_swvdf') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_swvdf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swvdf', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_swvdf', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_swvdf', mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_swvdf', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_swvdf', mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2384,13 +2390,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: hydrophylic black carbon wet deposition flux from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_bcph') - call addfld(fldListTo(compice)%fields, 'Faxa_bcph') + call addFldFrom(compatm, 'Faxa_bcph') + call addfldTo(compice, 'Faxa_bcph') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_bcph', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_bcph', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_bcph', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_bcph', mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_bcph', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_bcph', mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2399,13 +2405,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: hydrophylic organic carbon wet deposition flux from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_ocph') - call addfld(fldListTo(compice)%fields, 'Faxa_ocph') + call addFldFrom(compatm, 'Faxa_ocph') + call addfldTo(compice, 'Faxa_ocph') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_ocph', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_ocph', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_ocph', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_ocph', mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_ocph', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_ocph', mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2415,13 +2421,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: dust wet deposition flux (size 4) from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_dstwet') - call addfld(fldListTo(compice)%fields, 'Faxa_dstwet') + call addFldFrom(compatm, 'Faxa_dstwet') + call addfldTo(compice, 'Faxa_dstwet') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_dstwet', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_dstwet', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_dstwet', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_dstwet', mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_dstwet', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_dstwet', mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2431,13 +2437,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: dust dry deposition flux (size 4) from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_dstdry') - call addfld(fldListTo(compice)%fields, 'Faxa_dstdry') + call addFldFrom(compatm, 'Faxa_dstdry') + call addfldTo(compice, 'Faxa_dstdry') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_dstdry', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_dstdry', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_dstdry', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_dstdry', mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_dstdry', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_dstdry', mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2445,83 +2451,83 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: rain and snow rate from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_rainc') - call addfld(fldListFr(compatm)%fields, 'Faxa_rainl') - call addfld(fldListFr(compatm)%fields, 'Faxa_rain' ) - call addfld(fldListTo(compice)%fields, 'Faxa_rain' ) + call addFldFrom(compatm, 'Faxa_rainc') + call addFldFrom(compatm, 'Faxa_rainl') + call addFldFrom(compatm, 'Faxa_rain' ) + call addfldTo(compice, 'Faxa_rain' ) else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_rain' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainc', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_rainc', compice, mapconsf, 'one', atm2ice_map) - call addmap(fldListFr(compatm)%fields, 'Faxa_rainl', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_rain' , mrg_from=compatm, mrg_fld='Faxa_rainc:Faxa_rainl', mrg_type='sum') + call addMapFrom(compatm, 'Faxa_rainc', compice, mapconsf, 'one', atm2ice_map) + call addMapFrom(compatm, 'Faxa_rainl', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_rain' , mrg_from=compatm, mrg_fld='Faxa_rainc:Faxa_rainl', mrg_type='sum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_rain', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rain', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_rain', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_rain', mrg_from=compatm, mrg_fld='Faxa_rain', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_rain', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_rain', mrg_from=compatm, mrg_fld='Faxa_rain', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_snowc') - call addfld(fldListFr(compatm)%fields, 'Faxa_snowl') - call addfld(fldListFr(compatm)%fields, 'Faxa_snow' ) - call addfld(fldListTo(compice)%fields, 'Faxa_snow' ) + call addFldFrom(compatm, 'Faxa_snowc') + call addFldFrom(compatm, 'Faxa_snowl') + call addFldFrom(compatm, 'Faxa_snow' ) + call addfldTo(compice, 'Faxa_snow' ) else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_snow' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowc', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_snowc', compice, mapconsf, 'one', atm2ice_map) - call addmap(fldListFr(compatm)%fields, 'Faxa_snowl', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_snow' , & + call addMapFrom(compatm, 'Faxa_snowc', compice, mapconsf, 'one', atm2ice_map) + call addMapFrom(compatm, 'Faxa_snowl', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_snow' , & mrg_from=compatm, mrg_fld='Faxa_snowc:Faxa_snowl', mrg_type='sum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_snow', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snow', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_snow', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_snow', & + call addMapFrom(compatm, 'Faxa_snow', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_snow', & mrg_from=compatm, mrg_fld='Faxa_snow', mrg_type='copy') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_rainc_wiso') - call addfld(fldListFr(compatm)%fields, 'Faxa_rainl_wiso') - call addfld(fldListFr(compatm)%fields, 'Faxa_rain_wiso' ) - call addfld(fldListTo(compice)%fields, 'Faxa_rain_wiso' ) + call addFldFrom(compatm, 'Faxa_rainc_wiso') + call addFldFrom(compatm, 'Faxa_rainl_wiso') + call addFldFrom(compatm, 'Faxa_rain_wiso' ) + call addfldTo(compice, 'Faxa_rain_wiso' ) else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_rain_wiso' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainl_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainc_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_rainc_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmap(fldListFr(compatm)%fields, 'Faxa_rainl_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_rain_wiso' , & + call addMapFrom(compatm, 'Faxa_rainc_wiso', compice, mapconsf, 'one', atm2ice_map) + call addMapFrom(compatm, 'Faxa_rainl_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_rain_wiso' , & mrg_from=compatm, mrg_fld='Faxa_rainc_wiso:Faxa_rainl_wiso', mrg_type='sum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_rain_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rain_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_rain_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_rain_wiso', & + call addMapFrom(compatm, 'Faxa_rain_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_rain_wiso', & mrg_from=compatm, mrg_fld='Faxa_rain_wiso', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Faxa_snowc_wiso') - call addfld(fldListFr(compatm)%fields, 'Faxa_snowl_wiso') - call addfld(fldListFr(compatm)%fields, 'Faxa_snow_wiso' ) - call addfld(fldListTo(compice)%fields, 'Faxa_snow_wiso' ) + call addFldFrom(compatm, 'Faxa_snowc_wiso') + call addFldFrom(compatm, 'Faxa_snowl_wiso') + call addFldFrom(compatm, 'Faxa_snow_wiso' ) + call addfldTo(compice, 'Faxa_snow_wiso' ) else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_snow_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowl_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowc_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_snowc_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmap(fldListFr(compatm)%fields, 'Faxa_snowl_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_snow_wiso' , & + call addMapFrom(compatm, 'Faxa_snowc_wiso', compice, mapconsf, 'one', atm2ice_map) + call addMapFrom(compatm, 'Faxa_snowl_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_snow_wiso' , & mrg_from=compatm, mrg_fld='Faxa_snowc_wiso:Faxa_snowl_wiso', mrg_type='sum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_snow_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snow_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Faxa_snow_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Faxa_snow_wiso', mrg_from=compatm, mrg_fld='Faxa_snow_wiso', mrg_type='copy') + call addMapFrom(compatm, 'Faxa_snow_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmrgTo(compice, 'Faxa_snow_wiso', mrg_from=compatm, mrg_fld='Faxa_snow_wiso', mrg_type='copy') end if end if end if @@ -2530,65 +2536,65 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: height at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_z') - call addfld(fldListTo(compice)%fields, 'Sa_z') + call addFldFrom(compatm, 'Sa_z') + call addfldTo(compice, 'Sa_z') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_z', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_z', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_z', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Sa_z', mrg_from=compatm, mrg_fld='Sa_z', mrg_type='copy') + call addMapFrom(compatm, 'Sa_z', compice, mapbilnr, 'one', atm2ice_map) + call addmrgTo(compice, 'Sa_z', mrg_from=compatm, mrg_fld='Sa_z', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: pressure at the lowest model level fromatm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_pbot') - call addfld(fldListTo(compice)%fields, 'Sa_pbot') + call addFldFrom(compatm, 'Sa_pbot') + call addfldTo(compice, 'Sa_pbot') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_pbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_pbot', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_pbot', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Sa_pbot', mrg_from=compatm, mrg_fld='Sa_pbot', mrg_type='copy') + call addMapFrom(compatm, 'Sa_pbot', compice, mapbilnr, 'one', atm2ice_map) + call addmrgTo(compice, 'Sa_pbot', mrg_from=compatm, mrg_fld='Sa_pbot', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: temperature at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_tbot') - call addfld(fldListTo(compice)%fields, 'Sa_tbot') + call addFldFrom(compatm, 'Sa_tbot') + call addfldTo(compice, 'Sa_tbot') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_tbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_tbot', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_tbot', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') + call addMapFrom(compatm, 'Sa_tbot', compice, mapbilnr, 'one', atm2ice_map) + call addmrgTo(compice, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: potential temperature at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_ptem') - call addfld(fldListTo(compice)%fields, 'Sa_ptem') + call addFldFrom(compatm, 'Sa_ptem') + call addfldTo(compice, 'Sa_ptem') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_ptem', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_ptem', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_ptem', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Sa_ptem', mrg_from=compatm, mrg_fld='Sa_ptem', mrg_type='copy') + call addMapFrom(compatm, 'Sa_ptem', compice, mapbilnr, 'one', atm2ice_map) + call addmrgTo(compice, 'Sa_ptem', mrg_from=compatm, mrg_fld='Sa_ptem', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: density at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_dens') - call addfld(fldListTo(compice)%fields, 'Sa_dens') + call addFldFrom(compatm, 'Sa_dens') + call addfldTo(compice, 'Sa_dens') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_dens', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_dens', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_dens', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Sa_dens', mrg_from=compatm, mrg_fld='Sa_dens', mrg_type='copy') + call addMapFrom(compatm, 'Sa_dens', compice, mapbilnr, 'one', atm2ice_map) + call addmrgTo(compice, 'Sa_dens', mrg_from=compatm, mrg_fld='Sa_dens', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2596,31 +2602,31 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: meridional wind at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_u') - call addfld(fldListTo(compice)%fields, 'Sa_u') + call addFldFrom(compatm, 'Sa_u') + call addfldTo(compice, 'Sa_u') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_u', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_u', rc=rc)) then if (mapuv_with_cart3d) then - call addmap(fldListFr(compatm)%fields, 'Sa_u', compice, mappatch_uv3d, 'one', atm2ice_map) + call addMapFrom(compatm, 'Sa_u', compice, mappatch_uv3d, 'one', atm2ice_map) else - call addmap(fldListFr(compatm)%fields, 'Sa_u', compice, mappatch, 'one', atm2ice_map) + call addMapFrom(compatm, 'Sa_u', compice, mappatch, 'one', atm2ice_map) end if - call addmrg(fldListTo(compice)%fields, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') + call addmrgTo(compice, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_v') - call addfld(fldListTo(compice)%fields, 'Sa_v') + call addFldFrom(compatm, 'Sa_v') + call addfldTo(compice, 'Sa_v') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_v', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_v', rc=rc)) then if (mapuv_with_cart3d) then - call addmap(fldListFr(compatm)%fields, 'Sa_v', compice, mappatch_uv3d, 'one', atm2ice_map) + call addMapFrom(compatm, 'Sa_v', compice, mappatch_uv3d, 'one', atm2ice_map) else - call addmap(fldListFr(compatm)%fields, 'Sa_v', compice, mappatch, 'one', atm2ice_map) + call addMapFrom(compatm, 'Sa_v', compice, mappatch, 'one', atm2ice_map) end if - call addmrg(fldListTo(compice)%fields, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') + call addmrgTo(compice, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2628,24 +2634,24 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: specific humidity for water isotopes at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_shum') - call addfld(fldListTo(compice)%fields, 'Sa_shum') + call addFldFrom(compatm, 'Sa_shum') + call addfldTo(compice, 'Sa_shum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_shum', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_shum', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_shum', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Sa_shum', mrg_from=compatm, mrg_fld='Sa_shum', mrg_type='copy') + call addMapFrom(compatm, 'Sa_shum', compice, mapbilnr, 'one', atm2ice_map) + call addmrgTo(compice, 'Sa_shum', mrg_from=compatm, mrg_fld='Sa_shum', mrg_type='copy') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_shum_wiso') - call addfld(fldListTo(compice)%fields, 'Sa_shum_wiso') + call addFldFrom(compatm, 'Sa_shum_wiso') + call addfldTo(compice, 'Sa_shum_wiso') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_shum_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_shum_wiso', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_shum_wiso', compice, mapbilnr, 'one', atm2ice_map) - call addmrg(fldListTo(compice)%fields, 'Sa_shum_wiso', mrg_from=compatm, mrg_fld='Sa_shum_wiso', mrg_type='copy') + call addMapFrom(compatm, 'Sa_shum_wiso', compice, mapbilnr, 'one', atm2ice_map) + call addmrgTo(compice, 'Sa_shum_wiso', mrg_from=compatm, mrg_fld='Sa_shum_wiso', mrg_type='copy') end if end if end if @@ -2654,26 +2660,26 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: sea surface temperature from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'So_t') - call addfld(fldListTo(compice)%fields, 'So_t') + call addfldFrom(compocn, 'So_t') + call addfldTo(compice, 'So_t') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_t', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_t', rc=rc)) then - call addmap(fldListFr(compocn)%fields, 'So_t', compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%fields, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') + call addmapFrom(compocn, 'So_t', compice, mapfcopy , 'unset', 'unset') + call addmrgTo(compice, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: sea surface salinity from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'So_s') - call addfld(fldListTo(compice)%fields, 'So_s') + call addfldFrom(compocn, 'So_s') + call addfldTo(compice, 'So_s') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_s', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_s', rc=rc)) then - call addmap(fldListFr(compocn)%fields, 'So_s', compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%fields, 'So_s', mrg_from=compocn, mrg_fld='So_s', mrg_type='copy') + call addmapFrom(compocn, 'So_s', compice, mapfcopy , 'unset', 'unset') + call addmrgTo(compice, 'So_s', mrg_from=compocn, mrg_fld='So_s', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2681,23 +2687,23 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: meridional sea water velocity from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'So_u') - call addfld(fldListTo(compice)%fields, 'So_u') + call addfldFrom(compocn, 'So_u') + call addfldTo(compice, 'So_u') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_u', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_u', rc=rc)) then - call addmap(fldListFr(compocn)%fields, 'So_u', compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%fields, 'So_u', mrg_from=compocn, mrg_fld='So_u', mrg_type='copy') + call addmapFrom(compocn, 'So_u', compice, mapfcopy , 'unset', 'unset') + call addmrgTo(compice, 'So_u', mrg_from=compocn, mrg_fld='So_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'So_v') - call addfld(fldListTo(compice)%fields, 'So_v') + call addfldFrom(compocn, 'So_v') + call addfldTo(compice, 'So_v') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_v', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_v', rc=rc)) then - call addmap(fldListFr(compocn)%fields, 'So_v', compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%fields, 'So_v', mrg_from=compocn, mrg_fld='So_v', mrg_type='copy') + call addmapFrom(compocn, 'So_v', compice, mapfcopy , 'unset', 'unset') + call addmrgTo(compice, 'So_v', mrg_from=compocn, mrg_fld='So_v', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2705,36 +2711,36 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: meridional sea surface slope from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'So_dhdx') - call addfld(fldListTo(compice)%fields, 'So_dhdx') + call addfldFrom(compocn, 'So_dhdx') + call addfldTo(compice, 'So_dhdx') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_dhdx', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_dhdx', rc=rc)) then - call addmap(fldListFr(compocn)%fields, 'So_dhdx', compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%fields, 'So_dhdx', mrg_from=compocn, mrg_fld='So_dhdx', mrg_type='copy') + call addmapFrom(compocn, 'So_dhdx', compice, mapfcopy , 'unset', 'unset') + call addmrgTo(compice, 'So_dhdx', mrg_from=compocn, mrg_fld='So_dhdx', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'So_dhdy') - call addfld(fldListTo(compice)%fields, 'So_dhdy') + call addfldFrom(compocn, 'So_dhdy') + call addfldTo(compice, 'So_dhdy') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_dhdy', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_dhdy', rc=rc)) then - call addmap(fldListFr(compocn)%fields, 'So_dhdy', compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%fields, 'So_dhdy', mrg_from=compocn, mrg_fld='So_dhdy', mrg_type='copy') + call addmapFrom(compocn, 'So_dhdy', compice, mapfcopy , 'unset', 'unset') + call addmrgTo(compice, 'So_dhdy', mrg_from=compocn, mrg_fld='So_dhdy', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: ocean melt and freeze potential from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'Fioo_q') - call addfld(fldListTo(compice)%fields, 'Fioo_q') + call addfldFrom(compocn, 'Fioo_q') + call addfldTo(compice, 'Fioo_q') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'Fioo_q', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compice) , 'Fioo_q', rc=rc)) then - call addmap(fldListFr(compocn)%fields, 'Fioo_q', compice, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compice)%fields, 'Fioo_q', mrg_from=compocn, mrg_fld='Fioo_q', mrg_type='copy') + call addmapFrom(compocn, 'Fioo_q', compice, mapfcopy, 'unset', 'unset') + call addmrgTo(compice, 'Fioo_q', mrg_from=compocn, mrg_fld='Fioo_q', mrg_type='copy') end if end if !----------------------------- @@ -2742,13 +2748,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !----------------------------- if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'So_roce_wiso') - call addfld(fldListTo(compice)%fields, 'So_roce_wiso') + call addfldFrom(compocn, 'So_roce_wiso') + call addfldTo(compice, 'So_roce_wiso') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_roce_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compice) , 'So_roce_wiso', rc=rc)) then - call addmap(fldListFr(compocn)%fields, 'So_roce_wiso', compice, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compice)%fields, 'So_roce_wiso', mrg_from=compocn, mrg_fld='So_roce_wiso', mrg_type='copy') + call addmapFrom(compocn, 'So_roce_wiso', compice, mapfcopy, 'unset', 'unset') + call addmrgTo(compice, 'So_roce_wiso', mrg_from=compocn, mrg_fld='So_roce_wiso', mrg_type='copy') end if end if end if @@ -2757,43 +2763,43 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: frozen runoff from rof and glc ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(comprof)%fields, 'Firr_rofi') ! water flux into sea ice due to runoff (frozen) + call addfldFrom(comprof, 'Firr_rofi') ! water flux into sea ice due to runoff (frozen) do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%fields, 'Figg_rofi') ! glc frozen runoff_iceberg flux to ice + call addfldFrom(compglc(ns), 'Figg_rofi') ! glc frozen runoff_iceberg flux to ice end do - call addfld(fldListTo(compice)%fields, 'Fixx_rofi') ! total frozen water flux into sea ice + call addfldTo(compice, 'Fixx_rofi') ! total frozen water flux into sea ice else if ( fldchk(is_local%wrap%FBExp(compice), 'Fixx_rofi', rc=rc)) then if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofi', rc=rc)) then - call addmap(fldListFr(comprof)%fields, 'Forr_rofi', compice, mapconsf, 'none', rof2ocn_ice_rmap) - call addmrg(fldListTo(compice)%fields, 'Fixx_rofi', mrg_from=comprof, mrg_fld='Firr_rofi', mrg_type='sum') + call addmapFrom(comprof, 'Forr_rofi', compice, mapconsf, 'none', rof2ocn_ice_rmap) + call addmrgTo(compice, 'Fixx_rofi', mrg_from=comprof, mrg_fld='Firr_rofi', mrg_type='sum') end if do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Figg_rofi', rc=rc)) then - call addmap(fldListFr(compglc(ns))%fields, 'Figg_rofi', compice, mapconsf, 'one' , glc2ice_rmap) - call addmrg(fldListTo(compice)%fields, 'Fixx_rofi', mrg_from=compglc(ns), mrg_fld='Figg_rofi', mrg_type='sum') + call addmapFrom(compglc(ns), 'Figg_rofi', compice, mapconsf, 'one' , glc2ice_rmap) + call addmrgTo(compice, 'Fixx_rofi', mrg_from=compglc(ns), mrg_fld='Figg_rofi', mrg_type='sum') end if end do end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfld(fldListFr(comprof)%fields, 'Firr_rofi_wiso') ! water flux into sea ice due to runoff (frozen) + call addfldFrom(comprof, 'Firr_rofi_wiso') ! water flux into sea ice due to runoff (frozen) do ns = 1, is_local%wrap%num_icesheets - call addfld(fldListFr(compglc(ns))%fields, 'Figg_rofi_wiso') ! glc frozen runoff_iceberg flux to ice + call addfldFrom(compglc(ns), 'Figg_rofi_wiso') ! glc frozen runoff_iceberg flux to ice end do - call addfld(fldListTo(compice)%fields, 'Fixx_rofi_wiso') ! total frozen water flux into sea ice + call addfldTo(compice, 'Fixx_rofi_wiso') ! total frozen water flux into sea ice else if ( fldchk(is_local%wrap%FBExp(compice), 'Fixx_rofi_wiso', rc=rc)) then if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofi_wiso', rc=rc)) then - call addmap(fldListFr(comprof)%fields, 'Forr_rofi_wiso', compice, mapconsf, 'none', rof2ocn_ice_rmap) - call addmrg(fldListTo(compice)%fields, 'Fixx_rofi_wiso', & + call addmapFrom(comprof, 'Forr_rofi_wiso', compice, mapconsf, 'none', rof2ocn_ice_rmap) + call addmrgTo(compice, 'Fixx_rofi_wiso', & mrg_from=comprof, mrg_fld='Firr_rofi_wiso', mrg_type='sum') end if do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Figg_rofi_wiso', rc=rc)) then - call addmap(fldListFr(compglc(ns))%fields, 'Figg_rofi_wiso', compice, mapconsf, 'one' , glc2ice_rmap) - call addmrg(fldListTo(compice)%fields, 'Fixx_rofi_wiso', & + call addmapFrom(compglc(ns), 'Figg_rofi_wiso', compice, mapconsf, 'one' , glc2ice_rmap) + call addmrgTo(compice, 'Fixx_rofi_wiso', & mrg_from=compglc(ns), mrg_fld='Figg_rofi_wiso', mrg_type='sum') end if end do @@ -2806,13 +2812,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! --------------------------------------------------------------------- if (wavice_coupling) then if (phase == 'advertise') then - call addfld(fldListFr(compwav)%fields, 'Sw_elevation_spectrum') - call addfld(fldListTo(compice)%fields, 'Sw_elevation_spectrum') + call addfldFrom(compwav, 'Sw_elevation_spectrum') + call addfldTo(compice, 'Sw_elevation_spectrum') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Sw_elevation_spectrum', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav,compwav), 'Sw_elevation_spectrum', rc=rc)) then - call addmap(fldListFr(compwav)%fields, 'Sw_elevation_spectrum', compice, mapbilnr, 'one', 'unset') - call addmrg(fldListTo(compice)%fields, 'Sw_elevation_spectrum', & + call addmapFrom(compwav, 'Sw_elevation_spectrum', compice, mapbilnr, 'one', 'unset') + call addmrgTo(compice, 'Sw_elevation_spectrum', & mrg_from=compwav, mrg_fld='Sw_elevation_spectrum', mrg_type='copy') end if end if @@ -2826,14 +2832,14 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: fractional ice coverage wrt ocean from ice !---------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields, 'Si_ifrac') - call addfld(fldListTo(compwav)%fields, 'Si_ifrac') + call addfldFrom(compice, 'Si_ifrac') + call addfldTo(compwav, 'Si_ifrac') else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Si_ifrac', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_ifrac', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmap(fldListFr(compice)%fields, 'Si_ifrac', compwav, mapbilnr, 'one', ice2wav_smap) - call addmrg(fldListTo(compwav)%fields, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') + call addMapFrom(compice, 'Si_ifrac', compwav, mapbilnr, 'one', ice2wav_smap) + call addmrgTo(compwav, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') end if end if !---------------------------------------------------------- @@ -2841,13 +2847,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !---------------------------------------------------------- if (wavice_coupling) then if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields, 'Si_thick') - call addfld(fldListTo(compwav)%fields, 'Si_thick') + call addfldFrom(compice, 'Si_thick') + call addfldTo(compwav, 'Si_thick') else if (fldchk(is_local%wrap%FBexp(compwav) , 'Si_thick', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_thick', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Si_thick', compwav, mapbilnr, 'one', ice2wav_smap) - call addmrg(fldListTo(compwav)%fields, 'Si_thick', mrg_from=compice, mrg_fld='Si_thick', mrg_type='copy') + call addMapFrom(compice, 'Si_thick', compwav, mapbilnr, 'one', ice2wav_smap) + call addmrgTo(compwav, 'Si_thick', mrg_from=compice, mrg_fld='Si_thick', mrg_type='copy') end if end if end if @@ -2856,13 +2862,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !---------------------------------------------------------- if (wavice_coupling) then if (phase == 'advertise') then - call addfld(fldListFr(compice)%fields, 'Si_floediam') - call addfld(fldListTo(compwav)%fields, 'Si_floediam') + call addfldFrom(compice, 'Si_floediam') + call addfldTo(compwav, 'Si_floediam') else if (fldchk(is_local%wrap%FBexp(compwav) , 'Si_floediam', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_floediam', rc=rc)) then - call addmap(fldListFr(compice)%fields, 'Si_floediam', compwav, mapbilnr, 'one', ice2wav_smap) - call addmrg(fldListTo(compwav)%fields, 'Si_floediam', mrg_from=compice, mrg_fld='Si_floediam', mrg_type='copy') + call addMapFrom(compice, 'Si_floediam', compwav, mapbilnr, 'one', ice2wav_smap) + call addmrgTo(compwav, 'Si_floediam', mrg_from=compice, mrg_fld='Si_floediam', mrg_type='copy') end if end if end if @@ -2870,39 +2876,39 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: ocean surface temperature from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'So_t') - call addfld(fldListTo(compwav)%fields, 'So_t') + call addfldFrom(compocn, 'So_t') + call addfldTo(compwav, 'So_t') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_t', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compwav) , 'So_t', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmap(fldListFr(compocn)%fields, 'So_t', compwav, mapbilnr, 'one', ocn2wav_smap) - call addmrg(fldListTo(compwav)%fields, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') + call addmapFrom(compocn, 'So_t', compwav, mapbilnr, 'one', ocn2wav_smap) + call addmrgTo(compwav, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to wav: ocean currents from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'So_u') - call addfld(fldListTo(compwav)%fields, 'So_u') + call addfldFrom(compocn, 'So_u') + call addfldTo(compwav, 'So_u') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_u', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compwav) , 'So_u', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmap(fldListFr(compocn)%fields, 'So_u', compwav, mapbilnr, 'one', ocn2wav_smap) - call addmrg(fldListTo(compwav)%fields, 'So_u', mrg_from=compocn, mrg_fld='So_u', mrg_type='copy') + call addmapFrom(compocn, 'So_u', compwav, mapbilnr, 'one', ocn2wav_smap) + call addmrgTo(compwav, 'So_u', mrg_from=compocn, mrg_fld='So_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'So_v') - call addfld(fldListTo(compwav)%fields, 'So_v') + call addfldFrom(compocn, 'So_v') + call addfldTo(compwav, 'So_v') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_v', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compwav) , 'So_v', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmap(fldListFr(compocn)%fields, 'So_v', compwav, mapbilnr, 'one', ocn2wav_smap) - call addmrg(fldListTo(compwav)%fields, 'So_v', mrg_from=compocn, mrg_fld='So_v', mrg_type='copy') + call addmapFrom(compocn, 'So_v', compwav, mapbilnr, 'one', ocn2wav_smap) + call addmrgTo(compwav, 'So_v', mrg_from=compocn, mrg_fld='So_v', mrg_type='copy') end if end if @@ -2910,14 +2916,14 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: ocean boundary layer depth from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'So_bldepth') - call addfld(fldListTo(compwav)%fields, 'So_bldepth') + call addfldFrom(compocn, 'So_bldepth') + call addfldTo(compwav, 'So_bldepth') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_bldepth', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compwav) , 'So_bldepth', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmap(fldListFr(compocn)%fields, 'So_bldepth', compwav, mapbilnr, 'one', ocn2wav_smap) - call addmrg(fldListTo(compwav)%fields, 'So_bldepth', mrg_from=compocn, mrg_fld='So_bldepth', mrg_type='copy') + call addmapFrom(compocn, 'So_bldepth', compwav, mapbilnr, 'one', ocn2wav_smap) + call addmrgTo(compwav, 'So_bldepth', mrg_from=compocn, mrg_fld='So_bldepth', mrg_type='copy') end if end if @@ -2925,23 +2931,23 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: zonal and meridional winds at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_u') - call addfld(fldListTo(compwav)%fields, 'Sa_u') + call addFldFrom(compatm, 'Sa_u') + call addfldTo(compwav, 'Sa_u') else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Sa_u', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_u', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_u', compwav, mapbilnr, 'one', atm2wav_map) - call addmrg(fldListTo(compwav)%fields, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') + call addMapFrom(compatm, 'Sa_u', compwav, mapbilnr, 'one', atm2wav_map) + call addmrgTo(compwav, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_v') - call addfld(fldListTo(compwav)%fields, 'Sa_v') + call addFldFrom(compatm, 'Sa_v') + call addfldTo(compwav, 'Sa_v') else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Sa_v', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_v', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_v', compwav, mapbilnr, 'one', atm2wav_map) - call addmrg(fldListTo(compwav)%fields, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') + call addMapFrom(compatm, 'Sa_v', compwav, mapbilnr, 'one', atm2wav_map) + call addmrgTo(compwav, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') end if end if @@ -2949,13 +2955,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: temperature at lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_tbot') - call addfld(fldListTo(compwav)%fields, 'Sa_tbot') + call addFldFrom(compatm, 'Sa_tbot') + call addfldTo(compwav, 'Sa_tbot') else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Sa_tbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_tbot', rc=rc)) then - call addmap(fldListFr(compatm)%fields, 'Sa_tbot', compwav, mapbilnr, 'one', atm2wav_map) - call addmrg(fldListTo(compwav)%fields, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') + call addMapFrom(compatm, 'Sa_tbot', compwav, mapbilnr, 'one', atm2wav_map) + call addmrgTo(compwav, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') end if end if @@ -2967,13 +2973,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: water flux from land (liquid surface) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Flrl_rofsur') - call addfld(fldListTo(comprof)%fields, 'Flrl_rofsur') + call addFldFrom(complnd, 'Flrl_rofsur') + call addfldTo(comprof, 'Flrl_rofsur') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_rofsur', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_rofsur', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Flrl_rofsur', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrg(fldListTo(comprof)%fields, 'Flrl_rofsur', & + call addmapFrom(complnd, 'Flrl_rofsur', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrgTo(comprof, 'Flrl_rofsur', & mrg_from=complnd, mrg_fld='Flrl_rofsur', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -2982,13 +2988,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: water flux from land (ice surface) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Flrl_rofi') - call addfld(fldListTo(comprof)%fields, 'Flrl_rofi') + call addFldFrom(complnd, 'Flrl_rofi') + call addfldTo(comprof, 'Flrl_rofi') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_rofi', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_rofi', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Flrl_rofi', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrg(fldListTo(comprof)%fields, 'Flrl_rofi', & + call addmapFrom(complnd, 'Flrl_rofi', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrgTo(comprof, 'Flrl_rofi', & mrg_from=complnd, mrg_fld='Flrl_rofi', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -2997,13 +3003,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: water flux from land (liquid glacier, wetland, and lake) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Flrl_rofgwl') - call addfld(fldListTo(comprof)%fields, 'Flrl_rofgwl') + call addFldFrom(complnd, 'Flrl_rofgwl') + call addfldTo(comprof, 'Flrl_rofgwl') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_rofgwl', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_rofgwl', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Flrl_rofgwl', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrg(fldListTo(comprof)%fields, 'Flrl_rofgwl', & + call addmapFrom(complnd, 'Flrl_rofgwl', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrgTo(comprof, 'Flrl_rofgwl', & mrg_from=complnd, mrg_fld='Flrl_rofgwl', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -3012,13 +3018,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: water flux from land (liquid subsurface) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Flrl_rofsub') - call addfld(fldListTo(comprof)%fields, 'Flrl_rofsub') + call addFldFrom(complnd, 'Flrl_rofsub') + call addfldTo(comprof, 'Flrl_rofsub') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_rofsub', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_rofsub', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Flrl_rofsub', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrg(fldListTo(comprof)%fields, 'Flrl_rofsub', & + call addmapFrom(complnd, 'Flrl_rofsub', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrgTo(comprof, 'Flrl_rofsub', & mrg_from=complnd, mrg_fld='Flrl_rofsub', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -3027,13 +3033,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: irrigation flux from land (withdrawal from rivers) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Flrl_irrig') - call addfld(fldListTo(comprof)%fields, 'Flrl_irrig') + call addFldFrom(complnd, 'Flrl_irrig') + call addfldTo(comprof, 'Flrl_irrig') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_irrig', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_irrig', rc=rc)) then - call addmap(fldListFr(complnd)%fields, 'Flrl_irrig', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrg(fldListTo(comprof)%fields, 'Flrl_irrig', & + call addmapFrom(complnd, 'Flrl_irrig', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrgTo(comprof, 'Flrl_irrig', & mrg_from=complnd, mrg_fld='Flrl_irrig', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -3053,25 +3059,25 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! Note : Sl_topo is sent from lnd -> med, but is NOT sent to glc (only used for the remapping in the mediator) if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Sl_tsrf_elev') ! surface temperature of glacier (1->glc_nec+1) - call addfld(fldListFr(complnd)%fields, 'Sl_topo_elev') ! surface heights of glacier (1->glc_nec+1) - call addfld(fldListFr(complnd)%fields, 'Flgl_qice_elev') ! glacier ice flux (1->glc_nec+1) + call addFldFrom(complnd, 'Sl_tsrf_elev') ! surface temperature of glacier (1->glc_nec+1) + call addFldFrom(complnd, 'Sl_topo_elev') ! surface heights of glacier (1->glc_nec+1) + call addFldFrom(complnd, 'Flgl_qice_elev') ! glacier ice flux (1->glc_nec+1) do ns = 1,is_local%wrap%num_icesheets - call addfld(fldListTo(compglc(ns))%fields, 'Sl_tsrf') - call addfld(fldListTo(compglc(ns))%fields, 'Flgl_qice') + call addfldTo(compglc(ns), 'Sl_tsrf') + call addfldTo(compglc(ns), 'Flgl_qice') end do else ! custom mapping, accumulation and merging will be done in prep_glc_mod.F90 do ns = 1,is_local%wrap%num_icesheets if ( fldchk(is_local%wrap%FBImp(complnd,complnd) , 'Flgl_qice_elev', rc=rc)) then - call addmap(FldListFr(complnd)%fields, 'Flgl_qice_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') + call addmapFrom(complnd, 'Flgl_qice_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') end if if ( fldchk(is_local%wrap%FBImp(complnd,complnd) , 'Sl_tsrf_elev' , rc=rc)) then - call addmap(FldListFr(complnd)%fields, 'Sl_tsrf_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') + call addmapFrom(complnd, 'Sl_tsrf_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') end if if ( fldchk(is_local%wrap%FBImp(complnd,complnd) , 'Sl_topo_elev' , rc=rc)) then ! This is needed just for mappingn to glc - but is not sent as a field - call addmap(FldListFr(complnd)%fields, 'Sl_topo_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') + call addmapFrom(complnd, 'Sl_topo_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') end if end do end if @@ -3081,21 +3087,21 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !----------------------------- if (is_local%wrap%ocn2glc_coupling) then if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'So_t_depth') - call addfld(fldListFr(compocn)%fields, 'So_s_depth') + call addfldFrom(compocn, 'So_t_depth') + call addfldFrom(compocn, 'So_s_depth') do ns = 1,is_local%wrap%num_icesheets - call addfld(fldListTo(compglc(ns))%fields, 'So_t_depth') - call addfld(fldListTo(compglc(ns))%fields, 'So_s_depth') + call addfldTo(compglc(ns), 'So_t_depth') + call addfldTo(compglc(ns), 'So_s_depth') end do else ! custom mapping, accumulation and merging will be done in prep_glc_mod.F90 ! the following is used to create the route handle do ns = 1,is_local%wrap%num_icesheets if ( fldchk(is_local%wrap%FBImp(compocn,compocn) , 'So_t_depth', rc=rc)) then - call addmap(FldListFr(compocn)%fields, 'So_t_depth', compglc(ns), mapbilnr, 'none', 'unset') + call addmapFrom(compocn, 'So_t_depth', compglc(ns), mapbilnr, 'none', 'unset') end if if ( fldchk(is_local%wrap%FBImp(compocn,compocn) , 'So_s_depth', rc=rc)) then - call addmap(FldListFr(compocn)%fields, 'So_s_depth', compglc(ns), mapbilnr, 'none', 'unset') + call addmapFrom(compocn, 'So_s_depth', compglc(ns), mapbilnr, 'none', 'unset') end if end do end if @@ -3125,16 +3131,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd and ocn: prognostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_co2prog') - call addfld(fldListTo(complnd)%fields, 'Sa_co2prog') - call addfld(fldListTo(compocn)%fields, 'Sa_co2prog') + call addFldFrom(compatm, 'Sa_co2prog') + call addfldTo(complnd, 'Sa_co2prog') + call addFldTo(compocn, 'Sa_co2prog') else - call addmap(fldListFr(compatm)%fields, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) - call addmap(fldListFr(compatm)%fields, 'Sa_co2prog', compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) + call addMapFrom(compatm, 'Sa_co2prog', compocn, mapbilnr, 'one', atm2ocn_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_co2prog', & + call addmrgTo(complnd, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') - call addmrg(fldListTo(compocn)%fields, 'Sa_co2prog', & + call addmrgTo(compocn, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') end if @@ -3142,16 +3148,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd and ocn: diagnostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_co2diag') - call addfld(fldListTo(complnd)%fields, 'Sa_co2diag') - call addfld(fldListTo(compocn)%fields, 'Sa_co2diag') + call addFldFrom(compatm, 'Sa_co2diag') + call addfldTo(complnd, 'Sa_co2diag') + call addFldTo(compocn, 'Sa_co2diag') else - call addmap(fldListFr(compatm)%fields, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) - call addmap(fldListFr(compatm)%fields, 'Sa_co2diag', compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) + call addMapFrom(compatm, 'Sa_co2diag', compocn, mapbilnr, 'one', atm2ocn_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_co2diag', & + call addmrgTo(complnd, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') - call addmrg(fldListTo(compocn)%fields, 'Sa_co2diag', & + call addmrgTo(compocn, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') end if @@ -3161,11 +3167,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: prognostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_co2prog') - call addfld(fldListTo(complnd)%fields, 'Sa_co2prog') + call addFldFrom(compatm, 'Sa_co2prog') + call addfldTo(complnd, 'Sa_co2prog') else - call addmap(fldListFr(compatm)%fields, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_co2prog', & + call addMapFrom(compatm, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') end if @@ -3173,11 +3179,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: diagnostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_co2diag') - call addfld(fldListTo(complnd)%fields, 'Sa_co2diag') + call addFldFrom(compatm, 'Sa_co2diag') + call addfldTo(complnd, 'Sa_co2diag') else - call addmap(fldListFr(compatm)%fields, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_co2diag', & + call addMapFrom(compatm, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrgTo(complnd, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') end if @@ -3185,11 +3191,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface flux of CO2 from land ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Fall_fco2_lnd') - call addfld(fldListTo(compatm)%fields, 'Fall_fco2_lnd') + call addFldFrom(complnd, 'Fall_fco2_lnd') + call addfldTo(compatm, 'Fall_fco2_lnd') else - call addmap(fldListFr(complnd)%fields, 'Fall_fco2_lnd', compatm, mapconsf, 'one', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Fall_fco2_lnd', & + call addmapFrom(complnd, 'Fall_fco2_lnd', compatm, mapconsf, 'one', lnd2atm_map) + call addmrgTo(compatm, 'Fall_fco2_lnd', & mrg_from=complnd, mrg_fld='Fall_fco2_lnd', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if @@ -3199,16 +3205,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd and ocn: prognostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_co2prog') - call addfld(fldListTo(complnd)%fields, 'Sa_co2prog') - call addfld(fldListTo(compocn)%fields, 'Sa_co2prog') + call addFldFrom(compatm, 'Sa_co2prog') + call addfldTo(complnd, 'Sa_co2prog') + call addFldTo(compocn, 'Sa_co2prog') else - call addmap(fldListFr(compatm)%fields, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) - call addmap(fldListFr(compatm)%fields, 'Sa_co2prog', compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) + call addMapFrom(compatm, 'Sa_co2prog', compocn, mapbilnr, 'one', atm2ocn_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_co2prog', & + call addmrgTo(complnd, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') - call addmrg(fldListTo(compocn)%fields, 'Sa_co2prog', & + call addmrgTo(compocn, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') end if @@ -3216,16 +3222,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd and ocn: diagnostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compatm)%fields, 'Sa_co2diag') - call addfld(fldListTo(complnd)%fields, 'Sa_co2diag') - call addfld(fldListTo(compocn)%fields, 'Sa_co2diag') + call addFldFrom(compatm, 'Sa_co2diag') + call addfldTo(complnd, 'Sa_co2diag') + call addFldTo(compocn, 'Sa_co2diag') else - call addmap(fldListFr(compatm)%fields, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) - call addmap(fldListFr(compatm)%fields, 'Sa_co2diag', compocn, mapbilnr, 'one', atm2ocn_map) + call addMapFrom(compatm, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) + call addMapFrom(compatm, 'Sa_co2diag', compocn, mapbilnr, 'one', atm2ocn_map) - call addmrg(fldListTo(complnd)%fields, 'Sa_co2diag', & + call addmrgTo(complnd, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') - call addmrg(fldListTo(compocn)%fields, 'Sa_co2diag', & + call addmrgTo(compocn, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') end if @@ -3233,11 +3239,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface flux of CO2 from land ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(complnd)%fields, 'Fall_fco2_lnd') - call addfld(fldListTo(compatm)%fields, 'Fall_fco2_lnd') + call addFldFrom(complnd, 'Fall_fco2_lnd') + call addfldTo(compatm, 'Fall_fco2_lnd') else - call addmap(fldListFr(complnd)%fields, 'Fall_fco2_lnd', compatm, mapconsf, 'one', lnd2atm_map) - call addmrg(fldListTo(compatm)%fields, 'Fall_fco2_lnd', & + call addmapFrom(complnd, 'Fall_fco2_lnd', compatm, mapconsf, 'one', lnd2atm_map) + call addmrgTo(compatm, 'Fall_fco2_lnd', & mrg_from=complnd, mrg_fld='Fall_fco2_lnd', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if @@ -3245,10 +3251,10 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface flux of CO2 from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfld(fldListFr(compocn)%fields, 'Faoo_fco2_ocn') - call addfld(fldListTo(compatm)%fields, 'Faoo_fco2_ocn') + call addfldFrom(compocn, 'Faoo_fco2_ocn') + call addfldTo(compatm, 'Faoo_fco2_ocn') else - call addmap(fldListFr(compocn)%fields, 'Faoo_fco2_ocn', compatm, mapconsd, 'one', ocn2atm_map) + call addmapFrom(compocn, 'Faoo_fco2_ocn', compatm, mapconsd, 'one', ocn2atm_map) ! custom merge in med_phases_prep_atm end if endif diff --git a/mediator/esmFldsExchange_hafs_mod.F90 b/mediator/esmFldsExchange_hafs_mod.F90 index bfa23dc25..26eaf2e03 100644 --- a/mediator/esmFldsExchange_hafs_mod.F90 +++ b/mediator/esmFldsExchange_hafs_mod.F90 @@ -13,8 +13,6 @@ module esmFldsExchange_hafs_mod use med_internalstate_mod , only : compwav use med_internalstate_mod , only : ncomps use med_internalstate_mod , only : coupling_mode - use esmflds , only : fldListTo - use esmflds , only : fldListFr !--------------------------------------------------------------------- ! This is a mediator specific routine that determines ALL possible @@ -88,7 +86,8 @@ end subroutine esmFldsExchange_hafs subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) - use esmFlds, only : addfld => med_fldList_AddFld + use esmFlds, only : addfldTo => med_fldList_AddFldTo + use esmFlds, only : addfldFrom => med_fldList_AddFldFrom ! input/output parameters: type(ESMF_GridComp) :: gcomp @@ -124,8 +123,8 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) value=cvalue, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return do n = 1,ncomps - call addfld(fldListFr(n)%flds, trim(cvalue)) - call addfld(fldListTo(n)%flds, trim(cvalue)) + call addfldFrom(n, trim(cvalue)) + call addfldTo(n, trim(cvalue)) end do end if @@ -142,12 +141,12 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) !---------------------------------------------------------- ! to med: masks from components !---------------------------------------------------------- - call addfld(fldListFr(compocn)%flds, 'So_omask') + call addfldFrom(compocn, 'So_omask') !---------------------------------------------------------- ! to med: frac from components !---------------------------------------------------------- - call addfld(fldListTo(compatm)%flds, 'So_ofrac') + call addfldTo(compatm, 'So_ofrac') !===================================================================== ! FIELDS TO ATMOSPHERE @@ -161,8 +160,8 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) S_flds = (/'So_t'/) ! sea_surface_temperature do n = 1,size(S_flds) fldname = trim(S_flds(n)) - call addfld(fldListFr(compocn)%flds, trim(fldname)) - call addfld(fldListTo(compatm)%flds, trim(fldname)) + call addfldFrom(compocn, trim(fldname)) + call addfldTo(compatm, trim(fldname)) end do deallocate(S_flds) end if @@ -175,8 +174,8 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) S_flds = (/'Sw_z0'/) ! wave_z0_roughness_length do n = 1,size(S_flds) fldname = trim(S_flds(n)) - call addfld(fldListFr(compwav)%flds, trim(fldname)) - call addfld(fldListTo(compatm)%flds, trim(fldname)) + call addfldFrom(compwav, trim(fldname)) + call addfldTo(compatm, trim(fldname)) end do deallocate(S_flds) end if @@ -198,8 +197,8 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) 'Sa_tskn' /) ! inst_temp_height_surface do n = 1,size(S_flds) fldname = trim(S_flds(n)) - call addfld(fldListFr(compatm)%flds, trim(fldname)) - call addfld(fldListTo(compocn)%flds, trim(fldname)) + call addfldFrom(compatm, trim(fldname)) + call addfldTo(compocn, trim(fldname)) end do deallocate(S_flds) end if @@ -219,8 +218,8 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) do n = 1,size(F_flds,1) fldname1 = trim(F_flds(n,1)) fldname2 = trim(F_flds(n,2)) - call addfld(fldListFr(compatm)%flds, trim(fldname1)) - call addfld(fldListTo(compocn)%flds, trim(fldname2)) + call addfldFrom(compatm, trim(fldname1)) + call addfldTo(compocn, trim(fldname2)) end do deallocate(F_flds) end if @@ -237,8 +236,8 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) S_flds = (/'Sa_u10m', 'Sa_v10m'/) do n = 1,size(S_flds) fldname = trim(S_flds(n)) - call addfld(fldListFr(compatm)%flds, trim(fldname)) - call addfld(fldListTo(compwav)%flds, trim(fldname)) + call addfldFrom(compatm, trim(fldname)) + call addfldTo(compwav, trim(fldname)) end do deallocate(S_flds) end if @@ -298,9 +297,8 @@ subroutine esmFldsExchange_hafs_init(gcomp, phase, rc) use med_internalstate_mod , only : mapfcopy, mapnstod, mapnstod_consd use med_internalstate_mod , only : mapfillv_bilnr use med_internalstate_mod , only : mapnstod_consf - use esmFlds , only : med_fldList_type - use esmFlds , only : addmap => med_fldList_AddMap - use esmFlds , only : addmrg => med_fldList_AddMrg + use esmFlds , only : addmapFrom => med_fldList_AddMapFrom + use esmFlds , only : addmrgTo => med_fldList_AddMrgTo ! input/output parameters: type(ESMF_GridComp) :: gcomp @@ -371,9 +369,9 @@ subroutine esmFldsExchange_hafs_init(gcomp, phase, rc) if (fldchk(is_local%wrap%FBExp(compatm),trim(fldname),rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn),trim(fldname),rc=rc) & ) then - call addmap(fldListFr(compocn)%flds, trim(fldname), compatm, & + call addmapFrom(compocn, trim(fldname), compatm, & mapfillv_bilnr, hafs_attr%mapnorm, hafs_attr%ocn2atm_smap) - call addmrg(fldListTo(compatm)%flds, trim(fldname), & + call addmrgTo(compatm, trim(fldname), & mrg_from=compocn, mrg_fld=trim(fldname), mrg_type='copy') end if end do @@ -391,9 +389,9 @@ subroutine esmFldsExchange_hafs_init(gcomp, phase, rc) if (fldchk(is_local%wrap%FBExp(compatm),trim(fldname),rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav,compwav),trim(fldname),rc=rc) & ) then - call addmap(fldListFr(compwav)%flds, trim(fldname), compatm, & + call addmapFrom(compwav, trim(fldname), compatm, & mapfillv_bilnr, hafs_attr%mapnorm, hafs_attr%wav2atm_smap) - call addmrg(fldListTo(compatm)%flds, trim(fldname), & + call addmrgTo(compatm, trim(fldname), & mrg_from=compwav, mrg_fld=trim(fldname), mrg_type='copy') end if end do @@ -420,9 +418,9 @@ subroutine esmFldsExchange_hafs_init(gcomp, phase, rc) if (fldchk(is_local%wrap%FBExp(compocn),trim(fldname),rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm),trim(fldname),rc=rc) & ) then - call addmap(fldListFr(compatm)%flds, trim(fldname), compocn, & + call addmapFrom(compatm, trim(fldname), compocn, & mapfillv_bilnr, hafs_attr%mapnorm, hafs_attr%atm2ocn_smap) - call addmrg(fldListTo(compocn)%flds, trim(fldname), & + call addmrgTo(compocn, trim(fldname), & mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') end if end do @@ -447,9 +445,9 @@ subroutine esmFldsExchange_hafs_init(gcomp, phase, rc) if (fldchk(is_local%wrap%FBExp(compocn),trim(fldname2),rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm),trim(fldname1),rc=rc) & ) then - call addmap(fldListFr(compatm)%flds, trim(fldname1), compocn, & + call addmapFrom(compatm, trim(fldname1), compocn, & mapfillv_bilnr, hafs_attr%mapnorm, hafs_attr%atm2ocn_smap) - call addmrg(fldListTo(compocn)%flds, trim(fldname2), & + call addmrgTo(compocn, trim(fldname2), & mrg_from=compatm, mrg_fld=trim(fldname1), mrg_type='copy') end if end do @@ -471,9 +469,9 @@ subroutine esmFldsExchange_hafs_init(gcomp, phase, rc) if (fldchk(is_local%wrap%FBexp(compwav),trim(fldname),rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname),rc=rc) & ) then - call addmap(fldListFr(compatm)%flds, trim(fldname), compwav, & + call addmapFrom(compatm, trim(fldname), compwav, & mapfillv_bilnr, hafs_attr%mapnorm, hafs_attr%atm2wav_smap) - call addmrg(fldListTo(compwav)%flds, trim(fldname), & + call addmrgTo(compwav, trim(fldname), & mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') end if end do diff --git a/mediator/esmFldsExchange_nems_mod.F90 b/mediator/esmFldsExchange_nems_mod.F90 index 6424da65b..a17461592 100644 --- a/mediator/esmFldsExchange_nems_mod.F90 +++ b/mediator/esmFldsExchange_nems_mod.F90 @@ -33,10 +33,13 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) use med_internalstate_mod , only : mapconsf_aofrac, mapbilnr_nstod use med_internalstate_mod , only : coupling_mode, mapnames use esmFlds , only : med_fldList_type - use esmFlds , only : addfld => med_fldList_AddFld - use esmFlds , only : addmap => med_fldList_AddMap - use esmFlds , only : addmrg => med_fldList_AddMrg - use esmflds , only : fldListTo, fldListFr, fldListMed_aoflux, fldListMed_ocnalb + use esmFlds , only : addfldTo => med_fldList_AddFldTo + use esmFlds , only : addmapTo => med_fldList_AddMapTo + use esmFlds , only : addmrgTo => med_fldList_AddMrgTo + use esmFlds , only : addfldFrom => med_fldList_AddFldFrom + use esmFlds , only : addmapFrom => med_fldList_AddMapFrom + use esmFlds , only : addmrgFrom => med_fldList_AddMrgFrom + use med_internalstate_mod , only : InternalState, mastertask, logunit ! input/output parameters: @@ -81,8 +84,8 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) call NUOPC_CompAttributeGet(gcomp, name="ScalarFieldName", value=cvalue, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return do n = 1,ncomps - call addfld(fldListFr(n)%flds, trim(cvalue)) - call addfld(fldListTo(n)%flds, trim(cvalue)) + call addFldTo(n, trim(cvalue)) + call addfldFrom(n, trim(cvalue)) end do end if @@ -92,13 +95,13 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! masks from components if (phase == 'advertise') then - if (is_local%wrap%comp_present(compice)) call addfld(fldListFr(compice)%flds, 'Si_imask') - if (is_local%wrap%comp_present(compocn)) call addfld(fldListFr(compocn)%flds, 'So_omask') - if (is_local%wrap%comp_present(complnd)) call addfld(fldListFr(complnd)%flds, 'Sl_lfrin') + if (is_local%wrap%comp_present(compice)) call addfldFrom(compice, 'Si_imask') + if (is_local%wrap%comp_present(compocn)) call addfldFrom(compocn, 'So_omask') + if (is_local%wrap%comp_present(complnd)) call addFldFrom(complnd, 'Sl_lfrin') else if ( fldchk(is_local%wrap%FBexp(compice) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), trim(fldname), rc=rc)) then - call addmap(fldListFr(compocn)%flds, 'So_omask', compice, mapfcopy, 'unset', 'unset') + call addMapFrom(compocn, 'So_omask', compice, mapfcopy, 'unset', 'unset') end if end if @@ -111,11 +114,11 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) )then - call addfld(fldListFr(compatm)%flds, trim(fldname)) + call addfldFrom(compatm, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmap(fldListFr(compatm)%flds, trim(fldname), compocn, maptype, 'one', 'unset') + call addmapFrom(compatm, trim(fldname), compocn, maptype, 'one', 'unset') end if end if end do @@ -128,7 +131,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) do n = 1,size(flds) fldname = trim(flds(n)) if (phase == 'advertise') then - call addfld(fldListMed_aoflux%flds, trim(fldname)) + call addaofluxfld(trim(fldname)) end if end do deallocate(flds) @@ -143,11 +146,11 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) )then - call addfld(fldListFr(compatm)%flds, trim(fldname)) + call addfldFrom(compatm, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmap(fldListFr(compatm)%flds, trim(fldname), compocn, maptype, 'one', 'unset') + call addmapFrom(compatm, trim(fldname), compocn, maptype, 'one', 'unset') end if end if end do @@ -161,7 +164,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) do n = 1,size(flds) fldname = trim(flds(n)) if (phase == 'advertise') then - call addfld(fldListMed_aoflux%flds, trim(fldname)) + call addaofluxfld(trim(fldname)) end if end do deallocate(flds) @@ -169,7 +172,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! TODO: unused, but required to maintain B4B repro for mediator restarts; should be removed if (phase == 'advertise') then - call addfld(fldListFr(compice)%flds, 'mean_sw_pen_to_ocn') + call addfldFrom(compice, 'mean_sw_pen_to_ocn') end if !===================================================================== @@ -179,16 +182,16 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to atm: fractions (computed in med_phases_prep_atm) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compatm)) then - call addfld(fldListFr(compice)%flds, 'Si_ifrac') - call addfld(fldListTo(compatm)%flds, 'Si_ifrac') + call addfldFrom(compice, 'Si_ifrac') + call addfldTo(compatm, 'Si_ifrac') end if ! ofrac used by atm if (is_local%wrap%comp_present(compocn) .and. is_local%wrap%comp_present(compatm)) then - call addfld(fldListFr(compatm)%flds, 'Sa_ofrac') + call addfldFrom(compatm, 'Sa_ofrac') end if ! lfrac used by atm if (is_local%wrap%comp_present(complnd) .and. is_local%wrap%comp_present(compatm)) then - call addfld(fldListTo(compatm)%flds, 'Sl_lfrac') + call addfldTo(compatm, 'Sl_lfrac') end if end if @@ -208,14 +211,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compatm)) then - call addfld(fldListFr(compice)%flds, trim(fldname)) - call addfld(fldListTo(compatm)%flds, trim(fldname)) + call addfldFrom(compice, trim(fldname)) + call addfldTo(compatm, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compatm) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), trim(fldname), rc=rc)) then - call addmap(fldListFr(compice)%flds, trim(fldname), compatm, maptype, 'ifrac', 'unset') - call addmrg(fldListTo(compatm)%flds, trim(fldname), mrg_from=compice, mrg_fld=trim(fldname), mrg_type='copy') + call addmapFrom(compice, trim(fldname), compatm, maptype, 'ifrac', 'unset') + call addmrgTo(compatm, trim(fldname), mrg_from=compice, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -227,14 +230,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compatm)) then - call addfld(fldListFr(compice)%flds, trim(fldname)) - call addfld(fldListTo(compatm)%flds, trim(fldname)) + call addfldFrom(compice, trim(fldname)) + call addfldTo(compatm, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compatm) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), trim(fldname), rc=rc)) then - call addmap(fldListFr(compice)%flds, trim(fldname), compatm, maptype, 'ifrac', 'unset') - call addmrg(fldListTo(compatm)%flds, trim(fldname), mrg_from=compice, mrg_fld=trim(fldname), mrg_type='copy') + call addmapFrom(compice, trim(fldname), compatm, maptype, 'ifrac', 'unset') + call addmrgTo(compatm, trim(fldname), mrg_from=compice, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -243,28 +246,28 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to atm: unmerged surface temperatures from ocn if (phase == 'advertise') then if (is_local%wrap%comp_present(compocn) .and. is_local%wrap%comp_present(compatm)) then - call addfld(fldListFr(compocn)%flds, 'So_t') - call addfld(fldListTo(compatm)%flds, 'So_t') + call addfldFrom(compocn, 'So_t') + call addfldTo(compatm, 'So_t') end if else if ( fldchk(is_local%wrap%FBexp(compatm) , 'So_t', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_t', rc=rc)) then - call addmap(fldListFr(compocn)%flds, 'So_t', compatm, maptype, 'ofrac', 'unset') - call addmrg(fldListTo(compatm)%flds, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') + call addMapFrom(compocn, 'So_t', compatm, maptype, 'ofrac', 'unset') + call addmrgTo(compatm, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') end if end if ! to atm: unmerged surface temperatures from lnd if (phase == 'advertise') then if (is_local%wrap%comp_present(complnd) .and. is_local%wrap%comp_present(compatm)) then - call addfld(fldListFr(complnd)%flds, 'Sl_t') - call addfld(fldListTo(compatm)%flds, 'Sl_t') + call addFldFrom(complnd, 'Sl_t') + call addfldTo(compatm, 'Sl_t') end if else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_t', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_t', rc=rc)) then - call addmap(fldListFr(complnd)%flds, 'Sl_t', compatm, maptype, 'lfrin', 'unset') - call addmrg(fldListTo(compatm)%flds, 'Sl_t', mrg_from=complnd, mrg_fld='Sl_t', mrg_type='copy') + call addmapFrom(complnd, 'Sl_t', compatm, maptype, 'lfrin', 'unset') + call addmrgTo(compatm, 'Sl_t', mrg_from=complnd, mrg_fld='Sl_t', mrg_type='copy') end if end if @@ -280,16 +283,16 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) flds = (/ 'lat ', 'sen ', 'lwup', 'taux', 'tauy' /) if (phase == 'advertise') then do n = 1,size(flds) - call addfld(fldListMed_aoflux%flds , 'Faox_'//trim(flds(n))) - call addfld(fldListTo(compatm)%flds, 'Faox_'//trim(flds(n))) + call addaofluxfld('Faox_'//trim(flds(n))) + call addfldTo(compatm, 'Faox_'//trim(flds(n))) end do else do n = 1,size(flds) if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_'//trim(flds(n)), rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addmap(fldListMed_aoflux%flds, 'Faox_'//trim(flds(n)), compatm, maptype, 'ofrac', 'unset') + call addaofluxmap('Faox_'//trim(flds(n)), compatm, maptype, 'ofrac', 'unset') end if - call addmrg(fldListTo(compatm)%flds, 'Faox_'//trim(flds(n)), mrg_from=compmed, mrg_fld='Faox_'//trim(flds(n)), mrg_type='copy') + call addmrgTo(compatm, 'Faox_'//trim(flds(n)), mrg_from=compmed, mrg_fld='Faox_'//trim(flds(n)), mrg_type='copy') end if end do end if @@ -300,14 +303,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to atm: surface roughness length from wav if (phase == 'advertise') then if (is_local%wrap%comp_present(compwav) .and. is_local%wrap%comp_present(compatm)) then - call addfld(fldListFr(compwav)%flds, 'Sw_z0') - call addfld(fldListTo(compatm)%flds, 'Sw_z0') + call addfldFrom(compwav, 'Sw_z0') + call addfldTo(compatm, 'Sw_z0') end if else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sw_z0', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav,compwav), 'Sw_z0', rc=rc)) then - call addmap(fldListFr(compwav)%flds, 'Sw_z0', compatm, mapnstod_consf, 'one', 'unset') - call addmrg(fldListTo(compatm)%flds, 'Sw_z0', mrg_from=compwav, mrg_fld='Sw_z0', mrg_type='copy') + call addmapFrom(compwav, 'Sw_z0', compatm, mapnstod_consf, 'one', 'unset') + call addmrgTo(compatm, 'Sw_z0', mrg_from=compwav, mrg_fld='Sw_z0', mrg_type='copy') end if end if @@ -318,14 +321,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to ocn: sea level pressure from atm if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfld(fldListFr(compatm)%flds, 'Sa_pslv') - call addfld(fldListTo(compocn)%flds, 'Sa_pslv') + call addfldFrom(compatm, 'Sa_pslv') + call addFldTo(compocn, 'Sa_pslv') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Sa_pslv', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Sa_pslv', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Sa_pslv', compocn, maptype, 'one', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Sa_pslv', mrg_from=compatm, mrg_fld='Sa_pslv', mrg_type='copy') + call addmapFrom(compatm, 'Sa_pslv', compocn, maptype, 'one', 'unset') + call addmrgTo(compocn, 'Sa_pslv', mrg_from=compatm, mrg_fld='Sa_pslv', mrg_type='copy') end if end if @@ -343,13 +346,13 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) do n = 1,size(oflds) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfld(fldListFr(compatm)%flds, trim(aflds(n))) - call addfld(fldListTo(compocn)%flds, trim(oflds(n))) + call addfldFrom(compatm, trim(aflds(n))) + call addFldTo(compocn, trim(oflds(n))) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , trim(oflds(n)), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(aflds(n)), rc=rc)) then - call addmap(fldListFr(compatm)%flds, trim(aflds(n)), compocn, maptype, 'one', 'unset') + call addmapFrom(compatm, trim(aflds(n)), compocn, maptype, 'one', 'unset') end if end if end do @@ -357,13 +360,13 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) do n = 1,size(oflds) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compocn)) then - call addfld(fldListFr(compice)%flds, trim(iflds(n))) - call addfld(fldListTo(compocn)%flds, trim(oflds(n))) + call addfldFrom(compice, trim(iflds(n))) + call addFldTo(compocn, trim(oflds(n))) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , trim(oflds(n)), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), trim(iflds(n)), rc=rc)) then - call addmap(fldListFr(compice)%flds, trim(iflds(n)), compocn, mapfcopy, 'unset', 'unset') + call addmapFrom(compice, trim(iflds(n)), compocn, mapfcopy, 'unset', 'unset') end if end if end do @@ -378,14 +381,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfld(fldListFr(compatm)%flds, trim(fldname)) - call addfld(fldListTo(compocn)%flds, trim(fldname)) + call addfldFrom(compatm, trim(fldname)) + call addFldTo(compocn, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmap(fldListFr(compatm)%flds, trim(fldname), compocn, maptype, 'one', 'unset') - call addmrg(fldListTo(compocn)%flds, trim(fldname), & + call addmapFrom(compatm, trim(fldname), compocn, maptype, 'one', 'unset') + call addmrgTo(compocn, trim(fldname), & mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -405,16 +408,16 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compatm) & .and. is_local%wrap%comp_present(compocn)) then - call addfld(fldListFr(compice)%flds, trim(iflds(n))) - call addfld(fldListFr(compatm)%flds, trim(aflds(n))) - call addfld(fldListTo(compocn)%flds, trim(oflds(n))) + call addfldFrom(compice, trim(iflds(n))) + call addfldFrom(compatm, trim(aflds(n))) + call addFldTo(compocn, trim(oflds(n))) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , trim(oflds(n)), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), trim(iflds(n)), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(aflds(n)), rc=rc)) then - call addmap(fldListFr(compice)%flds, trim(iflds(n)), compocn, mapfcopy, 'unset', 'unset') - call addmap(fldListFr(compatm)%flds, trim(aflds(n)), compocn, mapconsf_aofrac, 'aofrac', 'unset') + call addmapFrom(compice, trim(iflds(n)), compocn, mapfcopy, 'unset', 'unset') + call addmapFrom(compatm, trim(aflds(n)), compocn, mapconsf_aofrac, 'aofrac', 'unset') end if end if end do @@ -425,14 +428,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to ocn: net long wave via auto merge if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfld(fldListFr(compatm)%flds, 'Faxa_lwnet') - call addfld(fldListTo(compocn)%flds, 'Faxa_lwnet') + call addfldFrom(compatm, 'Faxa_lwnet') + call addFldTo(compocn, 'Faxa_lwnet') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Faxa_lwnet', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwnet', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_lwnet', compocn, mapconsf_aofrac, 'aofrac', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Faxa_lwnet', & + call addmapFrom(compatm, 'Faxa_lwnet', compocn, mapconsf_aofrac, 'aofrac', 'unset') + call addmrgTo(compocn, 'Faxa_lwnet', & mrg_from=compatm, mrg_fld='Faxa_lwnet', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -440,26 +443,26 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to ocn: merged sensible heat flux (custom merge in med_phases_prep_ocn) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfld(fldListFr(compatm)%flds, 'Faxa_sen') - call addfld(fldListTo(compocn)%flds, 'Faxa_sen') + call addfldFrom(compatm, 'Faxa_sen') + call addFldTo(compocn, 'Faxa_sen') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Faxa_sen', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_sen', rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_sen', compocn, mapconsf_aofrac, 'aofrac', 'unset') + call addmapFrom(compatm, 'Faxa_sen', compocn, mapconsf_aofrac, 'aofrac', 'unset') end if end if ! to ocn: evaporation water flux (custom merge in med_phases_prep_ocn) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfld(fldListFr(compatm)%flds, 'Faxa_lat') - call addfld(fldListTo(compocn)%flds, 'Faxa_evap') + call addfldFrom(compatm, 'Faxa_lat') + call addFldTo(compocn, 'Faxa_evap') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Faxa_evap', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lat' , rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_lat', compocn, mapconsf_aofrac, 'aofrac', 'unset') + call addmapFrom(compatm, 'Faxa_lat', compocn, mapconsf_aofrac, 'aofrac', 'unset') end if end if else if (trim(coupling_mode) == 'nems_orig_data' .or. trim(coupling_mode) == 'nems_frac_aoflux') then @@ -470,18 +473,18 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) do n = 1,size(flds) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compocn)) then - call addfld(fldListMed_aoflux%flds , 'Faox_'//trim(flds(n))) - call addfld(fldListFr(compice)%flds , 'Fioi_'//trim(flds(n))) - call addfld(fldListTo(compocn)%flds , 'Foxx_'//trim(flds(n))) + call addaofluxfld('Faox_'//trim(flds(n))) + call addfldFrom(compice , 'Fioi_'//trim(flds(n))) + call addFldTo(compocn , 'Foxx_'//trim(flds(n))) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Foxx_'//trim(flds(n)), rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'Faox_'//trim(flds(n)), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_'//trim(flds(n)), rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Fioi_'//trim(flds(n)), compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Foxx_'//trim(flds(n)), & + call addmapFrom(compice, 'Fioi_'//trim(flds(n)), compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, 'Foxx_'//trim(flds(n)), & mrg_from=compmed, mrg_fld='Faox_'//trim(flds(n)), mrg_type='merge', mrg_fracname='ofrac') - call addmrg(fldListTo(compocn)%flds, 'Foxx_'//trim(flds(n)), & + call addmrgTo(compocn, 'Foxx_'//trim(flds(n)), & mrg_from=compice, mrg_fld='Fioi_'//trim(flds(n)), mrg_type='merge', mrg_fracname='ifrac') end if end if @@ -491,18 +494,18 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to ocn: long wave net via auto merge if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfld(fldListMed_aoflux%flds , 'Faox_lwup') - call addfld(fldListFr(compatm)%flds, 'Faxa_lwdn') - call addfld(fldListTo(compocn)%flds, 'Foxx_lwnet') + call addaofluxfld('Faox_lwup') + call addfldFrom(compatm, 'Faxa_lwdn') + call addFldTo(compocn, 'Foxx_lwnet') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Foxx_lwnet', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'Faox_lwup' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwdn' , rc=rc)) then - call addmap(fldListFr(compatm)%flds, 'Faxa_lwdn', compocn, maptype, 'one', 'unset') - call addmrg(fldListTo(compocn)%flds, 'Foxx_lwnet', & + call addmapFrom(compatm, 'Faxa_lwdn', compocn, maptype, 'one', 'unset') + call addmrgTo(compocn, 'Foxx_lwnet', & mrg_from=compmed, mrg_fld='Faox_lwup', mrg_type='merge', mrg_fracname='ofrac') - call addmrg(fldListTo(compocn)%flds, 'Foxx_lwnet', & + call addmrgTo(compocn, 'Foxx_lwnet', & mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -510,13 +513,13 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to ocn: sensible heat flux from mediator via auto merge if (phase == 'advertise') then if (is_local%wrap%comp_present(compocn)) then - call addfld(fldListMed_aoflux%flds , 'Faox_sen') - call addfld(fldListTo(compocn)%flds, 'Faox_sen') + call addaofluxfld('Faox_sen') + call addFldTo(compocn, 'Faox_sen') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Faox_sen', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'Faox_sen' , rc=rc)) then - call addmrg(fldListTo(compocn)%flds, 'Faox_sen', & + call addmrgTo(compocn, 'Faox_sen', & mrg_from=compmed, mrg_fld='Faox_sen', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -524,13 +527,13 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to ocn: evaporation water flux from mediator via auto merge if (phase == 'advertise') then if (is_local%wrap%comp_present(compocn)) then - call addfld(fldListMed_aoflux%flds , 'Faox_evap') - call addfld(fldListTo(compocn)%flds, 'Faox_evap') + call addaofluxfld('Faox_evap') + call addFldTo(compocn, 'Faox_evap') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Faox_evap', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'Faox_evap' , rc=rc)) then - call addmrg(fldListTo(compocn)%flds, 'Faox_evap', & + call addmrgTo(compocn, 'Faox_evap', & mrg_from=compmed, mrg_fld='Faox_evap', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -545,14 +548,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compocn)) then - call addfld(fldListFr(compice)%flds, trim(fldname)) - call addfld(fldListTo(compocn)%flds, trim(fldname)) + call addfldFrom(compice, trim(fldname)) + call addFldTo(compocn, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), trim(fldname), rc=rc)) then - call addmap(fldListFr(compice)%flds, trim(fldname), compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, trim(fldname), & + call addmapFrom(compice, trim(fldname), compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, trim(fldname), & mrg_from=compice, mrg_fld=trim(fldname), mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -567,14 +570,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compwav) .and. is_local%wrap%comp_present(compocn)) then - call addfld(fldListFr(compwav)%flds, trim(fldname)) - call addfld(fldListTo(compocn)%flds, trim(fldname)) + call addfldFrom(compwav, trim(fldname)) + call addFldTo(compocn, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav,compwav), trim(fldname), rc=rc)) then - call addmap(fldListFr(compwav)%flds, trim(fldname), compocn, mapfcopy, 'unset', 'unset') - call addmrg(fldListTo(compocn)%flds, trim(fldname), mrg_from=compwav, mrg_fld=trim(fldname), mrg_type='copy') + call addmapFrom(compwav, trim(fldname), compocn, mapfcopy, 'unset', 'unset') + call addmrgTo(compocn, trim(fldname), mrg_from=compwav, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -600,14 +603,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compice)) then - call addfld(fldListFr(compatm)%flds, trim(fldname)) - call addfld(fldListTo(compice)%flds, trim(fldname)) + call addfldFrom(compatm, trim(fldname)) + call addFldTo(compice, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compice) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmap(fldListFr(compatm)%flds, trim(fldname), compice, maptype, 'one', 'unset') - call addmrg(fldListTo(compice)%flds, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') + call addmapFrom(compatm, trim(fldname), compice, maptype, 'one', 'unset') + call addmrgTo(compice, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -627,14 +630,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compice)) then - call addfld(fldListFr(compatm)%flds, trim(fldname)) - call addfld(fldListTo(compice)%flds, trim(fldname)) + call addfldFrom(compatm, trim(fldname)) + call addFldTo(compice, trim(fldname)) endif else if ( fldchk(is_local%wrap%FBexp(compice) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmap(fldListFr(compatm)%flds, trim(fldname), compice, maptype, 'one', 'unset') - call addmrg(fldListTo(compice)%flds, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') + call addmapFrom(compatm, trim(fldname), compice, maptype, 'one', 'unset') + call addmrgTo(compice, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -655,14 +658,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compocn) .and. is_local%wrap%comp_present(compice)) then - call addfld(fldListFr(compocn)%flds, trim(fldname)) - call addfld(fldListTo(compice)%flds, trim(fldname)) + call addfldFrom(compocn, trim(fldname)) + call addFldTo(compice, trim(fldname)) endif else if ( fldchk(is_local%wrap%FBexp(compice) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), trim(fldname), rc=rc)) then - call addmap(fldListFr(compocn)%flds, trim(fldname), compice, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compice)%flds, trim(fldname), mrg_from=compocn, mrg_fld=trim(fldname), mrg_type='copy') + call addMapFrom(compocn, trim(fldname), compice, mapfcopy , 'unset', 'unset') + call addmrgTo(compice, trim(fldname), mrg_from=compocn, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -679,14 +682,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compwav)) then - call addfld(fldListFr(compatm)%flds, trim(fldname)) - call addfld(fldListTo(compwav)%flds, trim(fldname)) + call addfldFrom(compatm, trim(fldname)) + call addfldTo(compwav, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compwav) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmap(fldListFr(compatm)%flds, trim(fldname), compwav, mapnstod_consf, 'one', 'unset') - call addmrg(fldListTo(compwav)%flds, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') + call addmapFrom(compatm, trim(fldname), compwav, mapnstod_consf, 'one', 'unset') + call addmrgTo(compwav, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -695,14 +698,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to wav: sea ice fraction if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compwav)) then - call addfld(fldListFr(compice)%flds, 'Si_ifrac') - call addfld(fldListTo(compwav)%flds, 'Si_ifrac') + call addfldFrom(compice, 'Si_ifrac') + call addfldTo(compwav, 'Si_ifrac') end if else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Si_ifrac', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Si_ifrac', rc=rc)) then - call addmap(fldListFr(compice)%flds, 'Si_ifrac', compwav, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compwav)%flds, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') + call addmapFrom(compice, 'Si_ifrac', compwav, mapfcopy , 'unset', 'unset') + call addmrgTo(compwav, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') end if end if @@ -715,14 +718,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compocn) .and. is_local%wrap%comp_present(compwav)) then - call addfld(fldListFr(compocn)%flds, trim(fldname)) - call addfld(fldListTo(compwav)%flds, trim(fldname)) + call addfldFrom(compocn, trim(fldname)) + call addfldTo(compwav, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compwav) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), trim(fldname), rc=rc)) then - call addmap(fldListFr(compocn)%flds, trim(fldname), compwav, mapfcopy , 'unset', 'unset') - call addmrg(fldListTo(compwav)%flds, trim(fldname), mrg_from=compocn, mrg_fld=trim(fldname), mrg_type='copy') + call addMapFrom(compocn, trim(fldname), compwav, mapfcopy , 'unset', 'unset') + call addmrgTo(compwav, trim(fldname), mrg_from=compocn, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -753,14 +756,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(complnd)) then - call addfld(fldListFr(compatm)%flds, trim(fldname)) - call addfld(fldListTo(complnd)%flds, trim(fldname)) + call addfldFrom(compatm, trim(fldname)) + call addfldTo(complnd, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(complnd) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmap(fldListFr(compatm)%flds, trim(fldname), complnd, maptype, 'one', 'unset') - call addmrg(fldListTo(complnd)%flds, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') + call addmapFrom(compatm, trim(fldname), complnd, maptype, 'one', 'unset') + call addmrgTo(complnd, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do diff --git a/mediator/med_map_mod.F90 b/mediator/med_map_mod.F90 index eec1df850..6b8142a0f 100644 --- a/mediator/med_map_mod.F90 +++ b/mediator/med_map_mod.F90 @@ -83,7 +83,8 @@ subroutine med_map_RouteHandles_initfrom_esmflds(gcomp, flds_scalar_name, llogun use ESMF , only : ESMF_Mesh, ESMF_TYPEKIND_R8, ESMF_MESHLOC_ELEMENT use med_methods_mod , only : med_methods_FB_getFieldN, med_methods_FB_getNameN use med_constants_mod , only : czero => med_constants_czero - use esmFlds , only : fldListFr + use esmFlds , only : med_fldList_GetfldListFr, med_fldList_GetNumFlds, med_fldlist_type + use esmFlds , only : med_fldList_GetFldInfo use med_internalstate_mod , only : mapunset, compname, compocn, compatm use med_internalstate_mod , only : ncomps, nmappers, compname, mapnames, mapfcopy @@ -109,6 +110,7 @@ subroutine med_map_RouteHandles_initfrom_esmflds(gcomp, flds_scalar_name, llogun real(R8), pointer :: dataptr(:) type(ESMF_Mesh) :: mesh_src type(ESMF_Mesh) :: mesh_dst + type(med_fldlist_type), pointer :: FldListFr character(len=*), parameter :: subname=' (module_med_map: RouteHandles_init) ' !----------------------------------------------------------- @@ -156,10 +158,11 @@ subroutine med_map_RouteHandles_initfrom_esmflds(gcomp, flds_scalar_name, llogun end if ! Loop over fields - do nf = 1,size(fldListFr(n1)%flds) + fldListFr => med_fldList_getFldListFr(n1) + do nf = 1,med_fldList_GetNumFlds(fldlistFr) ! Determine the mapping type for mapping field nf from n1 to n2 - mapindex = fldListFr(n1)%flds(nf)%mapindex(n2) + call med_fldList_GetFldInfo(fldListFr, nf, compsrc=n2, mapindex=mapindex) if (mapindex /= mapunset) then ! determine if route handle has already been created @@ -169,7 +172,8 @@ subroutine med_map_RouteHandles_initfrom_esmflds(gcomp, flds_scalar_name, llogun ! Create route handle for target mapindex if route handle is required ! (i.e. mapindex /= mapunset) and route handle has not already been created if (.not. mapexists) then - mapfile = trim(fldListFr(n1)%flds(nf)%mapfile(n2)) + !~ mapfile = trim(fldListFr%fields(nf)%mapfile(n2)) + call med_fldList_GetFldInfo(fldListFr, nf, compsrc=n2, mapfile=mapfile) call med_map_routehandles_initfrom_field(n1, n2, fldsrc, flddst, & mapindex, is_local%wrap%rh(n1,n2,:), mapfile=trim(mapfile), rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return @@ -177,6 +181,8 @@ subroutine med_map_RouteHandles_initfrom_esmflds(gcomp, flds_scalar_name, llogun end if ! end if mapindex is mapunset end do ! loop over fields + + end if ! if coupling active end if ! if n1 not equal to n2 end do ! loop over n2 @@ -718,7 +724,7 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & ! input/output variables integer , intent(in) :: destcomp character(len=*) , intent(in) :: flds_scalar_name - type(med_fldList_entry_type) , pointer :: fldsSrc(:) ! array over mapping types + type(med_fldList_entry_type) , target :: fieldsSrc ! mapping types top of LL type(ESMF_FieldBundle) , intent(in) :: FBSrc type(ESMF_FieldBundle) , intent(inout) :: FBDst type(packed_data_type) , intent(inout) :: packed_data(:) ! array over mapping types @@ -792,14 +798,16 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & ! Loop over source field bundle do nf = 1, fieldCount ! Loop over the fldsSrc types - do ns = 1,size(fldsSrc) + numflds = med_fldlist_GetNumFlds(fldsSrc) + do ns = 1,numflds ! Note that fieldnamelist is an array of names for the source fields ! The assumption is that there is only one mapping normalization ! for any given mapping type - if ( fldsSrc(ns)%mapindex(destcomp) == mapindex .and. & - trim(fldsSrc(ns)%shortname) == trim(fieldnamelist(nf))) then + call med_fldList_GetFldInfo(fldsSrc, ns, compsrc=destcomp, shortname=shortname, mapindex=destindex) + if ( destindex == mapindex .and. & + trim(shortname) == trim(fieldnamelist(nf))) then ! Set the normalization to the input - packed_data(mapindex)%mapnorm = fldsSrc(ns)%mapnorm(destcomp) + call med_FldList_GetFldInfo(fldsSrc, ns, compsrc=destcomp, mapnorm=packed_data(mapindex)%mapnorm=mapnorm) if (mapnorm_mapindex == 'not_set') then mapnorm_mapindex = packed_data(mapindex)%mapnorm write(tmpstr,*)'Map type '//trim(mapnames(mapindex)) & diff --git a/mediator/med_phases_prep_ice_mod.F90 b/mediator/med_phases_prep_ice_mod.F90 index 0d78bbed0..6b8f9c8a1 100644 --- a/mediator/med_phases_prep_ice_mod.F90 +++ b/mediator/med_phases_prep_ice_mod.F90 @@ -39,7 +39,7 @@ subroutine med_phases_prep_ice(gcomp, rc) use med_internalstate_mod , only : InternalState, logunit, mastertask use med_internalstate_mod , only : compatm, compice, compocn, comprof use med_internalstate_mod , only : coupling_mode - use esmFlds , only : fldListTo + use esmFlds , only : med_fldList_GetFldListTo use perf_mod , only : t_startf, t_stopf ! input/output variables @@ -85,7 +85,8 @@ subroutine med_phases_prep_ice(gcomp, rc) is_local%wrap%FBExp(compice), & is_local%wrap%FBFrac(compice), & is_local%wrap%FBImp(:,compice), & - fldListTo(compice), rc=rc) + med_fldList_GetFldListTo(compice), & + rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return ! Apply precipitation factor from ocean (that scales atm rain and snow to ice) if appropriate diff --git a/mediator/med_phases_prep_lnd_mod.F90 b/mediator/med_phases_prep_lnd_mod.F90 index ed1181f99..0ed527b8f 100644 --- a/mediator/med_phases_prep_lnd_mod.F90 +++ b/mediator/med_phases_prep_lnd_mod.F90 @@ -27,7 +27,7 @@ subroutine med_phases_prep_lnd(gcomp, rc) use ESMF , only : ESMF_FieldBundle, ESMF_FieldBundleGet, ESMF_Field, ESMF_FieldGet use ESMF , only : ESMF_GridComp, ESMF_GridCompGet use ESMF , only : ESMF_StateGet, ESMF_StateItem_Flag, ESMF_STATEITEM_NOTFOUND - use esmFlds , only : fldListTo + use esmFlds , only : med_fldList_GetFldListTo use med_methods_mod , only : fldbun_diagnose => med_methods_FB_diagnose use med_utils_mod , only : chkerr => med_utils_ChkErr use med_constants_mod , only : dbug_flag => med_constants_dbug_flag @@ -89,7 +89,7 @@ subroutine med_phases_prep_lnd(gcomp, rc) is_local%wrap%FBExp(complnd), & is_local%wrap%FBFrac(complnd), & is_local%wrap%FBImp(:,complnd), & - fldListTo(complnd), rc=rc) + med_fldList_GetFldListTo(complnd), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call t_stopf('MED:'//trim(subname)//' merge') diff --git a/mediator/med_phases_prep_rof_mod.F90 b/mediator/med_phases_prep_rof_mod.F90 index 011b9a2b0..f332fbad0 100644 --- a/mediator/med_phases_prep_rof_mod.F90 +++ b/mediator/med_phases_prep_rof_mod.F90 @@ -80,7 +80,8 @@ subroutine med_phases_prep_rof_init(gcomp, rc) use ESMF , only : ESMF_FieldBundle, ESMF_FieldBundleCreate, ESMF_FieldBundleGet, ESMF_FieldBundleAdd use ESMF , only : ESMF_LogWrite, ESMF_LOGMSG_INFO, ESMF_SUCCESS use ESMF , only : ESMF_TYPEKIND_R8 - use esmFlds , only : fldListFr, fldlistTo, med_fldlist_GetNumFlds, med_fldlist_getFldInfo + use esmFlds , only : med_fldList_GetfldListFr, med_fldList_GetfldlistTo, med_fldlist_GetNumFlds, med_fldlist_getFldInfo + use esmFlds , only : med_fldList_type use med_map_mod , only : med_map_packed_field_create ! input/output variables @@ -93,6 +94,7 @@ subroutine med_phases_prep_rof_init(gcomp, rc) type(ESMF_Mesh) :: mesh_l type(ESMF_Mesh) :: mesh_r type(ESMF_Field) :: lfield + type(med_fldList_type), pointer :: fldListTo character(len=CS), allocatable :: fldnames_temp(:) character(len=*),parameter :: subname=' (med_phases_prep_rof_init) ' !--------------------------------------- @@ -106,10 +108,11 @@ subroutine med_phases_prep_rof_init(gcomp, rc) ! Determine lnd2rof_flds (module variable) - note that fldListTo is set in esmFldsExchange_cesm.F90 ! Remove scalar field from lnd2rof_flds - nflds = med_fldlist_getnumflds(fldlistTo(comprof)) + fldListTo => med_fldList_GetfldlistTo(comprof) + nflds = med_fldlist_getnumflds(fldListTo) allocate(fldnames_temp(nflds)) do n = 1,nflds - call med_fldList_GetFldInfo(fldListTo(comprof), n, stdname=fldnames_temp(n)) + call med_fldList_GetFldInfo(fldListTo, n, stdname=fldnames_temp(n)) end do do n = 1,nflds if (trim(fldnames_temp(n)) == trim(is_local%wrap%flds_scalar_name)) then @@ -157,11 +160,11 @@ subroutine med_phases_prep_rof_init(gcomp, rc) call fldbun_reset(FBlndAccum2rof_r, value=0.0_r8, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return lndAccum2rof_cnt = 0 - + fldList = med_fldList_GetFldListFr(complnd) ! Create packed mapping from rof->lnd call med_map_packed_field_create(destcomp=comprof, & flds_scalar_name=is_local%wrap%flds_scalar_name, & - fldsSrc=fldListFr(complnd)%flds, & + fldsSrc=med_fldlist_getfldListFr(complnd), & FBSrc=FBLndAccum2rof_l, FBDst=FBLndAccum2rof_r, & packed_data=is_local%wrap%packed_data(complnd,comprof,:), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return diff --git a/mediator/med_phases_prep_wav_mod.F90 b/mediator/med_phases_prep_wav_mod.F90 index a1bd85c1b..4fdd630ea 100644 --- a/mediator/med_phases_prep_wav_mod.F90 +++ b/mediator/med_phases_prep_wav_mod.F90 @@ -17,7 +17,7 @@ module med_phases_prep_wav_mod use med_methods_mod , only : FB_average => med_methods_FB_average use med_methods_mod , only : FB_copy => med_methods_FB_copy use med_methods_mod , only : FB_reset => med_methods_FB_reset - use esmFlds , only : fldListTo + use esmFlds , only : med_fldList_GetfldListTo use med_internalstate_mod , only : compwav use perf_mod , only : t_startf, t_stopf @@ -103,7 +103,7 @@ subroutine med_phases_prep_wav_accum(gcomp, rc) is_local%wrap%FBExp(compwav), & is_local%wrap%FBFrac(compwav), & is_local%wrap%FBImp(:,compwav), & - fldListTo(compwav), rc=rc) + med_fldList_GetfldListTo(compwav), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return ! wave accumulator From fbb8ef5c0590af68defbd1faef95a227ec6be459 Mon Sep 17 00:00:00 2001 From: James Edwards Date: Sat, 19 Nov 2022 14:38:39 -0700 Subject: [PATCH 03/21] save work --- mediator/med_map_mod.F90 | 12 +++++++----- mediator/med_phases_prep_rof_mod.F90 | 2 +- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/mediator/med_map_mod.F90 b/mediator/med_map_mod.F90 index 6b8142a0f..d2e5b3057 100644 --- a/mediator/med_map_mod.F90 +++ b/mediator/med_map_mod.F90 @@ -713,10 +713,10 @@ end function med_map_RH_is_created_RH1d !================================================================================ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & - fldsSrc, FBSrc, FBDst, packed_data, rc) + fieldsSrc, FBSrc, FBDst, packed_data, rc) use ESMF - use esmFlds , only : med_fldList_entry_type + use esmFlds , only : med_fldList_entry_type, med_fldList_getNumFlds use med_internalstate_mod , only : nmappers use med_internalstate_mod , only : ncomps, compatm, compice, compocn, compname, mapnames use med_internalstate_mod , only : packed_data_type @@ -743,6 +743,7 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & type(ESMF_Mesh) :: lmesh_src type(ESMF_Mesh) :: lmesh_dst integer :: mapindex + integer :: numFlds type(ESMF_Field), pointer :: fieldlist_src(:) type(ESMF_Field), pointer :: fieldlist_dst(:) character(CL), allocatable :: fieldNameList(:) @@ -798,16 +799,17 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & ! Loop over source field bundle do nf = 1, fieldCount ! Loop over the fldsSrc types - numflds = med_fldlist_GetNumFlds(fldsSrc) + + numflds = med_fldlist_GetNumFlds(fieldsSrc) do ns = 1,numflds ! Note that fieldnamelist is an array of names for the source fields ! The assumption is that there is only one mapping normalization ! for any given mapping type - call med_fldList_GetFldInfo(fldsSrc, ns, compsrc=destcomp, shortname=shortname, mapindex=destindex) + call med_fldList_GetFldInfo(fieldsSrc, ns, compsrc=destcomp, shortname=shortname, mapindex=destindex) if ( destindex == mapindex .and. & trim(shortname) == trim(fieldnamelist(nf))) then ! Set the normalization to the input - call med_FldList_GetFldInfo(fldsSrc, ns, compsrc=destcomp, mapnorm=packed_data(mapindex)%mapnorm=mapnorm) + call med_FldList_GetFldInfo(fieldsSrc, ns, compsrc=destcomp, mapnorm=packed_data(mapindex)%mapnorm=mapnorm) if (mapnorm_mapindex == 'not_set') then mapnorm_mapindex = packed_data(mapindex)%mapnorm write(tmpstr,*)'Map type '//trim(mapnames(mapindex)) & diff --git a/mediator/med_phases_prep_rof_mod.F90 b/mediator/med_phases_prep_rof_mod.F90 index f332fbad0..47430d685 100644 --- a/mediator/med_phases_prep_rof_mod.F90 +++ b/mediator/med_phases_prep_rof_mod.F90 @@ -164,7 +164,7 @@ subroutine med_phases_prep_rof_init(gcomp, rc) ! Create packed mapping from rof->lnd call med_map_packed_field_create(destcomp=comprof, & flds_scalar_name=is_local%wrap%flds_scalar_name, & - fldsSrc=med_fldlist_getfldListFr(complnd), & + fldsSrc=fldList, & FBSrc=FBLndAccum2rof_l, FBDst=FBLndAccum2rof_r, & packed_data=is_local%wrap%packed_data(complnd,comprof,:), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return From 69f31b84bbbc76174a24e911be3a582345412fd7 Mon Sep 17 00:00:00 2001 From: James Edwards Date: Sun, 20 Nov 2022 07:53:02 -0700 Subject: [PATCH 04/21] compiles now --- mediator/esmFlds.F90 | 26 ++++++++++++++++++++ mediator/esmFldsExchange_cesm_mod.F90 | 29 +++++++++++----------- mediator/esmFldsExchange_nems_mod.F90 | 4 ++- mediator/med.F90 | 35 +++++++++++++++------------ mediator/med_map_mod.F90 | 20 ++++++++------- mediator/med_phases_aofluxes_mod.F90 | 16 +++++++----- mediator/med_phases_post_glc_mod.F90 | 1 - mediator/med_phases_prep_atm_mod.F90 | 6 ++--- mediator/med_phases_prep_ocn_mod.F90 | 6 ++--- mediator/med_phases_prep_rof_mod.F90 | 14 +++++------ 10 files changed, 98 insertions(+), 59 deletions(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index 01c148b9a..018f164c7 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -21,6 +21,7 @@ module esmflds public :: med_fldList_AddMrgTo public :: med_fldList_AddOcnalbFld + public :: med_fldList_AddocnalbMap public :: med_fldList_AddaofluxFld public :: med_fldList_AddaofluxMap @@ -37,6 +38,8 @@ module esmflds public :: med_fldList_Document_Merging public :: med_fldList_GetFldListFr public :: med_fldList_GetFldListTo + public :: med_fldList_GetaofluxFldList + public :: med_fldList_GetocnalbFldList !----------------------------------------------- ! Types and instantiations that determine fields, mappings, mergings !----------------------------------------------- @@ -89,6 +92,18 @@ subroutine med_fldlist_init1() allocate(fldlistFr(ncomps)) end subroutine med_fldlist_init1 + function med_fldList_GetaofluxFldList() result(fldList) + type(med_fldList_type), pointer :: fldList + + fldList => fldListMed_aoflux + end function Med_FldList_GetaofluxFldList + + function med_fldList_GetocnalbFldList() result(fldList) + type(med_fldList_type), pointer :: fldList + + fldList => fldListMed_ocnalb + end function Med_FldList_GetocnalbFldList + function med_fldList_GetFldListFr(index) result(fldList) integer, intent(in) :: index type(med_fldList_type), pointer :: fldList @@ -341,6 +356,17 @@ subroutine med_fldList_AddaofluxMap(fldname, destcomp, maptype, mapnorm, mapfile end subroutine med_fldList_AddaofluxMap + subroutine med_fldList_AddocnalbMap(fldname, destcomp, maptype, mapnorm, mapfile) + character(len=*) , intent(in) :: fldname + integer , intent(in) :: destcomp + integer , intent(in) :: maptype + character(len=*) , intent(in) :: mapnorm + character(len=*), optional , intent(in) :: mapfile + + call med_fldList_AddMap(fldlistmed_ocnalb%fields, fldname, destcomp, maptype, mapnorm, mapfile) + + end subroutine med_fldList_AddocnalbMap + subroutine med_fldList_AddMap(fields, fldname, destcomp, maptype, mapnorm, mapfile) use ESMF, only : ESMF_LOGMSG_ERROR, ESMF_FAILURE, ESMF_LogWrite, ESMF_LOGMSG_INFO diff --git a/mediator/esmFldsExchange_cesm_mod.F90 b/mediator/esmFldsExchange_cesm_mod.F90 index 652946ad0..e957ea699 100644 --- a/mediator/esmFldsExchange_cesm_mod.F90 +++ b/mediator/esmFldsExchange_cesm_mod.F90 @@ -81,6 +81,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) use esmFlds , only : addocnalbfld => med_fldList_AddocnalbFld use esmFlds , only : addaofluxfld => med_fldList_AddaofluxFld use esmFlds , only : addaofluxMap => med_fldList_AddaofluxMap + use esmFlds , only : addocnalbMap => med_fldList_AddocnalbMap use esmFlds , only : addfldTo => med_fldList_AddFldTo use esmFlds , only : addfldFrom => med_fldList_AddFldFrom @@ -803,7 +804,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) mrg_from=compice, mrg_fld='Si_avsdr', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_avsdr', rc=rc)) then - call addocnalpmap( 'So_avsdr', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addocnalbmap( 'So_avsdr', compatm, mapconsf, 'ofrac', ocn2atm_map) call addmrgTo(compatm, 'Sx_avsdr', & mrg_from=compmed, mrg_fld='So_avsdr', mrg_type='merge', mrg_fracname='ofrac') end if @@ -830,7 +831,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) mrg_from=compice, mrg_fld='Si_avsdf', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_avsdf', rc=rc)) then - call addocnalpmap( 'So_avsdf', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addocnalbmap( 'So_avsdf', compatm, mapconsf, 'ofrac', ocn2atm_map) call addmrgTo(compatm, 'Sx_avsdf', & mrg_from=compmed, mrg_fld='So_avsdf', mrg_type='merge', mrg_fracname='ofrac') end if @@ -857,7 +858,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) mrg_from=compice, mrg_fld='Si_anidr', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_anidr', rc=rc)) then - call addocnalpmap( 'So_anidr', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addocnalbmap( 'So_anidr', compatm, mapconsf, 'ofrac', ocn2atm_map) call addmrgTo(compatm, 'Sx_anidr', & mrg_from=compmed, mrg_fld='So_anidr', mrg_type='merge', mrg_fracname='ofrac') end if @@ -884,7 +885,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) mrg_from=compice, mrg_fld='Si_anidf', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_anidf', rc=rc)) then - call addocnalpmap( 'So_anidf', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addocnalbmap( 'So_anidf', compatm, mapconsf, 'ofrac', ocn2atm_map) call addmrgTo(compatm, 'Sx_anidf', & mrg_from=compmed, mrg_fld='So_anidf', mrg_type='merge', mrg_fracname='ofrac') end if @@ -1163,7 +1164,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) call addfldTo(compatm, 'Faxx_tauy') call addFldFrom(complnd, 'Fall_tauy') call addfldFrom(compice, 'Faii_tauy') - call addaoflusFld( 'Faox_tauy') + call addaofluxFld( 'Faox_tauy') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_tauy', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_tauy', rc=rc)) then @@ -1190,7 +1191,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) call addfldTo(compatm, 'Faxx_lat') call addFldFrom(complnd, 'Fall_lat') call addfldFrom(compice, 'Faii_lat') - call addaoflusFld( 'Faox_lat') + call addaofluxFld( 'Faox_lat') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_lat', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_lat', rc=rc)) then @@ -1217,7 +1218,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) call addfldTo(compatm, 'Faxx_sen') call addFldFrom(complnd, 'Fall_sen') call addfldFrom(compice, 'Faii_sen') - call addaoflusFld( 'Faox_sen') + call addaofluxFld( 'Faox_sen') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_sen', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_sen', rc=rc)) then @@ -1244,7 +1245,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) call addfldTo(compatm, 'Faxx_evap') call addFldFrom(complnd, 'Fall_evap') call addfldFrom(compice, 'Faii_evap') - call addaoflusFld( 'Faox_evap') + call addaofluxFld( 'Faox_evap') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_evap', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_evap', rc=rc)) then @@ -1271,7 +1272,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) call addfldTo(compatm, 'Faxx_lwup') call addFldFrom(complnd, 'Fall_lwup') call addfldFrom(compice, 'Faii_lwup') - call addaoflusFld( 'Faox_lwup') + call addaofluxFld( 'Faox_lwup') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_lwup', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_lwup', rc=rc)) then @@ -1299,7 +1300,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) call addfldTo(compatm, 'Faxx_evap_wiso') call addFldFrom(complnd, 'Fall_evap_wiso') call addfldFrom(compice, 'Faii_evap_wiso') - call addaoflusFld( 'Faox_evap_wiso') + call addaofluxFld( 'Faox_evap_wiso') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_evap_wiso', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_evap_wiso', rc=rc)) then @@ -1848,8 +1849,8 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! --------------------------------------------------------------------- if (phase == 'advertise') then call addFldFrom(compatm, 'Faxa_lat' ) - call addaoflusFld( 'Faox_lat' ) - call addaoflusFld( 'Faox_evap') + call addaofluxFld( 'Faox_lat' ) + call addaofluxFld( 'Faox_evap') call addFldTo(compocn, 'Foxx_lat' ) call addFldTo(compocn, 'Foxx_evap') else @@ -1865,7 +1866,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then - call addaoflusFld( 'Faox_lat_wiso' ) + call addaofluxFld( 'Faox_lat_wiso' ) call addFldTo(compocn, 'Foxx_lat_wiso' ) else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_lat_wiso', rc=rc)) then @@ -1882,7 +1883,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! 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 if (phase == 'advertise') then - call addaoflusFld( 'So_duu10n') + call addaofluxFld( 'So_duu10n') call addFldTo(compocn, 'So_duu10n') else if (fldchk(is_local%wrap%FBExp(compocn), 'So_duu10n', rc=rc)) then diff --git a/mediator/esmFldsExchange_nems_mod.F90 b/mediator/esmFldsExchange_nems_mod.F90 index a17461592..8095d1494 100644 --- a/mediator/esmFldsExchange_nems_mod.F90 +++ b/mediator/esmFldsExchange_nems_mod.F90 @@ -39,7 +39,9 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) use esmFlds , only : addfldFrom => med_fldList_AddFldFrom use esmFlds , only : addmapFrom => med_fldList_AddMapFrom use esmFlds , only : addmrgFrom => med_fldList_AddMrgFrom - + use esmFlds , only : addaofluxFld => med_fldList_addaofluxFld + use esmFlds , only : addaofluxMap => med_fldList_addaofluxMap + use med_internalstate_mod , only : InternalState, mastertask, logunit ! input/output parameters: diff --git a/mediator/med.F90 b/mediator/med.F90 index 25b16aa0a..bc61d8ff3 100644 --- a/mediator/med.F90 +++ b/mediator/med.F90 @@ -44,10 +44,10 @@ module MED use med_internalstate_mod , only : ncomps, compname use med_internalstate_mod , only : compmed, compatm, compocn, compice, complnd, comprof, compwav, compglc use med_internalstate_mod , only : coupling_mode, aoflux_code, aoflux_ccpp_suite - use esmFlds , only : fldListMed_ocnalb + use esmFlds , only : med_fldList_GetocnalbfldList, med_fldList_type use esmFlds , only : med_fldList_GetNumFlds, med_fldList_GetFldNames, med_fldList_GetFldInfo use esmFlds , only : med_fldList_Document_Mapping, med_fldList_Document_Merging - use esmFlds , only : fldListFr, fldListTo, med_fldList_Realize + use esmFlds , only : med_fldList_GetfldListFr, med_fldList_GetfldListTo, med_fldList_Realize use esmFldsExchange_nems_mod , only : esmFldsExchange_nems use esmFldsExchange_cesm_mod , only : esmFldsExchange_cesm use esmFldsExchange_hafs_mod , only : esmFldsExchange_hafs @@ -676,6 +676,7 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) character(len=CS) :: cvalue character(len=8) :: cnum type(InternalState) :: is_local + type(med_fldlist_type), pointer :: fldListFr, fldListTo integer :: stat character(len=*),parameter :: subname=' (Advertise Fields) ' !----------------------------------------------------------- @@ -872,9 +873,10 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) do ncomp = 1,ncomps if (ncomp /= compmed) then if (mastertask) write(logunit,*) - nflds = med_fldList_GetNumFlds(fldListFr(ncomp)) - do n = 1,nflds - call med_fldList_GetFldInfo(fldListFr(ncomp), n, stdname=stdname, shortname=shortname) + fldListFr => med_fldList_GetFldListFr(ncomp) + nflds = med_fldList_GetNumFlds(fldListFr) + do n=1,nflds + call med_fldList_GetFldInfo(fldListFr, n, stdname=stdname, shortname=shortname) if (mastertask) then write(logunit,'(a)') trim(subname)//':Fr_'//trim(compname(ncomp))//': '//trim(shortname) end if @@ -889,9 +891,11 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call ESMF_LogWrite(subname//':Fr_'//trim(compname(ncomp))//': '//trim(shortname), ESMF_LOGMSG_INFO) end do - nflds = med_fldList_GetNumFlds(fldListTo(ncomp)) + + fldListTo => med_fldList_GetFldListTo(ncomp) + nflds = med_fldList_GetNumFlds(fldListTo) do n = 1,nflds - call med_fldList_GetFldInfo(fldListTo(ncomp), n, stdname=stdname, shortname=shortname) + call med_fldList_GetFldInfo(fldListTo, n, stdname=stdname, shortname=shortname) if (mastertask) then write(logunit,'(a)') trim(subname)//':To_'//trim(compname(ncomp))//': '//trim(shortname) end if @@ -958,7 +962,7 @@ subroutine InitializeIPDv03p3(gcomp, importState, exportState, clock, rc) if (ESMF_StateIsCreated(is_local%wrap%NStateImp(n), rc=rc)) then call ESMF_StateSet(is_local%wrap%NStateImp(n), stateIntent=ESMF_StateIntent_Import, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - call med_fldList_Realize(is_local%wrap%NStateImp(n), fldListFr(n), & + call med_fldList_Realize(is_local%wrap%NStateImp(n), med_fldList_GetfldListFr(n), & is_local%wrap%flds_scalar_name, is_local%wrap%flds_scalar_num, & tag=subname//':Fr_'//trim(compname(n)), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return @@ -966,7 +970,7 @@ subroutine InitializeIPDv03p3(gcomp, importState, exportState, clock, rc) if (ESMF_StateIsCreated(is_local%wrap%NStateExp(n), rc=rc)) then call ESMF_StateSet(is_local%wrap%NStateExp(n), stateIntent=ESMF_StateIntent_Export, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - call med_fldList_Realize(is_local%wrap%NStateExp(n), fldListTo(n), & + call med_fldList_Realize(is_local%wrap%NStateExp(n), med_fldList_getfldListTo(n), & is_local%wrap%flds_scalar_name, is_local%wrap%flds_scalar_num, & tag=subname//':To_'//trim(compname(n)), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return @@ -1564,7 +1568,7 @@ subroutine DataInitialize(gcomp, rc) use med_diag_mod , only : med_diag_zero, med_diag_init use med_map_mod , only : med_map_routehandles_init, med_map_packed_field_create use med_io_mod , only : med_io_init - use esmFlds , only : fldListMed_aoflux + use esmFlds , only : med_fldList_GetaofluxfldList ! input/output variables type(ESMF_GridComp) :: gcomp @@ -1578,6 +1582,7 @@ subroutine DataInitialize(gcomp, rc) type(ESMF_Time) :: time type(ESMF_Field) :: field type(ESMF_StateItem_Flag) :: itemType + type(med_fldList_type), pointer :: fldListMed_ocnalb logical :: atCorrectTime, connected integer :: n1,n2,n,ns integer :: nsrc,ndst @@ -1723,10 +1728,11 @@ subroutine DataInitialize(gcomp, rc) if ( is_local%wrap%med_coupling_active(compocn,compatm) .or. is_local%wrap%med_coupling_active(compatm,compocn)) then ! Create field bundles for mediator ocean albedo computation + fldListMed_ocnalb => med_fldlist_getocnalbFldList() fieldCount = med_fldList_GetNumFlds(fldListMed_ocnalb) if (fieldCount > 0) then allocate(fldnames(fieldCount)) - call med_fldList_getfldnames(fldListMed_ocnalb%flds, fldnames, rc=rc) + call med_fldList_getfldnames(fldListMed_ocnalb%fields, fldnames, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call FB_init(is_local%wrap%FBMed_ocnalb_a, is_local%wrap%flds_scalar_name, & STgeom=is_local%wrap%NStateImp(compatm), fieldnamelist=fldnames, name='FBMed_ocnalb_a', rc=rc) @@ -1751,8 +1757,7 @@ subroutine DataInitialize(gcomp, rc) ! NOTE: this section must be done BEFORE the second call to esmFldsExchange ! Create field bundles for mediator ocean albedo computation - - fieldCount = med_fldList_GetNumFlds(fldListMed_aoflux) + fieldCount = med_fldList_GetNumFlds(med_fldList_getaofluxfldList()) if ( fieldCount > 0 ) then if ( is_local%wrap%med_coupling_active(compocn,compatm) .or. & is_local%wrap%med_coupling_active(compatm,compocn)) then @@ -1807,7 +1812,7 @@ subroutine DataInitialize(gcomp, rc) if (is_local%wrap%med_coupling_active(nsrc,ndst)) then call med_map_packed_field_create(ndst, & is_local%wrap%flds_scalar_name, & - fldsSrc=fldListFr(nsrc)%flds, & + fieldsSrc=med_fldList_GetfldListFr(nsrc), & FBSrc=is_local%wrap%FBImp(nsrc,nsrc), & FBDst=is_local%wrap%FBImp(nsrc,ndst), & packed_data=is_local%wrap%packed_data(nsrc,ndst,:), rc=rc) @@ -1819,7 +1824,7 @@ subroutine DataInitialize(gcomp, rc) ESMF_FieldBundleIsCreated(is_local%wrap%FBMed_ocnalb_a)) then call med_map_packed_field_create(compatm, & is_local%wrap%flds_scalar_name, & - fldsSrc=fldListMed_ocnalb%flds, & + fieldsSrc=med_fldList_getocnalbfldList(), & FBSrc=is_local%wrap%FBMed_ocnalb_o, & FBDst=is_local%wrap%FBMed_ocnalb_a, & packed_data=is_local%wrap%packed_data_ocnalb_o2a(:), rc=rc) diff --git a/mediator/med_map_mod.F90 b/mediator/med_map_mod.F90 index d2e5b3057..5ecf488ad 100644 --- a/mediator/med_map_mod.F90 +++ b/mediator/med_map_mod.F90 @@ -716,7 +716,8 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & fieldsSrc, FBSrc, FBDst, packed_data, rc) use ESMF - use esmFlds , only : med_fldList_entry_type, med_fldList_getNumFlds + use esmFlds , only : med_fldList_entry_type, med_fldList_getNumFlds, med_fldList_type + use esmFlds , only : med_fldList_getFldInfo use med_internalstate_mod , only : nmappers use med_internalstate_mod , only : ncomps, compatm, compice, compocn, compname, mapnames use med_internalstate_mod , only : packed_data_type @@ -724,7 +725,7 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & ! input/output variables integer , intent(in) :: destcomp character(len=*) , intent(in) :: flds_scalar_name - type(med_fldList_entry_type) , target :: fieldsSrc ! mapping types top of LL + type(med_fldList_type) , intent(in) :: fieldsSrc ! mapping types top of LL type(ESMF_FieldBundle) , intent(in) :: FBSrc type(ESMF_FieldBundle) , intent(inout) :: FBDst type(packed_data_type) , intent(inout) :: packed_data(:) ! array over mapping types @@ -746,6 +747,8 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & integer :: numFlds type(ESMF_Field), pointer :: fieldlist_src(:) type(ESMF_Field), pointer :: fieldlist_dst(:) + character(CL) :: shortname + integer :: destindex character(CL), allocatable :: fieldNameList(:) character(CS) :: mapnorm_mapindex character(len=CX) :: tmpstr @@ -794,13 +797,12 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & ! Determine the normalization type for each packed_data mapping element ! Loop over mapping types + numflds = med_fldlist_GetNumFlds(fieldsSrc) do mapindex = 1,nmappers mapnorm_mapindex = 'not_set' ! Loop over source field bundle do nf = 1, fieldCount ! Loop over the fldsSrc types - - numflds = med_fldlist_GetNumFlds(fieldsSrc) do ns = 1,numflds ! Note that fieldnamelist is an array of names for the source fields ! The assumption is that there is only one mapping normalization @@ -809,7 +811,7 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & if ( destindex == mapindex .and. & trim(shortname) == trim(fieldnamelist(nf))) then ! Set the normalization to the input - call med_FldList_GetFldInfo(fieldsSrc, ns, compsrc=destcomp, mapnorm=packed_data(mapindex)%mapnorm=mapnorm) + call med_FldList_GetFldInfo(fieldsSrc, ns, compsrc=destcomp, mapnorm=packed_data(mapindex)%mapnorm) if (mapnorm_mapindex == 'not_set') then mapnorm_mapindex = packed_data(mapindex)%mapnorm write(tmpstr,*)'Map type '//trim(mapnames(mapindex)) & @@ -850,10 +852,10 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & do nf = 1, fieldCount ! Loop over the fldsSrc types - do ns = 1,size(fldsSrc) - - if ( fldsSrc(ns)%mapindex(destcomp) == mapindex .and. & - trim(fldsSrc(ns)%shortname) == trim(fieldnamelist(nf))) then + do ns = 1,numFlds + call med_fldList_GetFldInfo(fieldsSrc, ns, compsrc=destcomp, shortname=shortname, mapindex=destIndex) + if ( destIndex == mapindex .and. & + trim(shortname) == trim(fieldnamelist(nf))) then ! Determine mapping of indices into packed field bundle ! Get source field diff --git a/mediator/med_phases_aofluxes_mod.F90 b/mediator/med_phases_aofluxes_mod.F90 index c0c442a7f..fcbf27a08 100644 --- a/mediator/med_phases_aofluxes_mod.F90 +++ b/mediator/med_phases_aofluxes_mod.F90 @@ -166,7 +166,8 @@ subroutine med_phases_aofluxes_init_fldbuns(gcomp, rc) use ESMF , only : ESMF_FieldBundleIsCreated use esmFlds , only : med_fldList_GetNumFlds use esmFlds , only : med_fldList_GetFldNames - use esmFlds , only : fldListMed_aoflux + use esmFlds , only : med_fldList_GetaofluxfldList + use esmFlds , only : med_fldList_type use med_methods_mod , only : FB_init => med_methods_FB_init use med_internalstate_mod, only : compname @@ -177,13 +178,14 @@ subroutine med_phases_aofluxes_init_fldbuns(gcomp, rc) ! local variables integer :: n integer :: fieldcount + type(med_fldList_type), pointer :: fldListMed_aoflux type(InternalState) :: is_local character(len=*),parameter :: subname=' (med_phases_aofluxes_init_fldbuns) ' !--------------------------------------- ! Create field bundles for mediator ocean/atmosphere flux computation ! This is needed regardless of the grid on which the atm/ocn flux computation is done on - + fldListMed_aoflux => med_fldList_GetaofluxFldList() ! Get the internal state from the mediator Component. nullify(is_local%wrap) call ESMF_GridCompGetInternalState(gcomp, is_local, rc) @@ -192,7 +194,7 @@ subroutine med_phases_aofluxes_init_fldbuns(gcomp, rc) ! Set module variable fldnames_aof_out fieldCount = med_fldList_GetNumFlds(fldListMed_aoflux) allocate(fldnames_aof_out(fieldCount)) - call med_fldList_getfldnames(fldListMed_aoflux%flds, fldnames_aof_out, rc=rc) + call med_fldList_getfldnames(fldListMed_aoflux%fields, fldnames_aof_out, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return ! Initialize FBMed_aoflux_a @@ -487,7 +489,8 @@ subroutine med_aofluxes_init_ogrid(gcomp, aoflux_in, aoflux_out, rc) ! -------------------------------------------- use ESMF , only : ESMF_FieldBundleIsCreated - use esmFlds , only : fldListMed_aoflux + use esmFlds , only : med_fldlist_GetaofluxfldList + use esmFlds , only : med_fldList_type use med_map_mod , only : med_map_packed_field_create ! Arguments @@ -497,6 +500,7 @@ subroutine med_aofluxes_init_ogrid(gcomp, aoflux_in, aoflux_out, rc) integer , intent(out) :: rc ! ! Local variables + type(med_fldList_type), pointer :: FldListMed_aoflux type(InternalState) :: is_local character(len=CX) :: tmpstr integer :: lsize @@ -509,7 +513,7 @@ subroutine med_aofluxes_init_ogrid(gcomp, aoflux_in, aoflux_out, rc) !----------------------------------------------------------------------- rc = ESMF_SUCCESS - + FldListMed_aoflux => med_fldlist_GetaofluxFldList() ! Get the internal state from the mediator Component. nullify(is_local%wrap) call ESMF_GridCompGetInternalState(gcomp, is_local, rc) @@ -570,7 +574,7 @@ subroutine med_aofluxes_init_ogrid(gcomp, aoflux_in, aoflux_out, rc) call med_map_packed_field_create(destcomp=compatm, & flds_scalar_name=is_local%wrap%flds_scalar_name, & - fldsSrc=fldListMed_aoflux%flds, & + fieldsSrc=fldListMed_aoflux, & FBSrc=is_local%wrap%FBMed_aoflux_o, & FBDst=is_local%wrap%FBMed_aoflux_a, & packed_data=is_local%wrap%packed_data_aoflux_o2a(:), rc=rc) diff --git a/mediator/med_phases_post_glc_mod.F90 b/mediator/med_phases_post_glc_mod.F90 index 14610e710..891ee5ddb 100644 --- a/mediator/med_phases_post_glc_mod.F90 +++ b/mediator/med_phases_post_glc_mod.F90 @@ -17,7 +17,6 @@ module med_phases_post_glc_mod use med_internalstate_mod , only : compatm, compice, complnd, comprof, compocn, compname, compglc use med_internalstate_mod , only : mapbilnr, mapconsd, compname use med_internalstate_mod , only : InternalState, mastertask, logunit - use esmFlds , only : fldListTo use med_methods_mod , only : fldbun_diagnose => med_methods_FB_diagnose use med_methods_mod , only : fldbun_fldchk => med_methods_FB_fldchk use med_methods_mod , only : fldbun_getmesh => med_methods_FB_getmesh diff --git a/mediator/med_phases_prep_atm_mod.F90 b/mediator/med_phases_prep_atm_mod.F90 index 8d41adbb8..caa9f4851 100644 --- a/mediator/med_phases_prep_atm_mod.F90 +++ b/mediator/med_phases_prep_atm_mod.F90 @@ -18,7 +18,7 @@ module med_phases_prep_atm_mod use med_map_mod , only : med_map_field_packed use med_internalstate_mod , only : InternalState, mastertask use med_internalstate_mod , only : compatm, compocn, compice, compname, coupling_mode - use esmFlds , only : fldListTo, fldListMed_aoflux + use esmFlds , only : med_fldlist_GetfldListTo use perf_mod , only : t_startf, t_stopf use med_phases_aofluxes_mod, only : med_aofluxes_map_xgrid2agrid_output use med_phases_aofluxes_mod, only : med_aofluxes_map_ogrid2agrid_output @@ -139,7 +139,7 @@ subroutine med_phases_prep_atm(gcomp, rc) is_local%wrap%FBExp(compatm), & is_local%wrap%FBFrac(compatm), & is_local%wrap%FBImp(:,compatm), & - fldListTo(compatm), & + med_fldList_GetfldListTo(compatm), & FBMed1=is_local%wrap%FBMed_ocnalb_a, & FBMed2=is_local%wrap%FBMed_aoflux_a, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return @@ -151,7 +151,7 @@ subroutine med_phases_prep_atm(gcomp, rc) is_local%wrap%FBExp(compatm), & is_local%wrap%FBFrac(compatm), & is_local%wrap%FBImp(:,compatm), & - fldListTo(compatm), rc=rc) + med_fldList_GetfldListTo(compatm), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if diff --git a/mediator/med_phases_prep_ocn_mod.F90 b/mediator/med_phases_prep_ocn_mod.F90 index 35208a109..d2e1e4ffe 100644 --- a/mediator/med_phases_prep_ocn_mod.F90 +++ b/mediator/med_phases_prep_ocn_mod.F90 @@ -19,7 +19,7 @@ module med_phases_prep_ocn_mod use med_methods_mod , only : FB_average => med_methods_FB_average use med_methods_mod , only : FB_copy => med_methods_FB_copy use med_methods_mod , only : FB_reset => med_methods_FB_reset - use esmFlds , only : fldListTo + use esmFlds , only : med_fldList_GetfldListTo use med_internalstate_mod , only : compocn, compatm, compice, coupling_mode use perf_mod , only : t_startf, t_stopf @@ -124,7 +124,7 @@ subroutine med_phases_prep_ocn_accum(gcomp, rc) is_local%wrap%FBExp(compocn), & is_local%wrap%FBFrac(compocn), & is_local%wrap%FBImp(:,compocn), & - fldListTo(compocn), & + med_fldList_GetfldListTo(compocn), & FBMed1=is_local%wrap%FBMed_aoflux_o, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return else if (trim(coupling_mode) == 'nems_frac' .or. & @@ -135,7 +135,7 @@ subroutine med_phases_prep_ocn_accum(gcomp, rc) is_local%wrap%FBExp(compocn), & is_local%wrap%FBFrac(compocn), & is_local%wrap%FBImp(:,compocn), & - fldListTo(compocn), rc=rc) + med_fldList_GetfldListTo(compocn), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if diff --git a/mediator/med_phases_prep_rof_mod.F90 b/mediator/med_phases_prep_rof_mod.F90 index 47430d685..a30d67c6f 100644 --- a/mediator/med_phases_prep_rof_mod.F90 +++ b/mediator/med_phases_prep_rof_mod.F90 @@ -94,7 +94,7 @@ subroutine med_phases_prep_rof_init(gcomp, rc) type(ESMF_Mesh) :: mesh_l type(ESMF_Mesh) :: mesh_r type(ESMF_Field) :: lfield - type(med_fldList_type), pointer :: fldListTo + type(med_fldList_type), pointer :: fldList character(len=CS), allocatable :: fldnames_temp(:) character(len=*),parameter :: subname=' (med_phases_prep_rof_init) ' !--------------------------------------- @@ -108,11 +108,11 @@ subroutine med_phases_prep_rof_init(gcomp, rc) ! Determine lnd2rof_flds (module variable) - note that fldListTo is set in esmFldsExchange_cesm.F90 ! Remove scalar field from lnd2rof_flds - fldListTo => med_fldList_GetfldlistTo(comprof) - nflds = med_fldlist_getnumflds(fldListTo) + fldList => med_fldList_GetfldlistTo(comprof) + nflds = med_fldlist_getnumflds(fldList) allocate(fldnames_temp(nflds)) do n = 1,nflds - call med_fldList_GetFldInfo(fldListTo, n, stdname=fldnames_temp(n)) + call med_fldList_GetFldInfo(fldList, n, stdname=fldnames_temp(n)) end do do n = 1,nflds if (trim(fldnames_temp(n)) == trim(is_local%wrap%flds_scalar_name)) then @@ -164,7 +164,7 @@ subroutine med_phases_prep_rof_init(gcomp, rc) ! Create packed mapping from rof->lnd call med_map_packed_field_create(destcomp=comprof, & flds_scalar_name=is_local%wrap%flds_scalar_name, & - fldsSrc=fldList, & + fieldsSrc=fldList, & FBSrc=FBLndAccum2rof_l, FBDst=FBLndAccum2rof_r, & packed_data=is_local%wrap%packed_data(complnd,comprof,:), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return @@ -262,7 +262,7 @@ subroutine med_phases_prep_rof(gcomp, rc) use ESMF , only : ESMF_GridComp, ESMF_GridCompGet use ESMF , only : ESMF_FieldBundleGet, ESMF_FieldGet use ESMF , only : ESMF_LogWrite, ESMF_LOGMSG_INFO, ESMF_SUCCESS - use esmFlds , only : fldListTo + use esmFlds , only : med_fldList_GetfldListTo use med_map_mod , only : med_map_field_packed use med_merge_mod , only : med_merge_auto use med_constants_mod , only : czero => med_constants_czero @@ -374,7 +374,7 @@ subroutine med_phases_prep_rof(gcomp, rc) end if call med_merge_auto(compsrc=complnd, FBout=is_local%wrap%FBExp(comprof), & - FBfrac=is_local%wrap%FBFrac(comprof), FBin=FBlndAccum2rof_r, fldListTo=fldListTo(comprof), rc=rc) + FBfrac=is_local%wrap%FBFrac(comprof), FBin=FBlndAccum2rof_r, fldListTo=med_fldList_GetfldListTo(comprof), rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return if (dbug_flag > 1) then From 9d01b7b7bf723599105be9a85bff02cdc9bd1002 Mon Sep 17 00:00:00 2001 From: James Edwards Date: Sun, 20 Nov 2022 08:16:07 -0700 Subject: [PATCH 05/21] save warnings in log --- cesm/driver/util.F90 | 5 +++-- cime_config/buildexe | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/cesm/driver/util.F90 b/cesm/driver/util.F90 index d8e97316f..614d1c745 100644 --- a/cesm/driver/util.F90 +++ b/cesm/driver/util.F90 @@ -4,8 +4,9 @@ module util ! CustomFieldDictionaryProto utility module !----------------------------------------------------------------------------- - use ESMF - use NUOPC + use ESMF, only : ESMF_SUCCESS, ESMF_MAXSTR, ESMF_IOFmt_flag, ESMF_LogWrite + use ESMF, only : ESMF_LOGMSG_INFO, ESMF_LOGERR_PASSTHRU, ESMF_LOGFoundError + use NUOPC, only : nuopc_freeFormat, nuopc_freeformatLog, nuopc_fieldDictionaryEgest implicit none diff --git a/cime_config/buildexe b/cime_config/buildexe index 7f1a64471..406f660a3 100755 --- a/cime_config/buildexe +++ b/cime_config/buildexe @@ -111,6 +111,8 @@ def _main_func(): rc, out, err = run_cmd(cmd,from_dir=bld_root) expect(rc==0,"Command {} failed rc={}\nout={}\nerr={}".format(cmd,rc,out,err)) + if err: + logger.info(err) logger.info(out) ############################################################################### From 2dc15974078867d32389881f4605730cc8ebc64f Mon Sep 17 00:00:00 2001 From: James Edwards Date: Sun, 20 Nov 2022 08:20:50 -0700 Subject: [PATCH 06/21] debugging --- mediator/med.F90 | 1 + 1 file changed, 1 insertion(+) diff --git a/mediator/med.F90 b/mediator/med.F90 index bc61d8ff3..a72a2e1d7 100644 --- a/mediator/med.F90 +++ b/mediator/med.F90 @@ -877,6 +877,7 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) nflds = med_fldList_GetNumFlds(fldListFr) do n=1,nflds call med_fldList_GetFldInfo(fldListFr, n, stdname=stdname, shortname=shortname) + print *,__FILE__,__LINE__,n,trim(stdname),trim(shortname) if (mastertask) then write(logunit,'(a)') trim(subname)//':Fr_'//trim(compname(ncomp))//': '//trim(shortname) end if From d494fa5127fc399e718cb3b1bf363f89946b16a7 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Mon, 21 Nov 2022 12:17:35 -0700 Subject: [PATCH 07/21] now passing SMS_Ld3.f19_g17_rx1.A.cheyenne_intel --- mediator/esmFlds.F90 | 264 ++++++++++++++++---------- mediator/esmFldsExchange_cesm_mod.F90 | 2 - mediator/esmFldsExchange_nems_mod.F90 | 2 - mediator/med.F90 | 11 +- mediator/med_merge_mod.F90 | 82 ++++---- 5 files changed, 203 insertions(+), 158 deletions(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index 018f164c7..bbe60fc45 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -1,9 +1,11 @@ module esmflds - use ESMF, only : ESMF_SUCCESS, ESMF_FAILURE - use med_kind_mod, only : CX=>SHR_KIND_CX, CS=>SHR_KIND_CS, CL=>SHR_KIND_CL, R8=>SHR_KIND_R8 - use med_internalstate_mod, only : ncomps, compname, compocn, compatm + use ESMF, only : ESMF_SUCCESS, ESMF_FAILURE, ESMF_LOGMSG_ERROR, ESMF_LOGWRITE + use ESMF, only : ESMF_FINALIZE, ESMF_END_ABORT + + use med_kind_mod, only : CX=>SHR_KIND_CX, CS=>SHR_KIND_CS, CL=>SHR_KIND_CL, R8=>SHR_KIND_R8 + use med_internalstate_mod, only : ncomps, compname, compocn, compatm, compice use med_internalstate_mod, only : mapfcopy, mapnames, mapunset - use med_utils_mod , only : chkerr => med_utils_ChkErr + use med_utils_mod , only : chkerr => med_utils_ChkErr implicit none private @@ -15,9 +17,9 @@ module esmflds public :: med_fldList_AddFldFrom public :: med_fldList_AddMapFrom - public :: med_fldList_AddMrgFrom +! public :: med_fldList_AddMrgFrom public :: med_fldList_AddFldTo - public :: med_fldList_AddMapTo +! public :: med_fldList_AddMapTo public :: med_fldList_AddMrgTo public :: med_fldList_AddOcnalbFld @@ -29,10 +31,11 @@ module esmflds private :: med_fldList_AddFld private :: med_fldList_AddMap private :: med_fldList_AddMrg - + private :: med_fldList_findName public :: med_fldList_GetFldNames public :: med_fldList_GetNumFlds public :: med_fldList_GetFldInfo + public :: med_fld_GetFldInfo public :: med_fldList_Realize public :: med_fldList_Document_Mapping public :: med_fldList_Document_Merging @@ -154,6 +157,29 @@ subroutine med_fldList_AddFldTo(index, stdname, shortname) end subroutine med_fldList_AddFldTo + subroutine med_fldList_findName(fields, stdname, found, lastfld) + ! on return if found == .true. lastfield is the field matching stdname + ! if found == .false. lastfield is the last field in the list + type(med_fldList_entry_type) , intent(in), target :: fields + character(len=*) , intent(in) :: stdname + logical , intent(out) :: found + type(med_fldList_entry_type) , intent(out), pointer :: lastfld + + lastfld => fields + found = .false. + do while(associated(lastfld%next)) + if (trim(stdname) == trim(lastfld%stdname)) then + found = .true. + exit + end if + lastfld => lastfld%next + enddo + ! Check the last lastfld + if (trim(stdname) == trim(lastfld%stdname)) then + found = .true. + end if + end subroutine med_fldList_findName + subroutine med_fldList_AddFld(fields, stdname, shortname) ! ---------------------------------------------- ! Add an entry to to the flds array @@ -177,26 +203,20 @@ subroutine med_fldList_AddFld(fields, stdname, shortname) type(med_fldList_entry_type), pointer :: newfld character(len=*), parameter :: subname='(med_fldList_AddFld)' ! ---------------------------------------------- - - newfld => fields - found = .false. - do while(associated(newfld%next)) - if (trim(stdname) == trim(newfld%stdname)) then - found = .true. - exit - end if - newfld => newfld%next - enddo + + call med_fldList_findName(fields, stdname, found, newfld) ! create new entry if fldname is not in original list - + mapsize = ncomps mrgsize = ncomps if (.not. found) then - ! 1) allocate newfld to be size (one element larger than input flds) - allocate(newfld%next) - newfld => newfld%next + ! the if statement allows the first entry to be filed + if(allocated(newfld%mapindex)) then + allocate(newfld%next) + newfld => newfld%next + endif ! 2) now update flds information for new entry newfld%stdname = trim(stdname) @@ -222,24 +242,23 @@ subroutine med_fldList_AddFld(fields, stdname, shortname) end subroutine med_fldList_AddFld !================================================================================ - subroutine med_fldList_AddMrgFrom(index, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname, rc) - +! subroutine med_fldList_AddMrgFrom(index, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname, rc) ! ---------------------------------------------- ! Determine mrg entry or entries in flds aray ! ---------------------------------------------- ! input/output variables - integer , intent(in) :: index - character(len=*) , intent(in) :: fldname - integer , intent(in) :: mrg_from - character(len=*) , intent(in) :: mrg_fld - character(len=*) , intent(in) :: mrg_type - character(len=*) , intent(in), optional :: mrg_fracname - integer , intent(out), optional :: rc - - call med_FldList_addMrg(fldListFr(index)%fields, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname) +! integer , intent(in) :: index +! character(len=*) , intent(in) :: fldname +! integer , intent(in) :: mrg_from +! character(len=*) , intent(in) :: mrg_fld +! character(len=*) , intent(in) :: mrg_type +! character(len=*) , intent(in), optional :: mrg_fracname +! integer , intent(out), optional :: rc + +! call med_FldList_addMrg(fldListFr(index)%fields, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname) - end subroutine med_fldList_AddMrgFrom +! end subroutine med_fldList_AddMrgFrom !================================================================================ subroutine med_fldList_AddMrgTo(index, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname, rc) @@ -278,7 +297,7 @@ subroutine med_fldList_AddMrg(flds, fldname, mrg_from, mrg_fld, mrg_type, mrg_fr type(med_fldList_entry_type), pointer :: newfld character(len=*), parameter :: subname='(med_fldList_AddMrg)' ! ---------------------------------------------- - + newfld => med_fldList_GetFld(flds, fldname, rc) if (chkerr(rc,__LINE__,u_FILE_u)) return @@ -297,25 +316,22 @@ function med_fldList_GetFld(fields, fldname, rc) result(newfld) character(len=*) , intent(in) :: fldname type(med_fldList_entry_type), pointer :: newfld + logical :: found integer :: rc character(len=*), parameter :: subname='(med_fldList_GetFld)' - newfld => fields - rc = ESMF_FAILURE - do while(associated(newfld%next)) - if(trim(fldname) .eq. newfld%stdname) then - rc = ESMF_SUCCESS - exit - endif - newfld => newfld%next - enddo - if(rc /= ESMF_SUCCESS) then + + call med_fldList_findName(fields, fldname, found, newfld) + + rc = ESMF_SUCCESS + if(.not. found) then + rc = ESMF_FAILURE newfld => fields - do while(associated(newfld%next)) + do while(associated(newfld)) write(6,*) trim(subname)//' input flds entry is ',trim(newfld%stdname) newfld => newfld%next end do - call ESMF_LogWrite(subname // 'ERROR: fldname '// trim(fldname) // ' not found in input flds', ESMF_LOGMSG_INFO) + call ESMF_LogWrite(subname // 'ERROR: fldname '// trim(fldname) // ' not found in input flds', ESMF_LOGMSG_ERROR) return endif @@ -333,17 +349,20 @@ subroutine med_fldList_AddMapFrom(index, fldname, destcomp, maptype, mapnorm, ma end subroutine med_fldList_AddMapFrom !================================================================================ - subroutine med_fldList_AddMapTo(index, fldname, destcomp, maptype, mapnorm, mapfile) - integer, intent(in) :: index - character(len=*) , intent(in) :: fldname - integer , intent(in) :: destcomp - integer , intent(in) :: maptype - character(len=*) , intent(in) :: mapnorm - character(len=*), optional , intent(in) :: mapfile - - call med_fldList_AddMap(FldListTo(index)%fields, fldname, destcomp, maptype, mapnorm, mapfile) - - end subroutine med_fldList_AddMapTo +! subroutine med_fldList_AddMapTo(index, fldname, destcomp, maptype, mapnorm, mapfile) +! integer, intent(in) :: index +! character(len=*) , intent(in) :: fldname +! integer , intent(in) :: destcomp +! integer , intent(in) :: maptype +! character(len=*) , intent(in) :: mapnorm +! character(len=*), optional , intent(in) :: mapfile +! +! if(index == compice .and. trim(fldname) .eq. 'cpl_scalars') then +! call ESMF_Finalize(endflag=ESMF_END_ABORT) +! endif +! call med_fldList_AddMap(FldListTo(index)%fields, fldname, destcomp, maptype, mapnorm, mapfile) +! +! end subroutine med_fldList_AddMapTo !================================================================================ subroutine med_fldList_AddaofluxMap(fldname, destcomp, maptype, mapnorm, mapfile) character(len=*) , intent(in) :: fldname @@ -521,7 +540,7 @@ subroutine med_fldList_Realize(state, fldList, flds_scalar_name, flds_scalar_num endif newfld => fldList%fields - do while(associated(newfld%next)) + do while(associated(newfld)) shortname = newfld%shortname ! call ESMF_LogWrite(subname//' fld = '//trim(shortname), ESMF_LOGMSG_INFO) @@ -568,9 +587,6 @@ subroutine med_fldList_Realize(state, fldList, flds_scalar_name, flds_scalar_num call NUOPC_Realize(state, field=field, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=u_FILE_u)) return - ! call ESMF_FieldPrint(field=field, rc=rc) - ! if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=u_FILE_u)) return - endif else @@ -581,7 +597,7 @@ subroutine med_fldList_Realize(state, fldList, flds_scalar_name, flds_scalar_num if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=u_FILE_u)) return end if - + newfld => newfld%next end do call ESMF_LogWrite(subname//' done ', ESMF_LOGMSG_INFO) @@ -630,7 +646,7 @@ end subroutine med_fldList_Realize !================================================================================ - subroutine med_fldList_GetFldInfo(fldList, fldindex, compsrc, stdname, shortname, mapindex, mapFile, mapnorm, merge_fields, merge_type, merge_fracname) + subroutine med_fldList_GetFldInfo(fldList, fldindex, compsrc, stdname, shortname, mapindex, mapFile, mapnorm, merge_fields, merge_type, merge_fracname, rc) ! ---------------------------------------------- ! Get field info ! ---------------------------------------------- @@ -645,21 +661,52 @@ subroutine med_fldList_GetFldInfo(fldList, fldindex, compsrc, stdname, shortname character(len=*) , optional, intent(out) :: merge_fields character(len=*) , optional, intent(out) :: merge_type character(len=*) , optional, intent(out) :: merge_fracname + integer , optional, intent(out) :: rc ! local variables type(med_fldList_entry_type), pointer :: newfld integer :: i integer :: lcompsrc - character(len=*), parameter :: subname='(med_fldList_GetFldInfo_general)' + character(len=*), parameter :: subname='(med_fldList_GetFldInfo)' ! ---------------------------------------------- i = 0 lcompsrc = 1 newfld => fldList%fields - do while(associated(newfld%next)) + do while(associated(newfld)) i = i+1 if (i==fldindex) exit newfld => newfld%next enddo + + call med_fld_GetFldInfo(newfld, compsrc, stdname, shortname, mapindex, mapFile, mapnorm, merge_fields, merge_type, merge_fracname, rc) + + end subroutine med_fldList_GetFldInfo + + subroutine med_fld_GetFldInfo(newfld, compsrc, stdname, shortname, mapindex, mapFile, mapnorm, merge_fields, merge_type, merge_fracname, rc) + ! ---------------------------------------------- + ! Get field info + ! ---------------------------------------------- + type(med_fldList_entry_type) , intent(in) :: newfld + integer , optional, intent(in) :: compsrc + integer , optional, intent(out) :: mapindex + character(len=*) , optional, intent(out) :: mapfile + character(len=*) , optional, intent(out) :: mapnorm + character(len=*) , optional, intent(out) :: stdname + character(len=*) , optional, intent(out) :: shortname + character(len=*) , optional, intent(out) :: merge_fields + character(len=*) , optional, intent(out) :: merge_type + character(len=*) , optional, intent(out) :: merge_fracname + integer , optional, intent(out) :: rc + + ! local variables + integer :: lrc + integer :: lcompsrc + character(len=*), parameter :: subname='(med_fld_GetFldInfo)' + lrc = ESMF_SUCCESS + + lcompsrc = -1 + if(present(compsrc)) lcompsrc = compsrc + if(present(stdname)) then stdname = newfld%stdname endif @@ -668,31 +715,41 @@ subroutine med_fldList_GetFldInfo(fldList, fldindex, compsrc, stdname, shortname endif if(present(mapindex)) then - if(present(compsrc)) lcompsrc = compsrc - mapindex = newfld%mapindex(compsrc) + if(lcompsrc < 0) call med_fldList_compsrcerror(lrc) + mapindex = newfld%mapindex(lcompsrc) endif if(present(mapfile)) then - if(present(compsrc)) lcompsrc = compsrc - mapfile = newfld%mapfile(compsrc) + if(lcompsrc < 0) call med_fldList_compsrcerror(lrc) + mapfile = newfld%mapfile(lcompsrc) endif if(present(mapnorm)) then - if(present(compsrc)) lcompsrc = compsrc - mapnorm = newfld%mapnorm(compsrc) + if(lcompsrc < 0) call med_fldList_compsrcerror(lrc) + mapnorm = newfld%mapnorm(lcompsrc) endif if(present(merge_fields)) then - if(present(compsrc)) lcompsrc = compsrc - merge_fields = newfld%merge_fields(compsrc) + if(lcompsrc < 0) call med_fldList_compsrcerror(lrc) + merge_fields = newfld%merge_fields(lcompsrc) endif if(present(merge_type)) then - if(present(compsrc)) lcompsrc = compsrc - merge_type = newfld%merge_types(compsrc) + if(lcompsrc < 0) call med_fldList_compsrcerror(lrc) + merge_type = newfld%merge_types(lcompsrc) endif if(present(merge_fracname)) then - if(present(compsrc)) lcompsrc = compsrc - merge_fracname = newfld%merge_fracnames(compsrc) + if(lcompsrc < 0) call med_fldList_compsrcerror(lrc) + merge_fracname = newfld%merge_fracnames(lcompsrc) endif + if(present(rc)) rc=lrc + + end subroutine med_fld_GetFldInfo + + subroutine med_fldList_compsrcerror(rc) + integer, intent(out) :: rc + call ESMF_LogWrite("In med_fld_GetFldInfo a field requiring compsrc was requested but compsrc was not provided. ", & + ESMF_LOGMSG_ERROR) + rc = ESMF_FAILURE + return + end subroutine med_fldList_compsrcerror - end subroutine med_fldList_GetFldInfo !================================================================================ @@ -705,7 +762,7 @@ integer function med_fldList_GetNumFlds(fldList) newfld => fldList%fields med_fldList_GetNumFlds = 0 - do while(associated(newfld%next)) + do while(associated(newfld)) med_fldList_GetNumFlds = med_fldList_GetNumFlds + 1 newfld => newfld%next end do @@ -716,11 +773,11 @@ end function med_fldList_GetNumFlds subroutine med_fldList_GetFldNames(fields, fldnames, rc) - use ESMF, only : ESMF_LOGMSG_INFO, ESMF_FAILURE, ESMF_SUCCESS, ESMF_LogWrite + use ESMF, only : ESMF_LOGMSG_ERROR, ESMF_FAILURE, ESMF_SUCCESS, ESMF_LogWrite ! input/output variables type(med_fldList_entry_type) , intent(in), target :: fields - character(len=*) , intent(out), pointer :: fldnames(:) + character(len=*) , intent(inout), pointer :: fldnames(:) integer, optional , intent(out) :: rc !local variables @@ -728,17 +785,16 @@ subroutine med_fldList_GetFldNames(fields, fldnames, rc) integer :: n ! ---------------------------------------------- - rc = ESMF_SUCCESS - + if(present(rc)) rc = ESMF_SUCCESS if (.not. associated(fldnames) .or. .not. allocated(fields%mapindex)) then call ESMF_LogWrite("med_fldList_GetFldNames: ERROR either fields or fldnames have not been allocate ", & - ESMF_LOGMSG_INFO) - rc = ESMF_FAILURE + ESMF_LOGMSG_ERROR) + if(present(rc)) rc = ESMF_FAILURE return endif n = 0 newfld => fields - do while(associated(newfld%next)) + do while(associated(newfld)) n = n+1 fldnames(n) = trim(newfld%shortname) newfld => newfld%next @@ -785,12 +841,11 @@ subroutine med_fldList_Document_Mapping(logunit, med_coupling_active) ! Write all the mappings for fields from the src to the destination component write(logunit,*)' ' newfld => fldListFr(nsrc)%fields - do while(associated(newfld%next)) + do while(associated(newfld)) mapindex = newfld%mapindex(ndst) if ( mapindex /= mapunset) then - fldname = trim(newfld%stdname) - mapnorm = trim(newfld%mapnorm(ndst)) - mapfile = trim(newfld%mapfile(ndst)) + call med_fld_GetFldInfo(newfld, compsrc=ndst, stdname=fldname, mapnorm=mapnorm, mapfile=mapfile, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return if (trim(mapnorm) == 'unset') then cvalue = ' mapping '//trim(compname(nsrc))//'->'//trim(compname(ndst)) //' '//trim(fldname) // & @@ -817,13 +872,12 @@ subroutine med_fldList_Document_Mapping(logunit, med_coupling_active) ndst = compatm if (med_coupling_active(nsrc,ndst) .and. allocated(fldListMed_aoflux%fields%mapindex)) then newfld => fldListMed_aoflux%fields - do while(associated(newfld%next)) - mapindex = newfld%mapindex(ndst) + do while(associated(newfld)) + call med_fld_GetFldInfo(newfld, compsrc=ndst, mapindex=mapindex, rc=rc) if ( mapindex /= mapunset) then - fldname = trim(newfld%stdname) - mapnorm = trim(newfld%mapnorm(ndst)) - mapfile = trim(newfld%mapfile(ndst)) - + call med_fld_GetFldInfo(newfld, stdname=fldname, compsrc=ndst, mapnorm=mapnorm, mapfile=mapfile, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return + if (trim(mapnorm) == 'unset') then cvalue = ' mapping '//trim(compname(nsrc))//'->'//trim(compname(ndst)) //' '//trim(fldname) // & ' via '// trim(mapnames(mapindex)) @@ -872,7 +926,7 @@ subroutine med_fldList_Document_Merging(logunit, med_coupling_active) character(len=CL) :: mrgstr logical :: init_mrgstr type(med_fldList_entry_type), pointer :: newfld - character(len=*),parameter :: subname = '(med_fldList_Document_Mapping)' + character(len=*),parameter :: subname = '(med_fldList_Document_Merging)' !----------------------------------------------------------- write(logunit,*) @@ -884,18 +938,18 @@ subroutine med_fldList_Document_Merging(logunit, med_coupling_active) ! Loop over all flds in the destination component and determine merging data newfld => fldListTo(ndst)%fields - do while(associated(newfld%next)) - dst_field = newfld%stdname - + do while(associated(newfld)) + call med_fld_GetFldInfo(newfld, stdname=dst_field, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return + ! Loop over all possible source components for destination component field mrgstr = ' ' do nsrc = 1,ncomps if (nsrc /= ndst .and. med_coupling_active(nsrc,ndst)) then src_comp = compname(nsrc) - merge_field = newfld%merge_fields(nsrc) - merge_type = newfld%merge_types(nsrc) - merge_frac = newfld%merge_fracnames(nsrc) + call med_fld_GetFldInfo(newfld, compsrc=nsrc, merge_fields=merge_field, merge_type=merge_type, merge_fracname=merge_frac, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return if (merge_type == 'merge' .or. merge_type == 'sum_with_weights') then string = trim(merge_frac)//'*'//trim(merge_field)//'('//trim(src_comp)//')' @@ -921,12 +975,12 @@ subroutine med_fldList_Document_Merging(logunit, med_coupling_active) end if end if end if - newfld => newfld%next end do ! end loop over nsrc if (mrgstr /= ' ') then write(logunit,'(a)') trim(mrgstr) end if - end do ! end loop over nf + newfld => newfld%next + end do ! end loop over fields end do ! end loop over ndst end subroutine med_fldList_Document_Merging diff --git a/mediator/esmFldsExchange_cesm_mod.F90 b/mediator/esmFldsExchange_cesm_mod.F90 index e957ea699..1be6c3cf8 100644 --- a/mediator/esmFldsExchange_cesm_mod.F90 +++ b/mediator/esmFldsExchange_cesm_mod.F90 @@ -85,10 +85,8 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) use esmFlds , only : addfldTo => med_fldList_AddFldTo use esmFlds , only : addfldFrom => med_fldList_AddFldFrom - use esmFlds , only : addmapTo => med_fldList_AddMapTo use esmFlds , only : addmapFrom => med_fldList_AddMapFrom use esmFlds , only : addmrgTo => med_fldList_AddMrgTo - use esmFlds , only : addmrgFrom => med_fldList_AddMrgFrom ! input/output parameters: type(ESMF_GridComp) :: gcomp diff --git a/mediator/esmFldsExchange_nems_mod.F90 b/mediator/esmFldsExchange_nems_mod.F90 index 8095d1494..8e9ecc61d 100644 --- a/mediator/esmFldsExchange_nems_mod.F90 +++ b/mediator/esmFldsExchange_nems_mod.F90 @@ -34,11 +34,9 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) use med_internalstate_mod , only : coupling_mode, mapnames use esmFlds , only : med_fldList_type use esmFlds , only : addfldTo => med_fldList_AddFldTo - use esmFlds , only : addmapTo => med_fldList_AddMapTo use esmFlds , only : addmrgTo => med_fldList_AddMrgTo use esmFlds , only : addfldFrom => med_fldList_AddFldFrom use esmFlds , only : addmapFrom => med_fldList_AddMapFrom - use esmFlds , only : addmrgFrom => med_fldList_AddMrgFrom use esmFlds , only : addaofluxFld => med_fldList_addaofluxFld use esmFlds , only : addaofluxMap => med_fldList_addaofluxMap diff --git a/mediator/med.F90 b/mediator/med.F90 index a72a2e1d7..f62b0d3db 100644 --- a/mediator/med.F90 +++ b/mediator/med.F90 @@ -658,7 +658,7 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) use ESMF , only : ESMF_END_ABORT, ESMF_Finalize, ESMF_MAXSTR use NUOPC , only : NUOPC_AddNamespace, NUOPC_Advertise, NUOPC_AddNestedState use NUOPC , only : NUOPC_CompAttributeGet, NUOPC_CompAttributeSet, NUOPC_CompAttributeAdd - use esmFlds, only : med_fldlist_init1 + use esmFlds, only : med_fldlist_init1, med_fld_GetFldInfo, med_fldList_entry_type use med_phases_history_mod, only : med_phases_history_init use med_internalstate_mod , only : atm_name @@ -677,6 +677,7 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) character(len=8) :: cnum type(InternalState) :: is_local type(med_fldlist_type), pointer :: fldListFr, fldListTo + type(med_fldList_entry_type), pointer :: fld integer :: stat character(len=*),parameter :: subname=' (Advertise Fields) ' !----------------------------------------------------------- @@ -877,7 +878,6 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) nflds = med_fldList_GetNumFlds(fldListFr) do n=1,nflds call med_fldList_GetFldInfo(fldListFr, n, stdname=stdname, shortname=shortname) - print *,__FILE__,__LINE__,n,trim(stdname),trim(shortname) if (mastertask) then write(logunit,'(a)') trim(subname)//':Fr_'//trim(compname(ncomp))//': '//trim(shortname) end if @@ -894,9 +894,9 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) end do fldListTo => med_fldList_GetFldListTo(ncomp) - nflds = med_fldList_GetNumFlds(fldListTo) - do n = 1,nflds - call med_fldList_GetFldInfo(fldListTo, n, stdname=stdname, shortname=shortname) + fld => fldListTo%fields + do while(associated(fld)) + call med_fld_GetFldInfo(fld, stdname=stdname, shortname=shortname, rc=rc) if (mastertask) then write(logunit,'(a)') trim(subname)//':To_'//trim(compname(ncomp))//': '//trim(shortname) end if @@ -910,6 +910,7 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) TransferOfferGeomObject=transferOffer, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call ESMF_LogWrite(subname//':To_'//trim(compname(ncomp))//': '//trim(shortname), ESMF_LOGMSG_INFO) + fld => fld%next end do end if end do ! end of ncomps loop diff --git a/mediator/med_merge_mod.F90 b/mediator/med_merge_mod.F90 index 223b1da25..c984b1e3f 100644 --- a/mediator/med_merge_mod.F90 +++ b/mediator/med_merge_mod.F90 @@ -13,7 +13,9 @@ module med_merge_mod use med_methods_mod , only : FB_GetFldPtr => med_methods_FB_GetFldPtr use esmFlds , only : med_fldList_type use esmFlds , only : med_fldList_GetNumFlds - use esmFlds , only : med_fldList_GetFldInfo + use esmFlds , only : med_fld_GetFldInfo + use esmFlds , only : med_fldList_entry_type + use esmFlds , only : med_fldList_GetFldNames use perf_mod , only : t_startf, t_stopf implicit none @@ -56,12 +58,13 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f type(ESMF_FieldBundle) , intent(inout) :: FBOut ! Merged output field bundle type(ESMF_FieldBundle) , intent(inout) :: FBfrac ! Fraction data for FBOut type(ESMF_FieldBundle) , intent(in) :: FBImp(:) ! Array of field bundles each mapping to the FBOut mesh - type(med_fldList_type) , intent(in) :: fldListTo ! Information for merging + type(med_fldList_type) , intent(in) , target :: fldListTo ! Information for merging type(ESMF_FieldBundle) , intent(in) , optional :: FBMed1 ! mediator field bundle type(ESMF_FieldBundle) , intent(in) , optional :: FBMed2 ! mediator field bundle integer , intent(out) :: rc ! local variables + type(med_fldList_entry_type), pointer :: fldptr integer :: nfld_out,nfld_in,nm integer :: compsrc integer :: num_merge_fields @@ -70,8 +73,8 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f character(CL) :: merge_field character(CS) :: merge_type character(CS) :: merge_fracname - character(CS), allocatable :: merge_field_names(:) - logical :: error_check = .false. ! TODO: make this an input argument + character(CS), pointer :: merge_field_names(:) + logical :: error_check = .true. ! TODO: make this an input argument integer :: ungriddedUBound_out(1) ! size of ungridded dimension integer :: fieldcount character(CL) , pointer :: fieldnamelist(:) @@ -98,23 +101,21 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f call ESMF_FieldBundleGet(FBOut, fieldnamelist=fieldnamelist, fieldlist=fieldlist, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return - num_merge_fields = med_fldList_GetNumFlds(fldListTo) - allocate(merge_field_names(num_merge_fields)) - do nfld_in = 1,num_merge_fields - call med_fldList_GetFldInfo(fldListTo, nfld_in, stdname=merge_field_names(nfld_in)) - end do - ! Want to loop over all of the fields in FBout here - and find the corresponding index in fldListTo(compxxx) ! for that field name - then call the corresponding merge routine below appropriately ! Loop over all fields in field bundle FBOut do nfld_out = 1,fieldcount zero_output = .true. + call ESMF_FieldGet(fieldlist(nfld_out), ungriddedUBound=ungriddedUbound_out, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return ! Loop over the field in fldListTo - do nfld_in = 1,num_merge_fields - - if (trim(merge_field_names(nfld_in)) == trim(fieldnamelist(nfld_out))) then + fldptr => fldListTo%fields + nfld_in = 0 + do while(associated(fldptr)) + nfld_in = nfld_in + 1 + if (trim(fldptr%stdname) == trim(fieldnamelist(nfld_out))) then ! Loop over all possible source components in the merging arrays returned from the above call ! If the merge field name from the source components is not set, then simply go to the next component @@ -128,9 +129,10 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f else if (.not. coupling_active(compsrc)) then CYCLE end if - + ! Determine the merge information for the import field - call med_fldList_GetFldInfo(fldListTo, nfld_in, compsrc=compsrc, merge_fields=merge_fields, merge_type=merge_type, merge_fracname=merge_fracname) + call med_fld_GetFldInfo(fldptr, compsrc=compsrc, merge_fields=merge_fields, merge_type=merge_type, merge_fracname=merge_fracname, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return if (merge_type /= 'unset' .and. merge_field /= 'unset') then ! If merge_field is a colon delimited string then cycle through every field - otherwise by default nm @@ -138,13 +140,8 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f num_merge_colon_fields = merge_listGetNum(merge_fields) do nm = 1,num_merge_colon_fields ! Determine merge field name from source field - if (num_merge_fields == 1) then - merge_field = trim(merge_fields) - else - call merge_listGetName(merge_fields, nm, merge_field, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - + call merge_listGetName(merge_fields, nm, merge_field, rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return ! Perform error checks if (error_check) then call med_merge_auto_errcheck(compsrc, fieldnamelist(nfld_out), fieldlist(nfld_out), & @@ -155,8 +152,6 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f ! Initialize initial output field data to zero before doing merge if (zero_output) then - call ESMF_FieldGet(fieldlist(nfld_out), ungriddedUBound=ungriddedUbound_out, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return if (ungriddedUBound_out(1) > 0) then call ESMF_FieldGet(fieldlist(nfld_out), farrayPtr=dataptr2d, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return @@ -190,6 +185,7 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f end if ! end of check of merge_type and merge_field not unset end do ! end of compsrc loop end if ! end of check if stdname and fldname are the same + fldptr => fldptr%next end do ! end of loop over fldsListTo end do ! end of loop over fields in FBOut @@ -225,10 +221,11 @@ subroutine med_merge_auto_single_fldbun(compsrc, FBOut, FBfrac, FBIn, fldListTo, type(ESMF_FieldBundle) , intent(inout) :: FBOut ! Merged output field bundle type(ESMF_FieldBundle) , intent(inout) :: FBfrac ! Fraction data for FBOut type(ESMF_FieldBundle) , intent(in) :: FBIn ! Single field bundle to merge to the FBOut mesh - type(med_fldList_type) , intent(in) :: fldListTo ! Information for merging + type(med_fldList_type) , intent(in), target :: fldListTo ! Information for merging integer , intent(out) :: rc ! local variables + type(med_fldList_entry_type), pointer :: fldptr integer :: nfld_out,nfld_in,nm integer :: num_merge_fields integer :: num_merge_colon_fields @@ -236,7 +233,7 @@ subroutine med_merge_auto_single_fldbun(compsrc, FBOut, FBfrac, FBIn, fldListTo, character(CL) :: merge_field character(CS) :: merge_type character(CS) :: merge_fracname - character(CS), allocatable :: merge_field_names(:) + character(CS) :: merge_field_name integer :: ungriddedUBound_out(1) ! size of ungridded dimension integer :: fieldcount character(CL) , pointer :: fieldnamelist(:) @@ -263,26 +260,26 @@ subroutine med_merge_auto_single_fldbun(compsrc, FBOut, FBfrac, FBIn, fldListTo, call ESMF_FieldBundleGet(FBOut, fieldnamelist=fieldnamelist, fieldlist=fieldlist, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return - num_merge_fields = med_fldList_GetNumFlds(fldListTo) - allocate(merge_field_names(num_merge_fields)) - do nfld_in = 1,num_merge_fields - call med_fldList_GetFldInfo(fldListTo, nfld_in, stdname=merge_field_names(nfld_in)) - end do - ! Loop over all fields in output field bundle FBOut do nfld_out = 1,fieldcount zero_output = .true. + call ESMF_FieldGet(fieldlist(nfld_out), ungriddedUBound=ungriddedUbound_out, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return ! Loop over the field in fldListTo to get fieldname and merging type - do nfld_in = 1,med_fldList_GetNumFlds(fldListTo) - - if (trim(merge_field_names(nfld_in)) == trim(fieldnamelist(nfld_out))) then + fldptr => fldListTo%fields + nfld_in = 0 + do while(associated(fldptr)) + nfld_in = nfld_in+1 + call med_fld_GetFldInfo(fldptr, stdname=merge_field_name, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return + if (trim(merge_field_name) == trim(fieldnamelist(nfld_out))) then ! Loop over all possible source components in the merging arrays returned from the above call ! If the merge field name from the source components is not set, then simply go to the next component ! Determine the merge information for the import field - call med_fldList_GetFldInfo(fldListTo, nfld_in, compsrc=compsrc, merge_fields=merge_fields, merge_type=merge_type, merge_fracname=merge_fracname) + call med_fld_GetFldInfo(fldptr, compsrc=compsrc, merge_fields=merge_fields, merge_type=merge_type, merge_fracname=merge_fracname) if (merge_type /= 'unset' .and. merge_field /= 'unset') then @@ -291,17 +288,11 @@ subroutine med_merge_auto_single_fldbun(compsrc, FBOut, FBfrac, FBIn, fldListTo, num_merge_colon_fields = merge_listGetNum(merge_fields) do nm = 1,num_merge_colon_fields ! Determine merge field name from source field - if (num_merge_fields == 1) then - merge_field = trim(merge_fields) - else - call merge_listGetName(merge_fields, nm, merge_field, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if + call merge_listGetName(merge_fields, nm, merge_field, rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return ! Initialize initial output field data to zero before doing merge if (zero_output) then - call ESMF_FieldGet(fieldlist(nfld_out), ungriddedUBound=ungriddedUbound_out, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return if (ungriddedUBound_out(1) > 0) then call ESMF_FieldGet(fieldlist(nfld_out), farrayPtr=dataptr2d, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return @@ -322,6 +313,7 @@ subroutine med_merge_auto_single_fldbun(compsrc, FBOut, FBfrac, FBIn, fldListTo, end do ! end of nm loop end if ! end of check of merge_type and merge_field not unset end if ! end of check if stdname and fldname are the same + fldptr => fldptr%next end do ! end of loop over fldsListTo end do ! end of loop over fields in FBOut @@ -364,6 +356,7 @@ subroutine med_merge_auto_field(merge_type, field_out, ungriddedUBound_out, & real(R8), pointer :: dpf1(:) real(R8), pointer :: dpf2(:,:) ! intput pointers to 1d and 2d fields real(R8), pointer :: dpw1(:) ! weight pointer + character(CL) :: name character(len=*),parameter :: subname=' (med_merge_mod: med_merge_auto_field)' !--------------------------------------- @@ -398,6 +391,7 @@ subroutine med_merge_auto_field(merge_type, field_out, ungriddedUBound_out, & ! Get field pointer to output and input fields ! Assume that input and output ungridded upper bounds are the same - this is checked in error check + if (ungriddedUBound_out(1) > 0) then call ESMF_FieldGet(field_in, farrayPtr=dpf2, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return From 13020c75515e5de438625aa619d4615707b87720 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Mon, 21 Nov 2022 13:07:59 -0700 Subject: [PATCH 08/21] some cleanup --- mediator/esmFlds.F90 | 46 +++++++++++--------------------------------- 1 file changed, 11 insertions(+), 35 deletions(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index bbe60fc45..3786bb7ac 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -17,9 +17,7 @@ module esmflds public :: med_fldList_AddFldFrom public :: med_fldList_AddMapFrom -! public :: med_fldList_AddMrgFrom public :: med_fldList_AddFldTo -! public :: med_fldList_AddMapTo public :: med_fldList_AddMrgTo public :: med_fldList_AddOcnalbFld @@ -206,7 +204,6 @@ subroutine med_fldList_AddFld(fields, stdname, shortname) call med_fldList_findName(fields, stdname, found, newfld) ! create new entry if fldname is not in original list - mapsize = ncomps mrgsize = ncomps @@ -242,24 +239,7 @@ subroutine med_fldList_AddFld(fields, stdname, shortname) end subroutine med_fldList_AddFld !================================================================================ -! subroutine med_fldList_AddMrgFrom(index, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname, rc) - ! ---------------------------------------------- - ! Determine mrg entry or entries in flds aray - ! ---------------------------------------------- - ! input/output variables -! integer , intent(in) :: index -! character(len=*) , intent(in) :: fldname -! integer , intent(in) :: mrg_from -! character(len=*) , intent(in) :: mrg_fld -! character(len=*) , intent(in) :: mrg_type -! character(len=*) , intent(in), optional :: mrg_fracname -! integer , intent(out), optional :: rc - -! call med_FldList_addMrg(fldListFr(index)%fields, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname) - -! end subroutine med_fldList_AddMrgFrom - !================================================================================ subroutine med_fldList_AddMrgTo(index, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname, rc) ! ---------------------------------------------- @@ -278,6 +258,9 @@ subroutine med_fldList_AddMrgTo(index, fldname, mrg_from, mrg_fld, mrg_type, mrg call med_FldList_addMrg(fldListTo(index)%fields, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname) end subroutine med_fldList_AddMrgTo + + !================================================================================ + subroutine med_fldList_AddMrg(flds, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname) ! ---------------------------------------------- @@ -336,7 +319,9 @@ function med_fldList_GetFld(fields, fldname, rc) result(newfld) endif end function med_fldList_GetFld + !================================================================================ + subroutine med_fldList_AddMapFrom(index, fldname, destcomp, maptype, mapnorm, mapfile) integer, intent(in) :: index character(len=*) , intent(in) :: fldname @@ -348,22 +333,9 @@ subroutine med_fldList_AddMapFrom(index, fldname, destcomp, maptype, mapnorm, ma call med_fldList_AddMap(FldListFr(index)%fields, fldname, destcomp, maptype, mapnorm, mapfile) end subroutine med_fldList_AddMapFrom + !================================================================================ -! subroutine med_fldList_AddMapTo(index, fldname, destcomp, maptype, mapnorm, mapfile) -! integer, intent(in) :: index -! character(len=*) , intent(in) :: fldname -! integer , intent(in) :: destcomp -! integer , intent(in) :: maptype -! character(len=*) , intent(in) :: mapnorm -! character(len=*), optional , intent(in) :: mapfile -! -! if(index == compice .and. trim(fldname) .eq. 'cpl_scalars') then -! call ESMF_Finalize(endflag=ESMF_END_ABORT) -! endif -! call med_fldList_AddMap(FldListTo(index)%fields, fldname, destcomp, maptype, mapnorm, mapfile) -! -! end subroutine med_fldList_AddMapTo - !================================================================================ + subroutine med_fldList_AddaofluxMap(fldname, destcomp, maptype, mapnorm, mapfile) character(len=*) , intent(in) :: fldname integer , intent(in) :: destcomp @@ -375,6 +347,8 @@ subroutine med_fldList_AddaofluxMap(fldname, destcomp, maptype, mapnorm, mapfile end subroutine med_fldList_AddaofluxMap + !================================================================================ + subroutine med_fldList_AddocnalbMap(fldname, destcomp, maptype, mapnorm, mapfile) character(len=*) , intent(in) :: fldname integer , intent(in) :: destcomp @@ -386,6 +360,8 @@ subroutine med_fldList_AddocnalbMap(fldname, destcomp, maptype, mapnorm, mapfile end subroutine med_fldList_AddocnalbMap + !================================================================================ + subroutine med_fldList_AddMap(fields, fldname, destcomp, maptype, mapnorm, mapfile) use ESMF, only : ESMF_LOGMSG_ERROR, ESMF_FAILURE, ESMF_LogWrite, ESMF_LOGMSG_INFO From 662e171fff1d7f772bd5543c289a5a9a880b1ff3 Mon Sep 17 00:00:00 2001 From: James Edwards Date: Mon, 21 Nov 2022 14:10:06 -0700 Subject: [PATCH 09/21] more clean-up --- mediator/esmFlds.F90 | 12 ++++-------- mediator/med_merge_mod.F90 | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index 3786bb7ac..e2d16efe3 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -166,16 +166,12 @@ subroutine med_fldList_findName(fields, stdname, found, lastfld) lastfld => fields found = .false. do while(associated(lastfld%next)) - if (trim(stdname) == trim(lastfld%stdname)) then - found = .true. - exit - end if + if (trim(stdname) == trim(lastfld%stdname)) exit lastfld => lastfld%next enddo - ! Check the last lastfld - if (trim(stdname) == trim(lastfld%stdname)) then - found = .true. - end if + ! Check the lastfld + if (trim(stdname) == trim(lastfld%stdname)) found = .true. + end subroutine med_fldList_findName subroutine med_fldList_AddFld(fields, stdname, shortname) diff --git a/mediator/med_merge_mod.F90 b/mediator/med_merge_mod.F90 index c984b1e3f..e44b2e19e 100644 --- a/mediator/med_merge_mod.F90 +++ b/mediator/med_merge_mod.F90 @@ -74,7 +74,7 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f character(CS) :: merge_type character(CS) :: merge_fracname character(CS), pointer :: merge_field_names(:) - logical :: error_check = .true. ! TODO: make this an input argument + logical :: error_check = .false. ! TODO: make this an input argument integer :: ungriddedUBound_out(1) ! size of ungridded dimension integer :: fieldcount character(CL) , pointer :: fieldnamelist(:) From 40ba09b30201f461c25df137e3f3c8d01e3ae757 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Mon, 21 Nov 2022 15:48:11 -0700 Subject: [PATCH 10/21] more list translation --- mediator/med.F90 | 7 ++++--- mediator/med_map_mod.F90 | 35 +++++++++++++++++++++-------------- mediator/med_merge_mod.F90 | 2 -- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/mediator/med.F90 b/mediator/med.F90 index f62b0d3db..c3ea331eb 100644 --- a/mediator/med.F90 +++ b/mediator/med.F90 @@ -875,9 +875,9 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) if (ncomp /= compmed) then if (mastertask) write(logunit,*) fldListFr => med_fldList_GetFldListFr(ncomp) - nflds = med_fldList_GetNumFlds(fldListFr) - do n=1,nflds - call med_fldList_GetFldInfo(fldListFr, n, stdname=stdname, shortname=shortname) + fld => fldListFr%fields + do while(associated(fld)) + call med_fld_GetFldInfo(fld, stdname=stdname, shortname=shortname) if (mastertask) then write(logunit,'(a)') trim(subname)//':Fr_'//trim(compname(ncomp))//': '//trim(shortname) end if @@ -891,6 +891,7 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) TransferOfferGeomObject=transferOffer, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call ESMF_LogWrite(subname//':Fr_'//trim(compname(ncomp))//': '//trim(shortname), ESMF_LOGMSG_INFO) + fld => fld%next end do fldListTo => med_fldList_GetFldListTo(ncomp) diff --git a/mediator/med_map_mod.F90 b/mediator/med_map_mod.F90 index 5ecf488ad..8cac3e5db 100644 --- a/mediator/med_map_mod.F90 +++ b/mediator/med_map_mod.F90 @@ -83,8 +83,8 @@ subroutine med_map_RouteHandles_initfrom_esmflds(gcomp, flds_scalar_name, llogun use ESMF , only : ESMF_Mesh, ESMF_TYPEKIND_R8, ESMF_MESHLOC_ELEMENT use med_methods_mod , only : med_methods_FB_getFieldN, med_methods_FB_getNameN use med_constants_mod , only : czero => med_constants_czero - use esmFlds , only : med_fldList_GetfldListFr, med_fldList_GetNumFlds, med_fldlist_type - use esmFlds , only : med_fldList_GetFldInfo + use esmFlds , only : med_fldList_GetfldListFr, med_fldlist_type + use esmFlds , only : med_fld_GetFldInfo, med_fldList_entry_type use med_internalstate_mod , only : mapunset, compname, compocn, compatm use med_internalstate_mod , only : ncomps, nmappers, compname, mapnames, mapfcopy @@ -111,6 +111,7 @@ subroutine med_map_RouteHandles_initfrom_esmflds(gcomp, flds_scalar_name, llogun type(ESMF_Mesh) :: mesh_src type(ESMF_Mesh) :: mesh_dst type(med_fldlist_type), pointer :: FldListFr + type(med_fldlist_entry_type), pointer :: fldptr character(len=*), parameter :: subname=' (module_med_map: RouteHandles_init) ' !----------------------------------------------------------- @@ -159,10 +160,11 @@ subroutine med_map_RouteHandles_initfrom_esmflds(gcomp, flds_scalar_name, llogun ! Loop over fields fldListFr => med_fldList_getFldListFr(n1) - do nf = 1,med_fldList_GetNumFlds(fldlistFr) - + fldptr => fldListFr%fields + nf = 0 + do while(associated(fldptr)) ! Determine the mapping type for mapping field nf from n1 to n2 - call med_fldList_GetFldInfo(fldListFr, nf, compsrc=n2, mapindex=mapindex) + call med_fld_GetFldInfo(fldptr, compsrc=n2, mapindex=mapindex) if (mapindex /= mapunset) then ! determine if route handle has already been created @@ -173,13 +175,14 @@ subroutine med_map_RouteHandles_initfrom_esmflds(gcomp, flds_scalar_name, llogun ! (i.e. mapindex /= mapunset) and route handle has not already been created if (.not. mapexists) then !~ mapfile = trim(fldListFr%fields(nf)%mapfile(n2)) - call med_fldList_GetFldInfo(fldListFr, nf, compsrc=n2, mapfile=mapfile) + call med_fld_GetFldInfo(fldptr, compsrc=n2, mapfile=mapfile) call med_map_routehandles_initfrom_field(n1, n2, fldsrc, flddst, & mapindex, is_local%wrap%rh(n1,n2,:), mapfile=trim(mapfile), rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return end if end if ! end if mapindex is mapunset + fldptr => fldptr%next end do ! loop over fields @@ -717,7 +720,7 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & use ESMF use esmFlds , only : med_fldList_entry_type, med_fldList_getNumFlds, med_fldList_type - use esmFlds , only : med_fldList_getFldInfo + use esmFlds , only : med_fld_getFldInfo use med_internalstate_mod , only : nmappers use med_internalstate_mod , only : ncomps, compatm, compice, compocn, compname, mapnames use med_internalstate_mod , only : packed_data_type @@ -725,7 +728,7 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & ! input/output variables integer , intent(in) :: destcomp character(len=*) , intent(in) :: flds_scalar_name - type(med_fldList_type) , intent(in) :: fieldsSrc ! mapping types top of LL + type(med_fldList_type) , intent(in), target :: fieldsSrc ! mapping types top of LL type(ESMF_FieldBundle) , intent(in) :: FBSrc type(ESMF_FieldBundle) , intent(inout) :: FBDst type(packed_data_type) , intent(inout) :: packed_data(:) ! array over mapping types @@ -747,6 +750,7 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & integer :: numFlds type(ESMF_Field), pointer :: fieldlist_src(:) type(ESMF_Field), pointer :: fieldlist_dst(:) + type(med_fldlist_entry_type), pointer :: fldptr character(CL) :: shortname integer :: destindex character(CL), allocatable :: fieldNameList(:) @@ -797,21 +801,21 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & ! Determine the normalization type for each packed_data mapping element ! Loop over mapping types - numflds = med_fldlist_GetNumFlds(fieldsSrc) do mapindex = 1,nmappers mapnorm_mapindex = 'not_set' ! Loop over source field bundle do nf = 1, fieldCount ! Loop over the fldsSrc types - do ns = 1,numflds + fldptr => fieldsSrc%fields + do while(associated(fldptr)) ! Note that fieldnamelist is an array of names for the source fields ! The assumption is that there is only one mapping normalization ! for any given mapping type - call med_fldList_GetFldInfo(fieldsSrc, ns, compsrc=destcomp, shortname=shortname, mapindex=destindex) + call med_fld_GetFldInfo(fldptr, compsrc=destcomp, shortname=shortname, mapindex=destindex) if ( destindex == mapindex .and. & trim(shortname) == trim(fieldnamelist(nf))) then ! Set the normalization to the input - call med_FldList_GetFldInfo(fieldsSrc, ns, compsrc=destcomp, mapnorm=packed_data(mapindex)%mapnorm) + call med_Fld_GetFldInfo(fldptr, compsrc=destcomp, mapnorm=packed_data(mapindex)%mapnorm) if (mapnorm_mapindex == 'not_set') then mapnorm_mapindex = packed_data(mapindex)%mapnorm write(tmpstr,*)'Map type '//trim(mapnames(mapindex)) & @@ -831,6 +835,7 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & end if end if end if + fldptr => fldptr%next end do end do end do @@ -852,8 +857,9 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & do nf = 1, fieldCount ! Loop over the fldsSrc types - do ns = 1,numFlds - call med_fldList_GetFldInfo(fieldsSrc, ns, compsrc=destcomp, shortname=shortname, mapindex=destIndex) + fldptr => fieldsSrc%fields + do while(associated(fldptr)) + call med_fld_GetFldInfo(fldptr, compsrc=destcomp, shortname=shortname, mapindex=destIndex) if ( destIndex == mapindex .and. & trim(shortname) == trim(fieldnamelist(nf))) then @@ -884,6 +890,7 @@ subroutine med_map_packed_field_create(destcomp, flds_scalar_name, & end if end if! end if source field is mapped to destination field with mapindex + fldptr => fldptr%next end do ! end loop over FBSrc fields end do ! end loop over fldsSrc elements diff --git a/mediator/med_merge_mod.F90 b/mediator/med_merge_mod.F90 index e44b2e19e..e06ea3476 100644 --- a/mediator/med_merge_mod.F90 +++ b/mediator/med_merge_mod.F90 @@ -12,10 +12,8 @@ module med_merge_mod use med_methods_mod , only : FB_FldChk => med_methods_FB_FldChk use med_methods_mod , only : FB_GetFldPtr => med_methods_FB_GetFldPtr use esmFlds , only : med_fldList_type - use esmFlds , only : med_fldList_GetNumFlds use esmFlds , only : med_fld_GetFldInfo use esmFlds , only : med_fldList_entry_type - use esmFlds , only : med_fldList_GetFldNames use perf_mod , only : t_startf, t_stopf implicit none From 75650c9053513c75c49e34c4c71c03724469e931 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Tue, 22 Nov 2022 07:51:34 -0700 Subject: [PATCH 11/21] more loop structure changes --- mediator/med_phases_prep_rof_mod.F90 | 30 ++++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/mediator/med_phases_prep_rof_mod.F90 b/mediator/med_phases_prep_rof_mod.F90 index a30d67c6f..6ca1e85b4 100644 --- a/mediator/med_phases_prep_rof_mod.F90 +++ b/mediator/med_phases_prep_rof_mod.F90 @@ -80,8 +80,8 @@ subroutine med_phases_prep_rof_init(gcomp, rc) use ESMF , only : ESMF_FieldBundle, ESMF_FieldBundleCreate, ESMF_FieldBundleGet, ESMF_FieldBundleAdd use ESMF , only : ESMF_LogWrite, ESMF_LOGMSG_INFO, ESMF_SUCCESS use ESMF , only : ESMF_TYPEKIND_R8 - use esmFlds , only : med_fldList_GetfldListFr, med_fldList_GetfldlistTo, med_fldlist_GetNumFlds, med_fldlist_getFldInfo - use esmFlds , only : med_fldList_type + use esmFlds , only : med_fldList_GetfldListFr, med_fldList_GetfldlistTo, med_fldlist_GetNumFlds, med_fld_getFldInfo + use esmFlds , only : med_fldList_type, med_fldList_entry_type use med_map_mod , only : med_map_packed_field_create ! input/output variables @@ -95,6 +95,8 @@ subroutine med_phases_prep_rof_init(gcomp, rc) type(ESMF_Mesh) :: mesh_r type(ESMF_Field) :: lfield type(med_fldList_type), pointer :: fldList + type(med_fldList_entry_type), pointer :: fldptr + character(len=CS) :: fldname character(len=CS), allocatable :: fldnames_temp(:) character(len=*),parameter :: subname=' (med_phases_prep_rof_init) ' !--------------------------------------- @@ -111,23 +113,21 @@ subroutine med_phases_prep_rof_init(gcomp, rc) fldList => med_fldList_GetfldlistTo(comprof) nflds = med_fldlist_getnumflds(fldList) allocate(fldnames_temp(nflds)) - do n = 1,nflds - call med_fldList_GetFldInfo(fldList, n, stdname=fldnames_temp(n)) - end do - do n = 1,nflds - if (trim(fldnames_temp(n)) == trim(is_local%wrap%flds_scalar_name)) then - do n1 = n, nflds-1 - fldnames_temp(n1) = fldnames_temp(n1+1) - enddo - nflds = nflds - 1 + fldptr => fldList%fields + n = 0 + do while(associated(fldptr)) + n = n+1 + call med_fld_GetFldInfo(fldptr, stdname=fldname) + if (trim(fldname) .ne. trim(is_local%wrap%flds_scalar_name)) then + fldnames_temp(n) = fldname endif + fldptr => fldptr%next enddo - allocate(lnd2rof_flds(nflds)) - do n = 1,nflds - lnd2rof_flds(n) = trim(fldnames_temp(n)) - end do + allocate(lnd2rof_flds(n)) + lnd2rof_flds = fldnames_temp(1:n) deallocate(fldnames_temp) + ! Get lnd and rof meshes call fldbun_getmesh(is_local%wrap%FBImp(complnd,complnd), mesh_l, rc) if (chkerr(rc,__LINE__,u_FILE_u)) return From 5c653fcf15289f959fce6da4c4ac693cbf8586d8 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Wed, 23 Nov 2022 10:49:59 -0700 Subject: [PATCH 12/21] fix a pointer bug --- cesm/nuopc_cap_share/nuopc_shr_methods.F90 | 4 +- mediator/esmFlds.F90 | 17 +- mediator/med.F90 | 30 +-- mediator/med_merge_mod.F90 | 214 ++++++++++----------- mediator/med_phases_ocnalb_mod.F90 | 2 + mediator/med_phases_prep_rof_mod.F90 | 16 +- 6 files changed, 140 insertions(+), 143 deletions(-) diff --git a/cesm/nuopc_cap_share/nuopc_shr_methods.F90 b/cesm/nuopc_cap_share/nuopc_shr_methods.F90 index 8d472902b..ad6adfee3 100644 --- a/cesm/nuopc_cap_share/nuopc_shr_methods.F90 +++ b/cesm/nuopc_cap_share/nuopc_shr_methods.F90 @@ -149,8 +149,6 @@ subroutine set_component_logging(gcomp, mastertask, logunit, shrlogunit, rc) rc = ESMF_SUCCESS - shrlogunit = 6 - if (mastertask) then call NUOPC_CompAttributeGet(gcomp, name="diro", value=diro, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return @@ -170,6 +168,8 @@ subroutine set_component_logging(gcomp, mastertask, logunit, shrlogunit, rc) else logUnit = 6 endif + shrlogunit = logunit + ! TODO: shr_file mod is deprecated and should be removed. call shr_file_setLogUnit (logunit) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index e2d16efe3..c1334bdac 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -3,7 +3,7 @@ module esmflds use ESMF, only : ESMF_FINALIZE, ESMF_END_ABORT use med_kind_mod, only : CX=>SHR_KIND_CX, CS=>SHR_KIND_CS, CL=>SHR_KIND_CL, R8=>SHR_KIND_R8 - use med_internalstate_mod, only : ncomps, compname, compocn, compatm, compice + use med_internalstate_mod, only : ncomps, compname, compocn, compatm, compice, comprof use med_internalstate_mod, only : mapfcopy, mapnames, mapunset use med_utils_mod , only : chkerr => med_utils_ChkErr implicit none @@ -29,7 +29,7 @@ module esmflds private :: med_fldList_AddFld private :: med_fldList_AddMap private :: med_fldList_AddMrg - private :: med_fldList_findName + public :: med_fldList_findName public :: med_fldList_GetFldNames public :: med_fldList_GetNumFlds public :: med_fldList_GetFldInfo @@ -48,6 +48,7 @@ module esmflds type, public :: med_fldList_entry_type character(CS) :: stdname character(CS) :: shortname + type(med_fldList_entry_type), pointer :: next => null() ! Mapping fldsFr data - for mediator import fields integer , allocatable :: mapindex(:) @@ -58,7 +59,6 @@ module esmflds character(CS), allocatable :: merge_fields(:) character(CS), allocatable :: merge_types(:) character(CS), allocatable :: merge_fracnames(:) - type(med_fldList_entry_type), pointer :: next => null() end type med_fldList_entry_type ! The above would be the field name to merge from @@ -158,7 +158,7 @@ end subroutine med_fldList_AddFldTo subroutine med_fldList_findName(fields, stdname, found, lastfld) ! on return if found == .true. lastfield is the field matching stdname ! if found == .false. lastfield is the last field in the list - type(med_fldList_entry_type) , intent(in), target :: fields + type(med_fldList_entry_type) , intent(in), target :: fields character(len=*) , intent(in) :: stdname logical , intent(out) :: found type(med_fldList_entry_type) , intent(out), pointer :: lastfld @@ -252,7 +252,7 @@ subroutine med_fldList_AddMrgTo(index, fldname, mrg_from, mrg_fld, mrg_type, mrg integer , intent(out), optional :: rc call med_FldList_addMrg(fldListTo(index)%fields, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname) - + end subroutine med_fldList_AddMrgTo !================================================================================ @@ -279,7 +279,6 @@ subroutine med_fldList_AddMrg(flds, fldname, mrg_from, mrg_fld, mrg_type, mrg_fr newfld => med_fldList_GetFld(flds, fldname, rc) if (chkerr(rc,__LINE__,u_FILE_u)) return - newfld%merge_fields(mrg_from) = mrg_fld newfld%merge_types(mrg_from) = mrg_type if (present(mrg_fracname)) then @@ -649,7 +648,11 @@ subroutine med_fldList_GetFldInfo(fldList, fldindex, compsrc, stdname, shortname if (i==fldindex) exit newfld => newfld%next enddo - + if( .not. associated(newfld)) then + call ESMF_LogWrite(subname//' No field found', ESMF_LOGMSG_ERROR) + if(present(rc)) rc = ESMF_FAILURE + return + endif call med_fld_GetFldInfo(newfld, compsrc, stdname, shortname, mapindex, mapFile, mapnorm, merge_fields, merge_type, merge_fracname, rc) end subroutine med_fldList_GetFldInfo diff --git a/mediator/med.F90 b/mediator/med.F90 index c3ea331eb..11d5d6747 100644 --- a/mediator/med.F90 +++ b/mediator/med.F90 @@ -550,6 +550,7 @@ subroutine InitializeP0(gcomp, importState, exportState, clock, rc) use med_internalstate_mod, only : mastertask, logunit, diagunit #ifdef CESMCOUPLED use nuopc_shr_methods, only : set_component_logging + use shr_log_mod, only : shr_log_unit #endif type(ESMF_GridComp) :: gcomp type(ESMF_State) :: importState, exportState @@ -561,7 +562,6 @@ subroutine InitializeP0(gcomp, importState, exportState, clock, rc) character(len=CL) :: cvalue integer :: localPet integer :: i - integer :: shrlogunit logical :: isPresent, isSet character(len=CX) :: msgString character(len=CX) :: diro @@ -593,7 +593,7 @@ subroutine InitializeP0(gcomp, importState, exportState, clock, rc) logfile = 'mediator.log' end if #ifdef CESMCOUPLED - call set_component_logging(gcomp, mastertask, logunit, shrlogunit, rc) + call set_component_logging(gcomp, mastertask, logunit, shr_log_unit, rc) #else open(newunit=logunit,file=trim(diro)//"/"//trim(logfile)) #endif @@ -1813,17 +1813,18 @@ subroutine DataInitialize(gcomp, rc) do ndst = 1,ncomps do nsrc = 1,ncomps if (is_local%wrap%med_coupling_active(nsrc,ndst)) then - call med_map_packed_field_create(ndst, & - is_local%wrap%flds_scalar_name, & - fieldsSrc=med_fldList_GetfldListFr(nsrc), & - FBSrc=is_local%wrap%FBImp(nsrc,nsrc), & - FBDst=is_local%wrap%FBImp(nsrc,ndst), & - packed_data=is_local%wrap%packed_data(nsrc,ndst,:), rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if - end do - end do - if ( ESMF_FieldBundleIsCreated(is_local%wrap%FBMed_ocnalb_o) .and. & + call med_map_packed_field_create(ndst, & + is_local%wrap%flds_scalar_name, & + fieldsSrc=med_fldList_GetfldListFr(nsrc), & + FBSrc=is_local%wrap%FBImp(nsrc,nsrc), & + FBDst=is_local%wrap%FBImp(nsrc,ndst), & + packed_data=is_local%wrap%packed_data(nsrc,ndst,:), rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + end if + end do + end do + + if ( ESMF_FieldBundleIsCreated(is_local%wrap%FBMed_ocnalb_o) .and. & ESMF_FieldBundleIsCreated(is_local%wrap%FBMed_ocnalb_a)) then call med_map_packed_field_create(compatm, & is_local%wrap%flds_scalar_name, & @@ -1833,7 +1834,6 @@ subroutine DataInitialize(gcomp, rc) packed_data=is_local%wrap%packed_data_ocnalb_o2a(:), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if - !--------------------------------------- ! Initialize ocn export accumulation field bundle !--------------------------------------- @@ -1869,7 +1869,6 @@ subroutine DataInitialize(gcomp, rc) call med_phases_prep_rof_init(gcomp, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if - !--------------------------------------- ! Set the data initialize flag to false !--------------------------------------- @@ -2174,6 +2173,7 @@ subroutine DataInitialize(gcomp, rc) ESMF_LOGMSG_INFO) end if + if (profile_memory) call ESMF_VMLogMemInfo("Leaving "//trim(subname)) if (dbug_flag > 5) then call ESMF_LogWrite(trim(subname)//": done", ESMF_LOGMSG_INFO) diff --git a/mediator/med_merge_mod.F90 b/mediator/med_merge_mod.F90 index e06ea3476..2f2cf42f8 100644 --- a/mediator/med_merge_mod.F90 +++ b/mediator/med_merge_mod.F90 @@ -14,6 +14,7 @@ module med_merge_mod use esmFlds , only : med_fldList_type use esmFlds , only : med_fld_GetFldInfo use esmFlds , only : med_fldList_entry_type + use esmFlds , only : med_fldList_findName use perf_mod , only : t_startf, t_stopf implicit none @@ -80,6 +81,7 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f real(r8), pointer :: dataptr1d(:) real(r8), pointer :: dataptr2d(:,:) logical :: zero_output + logical :: found character(len=*),parameter :: subname=' (module_med_merge_mod: med_merge_auto)' !--------------------------------------- @@ -108,83 +110,76 @@ subroutine med_merge_auto_multi_fldbuns(coupling_active, FBOut, FBfrac, FBImp, f call ESMF_FieldGet(fieldlist(nfld_out), ungriddedUBound=ungriddedUbound_out, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return - ! Loop over the field in fldListTo - fldptr => fldListTo%fields - nfld_in = 0 - do while(associated(fldptr)) - nfld_in = nfld_in + 1 - if (trim(fldptr%stdname) == trim(fieldnamelist(nfld_out))) then - - ! Loop over all possible source components in the merging arrays returned from the above call - ! If the merge field name from the source components is not set, then simply go to the next component - do compsrc = 1,size(FBImp) - - ! Cycle if coupling is not active or mediator input is not present and compsrc is mediator - if (compsrc == compmed) then - if (.not. present(FBMed1) .and. .not. present(FBMed2)) then - CYCLE - end if - else if (.not. coupling_active(compsrc)) then + ! Find the next fieldname + call med_fldList_findName(fldListTo%fields, fieldnamelist(nfld_out), found, fldptr) + if (found) then + ! Loop over all possible source components in the merging arrays returned from the above call + ! If the merge field name from the source components is not set, then simply go to the next component + do compsrc = 1,size(FBImp) + ! Cycle if coupling is not active or mediator input is not present and compsrc is mediator + if (compsrc == compmed) then + if (.not. present(FBMed1) .and. .not. present(FBMed2)) then CYCLE end if + else if (.not. coupling_active(compsrc)) then + CYCLE + end if - ! Determine the merge information for the import field - call med_fld_GetFldInfo(fldptr, compsrc=compsrc, merge_fields=merge_fields, merge_type=merge_type, merge_fracname=merge_fracname, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return + ! Determine the merge information for the import field + call med_fld_GetFldInfo(fldptr, compsrc=compsrc, merge_fields=merge_fields, merge_type=merge_type, merge_fracname=merge_fracname, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return - if (merge_type /= 'unset' .and. merge_field /= 'unset') then + if (merge_type /= 'unset' .and. merge_field /= 'unset') then ! If merge_field is a colon delimited string then cycle through every field - otherwise by default nm ! will only equal 1 - num_merge_colon_fields = merge_listGetNum(merge_fields) - do nm = 1,num_merge_colon_fields - ! Determine merge field name from source field - call merge_listGetName(merge_fields, nm, merge_field, rc) + num_merge_colon_fields = merge_listGetNum(merge_fields) + do nm = 1,num_merge_colon_fields + ! Determine merge field name from source field + call merge_listGetName(merge_fields, nm, merge_field, rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + ! Perform error checks + if (error_check) then + call med_merge_auto_errcheck(compsrc, fieldnamelist(nfld_out), fieldlist(nfld_out), & + ungriddedUBound_out, trim(merge_field), FBImp(compsrc), & + FBMed1=FBMed1, FBMed2=FBMed2, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - ! Perform error checks - if (error_check) then - call med_merge_auto_errcheck(compsrc, fieldnamelist(nfld_out), fieldlist(nfld_out), & - ungriddedUBound_out, trim(merge_field), FBImp(compsrc), & - FBMed1=FBMed1, FBMed2=FBMed2, rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if ! end of error check - - ! Initialize initial output field data to zero before doing merge - if (zero_output) then - if (ungriddedUBound_out(1) > 0) then - call ESMF_FieldGet(fieldlist(nfld_out), farrayPtr=dataptr2d, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - dataptr2d(:,:) = czero - else - call ESMF_FieldGet(fieldlist(nfld_out), farrayPtr=dataptr1d, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - dataptr1d(:) = czero - end if - zero_output = .false. - end if + end if ! end of error check - ! Perform merge - if ((present(FBMed1) .or. present(FBMed2)) .and. compsrc == compmed) then - if (FB_FldChk(FBMed1, trim(merge_field), rc=rc)) then - call med_merge_auto_field(trim(merge_type), fieldlist(nfld_out), ungriddedUBound_out, & - FB=FBMed1, FBFld=merge_field, FBw=FBfrac, fldw=trim(merge_fracname), rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - else if (FB_FldChk(FBMed2, trim(merge_field), rc=rc)) then - call med_merge_auto_field(trim(merge_type), fieldlist(nfld_out), ungriddedUBound_out, & - FB=FBMed2, FBFld=merge_field, FBw=FBfrac, fldw=trim(merge_fracname), rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - end if + ! Initialize initial output field data to zero before doing merge + if (zero_output) then + if (ungriddedUBound_out(1) > 0) then + call ESMF_FieldGet(fieldlist(nfld_out), farrayPtr=dataptr2d, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return + dataptr2d(:,:) = czero else + call ESMF_FieldGet(fieldlist(nfld_out), farrayPtr=dataptr1d, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return + dataptr1d(:) = czero + end if + zero_output = .false. + end if + + ! Perform merge + if ((present(FBMed1) .or. present(FBMed2)) .and. compsrc == compmed) then + if (FB_FldChk(FBMed1, trim(merge_field), rc=rc)) then + call med_merge_auto_field(trim(merge_type), fieldlist(nfld_out), ungriddedUBound_out, & + FB=FBMed1, FBFld=merge_field, FBw=FBfrac, fldw=trim(merge_fracname), rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + else if (FB_FldChk(FBMed2, trim(merge_field), rc=rc)) then call med_merge_auto_field(trim(merge_type), fieldlist(nfld_out), ungriddedUBound_out, & - FB=FBImp(compsrc), FBFld=merge_field, FBw=FBfrac, fldw=trim(merge_fracname), rc=rc) + FB=FBMed2, FBFld=merge_field, FBw=FBfrac, fldw=trim(merge_fracname), rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if + else + call med_merge_auto_field(trim(merge_type), fieldlist(nfld_out), ungriddedUBound_out, & + FB=FBImp(compsrc), FBFld=merge_field, FBw=FBfrac, fldw=trim(merge_fracname), rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + end if - end do ! end of nm loop - end if ! end of check of merge_type and merge_field not unset - end do ! end of compsrc loop - end if ! end of check if stdname and fldname are the same - fldptr => fldptr%next - end do ! end of loop over fldsListTo + end do ! end of nm loop + end if ! end of check of merge_type and merge_field not unset + end do ! end of compsrc loop + end if ! end if found end do ! end of loop over fields in FBOut deallocate(fieldnamelist) @@ -213,7 +208,6 @@ subroutine med_merge_auto_single_fldbun(compsrc, FBOut, FBfrac, FBIn, fldListTo, use ESMF , only : ESMF_SUCCESS, ESMF_FAILURE use ESMF , only : ESMF_LogWrite, ESMF_LOGMSG_INFO, ESMF_LOGMSG_ERROR use ESMF , only : ESMF_LogSetError - ! input/output variables integer , intent(in) :: compsrc type(ESMF_FieldBundle) , intent(inout) :: FBOut ! Merged output field bundle @@ -239,6 +233,7 @@ subroutine med_merge_auto_single_fldbun(compsrc, FBOut, FBfrac, FBIn, fldListTo, real(r8), pointer :: dataptr1d(:) real(r8), pointer :: dataptr2d(:,:) logical :: zero_output + logical :: found character(len=*),parameter :: subname=' (module_med_merge_mod: med_merge_auto)' !--------------------------------------- @@ -264,55 +259,43 @@ subroutine med_merge_auto_single_fldbun(compsrc, FBOut, FBfrac, FBIn, fldListTo, call ESMF_FieldGet(fieldlist(nfld_out), ungriddedUBound=ungriddedUbound_out, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return - ! Loop over the field in fldListTo to get fieldname and merging type - fldptr => fldListTo%fields - nfld_in = 0 - do while(associated(fldptr)) - nfld_in = nfld_in+1 - call med_fld_GetFldInfo(fldptr, stdname=merge_field_name, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - if (trim(merge_field_name) == trim(fieldnamelist(nfld_out))) then - - ! Loop over all possible source components in the merging arrays returned from the above call - ! If the merge field name from the source components is not set, then simply go to the next component - - ! Determine the merge information for the import field - call med_fld_GetFldInfo(fldptr, compsrc=compsrc, merge_fields=merge_fields, merge_type=merge_type, merge_fracname=merge_fracname) - - if (merge_type /= 'unset' .and. merge_field /= 'unset') then - - ! If merge_field is a colon delimited string then cycle through every field - otherwise by default nm - ! will only equal 1 - num_merge_colon_fields = merge_listGetNum(merge_fields) - do nm = 1,num_merge_colon_fields - ! Determine merge field name from source field - call merge_listGetName(merge_fields, nm, merge_field, rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - ! Initialize initial output field data to zero before doing merge - if (zero_output) then - if (ungriddedUBound_out(1) > 0) then - call ESMF_FieldGet(fieldlist(nfld_out), farrayPtr=dataptr2d, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - dataptr2d(:,:) = czero - else - call ESMF_FieldGet(fieldlist(nfld_out), farrayPtr=dataptr1d, rc=rc) - if (chkerr(rc,__LINE__,u_FILE_u)) return - dataptr1d(:) = czero - end if - zero_output = .false. + ! Find the next fieldname + call med_fldList_findName(fldListTo%fields, fieldnamelist(nfld_out), found, fldptr) + if(found) then + ! Determine the merge information for the import field + call med_fld_GetFldInfo(fldptr, compsrc=compsrc, merge_fields=merge_fields, merge_type=merge_type, merge_fracname=merge_fracname) + if (merge_type /= 'unset' .and. merge_fields /= 'unset') then + + ! If merge_field is a colon delimited string then cycle through every field - otherwise by default nm + ! will only equal 1 + num_merge_colon_fields = merge_listGetNum(merge_fields) + do nm = 1,num_merge_colon_fields + ! Determine merge field name from source field + call merge_listGetName(merge_fields, nm, merge_field, rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + + ! Initialize initial output field data to zero before doing merge + if (zero_output) then + if (ungriddedUBound_out(1) > 0) then + call ESMF_FieldGet(fieldlist(nfld_out), farrayPtr=dataptr2d, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return + dataptr2d(:,:) = czero + else + call ESMF_FieldGet(fieldlist(nfld_out), farrayPtr=dataptr1d, rc=rc) + if (chkerr(rc,__LINE__,u_FILE_u)) return + dataptr1d(:) = czero end if - - ! Perform merge - call med_merge_auto_field(trim(merge_type), fieldlist(nfld_out), ungriddedUBound_out, & - FB=FBIn, FBFld=merge_field, FBw=FBfrac, fldw=trim(merge_fracname), rc=rc) - if (ChkErr(rc,__LINE__,u_FILE_u)) return - - end do ! end of nm loop - end if ! end of check of merge_type and merge_field not unset - end if ! end of check if stdname and fldname are the same - fldptr => fldptr%next - end do ! end of loop over fldsListTo + zero_output = .false. + end if + + ! Perform merge + call med_merge_auto_field(trim(merge_type), fieldlist(nfld_out), ungriddedUBound_out, & + FB=FBIn, FBFld=merge_field, FBw=FBfrac, fldw=trim(merge_fracname), rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + + end do ! end of nm loop + end if ! end of check of merge_type and merge_field not unset + end if ! end of check if stdname and fldname are the same end do ! end of loop over fields in FBOut deallocate(fieldnamelist) @@ -748,7 +731,10 @@ subroutine merge_listGetName(list, k, name, rc) !--------------------------------------- rc = ESMF_SUCCESS - + if(k==1) then + name = trim(list) + return + endif ! check that this is a valid list valid_list = .true. nChar = len_trim(list) diff --git a/mediator/med_phases_ocnalb_mod.F90 b/mediator/med_phases_ocnalb_mod.F90 index 1fe8fb502..0fd6773c1 100644 --- a/mediator/med_phases_ocnalb_mod.F90 +++ b/mediator/med_phases_ocnalb_mod.F90 @@ -11,6 +11,7 @@ module med_phases_ocnalb_mod #ifdef CESMCOUPLED use shr_orb_mod , only : shr_orb_cosz, shr_orb_decl use shr_orb_mod , only : shr_orb_params, SHR_ORB_UNDEF_INT, SHR_ORB_UNDEF_REAL + use shr_log_mod , only : shr_log_unit #endif implicit none @@ -594,6 +595,7 @@ subroutine med_phases_ocnalb_orbital_update(clock, logunit, mastertask, eccen, end if eccen = orb_eccen + shr_log_unit = logunit call shr_orb_params(orb_year, eccen, orb_obliq, orb_mvelp, obliqr, lambm0, mvelpp, lprint) if ( eccen == SHR_ORB_UNDEF_REAL .or. obliqr == SHR_ORB_UNDEF_REAL .or. & diff --git a/mediator/med_phases_prep_rof_mod.F90 b/mediator/med_phases_prep_rof_mod.F90 index 6ca1e85b4..0a8999231 100644 --- a/mediator/med_phases_prep_rof_mod.F90 +++ b/mediator/med_phases_prep_rof_mod.F90 @@ -116,9 +116,9 @@ subroutine med_phases_prep_rof_init(gcomp, rc) fldptr => fldList%fields n = 0 do while(associated(fldptr)) - n = n+1 call med_fld_GetFldInfo(fldptr, stdname=fldname) if (trim(fldname) .ne. trim(is_local%wrap%flds_scalar_name)) then + n = n+1 fldnames_temp(n) = fldname endif fldptr => fldptr%next @@ -127,7 +127,6 @@ subroutine med_phases_prep_rof_init(gcomp, rc) lnd2rof_flds = fldnames_temp(1:n) deallocate(fldnames_temp) - ! Get lnd and rof meshes call fldbun_getmesh(is_local%wrap%FBImp(complnd,complnd), mesh_l, rc) if (chkerr(rc,__LINE__,u_FILE_u)) return @@ -139,6 +138,7 @@ subroutine med_phases_prep_rof_init(gcomp, rc) if (chkerr(rc,__LINE__,u_FILE_u)) return FBlndAccum2rof_r = ESMF_FieldBundleCreate(name='FBlndAccum2rof_r', rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return + do n = 1,size(lnd2rof_flds) lfield = ESMF_FieldCreate(mesh_l, ESMF_TYPEKIND_R8, name=lnd2rof_flds(n), meshloc=ESMF_MESHLOC_ELEMENT, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return @@ -155,13 +155,17 @@ subroutine med_phases_prep_rof_init(gcomp, rc) end do ! Initialize field bundles and accumulation count + call fldbun_reset(FBlndAccum2rof_l, value=0.0_r8, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return + call fldbun_reset(FBlndAccum2rof_r, value=0.0_r8, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return lndAccum2rof_cnt = 0 - fldList = med_fldList_GetFldListFr(complnd) + + fldList => med_fldList_GetFldListFr(complnd) ! Create packed mapping from rof->lnd + call med_map_packed_field_create(destcomp=comprof, & flds_scalar_name=is_local%wrap%flds_scalar_name, & fieldsSrc=fldList, & @@ -262,7 +266,7 @@ subroutine med_phases_prep_rof(gcomp, rc) use ESMF , only : ESMF_GridComp, ESMF_GridCompGet use ESMF , only : ESMF_FieldBundleGet, ESMF_FieldGet use ESMF , only : ESMF_LogWrite, ESMF_LOGMSG_INFO, ESMF_SUCCESS - use esmFlds , only : med_fldList_GetfldListTo + use esmFlds , only : med_fldList_GetfldListTo, med_fldList_type use med_map_mod , only : med_map_field_packed use med_merge_mod , only : med_merge_auto use med_constants_mod , only : czero => med_constants_czero @@ -283,6 +287,7 @@ subroutine med_phases_prep_rof(gcomp, rc) type(ESMF_Field) :: lfield_src type(ESMF_Field) :: lfield_dst type(ESMF_Field) :: field_lfrac_lnd + type(med_fldList_type), pointer :: fldList character(CL), pointer :: lfieldnamelist(:) character(len=*),parameter :: subname='(med_phases_prep_rof_mod: med_phases_prep_rof)' !--------------------------------------- @@ -301,6 +306,7 @@ subroutine med_phases_prep_rof(gcomp, rc) call ESMF_GridCompGetInternalState(gcomp, is_local, rc) if (chkerr(rc,__LINE__,u_FILE_u)) return + fldList => med_fldList_GetfldListTo(comprof) !--------------------------------------- ! Average import from land accumuled FB !--------------------------------------- @@ -374,7 +380,7 @@ subroutine med_phases_prep_rof(gcomp, rc) end if call med_merge_auto(compsrc=complnd, FBout=is_local%wrap%FBExp(comprof), & - FBfrac=is_local%wrap%FBFrac(comprof), FBin=FBlndAccum2rof_r, fldListTo=med_fldList_GetfldListTo(comprof), rc=rc) + FBfrac=is_local%wrap%FBFrac(comprof), FBin=FBlndAccum2rof_r, fldListTo=fldList, rc=rc) if (chkerr(rc,__LINE__,u_FILE_u)) return if (dbug_flag > 1) then From 24aff18b776e7c9438329cd373200d5bf773e1d9 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Wed, 23 Nov 2022 15:33:23 -0700 Subject: [PATCH 13/21] fix findname --- mediator/esmFlds.F90 | 2 +- mediator/med_merge_mod.F90 | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index c1334bdac..eb57728cf 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -48,7 +48,6 @@ module esmflds type, public :: med_fldList_entry_type character(CS) :: stdname character(CS) :: shortname - type(med_fldList_entry_type), pointer :: next => null() ! Mapping fldsFr data - for mediator import fields integer , allocatable :: mapindex(:) @@ -59,6 +58,7 @@ module esmflds character(CS), allocatable :: merge_fields(:) character(CS), allocatable :: merge_types(:) character(CS), allocatable :: merge_fracnames(:) + type(med_fldList_entry_type), pointer :: next => null() end type med_fldList_entry_type ! The above would be the field name to merge from diff --git a/mediator/med_merge_mod.F90 b/mediator/med_merge_mod.F90 index 2f2cf42f8..7139fffd9 100644 --- a/mediator/med_merge_mod.F90 +++ b/mediator/med_merge_mod.F90 @@ -731,10 +731,7 @@ subroutine merge_listGetName(list, k, name, rc) !--------------------------------------- rc = ESMF_SUCCESS - if(k==1) then - name = trim(list) - return - endif + ! check that this is a valid list valid_list = .true. nChar = len_trim(list) @@ -748,6 +745,9 @@ subroutine merge_listGetName(list, k, name, rc) valid_list = .false. else if (index(trim(list),listDel2) > 0) then ! found zero length field valid_list = .false. + else if (index(trim(list),listDel) == 0) then ! found a single field + name = trim(list) + return end if if (.not. valid_list) then write(logunit,*) "ERROR: invalid list = ",trim(list) From c33b88a9f51801388a216c1053a08ce56b3c8d1f Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Mon, 28 Nov 2022 07:34:35 -0700 Subject: [PATCH 14/21] add a bit more debug info --- mediator/esmFlds.F90 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index eb57728cf..ec8983c8c 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -758,11 +758,13 @@ subroutine med_fldList_GetFldNames(fields, fldnames, rc) !local variables type(med_fldList_entry_type), pointer :: newfld integer :: n + character(len=CL) :: msg ! ---------------------------------------------- if(present(rc)) rc = ESMF_SUCCESS if (.not. associated(fldnames) .or. .not. allocated(fields%mapindex)) then - call ESMF_LogWrite("med_fldList_GetFldNames: ERROR either fields or fldnames have not been allocate ", & + write(msg, *) "med_fldList_GetFldNames: ERROR either fields or fldnames have not been allocated. ",associated(fldnames), allocated(fields%mapindex) + call ESMF_LogWrite(msg) ESMF_LOGMSG_ERROR) if(present(rc)) rc = ESMF_FAILURE return From d9f141b748e43c4f317544fc7f9ed5fe7beb039d Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Mon, 28 Nov 2022 07:54:01 -0700 Subject: [PATCH 15/21] add a bit more debug info --- mediator/esmFlds.F90 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index ec8983c8c..7ebcb7edc 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -764,8 +764,7 @@ subroutine med_fldList_GetFldNames(fields, fldnames, rc) if(present(rc)) rc = ESMF_SUCCESS if (.not. associated(fldnames) .or. .not. allocated(fields%mapindex)) then write(msg, *) "med_fldList_GetFldNames: ERROR either fields or fldnames have not been allocated. ",associated(fldnames), allocated(fields%mapindex) - call ESMF_LogWrite(msg) - ESMF_LOGMSG_ERROR) + call ESMF_LogWrite(msg, ESMF_LOGMSG_ERROR) if(present(rc)) rc = ESMF_FAILURE return endif From b4c68ebbfc9a72e5fc25ae1a12d7fc26c836ecf2 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Mon, 28 Nov 2022 10:47:55 -0700 Subject: [PATCH 16/21] a fix to get the num field count correct --- mediator/esmFlds.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index 7ebcb7edc..0abbb4b47 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -737,7 +737,7 @@ integer function med_fldList_GetNumFlds(fldList) newfld => fldList%fields med_fldList_GetNumFlds = 0 - do while(associated(newfld)) + do while(allocated(newfld%mapindex)) med_fldList_GetNumFlds = med_fldList_GetNumFlds + 1 newfld => newfld%next end do From 628b134012bfa87e4340b3bf0fa25c85b99074aa Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Mon, 28 Nov 2022 13:04:09 -0700 Subject: [PATCH 17/21] add protection --- mediator/esmFlds.F90 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index 0abbb4b47..8d26594d1 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -737,8 +737,10 @@ integer function med_fldList_GetNumFlds(fldList) newfld => fldList%fields med_fldList_GetNumFlds = 0 - do while(allocated(newfld%mapindex)) - med_fldList_GetNumFlds = med_fldList_GetNumFlds + 1 + do while(associated(newfld)) + if(allocated(newfld%mapindex)) then + med_fldList_GetNumFlds = med_fldList_GetNumFlds + 1 + endif newfld => newfld%next end do From eb78801aecb8f481bdd3adb9d659c255429e2146 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Tue, 29 Nov 2022 14:12:06 -0700 Subject: [PATCH 18/21] response to git review --- cesm/nuopc_cap_share/nuopc_shr_methods.F90 | 1 - mediator/esmFlds.F90 | 109 +- mediator/esmFldsExchange_cesm_mod.F90 | 1942 ++++++++++---------- mediator/esmFldsExchange_hafs_mod.F90 | 56 +- mediator/esmFldsExchange_nems_mod.F90 | 260 +-- mediator/med.F90 | 2 +- mediator/med_phases_prep_atm_mod.F90 | 9 +- mediator/med_phases_prep_lnd_mod.F90 | 7 +- mediator/med_phases_prep_ocn_mod.F90 | 10 +- 9 files changed, 1212 insertions(+), 1184 deletions(-) diff --git a/cesm/nuopc_cap_share/nuopc_shr_methods.F90 b/cesm/nuopc_cap_share/nuopc_shr_methods.F90 index ad6adfee3..1a6c43c24 100644 --- a/cesm/nuopc_cap_share/nuopc_shr_methods.F90 +++ b/cesm/nuopc_cap_share/nuopc_shr_methods.F90 @@ -170,7 +170,6 @@ subroutine set_component_logging(gcomp, mastertask, logunit, shrlogunit, rc) endif shrlogunit = logunit - ! TODO: shr_file mod is deprecated and should be removed. call shr_file_setLogUnit (logunit) end subroutine set_component_logging diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index 8d26594d1..46de218f6 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -3,7 +3,7 @@ module esmflds use ESMF, only : ESMF_FINALIZE, ESMF_END_ABORT use med_kind_mod, only : CX=>SHR_KIND_CX, CS=>SHR_KIND_CS, CL=>SHR_KIND_CL, R8=>SHR_KIND_R8 - use med_internalstate_mod, only : ncomps, compname, compocn, compatm, compice, comprof + use med_internalstate_mod, only : compname, compocn, compatm, compice, comprof use med_internalstate_mod, only : mapfcopy, mapnames, mapunset use med_utils_mod , only : chkerr => med_utils_ChkErr implicit none @@ -15,16 +15,16 @@ module esmflds public :: med_fldList_init1 - public :: med_fldList_AddFldFrom - public :: med_fldList_AddMapFrom - public :: med_fldList_AddFldTo - public :: med_fldList_AddMrgTo + public :: med_fldList_addfld_from + public :: med_fldList_addmap_from + public :: med_fldList_addfld_to + public :: med_fldList_addmrg_to - public :: med_fldList_AddOcnalbFld - public :: med_fldList_AddocnalbMap + public :: med_fldList_addfld_ocnalb + public :: med_fldList_addmap_ocnalb - public :: med_fldList_AddaofluxFld - public :: med_fldList_AddaofluxMap + public :: med_fldList_addfld_aoflux + public :: med_fldList_addmap_aoflux private :: med_fldList_AddFld private :: med_fldList_AddMap @@ -54,8 +54,7 @@ module esmflds character(CS), allocatable :: mapnorm(:) character(CX), allocatable :: mapfile(:) - ! Merging fldsTo data - for mediator export fields - character(CS), allocatable :: merge_fields(:) + ! Merging fldsTo data - for mediator export field character(CS), allocatable :: merge_fields(:) character(CS), allocatable :: merge_types(:) character(CS), allocatable :: merge_fracnames(:) type(med_fldList_entry_type), pointer :: next => null() @@ -88,23 +87,30 @@ module esmflds contains !================================================================================ - subroutine med_fldlist_init1() + subroutine med_fldlist_init1(ncomps) + integer, intent(in) :: ncomps allocate(fldlistTo(ncomps)) allocate(fldlistFr(ncomps)) end subroutine med_fldlist_init1 + !================================================================================ + function med_fldList_GetaofluxFldList() result(fldList) type(med_fldList_type), pointer :: fldList fldList => fldListMed_aoflux end function Med_FldList_GetaofluxFldList + !================================================================================ + function med_fldList_GetocnalbFldList() result(fldList) type(med_fldList_type), pointer :: fldList fldList => fldListMed_ocnalb end function Med_FldList_GetocnalbFldList + !================================================================================ + function med_fldList_GetFldListFr(index) result(fldList) integer, intent(in) :: index type(med_fldList_type), pointer :: fldList @@ -112,6 +118,8 @@ function med_fldList_GetFldListFr(index) result(fldList) fldList => fldListFr(index) end function Med_FldList_GetFldListFr + !================================================================================ + function med_fldList_GetFldListTo(index) result(fldList) integer, intent(in) :: index type(med_fldList_type), pointer :: fldList @@ -119,41 +127,49 @@ function med_fldList_GetFldListTo(index) result(fldList) fldList => fldListTo(index) end function Med_FldList_GetFldListTo - !================================================================================ - subroutine med_fldList_AddFldFrom(index, stdname, shortname) + + subroutine med_fldList_addfld_from(index, stdname, shortname) integer, intent(in) :: index character(len=*) , intent(in) :: stdname character(len=*) , intent(in) , optional :: shortname call med_fldList_AddFld(FldListFr(index)%fields, stdname, shortname) - end subroutine med_fldList_AddFldFrom + end subroutine med_fldList_addfld_from + !================================================================================ - subroutine med_fldList_AddaofluxFld(stdname, shortname) + + subroutine med_fldList_addfld_aoflux(stdname, shortname) character(len=*) , intent(in) :: stdname character(len=*) , intent(in) , optional :: shortname call med_fldList_AddFld(fldListMed_aoflux%fields, stdname, shortname) - end subroutine med_fldList_AddaofluxFld + end subroutine med_fldList_addfld_aoflux + !================================================================================ - subroutine med_fldList_AddocnalbFld(stdname, shortname) + + subroutine med_fldList_addfld_ocnalb(stdname, shortname) character(len=*) , intent(in) :: stdname character(len=*) , intent(in) , optional :: shortname call med_fldList_AddFld(fldListMed_ocnalb%fields, stdname, shortname) - end subroutine med_fldList_AddocnalbFld + end subroutine med_fldList_addfld_ocnalb + !================================================================================ - subroutine med_fldList_AddFldTo(index, stdname, shortname) + + subroutine med_fldList_addfld_to(index, stdname, shortname) integer, intent(in) :: index character(len=*) , intent(in) :: stdname character(len=*) , intent(in) , optional :: shortname call med_fldList_AddFld(FldListTo(index)%fields, stdname, shortname) - end subroutine med_fldList_AddFldTo + end subroutine med_fldList_addfld_to + + !================================================================================ subroutine med_fldList_findName(fields, stdname, found, lastfld) ! on return if found == .true. lastfield is the field matching stdname @@ -174,6 +190,8 @@ subroutine med_fldList_findName(fields, stdname, found, lastfld) end subroutine med_fldList_findName + !================================================================================ + subroutine med_fldList_AddFld(fields, stdname, shortname) ! ---------------------------------------------- ! Add an entry to to the flds array @@ -200,8 +218,8 @@ subroutine med_fldList_AddFld(fields, stdname, shortname) call med_fldList_findName(fields, stdname, found, newfld) ! create new entry if fldname is not in original list - mapsize = ncomps - mrgsize = ncomps + mapsize = size(fldListTo) + mrgsize = size(fldListFrom) if (.not. found) then ! 1) allocate newfld to be size (one element larger than input flds) @@ -236,7 +254,7 @@ end subroutine med_fldList_AddFld !================================================================================ - subroutine med_fldList_AddMrgTo(index, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname, rc) + subroutine med_fldList_addmrg_to(index, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname, rc) ! ---------------------------------------------- ! Determine mrg entry or entries in flds aray @@ -253,7 +271,7 @@ subroutine med_fldList_AddMrgTo(index, fldname, mrg_from, mrg_fld, mrg_type, mrg call med_FldList_addMrg(fldListTo(index)%fields, fldname, mrg_from, mrg_fld, mrg_type, mrg_fracname) - end subroutine med_fldList_AddMrgTo + end subroutine med_fldList_addmrg_to !================================================================================ @@ -287,6 +305,8 @@ subroutine med_fldList_AddMrg(flds, fldname, mrg_from, mrg_fld, mrg_type, mrg_fr end subroutine med_fldList_AddMrg + !================================================================================ + function med_fldList_GetFld(fields, fldname, rc) result(newfld) use ESMF, only : ESMF_LogWrite, ESMF_END_ABORT, ESMF_LOGMSG_ERROR, ESMF_Finalize, ESMF_LOGMSG_INFO @@ -317,7 +337,7 @@ end function med_fldList_GetFld !================================================================================ - subroutine med_fldList_AddMapFrom(index, fldname, destcomp, maptype, mapnorm, mapfile) + subroutine med_fldList_addmap_from(index, fldname, destcomp, maptype, mapnorm, mapfile) integer, intent(in) :: index character(len=*) , intent(in) :: fldname integer , intent(in) :: destcomp @@ -327,11 +347,11 @@ subroutine med_fldList_AddMapFrom(index, fldname, destcomp, maptype, mapnorm, ma call med_fldList_AddMap(FldListFr(index)%fields, fldname, destcomp, maptype, mapnorm, mapfile) - end subroutine med_fldList_AddMapFrom + end subroutine med_fldList_addmap_from !================================================================================ - subroutine med_fldList_AddaofluxMap(fldname, destcomp, maptype, mapnorm, mapfile) + subroutine med_fldList_addmap_aoflux(fldname, destcomp, maptype, mapnorm, mapfile) character(len=*) , intent(in) :: fldname integer , intent(in) :: destcomp integer , intent(in) :: maptype @@ -340,11 +360,11 @@ subroutine med_fldList_AddaofluxMap(fldname, destcomp, maptype, mapnorm, mapfile call med_fldList_AddMap(fldlistmed_aoflux%fields, fldname, destcomp, maptype, mapnorm, mapfile) - end subroutine med_fldList_AddaofluxMap + end subroutine med_fldList_addmap_aoflux !================================================================================ - subroutine med_fldList_AddocnalbMap(fldname, destcomp, maptype, mapnorm, mapfile) + subroutine med_fldList_addmap_ocnalb(fldname, destcomp, maptype, mapnorm, mapfile) character(len=*) , intent(in) :: fldname integer , intent(in) :: destcomp integer , intent(in) :: maptype @@ -353,7 +373,7 @@ subroutine med_fldList_AddocnalbMap(fldname, destcomp, maptype, mapnorm, mapfile call med_fldList_AddMap(fldlistmed_ocnalb%fields, fldname, destcomp, maptype, mapnorm, mapfile) - end subroutine med_fldList_AddocnalbMap + end subroutine med_fldList_addmap_ocnalb !================================================================================ @@ -657,6 +677,8 @@ subroutine med_fldList_GetFldInfo(fldList, fldindex, compsrc, stdname, shortname end subroutine med_fldList_GetFldInfo + !================================================================================ + subroutine med_fld_GetFldInfo(newfld, compsrc, stdname, shortname, mapindex, mapFile, mapnorm, merge_fields, merge_type, merge_fracname, rc) ! ---------------------------------------------- ! Get field info @@ -715,17 +737,16 @@ subroutine med_fld_GetFldInfo(newfld, compsrc, stdname, shortname, mapindex, map endif if(present(rc)) rc=lrc + contains + subroutine med_fldList_compsrcerror(rc) + integer, intent(out) :: rc + call ESMF_LogWrite("In med_fld_GetFldInfo a field requiring compsrc was requested but compsrc was not provided. ", & + ESMF_LOGMSG_ERROR) + rc = ESMF_FAILURE + return + end subroutine med_fldList_compsrcerror end subroutine med_fld_GetFldInfo - subroutine med_fldList_compsrcerror(rc) - integer, intent(out) :: rc - call ESMF_LogWrite("In med_fld_GetFldInfo a field requiring compsrc was requested but compsrc was not provided. ", & - ESMF_LOGMSG_ERROR) - rc = ESMF_FAILURE - return - end subroutine med_fldList_compsrcerror - - !================================================================================ integer function med_fldList_GetNumFlds(fldList) @@ -812,9 +833,9 @@ subroutine med_fldList_Document_Mapping(logunit, med_coupling_active) !--------------------------------------- ! Loop over src components - do nsrc = 1,ncomps + do nsrc = 1,size(fldListFr) ! Loop over all possible destination components for each src component - do ndst = 1,ncomps + do ndst = 1,size(fldListTo) if (nsrc /= ndst .and. med_coupling_active(nsrc,ndst)) then ! Write all the mappings for fields from the src to the destination component write(logunit,*)' ' @@ -910,7 +931,7 @@ subroutine med_fldList_Document_Merging(logunit, med_coupling_active) write(logunit,*) ! Loop over destination components - do ndst = 1,ncomps + do ndst = 1,size(fldListTo) dst_comp = trim(compname(ndst)) prefix = '(merge_to_'//trim(dst_comp)//')' @@ -922,7 +943,7 @@ subroutine med_fldList_Document_Merging(logunit, med_coupling_active) ! Loop over all possible source components for destination component field mrgstr = ' ' - do nsrc = 1,ncomps + do nsrc = 1,size(fldListFr) if (nsrc /= ndst .and. med_coupling_active(nsrc,ndst)) then src_comp = compname(nsrc) diff --git a/mediator/esmFldsExchange_cesm_mod.F90 b/mediator/esmFldsExchange_cesm_mod.F90 index 1be6c3cf8..149c7791d 100644 --- a/mediator/esmFldsExchange_cesm_mod.F90 +++ b/mediator/esmFldsExchange_cesm_mod.F90 @@ -78,15 +78,15 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) use med_internalstate_mod , only : mapfcopy, mapnstod, mapnstod_consd, mapnstod_consf use med_internalstate_mod , only : coupling_mode use med_internalstate_mod , only : map_glc2ocn_ice, map_glc2ocn_liq, map_rof2ocn_ice, map_rof2ocn_liq - use esmFlds , only : addocnalbfld => med_fldList_AddocnalbFld - use esmFlds , only : addaofluxfld => med_fldList_AddaofluxFld - use esmFlds , only : addaofluxMap => med_fldList_AddaofluxMap - use esmFlds , only : addocnalbMap => med_fldList_AddocnalbMap + use esmFlds , only : addfld_ocnalb => med_fldList_addfld_ocnalb + use esmFlds , only : addfld_aoflux => med_fldList_addfld_aoflux + use esmFlds , only : addmap_aoflux => med_fldList_addmap_aoflux + use esmFlds , only : addmap_ocnalb => med_fldList_addmap_ocnalb - use esmFlds , only : addfldTo => med_fldList_AddFldTo - use esmFlds , only : addfldFrom => med_fldList_AddFldFrom - use esmFlds , only : addmapFrom => med_fldList_AddMapFrom - use esmFlds , only : addmrgTo => med_fldList_AddMrgTo + use esmFlds , only : addfld_to => med_fldList_addfld_to + use esmFlds , only : addfld_from => med_fldList_addfld_from + use esmFlds , only : addmap_from => med_fldList_addmap_from + use esmFlds , only : addmrg_to => med_fldList_addmrg_to ! input/output parameters: type(ESMF_GridComp) :: gcomp @@ -243,8 +243,8 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) call NUOPC_CompAttributeGet(gcomp, name="ScalarFieldName", value=cvalue, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return do n = 1,ncomps - call addfldFrom(n, trim(cvalue)) - call addfldTo(n, trim(cvalue)) + call addfld_from(n, trim(cvalue)) + call addfld_to(n, trim(cvalue)) end do end if @@ -256,49 +256,49 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to med: masks from components !---------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(complnd, 'Sl_lfrin') - call addfldFrom(compocn, 'So_omask') - call addfldFrom(compice, 'Si_imask') + call addfld_from(complnd, 'Sl_lfrin') + call addfld_from(compocn, 'So_omask') + call addfld_from(compice, 'Si_imask') do ns = 1,is_local%wrap%num_icesheets - call addfldFrom(compglc(ns), 'Sg_area') + call addfld_from(compglc(ns), 'Sg_area') end do else - call addmapFrom(compocn, 'So_omask', compice, mapfcopy, 'unset', 'unset') + call addmap_from(compocn, 'So_omask', compice, mapfcopy, 'unset', 'unset') end if ! --------------------------------------------------------------------- ! to med: atm and ocn fields required for atm/ocn flux calculation' ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_u') - call addFldFrom(compatm, 'Sa_v') - call addFldFrom(compatm, 'Sa_z') - call addFldFrom(compatm, 'Sa_tbot') - call addFldFrom(compatm, 'Sa_pbot') - call addFldFrom(compatm, 'Sa_shum') - call addFldFrom(compatm, 'Sa_ptem') - call addFldFrom(compatm, 'Sa_dens') + call addfld_from(compatm, 'Sa_u') + call addfld_from(compatm, 'Sa_v') + call addfld_from(compatm, 'Sa_z') + call addfld_from(compatm, 'Sa_tbot') + call addfld_from(compatm, 'Sa_pbot') + call addfld_from(compatm, 'Sa_shum') + call addfld_from(compatm, 'Sa_ptem') + call addfld_from(compatm, 'Sa_dens') if (flds_wiso) then - call addFldFrom(compatm, 'Sa_shum_wiso') + call addfld_from(compatm, 'Sa_shum_wiso') end if else if (is_local%wrap%aoflux_grid == 'ogrid') then if (mapuv_with_cart3d) then - call addmapFrom(compatm, 'Sa_u' , compocn, mappatch_uv3d, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Sa_v' , compocn, mappatch_uv3d, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_u' , compocn, mappatch_uv3d, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_v' , compocn, mappatch_uv3d, 'one', atm2ocn_map) else - call addMapFrom(compatm, 'Sa_u' , compocn, mappatch, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Sa_v' , compocn, mappatch, 'one', atm2ocn_map) - end if - call addMapFrom(compatm, 'Sa_z' , compocn, mapbilnr, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Sa_tbot', compocn, mapbilnr, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Sa_pbot', compocn, mapbilnr, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Sa_shum', compocn, mapbilnr, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Sa_ptem', compocn, mapbilnr, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Sa_dens', compocn, mapbilnr, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Sa_pslv', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_u' , compocn, mappatch, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_v' , compocn, mappatch, 'one', atm2ocn_map) + end if + call addmap_from(compatm, 'Sa_z' , compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_tbot', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_pbot', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_shum', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_ptem', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_dens', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_pslv', compocn, mapbilnr, 'one', atm2ocn_map) if (fldchk(is_local%wrap%FBImp(compatm,compatm), 'Sa_shum_wiso', rc=rc)) then - call addMapFrom(compatm, 'Sa_shum_wiso', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_shum_wiso', compocn, mapbilnr, 'one', atm2ocn_map) end if end if end if @@ -307,16 +307,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to med: swnet fluxes used for budget calculation ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Fall_swnet') - call addfldFrom(compice, 'Faii_swnet') - call addFldFrom(compatm, 'Faxa_swnet') + call addfld_from(complnd, 'Fall_swnet') + call addfld_from(compice, 'Faii_swnet') + call addfld_from(compatm, 'Faxa_swnet') else if (fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swnet', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swnet', compice, mapconsf, 'one' , atm2ice_map) - call addMapFrom(compatm, 'Faxa_swnet', compocn, mapconsf, 'one' , atm2ocn_map) + call addmap_from(compatm, 'Faxa_swnet', compice, mapconsf, 'one' , atm2ice_map) + call addmap_from(compatm, 'Faxa_swnet', compocn, mapconsf, 'one' , atm2ocn_map) end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_swnet', rc=rc)) then - call addMapFrom(compice, 'Faii_swnet', compocn, mapfcopy, 'unset', 'unset') + call addmap_from(compice, 'Faii_swnet', compocn, mapfcopy, 'unset', 'unset') end if end if @@ -328,26 +328,26 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: height at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_z') - call addfldTo(complnd, 'Sa_z') + call addfld_from(compatm, 'Sa_z') + call addfld_to(complnd, 'Sa_z') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_z', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_z', rc=rc)) then - call addMapFrom(compatm, 'Sa_z', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Sa_z', mrg_from=compatm, mrg_fld='Sa_z', mrg_type='copy') + call addmap_from(compatm, 'Sa_z', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Sa_z', mrg_from=compatm, mrg_fld='Sa_z', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: surface height from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_topo') - call addfldTo(complnd, 'Sa_topo') + call addfld_from(compatm, 'Sa_topo') + call addfld_to(complnd, 'Sa_topo') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_topo', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_topo', rc=rc)) then - call addMapFrom(compatm, 'Sa_topo', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Sa_topo', mrg_from=compatm, mrg_fld='Sa_topo', mrg_type='copy') + call addmap_from(compatm, 'Sa_topo', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Sa_topo', mrg_from=compatm, mrg_fld='Sa_topo', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -355,99 +355,99 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: meridional wind at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_u') - call addfldTo(complnd, 'Sa_u') + call addfld_from(compatm, 'Sa_u') + call addfld_to(complnd, 'Sa_u') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_u', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_u', rc=rc)) then - call addMapFrom(compatm, 'Sa_u', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') + call addmap_from(compatm, 'Sa_u', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_v') - call addfldTo(complnd, 'Sa_v') + call addfld_from(compatm, 'Sa_v') + call addfld_to(complnd, 'Sa_v') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_v', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_v', rc=rc)) then - call addMapFrom(compatm, 'Sa_v', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') + call addmap_from(compatm, 'Sa_v', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: pressure at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_pbot') - call addfldTo(complnd, 'Sa_pbot') + call addfld_from(compatm, 'Sa_pbot') + call addfld_to(complnd, 'Sa_pbot') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_pbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_pbot', rc=rc)) then - call addMapFrom(compatm, 'Sa_pbot', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Sa_pbot', mrg_from=compatm, mrg_fld='Sa_pbot', mrg_type='copy') + call addmap_from(compatm, 'Sa_pbot', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Sa_pbot', mrg_from=compatm, mrg_fld='Sa_pbot', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: o3 at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_o3') - call addfldTo(complnd, 'Sa_o3') + call addfld_from(compatm, 'Sa_o3') + call addfld_to(complnd, '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 addMapFrom(compatm, 'Sa_o3', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Sa_o3', mrg_from=compatm, mrg_fld='Sa_o3', mrg_type='copy') + call addmap_from(compatm, 'Sa_o3', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg_to(complnd, '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 - call addFldFrom(compatm, 'Sa_tbot') - call addfldTo(complnd, 'Sa_tbot') + call addfld_from(compatm, 'Sa_tbot') + call addfld_to(complnd, 'Sa_tbot') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_tbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_tbot', rc=rc)) then - call addMapFrom(compatm, 'Sa_tbot', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') + call addmap_from(compatm, 'Sa_tbot', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: potential temperature at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_ptem') - call addfldTo(complnd, 'Sa_ptem') + call addfld_from(compatm, 'Sa_ptem') + call addfld_to(complnd, 'Sa_ptem') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_ptem', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_ptem', rc=rc)) then - call addMapFrom(compatm, 'Sa_ptem', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Sa_ptem', mrg_from=compatm, mrg_fld='Sa_ptem', mrg_type='copy') + call addmap_from(compatm, 'Sa_ptem', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Sa_ptem', mrg_from=compatm, mrg_fld='Sa_ptem', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: specific humidity at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_shum') - call addfldTo(complnd, 'Sa_shum') + call addfld_from(compatm, 'Sa_shum') + call addfld_to(complnd, 'Sa_shum') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_shum', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_shum', rc=rc)) then - call addMapFrom(compatm, 'Sa_shum', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Sa_shum', mrg_from=compatm, mrg_fld='Sa_shum', mrg_type='copy') + call addmap_from(compatm, 'Sa_shum', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Sa_shum', mrg_from=compatm, mrg_fld='Sa_shum', mrg_type='copy') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_shum_wiso') - call addfldTo(complnd, 'Sa_shum_wiso') + call addfld_from(compatm, 'Sa_shum_wiso') + call addfld_to(complnd, 'Sa_shum_wiso') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Sa_shum_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_shum_wiso', rc=rc)) then - call addMapFrom(compatm, 'Sa_shum_wiso', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Sa_shum_wiso', mrg_from=compatm, mrg_fld='Sa_shum_wiso', mrg_type='copy') + call addmap_from(compatm, 'Sa_shum_wiso', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Sa_shum_wiso', mrg_from=compatm, mrg_fld='Sa_shum_wiso', mrg_type='copy') end if end if end if @@ -455,59 +455,59 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: convective and large scale precipitation rate water equivalent from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_rainc') - call addfldTo(complnd, 'Faxa_rainc') + call addfld_from(compatm, 'Faxa_rainc') + call addfld_to(complnd, 'Faxa_rainc') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_rainc', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_rainc', rc=rc)) then - call addMapFrom(compatm, 'Faxa_rainc', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_rainc', mrg_from=compatm, mrg_fld='Faxa_rainc', mrg_type='copy') + call addmap_from(compatm, 'Faxa_rainc', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_rainc', mrg_from=compatm, mrg_fld='Faxa_rainc', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_rainl') - call addfldTo(complnd, 'Faxa_rainl') + call addfld_from(compatm, 'Faxa_rainl') + call addfld_to(complnd, 'Faxa_rainl') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_rainl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_rainl', rc=rc)) then - call addMapFrom(compatm, 'Faxa_rainl', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_rainl', mrg_from=compatm, mrg_fld='Faxa_rainl', mrg_type='copy') + call addmap_from(compatm, 'Faxa_rainl', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_rainl', mrg_from=compatm, mrg_fld='Faxa_rainl', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: convective and large-scale (stable) snow rate from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_snowc') - call addfldTo(complnd, 'Faxa_snowc') + call addfld_from(compatm, 'Faxa_snowc') + call addfld_to(complnd, 'Faxa_snowc') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_snowc', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_snowc', rc=rc)) then - call addMapFrom(compatm, 'Faxa_snowc', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_snowc', mrg_from=compatm, mrg_fld='Faxa_snowc', mrg_type='copy') + call addmap_from(compatm, 'Faxa_snowc', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_snowc', mrg_from=compatm, mrg_fld='Faxa_snowc', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_snowl') - call addfldTo(complnd, 'Faxa_snowl') + call addfld_from(compatm, 'Faxa_snowl') + call addfld_to(complnd, 'Faxa_snowl') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_snowl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_snowl', rc=rc)) then - call addMapFrom(compatm, 'Faxa_snowl', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_snowl', mrg_from=compatm, mrg_fld='Faxa_snowl', mrg_type='copy') + call addmap_from(compatm, 'Faxa_snowl', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_snowl', mrg_from=compatm, mrg_fld='Faxa_snowl', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: downward longwave heat flux from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_lwdn') - call addfldTo(complnd, 'Faxa_lwdn') + call addfld_from(compatm, 'Faxa_lwdn') + call addfld_to(complnd, 'Faxa_lwdn') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_lwdn', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_lwdn', rc=rc)) then - call addMapFrom(compatm, 'Faxa_lwdn', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_lwdn', mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy') + call addmap_from(compatm, 'Faxa_lwdn', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_lwdn', mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -517,53 +517,53 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: downward Diffuse visible incident solar radiation from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swndr') - call addfldTo(complnd, 'Faxa_swndr') + call addfld_from(compatm, 'Faxa_swndr') + call addfld_to(complnd, 'Faxa_swndr') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_swndr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_swndr', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swndr', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_swndr', mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy') + call addmap_from(compatm, 'Faxa_swndr', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_swndr', mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swvdr') - call addfldTo(complnd, 'Faxa_swvdr') + call addfld_from(compatm, 'Faxa_swvdr') + call addfld_to(complnd, 'Faxa_swvdr') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_swvdr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_swvdr', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swvdr', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_swvdr', mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy') + call addmap_from(compatm, 'Faxa_swvdr', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_swvdr', mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swndf') - call addfldTo(complnd, 'Faxa_swndf') + call addfld_from(compatm, 'Faxa_swndf') + call addfld_to(complnd, 'Faxa_swndf') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_swndf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_swndf', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swndf', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_swndf', mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy') + call addmap_from(compatm, 'Faxa_swndf', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_swndf', mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swvdf') - call addfldTo(complnd, 'Faxa_swvdf') + call addfld_from(compatm, 'Faxa_swvdf') + call addfld_to(complnd, 'Faxa_swvdf') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_swvdf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_swvdf', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swvdf', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_swvdf', mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy') + call addmap_from(compatm, 'Faxa_swvdf', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_swvdf', mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_bcph') - call addfldTo(complnd, 'Faxa_bcph') + call addfld_from(compatm, 'Faxa_bcph') + call addfld_to(complnd, 'Faxa_bcph') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_bcph', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_bcph', rc=rc)) then - call addMapFrom(compatm, 'Faxa_bcph', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_bcph', mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy') + call addmap_from(compatm, 'Faxa_bcph', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_bcph', mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -577,13 +577,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! - hydrophylic organic carbon wet deposition flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_ocph') - call addfldTo(complnd, 'Faxa_ocph') + call addfld_from(compatm, 'Faxa_ocph') + call addfld_to(complnd, 'Faxa_ocph') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_ocph', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_ocph', rc=rc)) then - call addMapFrom(compatm, 'Faxa_ocph', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_ocph', mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy') + call addmap_from(compatm, 'Faxa_ocph', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_ocph', mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -591,36 +591,36 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: dust dry deposition flux (sizes 1-4) from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_dstwet') - call addfldTo(complnd, 'Faxa_dstwet') + call addfld_from(compatm, 'Faxa_dstwet') + call addfld_to(complnd, 'Faxa_dstwet') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_dstwet', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_dstwet', rc=rc)) then - call addMapFrom(compatm, 'Faxa_dstwet', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_dstwet', mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy') + call addmap_from(compatm, 'Faxa_dstwet', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_dstwet', mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_dstdry') - call addfldTo(complnd, 'Faxa_dstdry') + call addfld_from(compatm, 'Faxa_dstdry') + call addfld_to(complnd, 'Faxa_dstdry') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_dstdry', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_dstdry', rc=rc)) then - call addMapFrom(compatm, 'Faxa_dstdry', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_dstdry', mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy') + call addmap_from(compatm, 'Faxa_dstdry', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_dstdry', mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to lnd: nitrogen deposition fields from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_ndep') - call addfldTo(complnd, 'Faxa_ndep') + call addfld_from(compatm, 'Faxa_ndep') + call addfld_to(complnd, 'Faxa_ndep') else if ( fldchk(is_local%wrap%FBexp(complnd) , 'Faxa_ndep', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Faxa_ndep', rc=rc)) then - call addMapFrom(compatm, 'Faxa_ndep', complnd, mapconsf, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Faxa_ndep', mrg_from=compatm, mrg_fld='Faxa_ndep', mrg_type='copy') + call addmap_from(compatm, 'Faxa_ndep', complnd, mapconsf, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Faxa_ndep', mrg_from=compatm, mrg_fld='Faxa_ndep', mrg_type='copy') end if end if @@ -632,87 +632,87 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: tributary channel depth ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(comprof, 'Flrr_volr') - call addfldTo(complnd, 'Flrr_volr') + call addfld_from(comprof, 'Flrr_volr') + call addfld_to(complnd, 'Flrr_volr') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_volr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_volr', rc=rc)) then - call addmapFrom(comprof, 'Flrr_volr', complnd, mapconsf, 'one', rof2lnd_map) - call addmrgTo(complnd, 'Flrr_volr', mrg_from=comprof, mrg_fld='Flrr_volr', mrg_type='copy') + call addmap_from(comprof, 'Flrr_volr', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg_to(complnd, 'Flrr_volr', mrg_from=comprof, mrg_fld='Flrr_volr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfldFrom(comprof, 'Flrr_volrmch') - call addfldTo(complnd, 'Flrr_volrmch') + call addfld_from(comprof, 'Flrr_volrmch') + call addfld_to(complnd, 'Flrr_volrmch') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_volrmch', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_volrmch', rc=rc)) then - call addmapFrom(comprof, 'Flrr_volrmch', complnd, mapconsf, 'one', rof2lnd_map) - call addmrgTo(complnd, 'Flrr_volrmch', mrg_from=comprof, mrg_fld='Flrr_volrmch', mrg_type='copy') + call addmap_from(comprof, 'Flrr_volrmch', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg_to(complnd, 'Flrr_volrmch', mrg_from=comprof, mrg_fld='Flrr_volrmch', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfldFrom(comprof, 'Flrr_flood') - call addfldTo(complnd, 'Flrr_flood') + call addfld_from(comprof, 'Flrr_flood') + call addfld_to(complnd, 'Flrr_flood') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_flood', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_flood', rc=rc)) then - call addmapFrom(comprof, 'Flrr_flood', complnd, mapconsf, 'one', rof2lnd_map) - call addmrgTo(complnd, 'Flrr_flood', mrg_from=comprof, mrg_fld='Flrr_flood', mrg_type='copy') + call addmap_from(comprof, 'Flrr_flood', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg_to(complnd, 'Flrr_flood', mrg_from=comprof, mrg_fld='Flrr_flood', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfldFrom(comprof, 'Sr_tdepth') - call addfldTo(complnd, 'Sr_tdepth') + call addfld_from(comprof, 'Sr_tdepth') + call addfld_to(complnd, 'Sr_tdepth') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Sr_tdepth', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Sr_tdepth', rc=rc)) then - call addmapFrom(comprof, 'Sr_tdepth', complnd, mapconsf, 'one', rof2lnd_map) - call addmrgTo(complnd, 'Sr_tdepth', mrg_from=comprof, mrg_fld='Sr_tdepth', mrg_type='copy') + call addmap_from(comprof, 'Sr_tdepth', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg_to(complnd, 'Sr_tdepth', mrg_from=comprof, mrg_fld='Sr_tdepth', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfldFrom(comprof, 'Sr_tdepth_max') - call addfldTo(complnd, 'Sr_tdepth_max') + call addfld_from(comprof, 'Sr_tdepth_max') + call addfld_to(complnd, 'Sr_tdepth_max') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Sr_tdepth_max', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Sr_tdepth_max', rc=rc)) then - call addmapFrom(comprof, 'Sr_tdepth_max', complnd, mapconsf, 'one', rof2lnd_map) - call addmrgTo(complnd, 'Sr_tdepth_max', mrg_from=comprof, mrg_fld='Sr_tdepth_max', mrg_type='copy') + call addmap_from(comprof, 'Sr_tdepth_max', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg_to(complnd, 'Sr_tdepth_max', mrg_from=comprof, mrg_fld='Sr_tdepth_max', mrg_type='copy') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfldFrom(comprof, 'Flrr_volr_wiso') - call addfldTo(complnd, 'Flrr_volr_wiso') + call addfld_from(comprof, 'Flrr_volr_wiso') + call addfld_to(complnd, 'Flrr_volr_wiso') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_volr_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_volr_wiso', rc=rc)) then - call addmapFrom(comprof, 'Flrr_volr_wiso', complnd, mapconsf, 'one', rof2lnd_map) - call addmrgTo(complnd, 'Flrr_volr_wiso', & + call addmap_from(comprof, 'Flrr_volr_wiso', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg_to(complnd, 'Flrr_volr_wiso', & mrg_from=comprof, mrg_fld='Flrr_volr_wiso', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfldFrom(comprof, 'Flrr_volrmch_wiso') - call addfldTo(complnd, 'Flrr_volrmch_wiso') + call addfld_from(comprof, 'Flrr_volrmch_wiso') + call addfld_to(complnd, 'Flrr_volrmch_wiso') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_volrmch_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_volrmch_wiso', rc=rc)) then - call addmapFrom(comprof, 'Flrr_volrmch_wiso', complnd, mapconsf, 'one', rof2lnd_map) - call addmrgTo(complnd, 'Flrr_volrmch_wiso', & + call addmap_from(comprof, 'Flrr_volrmch_wiso', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg_to(complnd, 'Flrr_volrmch_wiso', & mrg_from=comprof, mrg_fld='Flrr_volrmch_wiso', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfldFrom(comprof, 'Flrr_flood_wiso') - call addfldTo(complnd, 'Flrr_flood_wiso') + call addfld_from(comprof, 'Flrr_flood_wiso') + call addfld_to(complnd, 'Flrr_flood_wiso') else if ( fldchk(is_local%wrap%FBExp(complnd) , 'Flrr_flood_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_flood_wiso', rc=rc)) then - call addmapFrom(comprof, 'Flrr_flood_wiso', complnd, mapconsf, 'one', rof2lnd_map) - call addmrgTo(complnd, 'Flrr_flood_wiso', & + call addmap_from(comprof, 'Flrr_flood_wiso', complnd, mapconsf, 'one', rof2lnd_map) + call addmrg_to(complnd, 'Flrr_flood_wiso', & mrg_from=comprof, mrg_fld='Flrr_flood_wiso', mrg_type='copy') end if end if @@ -730,24 +730,24 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (phase == 'advertise') then do ns = 1, is_local%wrap%num_icesheets - call addfldFrom(compglc(ns), 'Sg_icemask') ! ice sheet grid coverage - call addfldFrom(compglc(ns), 'Sg_icemask_coupled_fluxes') - call addfldFrom(compglc(ns), 'Sg_ice_covered') ! fraction of glacier area - call addfldFrom(compglc(ns), 'Sg_topo') ! surface height of glacer - call addfldFrom(compglc(ns), 'Flgg_hflx') ! downward heat flux from glacier interior + call addfld_from(compglc(ns), 'Sg_icemask') ! ice sheet grid coverage + call addfld_from(compglc(ns), 'Sg_icemask_coupled_fluxes') + call addfld_from(compglc(ns), 'Sg_ice_covered') ! fraction of glacier area + call addfld_from(compglc(ns), 'Sg_topo') ! surface height of glacer + call addfld_from(compglc(ns), 'Flgg_hflx') ! downward heat flux from glacier interior end do - call addfldTo(complnd, 'Sg_icemask') - call addfldTo(complnd, 'Sg_icemask_coupled_fluxes') - call addfldTo(complnd, 'Sg_ice_covered_elev') - call addfldTo(complnd, 'Sg_topo_elev') - call addfldTo(complnd, 'Flgg_hflx_elev') + call addfld_to(complnd, 'Sg_icemask') + call addfld_to(complnd, 'Sg_icemask_coupled_fluxes') + call addfld_to(complnd, 'Sg_ice_covered_elev') + call addfld_to(complnd, 'Sg_topo_elev') + call addfld_to(complnd, 'Flgg_hflx_elev') else ! custom merge in med_phases_prep_lnd for Sg_icemask and Sg_icemask_coupled_fluxes ! custom map merge in med_phases_prep_lnd for Sg_ice_covered_elev, Sg_topo_elev and Flgg_hflx_elev if ( fldchk(is_local%wrap%FBExp(complnd), 'Sg_icemask', rc=rc)) then do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Sg_icemask', rc=rc)) then - call addmapFrom(compglc(ns), 'Sg_icemask', & + call addmap_from(compglc(ns), 'Sg_icemask', & complnd, mapconsd, 'one', 'unset') end if end do @@ -755,7 +755,7 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if ( fldchk(is_local%wrap%FBExp(complnd), 'Sg_icemask_coupled_fluxes', rc=rc)) then do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Sg_icemask_coupled_fluxes', rc=rc)) then - call addmapFrom(compglc(ns), 'Sg_icemask_coupled_fluxes', & + call addmap_from(compglc(ns), 'Sg_icemask_coupled_fluxes', & complnd, mapconsd, 'one', 'unset') end if end do @@ -771,9 +771,9 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !---------------------------------------------------------- if (phase == 'advertise') then ! the following are computed in med_phases_prep_atm - call addfldTo(compatm, 'Sl_lfrac') - call addfldTo(compatm, 'Si_ifrac') - call addfldTo(compatm, 'So_ofrac') + call addfld_to(compatm, 'Sl_lfrac') + call addfld_to(compatm, 'Si_ifrac') + call addfld_to(compatm, 'So_ofrac') end if ! --------------------------------------------------------------------- @@ -783,108 +783,108 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: merged diffuse albedo (near-infrared radiation) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Sl_avsdr') - call addfldFrom(compice, 'Si_avsdr') - call addocnalbFld('So_avsdr') - call addfldTo(compatm, 'Sx_avsdr') + call addfld_from(complnd, 'Sl_avsdr') + call addfld_from(compice, 'Si_avsdr') + call addfld_ocnalb('So_avsdr') + call addfld_to(compatm, 'Sx_avsdr') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_avsdr', rc=rc)) then ! Note that for aqua-plant there will be no import from complnd or compice - and the ! current logic below takes care of this. if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_avsdr', rc=rc)) then - call addmapFrom(complnd, 'Sl_avsdr', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm, 'Sx_avsdr', & + call addmap_from(complnd, 'Sl_avsdr', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm, 'Sx_avsdr', & mrg_from=complnd, mrg_fld='Sl_avsdr', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_avsdr', rc=rc)) then - call addMapFrom(compice, 'Si_avsdr', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm, 'Sx_avsdr', & + call addmap_from(compice, 'Si_avsdr', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm, 'Sx_avsdr', & mrg_from=compice, mrg_fld='Si_avsdr', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_avsdr', rc=rc)) then - call addocnalbmap( 'So_avsdr', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrgTo(compatm, 'Sx_avsdr', & + call addmap_ocnalb( 'So_avsdr', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrg_to(compatm, 'Sx_avsdr', & mrg_from=compmed, mrg_fld='So_avsdr', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addFldFrom(complnd, 'Sl_avsdf') - call addfldFrom(compice, 'Si_avsdf') - call addocnalbFld( 'So_avsdf') - call addfldTo(compatm, 'Sx_avsdf') + call addfld_from(complnd, 'Sl_avsdf') + call addfld_from(compice, 'Si_avsdf') + call addfld_ocnalb( 'So_avsdf') + call addfld_to(compatm, 'Sx_avsdf') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_avsdf', rc=rc)) then ! Note that for aqua-plant there will be no import from complnd or compice - and the ! current logic below takes care of this. if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_avsdf', rc=rc)) then - call addmapFrom(complnd, 'Sl_avsdf', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm, 'Sx_avsdf', & + call addmap_from(complnd, 'Sl_avsdf', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm, 'Sx_avsdf', & mrg_from=complnd, mrg_fld='Sl_avsdf', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_avsdf', rc=rc)) then - call addMapFrom(compice, 'Si_avsdf', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm, 'Sx_avsdf', & + call addmap_from(compice, 'Si_avsdf', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm, 'Sx_avsdf', & mrg_from=compice, mrg_fld='Si_avsdf', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_avsdf', rc=rc)) then - call addocnalbmap( 'So_avsdf', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrgTo(compatm, 'Sx_avsdf', & + call addmap_ocnalb( 'So_avsdf', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrg_to(compatm, 'Sx_avsdf', & mrg_from=compmed, mrg_fld='So_avsdf', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addFldFrom(complnd, 'Sl_anidr') - call addfldFrom(compice, 'Si_anidr') - call addocnalbFld( 'So_anidr') - call addfldTo(compatm, 'Sx_anidr') + call addfld_from(complnd, 'Sl_anidr') + call addfld_from(compice, 'Si_anidr') + call addfld_ocnalb( 'So_anidr') + call addfld_to(compatm, 'Sx_anidr') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_anidr', rc=rc)) then ! Note that for aqua-plant there will be no import from complnd or compice - and the ! current logic below takes care of this. if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_anidr', rc=rc)) then - call addmapFrom(complnd, 'Sl_anidr', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm, 'Sx_anidr', & + call addmap_from(complnd, 'Sl_anidr', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm, 'Sx_anidr', & mrg_from=complnd, mrg_fld='Sl_anidr', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_anidr', rc=rc)) then - call addMapFrom(compice, 'Si_anidr', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm, 'Sx_anidr', & + call addmap_from(compice, 'Si_anidr', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm, 'Sx_anidr', & mrg_from=compice, mrg_fld='Si_anidr', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_anidr', rc=rc)) then - call addocnalbmap( 'So_anidr', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrgTo(compatm, 'Sx_anidr', & + call addmap_ocnalb( 'So_anidr', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrg_to(compatm, 'Sx_anidr', & mrg_from=compmed, mrg_fld='So_anidr', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addFldFrom(complnd, 'Sl_anidf') - call addfldFrom(compice, 'Si_anidf') - call addocnalbFld( 'So_anidf') - call addfldTo(compatm, 'Sx_anidf') + call addfld_from(complnd, 'Sl_anidf') + call addfld_from(compice, 'Si_anidf') + call addfld_ocnalb( 'So_anidf') + call addfld_to(compatm, 'Sx_anidf') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_anidf', rc=rc)) then ! Note that for aqua-plant there will be no import from complnd or compice - and the ! current logic below takes care of this. if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_anidf', rc=rc)) then - call addmapFrom(complnd, 'Sl_anidf', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm, 'Sx_anidf', & + call addmap_from(complnd, 'Sl_anidf', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm, 'Sx_anidf', & mrg_from=complnd, mrg_fld='Sl_anidf', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_anidf', rc=rc)) then - call addMapFrom(compice, 'Si_anidf', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm, 'Sx_anidf', & + call addmap_from(compice, 'Si_anidf', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm, 'Sx_anidf', & mrg_from=compice, mrg_fld='Si_anidf', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_ocnalb_a, 'So_anidf', rc=rc)) then - call addocnalbmap( 'So_anidf', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrgTo(compatm, 'Sx_anidf', & + call addmap_ocnalb( 'So_anidf', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrg_to(compatm, 'Sx_anidf', & mrg_from=compmed, mrg_fld='So_anidf', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -898,81 +898,81 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd , 'Sl_tref') - call addfldFrom(compice , 'Si_tref') - call addaofluxFld('So_tref') - call addfldTo(compatm , 'Sx_tref') + call addfld_from(complnd , 'Sl_tref') + call addfld_from(compice , 'Si_tref') + call addfld_aoflux('So_tref') + call addfld_to(compatm , 'Sx_tref') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_tref', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_tref', rc=rc)) then - call addmapFrom(complnd , 'Sl_tref', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Sx_tref', & + call addmap_from(complnd , 'Sl_tref', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Sx_tref', & mrg_from=complnd, mrg_fld='Sl_tref', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_tref', rc=rc)) then - call addMapFrom(compice , 'Si_tref', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Sx_tref', & + call addmap_from(compice , 'Si_tref', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Sx_tref', & mrg_from=compice, mrg_fld='Si_tref', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_tref', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('So_tref', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('So_tref', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Sx_tref', & + call addmrg_to(compatm , 'Sx_tref', & mrg_from=compmed, mrg_fld='So_tref', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addFldFrom(complnd , 'Sl_u10') - call addfldFrom(compice , 'Si_u10') - call addaofluxFld('So_u10') - call addfldTo(compatm , 'Sx_u10') + call addfld_from(complnd , 'Sl_u10') + call addfld_from(compice , 'Si_u10') + call addfld_aoflux('So_u10') + call addfld_to(compatm , 'Sx_u10') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_u10', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_u10', rc=rc)) then - call addmapFrom(complnd , 'Sl_u10', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Sx_u10', & + call addmap_from(complnd , 'Sl_u10', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Sx_u10', & mrg_from=complnd, mrg_fld='Sl_u10', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_u10', rc=rc)) then - call addMapFrom(compice , 'Si_u10', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Sx_u10', & + call addmap_from(compice , 'Si_u10', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Sx_u10', & mrg_from=compice, mrg_fld='Si_u10', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_u10', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('So_u10', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('So_u10', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Sx_u10', & + call addmrg_to(compatm , 'Sx_u10', & mrg_from=compmed, mrg_fld='So_u10', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addFldFrom(complnd , 'Sl_qref') - call addfldFrom(compice , 'Si_qref') - call addaofluxFld('So_qref') - call addfldTo(compatm , 'Sx_qref') + call addfld_from(complnd , 'Sl_qref') + call addfld_from(compice , 'Si_qref') + call addfld_aoflux('So_qref') + call addfld_to(compatm , 'Sx_qref') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_qref', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_qref', rc=rc)) then - call addmapFrom(complnd , 'Sl_qref', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Sx_qref', & + call addmap_from(complnd , 'Sl_qref', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Sx_qref', & mrg_from=complnd, mrg_fld='Sl_qref', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_qref', rc=rc)) then - call addMapFrom(compice , 'Si_qref', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Sx_qref', & + call addmap_from(compice , 'Si_qref', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Sx_qref', & mrg_from=compice, mrg_fld='Si_qref', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_qref', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('So_qref', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('So_qref', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Sx_qref', & + call addmrg_to(compatm , 'Sx_qref', & mrg_from=compmed, mrg_fld='So_qref', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -980,27 +980,27 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then - call addFldFrom(complnd , 'Sl_qref_wiso') - call addfldFrom(compice , 'Si_qref_wiso') - call addaofluxFld('So_qref_wiso') - call addfldTo(compatm , 'Sx_qref_wiso') + call addfld_from(complnd , 'Sl_qref_wiso') + call addfld_from(compice , 'Si_qref_wiso') + call addfld_aoflux('So_qref_wiso') + call addfld_to(compatm , 'Sx_qref_wiso') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_qref_wiso', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_qref_wiso', rc=rc)) then - call addmapFrom(complnd , 'Sl_qref_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Sx_qref_wiso', & + call addmap_from(complnd , 'Sl_qref_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Sx_qref_wiso', & mrg_from=complnd, mrg_fld='Sl_qref_wiso', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_qref_wiso', rc=rc)) then - call addMapFrom(compice , 'Si_qref_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Sx_qref_wiso', & + call addmap_from(compice , 'Si_qref_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Sx_qref_wiso', & mrg_from=compice, mrg_fld='Si_qref_wiso', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_qref_wiso', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap( 'So_qref_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) ! map ocn->atm + call addmap_aoflux( 'So_qref_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) ! map ocn->atm end if - call addmrgTo(compatm , 'Sx_qref_wiso', & + call addmrg_to(compatm , 'Sx_qref_wiso', & mrg_from=compmed, mrg_fld='So_qref_wiso', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1014,81 +1014,81 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: merged reference specific water isoptope humidity at 2 meters ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd , 'Sl_tref') - call addfldFrom(compice , 'Si_tref') - call addaofluxFld('So_tref') - call addfldTo(compatm , 'Sx_tref') + call addfld_from(complnd , 'Sl_tref') + call addfld_from(compice , 'Si_tref') + call addfld_aoflux('So_tref') + call addfld_to(compatm , 'Sx_tref') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_tref', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_tref', rc=rc)) then - call addmapFrom(complnd , 'Sl_tref', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Sx_tref', & + call addmap_from(complnd , 'Sl_tref', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Sx_tref', & mrg_from=complnd, mrg_fld='Sl_tref', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_tref', rc=rc)) then - call addMapFrom(compice , 'Si_tref', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Sx_tref', & + call addmap_from(compice , 'Si_tref', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Sx_tref', & mrg_from=compice, mrg_fld='Si_tref', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_tref', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('So_tref', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('So_tref', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Sx_tref', & + call addmrg_to(compatm , 'Sx_tref', & mrg_from=compmed, mrg_fld='So_tref', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addFldFrom(complnd , 'Sl_u10') - call addfldFrom(compice , 'Si_u10') - call addaofluxFld('So_u10') - call addfldTo(compatm , 'Sx_u10') + call addfld_from(complnd , 'Sl_u10') + call addfld_from(compice , 'Si_u10') + call addfld_aoflux('So_u10') + call addfld_to(compatm , 'Sx_u10') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_u10', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_u10', rc=rc)) then - call addmapFrom(complnd , 'Sl_u10', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Sx_u10', & + call addmap_from(complnd , 'Sl_u10', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Sx_u10', & mrg_from=complnd, mrg_fld='Sl_u10', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_u10', rc=rc)) then - call addMapFrom(compice , 'Si_u10', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Sx_u10', & + call addmap_from(compice , 'Si_u10', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Sx_u10', & mrg_from=compice, mrg_fld='Si_u10', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_u10', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('So_u10', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('So_u10', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Sx_u10', & + call addmrg_to(compatm , 'Sx_u10', & mrg_from=compmed, mrg_fld='So_u10', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addFldFrom(complnd , 'Sl_qref') - call addfldFrom(compice , 'Si_qref') - call addaofluxFld('So_qref') - call addfldTo(compatm , 'Sx_qref') + call addfld_from(complnd , 'Sl_qref') + call addfld_from(compice , 'Si_qref') + call addfld_aoflux('So_qref') + call addfld_to(compatm , 'Sx_qref') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_qref', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_qref', rc=rc)) then - call addmapFrom(complnd , 'Sl_qref', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Sx_qref', & + call addmap_from(complnd , 'Sl_qref', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Sx_qref', & mrg_from=complnd, mrg_fld='Sl_qref', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_qref', rc=rc)) then - call addMapFrom(compice , 'Si_qref', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Sx_qref', & + call addmap_from(compice , 'Si_qref', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Sx_qref', & mrg_from=compice, mrg_fld='Si_qref', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_qref', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('So_qref', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('So_qref', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Sx_qref', & + call addmrg_to(compatm , 'Sx_qref', & mrg_from=compmed, mrg_fld='So_qref', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1096,27 +1096,27 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then - call addFldFrom(complnd , 'Sl_qref_wiso') - call addfldFrom(compice , 'Si_qref_wiso') - call addaofluxFld('So_qref_wiso') - call addfldTo(compatm , 'Sx_qref_wiso') + call addfld_from(complnd , 'Sl_qref_wiso') + call addfld_from(compice , 'Si_qref_wiso') + call addfld_aoflux('So_qref_wiso') + call addfld_to(compatm , 'Sx_qref_wiso') else if ( fldchk(is_local%wrap%FBexp(compatm), 'Sx_qref_wiso', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_qref_wiso', rc=rc)) then - call addmapFrom(complnd , 'Sl_qref_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Sx_qref_wiso', & + call addmap_from(complnd , 'Sl_qref_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Sx_qref_wiso', & mrg_from=complnd, mrg_fld='Sl_qref_wiso', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_qref_wiso', rc=rc)) then - call addMapFrom(compice , 'Si_qref_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Sx_qref_wiso', & + call addmap_from(compice , 'Si_qref_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Sx_qref_wiso', & mrg_from=compice, mrg_fld='Si_qref_wiso', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'So_qref_wiso', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('So_qref_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('So_qref_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Sx_qref_wiso', & + call addmrg_to(compatm , 'Sx_qref_wiso', & mrg_from=compmed, mrg_fld='So_qref_wiso', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1132,162 +1132,162 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: evaporation water flux from water isotopes ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldTo(compatm, 'Faxx_taux') - call addFldFrom(complnd, 'Fall_taux') - call addfldFrom(compice, 'Faii_taux') - call addaofluxFld( 'Faox_taux') + call addfld_to(compatm, 'Faxx_taux') + call addfld_from(complnd, 'Fall_taux') + call addfld_from(compice, 'Faii_taux') + call addfld_aoflux( 'Faox_taux') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_taux', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_taux', rc=rc)) then - call addmapFrom(complnd , 'Fall_taux', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Faxx_taux', & + call addmap_from(complnd , 'Fall_taux', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Faxx_taux', & mrg_from=complnd, mrg_fld='Fall_taux', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_taux', rc=rc)) then - call addMapFrom(compice , 'Faii_taux', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Faxx_taux', & + call addmap_from(compice , 'Faii_taux', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Faxx_taux', & mrg_from=compice, mrg_fld='Faii_taux', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_taux', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('Faox_taux', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('Faox_taux', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Faxx_taux', & + call addmrg_to(compatm , 'Faxx_taux', & mrg_from=compmed, mrg_fld='Faox_taux', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfldTo(compatm, 'Faxx_tauy') - call addFldFrom(complnd, 'Fall_tauy') - call addfldFrom(compice, 'Faii_tauy') - call addaofluxFld( 'Faox_tauy') + call addfld_to(compatm, 'Faxx_tauy') + call addfld_from(complnd, 'Fall_tauy') + call addfld_from(compice, 'Faii_tauy') + call addfld_aoflux( 'Faox_tauy') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_tauy', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_tauy', rc=rc)) then - call addmapFrom(complnd , 'Fall_tauy', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Faxx_tauy', & + call addmap_from(complnd , 'Fall_tauy', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Faxx_tauy', & mrg_from=complnd, mrg_fld='Fall_tauy', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_tauy', rc=rc)) then - call addMapFrom(compice , 'Faii_tauy', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Faxx_tauy', & + call addmap_from(compice , 'Faii_tauy', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Faxx_tauy', & mrg_from=compice, mrg_fld='Faii_tauy', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_tauy', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('Faox_tauy', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('Faox_tauy', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Faxx_tauy', & + call addmrg_to(compatm , 'Faxx_tauy', & mrg_from=compmed, mrg_fld='Faox_tauy', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfldTo(compatm, 'Faxx_lat') - call addFldFrom(complnd, 'Fall_lat') - call addfldFrom(compice, 'Faii_lat') - call addaofluxFld( 'Faox_lat') + call addfld_to(compatm, 'Faxx_lat') + call addfld_from(complnd, 'Fall_lat') + call addfld_from(compice, 'Faii_lat') + call addfld_aoflux( 'Faox_lat') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_lat', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_lat', rc=rc)) then - call addmapFrom(complnd , 'Fall_lat', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Faxx_lat', & + call addmap_from(complnd , 'Fall_lat', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Faxx_lat', & mrg_from=complnd, mrg_fld='Fall_lat', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_lat', rc=rc)) then - call addMapFrom(compice , 'Faii_lat', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Faxx_lat', & + call addmap_from(compice , 'Faii_lat', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Faxx_lat', & mrg_from=compice, mrg_fld='Faii_lat', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_lat', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('Faox_lat', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('Faox_lat', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Faxx_lat', & + call addmrg_to(compatm , 'Faxx_lat', & mrg_from=compmed, mrg_fld='Faox_lat', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfldTo(compatm, 'Faxx_sen') - call addFldFrom(complnd, 'Fall_sen') - call addfldFrom(compice, 'Faii_sen') - call addaofluxFld( 'Faox_sen') + call addfld_to(compatm, 'Faxx_sen') + call addfld_from(complnd, 'Fall_sen') + call addfld_from(compice, 'Faii_sen') + call addfld_aoflux( 'Faox_sen') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_sen', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_sen', rc=rc)) then - call addmapFrom(complnd , 'Fall_sen', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Faxx_sen', & + call addmap_from(complnd , 'Fall_sen', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Faxx_sen', & mrg_from=complnd, mrg_fld='Fall_sen', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_sen', rc=rc)) then - call addMapFrom(compice , 'Faii_sen', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Faxx_sen', & + call addmap_from(compice , 'Faii_sen', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Faxx_sen', & mrg_from=compice, mrg_fld='Faii_sen', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_sen', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('Faox_sen', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('Faox_sen', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Faxx_sen', & + call addmrg_to(compatm , 'Faxx_sen', & mrg_from=compmed, mrg_fld='Faox_sen', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfldTo(compatm, 'Faxx_evap') - call addFldFrom(complnd, 'Fall_evap') - call addfldFrom(compice, 'Faii_evap') - call addaofluxFld( 'Faox_evap') + call addfld_to(compatm, 'Faxx_evap') + call addfld_from(complnd, 'Fall_evap') + call addfld_from(compice, 'Faii_evap') + call addfld_aoflux( 'Faox_evap') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_evap', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_evap', rc=rc)) then - call addmapFrom(complnd , 'Fall_evap', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Faxx_evap', & + call addmap_from(complnd , 'Fall_evap', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Faxx_evap', & mrg_from=complnd, mrg_fld='Fall_evap', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_evap', rc=rc)) then - call addMapFrom(compice , 'Faii_evap', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Faxx_evap', & + call addmap_from(compice , 'Faii_evap', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Faxx_evap', & mrg_from=compice, mrg_fld='Faii_evap', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_evap', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('Faox_evap', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('Faox_evap', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Faxx_evap', & + call addmrg_to(compatm , 'Faxx_evap', & mrg_from=compmed, mrg_fld='Faox_evap', mrg_type='merge', mrg_fracname='ofrac') end if end if end if if (phase == 'advertise') then - call addfldTo(compatm, 'Faxx_lwup') - call addFldFrom(complnd, 'Fall_lwup') - call addfldFrom(compice, 'Faii_lwup') - call addaofluxFld( 'Faox_lwup') + call addfld_to(compatm, 'Faxx_lwup') + call addfld_from(complnd, 'Fall_lwup') + call addfld_from(compice, 'Faii_lwup') + call addfld_aoflux( 'Faox_lwup') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_lwup', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_lwup', rc=rc)) then - call addmapFrom(complnd , 'Fall_lwup', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Faxx_lwup', & + call addmap_from(complnd , 'Fall_lwup', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Faxx_lwup', & mrg_from=complnd, mrg_fld='Fall_lwup', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_lwup', rc=rc)) then - call addMapFrom(compice , 'Faii_lwup', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Faxx_lwup', & + call addmap_from(compice , 'Faii_lwup', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Faxx_lwup', & mrg_from=compice, mrg_fld='Faii_lwup', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_lwup', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('Faox_lwup', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('Faox_lwup', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm, 'Faxx_lwup', & + call addmrg_to(compatm, 'Faxx_lwup', & mrg_from=compmed, mrg_fld='Faox_lwup', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1295,27 +1295,27 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then - call addfldTo(compatm, 'Faxx_evap_wiso') - call addFldFrom(complnd, 'Fall_evap_wiso') - call addfldFrom(compice, 'Faii_evap_wiso') - call addaofluxFld( 'Faox_evap_wiso') + call addfld_to(compatm, 'Faxx_evap_wiso') + call addfld_from(complnd, 'Fall_evap_wiso') + call addfld_from(compice, 'Faii_evap_wiso') + call addfld_aoflux( 'Faox_evap_wiso') else if (fldchk(is_local%wrap%FBexp(compatm), 'Faxx_evap_wiso', rc=rc)) then if ( fldchk(is_local%wrap%FBImp(complnd,complnd), 'Fall_evap_wiso', rc=rc)) then - call addmapFrom(complnd , 'Fall_evap_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm , 'Faxx_evap_wiso', & + call addmap_from(complnd , 'Fall_evap_wiso', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm , 'Faxx_evap_wiso', & mrg_from=complnd, mrg_fld='Fall_evap_wiso', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Faii_evap_wiso', rc=rc)) then - call addMapFrom(compice , 'Faii_evap_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm , 'Faxx_evap_wiso', & + call addmap_from(compice , 'Faii_evap_wiso', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm , 'Faxx_evap_wiso', & mrg_from=compice, mrg_fld='Faii_evap_wiso', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_evap_wiso', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('Faox_evap_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux('Faox_evap_wiso', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'Faxx_evap_wiso', & + call addmrg_to(compatm , 'Faxx_evap_wiso', & mrg_from=compmed, mrg_fld='Faox_evap_wiso', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1326,31 +1326,31 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: merged surface temperature and unmerged temperatures from ice and ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Sl_t') - call addfldFrom(compice, 'Si_t') - call addfldFrom(compocn, 'So_t') - call addfldTo(compatm, 'So_t') - call addfldTo(compatm, 'Sx_t') + call addfld_from(complnd, 'Sl_t') + call addfld_from(compice, 'Si_t') + call addfld_from(compocn, 'So_t') + call addfld_to(compatm, 'So_t') + call addfld_to(compatm, 'Sx_t') else if (fldchk(is_local%wrap%FBexp(compatm), 'Sx_t', rc=rc)) then if (fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_t', rc=rc)) then - call addmapFrom(complnd, 'Sl_t', compatm, mapconsf , 'lfrin', lnd2atm_map) - call addmrgTo(compatm, 'Sx_t', & + call addmap_from(complnd, 'Sl_t', compatm, mapconsf , 'lfrin', lnd2atm_map) + call addmrg_to(compatm, 'Sx_t', & mrg_from=complnd, mrg_fld='Sl_t', mrg_type='merge', mrg_fracname='lfrac') end if if (fldchk(is_local%wrap%FBImp(compice,compice), 'Si_t', rc=rc)) then - call addMapFrom(compice, 'Si_t', compatm, mapconsf , 'ifrac', ice2atm_map) - call addmrgTo(compatm, 'Sx_t', & + call addmap_from(compice, 'Si_t', compatm, mapconsf , 'ifrac', ice2atm_map) + call addmrg_to(compatm, 'Sx_t', & mrg_from=compice, mrg_fld='Si_t', mrg_type='merge', mrg_fracname='ifrac') end if if (fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_t', rc=rc)) then - call addmapFrom(compocn, 'So_t', compatm, mapconsf, 'ofrac', ocn2atm_map) - call addmrgTo(compatm, 'Sx_t', & + call addmap_from(compocn, 'So_t', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmrg_to(compatm, 'Sx_t', & mrg_from=compocn, mrg_fld='So_t', mrg_type='merge', mrg_fracname='ofrac') end if end if if (fldchk(is_local%wrap%FBexp(compatm), 'So_t', rc=rc)) then - call addmrgTo(compatm, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') + call addmrg_to(compatm, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') end if end if @@ -1360,33 +1360,33 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: mean snow volume per unit area from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compice, 'Si_snowh') - call addfldTo(compatm, 'Si_snowh') + call addfld_from(compice, 'Si_snowh') + call addfld_to(compatm, 'Si_snowh') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Si_snowh', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Si_snowh', rc=rc)) then - call addMapFrom(compice, 'Si_snowh', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm, 'Si_snowh', mrg_from=compice, mrg_fld='Si_snowh', mrg_type='copy') + call addmap_from(compice, 'Si_snowh', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm, 'Si_snowh', mrg_from=compice, mrg_fld='Si_snowh', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfldFrom(compice, 'Si_vice') - call addfldTo(compatm, 'Si_vice') + call addfld_from(compice, 'Si_vice') + call addfld_to(compatm, 'Si_vice') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Si_vice', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Si_vice', rc=rc)) then - call addMapFrom(compice, 'Si_vice', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm, 'Si_vice', mrg_from=compice, mrg_fld='Si_vice', mrg_type='copy') + call addmap_from(compice, 'Si_vice', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm, 'Si_vice', mrg_from=compice, mrg_fld='Si_vice', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfldFrom(compice, 'Si_vsno') - call addfldTo(compatm, 'Si_vsno') + call addfld_from(compice, 'Si_vsno') + call addfld_to(compatm, 'Si_vsno') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Si_vsno', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Si_vsno', rc=rc)) then - call addMapFrom(compice, 'Si_vsno', compatm, mapconsf, 'ifrac', ice2atm_map) - call addmrgTo(compatm, 'Si_vsno', mrg_from=compice, mrg_fld='Si_vsno', mrg_type='copy') + call addmap_from(compice, 'Si_vsno', compatm, mapconsf, 'ifrac', ice2atm_map) + call addmrg_to(compatm, 'Si_vsno', mrg_from=compice, mrg_fld='Si_vsno', mrg_type='copy') end if end if @@ -1396,39 +1396,39 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface fraction velocity from med aoflux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addaofluxFld('So_ssq') - call addfldTo(compatm , 'So_ssq') + call addfld_aoflux('So_ssq') + call addfld_to(compatm , 'So_ssq') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'So_ssq', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'So_ssq', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap( 'So_ssq', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux( 'So_ssq', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'So_ssq', mrg_from=compmed, mrg_fld='So_ssq', mrg_type='copy') + call addmrg_to(compatm , 'So_ssq', mrg_from=compmed, mrg_fld='So_ssq', mrg_type='copy') end if end if if (phase == 'advertise') then - call addaofluxFld('So_re') - call addfldTo(compatm , 'So_re') + call addfld_aoflux('So_re') + call addfld_to(compatm , 'So_re') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'So_re', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'So_re', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap( 'So_re', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux( 'So_re', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'So_re', mrg_from=compmed, mrg_fld='So_re', mrg_type='copy') + call addmrg_to(compatm , 'So_re', mrg_from=compmed, mrg_fld='So_re', mrg_type='copy') end if end if if (phase == 'advertise') then - call addaofluxFld('So_ustar') - call addfldTo(compatm , 'So_ustar') + call addfld_aoflux('So_ustar') + call addfld_to(compatm , 'So_ustar') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'So_ustar', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'So_ustar', rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap( 'So_ustar', compatm, mapconsf, 'ofrac', ocn2atm_map) + call addmap_aoflux( 'So_ustar', compatm, mapconsf, 'ofrac', ocn2atm_map) end if - call addmrgTo(compatm , 'So_ustar', mrg_from=compmed, mrg_fld='So_ustar', mrg_type='copy') + call addmrg_to(compatm , 'So_ustar', mrg_from=compmed, mrg_fld='So_ustar', mrg_type='copy') end if end if @@ -1438,59 +1438,59 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface snow water equivalent from land ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Sl_fv') - call addfldTo(compatm, 'Sl_fv') + call addfld_from(complnd, 'Sl_fv') + call addfld_to(compatm, 'Sl_fv') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_fv', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_fv', rc=rc)) then - call addmapFrom(complnd, 'Sl_fv', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm, 'Sl_fv', mrg_from=complnd, mrg_fld='Sl_fv', mrg_type='copy') + call addmap_from(complnd, 'Sl_fv', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm, 'Sl_fv', mrg_from=complnd, mrg_fld='Sl_fv', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(complnd, 'Sl_ram1') - call addfldTo(compatm, 'Sl_ram1') + call addfld_from(complnd, 'Sl_ram1') + call addfld_to(compatm, 'Sl_ram1') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_ram1', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_ram1', rc=rc)) then - call addmapFrom(complnd, 'Sl_ram1', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm, 'Sl_ram1', mrg_from=complnd, mrg_fld='Sl_ram1', mrg_type='copy') + call addmap_from(complnd, 'Sl_ram1', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm, 'Sl_ram1', mrg_from=complnd, mrg_fld='Sl_ram1', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(complnd, 'Sl_snowh') - call addfldTo(compatm, 'Sl_snowh') + call addfld_from(complnd, 'Sl_snowh') + call addfld_to(compatm, 'Sl_snowh') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_snowh', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_snowh', rc=rc)) then - call addmapFrom(complnd, 'Sl_snowh', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm, 'Sl_snowh', mrg_from=complnd, mrg_fld='Sl_snowh', mrg_type='copy') + call addmap_from(complnd, 'Sl_snowh', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm, 'Sl_snowh', mrg_from=complnd, mrg_fld='Sl_snowh', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! CARMA fields (volumetric soil water) !----------------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Sl_soilw') - call addfldTo(compatm, 'Sl_soilw') + call addfld_from(complnd, 'Sl_soilw') + call addfld_to(compatm, 'Sl_soilw') else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_soilw', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd ), 'Sl_soilw', rc=rc)) then - call addmapFrom(complnd, 'Sl_soilw', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm, 'Sl_soilw', mrg_from=complnd, mrg_fld='Sl_soilw', mrg_type='copy') + call addmap_from(complnd, 'Sl_soilw', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm, 'Sl_soilw', mrg_from=complnd, mrg_fld='Sl_soilw', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to atm: dust fluxes from land (4 sizes) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Fall_flxdst') - call addfldTo(compatm, 'Fall_flxdst') + call addfld_from(complnd, 'Fall_flxdst') + call addfld_to(compatm, 'Fall_flxdst') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Fall_flxdst', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Fall_flxdst', rc=rc)) then - call addmapFrom(complnd, 'Fall_flxdst', compatm, mapconsf, 'lfrin', lnd2atm_map) - call addmrgTo(compatm, 'Fall_flxdst', & + call addmap_from(complnd, 'Fall_flxdst', compatm, mapconsf, 'lfrin', lnd2atm_map) + call addmrg_to(compatm, 'Fall_flxdst', & mrg_from=complnd, mrg_fld='Fall_flxdst', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -1498,13 +1498,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: MEGAN emissions fluxes from land !----------------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Fall_voc') - call addfldTo(compatm, 'Fall_voc') + call addfld_from(complnd, 'Fall_voc') + call addfld_to(compatm, 'Fall_voc') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Fall_voc', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Fall_voc', rc=rc)) then - call addmapFrom(complnd, 'Fall_voc', compatm, mapconsf, 'one', atm2lnd_map) - call addmrgTo(compatm, 'Fall_voc', & + call addmap_from(complnd, 'Fall_voc', compatm, mapconsf, 'one', atm2lnd_map) + call addmrg_to(compatm, 'Fall_voc', & mrg_from=complnd, mrg_fld='Fall_voc', mrg_type='merge', mrg_fracname='lfrac') end if end if @@ -1513,38 +1513,38 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !----------------------------------------------------------------------------- ! 'wild fire emission fluxes' if (phase == 'advertise') then - call addFldFrom(complnd, 'Fall_fire') - call addfldTo(compatm, 'Fall_fire') + call addfld_from(complnd, 'Fall_fire') + call addfld_to(compatm, 'Fall_fire') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Fall_fire', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Fall_fire', rc=rc)) then - call addmapFrom(complnd, 'Fall_fire', compatm, mapconsf, 'one', lnd2atm_map) - call addmrgTo(compatm, 'Fall_fire', & + call addmap_from(complnd, 'Fall_fire', compatm, mapconsf, 'one', lnd2atm_map) + call addmrg_to(compatm, 'Fall_fire', & mrg_from=complnd, mrg_fld='Fall_fire', mrg_type='merge', mrg_fracname='lfrac') end if end if ! 'wild fire plume height' if (phase == 'advertise') then - call addFldFrom(complnd, 'Sl_fztop') - call addfldTo(compatm, 'Sl_fztop') + call addfld_from(complnd, 'Sl_fztop') + call addfld_to(compatm, 'Sl_fztop') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Sl_fztop', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Sl_fztop', rc=rc)) then - call addmapFrom(complnd, 'Sl_fztop', compatm, mapconsf, 'one', lnd2atm_map) - call addmrgTo(compatm, 'Sl_fztop', mrg_from=complnd, mrg_fld='Sl_fztop', mrg_type='copy') + call addmap_from(complnd, 'Sl_fztop', compatm, mapconsf, 'one', lnd2atm_map) + call addmrg_to(compatm, 'Sl_fztop', mrg_from=complnd, mrg_fld='Sl_fztop', mrg_type='copy') end if end if !----------------------------------------------------------------------------- ! to atm: dry deposition velocities from land !----------------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Sl_ddvel') - call addfldTo(compatm, 'Sl_ddvel') + call addfld_from(complnd, 'Sl_ddvel') + call addfld_to(compatm, 'Sl_ddvel') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Sl_ddvel', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compatm) , 'Sl_ddvel', rc=rc)) then - call addmapFrom(complnd, 'Sl_ddvel', compatm, mapconsf, 'one', lnd2atm_map) - call addmrgTo(compatm, 'Sl_ddvel', mrg_from=complnd, mrg_fld='Sl_ddvel', mrg_type='copy') + call addmap_from(complnd, 'Sl_ddvel', compatm, mapconsf, 'one', lnd2atm_map) + call addmrg_to(compatm, 'Sl_ddvel', mrg_from=complnd, mrg_fld='Sl_ddvel', mrg_type='copy') end if end if @@ -1556,11 +1556,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: fractional ice coverage wrt ocean from ice !---------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compice, 'Si_ifrac') - call addFldTo(compocn, 'Si_ifrac') + call addfld_from(compice, 'Si_ifrac') + call addfld_to(compocn, 'Si_ifrac') else - call addMapFrom(compice, 'Si_ifrac', compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') + call addmap_from(compice, 'Si_ifrac', compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') end if ! --------------------------------------------------------------------- @@ -1571,57 +1571,57 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: downward diffuse visible incident solar radiation from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_lwdn') - call addFldTo(compocn, 'Faxa_lwdn') + call addfld_from(compatm, 'Faxa_lwdn') + call addfld_to(compocn, 'Faxa_lwdn') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_lwdn', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwdn', rc=rc)) then - call addMapFrom(compatm, 'Faxa_lwdn', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_lwdn', & + call addmap_from(compatm, 'Faxa_lwdn', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_lwdn', & mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swndr') - call addFldTo(compocn, 'Faxa_swndr') + call addfld_from(compatm, 'Faxa_swndr') + call addfld_to(compocn, 'Faxa_swndr') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swndr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swndr', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swndr', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_swndr', & + call addmap_from(compatm, 'Faxa_swndr', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_swndr', & mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swndf') - call addFldTo(compocn, 'Faxa_swndf') + call addfld_from(compatm, 'Faxa_swndf') + call addfld_to(compocn, 'Faxa_swndf') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swndf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swndf', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swndf', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_swndf', & + call addmap_from(compatm, 'Faxa_swndf', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_swndf', & mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swvdr') - call addFldTo(compocn, 'Faxa_swvdr') + call addfld_from(compatm, 'Faxa_swvdr') + call addfld_to(compocn, 'Faxa_swvdr') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swvdr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swvdr', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swvdr', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_swvdr', & + call addmap_from(compatm, 'Faxa_swvdr', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_swvdr', & mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swvdf') - call addFldTo(compocn, 'Faxa_swvdf') + call addfld_from(compatm, 'Faxa_swvdf') + call addfld_to(compocn, 'Faxa_swvdf') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swvdf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swvdf', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swvdf', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_swvdf', & + call addmap_from(compatm, 'Faxa_swvdf', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_swvdf', & mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -1630,12 +1630,12 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: surface upward longwave heat flux from mediator ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addaofluxFld('Faox_lwup') - call addFldTo(compocn , 'Foxx_lwup') + call addfld_aoflux('Faox_lwup') + call addfld_to(compocn , 'Foxx_lwup') else if ( fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_lwup', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn), 'Foxx_lwup', rc=rc)) then - call addmrgTo(compocn, 'Foxx_lwup', & + call addmrg_to(compocn, 'Foxx_lwup', & mrg_from=compmed, mrg_fld='Faox_lwup', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1643,18 +1643,18 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: merged longwave net heat flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm , 'Faxa_lwdn') - call addaofluxFld('Faox_lwup' ) - call addFldTo(compocn , 'Foxx_lwnet') + call addfld_from(compatm , 'Faxa_lwdn') + call addfld_aoflux('Faox_lwup' ) + call addfld_to(compocn , 'Foxx_lwnet') else ! (mom6) (send longwave net to ocn via auto merge) if ( fldchk(is_local%wrap%FBExp(compocn) , 'Foxx_lwnet', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'Faox_lwup' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwdn' , rc=rc)) then - call addMapFrom(compatm, 'Faxa_lwdn', compocn, mapconsf, 'one' , atm2ocn_map) - call addmrgTo(compocn, 'Foxx_lwnet', & + call addmap_from(compatm, 'Faxa_lwdn', compocn, mapconsf, 'one' , atm2ocn_map) + call addmrg_to(compocn, 'Foxx_lwnet', & mrg_from=compmed, mrg_fld='Faox_lwup', mrg_type='merge', mrg_fracname='ofrac') - call addmrgTo(compocn, 'Foxx_lwnet', & + call addmrg_to(compocn, 'Foxx_lwnet', & mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1662,13 +1662,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: downward shortwave heat flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swdn') - call addFldTo(compocn, 'Faxa_swdn') + call addfld_from(compatm, 'Faxa_swdn') + call addfld_to(compocn, 'Faxa_swdn') else if (fldchk(is_local%wrap%FBImp(compatm, compatm), 'Faxa_swdn', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_swdn', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swdn', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_swdn', & + call addmap_from(compatm, 'Faxa_swdn', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_swdn', & mrg_from=compatm, mrg_fld='Faxa_swdn', mrg_type='copy') end if end if @@ -1676,28 +1676,28 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: net shortwave radiation from med ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swvdr') - call addFldFrom(compatm, 'Faxa_swndr') - call addFldFrom(compatm, 'Faxa_swvdf') - call addFldFrom(compatm, 'Faxa_swndf') + call addfld_from(compatm, 'Faxa_swvdr') + call addfld_from(compatm, 'Faxa_swndr') + call addfld_from(compatm, 'Faxa_swvdf') + call addfld_from(compatm, 'Faxa_swndf') - call addfldFrom(compice, 'Fioi_swpen') - call addfldFrom(compice, 'Fioi_swpen_vdr') - call addfldFrom(compice, 'Fioi_swpen_vdf') - call addfldFrom(compice, 'Fioi_swpen_idr') - call addfldFrom(compice, 'Fioi_swpen_idf') + call addfld_from(compice, 'Fioi_swpen') + call addfld_from(compice, 'Fioi_swpen_vdr') + call addfld_from(compice, 'Fioi_swpen_vdf') + call addfld_from(compice, 'Fioi_swpen_idr') + call addfld_from(compice, 'Fioi_swpen_idf') - call addFldTo(compocn, 'Foxx_swnet') - call addFldTo(compocn, 'Foxx_swnet_vdr') - call addFldTo(compocn, 'Foxx_swnet_vdf') - call addFldTo(compocn, 'Foxx_swnet_idr') - call addFldTo(compocn, 'Foxx_swnet_idf') + call addfld_to(compocn, 'Foxx_swnet') + call addfld_to(compocn, 'Foxx_swnet_vdr') + call addfld_to(compocn, 'Foxx_swnet_vdf') + call addfld_to(compocn, 'Foxx_swnet_idr') + call addfld_to(compocn, 'Foxx_swnet_idf') else ! Net shortwave ocean (custom calculation in prep_phases_ocn_mod.F90) ! import swpen from ice without bands if (fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_swpen', rc=rc)) then - call addMapFrom(compice, 'Fioi_swpen', compocn, mapfcopy, 'unset', 'unset') + call addmap_from(compice, 'Fioi_swpen', compocn, mapfcopy, 'unset', 'unset') end if ! import swpen from ice by bands @@ -1705,10 +1705,10 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_swpen_vdf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_swpen_idr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_swpen_idf', rc=rc)) then - call addMapFrom(compice, 'Fioi_swpen_vdr', compocn, mapfcopy, 'unset', 'unset') - call addMapFrom(compice, 'Fioi_swpen_vdf', compocn, mapfcopy, 'unset', 'unset') - call addMapFrom(compice, 'Fioi_swpen_idr', compocn, mapfcopy, 'unset', 'unset') - call addMapFrom(compice, 'Fioi_swpen_idf', compocn, mapfcopy, 'unset', 'unset') + call addmap_from(compice, 'Fioi_swpen_vdr', compocn, mapfcopy, 'unset', 'unset') + call addmap_from(compice, 'Fioi_swpen_vdf', compocn, mapfcopy, 'unset', 'unset') + call addmap_from(compice, 'Fioi_swpen_idr', compocn, mapfcopy, 'unset', 'unset') + call addmap_from(compice, 'Fioi_swpen_idf', compocn, mapfcopy, 'unset', 'unset') end if ! import sw from atm by bands @@ -1721,10 +1721,10 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) fldchk(is_local%wrap%FBExp(compocn), 'Foxx_swnet_vdf', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn), 'Foxx_swnet_idr', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn), 'Foxx_swnet_idf', rc=rc))) then - call addMapFrom(compatm, 'Faxa_swvdr', compocn, mapconsf, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Faxa_swvdf', compocn, mapconsf, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Faxa_swndr', compocn, mapconsf, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Faxa_swndf', compocn, mapconsf, 'one', atm2ocn_map) + call addmap_from(compatm, 'Faxa_swvdr', compocn, mapconsf, 'one', atm2ocn_map) + call addmap_from(compatm, 'Faxa_swvdf', compocn, mapconsf, 'one', atm2ocn_map) + call addmap_from(compatm, 'Faxa_swndr', compocn, mapconsf, 'one', atm2ocn_map) + call addmap_from(compatm, 'Faxa_swndf', compocn, mapconsf, 'one', atm2ocn_map) end if end if @@ -1734,27 +1734,27 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_i2o_per_cat) then if (phase == 'advertise') then ! 'fractional ice coverage wrt ocean for each thickness category ' - call addfldFrom(compice, 'Si_ifrac_n') - call addFldTo(compocn, 'Si_ifrac_n') + call addfld_from(compice, 'Si_ifrac_n') + call addfld_to(compocn, 'Si_ifrac_n') ! net shortwave radiation penetrating into ocean for each thickness category - call addfldFrom(compice, 'Fioi_swpen_ifrac_n') - call addFldTo(compocn, 'Fioi_swpen_ifrac_n') + call addfld_from(compice, 'Fioi_swpen_ifrac_n') + call addfld_to(compocn, 'Fioi_swpen_ifrac_n') ! 'fractional atmosphere coverage wrt ocean' (computed in med_phases_prep_ocn) - call addFldTo(compocn, 'Sf_afrac') + call addfld_to(compocn, 'Sf_afrac') ! 'fractional atmosphere coverage used in radiation computations wrt ocean' (computed in med_phases_prep_ocn) - call addFldTo(compocn, 'Sf_afracr') + call addfld_to(compocn, 'Sf_afracr') ! 'net shortwave radiation times atmosphere fraction' (computed in med_phases_prep_ocn) - call addFldTo(compocn, 'Foxx_swnet_afracr') + call addfld_to(compocn, 'Foxx_swnet_afracr') else - call addMapFrom(compice, 'Si_ifrac_n', & + call addmap_from(compice, 'Si_ifrac_n', & compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Si_ifrac_n', & + call addmrg_to(compocn, 'Si_ifrac_n', & mrg_from=compice, mrg_fld='Si_ifrac_n', mrg_type='copy') - call addMapFrom(compice, 'Fioi_swpen_ifrac_n', & + call addmap_from(compice, 'Fioi_swpen_ifrac_n', & compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Fioi_swpen_ifrac_n', & + call addmrg_to(compocn, 'Fioi_swpen_ifrac_n', & mrg_from=compice, mrg_fld='Fioi_swpen_ifrac_n', mrg_type='copy') ! Note that 'Sf_afrac, 'Sf_afracr' and 'Foxx_swnet_afracr' will have explicit merging in med_phases_prep_ocn end if @@ -1766,12 +1766,12 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_rainc') - call addFldFrom(compatm, 'Faxa_rainl') - call addFldTo(compocn, 'Faxa_rain' ) - call addFldFrom(compatm, 'Faxa_snowc') - call addFldFrom(compatm, 'Faxa_snowl') - call addFldTo(compocn, 'Faxa_snow' ) + call addfld_from(compatm, 'Faxa_rainc') + call addfld_from(compatm, 'Faxa_rainl') + call addfld_to(compocn, 'Faxa_rain' ) + call addfld_from(compatm, 'Faxa_snowc') + call addfld_from(compatm, 'Faxa_snowl') + call addfld_to(compocn, 'Faxa_snow' ) else ! TODO: why are we not merging Faxa_rain and Faxa_snow if they are sent from atm wiht ofrac ! Note that the mediator atm/ocn flux calculation needs Faxa_rainc for the gustiness parameterization @@ -1779,47 +1779,47 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainc', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_rain' , rc=rc)) then - call addMapFrom(compatm, 'Faxa_rainl', compocn, mapconsf, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Faxa_rainc', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_rain' , mrg_from=compatm, mrg_fld='Faxa_rainc:Faxa_rainl', & + call addmap_from(compatm, 'Faxa_rainl', compocn, mapconsf, 'one', atm2ocn_map) + call addmap_from(compatm, 'Faxa_rainc', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_rain' , mrg_from=compatm, mrg_fld='Faxa_rainc:Faxa_rainl', & mrg_type='sum_with_weights', mrg_fracname='ofrac') end if if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_snow' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowc', rc=rc)) then - call addMapFrom(compatm, 'Faxa_snowl', compocn, mapconsf, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Faxa_snowc', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_snow' , & + call addmap_from(compatm, 'Faxa_snowl', compocn, mapconsf, 'one', atm2ocn_map) + call addmap_from(compatm, 'Faxa_snowc', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_snow' , & mrg_from=compatm, mrg_fld='Faxa_snowc:Faxa_snowl', mrg_type='sum_with_weights', mrg_fracname='ofrac') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_rainc_wiso') - call addFldFrom(compatm, 'Faxa_rainl_wiso') - call addFldTo(compocn, 'Faxa_rain_wiso' ) - call addFldFrom(compatm, 'Faxa_snowc_wiso') - call addFldFrom(compatm, 'Faxa_snowl_wiso') - call addFldFrom(compatm, 'Faxa_snow_wiso' ) + call addfld_from(compatm, 'Faxa_rainc_wiso') + call addfld_from(compatm, 'Faxa_rainl_wiso') + call addfld_to(compocn, 'Faxa_rain_wiso' ) + call addfld_from(compatm, 'Faxa_snowc_wiso') + call addfld_from(compatm, 'Faxa_snowl_wiso') + call addfld_from(compatm, 'Faxa_snow_wiso' ) else ! Note that the mediator atm/ocn flux calculation needs Faxa_rainc for the gustiness parameterization ! which by default is not actually used if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainl_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainc_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_rain_wiso' , rc=rc)) then - call addMapFrom(compatm, 'Faxa_rainl_wiso', compocn, mapconsf, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Faxa_rainc_wiso', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_rain_wiso' , & + call addmap_from(compatm, 'Faxa_rainl_wiso', compocn, mapconsf, 'one', atm2ocn_map) + call addmap_from(compatm, 'Faxa_rainc_wiso', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_rain_wiso' , & mrg_from=compatm, mrg_fld=trim('Faxa_rainc_wiso')//':'//trim('Faxa_rainl_wiso'), & mrg_type='sum_with_weights', mrg_fracname='ofrac') end if if ( fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_snow_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowl_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowc_wiso', rc=rc)) then - call addMapFrom(compatm, 'Faxa_snowl_wiso', compocn, mapconsf, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Faxa_snowc_wiso', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_snow_wiso', & + call addmap_from(compatm, 'Faxa_snowl_wiso', compocn, mapconsf, 'one', atm2ocn_map) + call addmap_from(compatm, 'Faxa_snowc_wiso', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_snow_wiso', & mrg_from=compatm, mrg_fld=trim('Faxa_snowc_wiso')//':'//trim('Faxa_snowl_wiso'), & mrg_type='sum_with_weights', mrg_fracname='ofrac') end if @@ -1830,14 +1830,14 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: merged sensible heat flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm , 'Faxa_sen') - call addaofluxFld('Faox_sen') - call addfldFrom(compice , 'Fioi_melth') - call addFldTo(compocn , 'Foxx_sen') + call addfld_from(compatm , 'Faxa_sen') + call addfld_aoflux('Faox_sen') + call addfld_from(compice , 'Fioi_melth') + call addfld_to(compocn , 'Foxx_sen') else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_sen', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_sen', rc=rc)) then - call addmrgTo(compocn, 'Foxx_sen', & + call addmrg_to(compocn, 'Foxx_sen', & mrg_from=compmed, mrg_fld='Faox_sen', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1846,29 +1846,29 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: surface latent heat flux and evaporation water flux ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_lat' ) - call addaofluxFld( 'Faox_lat' ) - call addaofluxFld( 'Faox_evap') - call addFldTo(compocn, 'Foxx_lat' ) - call addFldTo(compocn, 'Foxx_evap') + call addfld_from(compatm, 'Faxa_lat' ) + call addfld_aoflux( 'Faox_lat' ) + call addfld_aoflux( 'Faox_evap') + call addfld_to(compocn, 'Foxx_lat' ) + call addfld_to(compocn, 'Foxx_evap') else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_lat', rc=rc)) then - call addmrgTo(compocn, 'Foxx_lat', & + call addmrg_to(compocn, 'Foxx_lat', & mrg_from=compmed, mrg_fld='Faox_lat', mrg_type='merge', mrg_fracname='ofrac') end if if ( fldchk(is_local%wrap%FBExp(compocn), 'Foxx_evap', rc=rc)) then - call addmrgTo(compocn, 'Foxx_evap', & + call addmrg_to(compocn, 'Foxx_evap', & mrg_from=compmed, mrg_fld='Faox_evap', mrg_type='merge', mrg_fracname='ofrac') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addaofluxFld( 'Faox_lat_wiso' ) - call addFldTo(compocn, 'Foxx_lat_wiso' ) + call addfld_aoflux( 'Faox_lat_wiso' ) + call addfld_to(compocn, 'Foxx_lat_wiso' ) else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_lat_wiso', rc=rc)) then - call addmrgTo(compocn, 'Foxx_lat_wiso', & + call addmrg_to(compocn, 'Foxx_lat_wiso', & mrg_from=compmed, mrg_fld='Faox_lat_wiso', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -1881,11 +1881,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! 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 if (phase == 'advertise') then - call addaofluxFld( 'So_duu10n') - call addFldTo(compocn, 'So_duu10n') + call addfld_aoflux( 'So_duu10n') + call addfld_to(compocn, 'So_duu10n') else if (fldchk(is_local%wrap%FBExp(compocn), 'So_duu10n', rc=rc)) then - call addmrgTo(compocn, 'So_duu10n', mrg_from=compmed, mrg_fld='So_duu10n', mrg_type='copy') + call addmrg_to(compocn, 'So_duu10n', mrg_from=compmed, mrg_fld='So_duu10n', mrg_type='copy') end if end if @@ -1893,14 +1893,14 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: sea level pressure from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_pslv') - call addFldTo(compocn, 'Sa_pslv') + call addfld_from(compatm, 'Sa_pslv') + call addfld_to(compocn, 'Sa_pslv') else if ( fldchk(is_local%wrap%FBImp(compatm, compatm), 'Sa_pslv', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Sa_pslv', rc=rc)) then - call addMapFrom(compatm, 'Sa_pslv', compocn, mapbilnr, 'one', atm2ocn_map) - call addMapFrom(compatm, 'Sa_pslv', compice, mapbilnr, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Sa_pslv', & + call addmap_from(compatm, 'Sa_pslv', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_pslv', compice, mapbilnr, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Sa_pslv', & mrg_from=compatm, mrg_fld='Sa_pslv', mrg_type='copy') end if end if @@ -1919,46 +1919,46 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: nitrogen deposition fields (2) from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldTo(compocn, 'Faxa_bcph') - call addFldFrom(compatm, 'Faxa_bcph') + call addfld_to(compocn, 'Faxa_bcph') + call addfld_from(compatm, 'Faxa_bcph') else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_bcph', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_bcph', rc=rc)) then - call addMapFrom(compatm, 'Faxa_bcph', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_bcph', & + call addmap_from(compatm, 'Faxa_bcph', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_bcph', & mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addFldTo(compocn, 'Faxa_ocph') - call addFldFrom(compatm, 'Faxa_ocph') + call addfld_to(compocn, 'Faxa_ocph') + call addfld_from(compatm, 'Faxa_ocph') else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_ocph', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_ocph', rc=rc)) then - call addMapFrom(compatm, 'Faxa_ocph', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_ocph', & + call addmap_from(compatm, 'Faxa_ocph', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_ocph', & mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addFldTo(compocn, 'Faxa_dstwet') - call addFldFrom(compatm, 'Faxa_dstwet') + call addfld_to(compocn, 'Faxa_dstwet') + call addfld_from(compatm, 'Faxa_dstwet') else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_dstwet', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_dstwet', rc=rc)) then - call addMapFrom(compatm, 'Faxa_dstwet', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_dstwet', & + call addmap_from(compatm, 'Faxa_dstwet', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_dstwet', & mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addFldTo(compocn, 'Faxa_dstdry') - call addFldFrom(compatm, 'Faxa_dstdry') + call addfld_to(compocn, 'Faxa_dstdry') + call addfld_from(compatm, 'Faxa_dstdry') else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_dstdry', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compocn) , 'Faxa_dstdry', rc=rc)) then - call addMapFrom(compatm, 'Faxa_dstdry', compocn, mapconsf, 'one', atm2ocn_map) - call addmrgTo(compocn, 'Faxa_dstdry', & + call addmap_from(compatm, 'Faxa_dstdry', compocn, mapconsf, 'one', atm2ocn_map) + call addmrg_to(compocn, 'Faxa_dstdry', & mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -1971,44 +1971,44 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! Note - do not need to add addmap or addmrg for the following since they ! will be computed directly in med_phases_prep_ocn if (phase == 'advertise') then - call addFldTo(compocn, 'Foxx_hrain') - call addFldTo(compocn, 'Foxx_hsnow') - call addFldTo(compocn, 'Foxx_hevap') - call addFldTo(compocn, 'Foxx_hcond') - call addFldTo(compocn, 'Foxx_hrofl') - call addFldTo(compocn, 'Foxx_hrofi') + call addfld_to(compocn, 'Foxx_hrain') + call addfld_to(compocn, 'Foxx_hsnow') + call addfld_to(compocn, 'Foxx_hevap') + call addfld_to(compocn, 'Foxx_hcond') + call addfld_to(compocn, 'Foxx_hrofl') + call addfld_to(compocn, 'Foxx_hrofi') end if ! --------------------------------------------------------------------- ! to ocn: merge zonal and meridional surface stress from ice and (atm or med) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldTo(compocn , 'Foxx_taux') - call addfldFrom(compice , 'Fioi_taux') - call addaofluxFld('Faox_taux') + call addfld_to(compocn , 'Foxx_taux') + call addfld_from(compice , 'Fioi_taux') + call addfld_aoflux('Faox_taux') else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_taux', rc=rc)) then if (fldchk(is_local%wrap%FBimp(compice,compice), 'Fioi_taux', rc=rc)) then - call addMapFrom(compice, 'Fioi_taux', compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Foxx_taux', & + call addmap_from(compice, 'Fioi_taux', compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, 'Foxx_taux', & mrg_from=compice, mrg_fld='Fioi_taux', mrg_type='merge', mrg_fracname='ifrac') end if - call addmrgTo(compocn, 'Foxx_taux', & + call addmrg_to(compocn, 'Foxx_taux', & mrg_from=compmed, mrg_fld='Faox_taux', mrg_type='merge', mrg_fracname='ofrac') end if end if if (phase == 'advertise') then - call addFldTo(compocn , 'Foxx_tauy') - call addfldFrom(compice , 'Fioi_tauy') - call addaofluxFld('Faox_tauy') + call addfld_to(compocn , 'Foxx_tauy') + call addfld_from(compice , 'Fioi_tauy') + call addfld_aoflux('Faox_tauy') else if ( fldchk(is_local%wrap%FBexp(compocn), 'Foxx_tauy', rc=rc)) then if (fldchk(is_local%wrap%FBimp(compice,compice), 'Fioi_tauy', rc=rc)) then - call addMapFrom(compice, 'Fioi_tauy', compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Foxx_tauy', & + call addmap_from(compice, 'Fioi_tauy', compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, 'Foxx_tauy', & mrg_from=compice, mrg_fld='Fioi_tauy', mrg_type='merge', mrg_fracname='ifrac') end if - call addmrgTo(compocn, 'Foxx_tauy', & + call addmrg_to(compocn, 'Foxx_tauy', & mrg_from=compmed, mrg_fld='Faox_tauy', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -2016,25 +2016,25 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: water flux due to melting ice from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compice , 'Fioi_meltw') - call addFldTo(compocn , 'Fioi_meltw') + call addfld_from(compice , 'Fioi_meltw') + call addfld_to(compocn , 'Fioi_meltw') else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Fioi_meltw', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_meltw', rc=rc)) then - call addMapFrom(compice, 'Fioi_meltw', compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Fioi_meltw', & + call addmap_from(compice, 'Fioi_meltw', compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, 'Fioi_meltw', & mrg_from=compice, mrg_fld='Fioi_meltw', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfldFrom(compice , 'Fioi_meltw_wiso') - call addFldTo(compocn , 'Fioi_meltw_wiso') + call addfld_from(compice , 'Fioi_meltw_wiso') + call addfld_to(compocn , 'Fioi_meltw_wiso') else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Fioi_meltw_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_meltw_wiso', rc=rc)) then - call addMapFrom(compice, 'Fioi_meltw_wiso', compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Fioi_meltw_wiso', & + call addmap_from(compice, 'Fioi_meltw_wiso', compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, 'Fioi_meltw_wiso', & mrg_from=compice, mrg_fld='Fioi_meltw_wiso', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2043,13 +2043,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: heat flux from melting ice from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compice, 'Fioi_melth') - call addFldTo(compocn, 'Fioi_melth') + call addfld_from(compice, 'Fioi_melth') + call addfld_to(compocn, 'Fioi_melth') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_melth', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_melth', rc=rc)) then - call addMapFrom(compice, 'Fioi_melth', compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Fioi_melth', & + call addmap_from(compice, 'Fioi_melth', compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, 'Fioi_melth', & mrg_from=compice, mrg_fld='Fioi_melth', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2057,13 +2057,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: salt flux from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compice, 'Fioi_salt') - call addFldTo(compocn, 'Fioi_salt') + call addfld_from(compice, 'Fioi_salt') + call addfld_to(compocn, 'Fioi_salt') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_salt', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_salt', rc=rc)) then - call addMapFrom(compice, 'Fioi_salt', compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Fioi_salt', & + call addmap_from(compice, 'Fioi_salt', compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, 'Fioi_salt', & mrg_from=compice, mrg_fld='Fioi_salt', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2071,13 +2071,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: hydrophylic black carbon deposition flux from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compice, 'Fioi_bcphi') - call addFldTo(compocn, 'Fioi_bcphi') + call addfld_from(compice, 'Fioi_bcphi') + call addfld_to(compocn, 'Fioi_bcphi') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_bcphi', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_bcphi', rc=rc)) then - call addMapFrom(compice, 'Fioi_bcphi', compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Fioi_bcphi', & + call addmap_from(compice, 'Fioi_bcphi', compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, 'Fioi_bcphi', & mrg_from=compice, mrg_fld='Fioi_bcphi', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2085,13 +2085,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: hydrophobic black carbon deposition flux from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compice, 'Fioi_bcpho') - call addFldTo(compocn, 'Fioi_bcpho') + call addfld_from(compice, 'Fioi_bcpho') + call addfld_to(compocn, 'Fioi_bcpho') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_bcpho', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_bcpho', rc=rc)) then - call addMapFrom(compice, 'Fioi_bcpho', compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Fioi_bcpho', & + call addmap_from(compice, 'Fioi_bcpho', compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, 'Fioi_bcpho', & mrg_from=compice, mrg_fld='Fioi_bcpho', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2099,13 +2099,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: dust flux from ice ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compice, 'Fioi_flxdst') - call addFldTo(compocn, 'Fioi_flxdst') + call addfld_from(compice, 'Fioi_flxdst') + call addfld_to(compocn, 'Fioi_flxdst') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Fioi_flxdst', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice, compice), 'Fioi_flxdst', rc=rc)) then - call addMapFrom(compice, 'Fioi_flxdst', compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Fioi_flxdst', & + call addmap_from(compice, 'Fioi_flxdst', compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, 'Fioi_flxdst', & mrg_from=compice, mrg_fld='Fioi_flxdst', mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -2121,38 +2121,38 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! fldlistFr(comprof) in order to be mapped correctly but the ocean ! does not receive it so it is advertised but it will! not be connected do ns = 1, is_local%wrap%num_icesheets - call addfldFrom(compglc(ns), 'Fogg_rofl') + call addfld_from(compglc(ns), 'Fogg_rofl') end do - call addfldFrom(comprof, 'Forr_rofl') - call addFldTo(compocn, 'Foxx_rofl') - call addFldTo(compocn, 'Flrr_flood') + call addfld_from(comprof, 'Forr_rofl') + call addfld_to(compocn, 'Foxx_rofl') + call addfld_to(compocn, 'Flrr_flood') do ns = 1, is_local%wrap%num_icesheets - call addfldFrom(compglc(ns), 'Fogg_rofi') + call addfld_from(compglc(ns), 'Fogg_rofi') end do - call addfldFrom(comprof, 'Forr_rofi') - call addFldTo(compocn, 'Foxx_rofi') + call addfld_from(comprof, 'Forr_rofi') + call addfld_to(compocn, 'Foxx_rofi') else if ( fldchk(is_local%wrap%FBExp(compocn), 'Foxx_rofl' , rc=rc)) then ! liquid from river and possibly flood from river to ocean if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofl' , rc=rc)) then if (trim(rof2ocn_liq_rmap) == 'unset') then - call addmapFrom(comprof, 'Forr_rofl', compocn, mapconsd, 'none', 'unset') + call addmap_from(comprof, 'Forr_rofl', compocn, mapconsd, 'none', 'unset') else - call addmapFrom(comprof, 'Forr_rofl', compocn, map_rof2ocn_liq, 'none', rof2ocn_liq_rmap) + call addmap_from(comprof, 'Forr_rofl', compocn, map_rof2ocn_liq, 'none', rof2ocn_liq_rmap) end if if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_flood', rc=rc)) then - call addmapFrom(comprof, 'Flrr_flood', compocn, mapconsd, 'one', rof2ocn_fmap) - call addmrgTo(compocn, 'Foxx_rofl', mrg_from=comprof, mrg_fld='Forr_rofl:Flrr_flood', mrg_type='sum') + call addmap_from(comprof, 'Flrr_flood', compocn, mapconsd, 'one', rof2ocn_fmap) + call addmrg_to(compocn, 'Foxx_rofl', mrg_from=comprof, mrg_fld='Forr_rofl:Flrr_flood', mrg_type='sum') else - call addmrgTo(compocn, 'Foxx_rofl', mrg_from=comprof, mrg_fld='Forr_rofl', mrg_type='sum') + call addmrg_to(compocn, 'Foxx_rofl', mrg_from=comprof, mrg_fld='Forr_rofl', mrg_type='sum') end if end if ! liquid from glc to ocean do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Fogg_rofl' , rc=rc)) then ! TODO: this custom map needs to be different for every ice sheet - how will this be handled? - call addmapFrom(compglc(ns), 'Fogg_rofl', compocn, map_glc2ocn_liq, 'one' , glc2ocn_liq_rmap) - call addmrgTo(compocn, 'Foxx_rofl', mrg_from=compglc(ns), mrg_fld='Fogg_rofl', mrg_type='sum') + call addmap_from(compglc(ns), 'Fogg_rofl', compocn, map_glc2ocn_liq, 'one' , glc2ocn_liq_rmap) + call addmrg_to(compocn, 'Foxx_rofl', mrg_from=compglc(ns), mrg_fld='Fogg_rofl', mrg_type='sum') end if end do end if @@ -2160,18 +2160,18 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! ice from river to ocean if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofi' , rc=rc)) then if (trim(rof2ocn_ice_rmap) == 'unset') then - call addmapFrom(comprof, 'Forr_rofi', compocn, mapconsd, 'none', 'unset') + call addmap_from(comprof, 'Forr_rofi', compocn, mapconsd, 'none', 'unset') else - call addmapFrom(comprof, 'Forr_rofi', compocn, map_rof2ocn_ice, 'none', rof2ocn_ice_rmap) + call addmap_from(comprof, 'Forr_rofi', compocn, map_rof2ocn_ice, 'none', rof2ocn_ice_rmap) end if - call addmrgTo(compocn, 'Foxx_rofi', mrg_from=comprof, mrg_fld='Forr_rofi', mrg_type='sum') + call addmrg_to(compocn, 'Foxx_rofi', mrg_from=comprof, mrg_fld='Forr_rofi', mrg_type='sum') end if ! ice from glc to ocean do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Fogg_rofi' , rc=rc)) then ! TODO: this custom map needs to be different for every ice sheet - how will this be handled? - call addmapFrom(compglc(ns), 'Fogg_rofi', compocn, map_glc2ocn_ice, 'one', glc2ocn_ice_rmap) - call addmrgTo(compocn, 'Foxx_rofi', mrg_from=compglc(ns), mrg_fld='Fogg_rofi', mrg_type='sum') + call addmap_from(compglc(ns), 'Fogg_rofi', compocn, map_glc2ocn_ice, 'one', glc2ocn_ice_rmap) + call addmrg_to(compocn, 'Foxx_rofi', mrg_from=compglc(ns), mrg_fld='Fogg_rofi', mrg_type='sum') end if end do end if @@ -2180,31 +2180,31 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) if (flds_wiso) then if (phase == 'advertise') then do ns = 1, is_local%wrap%num_icesheets - call addfldFrom(compglc(ns), 'Fogg_rofl_wiso') + call addfld_from(compglc(ns), 'Fogg_rofl_wiso') end do - call addfldFrom(comprof, 'Forr_rofl_wiso') - call addFldTo(compocn, 'Foxx_rofl_wiso') - call addFldTo(compocn, 'Flrr_flood_wiso') + call addfld_from(comprof, 'Forr_rofl_wiso') + call addfld_to(compocn, 'Foxx_rofl_wiso') + call addfld_to(compocn, 'Flrr_flood_wiso') do ns = 1, is_local%wrap%num_icesheets - call addfldFrom(compglc(ns), 'Fogg_rofi_wiso') + call addfld_from(compglc(ns), 'Fogg_rofi_wiso') end do - call addfldFrom(comprof, 'Forr_rofi_wiso') - call addFldTo(compocn, 'Foxx_rofi_wiso') + call addfld_from(comprof, 'Forr_rofi_wiso') + call addfld_to(compocn, 'Foxx_rofi_wiso') else if ( fldchk(is_local%wrap%FBExp(compocn), 'Foxx_rofl_wiso' , rc=rc)) then ! liquid from river and possibly flood from river to ocean if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofl_wiso' , rc=rc)) then if (trim(rof2ocn_liq_rmap) == 'unset') then - call addmapFrom(comprof, 'Forr_rofl_wiso', compocn, mapconsd, 'none', 'unset') + call addmap_from(comprof, 'Forr_rofl_wiso', compocn, mapconsd, 'none', 'unset') else - call addmapFrom(comprof, 'Forr_rofl_wiso', compocn, map_rof2ocn_liq, 'none', rof2ocn_liq_rmap) + call addmap_from(comprof, 'Forr_rofl_wiso', compocn, map_rof2ocn_liq, 'none', rof2ocn_liq_rmap) end if if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Flrr_flood_wiso', rc=rc)) then - call addmapFrom(comprof, 'Flrr_flood_wiso', compocn, mapconsd, 'one', rof2ocn_fmap) - call addmrgTo(compocn, 'Foxx_rofl_wiso', & + call addmap_from(comprof, 'Flrr_flood_wiso', compocn, mapconsd, 'one', rof2ocn_fmap) + call addmrg_to(compocn, 'Foxx_rofl_wiso', & mrg_from=comprof, mrg_fld='Forr_rofl:Flrr_flood', mrg_type='sum') else - call addmrgTo(compocn, 'Foxx_rofl_wiso', & + call addmrg_to(compocn, 'Foxx_rofl_wiso', & mrg_from=comprof, mrg_fld='Forr_rofl', mrg_type='sum') end if end if @@ -2212,8 +2212,8 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Fogg_rofl_wiso' , rc=rc)) then ! TODO: this custom map needs to be different for every ice sheet - how will this be handled? - call addmapFrom(compglc(ns), 'Fogg_rofl_wiso', compocn, map_glc2ocn_liq, 'one' , glc2ocn_liq_rmap) - call addmrgTo(compocn, 'Foxx_rofl_wiso', & + call addmap_from(compglc(ns), 'Fogg_rofl_wiso', compocn, map_glc2ocn_liq, 'one' , glc2ocn_liq_rmap) + call addmrg_to(compocn, 'Foxx_rofl_wiso', & mrg_from=compglc(ns), mrg_fld='Fogg_rofl_wiso', mrg_type='sum') end if end do @@ -2222,18 +2222,18 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! ice from river to ocean if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofi_wiso' , rc=rc)) then if (trim(rof2ocn_ice_rmap) == 'unset') then - call addmapFrom(comprof, 'Forr_rofi_wiso', compocn, mapconsd, 'none', 'unset') + call addmap_from(comprof, 'Forr_rofi_wiso', compocn, mapconsd, 'none', 'unset') else - call addmapFrom(comprof, 'Forr_rofi_wiso', compocn, map_rof2ocn_ice, 'none', rof2ocn_ice_rmap) + call addmap_from(comprof, 'Forr_rofi_wiso', compocn, map_rof2ocn_ice, 'none', rof2ocn_ice_rmap) end if - call addmrgTo(compocn, 'Foxx_rofi_wiso', mrg_from=comprof, mrg_fld='Forr_rofi', mrg_type='sum') + call addmrg_to(compocn, 'Foxx_rofi_wiso', mrg_from=comprof, mrg_fld='Forr_rofi', mrg_type='sum') end if ! ice from glc to ocean do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Fogg_rofi_wiso' , rc=rc)) then ! TODO: this custom map needs to be different for every ice sheet - how will this be handled? - call addmapFrom(compglc(ns), 'Fogg_rofi_wiso', compocn, map_glc2ocn_ice, 'one', glc2ocn_ice_rmap) - call addmrgTo(compocn, 'Foxx_rofi_wiso', & + call addmap_from(compglc(ns), 'Fogg_rofi_wiso', compocn, map_glc2ocn_ice, 'one', glc2ocn_ice_rmap) + call addmrg_to(compocn, 'Foxx_rofi_wiso', & mrg_from=compglc(ns), mrg_fld='Fogg_rofi_wiso', mrg_type='sum') end if end do @@ -2245,78 +2245,78 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ocn: Langmuir multiplier from wave !----------------------------- if (phase == 'advertise') then - call addfldFrom(compwav, 'Sw_lamult') - call addFldTo(compocn, 'Sw_lamult') + call addfld_from(compwav, 'Sw_lamult') + call addfld_to(compocn, 'Sw_lamult') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_lamult', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_lamult', rc=rc)) then - call addmapFrom(compwav, 'Sw_lamult', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrgTo(compocn, 'Sw_lamult', mrg_from=compwav, mrg_fld='Sw_lamult', mrg_type='copy') + call addmap_from(compwav, 'Sw_lamult', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrg_to(compocn, 'Sw_lamult', mrg_from=compwav, mrg_fld='Sw_lamult', mrg_type='copy') end if end if !----------------------------- ! to ocn: Stokes drift u component from wave !----------------------------- if (phase == 'advertise') then - call addfldFrom(compwav, 'Sw_ustokes') - call addFldTo(compocn, 'Sw_ustokes') + call addfld_from(compwav, 'Sw_ustokes') + call addfld_to(compocn, 'Sw_ustokes') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_ustokes', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_ustokes', rc=rc)) then - call addmapFrom(compwav, 'Sw_ustokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrgTo(compocn, 'Sw_ustokes', mrg_from=compwav, mrg_fld='Sw_ustokes', mrg_type='copy') + call addmap_from(compwav, 'Sw_ustokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrg_to(compocn, 'Sw_ustokes', mrg_from=compwav, mrg_fld='Sw_ustokes', mrg_type='copy') end if end if !----------------------------- ! to ocn: Stokes drift v component from wave !----------------------------- if (phase == 'advertise') then - call addfldFrom(compwav, 'Sw_vstokes') - call addFldTo(compocn, 'Sw_vstokes') + call addfld_from(compwav, 'Sw_vstokes') + call addfld_to(compocn, 'Sw_vstokes') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_vstokes', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_vstokes', rc=rc)) then - call addmapFrom(compwav, 'Sw_vstokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrgTo(compocn, 'Sw_vstokes', mrg_from=compwav, mrg_fld='Sw_vstokes', mrg_type='copy') + call addmap_from(compwav, 'Sw_vstokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrg_to(compocn, 'Sw_vstokes', mrg_from=compwav, mrg_fld='Sw_vstokes', mrg_type='copy') end if end if !----------------------------- ! to ocn: Stokes drift depth from wave !----------------------------- if (phase == 'advertise') then - call addfldFrom(compwav, 'Sw_hstokes') - call addFldTo(compocn, 'Sw_hstokes') + call addfld_from(compwav, 'Sw_hstokes') + call addfld_to(compocn, 'Sw_hstokes') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_hstokes', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_hstokes', rc=rc)) then - call addmapFrom(compwav, 'Sw_hstokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrgTo(compocn, 'Sw_hstokes', mrg_from=compwav, mrg_fld='Sw_hstokes', mrg_type='copy') + call addmap_from(compwav, 'Sw_hstokes', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrg_to(compocn, 'Sw_hstokes', mrg_from=compwav, mrg_fld='Sw_hstokes', mrg_type='copy') end if end if !----------------------------- ! to ocn: Partitioned stokes drift components in x-direction !----------------------------- if (phase == 'advertise') then - call addfldFrom(compwav, 'Sw_pstokes_x') - call addFldTo(compocn, 'Sw_pstokes_x') + call addfld_from(compwav, 'Sw_pstokes_x') + call addfld_to(compocn, 'Sw_pstokes_x') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_pstokes_x', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_pstokes_x', rc=rc)) then - call addmapFrom(compwav, 'Sw_pstokes_x', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrgTo(compocn, 'Sw_pstokes_x', mrg_from=compwav, mrg_fld='Sw_pstokes_x', mrg_type='copy') + call addmap_from(compwav, 'Sw_pstokes_x', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrg_to(compocn, 'Sw_pstokes_x', mrg_from=compwav, mrg_fld='Sw_pstokes_x', mrg_type='copy') end if end if !----------------------------- ! to ocn: Stokes drift depth from wave !----------------------------- if (phase == 'advertise') then - call addfldFrom(compwav, 'Sw_pstokes_y') - call addFldTo(compocn, 'Sw_pstokes_y') + call addfld_from(compwav, 'Sw_pstokes_y') + call addfld_to(compocn, 'Sw_pstokes_y') else if ( fldchk(is_local%wrap%FBExp(compocn) , 'Sw_pstokes_y', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav, compwav), 'Sw_pstokes_y', rc=rc)) then - call addmapFrom(compwav, 'Sw_pstokes_y', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) - call addmrgTo(compocn, 'Sw_pstokes_y', mrg_from=compwav, mrg_fld='Sw_pstokes_y', mrg_type='copy') + call addmap_from(compwav, 'Sw_pstokes_y', compocn, mapbilnr_nstod, 'one', wav2ocn_smap) + call addmrg_to(compocn, 'Sw_pstokes_y', mrg_from=compwav, mrg_fld='Sw_pstokes_y', mrg_type='copy') end if end if @@ -2328,13 +2328,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: downward longwave heat flux from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_lwdn') - call addfldTo(compice, 'Faxa_lwdn') + call addfld_from(compatm, 'Faxa_lwdn') + call addfld_to(compice, 'Faxa_lwdn') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_lwdn', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwdn', rc=rc)) then - call addMapFrom(compatm, 'Faxa_lwdn', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_lwdn', mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy') + call addmap_from(compatm, 'Faxa_lwdn', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_lwdn', mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2344,43 +2344,43 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: downward Diffuse visible incident solar radiation from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swndr') - call addfldTo(compice, 'Faxa_swndr') + call addfld_from(compatm, 'Faxa_swndr') + call addfld_to(compice, 'Faxa_swndr') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_swndr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swndr', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swndr', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_swndr', mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy') + call addmap_from(compatm, 'Faxa_swndr', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_swndr', mrg_from=compatm, mrg_fld='Faxa_swndr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swvdr') - call addfldTo(compice, 'Faxa_swvdr') + call addfld_from(compatm, 'Faxa_swvdr') + call addfld_to(compice, 'Faxa_swvdr') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_swvdr', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swvdr', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swvdr', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_swvdr', mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy') + call addmap_from(compatm, 'Faxa_swvdr', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_swvdr', mrg_from=compatm, mrg_fld='Faxa_swvdr', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swndf') - call addfldTo(compice, 'Faxa_swndf') + call addfld_from(compatm, 'Faxa_swndf') + call addfld_to(compice, 'Faxa_swndf') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_swndf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swndf', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swndf', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_swndf', mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy') + call addmap_from(compatm, 'Faxa_swndf', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_swndf', mrg_from=compatm, mrg_fld='Faxa_swndf', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_swvdf') - call addfldTo(compice, 'Faxa_swvdf') + call addfld_from(compatm, 'Faxa_swvdf') + call addfld_to(compice, 'Faxa_swvdf') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_swvdf', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_swvdf', rc=rc)) then - call addMapFrom(compatm, 'Faxa_swvdf', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_swvdf', mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy') + call addmap_from(compatm, 'Faxa_swvdf', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_swvdf', mrg_from=compatm, mrg_fld='Faxa_swvdf', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2389,13 +2389,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: hydrophylic black carbon wet deposition flux from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_bcph') - call addfldTo(compice, 'Faxa_bcph') + call addfld_from(compatm, 'Faxa_bcph') + call addfld_to(compice, 'Faxa_bcph') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_bcph', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_bcph', rc=rc)) then - call addMapFrom(compatm, 'Faxa_bcph', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_bcph', mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy') + call addmap_from(compatm, 'Faxa_bcph', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_bcph', mrg_from=compatm, mrg_fld='Faxa_bcph', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2404,13 +2404,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: hydrophylic organic carbon wet deposition flux from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_ocph') - call addfldTo(compice, 'Faxa_ocph') + call addfld_from(compatm, 'Faxa_ocph') + call addfld_to(compice, 'Faxa_ocph') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_ocph', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_ocph', rc=rc)) then - call addMapFrom(compatm, 'Faxa_ocph', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_ocph', mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy') + call addmap_from(compatm, 'Faxa_ocph', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_ocph', mrg_from=compatm, mrg_fld='Faxa_ocph', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2420,13 +2420,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: dust wet deposition flux (size 4) from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_dstwet') - call addfldTo(compice, 'Faxa_dstwet') + call addfld_from(compatm, 'Faxa_dstwet') + call addfld_to(compice, 'Faxa_dstwet') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_dstwet', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_dstwet', rc=rc)) then - call addMapFrom(compatm, 'Faxa_dstwet', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_dstwet', mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy') + call addmap_from(compatm, 'Faxa_dstwet', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_dstwet', mrg_from=compatm, mrg_fld='Faxa_dstwet', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2436,13 +2436,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: dust dry deposition flux (size 4) from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_dstdry') - call addfldTo(compice, 'Faxa_dstdry') + call addfld_from(compatm, 'Faxa_dstdry') + call addfld_to(compice, 'Faxa_dstdry') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Faxa_dstdry', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_dstdry', rc=rc)) then - call addMapFrom(compatm, 'Faxa_dstdry', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_dstdry', mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy') + call addmap_from(compatm, 'Faxa_dstdry', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_dstdry', mrg_from=compatm, mrg_fld='Faxa_dstdry', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2450,83 +2450,83 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: rain and snow rate from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_rainc') - call addFldFrom(compatm, 'Faxa_rainl') - call addFldFrom(compatm, 'Faxa_rain' ) - call addfldTo(compice, 'Faxa_rain' ) + call addfld_from(compatm, 'Faxa_rainc') + call addfld_from(compatm, 'Faxa_rainl') + call addfld_from(compatm, 'Faxa_rain' ) + call addfld_to(compice, 'Faxa_rain' ) else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_rain' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainc', rc=rc)) then - call addMapFrom(compatm, 'Faxa_rainc', compice, mapconsf, 'one', atm2ice_map) - call addMapFrom(compatm, 'Faxa_rainl', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_rain' , mrg_from=compatm, mrg_fld='Faxa_rainc:Faxa_rainl', mrg_type='sum') + call addmap_from(compatm, 'Faxa_rainc', compice, mapconsf, 'one', atm2ice_map) + call addmap_from(compatm, 'Faxa_rainl', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_rain' , mrg_from=compatm, mrg_fld='Faxa_rainc:Faxa_rainl', mrg_type='sum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_rain', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rain', rc=rc)) then - call addMapFrom(compatm, 'Faxa_rain', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_rain', mrg_from=compatm, mrg_fld='Faxa_rain', mrg_type='copy') + call addmap_from(compatm, 'Faxa_rain', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_rain', mrg_from=compatm, mrg_fld='Faxa_rain', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_snowc') - call addFldFrom(compatm, 'Faxa_snowl') - call addFldFrom(compatm, 'Faxa_snow' ) - call addfldTo(compice, 'Faxa_snow' ) + call addfld_from(compatm, 'Faxa_snowc') + call addfld_from(compatm, 'Faxa_snowl') + call addfld_from(compatm, 'Faxa_snow' ) + call addfld_to(compice, 'Faxa_snow' ) else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_snow' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowl', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowc', rc=rc)) then - call addMapFrom(compatm, 'Faxa_snowc', compice, mapconsf, 'one', atm2ice_map) - call addMapFrom(compatm, 'Faxa_snowl', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_snow' , & + call addmap_from(compatm, 'Faxa_snowc', compice, mapconsf, 'one', atm2ice_map) + call addmap_from(compatm, 'Faxa_snowl', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_snow' , & mrg_from=compatm, mrg_fld='Faxa_snowc:Faxa_snowl', mrg_type='sum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_snow', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snow', rc=rc)) then - call addMapFrom(compatm, 'Faxa_snow', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_snow', & + call addmap_from(compatm, 'Faxa_snow', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_snow', & mrg_from=compatm, mrg_fld='Faxa_snow', mrg_type='copy') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_rainc_wiso') - call addFldFrom(compatm, 'Faxa_rainl_wiso') - call addFldFrom(compatm, 'Faxa_rain_wiso' ) - call addfldTo(compice, 'Faxa_rain_wiso' ) + call addfld_from(compatm, 'Faxa_rainc_wiso') + call addfld_from(compatm, 'Faxa_rainl_wiso') + call addfld_from(compatm, 'Faxa_rain_wiso' ) + call addfld_to(compice, 'Faxa_rain_wiso' ) else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_rain_wiso' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainl_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rainc_wiso', rc=rc)) then - call addMapFrom(compatm, 'Faxa_rainc_wiso', compice, mapconsf, 'one', atm2ice_map) - call addMapFrom(compatm, 'Faxa_rainl_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_rain_wiso' , & + call addmap_from(compatm, 'Faxa_rainc_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmap_from(compatm, 'Faxa_rainl_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_rain_wiso' , & mrg_from=compatm, mrg_fld='Faxa_rainc_wiso:Faxa_rainl_wiso', mrg_type='sum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_rain_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_rain_wiso', rc=rc)) then - call addMapFrom(compatm, 'Faxa_rain_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_rain_wiso', & + call addmap_from(compatm, 'Faxa_rain_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_rain_wiso', & mrg_from=compatm, mrg_fld='Faxa_rain_wiso', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Faxa_snowc_wiso') - call addFldFrom(compatm, 'Faxa_snowl_wiso') - call addFldFrom(compatm, 'Faxa_snow_wiso' ) - call addfldTo(compice, 'Faxa_snow_wiso' ) + call addfld_from(compatm, 'Faxa_snowc_wiso') + call addfld_from(compatm, 'Faxa_snowl_wiso') + call addfld_from(compatm, 'Faxa_snow_wiso' ) + call addfld_to(compice, 'Faxa_snow_wiso' ) else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_snow_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowl_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snowc_wiso', rc=rc)) then - call addMapFrom(compatm, 'Faxa_snowc_wiso', compice, mapconsf, 'one', atm2ice_map) - call addMapFrom(compatm, 'Faxa_snowl_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_snow_wiso' , & + call addmap_from(compatm, 'Faxa_snowc_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmap_from(compatm, 'Faxa_snowl_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_snow_wiso' , & mrg_from=compatm, mrg_fld='Faxa_snowc_wiso:Faxa_snowl_wiso', mrg_type='sum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Faxa_snow_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_snow_wiso', rc=rc)) then - call addMapFrom(compatm, 'Faxa_snow_wiso', compice, mapconsf, 'one', atm2ice_map) - call addmrgTo(compice, 'Faxa_snow_wiso', mrg_from=compatm, mrg_fld='Faxa_snow_wiso', mrg_type='copy') + call addmap_from(compatm, 'Faxa_snow_wiso', compice, mapconsf, 'one', atm2ice_map) + call addmrg_to(compice, 'Faxa_snow_wiso', mrg_from=compatm, mrg_fld='Faxa_snow_wiso', mrg_type='copy') end if end if end if @@ -2535,65 +2535,65 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: height at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_z') - call addfldTo(compice, 'Sa_z') + call addfld_from(compatm, 'Sa_z') + call addfld_to(compice, 'Sa_z') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_z', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_z', rc=rc)) then - call addMapFrom(compatm, 'Sa_z', compice, mapbilnr, 'one', atm2ice_map) - call addmrgTo(compice, 'Sa_z', mrg_from=compatm, mrg_fld='Sa_z', mrg_type='copy') + call addmap_from(compatm, 'Sa_z', compice, mapbilnr, 'one', atm2ice_map) + call addmrg_to(compice, 'Sa_z', mrg_from=compatm, mrg_fld='Sa_z', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: pressure at the lowest model level fromatm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_pbot') - call addfldTo(compice, 'Sa_pbot') + call addfld_from(compatm, 'Sa_pbot') + call addfld_to(compice, 'Sa_pbot') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_pbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_pbot', rc=rc)) then - call addMapFrom(compatm, 'Sa_pbot', compice, mapbilnr, 'one', atm2ice_map) - call addmrgTo(compice, 'Sa_pbot', mrg_from=compatm, mrg_fld='Sa_pbot', mrg_type='copy') + call addmap_from(compatm, 'Sa_pbot', compice, mapbilnr, 'one', atm2ice_map) + call addmrg_to(compice, 'Sa_pbot', mrg_from=compatm, mrg_fld='Sa_pbot', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: temperature at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_tbot') - call addfldTo(compice, 'Sa_tbot') + call addfld_from(compatm, 'Sa_tbot') + call addfld_to(compice, 'Sa_tbot') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_tbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_tbot', rc=rc)) then - call addMapFrom(compatm, 'Sa_tbot', compice, mapbilnr, 'one', atm2ice_map) - call addmrgTo(compice, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') + call addmap_from(compatm, 'Sa_tbot', compice, mapbilnr, 'one', atm2ice_map) + call addmrg_to(compice, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: potential temperature at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_ptem') - call addfldTo(compice, 'Sa_ptem') + call addfld_from(compatm, 'Sa_ptem') + call addfld_to(compice, 'Sa_ptem') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_ptem', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_ptem', rc=rc)) then - call addMapFrom(compatm, 'Sa_ptem', compice, mapbilnr, 'one', atm2ice_map) - call addmrgTo(compice, 'Sa_ptem', mrg_from=compatm, mrg_fld='Sa_ptem', mrg_type='copy') + call addmap_from(compatm, 'Sa_ptem', compice, mapbilnr, 'one', atm2ice_map) + call addmrg_to(compice, 'Sa_ptem', mrg_from=compatm, mrg_fld='Sa_ptem', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: density at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_dens') - call addfldTo(compice, 'Sa_dens') + call addfld_from(compatm, 'Sa_dens') + call addfld_to(compice, 'Sa_dens') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_dens', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_dens', rc=rc)) then - call addMapFrom(compatm, 'Sa_dens', compice, mapbilnr, 'one', atm2ice_map) - call addmrgTo(compice, 'Sa_dens', mrg_from=compatm, mrg_fld='Sa_dens', mrg_type='copy') + call addmap_from(compatm, 'Sa_dens', compice, mapbilnr, 'one', atm2ice_map) + call addmrg_to(compice, 'Sa_dens', mrg_from=compatm, mrg_fld='Sa_dens', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2601,31 +2601,31 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: meridional wind at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_u') - call addfldTo(compice, 'Sa_u') + call addfld_from(compatm, 'Sa_u') + call addfld_to(compice, 'Sa_u') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_u', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_u', rc=rc)) then if (mapuv_with_cart3d) then - call addMapFrom(compatm, 'Sa_u', compice, mappatch_uv3d, 'one', atm2ice_map) + call addmap_from(compatm, 'Sa_u', compice, mappatch_uv3d, 'one', atm2ice_map) else - call addMapFrom(compatm, 'Sa_u', compice, mappatch, 'one', atm2ice_map) + call addmap_from(compatm, 'Sa_u', compice, mappatch, 'one', atm2ice_map) end if - call addmrgTo(compice, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') + call addmrg_to(compice, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_v') - call addfldTo(compice, 'Sa_v') + call addfld_from(compatm, 'Sa_v') + call addfld_to(compice, 'Sa_v') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_v', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_v', rc=rc)) then if (mapuv_with_cart3d) then - call addMapFrom(compatm, 'Sa_v', compice, mappatch_uv3d, 'one', atm2ice_map) + call addmap_from(compatm, 'Sa_v', compice, mappatch_uv3d, 'one', atm2ice_map) else - call addMapFrom(compatm, 'Sa_v', compice, mappatch, 'one', atm2ice_map) + call addmap_from(compatm, 'Sa_v', compice, mappatch, 'one', atm2ice_map) end if - call addmrgTo(compice, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') + call addmrg_to(compice, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2633,24 +2633,24 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: specific humidity for water isotopes at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_shum') - call addfldTo(compice, 'Sa_shum') + call addfld_from(compatm, 'Sa_shum') + call addfld_to(compice, 'Sa_shum') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_shum', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_shum', rc=rc)) then - call addMapFrom(compatm, 'Sa_shum', compice, mapbilnr, 'one', atm2ice_map) - call addmrgTo(compice, 'Sa_shum', mrg_from=compatm, mrg_fld='Sa_shum', mrg_type='copy') + call addmap_from(compatm, 'Sa_shum', compice, mapbilnr, 'one', atm2ice_map) + call addmrg_to(compice, 'Sa_shum', mrg_from=compatm, mrg_fld='Sa_shum', mrg_type='copy') end if end if if (flds_wiso) then if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_shum_wiso') - call addfldTo(compice, 'Sa_shum_wiso') + call addfld_from(compatm, 'Sa_shum_wiso') + call addfld_to(compice, 'Sa_shum_wiso') else if ( fldchk(is_local%wrap%FBexp(compice) , 'Sa_shum_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_shum_wiso', rc=rc)) then - call addMapFrom(compatm, 'Sa_shum_wiso', compice, mapbilnr, 'one', atm2ice_map) - call addmrgTo(compice, 'Sa_shum_wiso', mrg_from=compatm, mrg_fld='Sa_shum_wiso', mrg_type='copy') + call addmap_from(compatm, 'Sa_shum_wiso', compice, mapbilnr, 'one', atm2ice_map) + call addmrg_to(compice, 'Sa_shum_wiso', mrg_from=compatm, mrg_fld='Sa_shum_wiso', mrg_type='copy') end if end if end if @@ -2659,26 +2659,26 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: sea surface temperature from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compocn, 'So_t') - call addfldTo(compice, 'So_t') + call addfld_from(compocn, 'So_t') + call addfld_to(compice, 'So_t') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_t', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_t', rc=rc)) then - call addmapFrom(compocn, 'So_t', compice, mapfcopy , 'unset', 'unset') - call addmrgTo(compice, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') + call addmap_from(compocn, 'So_t', compice, mapfcopy , 'unset', 'unset') + call addmrg_to(compice, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: sea surface salinity from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compocn, 'So_s') - call addfldTo(compice, 'So_s') + call addfld_from(compocn, 'So_s') + call addfld_to(compice, 'So_s') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_s', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_s', rc=rc)) then - call addmapFrom(compocn, 'So_s', compice, mapfcopy , 'unset', 'unset') - call addmrgTo(compice, 'So_s', mrg_from=compocn, mrg_fld='So_s', mrg_type='copy') + call addmap_from(compocn, 'So_s', compice, mapfcopy , 'unset', 'unset') + call addmrg_to(compice, 'So_s', mrg_from=compocn, mrg_fld='So_s', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2686,23 +2686,23 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: meridional sea water velocity from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compocn, 'So_u') - call addfldTo(compice, 'So_u') + call addfld_from(compocn, 'So_u') + call addfld_to(compice, 'So_u') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_u', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_u', rc=rc)) then - call addmapFrom(compocn, 'So_u', compice, mapfcopy , 'unset', 'unset') - call addmrgTo(compice, 'So_u', mrg_from=compocn, mrg_fld='So_u', mrg_type='copy') + call addmap_from(compocn, 'So_u', compice, mapfcopy , 'unset', 'unset') + call addmrg_to(compice, 'So_u', mrg_from=compocn, mrg_fld='So_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfldFrom(compocn, 'So_v') - call addfldTo(compice, 'So_v') + call addfld_from(compocn, 'So_v') + call addfld_to(compice, 'So_v') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_v', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_v', rc=rc)) then - call addmapFrom(compocn, 'So_v', compice, mapfcopy , 'unset', 'unset') - call addmrgTo(compice, 'So_v', mrg_from=compocn, mrg_fld='So_v', mrg_type='copy') + call addmap_from(compocn, 'So_v', compice, mapfcopy , 'unset', 'unset') + call addmrg_to(compice, 'So_v', mrg_from=compocn, mrg_fld='So_v', mrg_type='copy') end if end if ! --------------------------------------------------------------------- @@ -2710,36 +2710,36 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: meridional sea surface slope from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compocn, 'So_dhdx') - call addfldTo(compice, 'So_dhdx') + call addfld_from(compocn, 'So_dhdx') + call addfld_to(compice, 'So_dhdx') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_dhdx', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_dhdx', rc=rc)) then - call addmapFrom(compocn, 'So_dhdx', compice, mapfcopy , 'unset', 'unset') - call addmrgTo(compice, 'So_dhdx', mrg_from=compocn, mrg_fld='So_dhdx', mrg_type='copy') + call addmap_from(compocn, 'So_dhdx', compice, mapfcopy , 'unset', 'unset') + call addmrg_to(compice, 'So_dhdx', mrg_from=compocn, mrg_fld='So_dhdx', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfldFrom(compocn, 'So_dhdy') - call addfldTo(compice, 'So_dhdy') + call addfld_from(compocn, 'So_dhdy') + call addfld_to(compice, 'So_dhdy') else if ( fldchk(is_local%wrap%FBexp(compice) , 'So_dhdy', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_dhdy', rc=rc)) then - call addmapFrom(compocn, 'So_dhdy', compice, mapfcopy , 'unset', 'unset') - call addmrgTo(compice, 'So_dhdy', mrg_from=compocn, mrg_fld='So_dhdy', mrg_type='copy') + call addmap_from(compocn, 'So_dhdy', compice, mapfcopy , 'unset', 'unset') + call addmrg_to(compice, 'So_dhdy', mrg_from=compocn, mrg_fld='So_dhdy', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to ice: ocean melt and freeze potential from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compocn, 'Fioo_q') - call addfldTo(compice, 'Fioo_q') + call addfld_from(compocn, 'Fioo_q') + call addfld_to(compice, 'Fioo_q') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'Fioo_q', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compice) , 'Fioo_q', rc=rc)) then - call addmapFrom(compocn, 'Fioo_q', compice, mapfcopy, 'unset', 'unset') - call addmrgTo(compice, 'Fioo_q', mrg_from=compocn, mrg_fld='Fioo_q', mrg_type='copy') + call addmap_from(compocn, 'Fioo_q', compice, mapfcopy, 'unset', 'unset') + call addmrg_to(compice, 'Fioo_q', mrg_from=compocn, mrg_fld='Fioo_q', mrg_type='copy') end if end if !----------------------------- @@ -2747,13 +2747,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !----------------------------- if (flds_wiso) then if (phase == 'advertise') then - call addfldFrom(compocn, 'So_roce_wiso') - call addfldTo(compice, 'So_roce_wiso') + call addfld_from(compocn, 'So_roce_wiso') + call addfld_to(compice, 'So_roce_wiso') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_roce_wiso', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compice) , 'So_roce_wiso', rc=rc)) then - call addmapFrom(compocn, 'So_roce_wiso', compice, mapfcopy, 'unset', 'unset') - call addmrgTo(compice, 'So_roce_wiso', mrg_from=compocn, mrg_fld='So_roce_wiso', mrg_type='copy') + call addmap_from(compocn, 'So_roce_wiso', compice, mapfcopy, 'unset', 'unset') + call addmrg_to(compice, 'So_roce_wiso', mrg_from=compocn, mrg_fld='So_roce_wiso', mrg_type='copy') end if end if end if @@ -2762,43 +2762,43 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to ice: frozen runoff from rof and glc ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(comprof, 'Firr_rofi') ! water flux into sea ice due to runoff (frozen) + call addfld_from(comprof, 'Firr_rofi') ! water flux into sea ice due to runoff (frozen) do ns = 1, is_local%wrap%num_icesheets - call addfldFrom(compglc(ns), 'Figg_rofi') ! glc frozen runoff_iceberg flux to ice + call addfld_from(compglc(ns), 'Figg_rofi') ! glc frozen runoff_iceberg flux to ice end do - call addfldTo(compice, 'Fixx_rofi') ! total frozen water flux into sea ice + call addfld_to(compice, 'Fixx_rofi') ! total frozen water flux into sea ice else if ( fldchk(is_local%wrap%FBExp(compice), 'Fixx_rofi', rc=rc)) then if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofi', rc=rc)) then - call addmapFrom(comprof, 'Forr_rofi', compice, mapconsf, 'none', rof2ocn_ice_rmap) - call addmrgTo(compice, 'Fixx_rofi', mrg_from=comprof, mrg_fld='Firr_rofi', mrg_type='sum') + call addmap_from(comprof, 'Forr_rofi', compice, mapconsf, 'none', rof2ocn_ice_rmap) + call addmrg_to(compice, 'Fixx_rofi', mrg_from=comprof, mrg_fld='Firr_rofi', mrg_type='sum') end if do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Figg_rofi', rc=rc)) then - call addmapFrom(compglc(ns), 'Figg_rofi', compice, mapconsf, 'one' , glc2ice_rmap) - call addmrgTo(compice, 'Fixx_rofi', mrg_from=compglc(ns), mrg_fld='Figg_rofi', mrg_type='sum') + call addmap_from(compglc(ns), 'Figg_rofi', compice, mapconsf, 'one' , glc2ice_rmap) + call addmrg_to(compice, 'Fixx_rofi', mrg_from=compglc(ns), mrg_fld='Figg_rofi', mrg_type='sum') end if end do end if end if if (flds_wiso) then if (phase == 'advertise') then - call addfldFrom(comprof, 'Firr_rofi_wiso') ! water flux into sea ice due to runoff (frozen) + call addfld_from(comprof, 'Firr_rofi_wiso') ! water flux into sea ice due to runoff (frozen) do ns = 1, is_local%wrap%num_icesheets - call addfldFrom(compglc(ns), 'Figg_rofi_wiso') ! glc frozen runoff_iceberg flux to ice + call addfld_from(compglc(ns), 'Figg_rofi_wiso') ! glc frozen runoff_iceberg flux to ice end do - call addfldTo(compice, 'Fixx_rofi_wiso') ! total frozen water flux into sea ice + call addfld_to(compice, 'Fixx_rofi_wiso') ! total frozen water flux into sea ice else if ( fldchk(is_local%wrap%FBExp(compice), 'Fixx_rofi_wiso', rc=rc)) then if (fldchk(is_local%wrap%FBImp(comprof, comprof), 'Forr_rofi_wiso', rc=rc)) then - call addmapFrom(comprof, 'Forr_rofi_wiso', compice, mapconsf, 'none', rof2ocn_ice_rmap) - call addmrgTo(compice, 'Fixx_rofi_wiso', & + call addmap_from(comprof, 'Forr_rofi_wiso', compice, mapconsf, 'none', rof2ocn_ice_rmap) + call addmrg_to(compice, 'Fixx_rofi_wiso', & mrg_from=comprof, mrg_fld='Firr_rofi_wiso', mrg_type='sum') end if do ns = 1, is_local%wrap%num_icesheets if (fldchk(is_local%wrap%FBImp(compglc(ns), compglc(ns)), 'Figg_rofi_wiso', rc=rc)) then - call addmapFrom(compglc(ns), 'Figg_rofi_wiso', compice, mapconsf, 'one' , glc2ice_rmap) - call addmrgTo(compice, 'Fixx_rofi_wiso', & + call addmap_from(compglc(ns), 'Figg_rofi_wiso', compice, mapconsf, 'one' , glc2ice_rmap) + call addmrg_to(compice, 'Fixx_rofi_wiso', & mrg_from=compglc(ns), mrg_fld='Figg_rofi_wiso', mrg_type='sum') end if end do @@ -2811,13 +2811,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! --------------------------------------------------------------------- if (wavice_coupling) then if (phase == 'advertise') then - call addfldFrom(compwav, 'Sw_elevation_spectrum') - call addfldTo(compice, 'Sw_elevation_spectrum') + call addfld_from(compwav, 'Sw_elevation_spectrum') + call addfld_to(compice, 'Sw_elevation_spectrum') else if ( fldchk(is_local%wrap%FBExp(compice) , 'Sw_elevation_spectrum', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav,compwav), 'Sw_elevation_spectrum', rc=rc)) then - call addmapFrom(compwav, 'Sw_elevation_spectrum', compice, mapbilnr, 'one', 'unset') - call addmrgTo(compice, 'Sw_elevation_spectrum', & + call addmap_from(compwav, 'Sw_elevation_spectrum', compice, mapbilnr, 'one', 'unset') + call addmrg_to(compice, 'Sw_elevation_spectrum', & mrg_from=compwav, mrg_fld='Sw_elevation_spectrum', mrg_type='copy') end if end if @@ -2831,14 +2831,14 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: fractional ice coverage wrt ocean from ice !---------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compice, 'Si_ifrac') - call addfldTo(compwav, 'Si_ifrac') + call addfld_from(compice, 'Si_ifrac') + call addfld_to(compwav, 'Si_ifrac') else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Si_ifrac', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_ifrac', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addMapFrom(compice, 'Si_ifrac', compwav, mapbilnr, 'one', ice2wav_smap) - call addmrgTo(compwav, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') + call addmap_from(compice, 'Si_ifrac', compwav, mapbilnr, 'one', ice2wav_smap) + call addmrg_to(compwav, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') end if end if !---------------------------------------------------------- @@ -2846,13 +2846,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !---------------------------------------------------------- if (wavice_coupling) then if (phase == 'advertise') then - call addfldFrom(compice, 'Si_thick') - call addfldTo(compwav, 'Si_thick') + call addfld_from(compice, 'Si_thick') + call addfld_to(compwav, 'Si_thick') else if (fldchk(is_local%wrap%FBexp(compwav) , 'Si_thick', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_thick', rc=rc)) then - call addMapFrom(compice, 'Si_thick', compwav, mapbilnr, 'one', ice2wav_smap) - call addmrgTo(compwav, 'Si_thick', mrg_from=compice, mrg_fld='Si_thick', mrg_type='copy') + call addmap_from(compice, 'Si_thick', compwav, mapbilnr, 'one', ice2wav_smap) + call addmrg_to(compwav, 'Si_thick', mrg_from=compice, mrg_fld='Si_thick', mrg_type='copy') end if end if end if @@ -2861,13 +2861,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !---------------------------------------------------------- if (wavice_coupling) then if (phase == 'advertise') then - call addfldFrom(compice, 'Si_floediam') - call addfldTo(compwav, 'Si_floediam') + call addfld_from(compice, 'Si_floediam') + call addfld_to(compwav, 'Si_floediam') else if (fldchk(is_local%wrap%FBexp(compwav) , 'Si_floediam', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice ), 'Si_floediam', rc=rc)) then - call addMapFrom(compice, 'Si_floediam', compwav, mapbilnr, 'one', ice2wav_smap) - call addmrgTo(compwav, 'Si_floediam', mrg_from=compice, mrg_fld='Si_floediam', mrg_type='copy') + call addmap_from(compice, 'Si_floediam', compwav, mapbilnr, 'one', ice2wav_smap) + call addmrg_to(compwav, 'Si_floediam', mrg_from=compice, mrg_fld='Si_floediam', mrg_type='copy') end if end if end if @@ -2875,39 +2875,39 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: ocean surface temperature from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compocn, 'So_t') - call addfldTo(compwav, 'So_t') + call addfld_from(compocn, 'So_t') + call addfld_to(compwav, 'So_t') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_t', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compwav) , 'So_t', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmapFrom(compocn, 'So_t', compwav, mapbilnr, 'one', ocn2wav_smap) - call addmrgTo(compwav, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') + call addmap_from(compocn, 'So_t', compwav, mapbilnr, 'one', ocn2wav_smap) + call addmrg_to(compwav, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') end if end if ! --------------------------------------------------------------------- ! to wav: ocean currents from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compocn, 'So_u') - call addfldTo(compwav, 'So_u') + call addfld_from(compocn, 'So_u') + call addfld_to(compwav, 'So_u') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_u', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compwav) , 'So_u', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmapFrom(compocn, 'So_u', compwav, mapbilnr, 'one', ocn2wav_smap) - call addmrgTo(compwav, 'So_u', mrg_from=compocn, mrg_fld='So_u', mrg_type='copy') + call addmap_from(compocn, 'So_u', compwav, mapbilnr, 'one', ocn2wav_smap) + call addmrg_to(compwav, 'So_u', mrg_from=compocn, mrg_fld='So_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addfldFrom(compocn, 'So_v') - call addfldTo(compwav, 'So_v') + call addfld_from(compocn, 'So_v') + call addfld_to(compwav, 'So_v') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_v', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compwav) , 'So_v', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmapFrom(compocn, 'So_v', compwav, mapbilnr, 'one', ocn2wav_smap) - call addmrgTo(compwav, 'So_v', mrg_from=compocn, mrg_fld='So_v', mrg_type='copy') + call addmap_from(compocn, 'So_v', compwav, mapbilnr, 'one', ocn2wav_smap) + call addmrg_to(compwav, 'So_v', mrg_from=compocn, mrg_fld='So_v', mrg_type='copy') end if end if @@ -2915,14 +2915,14 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: ocean boundary layer depth from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compocn, 'So_bldepth') - call addfldTo(compwav, 'So_bldepth') + call addfld_from(compocn, 'So_bldepth') + call addfld_to(compwav, 'So_bldepth') else if ( fldchk(is_local%wrap%FBImp(compocn, compocn), 'So_bldepth', rc=rc) .and. & fldchk(is_local%wrap%FBExp(compwav) , 'So_bldepth', rc=rc)) then ! By default will be using a custom map - but if one is not available, use a generated bilinear instead - call addmapFrom(compocn, 'So_bldepth', compwav, mapbilnr, 'one', ocn2wav_smap) - call addmrgTo(compwav, 'So_bldepth', mrg_from=compocn, mrg_fld='So_bldepth', mrg_type='copy') + call addmap_from(compocn, 'So_bldepth', compwav, mapbilnr, 'one', ocn2wav_smap) + call addmrg_to(compwav, 'So_bldepth', mrg_from=compocn, mrg_fld='So_bldepth', mrg_type='copy') end if end if @@ -2930,23 +2930,23 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: zonal and meridional winds at the lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_u') - call addfldTo(compwav, 'Sa_u') + call addfld_from(compatm, 'Sa_u') + call addfld_to(compwav, 'Sa_u') else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Sa_u', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_u', rc=rc)) then - call addMapFrom(compatm, 'Sa_u', compwav, mapbilnr, 'one', atm2wav_map) - call addmrgTo(compwav, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') + call addmap_from(compatm, 'Sa_u', compwav, mapbilnr, 'one', atm2wav_map) + call addmrg_to(compwav, 'Sa_u', mrg_from=compatm, mrg_fld='Sa_u', mrg_type='copy') end if end if if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_v') - call addfldTo(compwav, 'Sa_v') + call addfld_from(compatm, 'Sa_v') + call addfld_to(compwav, 'Sa_v') else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Sa_v', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_v', rc=rc)) then - call addMapFrom(compatm, 'Sa_v', compwav, mapbilnr, 'one', atm2wav_map) - call addmrgTo(compwav, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') + call addmap_from(compatm, 'Sa_v', compwav, mapbilnr, 'one', atm2wav_map) + call addmrg_to(compwav, 'Sa_v', mrg_from=compatm, mrg_fld='Sa_v', mrg_type='copy') end if end if @@ -2954,13 +2954,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to wav: temperature at lowest model level from atm ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_tbot') - call addfldTo(compwav, 'Sa_tbot') + call addfld_from(compatm, 'Sa_tbot') + call addfld_to(compwav, 'Sa_tbot') else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Sa_tbot', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm ), 'Sa_tbot', rc=rc)) then - call addMapFrom(compatm, 'Sa_tbot', compwav, mapbilnr, 'one', atm2wav_map) - call addmrgTo(compwav, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') + call addmap_from(compatm, 'Sa_tbot', compwav, mapbilnr, 'one', atm2wav_map) + call addmrg_to(compwav, 'Sa_tbot', mrg_from=compatm, mrg_fld='Sa_tbot', mrg_type='copy') end if end if @@ -2972,13 +2972,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: water flux from land (liquid surface) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Flrl_rofsur') - call addfldTo(comprof, 'Flrl_rofsur') + call addfld_from(complnd, 'Flrl_rofsur') + call addfld_to(comprof, 'Flrl_rofsur') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_rofsur', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_rofsur', rc=rc)) then - call addmapFrom(complnd, 'Flrl_rofsur', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrgTo(comprof, 'Flrl_rofsur', & + call addmap_from(complnd, 'Flrl_rofsur', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrg_to(comprof, 'Flrl_rofsur', & mrg_from=complnd, mrg_fld='Flrl_rofsur', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -2987,13 +2987,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: water flux from land (ice surface) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Flrl_rofi') - call addfldTo(comprof, 'Flrl_rofi') + call addfld_from(complnd, 'Flrl_rofi') + call addfld_to(comprof, 'Flrl_rofi') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_rofi', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_rofi', rc=rc)) then - call addmapFrom(complnd, 'Flrl_rofi', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrgTo(comprof, 'Flrl_rofi', & + call addmap_from(complnd, 'Flrl_rofi', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrg_to(comprof, 'Flrl_rofi', & mrg_from=complnd, mrg_fld='Flrl_rofi', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -3002,13 +3002,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: water flux from land (liquid glacier, wetland, and lake) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Flrl_rofgwl') - call addfldTo(comprof, 'Flrl_rofgwl') + call addfld_from(complnd, 'Flrl_rofgwl') + call addfld_to(comprof, 'Flrl_rofgwl') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_rofgwl', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_rofgwl', rc=rc)) then - call addmapFrom(complnd, 'Flrl_rofgwl', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrgTo(comprof, 'Flrl_rofgwl', & + call addmap_from(complnd, 'Flrl_rofgwl', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrg_to(comprof, 'Flrl_rofgwl', & mrg_from=complnd, mrg_fld='Flrl_rofgwl', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -3017,13 +3017,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: water flux from land (liquid subsurface) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Flrl_rofsub') - call addfldTo(comprof, 'Flrl_rofsub') + call addfld_from(complnd, 'Flrl_rofsub') + call addfld_to(comprof, 'Flrl_rofsub') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_rofsub', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_rofsub', rc=rc)) then - call addmapFrom(complnd, 'Flrl_rofsub', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrgTo(comprof, 'Flrl_rofsub', & + call addmap_from(complnd, 'Flrl_rofsub', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrg_to(comprof, 'Flrl_rofsub', & mrg_from=complnd, mrg_fld='Flrl_rofsub', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -3032,13 +3032,13 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to rof: irrigation flux from land (withdrawal from rivers) ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Flrl_irrig') - call addfldTo(comprof, 'Flrl_irrig') + call addfld_from(complnd, 'Flrl_irrig') + call addfld_to(comprof, 'Flrl_irrig') else if ( fldchk(is_local%wrap%FBImp(complnd, complnd), 'Flrl_irrig', rc=rc) .and. & fldchk(is_local%wrap%FBExp(comprof) , 'Flrl_irrig', rc=rc)) then - call addmapFrom(complnd, 'Flrl_irrig', comprof, mapconsf, 'lfrac', lnd2rof_map) - call addmrgTo(comprof, 'Flrl_irrig', & + call addmap_from(complnd, 'Flrl_irrig', comprof, mapconsf, 'lfrac', lnd2rof_map) + call addmrg_to(comprof, 'Flrl_irrig', & mrg_from=complnd, mrg_fld='Flrl_irrig', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if end if @@ -3058,25 +3058,25 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! Note : Sl_topo is sent from lnd -> med, but is NOT sent to glc (only used for the remapping in the mediator) if (phase == 'advertise') then - call addFldFrom(complnd, 'Sl_tsrf_elev') ! surface temperature of glacier (1->glc_nec+1) - call addFldFrom(complnd, 'Sl_topo_elev') ! surface heights of glacier (1->glc_nec+1) - call addFldFrom(complnd, 'Flgl_qice_elev') ! glacier ice flux (1->glc_nec+1) + call addfld_from(complnd, 'Sl_tsrf_elev') ! surface temperature of glacier (1->glc_nec+1) + call addfld_from(complnd, 'Sl_topo_elev') ! surface heights of glacier (1->glc_nec+1) + call addfld_from(complnd, 'Flgl_qice_elev') ! glacier ice flux (1->glc_nec+1) do ns = 1,is_local%wrap%num_icesheets - call addfldTo(compglc(ns), 'Sl_tsrf') - call addfldTo(compglc(ns), 'Flgl_qice') + call addfld_to(compglc(ns), 'Sl_tsrf') + call addfld_to(compglc(ns), 'Flgl_qice') end do else ! custom mapping, accumulation and merging will be done in prep_glc_mod.F90 do ns = 1,is_local%wrap%num_icesheets if ( fldchk(is_local%wrap%FBImp(complnd,complnd) , 'Flgl_qice_elev', rc=rc)) then - call addmapFrom(complnd, 'Flgl_qice_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') + call addmap_from(complnd, 'Flgl_qice_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') end if if ( fldchk(is_local%wrap%FBImp(complnd,complnd) , 'Sl_tsrf_elev' , rc=rc)) then - call addmapFrom(complnd, 'Sl_tsrf_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') + call addmap_from(complnd, 'Sl_tsrf_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') end if if ( fldchk(is_local%wrap%FBImp(complnd,complnd) , 'Sl_topo_elev' , rc=rc)) then ! This is needed just for mappingn to glc - but is not sent as a field - call addmapFrom(complnd, 'Sl_topo_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') + call addmap_from(complnd, 'Sl_topo_elev', compglc(ns), mapbilnr, 'lfrac', 'unset') end if end do end if @@ -3086,21 +3086,21 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) !----------------------------- if (is_local%wrap%ocn2glc_coupling) then if (phase == 'advertise') then - call addfldFrom(compocn, 'So_t_depth') - call addfldFrom(compocn, 'So_s_depth') + call addfld_from(compocn, 'So_t_depth') + call addfld_from(compocn, 'So_s_depth') do ns = 1,is_local%wrap%num_icesheets - call addfldTo(compglc(ns), 'So_t_depth') - call addfldTo(compglc(ns), 'So_s_depth') + call addfld_to(compglc(ns), 'So_t_depth') + call addfld_to(compglc(ns), 'So_s_depth') end do else ! custom mapping, accumulation and merging will be done in prep_glc_mod.F90 ! the following is used to create the route handle do ns = 1,is_local%wrap%num_icesheets if ( fldchk(is_local%wrap%FBImp(compocn,compocn) , 'So_t_depth', rc=rc)) then - call addmapFrom(compocn, 'So_t_depth', compglc(ns), mapbilnr, 'none', 'unset') + call addmap_from(compocn, 'So_t_depth', compglc(ns), mapbilnr, 'none', 'unset') end if if ( fldchk(is_local%wrap%FBImp(compocn,compocn) , 'So_s_depth', rc=rc)) then - call addmapFrom(compocn, 'So_s_depth', compglc(ns), mapbilnr, 'none', 'unset') + call addmap_from(compocn, 'So_s_depth', compglc(ns), mapbilnr, 'none', 'unset') end if end do end if @@ -3130,16 +3130,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd and ocn: prognostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_co2prog') - call addfldTo(complnd, 'Sa_co2prog') - call addFldTo(compocn, 'Sa_co2prog') + call addfld_from(compatm, 'Sa_co2prog') + call addfld_to(complnd, 'Sa_co2prog') + call addfld_to(compocn, 'Sa_co2prog') else - call addMapFrom(compatm, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) - call addMapFrom(compatm, 'Sa_co2prog', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) + call addmap_from(compatm, 'Sa_co2prog', compocn, mapbilnr, 'one', atm2ocn_map) - call addmrgTo(complnd, 'Sa_co2prog', & + call addmrg_to(complnd, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') - call addmrgTo(compocn, 'Sa_co2prog', & + call addmrg_to(compocn, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') end if @@ -3147,16 +3147,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd and ocn: diagnostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_co2diag') - call addfldTo(complnd, 'Sa_co2diag') - call addFldTo(compocn, 'Sa_co2diag') + call addfld_from(compatm, 'Sa_co2diag') + call addfld_to(complnd, 'Sa_co2diag') + call addfld_to(compocn, 'Sa_co2diag') else - call addMapFrom(compatm, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) - call addMapFrom(compatm, 'Sa_co2diag', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) + call addmap_from(compatm, 'Sa_co2diag', compocn, mapbilnr, 'one', atm2ocn_map) - call addmrgTo(complnd, 'Sa_co2diag', & + call addmrg_to(complnd, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') - call addmrgTo(compocn, 'Sa_co2diag', & + call addmrg_to(compocn, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') end if @@ -3166,11 +3166,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: prognostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_co2prog') - call addfldTo(complnd, 'Sa_co2prog') + call addfld_from(compatm, 'Sa_co2prog') + call addfld_to(complnd, 'Sa_co2prog') else - call addMapFrom(compatm, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Sa_co2prog', & + call addmap_from(compatm, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') end if @@ -3178,11 +3178,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd: diagnostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_co2diag') - call addfldTo(complnd, 'Sa_co2diag') + call addfld_from(compatm, 'Sa_co2diag') + call addfld_to(complnd, 'Sa_co2diag') else - call addMapFrom(compatm, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) - call addmrgTo(complnd, 'Sa_co2diag', & + call addmap_from(compatm, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) + call addmrg_to(complnd, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') end if @@ -3190,11 +3190,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface flux of CO2 from land ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Fall_fco2_lnd') - call addfldTo(compatm, 'Fall_fco2_lnd') + call addfld_from(complnd, 'Fall_fco2_lnd') + call addfld_to(compatm, 'Fall_fco2_lnd') else - call addmapFrom(complnd, 'Fall_fco2_lnd', compatm, mapconsf, 'one', lnd2atm_map) - call addmrgTo(compatm, 'Fall_fco2_lnd', & + call addmap_from(complnd, 'Fall_fco2_lnd', compatm, mapconsf, 'one', lnd2atm_map) + call addmrg_to(compatm, 'Fall_fco2_lnd', & mrg_from=complnd, mrg_fld='Fall_fco2_lnd', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if @@ -3204,16 +3204,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd and ocn: prognostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_co2prog') - call addfldTo(complnd, 'Sa_co2prog') - call addFldTo(compocn, 'Sa_co2prog') + call addfld_from(compatm, 'Sa_co2prog') + call addfld_to(complnd, 'Sa_co2prog') + call addfld_to(compocn, 'Sa_co2prog') else - call addMapFrom(compatm, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) - call addMapFrom(compatm, 'Sa_co2prog', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_co2prog', complnd, mapbilnr, 'one', atm2lnd_map) + call addmap_from(compatm, 'Sa_co2prog', compocn, mapbilnr, 'one', atm2ocn_map) - call addmrgTo(complnd, 'Sa_co2prog', & + call addmrg_to(complnd, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') - call addmrgTo(compocn, 'Sa_co2prog', & + call addmrg_to(compocn, 'Sa_co2prog', & mrg_from=compatm, mrg_fld='Sa_co2prog', mrg_type='copy') end if @@ -3221,16 +3221,16 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to lnd and ocn: diagnostic CO2 at the lowest atm model level ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(compatm, 'Sa_co2diag') - call addfldTo(complnd, 'Sa_co2diag') - call addFldTo(compocn, 'Sa_co2diag') + call addfld_from(compatm, 'Sa_co2diag') + call addfld_to(complnd, 'Sa_co2diag') + call addfld_to(compocn, 'Sa_co2diag') else - call addMapFrom(compatm, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) - call addMapFrom(compatm, 'Sa_co2diag', compocn, mapbilnr, 'one', atm2ocn_map) + call addmap_from(compatm, 'Sa_co2diag', complnd, mapbilnr, 'one', atm2lnd_map) + call addmap_from(compatm, 'Sa_co2diag', compocn, mapbilnr, 'one', atm2ocn_map) - call addmrgTo(complnd, 'Sa_co2diag', & + call addmrg_to(complnd, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') - call addmrgTo(compocn, 'Sa_co2diag', & + call addmrg_to(compocn, 'Sa_co2diag', & mrg_from=compatm, mrg_fld='Sa_co2diag', mrg_type='copy') end if @@ -3238,11 +3238,11 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface flux of CO2 from land ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addFldFrom(complnd, 'Fall_fco2_lnd') - call addfldTo(compatm, 'Fall_fco2_lnd') + call addfld_from(complnd, 'Fall_fco2_lnd') + call addfld_to(compatm, 'Fall_fco2_lnd') else - call addmapFrom(complnd, 'Fall_fco2_lnd', compatm, mapconsf, 'one', lnd2atm_map) - call addmrgTo(compatm, 'Fall_fco2_lnd', & + call addmap_from(complnd, 'Fall_fco2_lnd', compatm, mapconsf, 'one', lnd2atm_map) + call addmrg_to(compatm, 'Fall_fco2_lnd', & mrg_from=complnd, mrg_fld='Fall_fco2_lnd', mrg_type='copy_with_weights', mrg_fracname='lfrac') end if @@ -3250,10 +3250,10 @@ subroutine esmFldsExchange_cesm(gcomp, phase, rc) ! to atm: surface flux of CO2 from ocn ! --------------------------------------------------------------------- if (phase == 'advertise') then - call addfldFrom(compocn, 'Faoo_fco2_ocn') - call addfldTo(compatm, 'Faoo_fco2_ocn') + call addfld_from(compocn, 'Faoo_fco2_ocn') + call addfld_to(compatm, 'Faoo_fco2_ocn') else - call addmapFrom(compocn, 'Faoo_fco2_ocn', compatm, mapconsd, 'one', ocn2atm_map) + call addmap_from(compocn, 'Faoo_fco2_ocn', compatm, mapconsd, 'one', ocn2atm_map) ! custom merge in med_phases_prep_atm end if endif diff --git a/mediator/esmFldsExchange_hafs_mod.F90 b/mediator/esmFldsExchange_hafs_mod.F90 index 26eaf2e03..6aa71596d 100644 --- a/mediator/esmFldsExchange_hafs_mod.F90 +++ b/mediator/esmFldsExchange_hafs_mod.F90 @@ -86,8 +86,8 @@ end subroutine esmFldsExchange_hafs subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) - use esmFlds, only : addfldTo => med_fldList_AddFldTo - use esmFlds, only : addfldFrom => med_fldList_AddFldFrom + use esmFlds, only : addfld_to => med_fldList_addfld_to + use esmFlds, only : addfld_from => med_fldList_addfld_from ! input/output parameters: type(ESMF_GridComp) :: gcomp @@ -123,8 +123,8 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) value=cvalue, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return do n = 1,ncomps - call addfldFrom(n, trim(cvalue)) - call addfldTo(n, trim(cvalue)) + call addfld_from(n, trim(cvalue)) + call addfld_to(n, trim(cvalue)) end do end if @@ -141,12 +141,12 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) !---------------------------------------------------------- ! to med: masks from components !---------------------------------------------------------- - call addfldFrom(compocn, 'So_omask') + call addfld_from(compocn, 'So_omask') !---------------------------------------------------------- ! to med: frac from components !---------------------------------------------------------- - call addfldTo(compatm, 'So_ofrac') + call addfld_to(compatm, 'So_ofrac') !===================================================================== ! FIELDS TO ATMOSPHERE @@ -160,8 +160,8 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) S_flds = (/'So_t'/) ! sea_surface_temperature do n = 1,size(S_flds) fldname = trim(S_flds(n)) - call addfldFrom(compocn, trim(fldname)) - call addfldTo(compatm, trim(fldname)) + call addfld_from(compocn, trim(fldname)) + call addfld_to(compatm, trim(fldname)) end do deallocate(S_flds) end if @@ -174,8 +174,8 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) S_flds = (/'Sw_z0'/) ! wave_z0_roughness_length do n = 1,size(S_flds) fldname = trim(S_flds(n)) - call addfldFrom(compwav, trim(fldname)) - call addfldTo(compatm, trim(fldname)) + call addfld_from(compwav, trim(fldname)) + call addfld_to(compatm, trim(fldname)) end do deallocate(S_flds) end if @@ -197,8 +197,8 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) 'Sa_tskn' /) ! inst_temp_height_surface do n = 1,size(S_flds) fldname = trim(S_flds(n)) - call addfldFrom(compatm, trim(fldname)) - call addfldTo(compocn, trim(fldname)) + call addfld_from(compatm, trim(fldname)) + call addfld_to(compocn, trim(fldname)) end do deallocate(S_flds) end if @@ -218,8 +218,8 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) do n = 1,size(F_flds,1) fldname1 = trim(F_flds(n,1)) fldname2 = trim(F_flds(n,2)) - call addfldFrom(compatm, trim(fldname1)) - call addfldTo(compocn, trim(fldname2)) + call addfld_from(compatm, trim(fldname1)) + call addfld_to(compocn, trim(fldname2)) end do deallocate(F_flds) end if @@ -236,8 +236,8 @@ subroutine esmFldsExchange_hafs_advt(gcomp, phase, rc) S_flds = (/'Sa_u10m', 'Sa_v10m'/) do n = 1,size(S_flds) fldname = trim(S_flds(n)) - call addfldFrom(compatm, trim(fldname)) - call addfldTo(compwav, trim(fldname)) + call addfld_from(compatm, trim(fldname)) + call addfld_to(compwav, trim(fldname)) end do deallocate(S_flds) end if @@ -297,8 +297,8 @@ subroutine esmFldsExchange_hafs_init(gcomp, phase, rc) use med_internalstate_mod , only : mapfcopy, mapnstod, mapnstod_consd use med_internalstate_mod , only : mapfillv_bilnr use med_internalstate_mod , only : mapnstod_consf - use esmFlds , only : addmapFrom => med_fldList_AddMapFrom - use esmFlds , only : addmrgTo => med_fldList_AddMrgTo + use esmFlds , only : addmap_from => med_fldList_addmap_from + use esmFlds , only : addmrg_to => med_fldList_addmrg_to ! input/output parameters: type(ESMF_GridComp) :: gcomp @@ -369,9 +369,9 @@ subroutine esmFldsExchange_hafs_init(gcomp, phase, rc) if (fldchk(is_local%wrap%FBExp(compatm),trim(fldname),rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn),trim(fldname),rc=rc) & ) then - call addmapFrom(compocn, trim(fldname), compatm, & + call addmap_from(compocn, trim(fldname), compatm, & mapfillv_bilnr, hafs_attr%mapnorm, hafs_attr%ocn2atm_smap) - call addmrgTo(compatm, trim(fldname), & + call addmrg_to(compatm, trim(fldname), & mrg_from=compocn, mrg_fld=trim(fldname), mrg_type='copy') end if end do @@ -389,9 +389,9 @@ subroutine esmFldsExchange_hafs_init(gcomp, phase, rc) if (fldchk(is_local%wrap%FBExp(compatm),trim(fldname),rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav,compwav),trim(fldname),rc=rc) & ) then - call addmapFrom(compwav, trim(fldname), compatm, & + call addmap_from(compwav, trim(fldname), compatm, & mapfillv_bilnr, hafs_attr%mapnorm, hafs_attr%wav2atm_smap) - call addmrgTo(compatm, trim(fldname), & + call addmrg_to(compatm, trim(fldname), & mrg_from=compwav, mrg_fld=trim(fldname), mrg_type='copy') end if end do @@ -418,9 +418,9 @@ subroutine esmFldsExchange_hafs_init(gcomp, phase, rc) if (fldchk(is_local%wrap%FBExp(compocn),trim(fldname),rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm),trim(fldname),rc=rc) & ) then - call addmapFrom(compatm, trim(fldname), compocn, & + call addmap_from(compatm, trim(fldname), compocn, & mapfillv_bilnr, hafs_attr%mapnorm, hafs_attr%atm2ocn_smap) - call addmrgTo(compocn, trim(fldname), & + call addmrg_to(compocn, trim(fldname), & mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') end if end do @@ -445,9 +445,9 @@ subroutine esmFldsExchange_hafs_init(gcomp, phase, rc) if (fldchk(is_local%wrap%FBExp(compocn),trim(fldname2),rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm),trim(fldname1),rc=rc) & ) then - call addmapFrom(compatm, trim(fldname1), compocn, & + call addmap_from(compatm, trim(fldname1), compocn, & mapfillv_bilnr, hafs_attr%mapnorm, hafs_attr%atm2ocn_smap) - call addmrgTo(compocn, trim(fldname2), & + call addmrg_to(compocn, trim(fldname2), & mrg_from=compatm, mrg_fld=trim(fldname1), mrg_type='copy') end if end do @@ -469,9 +469,9 @@ subroutine esmFldsExchange_hafs_init(gcomp, phase, rc) if (fldchk(is_local%wrap%FBexp(compwav),trim(fldname),rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname),rc=rc) & ) then - call addmapFrom(compatm, trim(fldname), compwav, & + call addmap_from(compatm, trim(fldname), compwav, & mapfillv_bilnr, hafs_attr%mapnorm, hafs_attr%atm2wav_smap) - call addmrgTo(compwav, trim(fldname), & + call addmrg_to(compwav, trim(fldname), & mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') end if end do diff --git a/mediator/esmFldsExchange_nems_mod.F90 b/mediator/esmFldsExchange_nems_mod.F90 index 8e9ecc61d..6f6e5c083 100644 --- a/mediator/esmFldsExchange_nems_mod.F90 +++ b/mediator/esmFldsExchange_nems_mod.F90 @@ -33,12 +33,12 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) use med_internalstate_mod , only : mapconsf_aofrac, mapbilnr_nstod use med_internalstate_mod , only : coupling_mode, mapnames use esmFlds , only : med_fldList_type - use esmFlds , only : addfldTo => med_fldList_AddFldTo - use esmFlds , only : addmrgTo => med_fldList_AddMrgTo - use esmFlds , only : addfldFrom => med_fldList_AddFldFrom - use esmFlds , only : addmapFrom => med_fldList_AddMapFrom - use esmFlds , only : addaofluxFld => med_fldList_addaofluxFld - use esmFlds , only : addaofluxMap => med_fldList_addaofluxMap + use esmFlds , only : addfld_to => med_fldList_addfld_to + use esmFlds , only : addmrg_to => med_fldList_addmrg_to + use esmFlds , only : addfld_from => med_fldList_addfld_from + use esmFlds , only : addmap_from => med_fldList_addmap_from + use esmFlds , only : addfld_aoflux => med_fldList_addfld_aoflux + use esmFlds , only : addmap_aoflux => med_fldList_addmap_aoflux use med_internalstate_mod , only : InternalState, mastertask, logunit @@ -84,8 +84,8 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) call NUOPC_CompAttributeGet(gcomp, name="ScalarFieldName", value=cvalue, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return do n = 1,ncomps - call addFldTo(n, trim(cvalue)) - call addfldFrom(n, trim(cvalue)) + call addfld_to(n, trim(cvalue)) + call addfld_from(n, trim(cvalue)) end do end if @@ -95,13 +95,13 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! masks from components if (phase == 'advertise') then - if (is_local%wrap%comp_present(compice)) call addfldFrom(compice, 'Si_imask') - if (is_local%wrap%comp_present(compocn)) call addfldFrom(compocn, 'So_omask') - if (is_local%wrap%comp_present(complnd)) call addFldFrom(complnd, 'Sl_lfrin') + if (is_local%wrap%comp_present(compice)) call addfld_from(compice, 'Si_imask') + if (is_local%wrap%comp_present(compocn)) call addfld_from(compocn, 'So_omask') + if (is_local%wrap%comp_present(complnd)) call addfld_from(complnd, 'Sl_lfrin') else if ( fldchk(is_local%wrap%FBexp(compice) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), trim(fldname), rc=rc)) then - call addMapFrom(compocn, 'So_omask', compice, mapfcopy, 'unset', 'unset') + call addmap_from(compocn, 'So_omask', compice, mapfcopy, 'unset', 'unset') end if end if @@ -114,11 +114,11 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) )then - call addfldFrom(compatm, trim(fldname)) + call addfld_from(compatm, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmapFrom(compatm, trim(fldname), compocn, maptype, 'one', 'unset') + call addmap_from(compatm, trim(fldname), compocn, maptype, 'one', 'unset') end if end if end do @@ -131,7 +131,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) do n = 1,size(flds) fldname = trim(flds(n)) if (phase == 'advertise') then - call addaofluxfld(trim(fldname)) + call addfld_aoflux(trim(fldname)) end if end do deallocate(flds) @@ -146,11 +146,11 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) )then - call addfldFrom(compatm, trim(fldname)) + call addfld_from(compatm, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmapFrom(compatm, trim(fldname), compocn, maptype, 'one', 'unset') + call addmap_from(compatm, trim(fldname), compocn, maptype, 'one', 'unset') end if end if end do @@ -164,7 +164,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) do n = 1,size(flds) fldname = trim(flds(n)) if (phase == 'advertise') then - call addaofluxfld(trim(fldname)) + call addfld_aoflux(trim(fldname)) end if end do deallocate(flds) @@ -172,7 +172,7 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! TODO: unused, but required to maintain B4B repro for mediator restarts; should be removed if (phase == 'advertise') then - call addfldFrom(compice, 'mean_sw_pen_to_ocn') + call addfld_from(compice, 'mean_sw_pen_to_ocn') end if !===================================================================== @@ -182,16 +182,16 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to atm: fractions (computed in med_phases_prep_atm) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compatm)) then - call addfldFrom(compice, 'Si_ifrac') - call addfldTo(compatm, 'Si_ifrac') + call addfld_from(compice, 'Si_ifrac') + call addfld_to(compatm, 'Si_ifrac') end if ! ofrac used by atm if (is_local%wrap%comp_present(compocn) .and. is_local%wrap%comp_present(compatm)) then - call addfldFrom(compatm, 'Sa_ofrac') + call addfld_from(compatm, 'Sa_ofrac') end if ! lfrac used by atm if (is_local%wrap%comp_present(complnd) .and. is_local%wrap%comp_present(compatm)) then - call addfldTo(compatm, 'Sl_lfrac') + call addfld_to(compatm, 'Sl_lfrac') end if end if @@ -211,14 +211,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compatm)) then - call addfldFrom(compice, trim(fldname)) - call addfldTo(compatm, trim(fldname)) + call addfld_from(compice, trim(fldname)) + call addfld_to(compatm, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compatm) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), trim(fldname), rc=rc)) then - call addmapFrom(compice, trim(fldname), compatm, maptype, 'ifrac', 'unset') - call addmrgTo(compatm, trim(fldname), mrg_from=compice, mrg_fld=trim(fldname), mrg_type='copy') + call addmap_from(compice, trim(fldname), compatm, maptype, 'ifrac', 'unset') + call addmrg_to(compatm, trim(fldname), mrg_from=compice, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -230,14 +230,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compatm)) then - call addfldFrom(compice, trim(fldname)) - call addfldTo(compatm, trim(fldname)) + call addfld_from(compice, trim(fldname)) + call addfld_to(compatm, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compatm) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), trim(fldname), rc=rc)) then - call addmapFrom(compice, trim(fldname), compatm, maptype, 'ifrac', 'unset') - call addmrgTo(compatm, trim(fldname), mrg_from=compice, mrg_fld=trim(fldname), mrg_type='copy') + call addmap_from(compice, trim(fldname), compatm, maptype, 'ifrac', 'unset') + call addmrg_to(compatm, trim(fldname), mrg_from=compice, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -246,28 +246,28 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to atm: unmerged surface temperatures from ocn if (phase == 'advertise') then if (is_local%wrap%comp_present(compocn) .and. is_local%wrap%comp_present(compatm)) then - call addfldFrom(compocn, 'So_t') - call addfldTo(compatm, 'So_t') + call addfld_from(compocn, 'So_t') + call addfld_to(compatm, 'So_t') end if else if ( fldchk(is_local%wrap%FBexp(compatm) , 'So_t', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), 'So_t', rc=rc)) then - call addMapFrom(compocn, 'So_t', compatm, maptype, 'ofrac', 'unset') - call addmrgTo(compatm, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') + call addmap_from(compocn, 'So_t', compatm, maptype, 'ofrac', 'unset') + call addmrg_to(compatm, 'So_t', mrg_from=compocn, mrg_fld='So_t', mrg_type='copy') end if end if ! to atm: unmerged surface temperatures from lnd if (phase == 'advertise') then if (is_local%wrap%comp_present(complnd) .and. is_local%wrap%comp_present(compatm)) then - call addFldFrom(complnd, 'Sl_t') - call addfldTo(compatm, 'Sl_t') + call addfld_from(complnd, 'Sl_t') + call addfld_to(compatm, 'Sl_t') end if else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sl_t', rc=rc) .and. & fldchk(is_local%wrap%FBImp(complnd,complnd), 'Sl_t', rc=rc)) then - call addmapFrom(complnd, 'Sl_t', compatm, maptype, 'lfrin', 'unset') - call addmrgTo(compatm, 'Sl_t', mrg_from=complnd, mrg_fld='Sl_t', mrg_type='copy') + call addmap_from(complnd, 'Sl_t', compatm, maptype, 'lfrin', 'unset') + call addmrg_to(compatm, 'Sl_t', mrg_from=complnd, mrg_fld='Sl_t', mrg_type='copy') end if end if @@ -283,16 +283,16 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) flds = (/ 'lat ', 'sen ', 'lwup', 'taux', 'tauy' /) if (phase == 'advertise') then do n = 1,size(flds) - call addaofluxfld('Faox_'//trim(flds(n))) - call addfldTo(compatm, 'Faox_'//trim(flds(n))) + call addfld_aoflux('Faox_'//trim(flds(n))) + call addfld_to(compatm, 'Faox_'//trim(flds(n))) end do else do n = 1,size(flds) if (fldchk(is_local%wrap%FBMed_aoflux_o, 'Faox_'//trim(flds(n)), rc=rc)) then if (trim(is_local%wrap%aoflux_grid) == 'ogrid') then - call addaofluxmap('Faox_'//trim(flds(n)), compatm, maptype, 'ofrac', 'unset') + call addmap_aoflux('Faox_'//trim(flds(n)), compatm, maptype, 'ofrac', 'unset') end if - call addmrgTo(compatm, 'Faox_'//trim(flds(n)), mrg_from=compmed, mrg_fld='Faox_'//trim(flds(n)), mrg_type='copy') + call addmrg_to(compatm, 'Faox_'//trim(flds(n)), mrg_from=compmed, mrg_fld='Faox_'//trim(flds(n)), mrg_type='copy') end if end do end if @@ -303,14 +303,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to atm: surface roughness length from wav if (phase == 'advertise') then if (is_local%wrap%comp_present(compwav) .and. is_local%wrap%comp_present(compatm)) then - call addfldFrom(compwav, 'Sw_z0') - call addfldTo(compatm, 'Sw_z0') + call addfld_from(compwav, 'Sw_z0') + call addfld_to(compatm, 'Sw_z0') end if else if ( fldchk(is_local%wrap%FBexp(compatm) , 'Sw_z0', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav,compwav), 'Sw_z0', rc=rc)) then - call addmapFrom(compwav, 'Sw_z0', compatm, mapnstod_consf, 'one', 'unset') - call addmrgTo(compatm, 'Sw_z0', mrg_from=compwav, mrg_fld='Sw_z0', mrg_type='copy') + call addmap_from(compwav, 'Sw_z0', compatm, mapnstod_consf, 'one', 'unset') + call addmrg_to(compatm, 'Sw_z0', mrg_from=compwav, mrg_fld='Sw_z0', mrg_type='copy') end if end if @@ -321,14 +321,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to ocn: sea level pressure from atm if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfldFrom(compatm, 'Sa_pslv') - call addFldTo(compocn, 'Sa_pslv') + call addfld_from(compatm, 'Sa_pslv') + call addfld_to(compocn, 'Sa_pslv') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Sa_pslv', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Sa_pslv', rc=rc)) then - call addmapFrom(compatm, 'Sa_pslv', compocn, maptype, 'one', 'unset') - call addmrgTo(compocn, 'Sa_pslv', mrg_from=compatm, mrg_fld='Sa_pslv', mrg_type='copy') + call addmap_from(compatm, 'Sa_pslv', compocn, maptype, 'one', 'unset') + call addmrg_to(compocn, 'Sa_pslv', mrg_from=compatm, mrg_fld='Sa_pslv', mrg_type='copy') end if end if @@ -346,13 +346,13 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) do n = 1,size(oflds) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfldFrom(compatm, trim(aflds(n))) - call addFldTo(compocn, trim(oflds(n))) + call addfld_from(compatm, trim(aflds(n))) + call addfld_to(compocn, trim(oflds(n))) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , trim(oflds(n)), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(aflds(n)), rc=rc)) then - call addmapFrom(compatm, trim(aflds(n)), compocn, maptype, 'one', 'unset') + call addmap_from(compatm, trim(aflds(n)), compocn, maptype, 'one', 'unset') end if end if end do @@ -360,13 +360,13 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) do n = 1,size(oflds) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compocn)) then - call addfldFrom(compice, trim(iflds(n))) - call addFldTo(compocn, trim(oflds(n))) + call addfld_from(compice, trim(iflds(n))) + call addfld_to(compocn, trim(oflds(n))) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , trim(oflds(n)), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), trim(iflds(n)), rc=rc)) then - call addmapFrom(compice, trim(iflds(n)), compocn, mapfcopy, 'unset', 'unset') + call addmap_from(compice, trim(iflds(n)), compocn, mapfcopy, 'unset', 'unset') end if end if end do @@ -381,14 +381,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfldFrom(compatm, trim(fldname)) - call addFldTo(compocn, trim(fldname)) + call addfld_from(compatm, trim(fldname)) + call addfld_to(compocn, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmapFrom(compatm, trim(fldname), compocn, maptype, 'one', 'unset') - call addmrgTo(compocn, trim(fldname), & + call addmap_from(compatm, trim(fldname), compocn, maptype, 'one', 'unset') + call addmrg_to(compocn, trim(fldname), & mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -408,16 +408,16 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compatm) & .and. is_local%wrap%comp_present(compocn)) then - call addfldFrom(compice, trim(iflds(n))) - call addfldFrom(compatm, trim(aflds(n))) - call addFldTo(compocn, trim(oflds(n))) + call addfld_from(compice, trim(iflds(n))) + call addfld_from(compatm, trim(aflds(n))) + call addfld_to(compocn, trim(oflds(n))) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , trim(oflds(n)), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), trim(iflds(n)), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(aflds(n)), rc=rc)) then - call addmapFrom(compice, trim(iflds(n)), compocn, mapfcopy, 'unset', 'unset') - call addmapFrom(compatm, trim(aflds(n)), compocn, mapconsf_aofrac, 'aofrac', 'unset') + call addmap_from(compice, trim(iflds(n)), compocn, mapfcopy, 'unset', 'unset') + call addmap_from(compatm, trim(aflds(n)), compocn, mapconsf_aofrac, 'aofrac', 'unset') end if end if end do @@ -428,14 +428,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to ocn: net long wave via auto merge if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfldFrom(compatm, 'Faxa_lwnet') - call addFldTo(compocn, 'Faxa_lwnet') + call addfld_from(compatm, 'Faxa_lwnet') + call addfld_to(compocn, 'Faxa_lwnet') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Faxa_lwnet', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwnet', rc=rc)) then - call addmapFrom(compatm, 'Faxa_lwnet', compocn, mapconsf_aofrac, 'aofrac', 'unset') - call addmrgTo(compocn, 'Faxa_lwnet', & + call addmap_from(compatm, 'Faxa_lwnet', compocn, mapconsf_aofrac, 'aofrac', 'unset') + call addmrg_to(compocn, 'Faxa_lwnet', & mrg_from=compatm, mrg_fld='Faxa_lwnet', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -443,26 +443,26 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to ocn: merged sensible heat flux (custom merge in med_phases_prep_ocn) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfldFrom(compatm, 'Faxa_sen') - call addFldTo(compocn, 'Faxa_sen') + call addfld_from(compatm, 'Faxa_sen') + call addfld_to(compocn, 'Faxa_sen') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Faxa_sen', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_sen', rc=rc)) then - call addmapFrom(compatm, 'Faxa_sen', compocn, mapconsf_aofrac, 'aofrac', 'unset') + call addmap_from(compatm, 'Faxa_sen', compocn, mapconsf_aofrac, 'aofrac', 'unset') end if end if ! to ocn: evaporation water flux (custom merge in med_phases_prep_ocn) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addfldFrom(compatm, 'Faxa_lat') - call addFldTo(compocn, 'Faxa_evap') + call addfld_from(compatm, 'Faxa_lat') + call addfld_to(compocn, 'Faxa_evap') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Faxa_evap', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lat' , rc=rc)) then - call addmapFrom(compatm, 'Faxa_lat', compocn, mapconsf_aofrac, 'aofrac', 'unset') + call addmap_from(compatm, 'Faxa_lat', compocn, mapconsf_aofrac, 'aofrac', 'unset') end if end if else if (trim(coupling_mode) == 'nems_orig_data' .or. trim(coupling_mode) == 'nems_frac_aoflux') then @@ -473,18 +473,18 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) do n = 1,size(flds) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compocn)) then - call addaofluxfld('Faox_'//trim(flds(n))) - call addfldFrom(compice , 'Fioi_'//trim(flds(n))) - call addFldTo(compocn , 'Foxx_'//trim(flds(n))) + call addfld_aoflux('Faox_'//trim(flds(n))) + call addfld_from(compice , 'Fioi_'//trim(flds(n))) + call addfld_to(compocn , 'Foxx_'//trim(flds(n))) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Foxx_'//trim(flds(n)), rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'Faox_'//trim(flds(n)), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Fioi_'//trim(flds(n)), rc=rc)) then - call addmapFrom(compice, 'Fioi_'//trim(flds(n)), compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, 'Foxx_'//trim(flds(n)), & + call addmap_from(compice, 'Fioi_'//trim(flds(n)), compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, 'Foxx_'//trim(flds(n)), & mrg_from=compmed, mrg_fld='Faox_'//trim(flds(n)), mrg_type='merge', mrg_fracname='ofrac') - call addmrgTo(compocn, 'Foxx_'//trim(flds(n)), & + call addmrg_to(compocn, 'Foxx_'//trim(flds(n)), & mrg_from=compice, mrg_fld='Fioi_'//trim(flds(n)), mrg_type='merge', mrg_fracname='ifrac') end if end if @@ -494,18 +494,18 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to ocn: long wave net via auto merge if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compocn)) then - call addaofluxfld('Faox_lwup') - call addfldFrom(compatm, 'Faxa_lwdn') - call addFldTo(compocn, 'Foxx_lwnet') + call addfld_aoflux('Faox_lwup') + call addfld_from(compatm, 'Faxa_lwdn') + call addfld_to(compocn, 'Foxx_lwnet') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Foxx_lwnet', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'Faox_lwup' , rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), 'Faxa_lwdn' , rc=rc)) then - call addmapFrom(compatm, 'Faxa_lwdn', compocn, maptype, 'one', 'unset') - call addmrgTo(compocn, 'Foxx_lwnet', & + call addmap_from(compatm, 'Faxa_lwdn', compocn, maptype, 'one', 'unset') + call addmrg_to(compocn, 'Foxx_lwnet', & mrg_from=compmed, mrg_fld='Faox_lwup', mrg_type='merge', mrg_fracname='ofrac') - call addmrgTo(compocn, 'Foxx_lwnet', & + call addmrg_to(compocn, 'Foxx_lwnet', & mrg_from=compatm, mrg_fld='Faxa_lwdn', mrg_type='merge', mrg_fracname='ofrac') end if end if @@ -513,13 +513,13 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to ocn: sensible heat flux from mediator via auto merge if (phase == 'advertise') then if (is_local%wrap%comp_present(compocn)) then - call addaofluxfld('Faox_sen') - call addFldTo(compocn, 'Faox_sen') + call addfld_aoflux('Faox_sen') + call addfld_to(compocn, 'Faox_sen') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Faox_sen', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'Faox_sen' , rc=rc)) then - call addmrgTo(compocn, 'Faox_sen', & + call addmrg_to(compocn, 'Faox_sen', & mrg_from=compmed, mrg_fld='Faox_sen', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -527,13 +527,13 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to ocn: evaporation water flux from mediator via auto merge if (phase == 'advertise') then if (is_local%wrap%comp_present(compocn)) then - call addaofluxfld('Faox_evap') - call addFldTo(compocn, 'Faox_evap') + call addfld_aoflux('Faox_evap') + call addfld_to(compocn, 'Faox_evap') end if else if ( fldchk(is_local%wrap%FBexp(compocn) , 'Faox_evap', rc=rc) .and. & fldchk(is_local%wrap%FBMed_aoflux_o , 'Faox_evap' , rc=rc)) then - call addmrgTo(compocn, 'Faox_evap', & + call addmrg_to(compocn, 'Faox_evap', & mrg_from=compmed, mrg_fld='Faox_evap', mrg_type='copy_with_weights', mrg_fracname='ofrac') end if end if @@ -548,14 +548,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compocn)) then - call addfldFrom(compice, trim(fldname)) - call addFldTo(compocn, trim(fldname)) + call addfld_from(compice, trim(fldname)) + call addfld_to(compocn, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), trim(fldname), rc=rc)) then - call addmapFrom(compice, trim(fldname), compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, trim(fldname), & + call addmap_from(compice, trim(fldname), compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, trim(fldname), & mrg_from=compice, mrg_fld=trim(fldname), mrg_type='copy_with_weights', mrg_fracname='ifrac') end if end if @@ -570,14 +570,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compwav) .and. is_local%wrap%comp_present(compocn)) then - call addfldFrom(compwav, trim(fldname)) - call addFldTo(compocn, trim(fldname)) + call addfld_from(compwav, trim(fldname)) + call addfld_to(compocn, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compocn) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compwav,compwav), trim(fldname), rc=rc)) then - call addmapFrom(compwav, trim(fldname), compocn, mapfcopy, 'unset', 'unset') - call addmrgTo(compocn, trim(fldname), mrg_from=compwav, mrg_fld=trim(fldname), mrg_type='copy') + call addmap_from(compwav, trim(fldname), compocn, mapfcopy, 'unset', 'unset') + call addmrg_to(compocn, trim(fldname), mrg_from=compwav, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -603,14 +603,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compice)) then - call addfldFrom(compatm, trim(fldname)) - call addFldTo(compice, trim(fldname)) + call addfld_from(compatm, trim(fldname)) + call addfld_to(compice, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compice) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmapFrom(compatm, trim(fldname), compice, maptype, 'one', 'unset') - call addmrgTo(compice, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') + call addmap_from(compatm, trim(fldname), compice, maptype, 'one', 'unset') + call addmrg_to(compice, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -630,14 +630,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compice)) then - call addfldFrom(compatm, trim(fldname)) - call addFldTo(compice, trim(fldname)) + call addfld_from(compatm, trim(fldname)) + call addfld_to(compice, trim(fldname)) endif else if ( fldchk(is_local%wrap%FBexp(compice) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmapFrom(compatm, trim(fldname), compice, maptype, 'one', 'unset') - call addmrgTo(compice, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') + call addmap_from(compatm, trim(fldname), compice, maptype, 'one', 'unset') + call addmrg_to(compice, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -658,14 +658,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compocn) .and. is_local%wrap%comp_present(compice)) then - call addfldFrom(compocn, trim(fldname)) - call addFldTo(compice, trim(fldname)) + call addfld_from(compocn, trim(fldname)) + call addfld_to(compice, trim(fldname)) endif else if ( fldchk(is_local%wrap%FBexp(compice) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), trim(fldname), rc=rc)) then - call addMapFrom(compocn, trim(fldname), compice, mapfcopy , 'unset', 'unset') - call addmrgTo(compice, trim(fldname), mrg_from=compocn, mrg_fld=trim(fldname), mrg_type='copy') + call addmap_from(compocn, trim(fldname), compice, mapfcopy , 'unset', 'unset') + call addmrg_to(compice, trim(fldname), mrg_from=compocn, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -682,14 +682,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(compwav)) then - call addfldFrom(compatm, trim(fldname)) - call addfldTo(compwav, trim(fldname)) + call addfld_from(compatm, trim(fldname)) + call addfld_to(compwav, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compwav) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmapFrom(compatm, trim(fldname), compwav, mapnstod_consf, 'one', 'unset') - call addmrgTo(compwav, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') + call addmap_from(compatm, trim(fldname), compwav, mapnstod_consf, 'one', 'unset') + call addmrg_to(compwav, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -698,14 +698,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) ! to wav: sea ice fraction if (phase == 'advertise') then if (is_local%wrap%comp_present(compice) .and. is_local%wrap%comp_present(compwav)) then - call addfldFrom(compice, 'Si_ifrac') - call addfldTo(compwav, 'Si_ifrac') + call addfld_from(compice, 'Si_ifrac') + call addfld_to(compwav, 'Si_ifrac') end if else if ( fldchk(is_local%wrap%FBexp(compwav) , 'Si_ifrac', rc=rc) .and. & fldchk(is_local%wrap%FBImp(compice,compice), 'Si_ifrac', rc=rc)) then - call addmapFrom(compice, 'Si_ifrac', compwav, mapfcopy , 'unset', 'unset') - call addmrgTo(compwav, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') + call addmap_from(compice, 'Si_ifrac', compwav, mapfcopy , 'unset', 'unset') + call addmrg_to(compwav, 'Si_ifrac', mrg_from=compice, mrg_fld='Si_ifrac', mrg_type='copy') end if end if @@ -718,14 +718,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compocn) .and. is_local%wrap%comp_present(compwav)) then - call addfldFrom(compocn, trim(fldname)) - call addfldTo(compwav, trim(fldname)) + call addfld_from(compocn, trim(fldname)) + call addfld_to(compwav, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(compwav) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compocn,compocn), trim(fldname), rc=rc)) then - call addMapFrom(compocn, trim(fldname), compwav, mapfcopy , 'unset', 'unset') - call addmrgTo(compwav, trim(fldname), mrg_from=compocn, mrg_fld=trim(fldname), mrg_type='copy') + call addmap_from(compocn, trim(fldname), compwav, mapfcopy , 'unset', 'unset') + call addmrg_to(compwav, trim(fldname), mrg_from=compocn, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do @@ -756,14 +756,14 @@ subroutine esmFldsExchange_nems(gcomp, phase, rc) fldname = trim(flds(n)) if (phase == 'advertise') then if (is_local%wrap%comp_present(compatm) .and. is_local%wrap%comp_present(complnd)) then - call addfldFrom(compatm, trim(fldname)) - call addfldTo(complnd, trim(fldname)) + call addfld_from(compatm, trim(fldname)) + call addfld_to(complnd, trim(fldname)) end if else if ( fldchk(is_local%wrap%FBexp(complnd) , trim(fldname), rc=rc) .and. & fldchk(is_local%wrap%FBImp(compatm,compatm), trim(fldname), rc=rc)) then - call addmapFrom(compatm, trim(fldname), complnd, maptype, 'one', 'unset') - call addmrgTo(complnd, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') + call addmap_from(compatm, trim(fldname), complnd, maptype, 'one', 'unset') + call addmrg_to(complnd, trim(fldname), mrg_from=compatm, mrg_fld=trim(fldname), mrg_type='copy') end if end if end do diff --git a/mediator/med.F90 b/mediator/med.F90 index 11d5d6747..352cf0c4d 100644 --- a/mediator/med.F90 +++ b/mediator/med.F90 @@ -810,7 +810,7 @@ subroutine InitializeIPDv03p1(gcomp, importState, exportState, clock, rc) ! Initialize memory for fldlistTo and fldlistFr - this is need for the calls below for the ! advertise phase - call med_fldlist_init1() + call med_fldlist_init1(ncomps) if (trim(coupling_mode) == 'cesm') then call esmFldsExchange_cesm(gcomp, phase='advertise', rc=rc) diff --git a/mediator/med_phases_prep_atm_mod.F90 b/mediator/med_phases_prep_atm_mod.F90 index caa9f4851..c0c8a8d1d 100644 --- a/mediator/med_phases_prep_atm_mod.F90 +++ b/mediator/med_phases_prep_atm_mod.F90 @@ -18,7 +18,7 @@ module med_phases_prep_atm_mod use med_map_mod , only : med_map_field_packed use med_internalstate_mod , only : InternalState, mastertask use med_internalstate_mod , only : compatm, compocn, compice, compname, coupling_mode - use esmFlds , only : med_fldlist_GetfldListTo + use esmFlds , only : med_fldlist_GetfldListTo, esm_fldlist_type use perf_mod , only : t_startf, t_stopf use med_phases_aofluxes_mod, only : med_aofluxes_map_xgrid2agrid_output use med_phases_aofluxes_mod, only : med_aofluxes_map_ogrid2agrid_output @@ -53,6 +53,7 @@ subroutine med_phases_prep_atm(gcomp, rc) real(R8), pointer :: ifrac(:) real(R8), pointer :: ofrac(:) integer :: i, j, n, n1, ncnt + type(esm_fldlist_type), pointer :: fldList character(len=*),parameter :: subname='(med_phases_prep_atm)' !------------------------------------------------------------------------------- @@ -131,6 +132,7 @@ subroutine med_phases_prep_atm(gcomp, rc) !--------------------------------------- !--- merge all fields to atm !--------------------------------------- + fldList => med_fldList_GetfldListTo(compatm) if (trim(coupling_mode) == 'cesm' .or. & trim(coupling_mode) == 'nems_frac_aoflux' .or. & trim(coupling_mode) == 'hafs') then @@ -139,7 +141,7 @@ subroutine med_phases_prep_atm(gcomp, rc) is_local%wrap%FBExp(compatm), & is_local%wrap%FBFrac(compatm), & is_local%wrap%FBImp(:,compatm), & - med_fldList_GetfldListTo(compatm), & + fldList, & FBMed1=is_local%wrap%FBMed_ocnalb_a, & FBMed2=is_local%wrap%FBMed_aoflux_a, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return @@ -151,7 +153,8 @@ subroutine med_phases_prep_atm(gcomp, rc) is_local%wrap%FBExp(compatm), & is_local%wrap%FBFrac(compatm), & is_local%wrap%FBImp(:,compatm), & - med_fldList_GetfldListTo(compatm), rc=rc) + fldList, & + rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if diff --git a/mediator/med_phases_prep_lnd_mod.F90 b/mediator/med_phases_prep_lnd_mod.F90 index 0ed527b8f..20f953a64 100644 --- a/mediator/med_phases_prep_lnd_mod.F90 +++ b/mediator/med_phases_prep_lnd_mod.F90 @@ -27,7 +27,7 @@ subroutine med_phases_prep_lnd(gcomp, rc) use ESMF , only : ESMF_FieldBundle, ESMF_FieldBundleGet, ESMF_Field, ESMF_FieldGet use ESMF , only : ESMF_GridComp, ESMF_GridCompGet use ESMF , only : ESMF_StateGet, ESMF_StateItem_Flag, ESMF_STATEITEM_NOTFOUND - use esmFlds , only : med_fldList_GetFldListTo + use esmFlds , only : med_fldList_GetFldListTo, med_fldList_type use med_methods_mod , only : fldbun_diagnose => med_methods_FB_diagnose use med_utils_mod , only : chkerr => med_utils_ChkErr use med_constants_mod , only : dbug_flag => med_constants_dbug_flag @@ -51,6 +51,7 @@ subroutine med_phases_prep_lnd(gcomp, rc) real(r8), pointer :: dataptr2d(:,:) logical :: first_call = .true. logical :: field_found + type(med_fldlist_type), pointer :: fldList real(r8), pointer :: dataptr_scalar_lnd(:,:) real(r8), pointer :: dataptr_scalar_atm(:,:) character(len=*), parameter :: subname='(med_phases_prep_lnd)' @@ -84,12 +85,14 @@ subroutine med_phases_prep_lnd(gcomp, rc) ! auto merges to create FBExp(complnd) - other than glc->lnd ! The following will merge all fields in fldsSrc call t_startf('MED:'//trim(subname)//' merge') + fldList => med_fldList_GetFldListTo(complnd) call med_merge_auto(& is_local%wrap%med_coupling_active(:,complnd), & is_local%wrap%FBExp(complnd), & is_local%wrap%FBFrac(complnd), & is_local%wrap%FBImp(:,complnd), & - med_fldList_GetFldListTo(complnd), rc=rc) + fldList, & + rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return call t_stopf('MED:'//trim(subname)//' merge') diff --git a/mediator/med_phases_prep_ocn_mod.F90 b/mediator/med_phases_prep_ocn_mod.F90 index d2e1e4ffe..6923699f3 100644 --- a/mediator/med_phases_prep_ocn_mod.F90 +++ b/mediator/med_phases_prep_ocn_mod.F90 @@ -19,7 +19,7 @@ module med_phases_prep_ocn_mod use med_methods_mod , only : FB_average => med_methods_FB_average use med_methods_mod , only : FB_copy => med_methods_FB_copy use med_methods_mod , only : FB_reset => med_methods_FB_reset - use esmFlds , only : med_fldList_GetfldListTo + use esmFlds , only : med_fldList_GetfldListTo, med_fldlist_type use med_internalstate_mod , only : compocn, compatm, compice, coupling_mode use perf_mod , only : t_startf, t_stopf @@ -99,6 +99,7 @@ subroutine med_phases_prep_ocn_accum(gcomp, rc) real(r8), pointer :: rofi(:), hrofi(:) real(r8), pointer :: areas(:) real(r8), allocatable :: hcorr(:) + type(med_fldlist_type), pointer :: fldList character(len=*), parameter :: subname='(med_phases_prep_ocn_accum)' !--------------------------------------- @@ -113,7 +114,7 @@ subroutine med_phases_prep_ocn_accum(gcomp, rc) nullify(is_local%wrap) call ESMF_GridCompGetInternalState(gcomp, is_local, rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return - + fldList => med_fldList_GetfldListTo(compocn) ! auto merges to ocn if ( trim(coupling_mode) == 'cesm' .or. & trim(coupling_mode) == 'nems_orig_data' .or. & @@ -124,7 +125,7 @@ subroutine med_phases_prep_ocn_accum(gcomp, rc) is_local%wrap%FBExp(compocn), & is_local%wrap%FBFrac(compocn), & is_local%wrap%FBImp(:,compocn), & - med_fldList_GetfldListTo(compocn), & + fldList, & FBMed1=is_local%wrap%FBMed_aoflux_o, rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return else if (trim(coupling_mode) == 'nems_frac' .or. & @@ -135,7 +136,8 @@ subroutine med_phases_prep_ocn_accum(gcomp, rc) is_local%wrap%FBExp(compocn), & is_local%wrap%FBFrac(compocn), & is_local%wrap%FBImp(:,compocn), & - med_fldList_GetfldListTo(compocn), rc=rc) + fldList, & + rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if From 15e746be8506c0221e9a8cb84fab68cc34678510 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Tue, 29 Nov 2022 14:39:50 -0700 Subject: [PATCH 19/21] fix typos --- mediator/esmFlds.F90 | 5 +++-- mediator/med_phases_prep_atm_mod.F90 | 4 ++-- mediator/med_phases_prep_ocn_mod.F90 | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index 46de218f6..c9425ac85 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -54,7 +54,8 @@ module esmflds character(CS), allocatable :: mapnorm(:) character(CX), allocatable :: mapfile(:) - ! Merging fldsTo data - for mediator export field character(CS), allocatable :: merge_fields(:) + ! Merging fldsTo data - for mediator export field + character(CS), allocatable :: merge_fields(:) character(CS), allocatable :: merge_types(:) character(CS), allocatable :: merge_fracnames(:) type(med_fldList_entry_type), pointer :: next => null() @@ -219,7 +220,7 @@ subroutine med_fldList_AddFld(fields, stdname, shortname) call med_fldList_findName(fields, stdname, found, newfld) ! create new entry if fldname is not in original list mapsize = size(fldListTo) - mrgsize = size(fldListFrom) + mrgsize = size(fldListFr) if (.not. found) then ! 1) allocate newfld to be size (one element larger than input flds) diff --git a/mediator/med_phases_prep_atm_mod.F90 b/mediator/med_phases_prep_atm_mod.F90 index c0c8a8d1d..9448f6913 100644 --- a/mediator/med_phases_prep_atm_mod.F90 +++ b/mediator/med_phases_prep_atm_mod.F90 @@ -18,7 +18,7 @@ module med_phases_prep_atm_mod use med_map_mod , only : med_map_field_packed use med_internalstate_mod , only : InternalState, mastertask use med_internalstate_mod , only : compatm, compocn, compice, compname, coupling_mode - use esmFlds , only : med_fldlist_GetfldListTo, esm_fldlist_type + use esmFlds , only : med_fldlist_GetfldListTo, med_fldlist_type use perf_mod , only : t_startf, t_stopf use med_phases_aofluxes_mod, only : med_aofluxes_map_xgrid2agrid_output use med_phases_aofluxes_mod, only : med_aofluxes_map_ogrid2agrid_output @@ -53,7 +53,7 @@ subroutine med_phases_prep_atm(gcomp, rc) real(R8), pointer :: ifrac(:) real(R8), pointer :: ofrac(:) integer :: i, j, n, n1, ncnt - type(esm_fldlist_type), pointer :: fldList + type(med_fldlist_type), pointer :: fldList character(len=*),parameter :: subname='(med_phases_prep_atm)' !------------------------------------------------------------------------------- diff --git a/mediator/med_phases_prep_ocn_mod.F90 b/mediator/med_phases_prep_ocn_mod.F90 index 6923699f3..b8b4f2fa6 100644 --- a/mediator/med_phases_prep_ocn_mod.F90 +++ b/mediator/med_phases_prep_ocn_mod.F90 @@ -137,7 +137,7 @@ subroutine med_phases_prep_ocn_accum(gcomp, rc) is_local%wrap%FBFrac(compocn), & is_local%wrap%FBImp(:,compocn), & fldList, & - rc) + rc=rc) if (ChkErr(rc,__LINE__,u_FILE_u)) return end if From 841258ac0b99c9a5d1553ff7317c6a3ce37b7526 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Tue, 29 Nov 2022 15:09:45 -0700 Subject: [PATCH 20/21] more name changes --- mediator/esmFlds.F90 | 28 +++++++++++++++++----------- mediator/med_map_mod.F90 | 1 - 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index c9425ac85..bf7dc0d2a 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -76,8 +76,8 @@ module esmflds type (med_fldList_type), allocatable, target :: fldListTo(:) ! advertise fields to components type (med_fldList_type), allocatable, target :: fldListFr(:) ! advertise fields from components - type (med_fldList_type), target :: fldListMed_aoflux - type (med_fldList_type), target :: fldListMed_ocnalb + type (med_fldList_type), target :: fldlist_aoflux + type (med_fldList_type), target :: fldlist_ocnalb integer :: rc character(len=CL) :: infostr @@ -95,24 +95,27 @@ subroutine med_fldlist_init1(ncomps) end subroutine med_fldlist_init1 !================================================================================ - + function med_fldList_GetaofluxFldList() result(fldList) + ! Return a pointer to the aoflux fldlist type(med_fldList_type), pointer :: fldList - fldList => fldListMed_aoflux + fldList => fldlist_aoflux end function Med_FldList_GetaofluxFldList !================================================================================ function med_fldList_GetocnalbFldList() result(fldList) + ! Return a pointer to the ocnalb fldlist type(med_fldList_type), pointer :: fldList - fldList => fldListMed_ocnalb + fldList => fldlist_ocnalb end function Med_FldList_GetocnalbFldList !================================================================================ function med_fldList_GetFldListFr(index) result(fldList) + ! Return a pointer to the FldListFr(index) integer, intent(in) :: index type(med_fldList_type), pointer :: fldList @@ -122,6 +125,7 @@ end function Med_FldList_GetFldListFr !================================================================================ function med_fldList_GetFldListTo(index) result(fldList) + ! Return a pointer to the FldListTo(index) integer, intent(in) :: index type(med_fldList_type), pointer :: fldList @@ -131,6 +135,7 @@ end function Med_FldList_GetFldListTo !================================================================================ subroutine med_fldList_addfld_from(index, stdname, shortname) + ! add a fld with name stdname to the FldListFr list integer, intent(in) :: index character(len=*) , intent(in) :: stdname character(len=*) , intent(in) , optional :: shortname @@ -142,10 +147,11 @@ end subroutine med_fldList_addfld_from !================================================================================ subroutine med_fldList_addfld_aoflux(stdname, shortname) + ! add a fld to the aoflux fldList character(len=*) , intent(in) :: stdname character(len=*) , intent(in) , optional :: shortname - call med_fldList_AddFld(fldListMed_aoflux%fields, stdname, shortname) + call med_fldList_AddFld(fldlist_aoflux%fields, stdname, shortname) end subroutine med_fldList_addfld_aoflux @@ -155,7 +161,7 @@ subroutine med_fldList_addfld_ocnalb(stdname, shortname) character(len=*) , intent(in) :: stdname character(len=*) , intent(in) , optional :: shortname - call med_fldList_AddFld(fldListMed_ocnalb%fields, stdname, shortname) + call med_fldList_AddFld(fldlist_ocnalb%fields, stdname, shortname) end subroutine med_fldList_addfld_ocnalb @@ -359,7 +365,7 @@ subroutine med_fldList_addmap_aoflux(fldname, destcomp, maptype, mapnorm, mapfil character(len=*) , intent(in) :: mapnorm character(len=*), optional , intent(in) :: mapfile - call med_fldList_AddMap(fldlistmed_aoflux%fields, fldname, destcomp, maptype, mapnorm, mapfile) + call med_fldList_AddMap(fldlist_aoflux%fields, fldname, destcomp, maptype, mapnorm, mapfile) end subroutine med_fldList_addmap_aoflux @@ -372,7 +378,7 @@ subroutine med_fldList_addmap_ocnalb(fldname, destcomp, maptype, mapnorm, mapfil character(len=*) , intent(in) :: mapnorm character(len=*), optional , intent(in) :: mapfile - call med_fldList_AddMap(fldlistmed_ocnalb%fields, fldname, destcomp, maptype, mapnorm, mapfile) + call med_fldList_AddMap(fldlist_ocnalb%fields, fldname, destcomp, maptype, mapnorm, mapfile) end subroutine med_fldList_addmap_ocnalb @@ -870,8 +876,8 @@ subroutine med_fldList_Document_Mapping(logunit, med_coupling_active) ! ocn-> atm mappings for atm/ocn fluxes computed in mediator on the ocn grid nsrc = compocn ndst = compatm - if (med_coupling_active(nsrc,ndst) .and. allocated(fldListMed_aoflux%fields%mapindex)) then - newfld => fldListMed_aoflux%fields + if (med_coupling_active(nsrc,ndst) .and. allocated(fldlist_aoflux%fields%mapindex)) then + newfld => fldlist_aoflux%fields do while(associated(newfld)) call med_fld_GetFldInfo(newfld, compsrc=ndst, mapindex=mapindex, rc=rc) if ( mapindex /= mapunset) then diff --git a/mediator/med_map_mod.F90 b/mediator/med_map_mod.F90 index 8cac3e5db..d65914699 100644 --- a/mediator/med_map_mod.F90 +++ b/mediator/med_map_mod.F90 @@ -174,7 +174,6 @@ subroutine med_map_RouteHandles_initfrom_esmflds(gcomp, flds_scalar_name, llogun ! Create route handle for target mapindex if route handle is required ! (i.e. mapindex /= mapunset) and route handle has not already been created if (.not. mapexists) then - !~ mapfile = trim(fldListFr%fields(nf)%mapfile(n2)) call med_fld_GetFldInfo(fldptr, compsrc=n2, mapfile=mapfile) call med_map_routehandles_initfrom_field(n1, n2, fldsrc, flddst, & mapindex, is_local%wrap%rh(n1,n2,:), mapfile=trim(mapfile), rc=rc) From b8c29e67ba21c5a688c34a3ee8923e949907e147 Mon Sep 17 00:00:00 2001 From: Jim Edwards Date: Wed, 30 Nov 2022 07:06:41 -0700 Subject: [PATCH 21/21] add an abort call --- mediator/esmFlds.F90 | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/mediator/esmFlds.F90 b/mediator/esmFlds.F90 index bf7dc0d2a..fa15869df 100644 --- a/mediator/esmFlds.F90 +++ b/mediator/esmFlds.F90 @@ -1,7 +1,5 @@ module esmflds use ESMF, only : ESMF_SUCCESS, ESMF_FAILURE, ESMF_LOGMSG_ERROR, ESMF_LOGWRITE - use ESMF, only : ESMF_FINALIZE, ESMF_END_ABORT - use med_kind_mod, only : CX=>SHR_KIND_CX, CS=>SHR_KIND_CS, CL=>SHR_KIND_CL, R8=>SHR_KIND_R8 use med_internalstate_mod, only : compname, compocn, compatm, compice, comprof use med_internalstate_mod, only : mapfcopy, mapnames, mapunset @@ -295,7 +293,7 @@ subroutine med_fldList_AddMrg(flds, fldname, mrg_from, mrg_fld, mrg_type, mrg_fr character(len=*) , intent(in) :: mrg_fld character(len=*) , intent(in) :: mrg_type character(len=*) , intent(in), optional :: mrg_fracname - + ! local variables integer :: rc type(med_fldList_entry_type), pointer :: newfld @@ -315,7 +313,9 @@ end subroutine med_fldList_AddMrg !================================================================================ function med_fldList_GetFld(fields, fldname, rc) result(newfld) - use ESMF, only : ESMF_LogWrite, ESMF_END_ABORT, ESMF_LOGMSG_ERROR, ESMF_Finalize, ESMF_LOGMSG_INFO + use ESMF, only : ESMF_LogWrite, ESMF_LOGMSG_ERROR, ESMF_LOGMSG_INFO + use ESMF, only : ESMF_FINALIZE, ESMF_END_ABORT + type(med_fldList_entry_type) , intent(in), target :: fields character(len=*) , intent(in) :: fldname @@ -337,7 +337,7 @@ function med_fldList_GetFld(fields, fldname, rc) result(newfld) newfld => newfld%next end do call ESMF_LogWrite(subname // 'ERROR: fldname '// trim(fldname) // ' not found in input flds', ESMF_LOGMSG_ERROR) - return + call ESMF_Finalize(endflag=ESMF_END_ABORT) endif end function med_fldList_GetFld