@@ -61,7 +61,7 @@ NVTX.@annotate function set_diagnostic_edmfx_env_quantities_level!(
6161 local_geometry_halflevel,
6262 turbconv_model,
6363)
64- @. u³⁰_halflevel = divide_by_ρa (
64+ @. u³⁰_halflevel = specific (
6565 ρ_level * u³_halflevel -
6666 unrolled_dotproduct (ρaʲs_level, u³ʲs_halflevel),
6767 ρ_level,
@@ -93,23 +93,28 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_bottom_bc!(
9393 FT = eltype (Y)
9494 n = n_mass_flux_subdomains (turbconv_model)
9595 (; ᶜΦ) = p. core
96- (; ᶜp, ᶠu³, ᶜh_tot, ᶜK) = p. precomputed
97- (; q_tot) = p. precomputed. ᶜspecific
96+ (; ᶜp, ᶠu³, ᶜK) = p. precomputed
9897 (; ustar, obukhov_length, buoyancy_flux, ρ_flux_h_tot, ρ_flux_q_tot) =
9998 p. precomputed. sfc_conditions
10099 (; ᶜρaʲs, ᶠu³ʲs, ᶜKʲs, ᶜmseʲs, ᶜq_totʲs, ᶜtsʲs, ᶜρʲs) = p. precomputed
101100 (; ᶠu³⁰, ᶜK⁰) = p. precomputed
102101
103102 (; params) = p
103+
104104 thermo_params = CAP. thermodynamics_params (params)
105105 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))
106111
107112 ρ_int_level = Fields. field_values (Fields. level (Y. c. ρ, 1 ))
108113 uₕ_int_level = Fields. field_values (Fields. level (Y. c. uₕ, 1 ))
109114 u³_int_halflevel = Fields. field_values (Fields. level (ᶠu³, half))
110115 h_tot_int_level = Fields. field_values (Fields. level (ᶜh_tot, 1 ))
111116 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 ))
113118
114119 p_int_level = Fields. field_values (Fields. level (ᶜp, 1 ))
115120 Φ_int_level = Fields. field_values (Fields. level (ᶜΦ, 1 ))
@@ -305,8 +310,7 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
305310 (; dt) = p
306311 dt = float (dt)
307312 (; ᶜΦ, ᶜ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
310314 (;
311315 ᶜρaʲs,
312316 ᶠu³ʲs,
@@ -321,13 +325,13 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
321325 ᶠnh_pressure³_buoyʲs,
322326 ᶠnh_pressure³_dragʲs,
323327 ) = p. precomputed
324- (; ᶠu³⁰, ᶜK⁰, ᶜtke⁰) = p. precomputed
328+ (; ᶠu³⁰, ᶜK⁰) = p. precomputed
329+
330+
325331
326332 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. ρ))
331335 end
332336
333337 thermo_params = CAP. thermodynamics_params (params)
@@ -347,13 +351,24 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
347351 Fields. field_values (Fields. level (Fields. coordinate_field (Y. f). z, half))
348352
349353 # 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+
350365 for i in 2 : Spaces. nlevels (axes (Y. c))
351366 ρ_level = Fields. field_values (Fields. level (Y. c. ρ, i))
352367 uₕ_level = Fields. field_values (Fields. level (Y. c. uₕ, i))
353368 u³_halflevel = Fields. field_values (Fields. level (ᶠu³, i - half))
354369 K_level = Fields. field_values (Fields. level (ᶜK, i))
355370 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))
357372 p_level = Fields. field_values (Fields. level (ᶜp, i))
358373 Φ_level = Fields. field_values (Fields. level (ᶜΦ, i))
359374 local_geometry_level = Fields. field_values (
@@ -378,7 +393,7 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
378393 u³⁰_data_prev_halflevel = u³⁰_prev_halflevel. components. data.:1
379394 K_prev_level = Fields. field_values (Fields. level (ᶜK, i - 1 ))
380395 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 ))
382397 ts_prev_level = Fields. field_values (Fields. level (ᶜts, i - 1 ))
383398 p_prev_level = Fields. field_values (Fields. level (ᶜp, i - 1 ))
384399 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!
965980 (; dt) = p
966981 (; ᶜp, ᶜu, ᶜts) = p. precomputed
967982 (; ustar, obukhov_length) = p. precomputed. sfc_conditions
968- (; ᶜtke⁰) = p. precomputed
969983 (; ᶜlinear_buoygrad, ᶜstrain_rate_norm) = p. precomputed
970984 (; ρatke_flux) = p. precomputed
971985 turbconv_params = CAP. turbconv_params (params)
972986 thermo_params = CAP. thermodynamics_params (params)
973987 ᶜlg = Fields. local_geometry_field (Y. c)
974988
975989 if p. atmos. turbconv_model isa DiagnosticEDMFX
976- (; ᶜρaʲs, ᶠu³ʲs, ᶜdetrʲs, ᶠu³⁰, ᶜu⁰) = p. precomputed
990+ (; ᶠu³⁰, ᶜu⁰) = p. precomputed
977991 elseif p. atmos. turbconv_model isa EDOnlyEDMFX
978992 ᶠu³⁰ = p. precomputed. ᶠu³
979993 ᶜu⁰ = ᶜu
@@ -1042,11 +1056,12 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_env_precipita
10421056 (; ᶜts, ᶜSqₜᵖ⁰) = p. precomputed
10431057
10441058 # Environment precipitation sources (to be applied to grid mean)
1059+ ᶜq_tot = @. lazy (specific (Y. c. ρq_tot, Y. c. ρ))
10451060 @. ᶜSqₜᵖ⁰ = q_tot_0M_precipitation_sources (
10461061 thermo_params,
10471062 microphys_0m_params,
10481063 dt,
1049- specific (Y . c . ρq_tot, Y . c . ρ) ,
1064+ ᶜq_tot ,
10501065 ᶜts,
10511066 )
10521067 return nothing
0 commit comments