Skip to content

Commit

Permalink
Merge branch 'matthewhoffman/coupler/iceshelf_ocean_coupling_Fyke2_cl…
Browse files Browse the repository at this point in the history
…eaned' (PR #2726)

Add first stage of ocean/ice shelf coupling

This merge introduces coupler changes to allow coupling between the
ocean model and ice shelves within the GLC model.

As part of model coupling necessary for Antarctic simulations, ice shelf
melt fluxes due to (primarily) ocean temperatures must be calculated.
These melt fluxes correspond to oceanic heat and moisture fluxes at the
upper ocean surface, and ice sheet heat and ice column thickness
changes. Coupling is characterized by 1) calculations carried out by
"subroutine compute_melt_fluxes" on the GLC grid, but 2) on the
OCN coupling timestep (<GLC coupling timestep). This is why these fluxes
cannot be calculated in either component and are done here in the
coupler itself. These factors result in 1) frequent OCN2GLC remapping
that is not associated with a GLC run step and 2) accumulation of
GLC-bound "subroutine compute_melt_fluxes" output fields, but no
equivalent accumulation of OCN-bound outputs.

Inputs to the flux calculations (all mapped to GLC grid):
From OCN:
* oceanTemperature(:) -> o2x_gx%rAttr(index_o2x_So_blt,:)
* oceanSalinity(:) -> o2x_gx(1)%rAttr(index_o2x_So_bls,:)
* oceanHeatTransferVelocity(:) -> o2x_gx(1)%rAttr(index_o2x_So_htv,:)
* oceanSaltTransferVelocity(:) -> o2x_gx(1)%rAttr(index_o2x_So_hsv,:)
From GLC:
* interfacePressure(:) -> o2x_gx(1)%rAttr(index_o2x_So_phieff,:)
* iceTemperature(:) -> g2x_gx%rAttr(index_g2x_Sg_tbot,:)
* iceTemperatureDistance(:) -> g2x_gx%rAttr(index_g2x_Sg_dztbot,:)
* iceFloatingMask(:) -> g2x_gx%rAttr(index_g2x_Sg_icemask_floating,:)

Outputs from flux calculations (all calculated natively on GLC grid):
To OCN:
* g2x_gx%rAttr(index_g2x_Sg_blis,:) -> outInterfaceSalinity(:)
* g2x_gx%rAttr(index_g2x_Sg_blit,:) -> outInterfaceTemperature(:)
* g2x_gx%rAttr(index_g2x_Fogx_qiceho,:) -> outOceanHeatFlux(:)
* g2x_gx%rAttr(index_g2x_Fogx_qicelo,:) -> outFreshwaterFlux(:)
TO GLC:
* x2g_gx%rAttr(index_x2g_Fogx_qicehi,:) -> outIceHeatFlux(:)
* x2g_gx%rAttr(index_x2g_Fogx_qiceli,:) -> -1*outFreshwaterFlux(:)

These changes also include necessary driver and build script changes and
a new compset "GMPAS-MALI-DIB-IAF-ISMF" that includes active
MPAS-Ocean and MPAS-Albany-Land-Ice (as well as active MPAS-Sea-Ice). In
this compset, MPAS-Albany-Land-Ice is configured in a "static"
mode where ice sheet geometry and temperature do not evolve.

[NML]
[BFB] for all previously existing compsets
  • Loading branch information
jonbob committed May 21, 2019
2 parents 5a886de + 5d9d12b commit 67373b9
Show file tree
Hide file tree
Showing 11 changed files with 1,240 additions and 63 deletions.
27 changes: 25 additions & 2 deletions config/e3sm/config_grids.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1232,6 +1232,16 @@
<mask>oQU120</mask>
</model_grid>

