@@ -260,6 +260,32 @@ function compute_u³ʲ_u³ʲ(
260
260
return u³ʲ_u³ʲ
261
261
end
262
262
263
+ function compute_ρaʲu³ʲ (
264
+ J_halflevel,
265
+ J_prev_level,
266
+ J_prev_halflevel,
267
+ ρaʲ_prev_level,
268
+ entrʲ_prev_level,
269
+ detrʲ_prev_level,
270
+ u³ʲ_data_prev_halflevel,
271
+ S_q_totʲ_prev_level,
272
+ precip_model,
273
+ )
274
+
275
+ ρaʲu³ʲ_data =
276
+ (1 / J_halflevel) *
277
+ (J_prev_halflevel * ρaʲ_prev_level * u³ʲ_data_prev_halflevel)
278
+
279
+ ρaʲu³ʲ_data +=
280
+ (1 / J_halflevel) *
281
+ (J_prev_level * ρaʲ_prev_level * (entrʲ_prev_level - detrʲ_prev_level))
282
+ if precip_model isa Union{Microphysics0Moment, Microphysics1Moment}
283
+ ρaʲu³ʲ_data +=
284
+ (1 / J_halflevel) *
285
+ (J_prev_level * ρaʲ_prev_level * S_q_totʲ_prev_level)
286
+ end
287
+ return ρaʲu³ʲ_data
288
+ end
263
289
264
290
NVTX. @annotate function set_diagnostic_edmf_precomputed_quantities_do_integral! (
265
291
Y,
@@ -410,10 +436,13 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
410
436
scale_height =
411
437
CAP. R_d (params) * CAP. T_surf_ref (params) / CAP. grav (params)
412
438
413
- if precip_model isa Union{Microphysics0Moment, Microphysics1Moment}
414
- S_q_totʲ_prev_level =
439
+ S_q_totʲ_prev_level =
440
+ if precip_model isa
441
+ Union{Microphysics0Moment, Microphysics1Moment}
415
442
Fields. field_values (Fields. level (ᶜS_q_totʲ, i - 1 ))
416
- end
443
+ else
444
+ Ref (nothing )
445
+ end
417
446
if precip_model isa Microphysics1Moment
418
447
S_q_raiʲ_prev_level =
419
448
Fields. field_values (Fields. level (ᶜS_q_raiʲ, i - 1 ))
@@ -597,37 +626,23 @@ NVTX.@annotate function set_diagnostic_edmf_precomputed_quantities_do_integral!(
597
626
local_geometry_prev_halflevel,
598
627
),
599
628
dz_prev_level,
600
- )
601
- @. detrʲ_prev_level = limit_detrainment (
602
- detrʲ_prev_level,
603
- draft_area (ρaʲ_prev_level, ρʲ_prev_level),
604
629
dt,
605
630
)
606
631
607
632
ρaʲu³ʲ_data = p. scratch. temp_data_level_2
608
633
ρaʲu³ʲ_datamse = ρaʲu³ʲ_dataq_tot = p. scratch. temp_data_level_3
609
634
610
- @. ρaʲu³ʲ_data =
611
- (1 / local_geometry_halflevel. J) * (
612
- local_geometry_prev_halflevel. J *
613
- ρaʲ_prev_level *
614
- u³ʲ_data_prev_halflevel
615
- )
616
-
617
- @. ρaʲu³ʲ_data +=
618
- (1 / local_geometry_halflevel. J) * (
619
- local_geometry_prev_level. J *
620
- ρaʲ_prev_level *
621
- (entrʲ_prev_level - detrʲ_prev_level)
622
- )
623
- if precip_model isa Union{Microphysics0Moment, Microphysics1Moment}
624
- @. ρaʲu³ʲ_data +=
625
- (1 / local_geometry_halflevel. J) * (
626
- local_geometry_prev_level. J *
627
- ρaʲ_prev_level *
628
- S_q_totʲ_prev_level
629
- )
630
- end
635
+ @. ρaʲu³ʲ_data = compute_ρaʲu³ʲ (
636
+ local_geometry_halflevel. J,
637
+ local_geometry_prev_level. J,
638
+ local_geometry_prev_halflevel. J,
639
+ ρaʲ_prev_level,
640
+ entrʲ_prev_level,
641
+ detrʲ_prev_level,
642
+ u³ʲ_data_prev_halflevel,
643
+ S_q_totʲ_prev_level,
644
+ precip_model,
645
+ )
631
646
632
647
@. u³ʲ_halflevel = ifelse (
633
648
(
0 commit comments