@@ -61,7 +61,7 @@ NVTX.@annotate function set_diagnostic_edmfx_env_quantities_level!(
61
61
local_geometry_halflevel,
62
62
turbconv_model,
63
63
)
64
- @. u³⁰_halflevel = divide_by_ρa (
64
+ @. u³⁰_halflevel = specific (
65
65
ρ_level * u³_halflevel -
66
66
unrolled_dotproduct (ρaʲs_level, u³ʲs_halflevel),
67
67
ρ_level,
@@ -93,23 +93,28 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_bottom_bc!(
93
93
FT = eltype (Y)
94
94
n = n_mass_flux_subdomains (turbconv_model)
95
95
(; ᶜΦ) = p. core
96
- (; ᶜp, ᶠu³, ᶜh_tot, ᶜK) = p. precomputed
97
- (; q_tot) = p. precomputed. ᶜspecific
96
+ (; ᶜp, ᶠu³, ᶜK) = p. precomputed
98
97
(; ustar, obukhov_length, buoyancy_flux, ρ_flux_h_tot, ρ_flux_q_tot) =
99
98
p. precomputed. sfc_conditions
100
99
(; ᶜρaʲs, ᶠu³ʲs, ᶜKʲs, ᶜmseʲs, ᶜq_totʲs, ᶜtsʲs, ᶜρʲs) = p. precomputed
101
100
(; ᶠu³⁰, ᶜK⁰) = p. precomputed
102
101
103
102
(; params) = p
103
+
104
104
thermo_params = CAP. thermodynamics_params (params)
105
105
turbconv_params = CAP. turbconv_params (params)
106
+ ᶜts = p. precomputed. ᶜts # TODO replace
107
+
108
+ ᶜq_tot = @. lazy (specific (Y. c. ρq_tot, Y. c. ρ))
109
+ ᶜe_tot = @. lazy (specific (Y. c. ρe_tot, Y. c. ρ))
110
+ ᶜh_tot = @. lazy (TD. total_specific_enthalpy (thermo_params, ᶜts, ᶜe_tot))
106
111
107
112
ρ_int_level = Fields. field_values (Fields. level (Y. c. ρ, 1 ))
108
113
uₕ_int_level = Fields. field_values (Fields. level (Y. c. uₕ, 1 ))
109
114
u³_int_halflevel = Fields. field_values (Fields. level (ᶠu³, half))
110
115
h_tot_int_level = Fields. field_values (Fields. level (ᶜh_tot, 1 ))
111
116
K_int_level = Fields. field_values (Fields. level (ᶜK, 1 ))
112
- q_tot_int_level = Fields. field_values (Fields. level (q_tot , 1 ))
117
+ q_tot_int_level = Fields. field_values (Fields. level (ᶜq_tot , 1 ))
113
118
114
119
p_int_level = Fields. field_values (Fields. level (ᶜp, 1 ))
115
120
Φ_int_level = Fields. field_values (Fields. level (ᶜΦ, 1 ))
@@ -305,8 +310,7 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
305
310
(; dt) = p
306
311
dt = float (dt)
307
312
(; ᶜΦ, ᶜgradᵥ_ᶠΦ) = p. core
308
- (; ᶜp, ᶠu³, ᶜts, ᶜh_tot, ᶜK) = p. precomputed
309
- (; q_tot) = p. precomputed. ᶜspecific
313
+ (; ᶜp, ᶠu³, ᶜts, ᶜK) = p. precomputed
310
314
(;
311
315
ᶜρaʲs,
312
316
ᶠu³ʲs,
@@ -321,13 +325,13 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
321
325
ᶠnh_pressure³_buoyʲs,
322
326
ᶠnh_pressure³_dragʲs,
323
327
) = p. precomputed
324
- (; ᶠu³⁰, ᶜK⁰, ᶜtke⁰) = p. precomputed
328
+ (; ᶠu³⁰, ᶜK⁰) = p. precomputed
329
+
330
+
325
331
326
332
if microphysics_model isa Microphysics1Moment
327
- ᶜq_liqʲs = p. precomputed. ᶜq_liqʲs
328
- ᶜq_iceʲs = p. precomputed. ᶜq_iceʲs
329
- q_rai = p. precomputed. ᶜqᵣ
330
- q_sno = p. precomputed. ᶜqₛ
333
+ q_rai = @. lazy (specific (Y. c. ρq_rai, Y. c. ρ))
334
+ q_sno = @. lazy (specific (Y. c. ρq_sno, Y. c. ρ))
331
335
end
332
336
333
337
thermo_params = CAP. thermodynamics_params (params)
@@ -347,13 +351,24 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
347
351
Fields. field_values (Fields. level (Fields. coordinate_field (Y. f). z, half))
348
352
349
353
# integral
354
+ ᶜq_tot = @. lazy (specific (Y. c. ρq_tot, Y. c. ρ))
355
+ ᶜh_tot = @. lazy (
356
+ TD. total_specific_enthalpy (
357
+ thermo_params,
358
+ ᶜts,
359
+ specific (Y. c. ρe_tot, Y. c. ρ),
360
+ ),
361
+ )
362
+
363
+ ᶜtke⁰ = @. lazy (specific_tke (Y. c. ρ, Y. c. sgs⁰. ρatke, Y. c. ρ, turbconv_model))
364
+
350
365
for i in 2 : Spaces. nlevels (axes (Y. c))
351
366
ρ_level = Fields. field_values (Fields. level (Y. c. ρ, i))
352
367
uₕ_level = Fields. field_values (Fields. level (Y. c. uₕ, i))
353
368
u³_halflevel = Fields. field_values (Fields. level (ᶠu³, i - half))
354
369
K_level = Fields. field_values (Fields. level (ᶜK, i))
355
370
h_tot_level = Fields. field_values (Fields. level (ᶜh_tot, i))
356
- q_tot_level = Fields. field_values (Fields. level (q_tot , i))
371
+ q_tot_level = Fields. field_values (Fields. level (ᶜq_tot , i))
357
372
p_level = Fields. field_values (Fields. level (ᶜp, i))
358
373
Φ_level = Fields. field_values (Fields. level (ᶜΦ, i))
359
374
local_geometry_level = Fields. field_values (
@@ -378,7 +393,7 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
378
393
u³⁰_data_prev_halflevel = u³⁰_prev_halflevel. components. data.:1
379
394
K_prev_level = Fields. field_values (Fields. level (ᶜK, i - 1 ))
380
395
h_tot_prev_level = Fields. field_values (Fields. level (ᶜh_tot, i - 1 ))
381
- q_tot_prev_level = Fields. field_values (Fields. level (q_tot , i - 1 ))
396
+ q_tot_prev_level = Fields. field_values (Fields. level (ᶜq_tot , i - 1 ))
382
397
ts_prev_level = Fields. field_values (Fields. level (ᶜts, i - 1 ))
383
398
p_prev_level = Fields. field_values (Fields. level (ᶜp, i - 1 ))
384
399
z_prev_level = Fields. field_values (Fields. level (ᶜz, i - 1 ))
@@ -965,15 +980,14 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_env_closures!
965
980
(; dt) = p
966
981
(; ᶜp, ᶜu, ᶜts) = p. precomputed
967
982
(; ustar, obukhov_length) = p. precomputed. sfc_conditions
968
- (; ᶜtke⁰) = p. precomputed
969
983
(; ᶜlinear_buoygrad, ᶜstrain_rate_norm) = p. precomputed
970
984
(; ρatke_flux) = p. precomputed
971
985
turbconv_params = CAP. turbconv_params (params)
972
986
thermo_params = CAP. thermodynamics_params (params)
973
987
ᶜlg = Fields. local_geometry_field (Y. c)
974
988
975
989
if p. atmos. turbconv_model isa DiagnosticEDMFX
976
- (; ᶜρaʲs, ᶠu³ʲs, ᶜdetrʲs, ᶠu³⁰, ᶜu⁰) = p. precomputed
990
+ (; ᶠu³⁰, ᶜu⁰) = p. precomputed
977
991
elseif p. atmos. turbconv_model isa EDOnlyEDMFX
978
992
ᶠu³⁰ = p. precomputed. ᶠu³
979
993
ᶜu⁰ = ᶜu
@@ -1042,11 +1056,12 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_env_precipita
1042
1056
(; ᶜts, ᶜSqₜᵖ⁰) = p. precomputed
1043
1057
1044
1058
# Environment precipitation sources (to be applied to grid mean)
1059
+ ᶜq_tot = @. lazy (specific (Y. c. ρq_tot, Y. c. ρ))
1045
1060
@. ᶜSqₜᵖ⁰ = q_tot_0M_precipitation_sources (
1046
1061
thermo_params,
1047
1062
microphys_0m_params,
1048
1063
dt,
1049
- specific (Y . c . ρq_tot, Y . c . ρ) ,
1064
+ ᶜq_tot ,
1050
1065
ᶜts,
1051
1066
)
1052
1067
return nothing
0 commit comments