@@ -29,24 +29,36 @@ obs_filename = join(["obs_", site_data_stem])
29
29
30
30
31
31
# Meteorological data
32
- met_data = NCDataset (joinpath (path, met_filename))
33
- timestamp = met_data[" time" ][:]
34
- year = Dates. year .(timestamp)
35
- # convert from milliseconds to seconds
36
- mask = (year .== 2009 ) .| (year .== 2010 ) .| (year .== 2011 )
37
- seconds = Dates. value .(timestamp[mask] .- timestamp[mask][1 ]) / 1000
38
-
39
- LWdown = met_data[" LWdown" ][:][mask]
40
- SWdown = met_data[" SWdown" ][:][mask]
41
- Psurf = met_data[" Psurf" ][:][mask]
42
- q_air = met_data[" Qair" ][:][mask]
43
- Tair = met_data[" Tair" ][:][mask]
44
- u = met_data[" Wind" ][:][mask]
45
- # convert mass flux into volume flux of liquid water
46
- # additionally, our convention is that a negative flux is downwards
47
- rainf = - met_data[" Rainf" ][:][mask] ./ 1000.0 # convert to dS/dt
48
- snowf = - met_data[" Snowf" ][:][mask] ./ 1000.0 # convert to dS/dt
32
+ timestamp, mask, seconds, LWdown, SWdown, Psurf, q_air, Tair, u, rainf, snowf =
33
+ NCDataset (joinpath (path, met_filename)) do met_data
34
+ timestamp = met_data[" time" ][:]
35
+ year = Dates. year .(timestamp)
36
+ # convert from milliseconds to seconds
37
+ mask = (year .== 2009 ) .| (year .== 2010 ) .| (year .== 2011 )
38
+ seconds = Dates. value .(timestamp[mask] .- timestamp[mask][1 ]) / 1000
49
39
40
+ LWdown = met_data[" LWdown" ][:][mask]
41
+ SWdown = met_data[" SWdown" ][:][mask]
42
+ Psurf = met_data[" Psurf" ][:][mask]
43
+ q_air = met_data[" Qair" ][:][mask]
44
+ Tair = met_data[" Tair" ][:][mask]
45
+ u = met_data[" Wind" ][:][mask]
46
+ # convert mass flux into volume flux of liquid water
47
+ # additionally, our convention is that a negative flux is downwards
48
+ rainf = - met_data[" Rainf" ][:][mask] ./ 1000.0 # convert to dS/dt
49
+ snowf = - met_data[" Snowf" ][:][mask] ./ 1000.0 # convert to dS/dt
50
+ return timestamp,
51
+ mask,
52
+ seconds,
53
+ LWdown,
54
+ SWdown,
55
+ Psurf,
56
+ q_air,
57
+ Tair,
58
+ u,
59
+ rainf,
60
+ snowf
61
+ end
50
62
# Required parameters for forcing
51
63
earth_param_set = LP. LandParameters (FT)
52
64
thermo_params = LP. thermodynamic_parameters (earth_param_set)
@@ -97,19 +109,23 @@ atmos = PrescribedAtmosphere(
97
109
)
98
110
forcing = (; atmos, radiation)
99
111
# Snow data
100
- snow_data = NCDataset (joinpath (path, obs_filename))
112
+ albedo, z, mass, ts = NCDataset (joinpath (path, obs_filename)) do snow_data
113
+ albedo = snow_data[" albs" ][:][mask]
114
+ z = snow_data[" snd_man" ][:][mask]
115
+ mass = snow_data[" snw_man" ][:][mask]
116
+ ts = snow_data[" ts" ][:][mask]
117
+ return albedo, z, mass, ts
118
+ end
119
+
101
120
102
- albedo = snow_data[" albs" ][:][mask]
103
- z = snow_data[" snd_man" ][:][mask]
104
- mass = snow_data[" snw_man" ][:][mask]
105
121
106
122
mass_data_avail = .! (typeof .(mass) .< : Missing)
107
123
# Although snow mass data is present, other data may be missing
108
124
# We replace Missing with NaN, here, so that we can plot the data
109
125
# with gaps
110
126
fill_missing (x, FT) = typeof (x) <: Missing ? FT (NaN ) : x
111
127
112
- T_snow = fill_missing .(snow_data[ " ts " ][:][mask] [mass_data_avail], FT)
128
+ T_snow = fill_missing .(ts [mass_data_avail], FT)
113
129
ρ_snow = fill_missing .(mass[mass_data_avail] ./ z[mass_data_avail], FT)
114
130
depths = fill_missing .(z[mass_data_avail], FT)
115
131
SWE = depths .* ρ_snow ./ 1000.0
0 commit comments