Mercurial > repos > public > sbplib_julia
comparison src/SbpOperators/volumeops/derivatives/second_derivative_variable.jl @ 1374:4f3dd84891f6 feature/variable_derivatives
Simplify constructor for SecondDerivativeVariable
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 26 May 2023 22:50:39 +0200 |
parents | 3f7f826489a1 |
children | e9dfc1998d31 |
comparison
equal
deleted
inserted
replaced
1373:85bd47f3ba48 | 1374:4f3dd84891f6 |
---|---|
24 check_coefficient(g, coeff) | 24 check_coefficient(g, coeff) |
25 | 25 |
26 Δxᵢ = spacing(g.grids[dir]) | 26 Δxᵢ = spacing(g.grids[dir]) |
27 scaled_inner_stencil = scale(inner_stencil, 1/Δxᵢ^2) | 27 scaled_inner_stencil = scale(inner_stencil, 1/Δxᵢ^2) |
28 scaled_closure_stencils = scale.(Tuple(closure_stencils), 1/Δxᵢ^2) | 28 scaled_closure_stencils = scale.(Tuple(closure_stencils), 1/Δxᵢ^2) |
29 return SecondDerivativeVariable{dir, ndims(g)}(scaled_inner_stencil, scaled_closure_stencils, coeff) | 29 return SecondDerivativeVariable(coeff, scaled_inner_stencil, scaled_closure_stencils, dir) |
30 end | 30 end |
31 | 31 |
32 function check_coefficient(g, coeff) | 32 function check_coefficient(g, coeff) |
33 if ndims(g) != ndims(coeff) | 33 if ndims(g) != ndims(coeff) |
34 throw(ArgumentError("The coefficient has dimension $(ndims(coeff)) while the grid is dimension $(ndims(g))")) | 34 throw(ArgumentError("The coefficient has dimension $(ndims(coeff)) while the grid is dimension $(ndims(g))")) |
49 struct SecondDerivativeVariable{Dir,T,D,M,IStencil<:NestedStencil{T},CStencil<:NestedStencil{T},TArray<:AbstractArray} <: LazyTensor{T,D,D} | 49 struct SecondDerivativeVariable{Dir,T,D,M,IStencil<:NestedStencil{T},CStencil<:NestedStencil{T},TArray<:AbstractArray} <: LazyTensor{T,D,D} |
50 inner_stencil::IStencil | 50 inner_stencil::IStencil |
51 closure_stencils::NTuple{M,CStencil} | 51 closure_stencils::NTuple{M,CStencil} |
52 coefficient::TArray | 52 coefficient::TArray |
53 | 53 |
54 function SecondDerivativeVariable{Dir, D}(inner_stencil::NestedStencil{T}, closure_stencils::NTuple{M,NestedStencil{T}}, coefficient::AbstractArray) where {Dir,T,D,M} | 54 function SecondDerivativeVariable(coefficient::AbstractArray, inner_stencil::NestedStencil{T}, closure_stencils::NTuple{M,NestedStencil{T}}, dir) where {T,M} |
55 D = ndims(coefficient) | |
55 IStencil = typeof(inner_stencil) | 56 IStencil = typeof(inner_stencil) |
56 CStencil = eltype(closure_stencils) | 57 CStencil = eltype(closure_stencils) |
57 TArray = typeof(coefficient) | 58 TArray = typeof(coefficient) |
58 return new{Dir,T,D,M,IStencil,CStencil,TArray}(inner_stencil, closure_stencils, coefficient) | 59 return new{dir,T,D,M,IStencil,CStencil,TArray}(inner_stencil, closure_stencils, coefficient) |
59 end | 60 end |
60 end | 61 end |
61 | 62 |
62 derivative_direction(::SecondDerivativeVariable{Dir}) where {Dir} = Dir | 63 derivative_direction(::SecondDerivativeVariable{Dir}) where {Dir} = Dir |
63 | 64 |