@@ -105,21 +105,24 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_bottom_bc!(
105
105
turbconv_params = CAP. turbconv_params (params)
106
106
ᶜts = p. precomputed. ᶜts # TODO replace
107
107
108
- q_tot = specific (Y. c. ρq_tot, Y. c. ρ)
108
+ q_tot = @. lazy (specific (Y. c. ρq_tot, Y. c. ρ))
109
+ ᶜe_tot = @. lazy (specific (Y. c. ρe_tot, Y. c. ρ))
109
110
ᶜh_tot = @. lazy (
110
111
TD. total_specific_enthalpy (
111
112
thermo_params,
112
113
ᶜts,
113
- specific (Y . c . ρe_tot, Y . c . ρ) ,
114
+ ᶜe_tot ,
114
115
),
115
116
)
116
117
117
118
ρ_int_level = Fields. field_values (Fields. level (Y. c. ρ, 1 ))
118
119
uₕ_int_level = Fields. field_values (Fields. level (Y. c. uₕ, 1 ))
119
120
u³_int_halflevel = Fields. field_values (Fields. level (ᶠu³, half))
120
- h_tot_int_level = Fields. field_values (Fields. level (ᶜh_tot, 1 ))
121
+ h_tot_int_level =
122
+ Fields. field_values (Fields. level (Base. materialize (ᶜh_tot), 1 ))
121
123
K_int_level = Fields. field_values (Fields. level (ᶜK, 1 ))
122
- q_tot_int_level = Fields. field_values (Fields. level (q_tot, 1 ))
124
+ q_tot_int_level =
125
+ Fields. field_values (Fields. level (Base. materialize (q_tot), 1 ))
123
126
124
127
p_int_level = Fields. field_values (Fields. level (ᶜp, 1 ))
125
128
Φ_int_level = Fields. field_values (Fields. level (ᶜΦ, 1 ))
@@ -330,7 +333,9 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
330
333
ᶠnh_pressure³_buoyʲs,
331
334
ᶠnh_pressure³_dragʲs,
332
335
) = p. precomputed
333
- (; ᶠu³⁰, ᶜK⁰, ᶜtke⁰) = p. precomputed
336
+ (; ᶠu³⁰, ᶜK⁰) = p. precomputed
337
+
338
+
334
339
335
340
if microphysics_model isa Microphysics1Moment
336
341
q_rai = @. lazy (specific (Y. c. ρq_rai, Y. c. ρ))
@@ -354,14 +359,25 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
354
359
Fields. field_values (Fields. level (Fields. coordinate_field (Y. f). z, half))
355
360
356
361
# integral
357
- q_tot = specific (Y. c. ρq_tot, Y. c. ρ)
362
+ q_tot = @. lazy (specific (Y. c. ρq_tot, Y. c. ρ))
363
+ ᶜh_tot = @. lazy (
364
+ TD. total_specific_enthalpy (
365
+ thermo_params,
366
+ ᶜts,
367
+ specific (Y. c. ρe_tot, Y. c. ρ),
368
+ ),
369
+ )
370
+ ᶜtke⁰ = ᶜspecific_tke (Y. c. sgs⁰, Y. c, p)
371
+
358
372
for i in 2 : Spaces. nlevels (axes (Y. c))
359
373
ρ_level = Fields. field_values (Fields. level (Y. c. ρ, i))
360
374
uₕ_level = Fields. field_values (Fields. level (Y. c. uₕ, i))
361
375
u³_halflevel = Fields. field_values (Fields. level (ᶠu³, i - half))
362
376
K_level = Fields. field_values (Fields. level (ᶜK, i))
363
- h_tot_level = Fields. field_values (Fields. level (ᶜh_tot, i))
364
- q_tot_level = Fields. field_values (Fields. level (q_tot, i))
377
+ h_tot_level =
378
+ Fields. field_values (Fields. level (Base. materialize (ᶜh_tot), i))
379
+ q_tot_level =
380
+ Fields. field_values (Fields. level (Base. materialize (q_tot), i))
365
381
p_level = Fields. field_values (Fields. level (ᶜp, i))
366
382
Φ_level = Fields. field_values (Fields. level (ᶜΦ, i))
367
383
local_geometry_level = Fields. field_values (
@@ -385,8 +401,10 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
385
401
Fields. field_values (Fields. level (ᶠu³⁰, i - 1 - half))
386
402
u³⁰_data_prev_halflevel = u³⁰_prev_halflevel. components. data.:1
387
403
K_prev_level = Fields. field_values (Fields. level (ᶜK, i - 1 ))
388
- h_tot_prev_level = Fields. field_values (Fields. level (ᶜh_tot, i - 1 ))
389
- q_tot_prev_level = Fields. field_values (Fields. level (q_tot, i - 1 ))
404
+ h_tot_prev_level =
405
+ Fields. field_values (Fields. level (Base. materialize (ᶜh_tot), i - 1 ))
406
+ q_tot_prev_level =
407
+ Fields. field_values (Fields. level (Base. materialize (q_tot), i - 1 ))
390
408
ts_prev_level = Fields. field_values (Fields. level (ᶜts, i - 1 ))
391
409
p_prev_level = Fields. field_values (Fields. level (ᶜp, i - 1 ))
392
410
z_prev_level = Fields. field_values (Fields. level (ᶜz, i - 1 ))
@@ -486,7 +504,9 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
486
504
Fields. field_values (Fields. level (ᶜq_iceʲ, i - 1 ))
487
505
end
488
506
489
- tke_prev_level = Fields. field_values (Fields. level (ᶜtke⁰, i - 1 ))
507
+ tke_prev_level = Fields. field_values (
508
+ Fields. level (Base. materialize (ᶜtke⁰), i - 1 ),
509
+ )
490
510
491
511
@. entrʲ_prev_level = entrainment (
492
512
thermo_params,
@@ -1015,6 +1035,8 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_env_closures!
1015
1035
@. ᶜprandtl_nvec =
1016
1036
turbulent_prandtl_number (params, ᶜlinear_buoygrad, ᶜstrain_rate_norm)
1017
1037
1038
+ ᶜtke⁰ = ᶜspecific_tke (Y. c. sgs⁰, Y. c, p)
1039
+
1018
1040
ᶜtke_exch = p. scratch. ᶜtemp_scalar_2
1019
1041
@. ᶜtke_exch = 0
1020
1042
# using ᶜu⁰ would be more correct, but this is more consistent with the
@@ -1025,7 +1047,7 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_env_closures!
1025
1047
(1 / 2 * norm_sqr (ᶜinterp (ᶠu³⁰) - ᶜinterp (ᶠu³ʲs.:($$ j))) - ᶜtke⁰)
1026
1048
end
1027
1049
1028
- sfc_tke = Fields. level (ᶜtke⁰, 1 )
1050
+ sfc_tke = Fields. level (Base . materialize ( ᶜtke⁰) , 1 )
1029
1051
z_sfc = Fields. level (Fields. coordinate_field (Y. f). z, half)
1030
1052
@. ᶜmixing_length_tuple = mixing_length (
1031
1053
params,
@@ -1090,12 +1112,12 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_env_precipita
1090
1112
(; ᶜts, ᶜSqₜᵖ⁰) = p. precomputed
1091
1113
1092
1114
# Environment precipitation sources (to be applied to grid mean)
1093
- q_tot = @. lazy (specific (Y. c. ρq_tot, Y. c. ρ))
1115
+ ᶜq_tot = @. lazy (specific (Y. c. ρq_tot, Y. c. ρ))
1094
1116
@. ᶜSqₜᵖ⁰ = q_tot_0M_precipitation_sources (
1095
1117
thermo_params,
1096
1118
microphys_0m_params,
1097
1119
dt,
1098
- specific (Y . c . ρq_tot, Y . c . ρ) ,
1120
+ ᶜq_tot ,
1099
1121
ᶜts,
1100
1122
)
1101
1123
return nothing
0 commit comments