1
- export LandHydrologyModel
1
+ export SoilSnowModel
2
2
using ClimaCore. Operators: column_integral_definite!
3
3
4
4
5
5
"""
6
- struct LandHydrologyModel {
6
+ struct SoilSnowModel {
7
7
FT,
8
8
SnM <: Snow.SnowModel{FT},
9
9
SoM <: Soil.EnergyHydrology{FT},
@@ -18,7 +18,7 @@ A concrete type of land model used for simulating systems with
18
18
snow and soil (and eventually rivers).
19
19
$(DocStringExtensions. FIELDS)
20
20
"""
21
- struct LandHydrologyModel {
21
+ struct SoilSnowModel {
22
22
FT,
23
23
SnM <: Snow.SnowModel{FT} ,
24
24
SoM <: Soil.EnergyHydrology{FT} ,
@@ -30,7 +30,7 @@ struct LandHydrologyModel{
30
30
end
31
31
32
32
"""
33
- LandHydrologyModel {FT}(;
33
+ SoilSnowModel {FT}(;
34
34
land_args::NamedTuple = (;),
35
35
snow_model_type::Type{SnM},
36
36
snow_args::NamedTuple = (;),
44
44
45
45
A constructor for the `LandHydrology`, which takes in the concrete model
46
46
type and required arguments for each component, constructs those models,
47
- and constructs the `LandHydrologyModel ` from them.
47
+ and constructs the `SoilSnowModel ` from them.
48
48
49
49
Each component model is constructed with everything it needs to be stepped
50
50
forward in time, including boundary conditions, source terms, and interaction
51
51
terms.
52
52
"""
53
- function LandHydrologyModel {FT} (;
53
+ function SoilSnowModel {FT} (;
54
54
land_args:: NamedTuple = (;),
55
55
snow_model_type:: Type{SnM} ,
56
56
snow_args:: NamedTuple = (;),
@@ -95,16 +95,16 @@ function LandHydrologyModel{FT}(;
95
95
snow_args... ,
96
96
)
97
97
98
- return LandHydrologyModel {FT, typeof(snow), typeof(soil)} (snow, soil)
98
+ return SoilSnowModel {FT, typeof(snow), typeof(soil)} (snow, soil)
99
99
end
100
100
101
101
"""
102
- lsm_aux_vars(m::LandHydrologyModel )
102
+ lsm_aux_vars(m::SoilSnowModel )
103
103
104
104
The names of the additional auxiliary variables that are
105
105
included in the integrated Soil-Snow model.
106
106
"""
107
- lsm_aux_vars (m:: LandHydrologyModel ) = (
107
+ lsm_aux_vars (m:: SoilSnowModel ) = (
108
108
:excess_water_flux ,
109
109
:excess_heat_flux ,
110
110
:atmos_energy_flux ,
@@ -116,21 +116,21 @@ lsm_aux_vars(m::LandHydrologyModel) = (
116
116
:effective_soil_sfc_depth ,
117
117
)
118
118
"""
119
- lsm_aux_types(m::LandHydrologyModel )
119
+ lsm_aux_types(m::SoilSnowModel )
120
120
121
121
The types of the additional auxiliary variables that are
122
122
included in the integrated Soil-Snow model.
123
123
"""
124
- lsm_aux_types (m:: LandHydrologyModel {FT} ) where {FT} =
124
+ lsm_aux_types (m:: SoilSnowModel {FT} ) where {FT} =
125
125
(FT, FT, FT, FT, FT, FT, FT, FT, FT)
126
126
127
127
"""
128
- lsm_aux_domain_names(m::LandHydrologyModel )
128
+ lsm_aux_domain_names(m::SoilSnowModel )
129
129
130
130
The domain names of the additional auxiliary variables that are
131
131
included in the integrated Soil-Snow model.
132
132
"""
133
- lsm_aux_domain_names (m:: LandHydrologyModel ) = (
133
+ lsm_aux_domain_names (m:: SoilSnowModel ) = (
134
134
:surface ,
135
135
:surface ,
136
136
:surface ,
@@ -144,7 +144,7 @@ lsm_aux_domain_names(m::LandHydrologyModel) = (
144
144
145
145
"""
146
146
make_update_boundary_fluxes(
147
- land::LandHydrologyModel {FT, SnM, SoM},
147
+ land::SoilSnowModel {FT, SnM, SoM},
148
148
) where {
149
149
FT,
150
150
SnM <: Snow.SnowModel{FT},
@@ -154,7 +154,7 @@ lsm_aux_domain_names(m::LandHydrologyModel) = (
154
154
A method which makes a function; the returned function
155
155
updates the additional auxiliary variables for the integrated model,
156
156
as well as updates the boundary auxiliary variables for all component
157
- models.
157
+ models.
158
158
159
159
This function is called each ode function evaluation, prior to the tendency function
160
160
evaluation.
@@ -167,7 +167,7 @@ completely melts in a step. In this case, that excess must go to the soil for co
167
167
4. Compute the net flux for the atmosphere, which is useful for assessing conservation.
168
168
"""
169
169
function make_update_boundary_fluxes (
170
- land:: LandHydrologyModel {FT, SnM, SoM} ,
170
+ land:: SoilSnowModel {FT, SnM, SoM} ,
171
171
) where {FT, SnM <: Snow.SnowModel{FT} , SoM <: Soil.EnergyHydrology{FT} }
172
172
update_soil_bf! = make_update_boundary_fluxes (land. soil)
173
173
update_snow_bf! = make_update_boundary_fluxes (land. snow)
@@ -225,15 +225,15 @@ end
225
225
"""
226
226
update_soil_snow_ground_heat_flux!(p, Y, soil_params, snow_params, soil_domain, FT)
227
227
228
- Computes and updates `p.ground_heat_flux` with the ground heat flux. We approximate this
228
+ Computes and updates `p.ground_heat_flux` with the ground heat flux. We approximate this
229
229
as
230
230
F_g = - κ_eff (T_snow - T_soil)/Δz_eff,
231
231
232
232
where:
233
233
κ_eff = κ_soil * κ_snow / (κ_snow * Δz_soil / 2 + κ_soil * Δz_snow / 2)* (Δz_soil + Δz_snow)/2
234
234
Δz_eff =( Δz_soil + Δz_snow)/2
235
235
236
- This is what JULES does to compute the diffusive heat flux between snow and soil, for example,
236
+ This is what JULES does to compute the diffusive heat flux between snow and soil, for example,
237
237
see equation 24 and 25, with k=N, of Best et al, Geosci. Model Dev., 4, 677–699, 2011
238
238
239
239
However, this is for a multi-layer snow model, with
@@ -315,15 +315,15 @@ end
315
315
t,
316
316
) where {FT}
317
317
318
- A method of `snow_boundary_fluxes!` which computes
318
+ A method of `snow_boundary_fluxes!` which computes
319
319
the boundary fluxes for the snow model accounting
320
320
for a heat flux between the soil and snow.
321
321
322
- The snow surface is
322
+ The snow surface is
323
323
assumed to be bare (no vegetation).
324
324
325
325
Currently this is almost identical to the method for snow alone,
326
- except for the inclusion of the ground heat flux (precomputed by
326
+ except for the inclusion of the ground heat flux (precomputed by
327
327
the integrated land model). However, this will change more if e.g.
328
328
we allow for transmission of radiation through the snowpack.
329
329
"""
@@ -456,7 +456,7 @@ function ClimaLand.source!(
456
456
_ρ_l / _ρ_i * heaviside (z + 2 * Δz_top) # only apply to top layer, recall that z is negative
457
457
end
458
458
459
- function ClimaLand. get_drivers (model:: LandHydrologyModel )
459
+ function ClimaLand. get_drivers (model:: SoilSnowModel )
460
460
return (
461
461
model. snow. boundary_conditions. atmos,
462
462
model. snow. boundary_conditions. radiation,
0 commit comments