@@ -88,6 +88,10 @@ function DiffusivityFields(grid, tracer_names, bcs, ::FlavorOfTISSD{TD}) where T
8888 return K
8989end
9090
91+ # Build closure fields for model initialization
92+ build_closure_fields (grid, clock, tracer_names, bcs, closure:: FlavorOfTISSD ) =
93+ DiffusivityFields (grid, tracer_names, bcs, closure)
94+
9195function compute_diffusivities! (diffusivities, closure:: FlavorOfTISSD{TD} , model; parameters = :xyz ) where TD
9296
9397 arch = model. architecture
@@ -164,15 +168,15 @@ end
164168@inline triad_mask_y (i, jy, jz, ky, kz, grid) =
165169 ! peripheral_node (i, jy, ky, grid, Center (), Face (), Center ()) & ! peripheral_node (i, jz, kz, grid, Center (), Center (), Face ())
166170
167- @inline ϵκx⁺⁺ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_x (i+ 1 , i, j, k, k+ 1 , grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
168- @inline ϵκx⁺⁻ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_x (i+ 1 , i, j, k, k, grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
169- @inline ϵκx⁻⁺ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_x (i, i, j, k, k+ 1 , grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
170- @inline ϵκx⁻⁻ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_x (i, i, j, k, k, grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
171+ @inline ϵκx⁺⁺ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_x (i+ 1 , i, j, k, k+ 1 , grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock, C ) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
172+ @inline ϵκx⁺⁻ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_x (i+ 1 , i, j, k, k, grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock, C ) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
173+ @inline ϵκx⁻⁺ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_x (i, i, j, k, k+ 1 , grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock, C ) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
174+ @inline ϵκx⁻⁻ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_x (i, i, j, k, k, grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock, C ) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
171175
172- @inline ϵκy⁺⁺ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_y (i, j+ 1 , j, k, k+ 1 , grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
173- @inline ϵκy⁺⁻ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_y (i, j+ 1 , j, k, k, grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
174- @inline ϵκy⁻⁺ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_y (i, j, j, k, k+ 1 , grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
175- @inline ϵκy⁻⁻ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_y (i, j, j, k, k, grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
176+ @inline ϵκy⁺⁺ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_y (i, j+ 1 , j, k, k+ 1 , grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock, C ) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
177+ @inline ϵκy⁺⁻ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_y (i, j+ 1 , j, k, k, grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock, C ) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
178+ @inline ϵκy⁻⁺ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_y (i, j, j, k, k+ 1 , grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock, C ) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
179+ @inline ϵκy⁻⁻ (i, j, k, grid, loc, κ, clock, sl, b, C) = triad_mask_y (i, j, j, k, k, grid) * κᶜᶜᶜ (i, j, k, grid, loc, κ, clock, C ) * tapering_factorᶜᶜᶜ (i, j, k, grid, sl, b, C)
176180
177181# Triad diagram key
178182# =================
282286 ϵκʸ⁻⁺ * Sy⁻⁺ (i, j, k- 1 , grid, b, C) * ∂yᶜᶠᶜ (i, j, k- 1 , grid, c) +
283287 ϵκʸ⁺⁺ * Sy⁺⁺ (i, j, k- 1 , grid, b, C) * ∂yᶜᶠᶜ (i, j+ 1 , k- 1 , grid, c)) / 4
284288
285- κϵ_R₃₃_∂z_c = explicit_R₃₃_∂z_c (i, j, k, grid, TD (), c, closure, b, C)
289+ κϵ_R₃₃_∂z_c = explicit_R₃₃_∂z_c (i, j, k, grid, TD (), clock, c, closure, b, C)
286290
287291 return - κR₃₁_∂x_c - κR₃₂_∂y_c - κϵ_R₃₃_∂z_c
288292end
@@ -308,13 +312,13 @@ end
308312 return ϵκR₃₃
309313end
310314
311- @inline function explicit_R₃₃_∂z_c (i, j, k, grid, :: ExplicitTimeDiscretization , c, closure, b, C)
315+ @inline function explicit_R₃₃_∂z_c (i, j, k, grid, :: ExplicitTimeDiscretization , clock, c, closure, b, C)
312316 κ = closure. κ_symmetric
313317 sl = closure. slope_limiter
314318 return ϵκR₃₃ (i, j, k, grid, κ, clock, sl, b, C) * ∂zᶜᶜᶠ (i, j, k, grid, c)
315319end
316320
317- @inline explicit_R₃₃_∂z_c (i, j, k, grid, :: VerticallyImplicitTimeDiscretization , c, closure, b, C) = zero (grid)
321+ @inline explicit_R₃₃_∂z_c (i, j, k, grid, :: VerticallyImplicitTimeDiscretization , clock, c, closure, b, C) = zero (grid)
318322
319323@inline κzᶜᶜᶠ (i, j, k, grid, closure:: FlavorOfTISSD , K, :: Val{id} , clock) where id = @inbounds K. ϵκR₃₃[i, j, k]
320324
0 commit comments