<model_grid alias="T62_oEC60to30v3wLI_ais20" compset="MPASO.*_MALI">
<grid name="atm">T62</grid>
<grid name="lnd">T62</grid>
<grid name="ocnice">oEC60to30v3wLI</grid>
<grid name="rof">rx1</grid>
<grid name="glc">mpas.ais20km</grid>
<grid name="wav">null</grid>
<mask>oEC60to30v3wLI</mask>
</model_grid>

<!-- The following grid is only used for ADWAV testing -->
<model_grid alias="ww3a" compset="_WW3|DWAV">
<grid name="wav">ww3a</grid>
Expand Down Expand Up @@ -2955,12 +2965,25 @@
</gridmap>

<gridmap glc_grid="mpas.ais20km" ocn_grid="oQU120">
<map name="GLC2ICE_FMAPNAME">cpl/gridmaps/mpas.ais20km/map_ais20km_to_oQU120_aave.160331.nc</map>
<map name="GLC2ICE_SMAPNAME">cpl/gridmaps/mpas.ais20km/map_ais20km_to_oQU120_nearestdtos.160331.nc</map>
<map name="GLC2OCN_FMAPNAME">cpl/gridmaps/mpas.ais20km/map_ais20km_to_oQU120_aave.160331.nc</map>
<map name="OCN2GLC_FMAPNAME">cpl/gridmaps/oQU120/map_oQU120_to_ais20km_aave.160331.nc</map>
<map name="GLC2OCN_SMAPNAME">cpl/gridmaps/mpas.ais20km/map_ais20km_to_oQU120_nearestdtos.160331.nc</map>
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.ais20km/map_ais20km_to_oQU120_nearestdtos.160331.nc</map>
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.ais20km/map_ais20km_to_oQU120_nearestdtos.160331.nc</map>
<map name="OCN2GLC_SMAPNAME">cpl/gridmaps/oQU120/map_oQU120_to_ais20km_nearestdtos.160331.nc</map>
<map name="OCN2GLC_FMAPNAME">cpl/gridmaps/oQU120/map_oQU120_to_ais20km_aave.160331.nc</map>
<map name="OCN2GLC_SMAPNAME">cpl/gridmaps/oQU120/map_oQU120_to_ais20km_neareststod.160331.nc</map>
</gridmap>

<gridmap glc_grid="mpas.ais20km" ocn_grid="oEC60to30v3wLI">
<map name="GLC2ICE_FMAPNAME">cpl/gridmaps/mpas.ais20km/map_ais20km_to_oEC60to30v3wLI_nomask_aave.190207.nc</map>
<map name="GLC2ICE_SMAPNAME">cpl/gridmaps/mpas.ais20km/map_ais20km_to_oEC60to30v3wLI_nomask_nearestdtos.190207.nc</map>
<map name="GLC2OCN_FMAPNAME">cpl/gridmaps/mpas.ais20km/map_ais20km_to_oEC60to30v3wLI_nomask_aave.190207.nc</map>
<map name="GLC2OCN_SMAPNAME">cpl/gridmaps/mpas.ais20km/map_ais20km_to_oEC60to30v3wLI_nomask_nearestdtos.190207.nc</map>
<map name="GLC2OCN_LIQ_RMAPNAME">cpl/gridmaps/mpas.ais20km/map_ais20km_to_oEC60to30v3wLI_nomask_nearestdtos.190207.nc</map>
<map name="GLC2OCN_ICE_RMAPNAME">cpl/gridmaps/mpas.ais20km/map_ais20km_to_oEC60to30v3wLI_nomask_nearestdtos.190207.nc</map>
<map name="OCN2GLC_FMAPNAME">cpl/gridmaps/oEC60to30v3wLI/map_oEC60to30v3wLI_nomask_to_ais20km_aave.190207.nc</map>
<map name="OCN2GLC_SMAPNAME">cpl/gridmaps/oEC60to30v3wLI/map_oEC60to30v3wLI_nomask_to_ais20km_neareststod.190207.nc</map>
</gridmap>

