Skip to content

Commit 6ab1264

Browse files
committed
var albedo for slab ocean
1 parent 924868a commit 6ab1264

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

experiments/ClimaEarth/components/ocean/slab_ocean.jl

+10-2
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ function ocean_init(
8989
thermo_params = thermo_params,
9090
# add dss_buffer to cache to avoid runtime dss allocation
9191
dss_buffer = CC.Spaces.create_dss_buffer(CC.Fields.zeros(space)),
92+
α_direct = CC.Fields.ones(space) .* params.α,
93+
α_diffuse = CC.Fields.ones(space) .* params.α,
9294
)
9395

9496
ode_algo = CTS.ExplicitAlgorithm(stepper)
@@ -110,8 +112,8 @@ Interfacer.get_field(sim::SlabOceanSimulation, ::Val{:area_fraction}) = sim.inte
110112
Interfacer.get_field(sim::SlabOceanSimulation, ::Val{:beta}) = convert(eltype(sim.integrator.u), 1.0)
111113
Interfacer.get_field(sim::SlabOceanSimulation, ::Val{:roughness_buoyancy}) = sim.integrator.p.params.z0b
112114
Interfacer.get_field(sim::SlabOceanSimulation, ::Val{:roughness_momentum}) = sim.integrator.p.params.z0m
113-
Interfacer.get_field(sim::SlabOceanSimulation, ::Union{Val{:surface_direct_albedo}, Val{:surface_diffuse_albedo}}) =
114-
sim.integrator.p.params.α
115+
Interfacer.get_field(sim::SlabOceanSimulation, ::Val{:surface_direct_albedo}) = sim.integrator.p.α_direct
116+
Interfacer.get_field(sim::SlabOceanSimulation, ::Val{:surface_diffuse_albedo}) = sim.integrator.p.α_diffuse
115117
Interfacer.get_field(sim::SlabOceanSimulation, ::Val{:surface_humidity}) = sim.integrator.p.q_sfc
116118
Interfacer.get_field(sim::SlabOceanSimulation, ::Val{:surface_temperature}) = sim.integrator.u.T_sfc
117119
Interfacer.get_field(sim::SlabOceanSimulation, ::Val{:water}) = nothing
@@ -137,6 +139,12 @@ end
137139
function Interfacer.update_field!(sim::SlabOceanSimulation, ::Val{:turbulent_energy_flux}, field)
138140
parent(sim.integrator.p.F_turb_energy) .= parent(field)
139141
end
142+
function Interfacer.update_field!(sim::SlabOceanSimulation, ::Val{:surface_direct_albedo}, field::CC.Fields.Field)
143+
sim.integrator.p.α_direct .= field
144+
end
145+
function Interfacer.update_field!(sim::SlabOceanSimulation, ::Val{:surface_diffuse_albedo}, field::CC.Fields.Field)
146+
sim.integrator.p.α_diffuse .= field
147+
end
140148

141149
# extensions required by FieldExchanger
142150
Interfacer.step!(sim::SlabOceanSimulation, t) = Interfacer.step!(sim.integrator, t - sim.integrator.t, true)

0 commit comments

Comments
 (0)