diff --git a/driver-mct/cime_config/buildnml b/driver-mct/cime_config/buildnml
index 1b2c785a2714..0261a7899903 100755
--- a/driver-mct/cime_config/buildnml
+++ b/driver-mct/cime_config/buildnml
@@ -201,7 +201,8 @@ def write_seq_maps_file(case, nmlgen, confdir):
# The following is only approriate for config_grids.xml version 2.0 or later
grid_version = Grids().get_version()
if grid_version >= 2.0:
- ignore_idmaps = ["rof2ocn_fmapname", "glc2ice_rmapname", "glc2ocn_rmapname"]
+ ignore_idmaps = ["rof2ocn_fmapname", "glc2ice_rmapname",
+ "glc2ocn_liq_rmapname", "glc2ocn_ice_rmapname"]
group_variables = nmlgen.get_group_variables("seq_maps")
for name in group_variables:
value = group_variables[name]
diff --git a/driver-mct/cime_config/config_component.xml b/driver-mct/cime_config/config_component.xml
index 1e784dbecdcf..b1878647dd77 100644
--- a/driver-mct/cime_config/config_component.xml
+++ b/driver-mct/cime_config/config_component.xml
@@ -1620,21 +1620,38 @@
glc2ice runoff mapping file decomp type
-
+
char
idmap
run_domain
env_run.xml
- glc2ocn runoff mapping file
+ glc2ocn runoff mapping file for liquid runoff
-
+
char
X,Y
Y
run_domain
env_run.xml
- glc2ocn runoff mapping file decomp type
+ glc2ocn runoff mapping file decomp type for liquid runoff
+
+
+
+ char
+ idmap
+ run_domain
+ env_run.xml
+ glc2ocn runoff mapping file for ice runoff
+
+
+
+ char
+ X,Y
+ Y
+ run_domain
+ env_run.xml
+ glc2ocn runoff mapping file decomp type for ice runoff
diff --git a/driver-mct/cime_config/namelist_definition_drv.xml b/driver-mct/cime_config/namelist_definition_drv.xml
index 16d067102704..6d28e60c8910 100644
--- a/driver-mct/cime_config/namelist_definition_drv.xml
+++ b/driver-mct/cime_config/namelist_definition_drv.xml
@@ -3546,20 +3546,20 @@
-
+
char
mapping
abs
seq_maps
- glc to ocn runoff conservative mapping file
+ glc to ocn runoff conservative mapping file for liquid runoff
- $GLC2OCN_RMAPNAME
+ $GLC2OCN_LIQ_RMAPNAME
-
+
char
mapping
seq_maps
@@ -3571,7 +3571,37 @@
grid.
- $GLC2OCN_RMAPTYPE
+ $GLC2OCN_LIQ_RMAPTYPE
+ X
+
+
+
+
+ char
+ mapping
+ abs
+ seq_maps
+
+ glc to ocn runoff conservative mapping file for ice runoff
+
+
+ $GLC2OCN_ICE_RMAPNAME
+
+
+
+
+ char
+ mapping
+ seq_maps
+
+ The type of mapping desired, either "source" or "destination" mapping.
+ X is associated with rearrangement of the source grid to the
+ destination grid and then local mapping. Y is associated with mapping
+ on the source grid and then rearrangement and sum to the destination
+ grid.
+
+
+ $GLC2OCN_ICE_RMAPTYPE
X
diff --git a/driver-mct/main/prep_ocn_mod.F90 b/driver-mct/main/prep_ocn_mod.F90
index ac90d9a1518a..685024320f0c 100644
--- a/driver-mct/main/prep_ocn_mod.F90
+++ b/driver-mct/main/prep_ocn_mod.F90
@@ -56,7 +56,8 @@ module prep_ocn_mod
public :: prep_ocn_get_mapper_Rr2o_liq
public :: prep_ocn_get_mapper_Rr2o_ice
public :: prep_ocn_get_mapper_SFi2o
- public :: prep_ocn_get_mapper_Rg2o
+ public :: prep_ocn_get_mapper_Rg2o_liq
+ public :: prep_ocn_get_mapper_Rg2o_ice
public :: prep_ocn_get_mapper_Sw2o
!--------------------------------------------------------------------------
@@ -77,7 +78,8 @@ module prep_ocn_mod
type(seq_map), pointer :: mapper_Rr2o_liq
type(seq_map), pointer :: mapper_Rr2o_ice
type(seq_map), pointer :: mapper_SFi2o
- type(seq_map), pointer :: mapper_Rg2o
+ type(seq_map), pointer :: mapper_Rg2o_liq
+ type(seq_map), pointer :: mapper_Rg2o_ice
type(seq_map), pointer :: mapper_Sw2o
! attribute vectors
@@ -170,7 +172,8 @@ subroutine prep_ocn_init(infodata, atm_c2_ocn, atm_c2_ice, ice_c2_ocn, rof_c2_oc
allocate(mapper_Rr2o_liq)
allocate(mapper_Rr2o_ice)
allocate(mapper_SFi2o)
- allocate(mapper_Rg2o)
+ allocate(mapper_Rg2o_liq)
+ allocate(mapper_Rg2o_ice)
allocate(mapper_Sw2o)
if (ocn_present) then
@@ -322,11 +325,19 @@ subroutine prep_ocn_init(infodata, atm_c2_ocn, atm_c2_ice, ice_c2_ocn, rof_c2_oc
if (glc_c2_ocn) then
if (iamroot_CPLID) then
write(logunit,*) ' '
- write(logunit,F00) 'Initializing mapper_Rg2o'
+ write(logunit,F00) 'Initializing mapper_Rg2o_liq'
end if
- call seq_map_init_rcfile(mapper_Rg2o, glc(1), ocn(1), &
- 'seq_maps.rc', 'glc2ocn_rmapname:', 'glc2ocn_rmaptype:',samegrid_og, &
- 'mapper_Rg2o initialization',esmf_map_flag)
+ call seq_map_init_rcfile(mapper_Rg2o_liq, glc(1), ocn(1), &
+ 'seq_maps.rc', 'glc2ocn_liq_rmapname:', 'glc2ocn_liq_rmaptype:',samegrid_og, &
+ 'mapper_Rg2o_liq initialization',esmf_map_flag)
+
+ if (iamroot_CPLID) then
+ write(logunit,*) ' '
+ write(logunit,F00) 'Initializing mapper_Rg2o_ice'
+ end if
+ call seq_map_init_rcfile(mapper_Rg2o_ice, glc(1), ocn(1), &
+ 'seq_maps.rc', 'glc2ocn_ice_rmapname:', 'glc2ocn_ice_rmaptype:',samegrid_og, &
+ 'mapper_Rg2o_ice initialization',esmf_map_flag)
endif
call shr_sys_flush(logunit)
@@ -1234,7 +1245,11 @@ subroutine prep_ocn_calc_g2x_ox(timer)
call t_drvstartf (trim(timer),barrier=mpicom_CPLID)
do egi = 1,num_inst_glc
g2x_gx => component_get_c2x_cx(glc(egi))
- call seq_map_map(mapper_Rg2o, g2x_gx, g2x_ox(egi), norm=.true.)
+ call seq_map_map(mapper_Rg2o_liq, g2x_gx, g2x_ox(egi), &
+ fldlist=seq_flds_g2o_liq_fluxes, norm=.false.)
+
+ call seq_map_map(mapper_Rg2o_ice, g2x_gx, g2x_ox(egi), &
+ fldlist=seq_flds_g2o_ice_fluxes, norm=.false.)
enddo
call t_drvstopf (trim(timer))
end subroutine prep_ocn_calc_g2x_ox
@@ -1335,10 +1350,15 @@ function prep_ocn_get_mapper_SFi2o()
prep_ocn_get_mapper_SFi2o => mapper_SFi2o
end function prep_ocn_get_mapper_SFi2o
- function prep_ocn_get_mapper_Rg2o()
- type(seq_map), pointer :: prep_ocn_get_mapper_Rg2o
- prep_ocn_get_mapper_Rg2o => mapper_Rg2o
- end function prep_ocn_get_mapper_Rg2o
+ function prep_ocn_get_mapper_Rg2o_liq()
+ type(seq_map), pointer :: prep_ocn_get_mapper_Rg2o_liq
+ prep_ocn_get_mapper_Rg2o_liq => mapper_Rg2o_liq
+ end function prep_ocn_get_mapper_Rg2o_liq
+
+ function prep_ocn_get_mapper_Rg2o_ice()
+ type(seq_map), pointer :: prep_ocn_get_mapper_Rg2o_ice
+ prep_ocn_get_mapper_Rg2o_ice => mapper_Rg2o_ice
+ end function prep_ocn_get_mapper_Rg2o_ice
function prep_ocn_get_mapper_Sw2o()
type(seq_map), pointer :: prep_ocn_get_mapper_Sw2o
diff --git a/driver-mct/shr/seq_flds_mod.F90 b/driver-mct/shr/seq_flds_mod.F90
index d484afcbba34..7885e101903b 100644
--- a/driver-mct/shr/seq_flds_mod.F90
+++ b/driver-mct/shr/seq_flds_mod.F90
@@ -197,6 +197,8 @@ module seq_flds_mod
character(CXX) :: seq_flds_g2x_states_to_lnd
character(CXX) :: seq_flds_g2x_fluxes
character(CXX) :: seq_flds_g2x_fluxes_to_lnd
+ character(CXX) :: seq_flds_g2o_liq_fluxes
+ character(CXX) :: seq_flds_g2o_ice_fluxes
character(CXX) :: seq_flds_x2g_states
character(CXX) :: seq_flds_x2g_fluxes
@@ -315,6 +317,8 @@ subroutine seq_flds_set(nmlfile, ID, infodata)
character(CXX) :: g2x_states_to_lnd = ''
character(CXX) :: g2x_fluxes = ''
character(CXX) :: g2x_fluxes_to_lnd = ''
+ character(CXX) :: g2o_liq_fluxes = ''
+ character(CXX) :: g2o_ice_fluxes = ''
character(CXX) :: x2g_states = ''
character(CXX) :: x2g_fluxes = ''
character(CXX) :: xao_albedo = ''
@@ -2242,6 +2246,9 @@ subroutine seq_flds_set(nmlfile, ID, infodata)
name = 'Fogg_rofl'
call seq_flds_add(g2x_fluxes,trim(name))
+ ! Don't need to add this to x2o_fluxes, because Foxx_rofl is already added in the
+ ! course of adding Forr_rofl
+ call seq_flds_add(g2o_liq_fluxes,trim(name))
longname = 'glc liquid runoff flux to ocean'
stdname = 'glacier_liquid_runoff_flux_to_ocean'
units = 'kg m-2 s-1'
@@ -2250,6 +2257,9 @@ subroutine seq_flds_set(nmlfile, ID, infodata)
name = 'Fogg_rofi'
call seq_flds_add(g2x_fluxes,trim(name))
+ ! Don't need to add this to x2o_fluxes, because Foxx_rofi is already added in the
+ ! course of adding Forr_rofi
+ call seq_flds_add(g2o_ice_fluxes,trim(name))
longname = 'glc frozen runoff flux to ocean'
stdname = 'glacier_frozen_runoff_flux_to_ocean'
units = 'kg m-2 s-1'
@@ -2258,6 +2268,8 @@ subroutine seq_flds_set(nmlfile, ID, infodata)
name = 'Figg_rofi'
call seq_flds_add(g2x_fluxes,trim(name))
+ ! Don't need to add this to x2i_fluxes, because Fixx_rofi is already added in the
+ ! course of adding Firr_rofi
longname = 'glc frozen runoff_iceberg flux to ice'
stdname = 'glacier_frozen_runoff_flux_to_seaice'
units = 'kg m-2 s-1'
@@ -3217,6 +3229,8 @@ subroutine seq_flds_set(nmlfile, ID, infodata)
seq_flds_x2o_fluxes = trim(x2o_fluxes)
seq_flds_g2x_fluxes = trim(g2x_fluxes)
seq_flds_g2x_fluxes_to_lnd = trim(g2x_fluxes_to_lnd)
+ seq_flds_g2o_liq_fluxes = trim(g2o_liq_fluxes)
+ seq_flds_g2o_ice_fluxes = trim(g2o_ice_fluxes)
seq_flds_x2g_fluxes = trim(x2g_fluxes)
seq_flds_xao_fluxes = trim(xao_fluxes)
seq_flds_r2x_fluxes = trim(r2x_fluxes)