Skip to content

Commit 66c4dac

Browse files
committed
chore: clean up some files
1 parent 2512576 commit 66c4dac

File tree

7 files changed

+51
-149
lines changed

7 files changed

+51
-149
lines changed

src/cache/precipitation_precomputed_quantities.jl

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -905,14 +905,10 @@ function set_precipitation_surface_fluxes!(
905905
@. ᶜq_sno = specific(Y.c.ρq_sno, Y.c.ρ)
906906
@. ᶜq_liq = specific(Y.c.ρq_liq, Y.c.ρ)
907907
@. ᶜq_ice = specific(Y.c.ρq_ice, Y.c.ρ)
908-
sfc_qᵣ =
909-
Fields.Field(Fields.field_values(Fields.level(ᶜq_rai, 1)), sfc_space)
910-
sfc_qₛ =
911-
Fields.Field(Fields.field_values(Fields.level(ᶜq_sno, 1)), sfc_space)
912-
sfc_qₗ =
913-
Fields.Field(Fields.field_values(Fields.level(ᶜq_liq, 1)), sfc_space)
914-
sfc_qᵢ =
915-
Fields.Field(Fields.field_values(Fields.level(ᶜq_ice, 1)), sfc_space)
908+
sfc_qᵣ = Fields.Field(Fields.field_values(Fields.level(ᶜq_rai, 1)), sfc_space)
909+
sfc_qₛ = Fields.Field(Fields.field_values(Fields.level(ᶜq_sno, 1)), sfc_space)
910+
sfc_qₗ = Fields.Field(Fields.field_values(Fields.level(ᶜq_liq, 1)), sfc_space)
911+
sfc_qᵢ = Fields.Field(Fields.field_values(Fields.level(ᶜq_ice, 1)), sfc_space)
916912
sfc_wᵣ = Fields.Field(Fields.field_values(Fields.level(ᶜwᵣ, 1)), sfc_space)
917913
sfc_wₛ = Fields.Field(Fields.field_values(Fields.level(ᶜwₛ, 1)), sfc_space)
918914
sfc_wₗ = Fields.Field(Fields.field_values(Fields.level(ᶜwₗ, 1)), sfc_space)

src/prognostic_equations/surface_flux.jl

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,18 +109,12 @@ function surface_flux_tendency!(Yₜ, Y, p, t)
109109
thermo_params = CAP.thermodynamics_params(params)
110110

111111
if !disable_momentum_vertical_diffusion(p.atmos.vertical_diffusion)
112-
btt =
113-
boundary_tendency_momentum(Y.c.ρ, Y.c.uₕ, sfc_conditions.ρ_flux_uₕ)
112+
btt = boundary_tendency_momentum(Y.c.ρ, Y.c.uₕ, sfc_conditions.ρ_flux_uₕ)
114113
@. Yₜ.c.uₕ -= btt
115114
end
116115

117-
ᶜh_tot = @. lazy(
118-
TD.total_specific_enthalpy(
119-
thermo_params,
120-
ᶜts,
121-
specific(Y.c.ρe_tot, Y.c.ρ),
122-
),
123-
)
116+
ᶜe_tot = @. lazy(specific(Y.c.ρe_tot, Y.c.ρ))
117+
ᶜh_tot = @. lazy(TD.total_specific_enthalpy(thermo_params, ᶜts, ᶜe_tot))
124118
btt = boundary_tendency_scalar(ᶜh_tot, sfc_conditions.ρ_flux_h_tot)
125119
@. Yₜ.c.ρe_tot -= btt
126120
ρ_flux_χ = p.scratch.sfc_temp_C3

src/prognostic_equations/vertical_diffusion_boundary_layer.jl

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,7 @@ function vertical_diffusion_boundary_layer_tendency!(
105105

106106
if !disable_momentum_vertical_diffusion(p.atmos.vertical_diffusion)
107107
ᶠstrain_rate = compute_strain_rate_face_vertical(ᶜu)
108-
@. Yₜ.c.uₕ -= C12(
109-
ᶜdivᵥ(-2 * ᶠinterp(Y.c.ρ) * ᶠinterp(ᶜK_h) * ᶠstrain_rate) / Y.c.ρ,
110-
) # assumes ᶜK_u = ᶜK_h
108+
@. Yₜ.c.uₕ -= C12(ᶜdivᵥ(-2 * ᶠinterp(Y.c.ρ) * ᶠinterp(ᶜK_h) * ᶠstrain_rate) / Y.c.ρ) # assumes ᶜK_u = ᶜK_h
111109
end
112110

113111
ᶜdivᵥ_ρe_tot = Operators.DivergenceF2C(

src/solver/type_getters.jl

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,7 @@ function get_atmos(config::AtmosConfig, params)
7272
forcing_type isa HeldSuarezForcing ? forcing_type : radiation_mode
7373
# Note: when disable_momentum_vertical_diffusion is true, the surface flux tendency
7474
# for momentum is not applied.
75-
disable_momentum_vertical_diffusion =
76-
final_radiation_mode isa HeldSuarezForcing
75+
disable_momentum_vertical_diffusion = final_radiation_mode isa HeldSuarezForcing
7776

7877
advection_test = parsed_args["advection_test"]
7978
@assert advection_test in (false, true)
@@ -108,10 +107,7 @@ function get_atmos(config::AtmosConfig, params)
108107
)
109108

110109
vertical_diffusion = get_vertical_diffusion_model(
111-
disable_momentum_vertical_diffusion,
112-
parsed_args,
113-
params,
114-
FT,
110+
disable_momentum_vertical_diffusion, parsed_args, params, FT,
115111
)
116112

117113
atmos = AtmosModel(;

src/solver/types.jl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,8 +225,7 @@ Base.@kwdef struct DecayWithHeightDiffusion{DM, FT} <: AbstractVerticalDiffusion
225225
H::FT
226226
D₀::FT
227227
end
228-
disable_momentum_vertical_diffusion(::DecayWithHeightDiffusion{DM}) where {DM} =
229-
DM
228+
disable_momentum_vertical_diffusion(::DecayWithHeightDiffusion{DM}) where {DM} = DM
230229
disable_momentum_vertical_diffusion(::Nothing) = false
231230

232231
struct SurfaceFlux end

src/surface_conditions/surface_conditions.jl

Lines changed: 34 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ Updates the value of `p.precomputed.sfc_conditions` based on the current state `
55
`t`. This function will only update the surface conditions if the surface_setup
66
is not a PrescribedSurface.
77
"""
8-
98
function update_surface_conditions!(Y, p, t)
109
# Need to extract the field values so that we can do
1110
# a DataLayout broadcast rather than a Field broadcast
@@ -22,17 +21,13 @@ function update_surface_conditions!(Y, p, t)
2221
surface_temp_params = CAP.surface_temp_params(params)
2322
int_ts_values = Fields.field_values(Fields.level(ᶜts, 1))
2423
int_u_values = Fields.field_values(Fields.level(ᶜu, 1))
25-
int_z_values =
26-
Fields.field_values(Fields.level(Fields.coordinate_field(Y.c).z, 1))
24+
int_z_values = Fields.field_values(Fields.level(Fields.coordinate_field(Y.c).z, 1))
2725
sfc_conditions_values = Fields.field_values(sfc_conditions)
2826
wrapped_sfc_setup = sfc_setup_wrapper(sfc_setup)
2927
if p.atmos.sfc_temperature isa ExternalTVColumnSST
30-
evaluate!(
31-
p.external_forcing.surface_inputs.ts,
32-
p.external_forcing.surface_timevaryinginputs.ts,
33-
t,
34-
)
35-
sfc_temp_var = Fields.field_values(p.external_forcing.surface_inputs.ts)
28+
(; surface_inputs, surface_timevaryinginputs) = p.external_forcing
29+
evaluate!(surface_inputs.ts, surface_timevaryinginputs.ts, t)
30+
sfc_temp_var = Fields.field_values(surface_inputs.ts)
3631
elseif p.atmos.surface_model isa SlabOceanSST
3732
sfc_temp_var = Fields.field_values(Y.sfc.T)
3833
else
@@ -72,10 +67,7 @@ end
7267
surface_state(sfc_setup_wrapper::SurfaceState, _, _, _) = sfc_setup_wrapper
7368

7469
surface_state(
75-
wrapped_sfc_setup::F,
76-
sfc_local_geometry_values,
77-
int_z_values,
78-
t,
70+
wrapped_sfc_setup::F, sfc_local_geometry_values, int_z_values, t,
7971
) where {F <: Function} =
8072
wrapped_sfc_setup(sfc_local_geometry_values.coordinates, int_z_values, t)
8173

@@ -97,10 +89,7 @@ function set_dummy_surface_conditions!(p)
9789
@. sfc_conditions.ts = TD.PhaseDry_ρT(thermo_params, FT(1), FT(300))
9890
else
9991
@. sfc_conditions.ts = TD.PhaseNonEquil_ρTq(
100-
thermo_params,
101-
FT(1),
102-
FT(300),
103-
TD.PhasePartition(FT(0)),
92+
thermo_params, FT(1), FT(300), TD.PhasePartition(FT(0)),
10493
)
10594
@. sfc_conditions.ρ_flux_q_tot = C3(FT(0))
10695
end
@@ -110,8 +99,7 @@ function set_dummy_surface_conditions!(p)
11099
c = p.scratch.ᶠtemp_scalar
111100
# elsewhere known as 𝒢
112101
sfc_local_geometry = Fields.level(Fields.local_geometry_field(c), half)
113-
@. sfc_conditions.ρ_flux_uₕ =
114-
tensor_from_components(0, 0, sfc_local_geometry)
102+
@. sfc_conditions.ρ_flux_uₕ = tensor_from_components(0, 0, sfc_local_geometry)
115103
end
116104

117105
"""
@@ -137,9 +125,7 @@ function set_surface_conditions!(p, surface_conditions, surface_ts)
137125
sfc_local_geometry =
138126
Fields.level(Fields.local_geometry_field(ᶠtemp_scalar), Fields.half)
139127
@. sfc_conditions = atmos_surface_conditions(
140-
surface_conditions,
141-
surface_ts,
142-
sfc_local_geometry,
128+
surface_conditions, surface_ts, sfc_local_geometry,
143129
)
144130
end
145131

@@ -179,8 +165,9 @@ function surface_state_to_conditions(
179165
sfc_temp_var,
180166
t,
181167
) where {WSS}
182-
surf_state =
183-
surface_state(wrapped_sfc_setup, surface_local_geometry, interior_z, t)
168+
surf_state = surface_state(wrapped_sfc_setup, surface_local_geometry, interior_z, t)
169+
# The above expression evalutes to:
170+
# surf_state = wrapped_sfc_setup(surface_local_geometry, interior_z, t)
184171
parameterization = surf_state.parameterization
185172
(; coordinates) = surface_local_geometry
186173
FT = eltype(thermo_params)
@@ -190,13 +177,9 @@ function surface_state_to_conditions(
190177

191178
T = if isnothing(sfc_temp_var)
192179
if isnothing(surf_state.T)
193-
surface_temperature(
194-
atmos.sfc_temperature,
195-
coordinates,
196-
surface_temp_params,
197-
)
180+
surface_temperature(atmos.sfc_temperature, coordinates, surface_temp_params)
198181
else
199-
surf_state.T
182+
surf_state.T # T is set to the constant we specified in surface_setups.jl
200183
end
201184
else
202185
sfc_temp_var
@@ -216,40 +199,35 @@ function surface_state_to_conditions(
216199
else
217200
# Assume that the surface is water with saturated air directly
218201
# above it.
219-
q_vap_sat =
220-
TD.q_vap_saturation_generic(thermo_params, T, ρ, TD.Liquid())
202+
q_vap_sat = TD.q_vap_saturation_generic(thermo_params, T, ρ, TD.Liquid())
221203
q_vap = ifelsenothing(surf_state.q_vap, q_vap_sat)
222204
q = TD.PhasePartition(q_vap)
223205
ts = TD.PhaseNonEquil_ρTq(thermo_params, ρ, T, q)
224206
end
225207
else
226-
p = surf_state.p
208+
p = surf_state.p # The value we specified in surface_setups.jl
227209
if atmos.moisture_model isa DryModel
228210
ts = TD.PhaseDry_pT(thermo_params, p, T)
229211
else
230212
q_vap = if isnothing(surf_state.q_vap)
231213
# Assume that the surface is water with saturated air directly
232214
# above it.
233215
phase = TD.Liquid()
234-
p_sat =
235-
TD.saturation_vapor_pressure(thermo_params, T, phase)
216+
p_sat = TD.saturation_vapor_pressure(thermo_params, T, phase)
236217
ϵ_v =
237-
TD.Parameters.R_d(thermo_params) /
238-
TD.Parameters.R_v(thermo_params)
218+
TD.Parameters.R_d(thermo_params) / TD.Parameters.R_v(thermo_params)
239219
ϵ_v * p_sat / (p - p_sat * (1 - ϵ_v))
240220
else
241-
surf_state.q_vap
221+
surf_state.q_vap # The value we specified in surface_setups.jl
242222
end
243-
q = TD.PhasePartition(q_vap)
244-
ts = TD.PhaseNonEquil_pTq(thermo_params, p, T, q)
223+
q = TD.PhasePartition(q_vap) # encodes q_tot=q_vap, q_liq=q_ice=0
224+
ts = TD.PhaseNonEquil_pTq(thermo_params, p, T, q) #
245225
end
246226
end
247227

248228
surface_values = SF.StateValues(coordinates.z, SA.SVector(u, v), ts)
249229
interior_values = SF.StateValues(
250-
interior_z,
251-
SA.SVector(interior_u, interior_v),
252-
interior_ts,
230+
interior_z, SA.SVector(interior_u, interior_v), interior_ts,
253231
)
254232

255233
if parameterization isa ExchangeCoefficients
@@ -302,11 +280,7 @@ function surface_state_to_conditions(
302280
end
303281
if isnothing(surf_state.gustiness)
304282
buoyancy_flux = SF.compute_buoyancy_flux(
305-
surface_fluxes_params,
306-
shf,
307-
lhf,
308-
interior_ts,
309-
ts,
283+
surface_fluxes_params, shf, lhf, interior_ts, ts,
310284
SF.PointValueScheme(),
311285
)
312286
# TODO: We are assuming that the average mixed layer depth is
@@ -322,24 +296,13 @@ function surface_state_to_conditions(
322296
)
323297
if isnothing(parameterization.ustar)
324298
inputs = SF.Fluxes(
325-
interior_values,
326-
surface_values,
327-
shf,
328-
lhf,
329-
parameterization.z0m,
330-
parameterization.z0b,
331-
gustiness,
299+
interior_values, surface_values, shf, lhf,
300+
parameterization.z0m, parameterization.z0b, gustiness,
332301
)
333302
else
334303
inputs = SF.FluxesAndFrictionVelocity(
335-
interior_values,
336-
surface_values,
337-
shf,
338-
lhf,
339-
parameterization.ustar,
340-
parameterization.z0m,
341-
parameterization.z0m,
342-
gustiness,
304+
interior_values, surface_values, shf, lhf, parameterization.ustar,
305+
parameterization.z0m, parameterization.z0m, gustiness,
343306
)
344307
end
345308
end
@@ -424,23 +387,14 @@ function surface_temperature(
424387
end
425388

426389
"""
427-
atmos_surface_conditions(
428-
surface_conditions,
429-
ts,
430-
surface_local_geometry
431-
)
390+
atmos_surface_conditions(surface_conditions, ts, surface_local_geometry)
432391
433392
Adds local geometry information to the `SurfaceFluxes.SurfaceFluxConditions` struct
434393
along with information about the thermodynamic state. The resulting values are the
435394
ones actually used by ClimaAtmos operator boundary conditions.
436395
"""
437-
function atmos_surface_conditions(
438-
surface_conditions,
439-
ts,
440-
surface_local_geometry,
441-
)
442-
(; ustar, L_MO, buoy_flux, ρτxz, ρτyz, shf, lhf, evaporation) =
443-
surface_conditions
396+
function atmos_surface_conditions(surface_conditions, ts, surface_local_geometry)
397+
(; ustar, L_MO, buoy_flux, ρτxz, ρτyz, shf, lhf, evaporation) = surface_conditions
444398

445399
# surface normal
446400
z = surface_normal(surface_local_geometry)
@@ -456,12 +410,7 @@ function atmos_surface_conditions(
456410
obukhov_length = L_MO,
457411
buoyancy_flux = buoy_flux,
458412
# This drops the C3 component of ρ_flux_u, need to add ρ_flux_u₃
459-
ρ_flux_uₕ = tensor_from_components(
460-
ρτxz,
461-
ρτyz,
462-
surface_local_geometry,
463-
z,
464-
),
413+
ρ_flux_uₕ = tensor_from_components(ρτxz, ρτyz, surface_local_geometry, z),
465414
energy_flux...,
466415
moisture_flux...,
467416
)
@@ -490,21 +439,12 @@ function surface_conditions_type(atmos, ::Type{FT}) where {FT}
490439
# NOTE: Technically ρ_flux_q_tot is not really needed for a dry model, but
491440
# SF always has evaporation
492441
moisture_flux_names = (:ρ_flux_q_tot,)
493-
names = (
494-
:ts,
495-
:ustar,
496-
:obukhov_length,
497-
:buoyancy_flux,
498-
:ρ_flux_uₕ,
499-
energy_flux_names...,
500-
moisture_flux_names...,
442+
names = (:ts, :ustar, :obukhov_length, :buoyancy_flux, :ρ_flux_uₕ,
443+
energy_flux_names..., moisture_flux_names...,
501444
)
502445
type_tuple = Tuple{
503-
atmos.moisture_model isa DryModel ? TD.PhaseDry{FT} :
504-
TD.PhaseNonEquil{FT},
505-
FT,
506-
FT,
507-
FT,
446+
atmos.moisture_model isa DryModel ? TD.PhaseDry{FT} : TD.PhaseNonEquil{FT},
447+
FT, FT, FT,
508448
typeof(C3(FT(0)) C12(FT(0), FT(0))),
509449
ntuple(_ -> C3{FT}, Val(length(energy_flux_names)))...,
510450
ntuple(_ -> C3{FT}, Val(length(moisture_flux_names)))...,

0 commit comments

Comments
 (0)