Skip to content

Commit 0c464ed

Browse files
authored
Merge pull request #1556 from CliMA/zs/hotfix
fix sea ice conductive flux
2 parents 14f2448 + a70ab9a commit 0c464ed

File tree

2 files changed

+5
-4
lines changed

2 files changed

+5
-4
lines changed

experiments/ClimaEarth/components/ocean/prescr_seaice.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@ Ice concentration is prescribed, and we solve the following energy equation:
1818
(h * ρ * c) d T_bulk dt = (-F_turb_energy + (1 - α) * SW_d + LW_d - LW_u) + F_conductive
1919
2020
with
21-
F_conductive = k_ice (T_base - T_bulk) / (h)
21+
F_conductive = k_ice (T_base - T_sfc) / (h)
2222
2323
The bulk temperature (`T_bulk`) is the prognostic variable which is being
2424
modified by turbulent aerodynamic (`F_turb_energy`) and radiative (`F_turb_energy`) fluxes,
2525
as well as a conductive flux that depends on the temperature difference
2626
across the ice layer (with `T_base` being prescribed).
2727
28-
In the current version, the sea ice has a prescribed thickness.
28+
In the current version, the sea ice has a prescribed thickness. T_sfc is extrapolated from T_base
29+
and T_bulk assuming the ice temperature varies linearly between the ice surface and the base.
2930
"""
3031
struct PrescribedIceSimulation{P, I} <: Interfacer.SeaIceModelSimulation
3132
params::P
@@ -330,7 +331,7 @@ function ice_rhs!(dY, Y, p, t)
330331
@. p.area_fraction = max(min(p.area_fraction, FT(1) - p.land_fraction), FT(0))
331332

332333
# Calculate the conductive flux, and set it to zero if the area fraction is zero
333-
F_conductive = @. k_ice / (h) * (T_base - Y.T_bulk) # fluxes are defined to be positive when upward
334+
F_conductive = @. k_ice / (h) * (T_base - ice_surface_temperature(Y.T_bulk, T_base)) # fluxes are defined to be positive when upward
334335
rhs = @. (
335336
-p.F_turb_energy +
336337
(1 - α) * p.SW_d +

experiments/ClimaEarth/test/component_model_tests/prescr_seaice_tests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ for FT in (Float32, Float64)
142142
T_bulk = minimum(Y.T_bulk) # get the non-zero temperature value
143143
(; k_ice, h, ρ, c, T_base, ϵ) = p.params
144144
dT_expected =
145-
(k_ice / (h * h * ρ * c)) * (T_base - T_bulk) -
145+
(k_ice / (h * h * ρ * c)) * (T_base - ice_surface_temperature(T_bulk, T_base)) -
146146
* σ * ice_surface_temperature(T_bulk, T_base)^4) / (h * ρ * c)
147147
@test minimum(dY) FT(dT_expected)
148148
@test maximum(dY) FT(0)

0 commit comments

Comments
 (0)