Skip to content

Commit 469bcb1

Browse files
consolidate sea ice temperature
1 parent ec70ca0 commit 469bcb1

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

src/OceanSeaIceModels/InterfaceComputations/atmosphere_sea_ice_fluxes.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ function compute_atmosphere_sea_ice_fluxes!(coupled_model)
1414
v = ZeroField(),
1515
h = sea_ice.model.ice_thickness,
1616
= sea_ice.model.ice_concentration,
17+
hc = sea_ice.model.ice_consolidation_thickness,
1718
Tₒ = ocean.model.tracers.T,
1819
Sₒ = ocean.model.tracers.S)
1920

@@ -97,6 +98,7 @@ end
9798
uᵢ = zero(FT) # ℑxᶜᵃᵃ(i, j, 1, grid, interior_state.u)
9899
vᵢ = zero(FT) # ℑyᵃᶜᵃ(i, j, 1, grid, interior_state.v)
99100
hᵢ = interior_state.h[i, j, 1]
101+
hc = interior_state.hc[i, j, 1]
100102
ℵᵢ = interior_state.ℵ[i, j, 1]
101103
Tₛ = interface_temperature[i, j, 1]
102104
Tₛ = convert_to_kelvin(sea_ice_properties.temperature_units, Tₛ)
@@ -117,7 +119,7 @@ end
117119
h_bℓ = atmosphere_state.h_bℓ)
118120

119121
downwelling_radiation = (; Qs, Qℓ)
120-
local_interior_state = (u=uᵢ, v=vᵢ, T=Tᵢ, S=Sᵢ, h=hᵢ)
122+
local_interior_state = (u=uᵢ, v=vᵢ, T=Tᵢ, S=Sᵢ, h=hᵢ, hc=hc)
121123

122124
# Estimate initial interface state
123125
u★ = convert(FT, 1e-4)

src/OceanSeaIceModels/InterfaceComputations/interface_states.jl

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,9 +269,10 @@ end
269269
# where Ωc (the sensible heat transfer coefficient) is given by Ωc = Qc / (Tₐ - Tˢ)
270270
# ⟹ Tₛ = (Tᵢ * k - (Qv + Qu + Qd + Ωc * Tₐ) * h / (k - Ωc * h)
271271
@inline function flux_balance_temperature(st::SkinTemperature{<:ClimaSeaIce.ConductiveFlux}, Ψₛ, ℙₛ, Qc, Qv, Qu, Qd, Ψᵢ, ℙᵢ, Ψₐ, ℙₐ)
272-
F = st.internal_flux
273-
k = F.conductivity
274-
h = Ψᵢ.h
272+
F = st.internal_flux
273+
k = F.conductivity
274+
h = Ψᵢ.h
275+
hc = Ψᵢ.hc # Critical thickness for ice consolidation
275276

276277
# Bottom temperature at the melting temperature
277278
Tᵢ = ClimaSeaIce.SeaIceThermodynamics.melting_temperature(ℙᵢ.liquidus, Ψᵢ.S)
@@ -303,6 +304,9 @@ end
303304
Tₘ = convert_to_kelvin(ℙᵢ.temperature_units, Tₘ)
304305
Tₛ⁺ = min(Tₛ⁺, Tₘ)
305306

307+
# If the ice is not consolidated, use the bottom temperature
308+
Tₛ⁺ = ifelse(h hc, Tₛ⁺, Tᵢ)
309+
306310
return Tₛ⁺
307311
end
308312

src/OceanSeaIceModels/time_step_ocean_sea_ice_model.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ function time_step!(coupled_model::OceanSeaIceModel, Δt; callbacks=[], compute_
2121

2222
# TODO after ice time-step:
2323
# - Adjust ocean heat flux if the ice completely melts?
24-
time_step!(ocean, Δt)
24+
!isnothing(ocean) && time_step!(ocean, Δt)
2525

2626
# Time step the atmosphere
27-
time_step!(atmosphere, Δt)
27+
!isnothing(atmosphere) && time_step!(atmosphere, Δt)
2828

2929
# TODO:
3030
# - Store fractional ice-free / ice-covered _time_ for more

0 commit comments

Comments
 (0)