Skip to content

Commit f624ee1

Browse files
committed
ft: split amd strain calculation
1 parent 05af764 commit f624ee1

File tree

2 files changed

+26
-24
lines changed

2 files changed

+26
-24
lines changed

src/solver/model_getters.jl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,12 @@ function get_smagorinsky_lilly_model(parsed_args)
189189
end
190190

191191
function get_amd_les_model(parsed_args, ::Type{FT}) where {FT}
192-
is_model_active = parsed_args["amd_les"]
193-
@assert is_model_active in (true, false)
194-
return is_model_active ? AnisotropicMinimumDissipation{FT}(parsed_args["c_amd"]) :
195-
nothing
192+
amd = parsed_args["amd_les"]
193+
isnothing(amd) && return nothing
194+
amd_symbol = Symbol(amd)
195+
@assert amd_symbol in (:UVW, :UV, :W, :UV_W)
196+
c_amd = FT(parsed_args["amd_coefficient"])
197+
return AnisotropicMinimumDissipation{amd_symbol, FT}(; c_amd)
196198
end
197199

198200
function get_rayleigh_sponge_model(parsed_args, params, ::Type{FT}) where {FT}

src/solver/types.jl

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ Base.@kwdef struct ViscousSponge{FT} <: AbstractSponge
238238
κ₂::FT
239239
end
240240

241-
abstract type AbstractEddyViscosityModel end
241+
abstract type AbstractEddyViscosityModel{AXES} end
242242
"""
243243
SmagorinskyLilly{AXES}
244244
@@ -250,41 +250,41 @@ Smagorinsky-Lilly eddy viscosity model.
250250
- `:W` (vertical axis)
251251
- `:UV_W` (horizontal and vertical axes treated separately).
252252
"""
253-
struct SmagorinskyLilly{AXES} <: AbstractEddyViscosityModel end
253+
struct SmagorinskyLilly{AXES} <: AbstractEddyViscosityModel{AXES} end
254+
255+
struct AnisotropicMinimumDissipation{AXES, FT} <: AbstractEddyViscosityModel{AXES}
256+
c_amd::FT
257+
end
254258

255259
"""
256-
is_smagorinsky_UVW_coupled(model)
260+
is_les_UVW_coupled(model)
257261
258-
Check if the Smagorinsky model is coupled along all axes.
262+
Check if the LES model is coupled along all axes.
259263
"""
260-
is_smagorinsky_UVW_coupled(::SmagorinskyLilly{AXES}) where {AXES} = AXES == :UVW
261-
is_smagorinsky_UVW_coupled(::Nothing) = false
264+
is_les_UVW_coupled(::AbstractEddyViscosityModel{AXES}) where {AXES} = AXES == :UVW
265+
is_les_UVW_coupled(::Nothing) = false
262266

263267
"""
264-
is_smagorinsky_vertical(model)
268+
is_les_vertical(model)
265269
266-
Check if the Smagorinsky model is applied along the vertical axis.
270+
Check if the LES model is applied along the vertical axis.
267271
268-
See also [`is_smagorinsky_horizontal`](@ref).
272+
See also [`is_les_horizontal`](@ref).
269273
"""
270-
is_smagorinsky_vertical(::SmagorinskyLilly{AXES}) where {AXES} =
274+
is_les_vertical(::AbstractEddyViscosityModel{AXES}) where {AXES} =
271275
AXES == :UVW || AXES == :W || AXES == :UV_W
272-
is_smagorinsky_vertical(::Nothing) = false
276+
is_les_vertical(::Nothing) = false
273277

274278
"""
275-
is_smagorinsky_horizontal(model)
279+
is_les_horizontal(model)
276280
277-
Check if the Smagorinsky model is applied along the horizontal axes.
281+
Check if the LES model is applied along the horizontal axes.
278282
279-
See also [`is_smagorinsky_vertical`](@ref).
283+
See also [`is_les_vertical`](@ref).
280284
"""
281-
is_smagorinsky_horizontal(::SmagorinskyLilly{AXES}) where {AXES} =
285+
is_les_horizontal(::AbstractEddyViscosityModel{AXES}) where {AXES} =
282286
AXES == :UVW || AXES == :UV || AXES == :UV_W
283-
is_smagorinsky_horizontal(::Nothing) = false
284-
285-
struct AnisotropicMinimumDissipation{FT} <: AbstractEddyViscosityModel
286-
c_amd::FT
287-
end
287+
is_les_horizontal(::Nothing) = false
288288

289289

290290
Base.@kwdef struct RayleighSponge{FT} <: AbstractSponge

0 commit comments

Comments
 (0)