From 2e4237cf49c5e7737e7dac0739d0da850a901d30 Mon Sep 17 00:00:00 2001 From: Dennis Yatunin Date: Thu, 12 Sep 2024 14:31:27 -0700 Subject: [PATCH] Add LevelPlaceholderSpace --- src/Operators/common.jl | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Operators/common.jl b/src/Operators/common.jl index b86123e97b..6693a46095 100644 --- a/src/Operators/common.jl +++ b/src/Operators/common.jl @@ -69,13 +69,21 @@ end # Functions for CUDASpectralStyle struct PlaceholderSpace <: Spaces.AbstractSpace end +struct LevelPlaceholderSpace <: Spaces.AbstractSpace end struct CenterPlaceholderSpace <: Spaces.AbstractSpace end struct FacePlaceholderSpace <: Spaces.AbstractSpace end - +placeholder_space(current_space, parent_space) = current_space placeholder_space(current_space::T, parent_space::T) where {T} = PlaceholderSpace() -placeholder_space(current_space, parent_space) = current_space +placeholder_space( + current_space::Spaces.AbstractPointSpace, + parent_space::Spaces.AbstractFiniteDifferenceSpace, +) = LevelPlaceholderSpace() +placeholder_space( + current_space::Spaces.AbstractSpectralElementSpace, + parent_space::Spaces.ExtrudedFiniteDifferenceSpace, +) = LevelPlaceholderSpace() placeholder_space( current_space::Spaces.CenterFiniteDifferenceSpace, parent_space::Spaces.FaceFiniteDifferenceSpace, @@ -93,8 +101,12 @@ placeholder_space( parent_space::Spaces.CenterExtrudedFiniteDifferenceSpace, ) = FacePlaceholderSpace() +@inline reconstruct_placeholder_space(current_space, parent_space) = + current_space @inline reconstruct_placeholder_space(::PlaceholderSpace, parent_space) = parent_space +@inline reconstruct_placeholder_space(::LevelPlaceholderSpace, parent_space) = + Spaces.level(parent_space, left_idx(parent_space)) # extract any level @inline reconstruct_placeholder_space( ::CenterPlaceholderSpace, parent_space::Spaces.FaceFiniteDifferenceSpace, @@ -111,9 +123,6 @@ placeholder_space( ::FacePlaceholderSpace, parent_space::Spaces.CenterExtrudedFiniteDifferenceSpace, ) = Spaces.FaceExtrudedFiniteDifferenceSpace(parent_space) -@inline reconstruct_placeholder_space(current_space, parent_space) = - current_space - strip_space(obj, parent_space) = obj