@@ -27,33 +27,38 @@ prognostic_nt(::Val{names}, ::Val{K}, vals...) where {names, K} =
27
27
@generated function construct_tends (:: Val{names} , f, ᶜY, ᶠY, p, t) where {names}
28
28
calls = []
29
29
for name in names
30
- push! (calls, :(f (Val ($ name), ᶜY, ᶠY, p, t)))
30
+ push! (calls, :(f (Val ($ ( QuoteNode ( name)) ), ᶜY, ᶠY, p, t)))
31
31
end
32
32
return quote
33
- $ (calls... )
33
+ ( $ (calls... ), )
34
34
end
35
35
end
36
36
37
37
function ᶜremaining_tendency (ᶜY, ᶠY, p, t)
38
38
names = propertynames (ᶜY)
39
39
tends = construct_tends (Val (names), ᶜremaining_tendency, ᶜY, ᶠY, p, t)
40
- # tends = (;
41
- # ᶜremaining_tendency(Val(:ρ), ᶜY, ᶠY, p, t)...,
42
- # ᶜremaining_tendency(Val(:uₕ), ᶜY, ᶠY, p, t)...,
43
- # ᶜremaining_tendency(Val(:ρe_tot), ᶜY, ᶠY, p, t)...,
44
- # ᶜremaining_tendency(Val(:ρq_tot), ᶜY, ᶠY, p, t)...,
45
- # ᶜremaining_tendency(Val(:ρq_liq), ᶜY, ᶠY, p, t)...,
46
- # ᶜremaining_tendency(Val(:ρq_ice), ᶜY, ᶠY, p, t)...,
47
- # ᶜremaining_tendency(Val(:ρq_rai), ᶜY, ᶠY, p, t)...,
48
- # ᶜremaining_tendency(Val(:ρq_sno), ᶜY, ᶠY, p, t)...,
49
- # ᶜremaining_tendency(Val(:sgs⁰), ᶜY, ᶠY, p, t)...,
50
- # ᶜremaining_tendency(Val(:sgsʲs), ᶜY, ᶠY, p, t)...,
40
+ @show length (tends)
41
+ @show length (names)
42
+ # tends = (
43
+ # ᶜremaining_tendency(Val(:ρ), ᶜY, ᶠY, p, t),
44
+ # ᶜremaining_tendency(Val(:uₕ), ᶜY, ᶠY, p, t),
45
+ # ᶜremaining_tendency(Val(:ρe_tot), ᶜY, ᶠY, p, t),
46
+ # ᶜremaining_tendency(Val(:ρq_tot), ᶜY, ᶠY, p, t),
47
+ # ᶜremaining_tendency(Val(:ρq_liq), ᶜY, ᶠY, p, t),
48
+ # ᶜremaining_tendency(Val(:ρq_ice), ᶜY, ᶠY, p, t),
49
+ # ᶜremaining_tendency(Val(:ρq_rai), ᶜY, ᶠY, p, t),
50
+ # ᶜremaining_tendency(Val(:ρq_sno), ᶜY, ᶠY, p, t),
51
+ # ᶜremaining_tendency(Val(:sgs⁰), ᶜY, ᶠY, p, t),
52
+ # ᶜremaining_tendency(Val(:sgsʲs), ᶜY, ᶠY, p, t),
51
53
# )
52
54
53
55
# return lazy.(prognostic_nt.(Val(names), Val(keys(tends)), values(tends)...))
54
- prog_nt = (NamedTuple{names} ∘ tuple)
55
- return lazy .(prog_nt .(tends))
56
+ # prog_nt = (NamedTuple{names} ∘ tuple)
57
+ # return lazy.(prog_nt.(tends))
58
+ return lazy .(foo .(Val (names), tends... ))
56
59
end
60
+ foo (:: Val{names} , tends... ) where {names} = NamedTuple {names} (tends)
61
+
57
62
function ᶠremaining_tendency (ᶜY, ᶠY, p, t)
58
63
names = propertynames (ᶠY)
59
64
tends = construct_tends (Val (names), ᶠremaining_tendency, ᶜY, ᶠY, p, t)
@@ -62,8 +67,9 @@ function ᶠremaining_tendency(ᶜY, ᶠY, p, t)
62
67
# ᶠremaining_tendency(Val(:sgsʲs), ᶜY, ᶠY, p, t)...,
63
68
# )
64
69
# return lazy.(prognostic_nt.(Val(names), Val(keys(tends)), values(tends)...))
65
- prog_nt = (NamedTuple{names} ∘ tuple)
66
- return lazy .(prog_nt .(tends))
70
+ # prog_nt = (NamedTuple{names} ∘ tuple)
71
+ # return lazy.(prog_nt.(tends))
72
+ return lazy .(foo .(Val (names), tends... ))
67
73
end
68
74
using ClimaCore. RecursiveApply: rzero
69
75
function ᶜremaining_tendency (:: Val{:ρ} , ᶜY, ᶠY, p, t)
0 commit comments