</gridmaps>
Expand Down
38 changes: 36 additions & 2 deletions src/drivers/mct/cime_config/config_component_e3sm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@
<value compset="_DLND.*_CISM\d">1</value>
<value compset="_DLND.*_MALI">1</value>
<value compset="_SLND.*SOCN.*_MALI">1</value>
<value compset="_DATM.*_SLND.*MPASO.*_MALI">24</value>
<value compset="_DATM.*_SLND.*MPASO.*_MALI">$ATM_NCPL</value>
<value compset="_CAM.*_CLM.*MPASO">48</value>
<value compset="_CAM.*_CLM.*MPASO" grid="a%ne4np4">$ATM_NCPL</value>
<value compset="_CAM.*_CLM.*MPASO" grid="a%ne11np4">12</value>
Expand All @@ -372,7 +372,7 @@
<value compset="_DLND.*_CISM\d">1</value>
<value compset="_DLND.*_MALI">1</value>
<value compset="_SLND.*SOCN.*_MALI">1</value>
<value compset="_DATM.*_SLND.*MPASO.*_MALI">24</value>
<value compset="_DATM.*_SLND.*MPASO.*_MALI">$ATM_NCPL</value>
<value compset="_CAM.*_CLM.*MPASO">$ATM_NCPL</value>
</values>
<group>run_coupling</group>
Expand Down Expand Up @@ -790,6 +790,40 @@
<desc>glc2ocn state mapping file decomp type</desc>
</entry>

<entry id="GLC2ICE_FMAPNAME">
<type>char</type>
<default_value>idmap</default_value>
<group>run_domain</group>
<file>env_run.xml</file>
<desc>glc2ice flux mapping file</desc>
</entry>

<entry id="GLC2ICE_FMAPTYPE">
<type>char</type>
<valid_values>X,Y</valid_values>
<default_value>X</default_value>
<group>run_domain</group>
<file>env_run.xml</file>
<desc>glc2ice flux mapping file decomp type</desc>
</entry>

<entry id="GLC2ICE_SMAPNAME">
<type>char</type>
<default_value>idmap</default_value>
<group>run_domain</group>
<file>env_run.xml</file>
<desc>glc2ice state mapping file</desc>
</entry>

<entry id="GLC2ICE_SMAPTYPE">
<type>char</type>
<valid_values>X,Y</valid_values>
<default_value>X</default_value>
<group>run_domain</group>
<file>env_run.xml</file>
<desc>glc2ice state mapping file decomp type</desc>
</entry>

<entry id="CCSM_GCOST">
<type>integer</type>
<valid_values></valid_values>
Expand Down
180 changes: 180 additions & 0 deletions src/drivers/mct/cime_config/namelist_definition_drv.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3895,6 +3895,66 @@
</values>
</entry>

<entry id="glc2ocn_fmapname" modify_via_xml="GLC2OCN_FMAPNAME">
<type>char</type>
<category>mapping</category>
<input_pathname>abs</input_pathname>
<group>seq_maps</group>
<desc>
glc to ocn flux mapping file for fluxes
</desc>
<values>
<value>$GLC2OCN_FMAPNAME</value>
</values>
</entry>

<entry id="glc2ocn_fmaptype" modify_via_xml="GLC2OCN_FMAPTYPE">
<type>char</type>
<category>mapping</category>
<group>seq_maps</group>
<desc>
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.
</desc>
<values>
<value>$GLC2OCN_FMAPTYPE</value>
<value bfbflag="on">X</value>
</values>
</entry>

<entry id="glc2ocn_smapname" modify_via_xml="GLC2OCN_SMAPNAME">
<type>char</type>
<category>mapping</category>
<input_pathname>abs</input_pathname>
<group>seq_maps</group>
<desc>
glc to ocn state mapping file for states
</desc>
<values>
<value>$GLC2OCN_SMAPNAME</value>
</values>
</entry>

