diff --git a/full/coupler_main.F90 b/full/coupler_main.F90
index a4ff6781..b3e9f649 100644
--- a/full/coupler_main.F90
+++ b/full/coupler_main.F90
@@ -278,6 +278,14 @@
!! the slow sea-ice processes are on the same PEs as the fast sea-ice.
!!
!!
+!! calve_ice_shelf_bergs |
+!! logical |
+!! .FALSE. |
+!! If true, the ice sheet flux through a fixed ice-shelf front is
+!! converted to icebergs, rather than initializing icebergs from frozen
+!! freshwater discharge. |
+!!
+!!
!! restart_interval |
!! integer, dimension(6) |
!! (/0,0,0,0,0,0/) |
@@ -450,12 +458,8 @@ program coupler_main
if (concurrent_ice) then
!> This call occurs all ice PEs.
call coupler_exchange_fast_to_slow_ice(Ice, coupler_clocks)
- !> call fms_mpp_set_current_pelist(Ice%pelist) is called if(.not.Ice%shared_slow_fast_PEs)
- if (Ice%slow_ice_pe .and. calve_ice_shelf_bergs) then
- call fms_mpp_clock_begin(coupler_clocks%update_ice_model_slow_fast)
- call unpack_ocean_ice_boundary_calved_shelf_bergs(Ice, Ocean_ice_boundary)
- call fms_mpp_clock_end(coupler_clocks%update_ice_model_slow_fast)
- endif
+ if (Ice%slow_ice_pe .and. calve_ice_shelf_bergs) &
+ call coupler_unpack_ocean_ice_boundary_calved_ice_shelf_bergs(Ice, Ocean_ice_boundary, coupler_clocks)
endif
if (Ice%fast_ice_pe) call coupler_set_ice_surface_fields(Ice, coupler_clocks)
@@ -615,11 +619,8 @@ program coupler_main
!> This could be a point where the model is serialized; This calls on all ice PEs
if (.not.concurrent_ice) then
call coupler_exchange_fast_to_slow_ice(Ice, coupler_clocks, set_ice_current_pelist=.True.)
- if (Ice%slow_ice_pe .and. calve_ice_shelf_bergs) then
- call fms_mpp_clock_begin(coupler_clocks%update_ice_model_slow_fast)
- call unpack_ocean_ice_boundary_calved_shelf_bergs(Ice, Ocean_ice_boundary)
- call fms_mpp_clock_end(coupler_clocks%update_ice_model_slow_fast)
- endif
+ if (Ice%slow_ice_pe .and. calve_ice_shelf_bergs) &
+ call coupler_unpack_ocean_ice_boundary_calved_ice_shelf_bergs(Ice, Ocean_ice_boundary, coupler_clocks)
endif
!> slow-ice model
!! This call occurs on whichever PEs handle the slow ice processess.
diff --git a/full/full_coupler_mod.F90 b/full/full_coupler_mod.F90
index 011bc63b..79e4b0b9 100644
--- a/full/full_coupler_mod.F90
+++ b/full/full_coupler_mod.F90
@@ -101,7 +101,6 @@ module full_coupler_mod
public :: update_slow_ice_and_ocean
public :: send_ice_mask_sic
public :: flux_ice_to_ocean_finish, flux_ice_to_ocean_stocks, flux_ocean_from_ice_stocks
- public :: unpack_ocean_ice_boundary_calved_shelf_bergs
public :: atmos_model_restart, land_model_restart, ice_model_restart, ocean_model_restart
@@ -130,6 +129,7 @@ module full_coupler_mod
public :: coupler_update_land_model_slow, coupler_flux_land_to_ice
public :: coupler_unpack_land_ice_boundary, coupler_flux_ice_to_ocean
+ public :: coupler_unpack_ocean_ice_boundary_calved_ice_shelf_bergs
public :: coupler_update_ice_model_slow_and_stocks, coupler_update_ocean_model
public :: coupler_clock_type, coupler_components_type, coupler_chksum_type
@@ -221,8 +221,9 @@ module full_coupler_mod
logical, public :: do_debug=.FALSE.!< If .TRUE. print additional debugging messages.
integer, public :: check_stocks = 0 !< -1: never 0: at end of run only n>0: every n coupled steps
logical, public :: use_hyper_thread = .false.
- logical, public :: calve_ice_shelf_bergs = .false. !< If true, flux through a static ice front is converted
- !!to point bergs
+ logical, public :: calve_ice_shelf_bergs = .false. !< If true, the ice sheet flux through a fixed ice-shelf front is
+ !! converted to icebergs, rather than initializing icebergs from
+ !! frozen freshwater discharge
namelist /coupler_nml/ current_date, calendar, force_date_from_namelist, &
months, days, hours, minutes, seconds, dt_cpld, dt_atmos, &
@@ -2311,6 +2312,23 @@ subroutine coupler_unpack_land_ice_boundary(Ice, Land_ice_boundary, coupler_cloc
end subroutine coupler_unpack_land_ice_boundary
+ !> This subroutine calls unpack_ocean_ice_boundary_calved_shelf_bergs
+ subroutine coupler_unpack_ocean_ice_boundary_calved_ice_shelf_bergs(Ice, Ocean_ice_boundary, coupler_clocks)
+
+ implicit none
+ type(ice_data_type), intent(inout) :: Ice !< Ice
+ type(ocean_ice_boundary_type), intent(inout) :: Ocean_ice_boundary !< Ocean_ice_boundary
+ type(coupler_clock_type), intent(inout) :: coupler_clocks !< coupler_clocks
+
+ call fms_mpp_set_current_pelist(Ice%slow_pelist)
+ call fms_mpp_clock_begin(coupler_clocks%update_ice_model_slow_slow)
+
+ call unpack_ocean_ice_boundary_calved_shelf_bergs(Ice, Ocean_ice_boundary)
+
+ call fms_mpp_clock_end(coupler_clocks%update_ice_model_slow_slow)
+
+ end subroutine coupler_unpack_ocean_ice_boundary_calved_ice_shelf_bergs
+
!> This subroutine calls update_ice_model_slow and flux_ice_to_ocean_stocks
subroutine coupler_update_ice_model_slow_and_stocks(Ice, coupler_clocks)
diff --git a/full/ice_ocean_flux_exchange.F90 b/full/ice_ocean_flux_exchange.F90
index d1821c44..3ab622dd 100644
--- a/full/ice_ocean_flux_exchange.F90
+++ b/full/ice_ocean_flux_exchange.F90
@@ -377,7 +377,7 @@ end subroutine flux_ice_to_ocean_finish
!! v_surf = meridional ocean current/ice motion (m/s)
!! v_surf = meridional ocean current/ice motion (m/s)
!! sea_lev = sea level used to drive ice accelerations (m)
- !! calving = ice-sheet calving flux to ocean (kg m-2 s-1)
+ !! calving = ice-sheet calving flux to ocean (kg/m2/s)
!! calving_hflx = heat flux associated with ice-sheet calving (W/m2)
!!
!!