Skip to content

Commit

Permalink
Changed ice-shelf calving so that it is no longer cumulative over tim…
Browse files Browse the repository at this point in the history
…e steps, which seems to have been an error that caused too many bergs to calve. Also fixed potential sign error for ice shelf calving hflx and unit scaling for ice shelf calving.
  • Loading branch information
alex-huth committed Jan 10, 2024
1 parent 477d01c commit 006445f
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 13 deletions.
2 changes: 1 addition & 1 deletion src/ice_shelf/MOM_ice_shelf.F90
Original file line number Diff line number Diff line change
Expand Up @@ -854,7 +854,7 @@ subroutine ice_sheet_calving_to_ocean_sfc(CS,US,calving,calving_hflx)
ISS => CS%ISS
is = G%isc ; ie = G%iec ; js = G%jsc ; je = G%jec

calving = US%RZ_to_kg_m2 * ISS%calving(is:ie, js:je)
calving = US%RZ_T_to_kg_m2s * ISS%calving(is:ie,js:je)
calving_hflx = US%QRZ_T_to_W_m2 * ISS%calving_hflx(is:ie,js:je)

CS%calve_ice_shelf_bergs=.true.
Expand Down
15 changes: 4 additions & 11 deletions src/ice_shelf/MOM_ice_shelf_dynamics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1179,19 +1179,12 @@ subroutine ice_shelf_advect(CS, ISS, G, time_step, Time, calve_ice_shelf_bergs)
call shelf_advance_front(CS, ISS, G, ISS%hmask, uh_ice, vh_ice)
!add mass of the partially-filled cells to calving field, which is used to initialize icebergs
!Then, remove the partially-filled cells from the ice shelf
!Note that the ocean_public_type calving and calving_hflx point
!to ISS%calving and ISS%calving_hflx, repectively
do j=jsc,jec; do i=isc,iec
if (ISS%hmask(i,j)==2) then
ISS%calving(i,j) = ISS%calving(i,j) + &
ISS%h_shelf(i,j) * ISS%area_shelf_h(i,j) * CS%density_ice / (G%areaT(i,j) * time_step) !kg/m2s
!is this correct (which Cp and T do you use?) See river definition of calving_hflx?
!see MOM_forcing_type.F90...why use heat capacity of seawater there.
!here, we use Cp_ice of freshwater, and dT is the shelf temperature (maybe should be
!shelf temperature - local seawater temperature?)
ISS%calving_hflx(i,j) = ISS%calving_hflx(i,j) + &
CS%Cp_ice * ISS%h_shelf(i,j) * ISS%area_shelf_h(i,j) * &
CS%density_ice * abs(CS%t_shelf(i,j)) / G%areaT(i,j) !W/m2
ISS%calving(i,j) = ISS%h_shelf(i,j) * ISS%area_shelf_h(i,j) * &
CS%density_ice / (G%areaT(i,j) * time_step)
ISS%calving_hflx(i,j) = CS%Cp_ice * ISS%h_shelf(i,j) * ISS%area_shelf_h(i,j) * &
CS%density_ice * CS%t_shelf(i,j) / G%areaT(i,j)
ISS%h_shelf(i,j) = 0.0; ISS%area_shelf_h(i,j) = 0.0; ISS%hmask(i,j) = 0.0
endif
enddo; enddo
Expand Down
2 changes: 1 addition & 1 deletion src/ice_shelf/MOM_ice_shelf_state.F90
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ module MOM_ice_shelf_state

!only active when calve_point_bergs_from_static_shelf_front=.true.:
calving => NULL(), & !< The mass per unit area of the ice shelf to convert to
!!bergs [R Z ~> kg m-2].
!!bergs [RZ_T ~> kg m-2 s-1].
calving_hflx => NULL() !< Calving heat flux [Q R Z T-1 ~> W m-2].
end type ice_shelf_state

Expand Down

0 comments on commit 006445f

Please sign in to comment.