<entry id="glc2ocn_smaptype" modify_via_xml="GLC2OCN_SMAPTYPE">
<type>char</type>
<category>mapping</category>
<group>seq_maps</group>
<desc>
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.
</desc>
<values>
<value>$GLC2OCN_SMAPTYPE</value>
<value bfbflag="on">X</value>
</values>
</entry>

<entry id="glc2ocn_liq_rmapname" modify_via_xml="GLC2OCN_LIQ_RMAPNAME">
<type>char</type>
<category>mapping</category>
Expand Down Expand Up @@ -3955,6 +4015,66 @@
</values>
</entry>

<entry id="ocn2glc_fmapname" modify_via_xml="OCN2GLC_FMAPNAME">
<type>char</type>
<category>mapping</category>
<input_pathname>abs</input_pathname>
<group>seq_maps</group>
<desc>
ocn to glc flux mapping file for fluxes
</desc>
<values>
<value>$OCN2GLC_FMAPNAME</value>
</values>
</entry>

<entry id="ocn2glc_fmaptype" modify_via_xml="OCN2GLC_FMAPTYPE">
<type>char</type>
<category>mapping</category>
<group>seq_maps</group>
<desc>
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.
</desc>
<values>
<value>$OCN2GLC_FMAPTYPE</value>
<value bfbflag="on">X</value>
</values>
</entry>

<entry id="ocn2glc_smapname" modify_via_xml="OCN2GLC_SMAPNAME">
<type>char</type>
<category>mapping</category>
<input_pathname>abs</input_pathname>
<group>seq_maps</group>
<desc>
ocn to glc state mapping file for states
</desc>
<values>
<value>$OCN2GLC_SMAPNAME</value>
</values>
</entry>

<entry id="ocn2glc_smaptype" modify_via_xml="OCN2GLC_SMAPTYPE">
<type>char</type>
<category>mapping</category>
<group>seq_maps</group>
<desc>
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.
</desc>
<values>
<value>$OCN2GLC_SMAPTYPE</value>
<value bfbflag="on">X</value>
</values>
</entry>

<entry id="glc2ice_rmapname" modify_via_xml="GLC2ICE_RMAPNAME">
<type>char</type>
<category>mapping</category>
Expand Down Expand Up @@ -4166,6 +4286,66 @@
</values>
</entry>

<entry id="glc2ice_fmapname" modify_via_xml="GLC2ICE_FMAPNAME">
<type>char</type>
<category>mapping</category>
<input_pathname>abs</input_pathname>
<group>seq_maps</group>
<desc>
glc to ice flux mapping file for fluxes
</desc>
<values>
<value>$GLC2ICE_FMAPNAME</value>
</values>
</entry>

<entry id="glc2ice_fmaptype" modify_via_xml="GLC2ICE_FMAPTYPE">
<type>char</type>
<category>mapping</category>
<group>seq_maps</group>
<desc>
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.
</desc>
<values>
<value>$GLC2ICE_FMAPTYPE</value>
<value bfbflag="on">X</value>
</values>
</entry>

<entry id="glc2ice_smapname" modify_via_xml="GLC2ICE_SMAPNAME">
<type>char</type>
<category>mapping</category>
<input_pathname>abs</input_pathname>
<group>seq_maps</group>
<desc>
glc to ice state mapping file for states
</desc>
<values>
<value>$GLC2ICE_SMAPNAME</value>
</values>
</entry>

<entry id="glc2ice_smaptype" modify_via_xml="GLC2ICE_SMAPTYPE">
<type>char</type>
<category>mapping</category>
<group>seq_maps</group>
<desc>
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.
</desc>
<values>
<value>$GLC2ICE_SMAPTYPE</value>
<value bfbflag="on">X</value>
</values>
</entry>

<entry id="atm2wav_smapname" modify_via_xml="ATM2WAV_SMAPNAME">
<type>char</type>
<category>mapping</category>
Expand Down
Loading

0 comments on commit 67373b9

Please sign in to comment.